PERFORCE change 85698 for review
Bjoern A. Zeeb
bz at FreeBSD.org
Sat Oct 22 06:13:32 PDT 2005
http://perforce.freebsd.org/chv.cgi?CH=85698
Change 85698 by bz at 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) <<<
More information about the p4-projects
mailing list