Date: Sat, 22 Oct 2005 13:13:17 GMT From: "Bjoern A. Zeeb" <bz@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 85698 for review Message-ID: <200510221313.j9MDDHAZ006238@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=85698 Change 85698 by bz@bz_y2k_i386 on 2005/10/22 13:13:00 IFC synch with KAME done by suz (netinet6/nd) Affected files ... .. //depot/projects/fast_ipsec/src/sys/alpha/alpha/pmap.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/alpha/alpha/promcons.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/alpha/tlsb/zs_tlsb.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/amd64/amd64/cpu_switch.S#3 integrate .. //depot/projects/fast_ipsec/src/sys/amd64/amd64/identcpu.c#3 integrate .. //depot/projects/fast_ipsec/src/sys/amd64/amd64/machdep.c#4 integrate .. //depot/projects/fast_ipsec/src/sys/amd64/amd64/pmap.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/amd64/conf/NOTES#4 integrate .. //depot/projects/fast_ipsec/src/sys/arm/xscale/i80321/i80321_space.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/arm/xscale/i80321/i80321_timer.c#3 integrate .. //depot/projects/fast_ipsec/src/sys/boot/i386/boot2/boot2.c#4 integrate .. //depot/projects/fast_ipsec/src/sys/boot/i386/libi386/smbios.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/boot/ofw/libofw/elf_freebsd.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/boot/ofw/libofw/libofw.h#2 integrate .. //depot/projects/fast_ipsec/src/sys/boot/ofw/libofw/ofw_console.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/boot/ofw/libofw/ofw_memory.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/boot/ofw/libofw/openfirm.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/compat/ndis/kern_ndis.c#3 integrate .. //depot/projects/fast_ipsec/src/sys/compat/ndis/ndis_var.h#3 integrate .. //depot/projects/fast_ipsec/src/sys/compat/ndis/ntoskrnl_var.h#3 integrate .. //depot/projects/fast_ipsec/src/sys/compat/ndis/subr_hal.c#3 integrate .. //depot/projects/fast_ipsec/src/sys/compat/ndis/subr_ndis.c#3 integrate .. //depot/projects/fast_ipsec/src/sys/compat/ndis/subr_ntoskrnl.c#3 integrate .. //depot/projects/fast_ipsec/src/sys/compat/svr4/svr4_misc.c#3 integrate .. //depot/projects/fast_ipsec/src/sys/compat/svr4/svr4_siginfo.h#2 integrate .. //depot/projects/fast_ipsec/src/sys/conf/Makefile.arm#3 integrate .. //depot/projects/fast_ipsec/src/sys/conf/files#4 integrate .. //depot/projects/fast_ipsec/src/sys/dev/bfe/if_bfe.c#3 integrate .. //depot/projects/fast_ipsec/src/sys/dev/bge/if_bge.c#3 integrate .. //depot/projects/fast_ipsec/src/sys/dev/cx/if_cx.c#3 integrate .. //depot/projects/fast_ipsec/src/sys/dev/cy/cy.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/dev/dc/dcphy.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/dev/dc/if_dc.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/dev/dc/pnphy.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/dev/dcons/dcons_os.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/dev/digi/digi.c#3 integrate .. //depot/projects/fast_ipsec/src/sys/dev/ed/if_ed_isa.c#3 integrate .. //depot/projects/fast_ipsec/src/sys/dev/ed/if_ed_rtl80x9.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/dev/em/if_em.c#3 integrate .. //depot/projects/fast_ipsec/src/sys/dev/em/if_em.h#3 integrate .. //depot/projects/fast_ipsec/src/sys/dev/em/if_em_hw.h#2 integrate .. //depot/projects/fast_ipsec/src/sys/dev/exca/exca.c#3 integrate .. //depot/projects/fast_ipsec/src/sys/dev/if_ndis/if_ndis.c#3 integrate .. //depot/projects/fast_ipsec/src/sys/dev/if_ndis/if_ndisvar.h#3 integrate .. //depot/projects/fast_ipsec/src/sys/dev/kbdmux/kbdmux.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/dev/lge/if_lge.c#3 integrate .. //depot/projects/fast_ipsec/src/sys/dev/mii/brgphy.c#3 integrate .. //depot/projects/fast_ipsec/src/sys/dev/mii/dcphy.c#3 delete .. //depot/projects/fast_ipsec/src/sys/dev/mii/pnphy.c#3 delete .. //depot/projects/fast_ipsec/src/sys/dev/nge/if_nge.c#3 integrate .. //depot/projects/fast_ipsec/src/sys/dev/ofw/ofw_console.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/dev/pccbb/pccbb_isa.c#3 integrate .. //depot/projects/fast_ipsec/src/sys/dev/rc/rc.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/dev/re/if_re.c#4 integrate .. //depot/projects/fast_ipsec/src/sys/dev/rp/rp.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/dev/sab/sab.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/dev/si/si.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/dev/sio/sio.c#3 integrate .. //depot/projects/fast_ipsec/src/sys/dev/sound/pcm/feeder_rate.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/dev/sound/pcm/vchan.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/dev/uart/uart_tty.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/dev/usb/if_aue.c#3 integrate .. //depot/projects/fast_ipsec/src/sys/dev/usb/if_axe.c#3 integrate .. //depot/projects/fast_ipsec/src/sys/dev/usb/if_rue.c#3 integrate .. //depot/projects/fast_ipsec/src/sys/dev/usb/if_udav.c#3 integrate .. //depot/projects/fast_ipsec/src/sys/dev/usb/ubser.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/dev/usb/ucom.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/dev/usb/ucycom.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/dev/vge/if_vge.c#3 integrate .. //depot/projects/fast_ipsec/src/sys/dev/zs/zs.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/fs/devfs/devfs_vnops.c#3 integrate .. //depot/projects/fast_ipsec/src/sys/fs/nullfs/null_vfsops.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/fs/nwfs/nwfs_vnops.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/fs/udf/udf_vfsops.c#3 integrate .. //depot/projects/fast_ipsec/src/sys/fs/unionfs/union_vnops.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/gnu/fs/ext2fs/ext2_lookup.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/gnu/fs/reiserfs/reiserfs_namei.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/i386/i386/identcpu.c#3 integrate .. //depot/projects/fast_ipsec/src/sys/i386/i386/pmap.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/i386/svr4/svr4_machdep.c#4 integrate .. //depot/projects/fast_ipsec/src/sys/ia64/ia64/pmap.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/ia64/ia64/ssc.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/isofs/cd9660/cd9660_lookup.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/isofs/cd9660/cd9660_vfsops.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/isofs/cd9660/iso.h#2 integrate .. //depot/projects/fast_ipsec/src/sys/kern/kern_conf.c#3 integrate .. //depot/projects/fast_ipsec/src/sys/kern/kern_linker.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/kern/kern_malloc.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/kern/kern_mutex.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/kern/link_elf.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/kern/subr_witness.c#3 integrate .. //depot/projects/fast_ipsec/src/sys/kern/syscalls.master#4 integrate .. //depot/projects/fast_ipsec/src/sys/kern/tty.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/kern/tty_compat.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/kern/uipc_cow.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/kern/uipc_sem.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/modules/dc/Makefile#3 integrate .. //depot/projects/fast_ipsec/src/sys/modules/if_gif/Makefile#3 integrate .. //depot/projects/fast_ipsec/src/sys/modules/mii/Makefile#3 integrate .. //depot/projects/fast_ipsec/src/sys/net/if_sl.c#3 integrate .. //depot/projects/fast_ipsec/src/sys/net/ppp_tty.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/netgraph/bluetooth/drivers/h4/ng_h4.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/netgraph/ng_tty.c#3 integrate .. //depot/projects/fast_ipsec/src/sys/netinet/icmp6.h#2 integrate .. //depot/projects/fast_ipsec/src/sys/netinet/tcp_input.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/netinet6/README#2 integrate .. //depot/projects/fast_ipsec/src/sys/netinet6/icmp6.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/netinet6/in6.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/netinet6/in6.h#2 integrate .. //depot/projects/fast_ipsec/src/sys/netinet6/in6_ifattach.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/netinet6/in6_ifattach.h#2 integrate .. //depot/projects/fast_ipsec/src/sys/netinet6/in6_src.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/netinet6/in6_var.h#2 integrate .. //depot/projects/fast_ipsec/src/sys/netinet6/ip6_input.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/netinet6/ip6_mroute.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/netinet6/ip6_output.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/netinet6/ip6_var.h#2 integrate .. //depot/projects/fast_ipsec/src/sys/netinet6/mld6.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/netinet6/mld6_var.h#2 integrate .. //depot/projects/fast_ipsec/src/sys/netinet6/nd6.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/netinet6/nd6.h#2 integrate .. //depot/projects/fast_ipsec/src/sys/netinet6/nd6_nbr.c#3 integrate .. //depot/projects/fast_ipsec/src/sys/netinet6/nd6_rtr.c#2 integrate .. //depot/projects/fast_ipsec/src/sys/netinet6/raw_ip6.c#3 integrate .. //depot/projects/fast_ipsec/src/sys/pc98/cbus/sio.c#3 integrate .. //depot/projects/fast_ipsec/src/sys/pc98/pc98/machdep.c#4 integrate .. //depot/projects/fast_ipsec/src/sys/pci/if_dc.c#3 delete .. //depot/projects/fast_ipsec/src/sys/pci/if_dcreg.h#2 delete .. //depot/projects/fast_ipsec/src/sys/pci/if_rl.c#3 integrate .. //depot/projects/fast_ipsec/src/sys/pci/if_sf.c#3 integrate .. //depot/projects/fast_ipsec/src/sys/pci/if_sis.c#3 integrate .. //depot/projects/fast_ipsec/src/sys/pci/if_sk.c#4 integrate .. //depot/projects/fast_ipsec/src/sys/pci/if_ste.c#3 integrate .. //depot/projects/fast_ipsec/src/sys/pci/if_tl.c#3 integrate .. //depot/projects/fast_ipsec/src/sys/pci/if_vr.c#3 integrate .. //depot/projects/fast_ipsec/src/sys/pci/if_wb.c#3 integrate .. //depot/projects/fast_ipsec/src/sys/posix4/_semaphore.h#2 integrate .. //depot/projects/fast_ipsec/src/sys/sys/sysproto.h#4 integrate .. //depot/projects/fast_ipsec/src/sys/sys/tty.h#2 integrate .. //depot/projects/fast_ipsec/src/sys/ufs/ffs/ffs_vfsops.c#3 integrate .. //depot/projects/fast_ipsec/src/sys/ufs/ufs/ufs_lookup.c#3 integrate .. //depot/projects/fast_ipsec/src/sys/vm/uma_core.c#3 integrate Differences ... ==== //depot/projects/fast_ipsec/src/sys/alpha/alpha/pmap.c#2 (text+ko) ==== @@ -148,7 +148,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/alpha/alpha/pmap.c,v 1.179 2005/09/03 18:20:18 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/alpha/alpha/pmap.c,v 1.180 2005/10/21 19:42:42 ade Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -1367,6 +1367,8 @@ pv_entry_t pv; pv = get_pv_entry(); + if (pv == NULL) + panic("no pv entries: increase vm.pmap.shpgperproc"); pv->pv_va = va; pv->pv_pmap = pmap; pv->pv_ptem = mpte; ==== //depot/projects/fast_ipsec/src/sys/alpha/alpha/promcons.c#2 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/alpha/alpha/promcons.c,v 1.44 2005/01/05 20:05:49 imp Exp $"); +__FBSDID("$FreeBSD: src/sys/alpha/alpha/promcons.c,v 1.45 2005/10/16 20:58:21 phk Exp $"); #include <sys/param.h> #include <sys/kernel.h> @@ -108,7 +108,6 @@ if ((tp->t_state & TS_ISOPEN) == 0) { tp->t_state |= TS_CARR_ON; ttyconsolemode(tp, 0); - ttsetwater(tp); setuptimeout = 1; } else if ((tp->t_state & TS_XCLUDE) && suser(td)) { ==== //depot/projects/fast_ipsec/src/sys/alpha/tlsb/zs_tlsb.c#2 (text+ko) ==== @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/alpha/tlsb/zs_tlsb.c,v 1.49 2004/10/18 21:51:24 phk Exp $"); +__FBSDID("$FreeBSD: src/sys/alpha/tlsb/zs_tlsb.c,v 1.50 2005/10/16 20:58:21 phk Exp $"); #include <sys/param.h> #include <sys/kernel.h> @@ -284,7 +284,6 @@ if ((tp->t_state & TS_ISOPEN) == 0) { tp->t_state |= TS_CARR_ON; ttyconsolemode(tp, 0); - ttsetwater(tp); setuptimeout = 1; } else if ((tp->t_state & TS_XCLUDE) && suser(td)) { splx(s); ==== //depot/projects/fast_ipsec/src/sys/amd64/amd64/cpu_switch.S#3 (text+ko) ==== @@ -30,7 +30,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/amd64/cpu_switch.S,v 1.153 2005/09/27 21:10:10 peter Exp $ + * $FreeBSD: src/sys/amd64/amd64/cpu_switch.S,v 1.154 2005/10/17 23:10:31 davidxu Exp $ */ #include <machine/asmacros.h> @@ -109,22 +109,7 @@ movl %es,PCB_ES(%r8) movl %fs,PCB_FS(%r8) movl %gs,PCB_GS(%r8) - jmp 2f 1: - - /* Save userland %fs */ - movl $MSR_FSBASE,%ecx - rdmsr - movl %eax,PCB_FSBASE(%r8) - movl %edx,PCB_FSBASE+4(%r8) - - /* Save userland %gs */ - movl $MSR_KGSBASE,%ecx - rdmsr - movl %eax,PCB_GSBASE(%r8) - movl %edx,PCB_GSBASE+4(%r8) -2: - /* Test if debug registers should be saved. */ testl $PCB_DBREGS,PCB_FLAGS(%r8) jz 1f /* no, skip over */ ==== //depot/projects/fast_ipsec/src/sys/amd64/amd64/identcpu.c#3 (text+ko) ==== @@ -39,7 +39,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/amd64/amd64/identcpu.c,v 1.137 2005/10/14 22:52:00 jkim Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/identcpu.c,v 1.140 2005/10/17 23:23:20 jkim Exp $"); #include "opt_cpu.h" @@ -334,6 +334,15 @@ ); } + if (cpu_feature & CPUID_HTT && strcmp(cpu_vendor, + "AuthenticAMD") == 0) { + cpu_feature &= ~CPUID_HTT; + if (bootverbose) + printf("\nHTT bit cleared - FreeBSD" + " does not have licenseing issues" + " requiring it.\n"); + } + /* * If this CPU supports HTT or CMP then mention the * number of physical/logical cores it contains. @@ -348,9 +357,11 @@ cpuid_count(4, 0, regs); cmp = ((regs[0] & 0xfc000000) >> 26) + 1; } - if (htt > 1) - printf("\n Physical/Logical cores: %d/%d", - cmp, htt); + if (cmp > 1) + printf("\n Cores per package: %d", cmp); + if ((htt / cmp) > 1) + printf("\n Logical CPUs per core: %d", + htt / cmp); } } /* Avoid ugly blank lines: only print newline when we have to. */ ==== //depot/projects/fast_ipsec/src/sys/amd64/amd64/machdep.c#4 (text+ko) ==== @@ -39,7 +39,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.641 2005/10/14 12:43:43 davidxu Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.642 2005/10/17 23:10:31 davidxu Exp $"); #include "opt_atalk.h" #include "opt_atpic.h" @@ -560,10 +560,12 @@ struct trapframe *regs = td->td_frame; struct pcb *pcb = td->td_pcb; + critical_enter(); wrmsr(MSR_FSBASE, 0); wrmsr(MSR_KGSBASE, 0); /* User value while we're in the kernel */ pcb->pcb_fsbase = 0; pcb->pcb_gsbase = 0; + critical_exit(); load_ds(_udatasel); load_es(_udatasel); load_fs(_udatasel); ==== //depot/projects/fast_ipsec/src/sys/amd64/amd64/pmap.c#2 (text+ko) ==== @@ -77,7 +77,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.528 2005/09/04 19:06:26 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.529 2005/10/21 19:42:42 ade Exp $"); /* * Manages physical address maps. @@ -1508,6 +1508,8 @@ pv_entry_t pv; pv = get_pv_entry(); + if (pv == NULL) + panic("no pv entries: increase vm.pmap.shpgperproc"); pv->pv_va = va; pv->pv_pmap = pmap; ==== //depot/projects/fast_ipsec/src/sys/amd64/conf/NOTES#4 (text+ko) ==== @@ -4,7 +4,7 @@ # This file contains machine dependent kernel configuration notes. For # machine independent notes, look in /sys/conf/NOTES. # -# $FreeBSD: src/sys/amd64/conf/NOTES,v 1.44 2005/10/14 17:22:28 ru Exp $ +# $FreeBSD: src/sys/amd64/conf/NOTES,v 1.45 2005/10/17 18:35:57 jhb Exp $ # # @@ -325,9 +325,6 @@ hint.pbio.0.port="0x360" device smbios device vpd -# sx device is i386 and pc98 only at the moment. -device sx -options SX_DEBUG # HOT1 Xilinx 6200 card (http://www.vcc.com/) device xrpu ==== //depot/projects/fast_ipsec/src/sys/arm/xscale/i80321/i80321_space.c#2 (text+ko) ==== @@ -40,7 +40,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/arm/xscale/i80321/i80321_space.c,v 1.3 2005/02/13 18:20:39 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/xscale/i80321/i80321_space.c,v 1.4 2005/10/20 20:30:51 cognet Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -257,23 +257,11 @@ i80321_mem_bs_map(void *t, bus_addr_t bpa, bus_size_t size, int flags, bus_space_handle_t *bshp) { - - vm_offset_t va; - uint32_t busbase; - vm_paddr_t pa, endpa, physbase; + vm_paddr_t pa, endpa; - /* - * Found the window -- PCI MEM space is not mapped by allocating - * some kernel VA space and mapping the pages with pmap_enter(). - * pmap_enter() will map unmanaged pages as non-cacheable. - */ - pa = trunc_page((bpa - busbase) + physbase); - endpa = round_page(((bpa - busbase) + physbase) + size); pa = trunc_page(bpa); endpa = round_page(bpa + size); - *bshp = va + (bpa & PAGE_MASK); - *bshp = pa; *bshp = (vm_offset_t)pmap_mapdev(pa, endpa - pa); return (0); ==== //depot/projects/fast_ipsec/src/sys/arm/xscale/i80321/i80321_timer.c#3 (text+ko) ==== @@ -40,7 +40,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/arm/xscale/i80321/i80321_timer.c,v 1.6 2005/10/03 14:19:55 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/xscale/i80321/i80321_timer.c,v 1.7 2005/10/17 14:51:01 cognet Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -72,8 +72,6 @@ static uint32_t counts_per_hz; -static uint32_t offset = 0; -static uint32_t last = -1; static int ticked = 0; #define COUNTS_PER_SEC 200000000 /* 200MHz */ @@ -83,7 +81,7 @@ i80321_timer_get_timecount, /* get_timecount */ NULL, /* no poll_pps */ ~0u, /* counter_mask */ - COUNTS_PER_SEC, /* frequency */ + COUNTS_PER_SEC * 3, /* frequency */ "i80321 timer", /* name */ 1000 /* quality */ }; @@ -236,19 +234,11 @@ static unsigned i80321_timer_get_timecount(struct timecounter *tc) { - uint32_t cur = tcr0_read(); - - if (cur > last && last != -1) { - offset += counts_per_hz; - if (ticked > 0) - ticked--; - } - if (ticked) { - offset += ticked * counts_per_hz; - ticked = 0; - } - last = cur; - return (counts_per_hz - cur + offset); + uint32_t ret; + + __asm __volatile("mrc p14, 0, %0, c1, c0, 0\n" + : "=r" (ret)); + return (ret); } /* @@ -329,6 +319,13 @@ tc_init(&i80321_timer_timecounter); restore_interrupts(oldirqstate); + rid = 0; + /* Enable the clock count register. */ + __asm __volatile("mrc p14, 0, %0, c0, c0, 0\n" : "=r" (rid)); + rid &= ~(1 << 3); + rid |= (1 << 2) | 1; + __asm __volatile("mcr p14, 0, %0, c0, c0, 0\n" + : : "r" (rid)); } ==== //depot/projects/fast_ipsec/src/sys/boot/i386/boot2/boot2.c#4 (text+ko) ==== @@ -14,7 +14,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/boot/i386/boot2/boot2.c,v 1.76 2005/10/16 01:55:35 sobomax Exp $"); +__FBSDID("$FreeBSD: src/sys/boot/i386/boot2/boot2.c,v 1.78 2005/10/16 20:22:36 sobomax Exp $"); #include <sys/param.h> #include <sys/disklabel.h> @@ -60,15 +60,14 @@ /* 0x12 is reserved for boot programs. */ /* 0x13 is reserved for boot programs. */ #define RBX_PAUSE 0x14 /* -p */ +#define RBX_QUIET 0x15 /* -q */ +#define RBX_NOINTR 0x1c /* -n */ /* 0x1d is reserved for log2(RB_MULTIPLE) and is just misnamed here. */ #define RBX_DUAL 0x1d /* -D */ /* 0x1f is reserved for log2(RB_BOOTINFO). */ -/* group of internal options below */ -#define RBX_NOINTR 0x20 /* -n */ -#define RBX_QUIET 0x21 /* -q */ /* pass: -a, -s, -r, -d, -c, -v, -h, -C, -g, -m, -p, -D */ -#define RBX_MASK 0xffffffff +#define RBX_MASK 0x2011ffff #define PATH_CONFIG "/boot.config" #define PATH_BOOT3 "/boot/loader" @@ -90,7 +89,7 @@ #define TYPE_MAXHARD TYPE_DA #define TYPE_FD 2 -#define OPT_CHECK(opt) ((opts >> (opt)) & 0x1) +#define OPT_CHECK(opt) ((opts >> (opt)) & 1) extern uint32_t _end; @@ -124,7 +123,7 @@ } dsk; static char cmd[512]; static char kname[1024]; -static uint64_t opts; +static uint32_t opts; static int comspeed = SIOSPD; static struct bootinfo bootinfo; static uint8_t ioctrl = IO_KEYBOARD; @@ -273,10 +272,10 @@ for (;;) { if (!autoboot || !OPT_CHECK(RBX_QUIET)) printf("\nFreeBSD/i386 boot\n" - "Default: %u:%s(%u,%c)%s\n" - "boot: ", - dsk.drive & DRV_MASK, dev_nm[dsk.type], dsk.unit, - 'a' + dsk.part, kname); + "Default: %u:%s(%u,%c)%s\n" + "boot: ", + dsk.drive & DRV_MASK, dev_nm[dsk.type], dsk.unit, + 'a' + dsk.part, kname); if (ioctrl & IO_SERIAL) sio_flush(); if (!autoboot || keyhit(5*SECOND)) @@ -300,7 +299,7 @@ static void load(void) { - static union { + union { struct exec ex; Elf32_Ehdr eh; } hdr; @@ -387,7 +386,7 @@ bootinfo.bi_esymtab = VTOP(p); bootinfo.bi_kernelname = VTOP(kname); bootinfo.bi_bios_dev = dsk.drive; - __exec((caddr_t)addr, RB_BOOTINFO | (uint32_t)(opts & RBX_MASK), + __exec((caddr_t)addr, RB_BOOTINFO | (opts & RBX_MASK), MAKEBOOTDEV(dev_maj[dsk.type], 0, dsk.slice, dsk.unit, dsk.part), 0, 0, 0, VTOP(&bootinfo)); } @@ -414,7 +413,7 @@ if (*(uint8_t *)PTOV(0x496) & 0x10) { cp = "yes"; } else { - opts |= (uint64_t)1 << RBX_DUAL | (uint64_t)1 << RBX_SERIAL; + opts |= 1 << RBX_DUAL | 1 << RBX_SERIAL; cp = "no"; } printf("Keyboard: %s\n", cp); @@ -432,10 +431,10 @@ for (i = 0; c != optstr[i]; i++) if (i == NOPT - 1) return -1; - opts ^= (uint64_t)1 << flags[i]; + opts ^= 1 << flags[i]; } - ioctrl = opts & (uint64_t)1 << RBX_DUAL ? (IO_SERIAL|IO_KEYBOARD) : - opts & (uint64_t)1 << RBX_SERIAL ? IO_SERIAL : IO_KEYBOARD; + ioctrl = opts & 1 << RBX_DUAL ? (IO_SERIAL|IO_KEYBOARD) : + opts & 1 << RBX_SERIAL ? IO_SERIAL : IO_KEYBOARD; if (ioctrl & IO_SERIAL) sio_init(115200 / comspeed); } else { ==== //depot/projects/fast_ipsec/src/sys/boot/i386/libi386/smbios.c#2 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/boot/i386/libi386/smbios.c,v 1.2 2005/07/27 19:11:10 jkim Exp $"); +__FBSDID("$FreeBSD: src/sys/boot/i386/libi386/smbios.c,v 1.3 2005/10/18 20:03:31 jkim Exp $"); #include <stand.h> #include <bootstrap.h> @@ -54,6 +54,9 @@ #define SMBIOS_SIG "_SM_" #define SMBIOS_DMI_SIG "_DMI_" +static u_int8_t smbios_enabled_sockets = 0; +static u_int8_t smbios_populated_sockets = 0; + static u_int8_t *smbios_parse_table(const u_int8_t *dmi); static void smbios_setenv(const char *env, const u_int8_t *dmi, const int offset); @@ -66,6 +69,7 @@ u_int8_t *smbios, *dmi, *addr; u_int16_t i, length, count; u_int32_t paddr; + char buf[4]; /* locate and validate the SMBIOS */ smbios = smbios_sigsearch(PTOV(SMBIOS_START), SMBIOS_LENGTH); @@ -79,6 +83,10 @@ for (dmi = addr = PTOV(paddr), i = 0; dmi - addr < length && i < count; i++) dmi = smbios_parse_table(dmi); + sprintf(buf, "%d", smbios_enabled_sockets); + setenv("smbios.socket.enabled", buf, 1); + sprintf(buf, "%d", smbios_populated_sockets); + setenv("smbios.socket.populated", buf, 1); } static u_int8_t * @@ -110,6 +118,30 @@ smbios_setenv("smbios.chassis.version", dmi, 0x06); break; + case 4: /* Type 4: Processor Information */ + /* + * Offset 18h: Processor Status + * + * Bit 7 Reserved, must be 0 + * Bit 6 CPU Socket Populated + * 1 - CPU Socket Populated + * 0 - CPU Socket Unpopulated + * Bit 5:3 Reserved, must be zero + * Bit 2:0 CPU Status + * 0h - Unknown + * 1h - CPU Enabled + * 2h - CPU Disabled by User via BIOS Setup + * 3h - CPU Disabled by BIOS (POST Error) + * 4h - CPU is Idle, waiting to be enabled + * 5-6h - Reserved + * 7h - Other + */ + if ((dmi[0x18] & 0x07) == 1) + smbios_enabled_sockets++; + if (dmi[0x18] & 0x40) + smbios_populated_sockets++; + break; + default: /* skip other types */ break; } ==== //depot/projects/fast_ipsec/src/sys/boot/ofw/libofw/elf_freebsd.c#2 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/boot/ofw/libofw/elf_freebsd.c,v 1.9 2005/05/24 21:43:49 grehan Exp $"); +__FBSDID("$FreeBSD: src/sys/boot/ofw/libofw/elf_freebsd.c,v 1.10 2005/10/20 10:39:09 marius Exp $"); #include <sys/param.h> #include <sys/linker.h> @@ -47,7 +47,6 @@ struct preloaded_file **result) { int r; - void *addr; r = __elfN(loadfile)(filename, dest, result); if (r != 0) ==== //depot/projects/fast_ipsec/src/sys/boot/ofw/libofw/libofw.h#2 (text+ko) ==== @@ -22,7 +22,7 @@ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/sys/boot/ofw/libofw/libofw.h,v 1.10 2005/01/05 22:16:58 imp Exp $ + * $FreeBSD: src/sys/boot/ofw/libofw/libofw.h,v 1.11 2005/10/20 11:14:34 marius Exp $ */ #include "openfirm.h" @@ -31,7 +31,7 @@ struct ofw_devdesc { struct devsw *d_dev; int d_type; - phandle_t d_handle; + ihandle_t d_handle; char d_path[256]; }; ==== //depot/projects/fast_ipsec/src/sys/boot/ofw/libofw/ofw_console.c#2 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/boot/ofw/libofw/ofw_console.c,v 1.10 2005/01/05 22:16:58 imp Exp $"); +__FBSDID("$FreeBSD: src/sys/boot/ofw/libofw/ofw_console.c,v 1.11 2005/10/20 10:39:09 marius Exp $"); #include <sys/types.h> @@ -112,7 +112,6 @@ ofw_cons_poll() { unsigned char ch; - int l; if (saved_char != -1) return 1; ==== //depot/projects/fast_ipsec/src/sys/boot/ofw/libofw/ofw_memory.c#2 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/boot/ofw/libofw/ofw_memory.c,v 1.6 2005/01/05 22:16:58 imp Exp $"); +__FBSDID("$FreeBSD: src/sys/boot/ofw/libofw/ofw_memory.c,v 1.7 2005/10/20 10:39:09 marius Exp $"); #include <sys/param.h> #include <sys/types.h> @@ -120,7 +120,6 @@ { phandle_t memoryp; struct ofw_reg available; - void *base; memoryp = OF_instance_to_package(memory); OF_getprop(memoryp, "available", &available, sizeof(available)); ==== //depot/projects/fast_ipsec/src/sys/boot/ofw/libofw/openfirm.c#2 (text+ko) ==== @@ -56,7 +56,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/boot/ofw/libofw/openfirm.c,v 1.11 2005/01/05 22:16:58 imp Exp $"); +__FBSDID("$FreeBSD: src/sys/boot/ofw/libofw/openfirm.c,v 1.12 2005/10/20 10:39:09 marius Exp $"); #include <machine/stdarg.h> @@ -66,9 +66,6 @@ int (*openfirmware)(void *); -static ihandle_t stdin; -static ihandle_t stdout; - ihandle_t mmu; ihandle_t memory; @@ -396,7 +393,6 @@ phandle_t OF_finddevice(const char *device) { - int i; static struct { cell_t name; cell_t nargs; ==== //depot/projects/fast_ipsec/src/sys/compat/ndis/kern_ndis.c#3 (text+ko) ==== @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/compat/ndis/kern_ndis.c,v 1.87 2005/10/12 03:02:50 wpaul Exp $"); +__FBSDID("$FreeBSD: src/sys/compat/ndis/kern_ndis.c,v 1.88 2005/10/18 19:52:15 wpaul Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -84,7 +84,7 @@ static void ndis_sendrsrcavail_func(ndis_handle); static void ndis_intrsetup(kdpc *, device_object *, irp *, struct ndis_softc *); -static void ndis_return(kdpc *, void *, void *, void *); +static void ndis_return(device_object *, void *); static image_patch_table kernndis_functbl[] = { IMPORT_SFUNC(ndis_status_func, 4), @@ -106,6 +106,18 @@ * Note that we call ourselves 'ndisapi' to avoid a namespace * collision with if_ndis.ko, which internally calls itself * 'ndis.' + * + * Note: some of the subsystems depend on each other, so the + * order in which they're started is important. The order of + * importance is: + * + * HAL - spinlocks and IRQL manipulation + * ntoskrnl - DPC and workitem threads, object waiting + * windrv - driver/device registration + * + * The HAL should also be the last thing shut down, since + * the ntoskrnl subsystem will use spinlocks right up until + * the DPC and workitem threads are terminated. */ static int @@ -117,10 +129,10 @@ switch (cmd) { case MOD_LOAD: /* Initialize subsystems */ + hal_libinit(); + ntoskrnl_libinit(); windrv_libinit(); - hal_libinit(); ndis_libinit(); - ntoskrnl_libinit(); usbd_libinit(); patch = kernndis_functbl; @@ -137,11 +149,11 @@ case MOD_SHUTDOWN: if (TAILQ_FIRST(&ndis_devhead) == NULL) { /* Shut down subsystems */ - hal_libfini(); ndis_libfini(); - ntoskrnl_libfini(); usbd_libfini(); windrv_libfini(); + ntoskrnl_libfini(); + hal_libfini(); patch = kernndis_functbl; while (patch->ipt_func != NULL) { @@ -152,11 +164,11 @@ break; case MOD_UNLOAD: /* Shut down subsystems */ - hal_libfini(); ndis_libfini(); - ntoskrnl_libfini(); usbd_libfini(); windrv_libfini(); + ntoskrnl_libfini(); + hal_libfini(); patch = kernndis_functbl; while (patch->ipt_func != NULL) { @@ -441,32 +453,39 @@ } static void -ndis_return(dpc, arg, sysarg1, sysarg2) - kdpc *dpc; +ndis_return(dobj, arg) + device_object *dobj; void *arg; - void *sysarg1; - void *sysarg2; { - struct ndis_softc *sc; + ndis_miniport_block *block; + ndis_miniport_characteristics *ch; ndis_return_handler returnfunc; ndis_handle adapter; ndis_packet *p; uint8_t irql; + list_entry *l; + block = arg; + ch = IoGetDriverObjectExtension(dobj->do_drvobj, (void *)1); + p = arg; - sc = p->np_softc; - adapter = sc->ndis_block->nmb_miniportadapterctx; + adapter = block->nmb_miniportadapterctx; if (adapter == NULL) return; - returnfunc = sc->ndis_chars->nmc_return_packet_func; + returnfunc = ch->nmc_return_packet_func; - if (NDIS_SERIALIZED(sc->ndis_block)) - KeAcquireSpinLock(&sc->ndis_block->nmb_lock, &irql); - MSCALL2(returnfunc, adapter, p); - if (NDIS_SERIALIZED(sc->ndis_block)) - KeReleaseSpinLock(&sc->ndis_block->nmb_lock, irql); + KeAcquireSpinLock(&block->nmb_returnlock, &irql); + while (!IsListEmpty(&block->nmb_returnlist)) { + l = RemoveHeadList((&block->nmb_returnlist)); + p = CONTAINING_RECORD(l, ndis_packet, np_list); + InitializeListHead((&p->np_list)); + KeReleaseSpinLock(&block->nmb_returnlock, irql); + MSCALL2(returnfunc, adapter, p); + KeAcquireSpinLock(&block->nmb_returnlock, &irql); + } + KeReleaseSpinLock(&block->nmb_returnlock, irql); return; } @@ -477,6 +496,7 @@ void *arg; { ndis_packet *p; + ndis_miniport_block *block; if (arg == NULL) return; @@ -490,8 +510,16 @@ if (p->np_refcnt) return; - KeInitializeDpc(&p->np_dpc, kernndis_functbl[7].ipt_wrap, p); - KeInsertQueueDpc(&p->np_dpc, NULL, NULL); + block = ((struct ndis_softc *)p->np_softc)->ndis_block; + + KeAcquireSpinLockAtDpcLevel(&block->nmb_returnlock); + InitializeListHead((&p->np_list)); + InsertHeadList((&block->nmb_returnlist), (&p->np_list)); + KeReleaseSpinLockFromDpcLevel(&block->nmb_returnlock); + + IoQueueWorkItem(block->nmb_returnitem, + (io_workitem_func)kernndis_functbl[7].ipt_wrap, + WORKQUEUE_CRITICAL, block); return; } @@ -621,8 +649,13 @@ case SYS_RES_IRQ: prd->cprd_type = CmResourceTypeInterrupt; prd->cprd_flags = 0; + /* + * Always mark interrupt resources as + * shared, since in our implementation, + * they will be. + */ prd->cprd_sharedisp = - CmResourceShareDeviceExclusive; + CmResourceShareShared; prd->u.cprd_intr.cprd_level = brle->start; prd->u.cprd_intr.cprd_vector = brle->start; prd->u.cprd_intr.cprd_affinity = 0; @@ -1087,8 +1120,12 @@ #ifdef NDIS_REAP_TIMERS ndis_miniport_timer *t, *n; #endif + ndis_miniport_block *block; + int empty = 0; + uint8_t irql; sc = arg; + block = sc->ndis_block; #ifdef NDIS_REAP_TIMERS /* @@ -1111,6 +1148,19 @@ if (!cold) KeFlushQueuedDpcs(); + /* + * Wait for all packets to be returned. + */ + + while (1) { + KeAcquireSpinLock(&block->nmb_returnlock, &irql); + empty = IsListEmpty(&block->nmb_returnlist); + KeReleaseSpinLock(&block->nmb_returnlock, irql); + if (empty) + break; + NdisMSleep(1000); + } + NDIS_LOCK(sc); adapter = sc->ndis_block->nmb_miniportadapterctx; if (adapter == NULL) { @@ -1398,6 +1448,17 @@ ndis_miniport_block *block; struct ndis_softc *sc; uint32_t status; + int error; + + sc = device_get_softc(pdo->do_devext); + + if (sc->ndis_iftype == PCMCIABus || sc->ndis_iftype == PCIBus) { + error = bus_setup_intr(sc->ndis_dev, sc->ndis_irq, + INTR_TYPE_NET | INTR_MPSAFE, + ntoskrnl_intr, NULL, &sc->ndis_intrhand); + if (error) + return(NDIS_STATUS_FAILURE); + } status = IoCreateDevice(drv, sizeof(ndis_miniport_block), NULL, FILE_DEVICE_UNKNOWN, 0, FALSE, &fdo); @@ -1412,17 +1473,19 @@ block->nmb_physdeviceobj = pdo; block->nmb_nextdeviceobj = IoAttachDeviceToDeviceStack(fdo, pdo); KeInitializeSpinLock(&block->nmb_lock); - InitializeListHead(&block->nmb_parmlist); + KeInitializeSpinLock(&block->nmb_returnlock); KeInitializeEvent(&block->nmb_getevent, EVENT_TYPE_NOTIFY, TRUE); KeInitializeEvent(&block->nmb_setevent, EVENT_TYPE_NOTIFY, TRUE); KeInitializeEvent(&block->nmb_resetevent, EVENT_TYPE_NOTIFY, TRUE); + InitializeListHead(&block->nmb_parmlist); + InitializeListHead(&block->nmb_returnlist); + block->nmb_returnitem = IoAllocateWorkItem(fdo); /* * Stash pointers to the miniport block and miniport * characteristics info in the if_ndis softc so the * UNIX wrapper driver can get to them later. */ - sc = device_get_softc(pdo->do_devext); sc->ndis_block = block; sc->ndis_chars = IoGetDriverObjectExtension(drv, (void *)1); >>> TRUNCATED FOR MAIL (1000 lines) <<<
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200510221313.j9MDDHAZ006238>