PERFORCE change 144993 for review
Hans Petter Selasky
hselasky at FreeBSD.org
Thu Jul 10 08:23:04 UTC 2008
http://perforce.freebsd.org/chv.cgi?CH=144993
Change 144993 by hselasky at 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 <sys/cdefs.h>
-__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 <sys/cdefs.h>
-__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 <sys/cdefs.h>
-__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 <sys/cdefs.h>
-__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 <sys/param.h>
@@ -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 <sys/cdefs.h>
-__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 <sys/param.h>
@@ -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 <sys/cdefs.h>
-__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; i<ETHER_ADDR_LEN/2; i++) {
sc->enaddr[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 <sys/cdefs.h>
-__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 <sys/param.h>
#include <sys/systm.h>
@@ -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 <sys/cdefs.h>
-__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 <sys/cdefs.h>
-__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 <sys/cdefs.h>
-__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 <sys/param.h>
#include <sys/domain.h>
#include <sys/lock.h>
+#include <sys/kernel.h>
#include <sys/malloc.h>
#include <sys/mutex.h>
#include <sys/protosw.h>
#include <sys/socket.h>
#include <sys/socketvar.h>
+#include <sys/sysctl.h>
#include <sys/systm.h>
#include <net/raw_cb.h>
@@ -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 <sys/mbuf.h>
-
-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 <sys/param.h>
@@ -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) <<<
More information about the p4-projects
mailing list