From owner-p4-projects@FreeBSD.ORG Thu Jul 10 08:23:04 2008 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 5DCAC1065676; Thu, 10 Jul 2008 08:23:04 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 08CED106564A for ; Thu, 10 Jul 2008 08:23:04 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id E7C318FC1E for ; Thu, 10 Jul 2008 08:23:03 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.1/8.14.1) with ESMTP id m6A8N397066901 for ; Thu, 10 Jul 2008 08:23:03 GMT (envelope-from hselasky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.2/8.14.1/Submit) id m6A8N3sD066899 for perforce@freebsd.org; Thu, 10 Jul 2008 08:23:03 GMT (envelope-from hselasky@FreeBSD.org) Date: Thu, 10 Jul 2008 08:23:03 GMT Message-Id: <200807100823.m6A8N3sD066899@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky To: Perforce Change Reviews Cc: Subject: PERFORCE change 144993 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 Jul 2008 08:23:04 -0000 http://perforce.freebsd.org/chv.cgi?CH=144993 Change 144993 by hselasky@hselasky_laptop001 on 2008/07/10 08:22:27 IFC @ 144988 Getting closer to integrate. Affected files ... .. //depot/projects/usb/src/sys/amd64/amd64/machdep.c#10 integrate .. //depot/projects/usb/src/sys/amd64/amd64/mp_machdep.c#11 integrate .. //depot/projects/usb/src/sys/amd64/amd64/pmap.c#12 integrate .. //depot/projects/usb/src/sys/amd64/include/pmap.h#7 integrate .. //depot/projects/usb/src/sys/amd64/include/vmparam.h#9 integrate .. //depot/projects/usb/src/sys/cam/scsi/scsi_da.c#9 integrate .. //depot/projects/usb/src/sys/dev/ata/ata-chipset.c#11 integrate .. //depot/projects/usb/src/sys/dev/ata/ata-pci.h#9 integrate .. //depot/projects/usb/src/sys/dev/cs/if_cs.c#4 integrate .. //depot/projects/usb/src/sys/dev/cs/if_csreg.h#3 integrate .. //depot/projects/usb/src/sys/dev/if_ndis/if_ndis.c#9 integrate .. //depot/projects/usb/src/sys/dev/re/if_re.c#9 integrate .. //depot/projects/usb/src/sys/kern/link_elf.c#9 integrate .. //depot/projects/usb/src/sys/kern/link_elf_obj.c#9 integrate .. //depot/projects/usb/src/sys/net/raw_cb.c#5 integrate .. //depot/projects/usb/src/sys/net/raw_cb.h#3 integrate .. //depot/projects/usb/src/sys/net/raw_usrreq.c#5 integrate .. //depot/projects/usb/src/sys/net/rtsock.c#9 integrate .. //depot/projects/usb/src/sys/netgraph/bluetooth/common/ng_bluetooth.c#3 integrate .. //depot/projects/usb/src/sys/netgraph/bluetooth/include/ng_bluetooth.h#3 integrate .. //depot/projects/usb/src/sys/netgraph/bluetooth/include/ng_btsocket.h#2 integrate .. //depot/projects/usb/src/sys/netgraph/ng_iface.c#4 integrate .. //depot/projects/usb/src/sys/netgraph/ng_ip_input.c#2 integrate .. //depot/projects/usb/src/sys/netinet/in_pcb.c#10 integrate .. //depot/projects/usb/src/sys/netinet/in_pcb.h#9 integrate .. //depot/projects/usb/src/sys/netinet/sctp_asconf.c#9 integrate .. //depot/projects/usb/src/sys/netinet/sctp_asconf.h#7 integrate .. //depot/projects/usb/src/sys/netinet/sctp_bsd_addr.c#8 integrate .. //depot/projects/usb/src/sys/netinet/sctp_bsd_addr.h#7 integrate .. //depot/projects/usb/src/sys/netinet/sctp_cc_functions.h#3 integrate .. //depot/projects/usb/src/sys/netinet/sctp_constants.h#8 integrate .. //depot/projects/usb/src/sys/netinet/sctp_crc32.h#3 integrate .. //depot/projects/usb/src/sys/netinet/sctp_indata.c#9 integrate .. //depot/projects/usb/src/sys/netinet/sctp_indata.h#5 integrate .. //depot/projects/usb/src/sys/netinet/sctp_input.c#9 integrate .. //depot/projects/usb/src/sys/netinet/sctp_input.h#5 integrate .. //depot/projects/usb/src/sys/netinet/sctp_os_bsd.h#8 integrate .. //depot/projects/usb/src/sys/netinet/sctp_output.c#9 integrate .. //depot/projects/usb/src/sys/netinet/sctp_output.h#7 integrate .. //depot/projects/usb/src/sys/netinet/sctp_pcb.c#9 integrate .. //depot/projects/usb/src/sys/netinet/sctp_pcb.h#9 integrate .. //depot/projects/usb/src/sys/netinet/sctp_sysctl.h#7 integrate .. //depot/projects/usb/src/sys/netinet/sctp_timer.c#8 integrate .. //depot/projects/usb/src/sys/netinet/sctp_timer.h#5 integrate .. //depot/projects/usb/src/sys/netinet/sctp_uio.h#8 integrate .. //depot/projects/usb/src/sys/netinet/sctp_usrreq.c#9 integrate .. //depot/projects/usb/src/sys/netinet/sctp_var.h#9 integrate .. //depot/projects/usb/src/sys/netinet/sctputil.c#9 integrate .. //depot/projects/usb/src/sys/netinet/sctputil.h#8 integrate .. //depot/projects/usb/src/sys/netinet6/in6_pcb.c#9 integrate .. //depot/projects/usb/src/sys/netinet6/in6_src.c#9 integrate .. //depot/projects/usb/src/sys/netinet6/ip6_var.h#6 integrate .. //depot/projects/usb/src/sys/netinet6/raw_ip6.c#9 integrate .. //depot/projects/usb/src/sys/netinet6/sctp6_usrreq.c#9 integrate .. //depot/projects/usb/src/sys/netinet6/sctp6_var.h#7 integrate .. //depot/projects/usb/src/sys/netinet6/udp6_usrreq.c#10 integrate .. //depot/projects/usb/src/sys/netipsec/keysock.c#5 integrate .. //depot/projects/usb/src/sys/pci/if_rlreg.h#9 integrate Differences ... ==== //depot/projects/usb/src/sys/amd64/amd64/machdep.c#10 (text+ko) ==== @@ -39,7 +39,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.686 2008/04/25 05:18:47 jeff Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.687 2008/07/09 19:44:37 peter Exp $"); #include "opt_atalk.h" #include "opt_atpic.h" @@ -1466,6 +1466,10 @@ _udatasel = GSEL(GUDATA_SEL, SEL_UPL); _ucode32sel = GSEL(GUCODE32_SEL, SEL_UPL); + load_ds(_udatasel); + load_es(_udatasel); + load_fs(_udatasel); + /* setup proc 0's pcb */ thread0.td_pcb->pcb_flags = 0; thread0.td_pcb->pcb_cr3 = KPML4phys; ==== //depot/projects/usb/src/sys/amd64/amd64/mp_machdep.c#11 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/mp_machdep.c,v 1.290 2008/07/04 17:36:12 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/mp_machdep.c,v 1.291 2008/07/09 19:44:37 peter Exp $"); #include "opt_cpu.h" #include "opt_kstack_pages.h" @@ -98,6 +98,8 @@ /* SMP page table page */ extern pt_entry_t *SMPpt; +extern int _udatasel; + struct pcb stoppcbs[MAXCPU]; /* Variables needed for SMP tlb shootdown. */ @@ -564,7 +566,9 @@ */ load_cr4(rcr4() | CR4_PGE); - + load_ds(_udatasel); + load_es(_udatasel); + load_fs(_udatasel); mtx_unlock_spin(&ap_boot_mtx); /* wait until all the AP's are up */ ==== //depot/projects/usb/src/sys/amd64/amd64/pmap.c#12 (text+ko) ==== @@ -77,7 +77,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.626 2008/07/07 17:25:09 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.628 2008/07/09 06:04:10 alc Exp $"); /* * Manages physical address maps. @@ -175,7 +175,7 @@ static int ndmpdp; static vm_paddr_t dmaplimit; -vm_offset_t kernel_vm_end; +vm_offset_t kernel_vm_end = VM_MIN_KERNEL_ADDRESS; pt_entry_t pg_nx; SYSCTL_NODE(_vm, OID_AUTO, pmap, CTLFLAG_RD, 0, "VM/pmap parameters"); @@ -446,19 +446,15 @@ /* Now map the page tables at their location within PTmap */ for (i = 0; i < NKPT; i++) { - ((pd_entry_t *)KPDphys)[(KERNBASE - VM_MIN_KERNEL_ADDRESS) / - NBPDR + i] = KPTphys + (i << PAGE_SHIFT); - ((pd_entry_t *)KPDphys)[(KERNBASE - VM_MIN_KERNEL_ADDRESS) / - NBPDR + i] |= PG_RW | PG_V; + ((pd_entry_t *)KPDphys)[i] = KPTphys + (i << PAGE_SHIFT); + ((pd_entry_t *)KPDphys)[i] |= PG_RW | PG_V; } /* Map from zero to end of allocations under 2M pages */ /* This replaces some of the KPTphys entries above */ for (i = 0; (i << PDRSHIFT) < *firstaddr; i++) { - ((pd_entry_t *)KPDphys)[(KERNBASE - VM_MIN_KERNEL_ADDRESS) / - NBPDR + i] = i << PDRSHIFT; - ((pd_entry_t *)KPDphys)[(KERNBASE - VM_MIN_KERNEL_ADDRESS) / - NBPDR + i] |= PG_RW | PG_V | PG_PS | PG_G; + ((pd_entry_t *)KPDphys)[i] = i << PDRSHIFT; + ((pd_entry_t *)KPDphys)[i] |= PG_RW | PG_V | PG_PS | PG_G; } /* And connect up the PD to the PDP */ @@ -1703,25 +1699,34 @@ vm_paddr_t paddr; vm_page_t nkpg; pd_entry_t *pde, newpdir; - pdp_entry_t newpdp; + pdp_entry_t *pdpe; mtx_assert(&kernel_map->system_mtx, MA_OWNED); - if (kernel_vm_end == 0) { - kernel_vm_end = VM_MIN_KERNEL_ADDRESS; - while ((*pmap_pde(kernel_pmap, kernel_vm_end) & PG_V) != 0) { - kernel_vm_end = (kernel_vm_end + PAGE_SIZE * NPTEPG) & ~(PAGE_SIZE * NPTEPG - 1); - if (kernel_vm_end - 1 >= kernel_map->max_offset) { - kernel_vm_end = kernel_map->max_offset; - break; - } - } - } - addr = roundup2(addr, PAGE_SIZE * NPTEPG); + + /* + * Return if "addr" is within the range of kernel page table pages + * that were preallocated during pmap bootstrap. Moreover, leave + * "kernel_vm_end" and the kernel page table as they were. + * + * The correctness of this action is based on the following + * argument: vm_map_findspace() allocates contiguous ranges of the + * kernel virtual address space. It calls this function if a range + * ends after "kernel_vm_end". If the kernel is mapped between + * "kernel_vm_end" and "addr", then the range cannot begin at + * "kernel_vm_end". In fact, its beginning address cannot be less + * than the kernel. Thus, there is no immediate need to allocate + * any new kernel page table pages between "kernel_vm_end" and + * "KERNBASE". + */ + if (KERNBASE < addr && addr <= KERNBASE + NKPT * NBPDR) + return; + + addr = roundup2(addr, NBPDR); if (addr - 1 >= kernel_map->max_offset) addr = kernel_map->max_offset; while (kernel_vm_end < addr) { - pde = pmap_pde(kernel_pmap, kernel_vm_end); - if (pde == NULL) { + pdpe = pmap_pdpe(kernel_pmap, kernel_vm_end); + if ((*pdpe & PG_V) == 0) { /* We need a new PDP entry */ nkpg = vm_page_alloc(NULL, kernel_vm_end >> PDPSHIFT, VM_ALLOC_INTERRUPT | VM_ALLOC_NOOBJ | @@ -1731,13 +1736,13 @@ if ((nkpg->flags & PG_ZERO) == 0) pmap_zero_page(nkpg); paddr = VM_PAGE_TO_PHYS(nkpg); - newpdp = (pdp_entry_t) + *pdpe = (pdp_entry_t) (paddr | PG_V | PG_RW | PG_A | PG_M); - *pmap_pdpe(kernel_pmap, kernel_vm_end) = newpdp; continue; /* try again */ } + pde = pmap_pdpe_to_pde(pdpe, kernel_vm_end); if ((*pde & PG_V) != 0) { - kernel_vm_end = (kernel_vm_end + PAGE_SIZE * NPTEPG) & ~(PAGE_SIZE * NPTEPG - 1); + kernel_vm_end = (kernel_vm_end + NBPDR) & ~PDRMASK; if (kernel_vm_end - 1 >= kernel_map->max_offset) { kernel_vm_end = kernel_map->max_offset; break; @@ -1754,9 +1759,9 @@ pmap_zero_page(nkpg); paddr = VM_PAGE_TO_PHYS(nkpg); newpdir = (pd_entry_t) (paddr | PG_V | PG_RW | PG_A | PG_M); - *pmap_pde(kernel_pmap, kernel_vm_end) = newpdir; + pde_store(pde, newpdir); - kernel_vm_end = (kernel_vm_end + PAGE_SIZE * NPTEPG) & ~(PAGE_SIZE * NPTEPG - 1); + kernel_vm_end = (kernel_vm_end + NBPDR) & ~PDRMASK; if (kernel_vm_end - 1 >= kernel_map->max_offset) { kernel_vm_end = kernel_map->max_offset; break; ==== //depot/projects/usb/src/sys/amd64/include/pmap.h#7 (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.145 2008/07/06 22:36:28 alc Exp $ + * $FreeBSD: src/sys/amd64/include/pmap.h,v 1.146 2008/07/08 22:59:17 alc Exp $ */ #ifndef _MACHINE_PMAP_H_ @@ -115,7 +115,7 @@ #endif #define NKPML4E 1 /* number of kernel PML4 slots */ -#define NKPDPE 6 /* 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 */ @@ -131,7 +131,7 @@ #define KPML4I (NPML4EPG-1) /* Top 512GB for KVM */ #define DMPML4I (KPML4I-1) /* Next 512GB down for direct map */ -#define KPDPI (NPDPEPG-7) /* kernel map starts at -7GB */ +#define KPDPI (NPDPEPG-2) /* kernbase at -2GB */ /* * XXX doesn't really belong here I guess... ==== //depot/projects/usb/src/sys/amd64/include/vmparam.h#9 (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.55 2008/07/05 20:44:55 alc Exp $ + * $FreeBSD: src/sys/amd64/include/vmparam.h,v 1.56 2008/07/08 22:59:17 alc Exp $ */ @@ -163,12 +163,12 @@ */ #define VM_MAX_KERNEL_ADDRESS KVADDR(KPML4I, NPDPEPG-1, NPDEPG-1, NPTEPG-1) -#define VM_MIN_KERNEL_ADDRESS KVADDR(KPML4I, KPDPI, 0, 0) +#define VM_MIN_KERNEL_ADDRESS KVADDR(KPML4I, NPDPEPG-7, 0, 0) #define DMAP_MIN_ADDRESS KVADDR(DMPML4I, 0, 0, 0) #define DMAP_MAX_ADDRESS KVADDR(DMPML4I+1, 0, 0, 0) -#define KERNBASE MAX(0xffffffff80000000ul, VM_MIN_KERNEL_ADDRESS) +#define KERNBASE KVADDR(KPML4I, KPDPI, 0, 0) #define UPT_MAX_ADDRESS KVADDR(PML4PML4I, PML4PML4I, PML4PML4I, PML4PML4I) #define UPT_MIN_ADDRESS KVADDR(PML4PML4I, 0, 0, 0) ==== //depot/projects/usb/src/sys/cam/scsi/scsi_da.c#9 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/cam/scsi/scsi_da.c,v 1.226 2008/01/12 19:24:55 maxim Exp $"); +__FBSDID("$FreeBSD: src/sys/cam/scsi/scsi_da.c,v 1.227 2008/07/09 17:00:14 remko Exp $"); #include @@ -536,6 +536,14 @@ "*"}, /*quirks*/ DA_Q_NO_SYNC_CACHE }, { + /* + * Samsung YP-U3 mp3-player + * PR: 125398 + */ + {T_DIRECT, SIP_MEDIA_REMOVABLE, "Samsung", "YP-U3", + "*"}, /*quirks*/ DA_Q_NO_SYNC_CACHE + }, + { {T_DIRECT, SIP_MEDIA_REMOVABLE, "Netac", "OnlyDisk*", "2000"}, /*quirks*/ DA_Q_NO_SYNC_CACHE } ==== //depot/projects/usb/src/sys/dev/ata/ata-chipset.c#11 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/ata/ata-chipset.c,v 1.220 2008/06/11 08:48:25 sos Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/ata/ata-chipset.c,v 1.223 2008/07/09 15:10:53 remko Exp $"); #include "opt_ata.h" #include @@ -2129,6 +2129,7 @@ { ATA_I82801HB_R1, 0, AHCI, 0x00, ATA_SA300, "ICH8" }, { ATA_I82801HB_AH4, 0, AHCI, 0x00, ATA_SA300, "ICH8" }, { ATA_I82801HB_AH6, 0, AHCI, 0x00, ATA_SA300, "ICH8" }, + { ATA_I82801HBM, 0, 0, 0x00, ATA_UDMA5, "ICH8M" }, { ATA_I82801HBM_S1, 0, AHCI, 0x00, ATA_SA300, "ICH8M" }, { ATA_I82801HBM_S2, 0, AHCI, 0x00, ATA_SA300, "ICH8M" }, { ATA_I82801IB_S1, 0, AHCI, 0x00, ATA_SA300, "ICH9" }, @@ -2136,6 +2137,7 @@ { ATA_I82801IB_AH2, 0, AHCI, 0x00, ATA_SA300, "ICH9" }, { ATA_I82801IB_AH4, 0, AHCI, 0x00, ATA_SA300, "ICH9" }, { ATA_I82801IB_AH6, 0, AHCI, 0x00, ATA_SA300, "ICH9" }, + { ATA_I82801IB_R1, 0, AHCI, 0x00, ATA_SA300, "ICH9" }, { ATA_I31244, 0, 0, 0x00, ATA_SA150, "31244" }, { 0, 0, 0, 0, 0, 0}}; @@ -4987,12 +4989,15 @@ ctlr->r_type2 = SYS_RES_MEMORY; ctlr->r_rid2 = PCIR_BAR(5); if (!(ctlr->r_res2 = bus_alloc_resource_any(dev, ctlr->r_type2, - &ctlr->r_rid2, RF_ACTIVE))) - return ENXIO; + &ctlr->r_rid2, RF_ACTIVE))) { + if (ctlr->chip->chipid != ATA_SII0680 || + (pci_read_config(dev, 0x8a, 1) & 1)) + return ENXIO; + } if (ctlr->chip->cfg2 & SIISETCLK) { if ((pci_read_config(dev, 0x8a, 1) & 0x30) != 0x10) - pci_write_config(dev, 0x8a, + pci_write_config(dev, 0x8a, (pci_read_config(dev, 0x8a, 1) & 0xcf)|0x10,1); if ((pci_read_config(dev, 0x8a, 1) & 0x30) != 0x10) device_printf(dev, "%s could not set ATA133 clock\n", @@ -5012,7 +5017,9 @@ /* enable PCI interrupt as BIOS might not */ pci_write_config(dev, 0x8a, (pci_read_config(dev, 0x8a, 1) & 0x3f), 1); - ctlr->allocate = ata_sii_allocate; + if (ctlr->r_res2) + ctlr->allocate = ata_sii_allocate; + if (ctlr->chip->max_dma >= ATA_SA150) { ctlr->reset = ata_sii_reset; ctlr->setmode = ata_sata_setmode; ==== //depot/projects/usb/src/sys/dev/ata/ata-pci.h#9 (text+ko) ==== @@ -23,7 +23,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/sys/dev/ata/ata-pci.h,v 1.86 2008/04/21 10:51:38 sos Exp $ + * $FreeBSD: src/sys/dev/ata/ata-pci.h,v 1.88 2008/07/09 15:07:53 remko Exp $ */ /* structure holding chipset config info */ @@ -173,12 +173,14 @@ #define ATA_I82801HB_R1 0x28228086 #define ATA_I82801HB_AH4 0x28248086 #define ATA_I82801HB_S2 0x28258086 +#define ATA_I82801HBM 0x28508086 #define ATA_I82801HBM_S1 0x28298086 #define ATA_I82801HBM_S2 0x282a8086 #define ATA_I82801IB_S1 0x29208086 #define ATA_I82801IB_AH2 0x29218086 #define ATA_I82801IB_AH6 0x29228086 #define ATA_I82801IB_AH4 0x29238086 +#define ATA_I82801IB_R1 0x29258086 #define ATA_I82801IB_S2 0x29268086 #define ATA_I31244 0x32008086 ==== //depot/projects/usb/src/sys/dev/cs/if_cs.c#4 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/cs/if_cs.c,v 1.53 2008/06/06 17:27:19 imp Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/cs/if_cs.c,v 1.54 2008/07/09 16:47:55 imp Exp $"); /* * @@ -202,7 +202,7 @@ else self_control &= ~HCB1; cs_writereg(sc, PP_SelfCTL, self_control); - DELAY(500000); + DELAY(500000); /* Bad! */ } @@ -332,9 +332,9 @@ } else if (get_eeprom_cksum(START_EEPROM_DATA,CHKSUM_LEN, eeprom_buff)<0) { device_printf(dev, "EEPROM cheksum bad, assuming defaults.\n"); } else { - sc->auto_neg_cnf = eeprom_buff[AUTO_NEG_CNF_OFFSET/2]; - sc->adapter_cnf = eeprom_buff[ADAPTER_CNF_OFFSET/2]; - sc->isa_config = eeprom_buff[ISA_CNF_OFFSET/2]; + sc->auto_neg_cnf = eeprom_buff[AUTO_NEG_CNF_OFFSET]; + sc->adapter_cnf = eeprom_buff[ADAPTER_CNF_OFFSET]; + sc->isa_config = eeprom_buff[ISA_CNF_OFFSET]; for (i=0; ienaddr[i*2] = eeprom_buff[i]; sc->enaddr[i*2+1] = eeprom_buff[i] >> 8; @@ -1226,10 +1226,10 @@ error = cs_duplex_auto(sc); break; case IFM_10_2: - error = enable_bnc(sc); + enable_bnc(sc); break; case IFM_10_5: - error = enable_aui(sc); + enable_aui(sc); break; } ==== //depot/projects/usb/src/sys/dev/cs/if_csreg.h#3 (text+ko) ==== @@ -27,7 +27,7 @@ */ /* - * $FreeBSD: src/sys/dev/cs/if_csreg.h,v 1.7 2008/06/06 04:56:27 imp Exp $ + * $FreeBSD: src/sys/dev/cs/if_csreg.h,v 1.8 2008/07/09 16:47:55 imp Exp $ */ #define CS_89x0_IO_PORTS 0x0020 @@ -408,28 +408,43 @@ #define BIOS_LAST_OFFSET 0x0fc00 /* - * Byte offsets into the EEPROM configuration buffer + * Word offsets into the EEPROM configuration buffer */ -#define ISA_CNF_OFFSET 0x6 -#define TX_CTL_OFFSET (ISA_CNF_OFFSET + 8) /* 8900 eeprom */ -#define AUTO_NEG_CNF_OFFSET (ISA_CNF_OFFSET + 8) /* 8920 eeprom */ +#define ISA_CNF_OFFSET 0x3 +#define INT_NO_MASK 0x000F +#define DMA_NO_MASK 0x0070 +#define USE_SA 0x0080 +#define IOCHRDY_ENABLE 0x0100 +#define ISA_DMA_SIZE 0x0200 /* 0 16k 1 64k */ +#define ISA_AUTO_RxDMA 0x0400 +#define ISA_RxDMA 0x0800 +#define DMA_BURST 0x1000 +#define STREAM_TRANSFER 0x2000 +#define ANY_ISA_DMA (ISA_AUTO_RxDMA | ISA_RxDMA) +#define BOOT_PROM_FLAG 0x4000 +#define MEMORY_MODE 0x8000 + +#define PACKET_PAGE_BASE (ISA_CNF_OFFSET + 1) +#define BOOT_ROM_BASE (ISA_CNF_OFFSET + 2) +#define BOOT_PROM_MASK (ISA_CNF_OFFSET + 3) -/* - * the assumption here is that the bits in the eeprom are generally - * in the same position as those in the autonegctl register. - * Of course the IMM bit is not in that register so it must be - * masked out - */ -#define EE_FORCE_FDX 0x8000 -#define EE_NLP_ENABLE 0x0200 -#define EE_AUTO_NEG_ENABLE 0x0100 -#define EE_ALLOW_FDX 0x0080 -#define EE_AUTO_NEG_CNF_MASK (EE_FORCE_FDX | EE_NLP_ENABLE | \ +#define TX_CTL_OFFSET (ISA_CNF_OFFSET + 4) /* 8900 eeprom */ +#define AUTO_NEG_CNF_OFFSET (ISA_CNF_OFFSET + 4) /* 8920 eeprom */ + /* + * the assumption here is that the bits in the eeprom are generally + * in the same position as those in the autonegctl register. + * Of course the IMM bit is not in that register so it must be + * masked out + */ +#define EE_FORCE_FDX 0x8000 +#define EE_NLP_ENABLE 0x0200 +#define EE_AUTO_NEG_ENABLE 0x0100 +#define EE_ALLOW_FDX 0x0080 +#define EE_AUTO_NEG_CNF_MASK (EE_FORCE_FDX | EE_NLP_ENABLE | \ EE_AUTO_NEG_ENABLE | EE_ALLOW_FDX) +#define IMM_BIT 0x0040 /* ignore missing media */ -#define IMM_BIT 0x0040 /* ignore missing media */ - -#define ADAPTER_CNF_OFFSET (AUTO_NEG_CNF_OFFSET + 2) +#define ADAPTER_CNF_OFFSET (ISA_CNF_OFFSET + 5) #define A_CNF_MEDIA 0x0007 #define A_CNF_10B_T 0x0001 #define A_CNF_AUI 0x0002 @@ -440,24 +455,18 @@ #define A_CNF_MEDIA_AUI 0x0040 #define A_CNF_MEDIA_10B_2 0x0060 #define A_CNF_DC_DC_POLARITY 0x0080 +#define A_CNF_WAKE_ENABLED 0x0100 +#define A_CNF_WAKE_CFG 0x0200 +#define A_CNF_CAN_WAKE 0x0400 +#define A_CNF_OPT_FLAGS 0x1800 /* 00 server, 01 DOS 10 multi-user */ #define A_CNF_NO_AUTO_POLARITY 0x2000 #define A_CNF_LOW_RX_SQUELCH 0x4000 #define A_CNF_EXTND_10B_2 0x8000 +#define MFG_DATE_OFFSET (ISA_CNF_OFFSET + 8) + #define PACKET_PAGE_OFFSET 0x8 -/* - * Bit definitions for the ISA configuration word from the EEPROM - */ -#define INT_NO_MASK 0x000F -#define DMA_NO_MASK 0x0070 -#define ISA_DMA_SIZE 0x0200 -#define ISA_AUTO_RxDMA 0x0400 -#define ISA_RxDMA 0x0800 -#define DMA_BURST 0x1000 -#define STREAM_TRANSFER 0x2000 -#define ANY_ISA_DMA (ISA_AUTO_RxDMA | ISA_RxDMA) - /* DMA controller registers */ #define DMA_BASE 0x00 /* DMA controller base */ #define DMA_BASE_2 0x0C0 /* DMA controller base */ ==== //depot/projects/usb/src/sys/dev/if_ndis/if_ndis.c#9 (text+ko) ==== @@ -34,7 +34,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/if_ndis/if_ndis.c,v 1.142 2008/06/11 13:40:15 cokane Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/if_ndis/if_ndis.c,v 1.143 2008/07/09 00:10:55 cokane Exp $"); #include #include @@ -1717,8 +1717,10 @@ if (sc->ndis_link == 1 && sc->ndis_sts == NDIS_STATUS_MEDIA_DISCONNECT) { sc->ndis_link = 0; + NDIS_UNLOCK(sc); if (sc->ndis_80211) ieee80211_new_state(vap, IEEE80211_S_SCAN, 0); + NDIS_LOCK(sc); if_link_state_change(sc->ifp, LINK_STATE_DOWN); } ==== //depot/projects/usb/src/sys/dev/re/if_re.c#9 (text+ko) ==== @@ -31,7 +31,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/re/if_re.c,v 1.125 2008/07/02 08:00:14 yongari Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/re/if_re.c,v 1.127 2008/07/09 01:58:18 yongari Exp $"); /* * RealTek 8139C+/8169/8169S/8110S/8168/8111/8101E PCI NIC driver @@ -170,7 +170,7 @@ { RT_VENDORID, RT_DEVICEID_8139, 0, "RealTek 8139C+ 10/100BaseTX" }, { RT_VENDORID, RT_DEVICEID_8101E, 0, - "RealTek 8101E PCIe 10/100baseTX" }, + "RealTek 8101E/8102E/8102EL PCIe 10/100baseTX" }, { RT_VENDORID, RT_DEVICEID_8168, 0, "RealTek 8168/8168B/8168C/8168CP/8111B/8111C/8111CP PCIe " "Gigabit Ethernet" }, @@ -206,6 +206,8 @@ { RL_HWREV_8101, RL_8139, "8101"}, { RL_HWREV_8100E, RL_8169, "8100E"}, { RL_HWREV_8101E, RL_8169, "8101E"}, + { RL_HWREV_8102E, RL_8169, "8102E"}, + { RL_HWREV_8102EL, RL_8169, "8102EL"}, { RL_HWREV_8168_SPIN2, RL_8169, "8168"}, { RL_HWREV_8168_SPIN3, RL_8169, "8168"}, { RL_HWREV_8168C, RL_8169, "8168C/8111C"}, @@ -1240,7 +1242,13 @@ break; case RL_HWREV_8100E: case RL_HWREV_8101E: - sc->rl_flags |= RL_FLAG_INVMAR | RL_FLAG_PHYWAKE; + sc->rl_flags |= RL_FLAG_NOJUMBO | RL_FLAG_INVMAR | + RL_FLAG_PHYWAKE; + break; + case RL_HWREV_8102E: + case RL_HWREV_8102EL: + sc->rl_flags |= RL_FLAG_NOJUMBO | RL_FLAG_INVMAR | + RL_FLAG_PHYWAKE | RL_FLAG_DESCV2 | RL_FLAG_MACSTAT; break; case RL_HWREV_8168_SPIN1: case RL_HWREV_8168_SPIN2: ==== //depot/projects/usb/src/sys/kern/link_elf.c#9 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/kern/link_elf.c,v 1.97 2008/05/23 00:49:39 jb Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/link_elf.c,v 1.98 2008/07/08 23:51:38 edwin Exp $"); #include "opt_ddb.h" #include "opt_gdb.h" @@ -232,9 +232,12 @@ extern struct _dynamic _DYNAMIC; static void -link_elf_error(const char *s) +link_elf_error(const char *filename, const char *s) { - printf("kldload: %s\n", s); + if (filename == NULL) + printf("kldload: %s\n", s); + else + printf("kldload: %s: %s\n", filename, s); } /* @@ -624,23 +627,23 @@ if (hdr->e_ident[EI_CLASS] != ELF_TARG_CLASS || hdr->e_ident[EI_DATA] != ELF_TARG_DATA) { - link_elf_error("Unsupported file layout"); + link_elf_error(filename, "Unsupported file layout"); error = ENOEXEC; goto out; } if (hdr->e_ident[EI_VERSION] != EV_CURRENT || hdr->e_version != EV_CURRENT) { - link_elf_error("Unsupported file version"); + link_elf_error(filename, "Unsupported file version"); error = ENOEXEC; goto out; } if (hdr->e_type != ET_EXEC && hdr->e_type != ET_DYN) { - link_elf_error("Unsupported file type"); + link_elf_error(filename, "Unsupported file type"); error = ENOEXEC; goto out; } if (hdr->e_machine != ELF_TARG_MACH) { - link_elf_error("Unsupported machine"); + link_elf_error(filename, "Unsupported machine"); error = ENOEXEC; goto out; } @@ -653,7 +656,7 @@ if (!((hdr->e_phentsize == sizeof(Elf_Phdr)) && (hdr->e_phoff + hdr->e_phnum*sizeof(Elf_Phdr) <= PAGE_SIZE) && (hdr->e_phoff + hdr->e_phnum*sizeof(Elf_Phdr) <= nbytes))) - link_elf_error("Unreadable program headers"); + link_elf_error(filename, "Unreadable program headers"); /* * Scan the program header entries, and save key information. @@ -671,7 +674,7 @@ case PT_LOAD: if (nsegs == MAXSEGS) { - link_elf_error("Too many sections"); + link_elf_error(filename, "Too many sections"); error = ENOEXEC; goto out; } @@ -691,7 +694,7 @@ break; case PT_INTERP: - link_elf_error("Unsupported file type"); + link_elf_error(filename, "Unsupported file type"); error = ENOEXEC; goto out; } @@ -699,12 +702,12 @@ ++phdr; } if (phdyn == NULL) { - link_elf_error("Object is not dynamically-linked"); + link_elf_error(filename, "Object is not dynamically-linked"); error = ENOEXEC; goto out; } if (nsegs == 0) { - link_elf_error("No sections"); + link_elf_error(filename, "No sections"); error = ENOEXEC; goto out; } ==== //depot/projects/usb/src/sys/kern/link_elf_obj.c#9 (text+ko) ==== @@ -26,7 +26,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/kern/link_elf_obj.c,v 1.100 2008/06/20 06:24:34 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/link_elf_obj.c,v 1.101 2008/07/08 23:51:38 edwin Exp $"); #include "opt_ddb.h" #include "opt_mac.h" @@ -170,9 +170,12 @@ static int relocate_file(elf_file_t ef); static void -link_elf_error(const char *s) +link_elf_error(const char *filename, const char *s) { - printf("kldload: %s\n", s); + if (filename == NULL) + printf("kldload: %s\n", s); + else + printf("kldload: %s: %s\n", filename, s); } static void @@ -460,23 +463,23 @@ if (hdr->e_ident[EI_CLASS] != ELF_TARG_CLASS || hdr->e_ident[EI_DATA] != ELF_TARG_DATA) { - link_elf_error("Unsupported file layout"); + link_elf_error(filename, "Unsupported file layout"); error = ENOEXEC; goto out; } if (hdr->e_ident[EI_VERSION] != EV_CURRENT || hdr->e_version != EV_CURRENT) { - link_elf_error("Unsupported file version"); + link_elf_error(filename, "Unsupported file version"); error = ENOEXEC; goto out; } if (hdr->e_type != ET_REL) { - link_elf_error("Unsupported file type"); + link_elf_error(filename, "Unsupported file type"); error = ENOEXEC; goto out; } if (hdr->e_machine != ELF_TARG_MACH) { - link_elf_error("Unsupported machine"); + link_elf_error(filename, "Unsupported machine"); error = ENOEXEC; goto out; } @@ -540,19 +543,19 @@ } } if (ef->nprogtab == 0) { - link_elf_error("file has no contents"); + link_elf_error(filename, "file has no contents"); error = ENOEXEC; goto out; } if (nsym != 1) { /* Only allow one symbol table for now */ - link_elf_error("file has no valid symbol table"); + link_elf_error(filename, "file has no valid symbol table"); error = ENOEXEC; goto out; } if (symstrindex < 0 || symstrindex > hdr->e_shnum || shdr[symstrindex].sh_type != SHT_STRTAB) { - link_elf_error("file has invalid symbol strings"); + link_elf_error(filename, "file has invalid symbol strings"); error = ENOEXEC; goto out; } ==== //depot/projects/usb/src/sys/net/raw_cb.c#5 (text+ko) ==== @@ -28,17 +28,19 @@ * SUCH DAMAGE. * * @(#)raw_cb.c 8.1 (Berkeley) 6/10/93 - * $FreeBSD: src/sys/net/raw_cb.c,v 1.36 2008/07/05 18:03:39 rwatson Exp $ + * $FreeBSD: src/sys/net/raw_cb.c,v 1.39 2008/07/09 18:41:31 rwatson Exp $ */ #include #include #include +#include #include #include #include #include #include +#include #include #include @@ -55,8 +57,15 @@ struct mtx rawcb_mtx; struct rawcb_list_head rawcb_list; -const static u_long raw_sendspace = RAWSNDQ; -const static u_long raw_recvspace = RAWRCVQ; +SYSCTL_NODE(_net, OID_AUTO, raw, CTLFLAG_RW, 0, "Raw socket infrastructure"); + +static u_long raw_sendspace = RAWSNDQ; +SYSCTL_ULONG(_net_raw, OID_AUTO, sendspace, CTLFLAG_RW, &raw_sendspace, 0, + "Default raw socket send space"); + +static u_long raw_recvspace = RAWRCVQ; +SYSCTL_ULONG(_net_raw, OID_AUTO, recvspace, CTLFLAG_RW, &raw_recvspace, 0, + "Default raw socket receive space"); /* * Allocate a control block and a nominal amount of buffer space for the @@ -69,12 +78,13 @@ int error; /* - * It is assumed that raw_attach is called - * after space has been allocated for the - * rawcb. + * It is assumed that raw_attach is called after space has been + * allocated for the rawcb; consumer protocols may simply allocate + * type struct rawcb, or a wrapper data structure that begins with a + * struct rawcb. */ - if (rp == 0) - return (ENOBUFS); + KASSERT(rp != NULL, ("raw_attach: rp == NULL")); + error = soreserve(so, raw_sendspace, raw_recvspace); if (error) return (error); @@ -101,42 +111,5 @@ mtx_lock(&rawcb_mtx); LIST_REMOVE(rp, list); mtx_unlock(&rawcb_mtx); -#ifdef notdef - if (rp->rcb_laddr) - m_freem(dtom(rp->rcb_laddr)); - rp->rcb_laddr = 0; -#endif free((caddr_t)(rp), M_PCB); } - -/* - * Disconnect raw socket. - */ -void -raw_disconnect(struct rawcb *rp) -{ - -#ifdef notdef - if (rp->rcb_faddr) - m_freem(dtom(rp->rcb_faddr)); - rp->rcb_faddr = 0; -#endif -} - -#ifdef notdef -#include - -int -raw_bind(struct socket *so, struct mbuf *nam) -{ - struct sockaddr *addr = mtod(nam, struct sockaddr *); - struct rawcb *rp; - - if (ifnet == 0) - return (EADDRNOTAVAIL); - rp = sotorawcb(so); - nam = m_copym(nam, 0, M_COPYALL, M_WAIT); - rp->rcb_laddr = mtod(nam, struct sockaddr *); - return (0); -} -#endif ==== //depot/projects/usb/src/sys/net/raw_cb.h#3 (text+ko) ==== @@ -28,7 +28,7 @@ * SUCH DAMAGE. * * @(#)raw_cb.h 8.1 (Berkeley) 6/10/93 - * $FreeBSD: src/sys/net/raw_cb.h,v 1.21 2008/07/05 19:12:55 rwatson Exp $ + * $FreeBSD: src/sys/net/raw_cb.h,v 1.22 2008/07/09 15:48:16 rwatson Exp $ */ #ifndef _NET_RAW_CB_H_ @@ -43,8 +43,6 @@ struct rawcb { LIST_ENTRY(rawcb) list; struct socket *rcb_socket; /* back pointer to socket */ - struct sockaddr *rcb_faddr; /* destination address */ - struct sockaddr *rcb_laddr; /* socket's address */ struct sockproto rcb_proto; /* protocol family, protocol */ }; @@ -72,9 +70,7 @@ */ int raw_attach(struct socket *, int); void raw_detach(struct rawcb *); -void raw_disconnect(struct rawcb *); -void raw_input(struct mbuf *, struct sockproto *, struct sockaddr *, - struct sockaddr *); +void raw_input(struct mbuf *, struct sockproto *, struct sockaddr *); /* * Generic pr_usrreqs entries for raw socket protocols, usually wrapped so ==== //depot/projects/usb/src/sys/net/raw_usrreq.c#5 (text+ko) ==== @@ -28,7 +28,7 @@ * SUCH DAMAGE. * * @(#)raw_usrreq.c 8.1 (Berkeley) 6/10/93 - * $FreeBSD: src/sys/net/raw_usrreq.c,v 1.45 2008/07/05 18:03:39 rwatson Exp $ + * $FreeBSD: src/sys/net/raw_usrreq.c,v 1.46 2008/07/09 15:48:16 rwatson Exp $ */ #include @@ -67,8 +67,7 @@ * Raw protocol interface. */ void -raw_input(struct mbuf *m0, struct sockproto *proto, struct sockaddr *src, - struct sockaddr *dst) +raw_input(struct mbuf *m0, struct sockproto *proto, struct sockaddr *src) { struct rawcb *rp; struct mbuf *m = m0; @@ -82,19 +81,6 @@ if (rp->rcb_proto.sp_protocol && rp->rcb_proto.sp_protocol != proto->sp_protocol) continue; - /* - * We assume the lower level routines have placed the address - * in a canonical format suitable for a structure comparison. - * - * Note that if the lengths are not the same the comparison - * will fail at the first byte. - */ -#define equal(a1, a2) \ - (bcmp((caddr_t)(a1), (caddr_t)(a2), a1->sa_len) == 0) - if (rp->rcb_laddr && !equal(rp->rcb_laddr, dst)) - continue; - if (rp->rcb_faddr && !equal(rp->rcb_faddr, src)) - continue; if (last) { struct mbuf *n; n = m_copy(m, 0, (int)M_COPYALL); @@ -133,20 +119,18 @@ static void raw_uabort(struct socket *so) { - struct rawcb *rp = sotorawcb(so); + + KASSERT(sotorawcb(so) != NULL, ("raw_uabort: rp == NULL")); - KASSERT(rp != NULL, ("raw_uabort: rp == NULL")); - raw_disconnect(rp); soisdisconnected(so); >>> TRUNCATED FOR MAIL (1000 lines) <<<