PERFORCE change 144527 for review
Julian Elischer
julian at FreeBSD.org
Thu Jul 3 01:24:01 UTC 2008
http://perforce.freebsd.org/chv.cgi?CH=144527
Change 144527 by julian at julian_trafmon1 on 2008/07/03 01:23:07
IFC at 144523
Affected files ...
.. //depot/projects/vimage-commit2/src/sys/amd64/amd64/pmap.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/amd64/include/pmap.h#3 integrate
.. //depot/projects/vimage-commit2/src/sys/amd64/include/vmparam.h#3 integrate
.. //depot/projects/vimage-commit2/src/sys/boot/i386/boot2/boot2.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/compat/pecoff/imgact_pecoff.c#2 delete
.. //depot/projects/vimage-commit2/src/sys/compat/pecoff/imgact_pecoff.h#2 delete
.. //depot/projects/vimage-commit2/src/sys/dev/ce/ceddk.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/ce/if_ce.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/cp/cpddk.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/cp/if_cp.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/ctau/ctddk.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/ctau/if_ct.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/cx/cxddk.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/cx/if_cx.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/mii/rgephy.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/mii/rgephyreg.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/mpt/mpt_pci.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/mpt/mpt_user.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/re/if_re.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/sound/pci/atiixp.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/fs/smbfs/smbfs_node.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/geom/virstor/g_virstor.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/kern_alq.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/uipc_socket.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/modules/pecoff/Makefile#2 delete
.. //depot/projects/vimage-commit2/src/sys/net/if_bridge.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/udp_usrreq.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet6/ip6_input.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/nfsserver/nfs_syscalls.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/pci/if_rlreg.h#3 integrate
.. //depot/projects/vimage-commit2/src/sys/sys/socketvar.h#2 integrate
Differences ...
==== //depot/projects/vimage-commit2/src/sys/amd64/amd64/pmap.c#4 (text+ko) ====
@@ -77,7 +77,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.623 2008/06/21 19:19:09 alc Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.624 2008/07/02 05:41:23 alc Exp $");
/*
* Manages physical address maps.
@@ -173,7 +173,6 @@
vm_offset_t virtual_avail; /* VA of first avail page (after kernel bss) */
vm_offset_t virtual_end; /* VA of last avail page (end of kernel AS) */
-static int nkpt;
static int ndmpdp;
static vm_paddr_t dmaplimit;
vm_offset_t kernel_vm_end;
@@ -543,7 +542,6 @@
kernel_pmap->pm_root = NULL;
kernel_pmap->pm_active = -1; /* don't allow deactivation */
TAILQ_INIT(&kernel_pmap->pm_pvchunk);
- nkpt = NKPT;
/*
* Reserve some special page table entries/VA space for temporary
@@ -650,7 +648,7 @@
* page table pages.
*/
pd = pmap_pde(kernel_pmap, VM_MIN_KERNEL_ADDRESS);
- for (i = 0; i < nkpt; i++) {
+ for (i = 0; i < NKPT; i++) {
if ((pd[i] & (PG_PS | PG_V)) == (PG_PS | PG_V))
continue;
mpte = PHYS_TO_VM_PAGE(pd[i] & PG_FRAME);
@@ -1708,10 +1706,8 @@
mtx_assert(&kernel_map->system_mtx, MA_OWNED);
if (kernel_vm_end == 0) {
kernel_vm_end = VM_MIN_KERNEL_ADDRESS;
- nkpt = 0;
while ((*pmap_pde(kernel_pmap, kernel_vm_end) & PG_V) != 0) {
kernel_vm_end = (kernel_vm_end + PAGE_SIZE * NPTEPG) & ~(PAGE_SIZE * NPTEPG - 1);
- nkpt++;
if (kernel_vm_end - 1 >= kernel_map->max_offset) {
kernel_vm_end = kernel_map->max_offset;
break;
@@ -1725,7 +1721,7 @@
pde = pmap_pde(kernel_pmap, kernel_vm_end);
if (pde == NULL) {
/* We need a new PDP entry */
- nkpg = vm_page_alloc(NULL, nkpt,
+ nkpg = vm_page_alloc(NULL, kernel_vm_end >> PDPSHIFT,
VM_ALLOC_NOOBJ | VM_ALLOC_SYSTEM | VM_ALLOC_WIRED);
if (nkpg == NULL)
panic("pmap_growkernel: no memory to grow kernel");
@@ -1749,9 +1745,6 @@
VM_ALLOC_NOOBJ | VM_ALLOC_SYSTEM | VM_ALLOC_WIRED);
if (nkpg == NULL)
panic("pmap_growkernel: no memory to grow kernel");
-
- nkpt++;
-
pmap_zero_page(nkpg);
paddr = VM_PAGE_TO_PHYS(nkpg);
newpdir = (pd_entry_t) (paddr | PG_V | PG_RW | PG_A | PG_M);
==== //depot/projects/vimage-commit2/src/sys/amd64/include/pmap.h#3 (text+ko) ====
@@ -39,7 +39,7 @@
*
* from: hp300: @(#)pmap.h 7.2 (Berkeley) 12/16/90
* from: @(#)pmap.h 7.4 (Berkeley) 5/12/91
- * $FreeBSD: src/sys/amd64/include/pmap.h,v 1.142 2008/06/29 19:13:27 alc Exp $
+ * $FreeBSD: src/sys/amd64/include/pmap.h,v 1.143 2008/06/30 02:35:55 alc Exp $
*/
#ifndef _MACHINE_PMAP_H_
@@ -115,7 +115,7 @@
#endif
#define NKPML4E 1 /* number of kernel PML4 slots */
-#define NKPDPE 5 /* number of kernel PDP slots */
+#define NKPDPE howmany(NKPT, NPDEPG)/* number of kernel PDP slots */
#define NUPML4E (NPML4EPG/2) /* number of userland PML4 pages */
#define NUPDPE (NUPML4E*NPDPEPG)/* number of userland PDP pages */
==== //depot/projects/vimage-commit2/src/sys/amd64/include/vmparam.h#3 (text+ko) ====
@@ -38,7 +38,7 @@
* SUCH DAMAGE.
*
* from: @(#)vmparam.h 5.9 (Berkeley) 5/12/91
- * $FreeBSD: src/sys/amd64/include/vmparam.h,v 1.52 2008/06/29 19:13:27 alc Exp $
+ * $FreeBSD: src/sys/amd64/include/vmparam.h,v 1.53 2008/06/30 03:14:39 alc Exp $
*/
@@ -148,8 +148,18 @@
/*
* Virtual addresses of things. Derived from the page directory and
* page table indexes from pmap.h for precision.
- * Because of the page that is both a PD and PT, it looks a little
- * messy at times, but hey, we'll do anything to save a page :-)
+ *
+ * 0x0000000000000000 - 0x00007fffffffffff user map
+ * 0x0000800000000000 - 0xffff7fffffffffff does not exist (hole)
+ * 0xffff800000000000 - 0xffff804020100fff recursive page table (512GB slot)
+ * 0xffff804020101000 - 0xfffffeffffffffff unused
+ * 0xffffff0000000000 - 0xffffff7fffffffff 512GB direct map mappings
+ * 0xffffff8000000000 - 0xfffffffe7fffffff unused (506GB)
+ * 0xfffffffe80000000 - 0xffffffffffffffff 6GB kernel map
+ *
+ * Within the kernel map:
+ *
+ * 0xffffffff80000000 KERNBASE
*/
#define VM_MAX_KERNEL_ADDRESS KVADDR(KPML4I, NPDPEPG-1, NPDEPG-1, NPTEPG-1)
==== //depot/projects/vimage-commit2/src/sys/boot/i386/boot2/boot2.c#2 (text+ko) ====
@@ -14,7 +14,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/boot/i386/boot2/boot2.c,v 1.86 2008/02/28 17:08:05 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/boot/i386/boot2/boot2.c,v 1.87 2008/07/01 11:18:51 nyan Exp $");
#include <sys/param.h>
#include <sys/disklabel.h>
@@ -472,7 +472,7 @@
dsk.slice = WHOLE_DISK_SLICE;
if (arg[1] == ',') {
dsk.slice = *arg - '0' + 1;
- if (dsk.slice > NDOSPART)
+ if (dsk.slice > NDOSPART + 1)
return -1;
arg += 2;
}
==== //depot/projects/vimage-commit2/src/sys/dev/ce/ceddk.h#2 (text+ko) ====
@@ -13,7 +13,7 @@
* works or modified versions.
*
* $Cronyx: ceddk.h,v 1.2.6.1 2005/11/09 13:01:39 rik Exp $
- * $FreeBSD: src/sys/dev/ce/ceddk.h,v 1.1 2006/01/27 09:02:09 rik Exp $
+ * $FreeBSD: src/sys/dev/ce/ceddk.h,v 1.2 2008/06/30 21:18:27 rik Exp $
*/
#define TAU32_UserContext_Add void *sys;
@@ -72,6 +72,7 @@
TAU32_UserRequest *rx_queue;
TAU32_UserRequest *tx_queue;
unsigned char debug;
+ unsigned char debug_shadow;
void (*transmit) (struct _ce_chan_t*, void*, int);
void (*receive) (struct _ce_chan_t*, unsigned char*, int);
void (*error) (struct _ce_chan_t*, int);
==== //depot/projects/vimage-commit2/src/sys/dev/ce/if_ce.c#2 (text+ko) ====
@@ -16,7 +16,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ce/if_ce.c,v 1.9 2007/07/27 11:59:56 rwatson Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ce/if_ce.c,v 1.11 2008/07/01 14:41:03 dds Exp $");
#include <sys/param.h>
@@ -962,8 +962,8 @@
if (! (ifp->if_flags & IFF_DEBUG))
d->chan->debug = 0;
- else if (! d->chan->debug)
- d->chan->debug = 1;
+ else
+ d->chan->debug = d->chan->debug_shadow;
switch (cmd) {
default: CE_DEBUG2 (d, ("ioctl 0x%lx\n", cmd)); return 0;
@@ -1333,7 +1333,7 @@
/* Only for superuser! */
#if __FreeBSD_version < 500000
error = suser (p);
-#elsif __FreeBSD_version < 700000
+#elif __FreeBSD_version < 700000
error = suser (td);
#else
error = priv_check (td, PRIV_DRIVER);
@@ -1374,7 +1374,7 @@
/* Only for superuser! */
#if __FreeBSD_version < 500000
error = suser (p);
-#elsif __FreeBSD_version < 700000
+#elif __FreeBSD_version < 700000
error = suser (td);
#else
error = priv_check (td, PRIV_DRIVER);
@@ -1404,7 +1404,7 @@
/* Only for superuser! */
#if __FreeBSD_version < 500000
error = suser (p);
-#elsif __FreeBSD_version < 700000
+#elif __FreeBSD_version < 700000
error = suser (td);
#else
error = priv_check (td, PRIV_DRIVER);
@@ -1424,7 +1424,7 @@
CE_DEBUG2 (d, ("ioctl: setcfg\n"));
#if __FreeBSD_version < 500000
error = suser (p);
-#elsif __FreeBSD_version < 700000
+#elif __FreeBSD_version < 700000
error = suser (td);
#else
error = priv_check (td, PRIV_DRIVER);
@@ -1526,7 +1526,7 @@
/* Only for superuser! */
#if __FreeBSD_version < 500000
error = suser (p);
-#elsif __FreeBSD_version < 700000
+#elif __FreeBSD_version < 700000
error = suser (td);
#else
error = priv_check (td, PRIV_DRIVER);
@@ -1562,7 +1562,7 @@
/* Only for superuser! */
#if __FreeBSD_version < 500000
error = suser (p);
-#elsif __FreeBSD_version < 700000
+#elif __FreeBSD_version < 700000
error = suser (td);
#else
error = priv_check (td, PRIV_DRIVER);
@@ -1590,7 +1590,7 @@
/* Only for superuser! */
#if __FreeBSD_version < 500000
error = suser (p);
-#elsif __FreeBSD_version < 700000
+#elif __FreeBSD_version < 700000
error = suser (td);
#else
error = priv_check (td, PRIV_DRIVER);
@@ -1614,19 +1614,24 @@
/* Only for superuser! */
#if __FreeBSD_version < 500000
error = suser (p);
-#elsif __FreeBSD_version < 700000
+#elif __FreeBSD_version < 700000
error = suser (td);
#else
error = priv_check (td, PRIV_DRIVER);
#endif
if (error)
return error;
+#ifndef NETGRAPH
+ /*
+ * The debug_shadow is always greater than zero for logic
+ * simplicity. For switching debug off the IFF_DEBUG is
+ * responsible.
+ */
+ d->chan->debug_shadow = (*(int*)data) ? (*(int*)data) : 1;
+ if (d->ifp->if_flags & IFF_DEBUG)
+ d->chan->debug = d->chan->debug_shadow;
+#else
d->chan->debug = *(int*)data;
-#ifndef NETGRAPH
- if (d->chan->debug)
- d->ifp->if_flags |= IFF_DEBUG;
- else
- d->ifp->if_flags &= ~IFF_DEBUG;
#endif
return 0;
@@ -1642,7 +1647,7 @@
/* Only for superuser! */
#if __FreeBSD_version < 500000
error = suser (p);
-#elsif __FreeBSD_version < 700000
+#elif __FreeBSD_version < 700000
error = suser (td);
#else
error = priv_check (td, PRIV_DRIVER);
@@ -1668,7 +1673,7 @@
/* Only for superuser! */
#if __FreeBSD_version < 500000
error = suser (p);
-#elsif __FreeBSD_version < 700000
+#elif __FreeBSD_version < 700000
error = suser (td);
#else
error = priv_check (td, PRIV_DRIVER);
@@ -1698,7 +1703,7 @@
/* Only for superuser! */
#if __FreeBSD_version < 500000
error = suser (p);
-#elsif __FreeBSD_version < 700000
+#elif __FreeBSD_version < 700000
error = suser (td);
#else
error = priv_check (td, PRIV_DRIVER);
@@ -1722,7 +1727,7 @@
/* Only for superuser! */
#if __FreeBSD_version < 500000
error = suser (p);
-#elsif __FreeBSD_version < 700000
+#elif __FreeBSD_version < 700000
error = suser (td);
#else
error = priv_check (td, PRIV_DRIVER);
@@ -1750,7 +1755,7 @@
/* Only for superuser! */
#if __FreeBSD_version < 500000
error = suser (p);
-#elsif __FreeBSD_version < 700000
+#elif __FreeBSD_version < 700000
error = suser (td);
#else
error = priv_check (td, PRIV_DRIVER);
@@ -1776,7 +1781,7 @@
/* Only for superuser! */
#if __FreeBSD_version < 500000
error = suser (p);
-#elsif __FreeBSD_version < 700000
+#elif __FreeBSD_version < 700000
error = suser (td);
#else
error = priv_check (td, PRIV_DRIVER);
@@ -1804,7 +1809,7 @@
/* Only for superuser! */
#if __FreeBSD_version < 500000
error = suser (p);
-#elsif __FreeBSD_version < 700000
+#elif __FreeBSD_version < 700000
error = suser (td);
#else
error = priv_check (td, PRIV_DRIVER);
@@ -1832,7 +1837,7 @@
/* Only for superuser! */
#if __FreeBSD_version < 500000
error = suser (p);
-#elsif __FreeBSD_version < 700000
+#elif __FreeBSD_version < 700000
error = suser (td);
#else
error = priv_check (td, PRIV_DRIVER);
@@ -1860,7 +1865,7 @@
/* Only for superuser! */
#if __FreeBSD_version < 500000
error = suser (p);
-#elsif __FreeBSD_version < 700000
+#elif __FreeBSD_version < 700000
error = suser (td);
#else
error = priv_check (td, PRIV_DRIVER);
@@ -1893,7 +1898,7 @@
/* Only for superuser! */
#if __FreeBSD_version < 500000
error = suser (p);
-#elsif __FreeBSD_version < 700000
+#elif __FreeBSD_version < 700000
error = suser (td);
#else
error = priv_check (td, PRIV_DRIVER);
@@ -1920,7 +1925,7 @@
/* Only for superuser! */
#if __FreeBSD_version < 500000
error = suser (p);
-#elsif __FreeBSD_version < 700000
+#elif __FreeBSD_version < 700000
error = suser (td);
#else
error = priv_check (td, PRIV_DRIVER);
@@ -1939,7 +1944,7 @@
/* Only for superuser! */
#if __FreeBSD_version < 500000
error = suser (p);
-#elsif __FreeBSD_version < 700000
+#elif __FreeBSD_version < 700000
error = suser (td);
#else
error = priv_check (td, PRIV_DRIVER);
@@ -1977,7 +1982,7 @@
/* Only for superuser! */
#if __FreeBSD_version < 500000
error = suser (p);
-#elsif __FreeBSD_version < 700000
+#elif __FreeBSD_version < 700000
error = suser (td);
#else
error = priv_check (td, PRIV_DRIVER);
==== //depot/projects/vimage-commit2/src/sys/dev/cp/cpddk.h#2 (text+ko) ====
@@ -16,7 +16,7 @@
* works or modified versions.
*
* $Cronyx: cpddk.h,v 1.8.4.20 2004/12/06 16:21:06 rik Exp $
- * $FreeBSD: src/sys/dev/cp/cpddk.h,v 1.4 2005/01/06 01:42:32 imp Exp $
+ * $FreeBSD: src/sys/dev/cp/cpddk.h,v 1.5 2008/06/30 21:18:27 rik Exp $
*/
#define NBRD 6 /* the maximum number of installed boards */
#define NCHAN 4 /* the number of channels on the board */
@@ -205,6 +205,7 @@
void *tag [NTBUF]; /* system dependent data per buffer */
void *sys; /* system dependent data per channel */
unsigned char debug; /* debug level, 0..2 */
+ unsigned char debug_shadow; /* debug shadow */
void (*transmit) (struct _cp_chan_t *c, void *tag, int len);
void (*receive) (struct _cp_chan_t *c, unsigned char *data, int len);
==== //depot/projects/vimage-commit2/src/sys/dev/cp/if_cp.c#2 (text+ko) ====
@@ -22,7 +22,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/cp/if_cp.c,v 1.34 2007/07/27 11:59:56 rwatson Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/cp/if_cp.c,v 1.35 2008/06/30 21:18:27 rik Exp $");
#include <sys/param.h>
#include <sys/ucred.h>
@@ -733,8 +733,8 @@
if (! (ifp->if_flags & IFF_DEBUG))
d->chan->debug = 0;
- else if (! d->chan->debug)
- d->chan->debug = 1;
+ else
+ d->chan->debug = d->chan->debug_shadow;
switch (cmd) {
default: CP_DEBUG2 (d, ("ioctl 0x%lx\n", cmd)); return 0;
@@ -1349,12 +1349,17 @@
error = priv_check (td, PRIV_DRIVER);
if (error)
return error;
+#ifndef NETGRAPH
+ /*
+ * The debug_shadow is always greater than zero for logic
+ * simplicity. For switching debug off the IFF_DEBUG is
+ * responsible.
+ */
+ d->chan->debug_shadow = (*(int*)data) ? (*(int*)data) : 1;
+ if (d->ifp->if_flags & IFF_DEBUG)
+ d->chan->debug = d->chan->debug_shadow;
+#else
d->chan->debug = *(int*)data;
-#ifndef NETGRAPH
- if (d->chan->debug)
- d->ifp->if_flags |= IFF_DEBUG;
- else
- d->ifp->if_flags &= ~IFF_DEBUG;
#endif
return 0;
==== //depot/projects/vimage-commit2/src/sys/dev/ctau/ctddk.h#2 (text+ko) ====
@@ -12,7 +12,7 @@
* all derivative works or modified versions.
*
* Cronyx Id: ctddk.h,v 1.1.2.3 2003/12/11 17:33:44 rik Exp $
- * $FreeBSD: src/sys/dev/ctau/ctddk.h,v 1.2 2005/01/06 01:42:33 imp Exp $
+ * $FreeBSD: src/sys/dev/ctau/ctddk.h,v 1.3 2008/06/30 21:18:27 rik Exp $
*/
#define NBRD 3 /* the maximum number of installed boards */
#define NPORT 32 /* the number of i/o ports per board */
@@ -412,6 +412,7 @@
void *attach [NBUF]; /* system dependent data per buffer */
void *sys; /* system dependent data per channel */
int debug;
+ int debug_shadow;
int e1_first_int;
unsigned char *sccrx, *scctx; /* pointers to SCC rx and tx buffers */
==== //depot/projects/vimage-commit2/src/sys/dev/ctau/if_ct.c#2 (text+ko) ====
@@ -22,7 +22,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ctau/if_ct.c,v 1.35 2007/10/12 06:03:43 kevlo Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ctau/if_ct.c,v 1.36 2008/06/30 21:18:27 rik Exp $");
#include <sys/param.h>
#include <sys/proc.h>
@@ -949,8 +949,8 @@
if (! (ifp->if_flags & IFF_DEBUG))
d->chan->debug = 0;
- else if (! d->chan->debug)
- d->chan->debug = 1;
+ else
+ d->chan->debug = d->chan->debug_shadow;
switch (cmd) {
default: CT_DEBUG2 (d, ("ioctl 0x%lx\n", cmd)); return 0;
@@ -1529,12 +1529,17 @@
error = priv_check (td, PRIV_DRIVER);
if (error)
return error;
+#ifndef NETGRAPH
+ /*
+ * The debug_shadow is always greater than zero for logic
+ * simplicity. For switching debug off the IFF_DEBUG is
+ * responsible.
+ */
+ c->debug_shadow = (*(int*)data) ? (*(int*)data) : 1;
+ if (d->ifp->if_flags & IFF_DEBUG)
+ c->debug = c->debug_shadow;
+#else
c->debug = *(int*)data;
-#ifndef NETGRAPH
- if (d->chan->debug)
- d->ifp->if_flags |= IFF_DEBUG;
- else
- d->ifp->if_flags &= (~IFF_DEBUG);
#endif
return 0;
==== //depot/projects/vimage-commit2/src/sys/dev/cx/cxddk.h#2 (text+ko) ====
@@ -15,7 +15,7 @@
* all derivative works or modified versions.
*
* Cronyx Id: cxddk.h,v 1.1.2.1 2003/11/12 17:13:41 rik Exp $
- * $FreeBSD: src/sys/dev/cx/cxddk.h,v 1.2 2005/01/06 01:42:34 imp Exp $
+ * $FreeBSD: src/sys/dev/cx/cxddk.h,v 1.3 2008/06/30 21:18:27 rik Exp $
*/
#ifndef port_t
@@ -337,6 +337,7 @@
void *sys;
int debug;
+ int debug_shadow;
void *attach [2];
char *received_data;
int received_len;
==== //depot/projects/vimage-commit2/src/sys/dev/cx/if_cx.c#2 (text+ko) ====
@@ -23,7 +23,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/cx/if_cx.c,v 1.58 2007/10/12 06:03:43 kevlo Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/cx/if_cx.c,v 1.59 2008/06/30 21:18:27 rik Exp $");
#include <sys/param.h>
@@ -1102,10 +1102,14 @@
if (error)
return error;
+ s = splhigh ();
+ CX_LOCK (bd);
if (! (ifp->if_flags & IFF_DEBUG))
d->chan->debug = 0;
- else if (! d->chan->debug)
- d->chan->debug = 1;
+ else
+ d->chan->debug = d->chan->debug_shadow;
+ CX_UNLOCK (bd);
+ splx (s);
switch (cmd) {
default: CX_DEBUG2 (d, ("ioctl 0x%lx\n", cmd)); return 0;
@@ -1745,6 +1749,8 @@
cx_enable_receive (c, 0);
cx_enable_transmit (c, 0);
} else if (c->mode == M_ASYNC && *(int*)data == SERIAL_HDLC) {
+ if (d->ifp->if_flags & IFF_DEBUG)
+ c->debug = c->debug_shadow;
cx_set_mode (c, M_HDLC);
cx_enable_receive (c, 1);
cx_enable_transmit (c, 1);
@@ -1913,15 +1919,24 @@
return error;
s = splhigh ();
CX_LOCK (bd);
+#ifndef NETGRAPH
+ if (c->mode == M_ASYNC) {
+ c->debug = *(int*)data;
+ } else {
+ /*
+ * The debug_shadow is always greater than zero for
+ * logic simplicity. For switching debug off the
+ * IFF_DEBUG is responsible (for !M_ASYNC mode).
+ */
+ c->debug_shadow = (*(int*)data) ? (*(int*)data) : 1;
+ if (d->ifp->if_flags & IFF_DEBUG)
+ c->debug = c->debug_shadow;
+ }
+#else
c->debug = *(int*)data;
+#endif
CX_UNLOCK (bd);
splx (s);
-#ifndef NETGRAPH
- if (d->chan->debug)
- d->ifp->if_flags |= IFF_DEBUG;
- else
- d->ifp->if_flags &= (~IFF_DEBUG);
-#endif
return 0;
}
==== //depot/projects/vimage-commit2/src/sys/dev/mii/rgephy.c#2 (text+ko) ====
@@ -31,10 +31,10 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/mii/rgephy.c,v 1.19 2008/03/05 01:15:10 yongari Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/mii/rgephy.c,v 1.20 2008/07/02 08:10:18 yongari Exp $");
/*
- * Driver for the RealTek 8169S/8110S/8211B internal 10/100/1000 PHY.
+ * Driver for the RealTek 8169S/8110S/8211B/8211C internal 10/100/1000 PHY.
*/
#include <sys/param.h>
@@ -531,6 +531,18 @@
static void
rgephy_reset(struct mii_softc *sc)
{
+ struct rgephy_softc *rsc;
+ uint16_t ssr;
+
+ rsc = (struct rgephy_softc *)sc;
+ if (rsc->mii_revision == 3) {
+ /* RTL8211C(L) */
+ ssr = PHY_READ(sc, RGEPHY_MII_SSR);
+ if ((ssr & RGEPHY_SSR_ALDPS) != 0) {
+ ssr &= ~RGEPHY_SSR_ALDPS;
+ PHY_WRITE(sc, RGEPHY_MII_SSR, ssr);
+ }
+ }
mii_phy_reset(sc);
DELAY(1000);
==== //depot/projects/vimage-commit2/src/sys/dev/mii/rgephyreg.h#2 (text+ko) ====
@@ -29,7 +29,7 @@
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
*
- * $FreeBSD: src/sys/dev/mii/rgephyreg.h,v 1.3 2007/10/29 02:17:07 yongari Exp $
+ * $FreeBSD: src/sys/dev/mii/rgephyreg.h,v 1.4 2008/07/02 08:10:18 yongari Exp $
*/
#ifndef _DEV_MII_RGEPHYREG_H_
@@ -137,7 +137,7 @@
#define RGEPHY_EXTSTS_T_FD_CAP 0x2000 /* 1000base-T FD capable */
#define RGEPHY_EXTSTS_T_HD_CAP 0x1000 /* 1000base-T HD capable */
-/* RTL8211B(L) */
+/* RTL8211B(L)/RTL8211C(L) */
#define RGEPHY_MII_SSR 0x11 /* PHY Specific status register */
#define RGEPHY_SSR_S1000 0x8000 /* 1000Mbps */
#define RGEPHY_SSR_S100 0x4000 /* 100Mbps */
@@ -148,6 +148,7 @@
#define RGEPHY_SSR_SPD_DPLX_RESOLVED 0x0800 /* speed/duplex resolved */
#define RGEPHY_SSR_LINK 0x0400 /* link up */
#define RGEPHY_SSR_MDI_XOVER 0x0040 /* MDI crossover */
+#define RGEPHY_SSR_ALDPS 0x0008 /* RTL8211C(L) only */
#define RGEPHY_SSR_JABBER 0x0001 /* Jabber */
#endif /* _DEV_RGEPHY_MIIREG_H_ */
==== //depot/projects/vimage-commit2/src/sys/dev/mpt/mpt_pci.c#2 (text+ko) ====
@@ -99,7 +99,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/mpt/mpt_pci.c,v 1.52 2008/05/10 01:27:23 delphij Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/mpt/mpt_pci.c,v 1.53 2008/07/01 19:44:38 jhb Exp $");
#include <dev/mpt/mpt.h>
#include <dev/mpt/mpt_cam.h>
@@ -688,7 +688,7 @@
mpt_free_bus_resources(mpt);
mpt_raid_free_mem(mpt);
if (mpt->eh != NULL) {
- EVENTHANDLER_DEREGISTER(shutdown_final, mpt->eh);
+ EVENTHANDLER_DEREGISTER(shutdown_post_sync, mpt->eh);
}
}
return(0);
==== //depot/projects/vimage-commit2/src/sys/dev/mpt/mpt_user.c#2 (text+ko) ====
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/mpt/mpt_user.c,v 1.1 2008/05/06 20:49:52 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/mpt/mpt_user.c,v 1.2 2008/07/01 19:48:15 jhb Exp $");
#include <sys/param.h>
#include <sys/conf.h>
@@ -47,6 +47,13 @@
uint16_t action_status;
};
+struct mpt_page_memory {
+ bus_dma_tag_t tag;
+ bus_dmamap_t map;
+ bus_addr_t paddr;
+ void *vaddr;
+};
+
static mpt_probe_handler_t mpt_user_probe;
static mpt_attach_handler_t mpt_user_attach;
static mpt_enable_handler_t mpt_user_enable;
@@ -180,6 +187,56 @@
}
static int
+mpt_alloc_buffer(struct mpt_softc *mpt, struct mpt_page_memory *page_mem,
+ size_t len)
+{
+ struct mpt_map_info mi;
+ int error;
+
+ page_mem->vaddr = NULL;
+
+ /* Limit requests to 16M. */
+ if (len > 16 * 1024 * 1024)
+ return (ENOSPC);
+ error = mpt_dma_tag_create(mpt, mpt->parent_dmat, 1, 0,
+ BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL,
+ len, 1, len, 0, &page_mem->tag);
+ if (error)
+ return (error);
+ error = bus_dmamem_alloc(page_mem->tag, &page_mem->vaddr,
+ BUS_DMA_NOWAIT, &page_mem->map);
+ if (error) {
+ bus_dma_tag_destroy(page_mem->tag);
+ return (error);
+ }
+ mi.mpt = mpt;
+ error = bus_dmamap_load(page_mem->tag, page_mem->map, page_mem->vaddr,
+ len, mpt_map_rquest, &mi, BUS_DMA_NOWAIT);
+ if (error == 0)
+ error = mi.error;
+ if (error) {
+ bus_dmamem_free(page_mem->tag, page_mem->vaddr, page_mem->map);
+ bus_dma_tag_destroy(page_mem->tag);
+ page_mem->vaddr = NULL;
+ return (error);
+ }
+ page_mem->paddr = mi.phys;
+ return (0);
+}
+
+static void
+mpt_free_buffer(struct mpt_page_memory *page_mem)
+{
+
+ if (page_mem->vaddr == NULL)
+ return;
+ bus_dmamap_unload(page_mem->tag, page_mem->map);
+ bus_dmamem_free(page_mem->tag, page_mem->vaddr, page_mem->map);
+ bus_dma_tag_destroy(page_mem->tag);
+ page_mem->vaddr = NULL;
+}
+
+static int
mpt_user_read_cfg_header(struct mpt_softc *mpt,
struct mpt_cfg_page_req *page_req)
{
@@ -225,7 +282,7 @@
static int
mpt_user_read_cfg_page(struct mpt_softc *mpt, struct mpt_cfg_page_req *page_req,
- void *mpt_page)
+ struct mpt_page_memory *mpt_page)
{
CONFIG_PAGE_HEADER *hdr;
request_t *req;
@@ -238,15 +295,14 @@
return (ENOMEM);
}
- hdr = mpt_page;
+ hdr = mpt_page->vaddr;
params.Action = MPI_CONFIG_ACTION_PAGE_READ_CURRENT;
params.PageVersion = hdr->PageVersion;
params.PageLength = hdr->PageLength;
params.PageNumber = hdr->PageNumber;
params.PageType = hdr->PageType & MPI_CONFIG_PAGETYPE_MASK;
params.PageAddress = page_req->page_address;
- error = mpt_issue_cfg_req(mpt, req, ¶ms,
- req->req_pbuf + MPT_RQSL(mpt),
+ error = mpt_issue_cfg_req(mpt, req, ¶ms, mpt_page->paddr,
page_req->len, TRUE, 5000);
if (error != 0) {
mpt_prt(mpt, "mpt_user_read_cfg_page timed out\n");
@@ -254,12 +310,9 @@
}
page_req->ioc_status = req->IOCStatus;
- if ((req->IOCStatus & MPI_IOCSTATUS_MASK) == MPI_IOCSTATUS_SUCCESS) {
- bus_dmamap_sync(mpt->request_dmat, mpt->request_dmap,
+ if ((req->IOCStatus & MPI_IOCSTATUS_MASK) == MPI_IOCSTATUS_SUCCESS)
+ bus_dmamap_sync(mpt_page->tag, mpt_page->map,
BUS_DMASYNC_POSTREAD);
- memcpy(mpt_page, ((uint8_t *)req->req_vbuf)+MPT_RQSL(mpt),
- page_req->len);
- }
mpt_free_request(mpt, req);
return (0);
}
@@ -315,7 +368,7 @@
static int
mpt_user_read_extcfg_page(struct mpt_softc *mpt,
- struct mpt_ext_cfg_page_req *ext_page_req, void *mpt_page)
+ struct mpt_ext_cfg_page_req *ext_page_req, struct mpt_page_memory *mpt_page)
{
CONFIG_EXTENDED_PAGE_HEADER *hdr;
request_t *req;
@@ -328,7 +381,7 @@
return (ENOMEM);
}
- hdr = mpt_page;
+ hdr = mpt_page->vaddr;
params.Action = MPI_CONFIG_ACTION_PAGE_READ_CURRENT;
params.PageVersion = hdr->PageVersion;
params.PageLength = 0;
@@ -337,8 +390,7 @@
params.PageAddress = ext_page_req->page_address;
params.ExtPageType = hdr->ExtPageType;
params.ExtPageLength = hdr->ExtPageLength;
- error = mpt_issue_cfg_req(mpt, req, ¶ms,
- req->req_pbuf + MPT_RQSL(mpt),
+ error = mpt_issue_cfg_req(mpt, req, ¶ms, mpt_page->paddr,
ext_page_req->len, TRUE, 5000);
if (error != 0) {
mpt_prt(mpt, "mpt_user_read_extcfg_page timed out\n");
@@ -346,19 +398,16 @@
}
ext_page_req->ioc_status = req->IOCStatus;
- if ((req->IOCStatus & MPI_IOCSTATUS_MASK) == MPI_IOCSTATUS_SUCCESS) {
- bus_dmamap_sync(mpt->request_dmat, mpt->request_dmap,
+ if ((req->IOCStatus & MPI_IOCSTATUS_MASK) == MPI_IOCSTATUS_SUCCESS)
+ bus_dmamap_sync(mpt_page->tag, mpt_page->map,
BUS_DMASYNC_POSTREAD);
- memcpy(mpt_page, ((uint8_t *)req->req_vbuf)+MPT_RQSL(mpt),
- ext_page_req->len);
- }
mpt_free_request(mpt, req);
return (0);
}
static int
mpt_user_write_cfg_page(struct mpt_softc *mpt,
- struct mpt_cfg_page_req *page_req, void *mpt_page)
+ struct mpt_cfg_page_req *page_req, struct mpt_page_memory *mpt_page)
{
CONFIG_PAGE_HEADER *hdr;
request_t *req;
@@ -366,7 +415,7 @@
u_int hdr_attr;
int error;
- hdr = mpt_page;
+ hdr = mpt_page->vaddr;
hdr_attr = hdr->PageType & MPI_CONFIG_PAGEATTR_MASK;
if (hdr_attr != MPI_CONFIG_PAGEATTR_CHANGEABLE &&
hdr_attr != MPI_CONFIG_PAGEATTR_PERSISTENT) {
@@ -386,8 +435,7 @@
if (req == NULL)
return (ENOMEM);
- memcpy(((caddr_t)req->req_vbuf) + MPT_RQSL(mpt), mpt_page,
- page_req->len);
+ bus_dmamap_sync(mpt_page->tag, mpt_page->map, BUS_DMASYNC_PREWRITE);
/*
* There isn't any point in restoring stripped out attributes
@@ -406,8 +454,7 @@
#else
params.PageType = hdr->PageType;
#endif
- error = mpt_issue_cfg_req(mpt, req, ¶ms,
- req->req_pbuf + MPT_RQSL(mpt),
+ error = mpt_issue_cfg_req(mpt, req, ¶ms, mpt_page->paddr,
page_req->len, TRUE, 5000);
if (error != 0) {
mpt_prt(mpt, "mpt_write_cfg_page timed out\n");
@@ -466,7 +513,7 @@
*/
static int
mpt_user_raid_action(struct mpt_softc *mpt, struct mpt_raid_action *raid_act,
- void *buf)
+ struct mpt_page_memory *mpt_page)
{
request_t *req;
struct mpt_user_raid_action_result *res;
@@ -486,12 +533,10 @@
rap->VolumeBus = raid_act->volume_bus;
rap->PhysDiskNum = raid_act->phys_disk_num;
se = (SGE_SIMPLE32 *)&rap->ActionDataSGE;
- if (buf != 0 && raid_act->len != 0) {
- memcpy(((caddr_t)req->req_vbuf) + MPT_RQSL(mpt) +
- sizeof(struct mpt_user_raid_action_result), buf,
- raid_act->len);
- se->Address = req->req_pbuf + MPT_RQSL(mpt) +
- sizeof(struct mpt_user_raid_action_result);
+ if (mpt_page->vaddr != NULL && raid_act->len != 0) {
+ bus_dmamap_sync(mpt_page->tag, mpt_page->map,
+ BUS_DMASYNC_PREWRITE);
+ se->Address = mpt_page->paddr;
MPI_pSGE_SET_LENGTH(se, raid_act->len);
MPI_pSGE_SET_FLAGS(se, (MPI_SGE_FLAGS_SIMPLE_ELEMENT |
MPI_SGE_FLAGS_LAST_ELEMENT | MPI_SGE_FLAGS_END_OF_BUFFER |
@@ -526,9 +571,9 @@
raid_act->action_status = res->action_status;
bcopy(res->action_data, raid_act->action_data,
sizeof(res->action_data));
- if (buf != NULL)
- memcpy(buf, ((uint8_t *)req->req_vbuf) + MPT_RQSL(mpt) +
- sizeof(struct mpt_user_raid_action_result), raid_act->len);
+ if (mpt_page->vaddr != NULL)
+ bus_dmamap_sync(mpt_page->tag, mpt_page->map,
+ BUS_DMASYNC_POSTREAD);
mpt_free_request(mpt, req);
return (0);
}
@@ -545,6 +590,7 @@
struct mpt_cfg_page_req *page_req;
struct mpt_ext_cfg_page_req *ext_page_req;
struct mpt_raid_action *raid_act;
+ struct mpt_page_memory mpt_page;
#ifdef __amd64__
struct mpt_cfg_page_req32 *page_req32;
struct mpt_cfg_page_req page_req_swab;
@@ -553,14 +599,13 @@
struct mpt_raid_action32 *raid_act32;
struct mpt_raid_action raid_act_swab;
#endif
- void *mpt_page;
int error;
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list