From owner-p4-projects@FreeBSD.ORG Tue Nov 8 17:41:36 2005 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id B2CF516A422; Tue, 8 Nov 2005 17:41:35 +0000 (GMT) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 826E816A421 for ; Tue, 8 Nov 2005 17:41:35 +0000 (GMT) (envelope-from jhb@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id BD01D43D69 for ; Tue, 8 Nov 2005 17:41:30 +0000 (GMT) (envelope-from jhb@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.1/8.13.1) with ESMTP id jA8HfUD3018641 for ; Tue, 8 Nov 2005 17:41:30 GMT (envelope-from jhb@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.1/8.13.1/Submit) id jA8HfU0O018638 for perforce@freebsd.org; Tue, 8 Nov 2005 17:41:30 GMT (envelope-from jhb@freebsd.org) Date: Tue, 8 Nov 2005 17:41:30 GMT Message-Id: <200511081741.jA8HfU0O018638@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jhb@freebsd.org using -f From: John Baldwin To: Perforce Change Reviews Cc: Subject: PERFORCE change 86473 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 Nov 2005 17:41:36 -0000 http://perforce.freebsd.org/chv.cgi?CH=86473 Change 86473 by jhb@jhb_slimer on 2005/11/08 17:40:52 IFC @86472. Affected files ... .. //depot/projects/smpng/sys/alpha/alpha/mp_machdep.c#34 integrate .. //depot/projects/smpng/sys/alpha/alpha/pmap.c#74 integrate .. //depot/projects/smpng/sys/alpha/conf/GENERIC#51 integrate .. //depot/projects/smpng/sys/alpha/include/smp.h#6 integrate .. //depot/projects/smpng/sys/amd64/amd64/io_apic.c#11 integrate .. //depot/projects/smpng/sys/amd64/amd64/pmap.c#49 integrate .. //depot/projects/smpng/sys/amd64/conf/GENERIC#39 integrate .. //depot/projects/smpng/sys/amd64/ia32/ia32_signal.c#13 integrate .. //depot/projects/smpng/sys/amd64/linux32/linux32_sysvec.c#11 integrate .. //depot/projects/smpng/sys/arm/arm/machdep.c#15 integrate .. //depot/projects/smpng/sys/arm/arm/pmap.c#22 integrate .. //depot/projects/smpng/sys/arm/include/pcpu.h#3 integrate .. //depot/projects/smpng/sys/arm/include/pmap.h#13 integrate .. //depot/projects/smpng/sys/boot/i386/boot2/boot2.c#29 integrate .. //depot/projects/smpng/sys/compat/freebsd32/freebsd32_misc.c#29 integrate .. //depot/projects/smpng/sys/compat/ia32/ia32_sysvec.c#13 integrate .. //depot/projects/smpng/sys/compat/ndis/ndis_var.h#25 integrate .. //depot/projects/smpng/sys/compat/ndis/ntoskrnl_var.h#21 integrate .. //depot/projects/smpng/sys/compat/ndis/subr_hal.c#19 integrate .. //depot/projects/smpng/sys/compat/ndis/subr_ntoskrnl.c#37 integrate .. //depot/projects/smpng/sys/conf/Makefile.alpha#26 integrate .. //depot/projects/smpng/sys/conf/Makefile.amd64#13 integrate .. //depot/projects/smpng/sys/conf/Makefile.arm#14 integrate .. //depot/projects/smpng/sys/conf/Makefile.i386#24 integrate .. //depot/projects/smpng/sys/conf/Makefile.ia64#31 integrate .. //depot/projects/smpng/sys/conf/Makefile.pc98#23 integrate .. //depot/projects/smpng/sys/conf/Makefile.powerpc#32 integrate .. //depot/projects/smpng/sys/conf/Makefile.sparc64#27 integrate .. //depot/projects/smpng/sys/conf/files.powerpc#24 integrate .. //depot/projects/smpng/sys/contrib/dev/acpica/dbcmds.c#23 integrate .. //depot/projects/smpng/sys/contrib/dev/acpica/rscalc.c#14 integrate .. //depot/projects/smpng/sys/contrib/dev/acpica/rsmisc.c#11 integrate .. //depot/projects/smpng/sys/dev/aac/aac_pci.c#41 integrate .. //depot/projects/smpng/sys/dev/acpica/acpi.c#89 integrate .. //depot/projects/smpng/sys/dev/acpica/acpi_pcib.c#33 integrate .. //depot/projects/smpng/sys/dev/acpica/acpi_resource.c#29 integrate .. //depot/projects/smpng/sys/dev/amr/amr.c#34 integrate .. //depot/projects/smpng/sys/dev/amr/amr_cam.c#15 integrate .. //depot/projects/smpng/sys/dev/amr/amr_pci.c#23 integrate .. //depot/projects/smpng/sys/dev/amr/amrvar.h#20 integrate .. //depot/projects/smpng/sys/dev/fb/boot_font.c#5 integrate .. //depot/projects/smpng/sys/dev/if_ndis/if_ndis.c#38 integrate .. //depot/projects/smpng/sys/dev/pccbb/pccbbdevid.h#17 integrate .. //depot/projects/smpng/sys/dev/puc/puc.c#25 integrate .. //depot/projects/smpng/sys/dev/puc/pucdata.c#32 integrate .. //depot/projects/smpng/sys/dev/rp/rp.c#21 integrate .. //depot/projects/smpng/sys/dev/si/si_pci.c#6 integrate .. //depot/projects/smpng/sys/dev/si/sireg.h#3 integrate .. //depot/projects/smpng/sys/dev/sound/isa/mss.c#26 integrate .. //depot/projects/smpng/sys/dev/sound/pci/als4000.c#18 integrate .. //depot/projects/smpng/sys/dev/sound/pcm/dsp.c#30 integrate .. //depot/projects/smpng/sys/dev/sound/pcm/mixer.c#22 integrate .. //depot/projects/smpng/sys/dev/usb/ubser.c#11 integrate .. //depot/projects/smpng/sys/i386/conf/GENERIC#68 integrate .. //depot/projects/smpng/sys/i386/i386/pmap.c#89 integrate .. //depot/projects/smpng/sys/i386/i386/trap.c#88 integrate .. //depot/projects/smpng/sys/i386/pci/pci_cfgreg.c#30 integrate .. //depot/projects/smpng/sys/ia64/ia64/pmap.c#74 integrate .. //depot/projects/smpng/sys/kern/kern_exec.c#91 integrate .. //depot/projects/smpng/sys/kern/kern_exit.c#104 integrate .. //depot/projects/smpng/sys/kern/kern_kse.c#27 integrate .. //depot/projects/smpng/sys/kern/kern_malloc.c#41 integrate .. //depot/projects/smpng/sys/kern/kern_mbuf.c#11 integrate .. //depot/projects/smpng/sys/kern/kern_proc.c#79 integrate .. //depot/projects/smpng/sys/kern/kern_resource.c#56 integrate .. //depot/projects/smpng/sys/kern/kern_sig.c#112 integrate .. //depot/projects/smpng/sys/kern/kern_thr.c#29 integrate .. //depot/projects/smpng/sys/kern/kern_thread.c#82 integrate .. //depot/projects/smpng/sys/kern/kern_time.c#38 integrate .. //depot/projects/smpng/sys/kern/subr_kdb.c#16 integrate .. //depot/projects/smpng/sys/kern/subr_pcpu.c#8 integrate .. //depot/projects/smpng/sys/kern/uipc_mbuf.c#40 integrate .. //depot/projects/smpng/sys/kern/vfs_aio.c#63 integrate .. //depot/projects/smpng/sys/kern/vfs_mount.c#51 integrate .. //depot/projects/smpng/sys/modules/i2c/controllers/viapm/Makefile#2 integrate .. //depot/projects/smpng/sys/net/if_vlan.c#41 integrate .. //depot/projects/smpng/sys/netgraph/ng_eiface.c#23 integrate .. //depot/projects/smpng/sys/netgraph/ng_ether.c#28 integrate .. //depot/projects/smpng/sys/netgraph/ng_fec.c#17 integrate .. //depot/projects/smpng/sys/netinet/if_ether.c#42 integrate .. //depot/projects/smpng/sys/nfsclient/nfs_socket.c#38 integrate .. //depot/projects/smpng/sys/nfsclient/nfs_vnops.c#54 integrate .. //depot/projects/smpng/sys/powerpc/include/mmuvar.h#1 branch .. //depot/projects/smpng/sys/powerpc/include/pmap.h#16 integrate .. //depot/projects/smpng/sys/powerpc/powerpc/machdep.c#65 integrate .. //depot/projects/smpng/sys/powerpc/powerpc/mmu_if.m#1 branch .. //depot/projects/smpng/sys/powerpc/powerpc/mmu_oea.c#1 branch .. //depot/projects/smpng/sys/powerpc/powerpc/pmap.c#57 integrate .. //depot/projects/smpng/sys/powerpc/powerpc/pmap_dispatch.c#1 branch .. //depot/projects/smpng/sys/sparc64/include/smp.h#16 integrate .. //depot/projects/smpng/sys/sparc64/sparc64/mp_machdep.c#26 integrate .. //depot/projects/smpng/sys/sys/mbuf.h#55 integrate .. //depot/projects/smpng/sys/sys/mount.h#44 integrate .. //depot/projects/smpng/sys/sys/proc.h#155 integrate .. //depot/projects/smpng/sys/sys/signal.h#21 integrate .. //depot/projects/smpng/sys/sys/signalvar.h#27 integrate .. //depot/projects/smpng/sys/sys/sysent.h#14 integrate .. //depot/projects/smpng/sys/ufs/ufs/ufs_extattr.c#37 integrate .. //depot/projects/smpng/sys/vm/vm_page.c#67 integrate Differences ... ==== //depot/projects/smpng/sys/alpha/alpha/mp_machdep.c#34 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/alpha/alpha/mp_machdep.c,v 1.56 2005/04/04 21:53:51 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/alpha/alpha/mp_machdep.c,v 1.57 2005/11/03 21:08:19 jhb Exp $"); #include "opt_kstack_pages.h" @@ -62,6 +62,7 @@ static struct mtx ap_boot_mtx; u_int64_t boot_cpu_id; +struct pcb stoppcbs[MAXCPU]; static void release_aps(void *dummy); static int smp_cpu_enabled(struct pcs *pcsp); @@ -543,11 +544,12 @@ case IPI_STOP: CTR0(KTR_SMP, "IPI_STOP"); - atomic_set_int(&stopped_cpus, cpumask); + savectx(&stoppcbs[PCPU_GET(cpuid)]); + atomic_set_acq_int(&stopped_cpus, cpumask); while ((started_cpus & cpumask) == 0) - alpha_mb(); - atomic_clear_int(&started_cpus, cpumask); - atomic_clear_int(&stopped_cpus, cpumask); + cpu_spinwait(); + atomic_clear_rel_int(&started_cpus, cpumask); + atomic_clear_rel_int(&stopped_cpus, cpumask); break; } } ==== //depot/projects/smpng/sys/alpha/alpha/pmap.c#74 (text+ko) ==== @@ -148,7 +148,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/alpha/alpha/pmap.c,v 1.182 2005/11/02 08:23:28 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/alpha/alpha/pmap.c,v 1.183 2005/11/04 18:03:23 alc Exp $"); #include #include @@ -186,8 +186,6 @@ #define PMAP_DIAGNOSTIC #endif -#define MINPV 2048 - #if 0 #define PMAP_DIAGNOSTIC #define PMAP_DEBUG @@ -572,28 +570,24 @@ void pmap_init(void) { + int shpgperproc = PMAP_SHPGPERPROC; /* - * init the pv free list + * Initialize the address space (zone) for the pv entries. Set a + * high water mark so that the system can recover from excessive + * numbers of pv entries. */ - pvzone = uma_zcreate("PV ENTRY", sizeof (struct pv_entry), NULL, NULL, + pvzone = uma_zcreate("PV ENTRY", sizeof(struct pv_entry), NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, UMA_ZONE_VM | UMA_ZONE_NOFREE); - uma_prealloc(pvzone, MINPV); + TUNABLE_INT_FETCH("vm.pmap.shpgperproc", &shpgperproc); + pv_entry_max = shpgperproc * maxproc + cnt.v_page_count; + TUNABLE_INT_FETCH("vm.pmap.pv_entries", &pv_entry_max); + pv_entry_high_water = 9 * (pv_entry_max / 10); } -/* - * Initialize the address space (zone) for the pv_entries. Set a - * high water mark so that the system can recover from excessive - * numbers of pv entries. - */ void pmap_init2() { - int shpgperproc = PMAP_SHPGPERPROC; - - TUNABLE_INT_FETCH("vm.pmap.shpgperproc", &shpgperproc); - pv_entry_max = shpgperproc * maxproc + vm_page_array_size; - pv_entry_high_water = 9 * (pv_entry_max / 10); } @@ -1313,8 +1307,7 @@ get_pv_entry(void) { pv_entry_count++; - if (pv_entry_high_water && - (pv_entry_count > pv_entry_high_water) && + if ((pv_entry_count > pv_entry_high_water) && (pmap_pagedaemon_waken == 0)) { pmap_pagedaemon_waken = 1; wakeup (&vm_pages_needed); ==== //depot/projects/smpng/sys/alpha/conf/GENERIC#51 (text+ko) ==== @@ -18,7 +18,7 @@ # # For hardware specific information check HARDWARE.TXT # -# $FreeBSD: src/sys/alpha/conf/GENERIC,v 1.188 2005/09/24 16:47:34 wilko Exp $ +# $FreeBSD: src/sys/alpha/conf/GENERIC,v 1.189 2005/11/05 19:48:53 marcel Exp $ machine alpha cpu EV4 @@ -143,8 +143,9 @@ device mcclock # MC146818 real time clock device -# Serial (COM) ports (required) +# Serial (COM) ports device sio # 8250, 16[45]50 based serial ports +device uart # Generic UART driver # Parallel port device ppc @@ -155,7 +156,7 @@ # If you've got a "dumb" serial or parallel PCI card that is # supported by the puc(4) glue driver, uncomment the following -# line to enable it (connects to the sio and/or ppc drivers): +# line to enable it (connects to sio, uart and/or ppc drivers): #device puc # PCI Ethernet NICs. ==== //depot/projects/smpng/sys/alpha/include/smp.h#6 (text+ko) ==== @@ -6,7 +6,7 @@ * this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp * ---------------------------------------------------------------------------- * - * $FreeBSD: src/sys/alpha/include/smp.h,v 1.8 2005/01/05 20:05:50 imp Exp $ + * $FreeBSD: src/sys/alpha/include/smp.h,v 1.9 2005/11/03 21:08:19 jhb Exp $ * */ @@ -27,6 +27,7 @@ #ifndef LOCORE extern u_int64_t boot_cpu_id; +extern struct pcb stoppcbs[]; void ipi_selected(u_int cpus, u_int64_t ipi); void ipi_all(u_int64_t ipi); ==== //depot/projects/smpng/sys/amd64/amd64/io_apic.c#11 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/io_apic.c,v 1.18 2005/11/02 20:11:46 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/io_apic.c,v 1.19 2005/11/04 23:02:28 peter Exp $"); #include "opt_atpic.h" #include "opt_isa.h" @@ -65,7 +65,7 @@ #define TODO printf("%s: not implemented!\n", __func__) -static MALLOC_DEFINE(M_IOAPIC, "ioapic", "I/O APIC structures"); +static MALLOC_DEFINE(M_IOAPIC, "io_apic", "I/O APIC structures"); /* * I/O APIC interrupt source driver. Each pin is assigned an IRQ cookie ==== //depot/projects/smpng/sys/amd64/amd64/pmap.c#49 (text+ko) ==== @@ -77,7 +77,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.531 2005/10/31 21:25:33 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.532 2005/11/04 18:03:23 alc Exp $"); /* * Manages physical address maps. @@ -152,8 +152,6 @@ #define PMAP_DIAGNOSTIC #endif -#define MINPV 2048 - #if !defined(PMAP_DIAGNOSTIC) #define PMAP_INLINE __inline #else @@ -567,30 +565,25 @@ void pmap_init(void) { + int shpgperproc = PMAP_SHPGPERPROC; /* - * init the pv free list + * Initialize the address space (zone) for the pv entries. Set a + * high water mark so that the system can recover from excessive + * numbers of pv entries. */ - pvzone = uma_zcreate("PV ENTRY", sizeof (struct pv_entry), NULL, NULL, + pvzone = uma_zcreate("PV ENTRY", sizeof(struct pv_entry), NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, UMA_ZONE_VM | UMA_ZONE_NOFREE); - uma_prealloc(pvzone, MINPV); + TUNABLE_INT_FETCH("vm.pmap.shpgperproc", &shpgperproc); + pv_entry_max = shpgperproc * maxproc + cnt.v_page_count; + TUNABLE_INT_FETCH("vm.pmap.pv_entries", &pv_entry_max); + pv_entry_high_water = 9 * (pv_entry_max / 10); + uma_zone_set_obj(pvzone, &pvzone_obj, pv_entry_max); } -/* - * Initialize the address space (zone) for the pv_entries. Set a - * high water mark so that the system can recover from excessive - * numbers of pv entries. - */ void pmap_init2() { - int shpgperproc = PMAP_SHPGPERPROC; - - TUNABLE_INT_FETCH("vm.pmap.shpgperproc", &shpgperproc); - pv_entry_max = shpgperproc * maxproc + vm_page_array_size; - TUNABLE_INT_FETCH("vm.pmap.pv_entries", &pv_entry_max); - pv_entry_high_water = 9 * (pv_entry_max / 10); - uma_zone_set_obj(pvzone, &pvzone_obj, pv_entry_max); } @@ -1442,8 +1435,7 @@ get_pv_entry(void) { pv_entry_count++; - if (pv_entry_high_water && - (pv_entry_count > pv_entry_high_water) && + if ((pv_entry_count > pv_entry_high_water) && (pmap_pagedaemon_waken == 0)) { pmap_pagedaemon_waken = 1; wakeup (&vm_pages_needed); ==== //depot/projects/smpng/sys/amd64/conf/GENERIC#39 (text+ko) ==== @@ -16,7 +16,7 @@ # If you are in doubt as to the purpose or necessity of a line, check first # in NOTES. # -# $FreeBSD: src/sys/amd64/conf/GENERIC,v 1.445 2005/11/01 22:59:02 jhb Exp $ +# $FreeBSD: src/sys/amd64/conf/GENERIC,v 1.446 2005/11/05 19:48:53 marcel Exp $ machine amd64 cpu HAMMER @@ -164,6 +164,7 @@ # Serial (COM) ports device sio # 8250, 16[45]50 based serial ports +device uart # Generic UART driver # Parallel port device ppc @@ -175,7 +176,7 @@ # If you've got a "dumb" serial or parallel PCI card that is # supported by the puc(4) glue driver, uncomment the following -# line to enable it (connects to the sio and/or ppc drivers): +# line to enable it (connects to sio, uart and/or ppc drivers): #device puc # PCI Ethernet NICs. ==== //depot/projects/smpng/sys/amd64/ia32/ia32_signal.c#13 (text+ko) ==== @@ -32,7 +32,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/ia32/ia32_signal.c,v 1.12 2005/10/14 12:43:43 davidxu Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/ia32/ia32_signal.c,v 1.13 2005/11/04 20:32:26 ru Exp $"); #include "opt_compat.h" @@ -752,7 +752,7 @@ dst->si_uid = src->si_uid; dst->si_status = src->si_status; dst->si_addr = dst->si_addr; - dst->si_value.sigval_int = src->si_value.sigval_int; + dst->si_value.sigval_int = src->si_value.sival_int; dst->si_band = src->si_band; dst->__spare__[0] = src->si_trapno; } ==== //depot/projects/smpng/sys/amd64/linux32/linux32_sysvec.c#11 (text+ko) ==== @@ -31,7 +31,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/linux32/linux32_sysvec.c,v 1.11 2005/10/14 20:22:57 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/linux32/linux32_sysvec.c,v 1.12 2005/11/02 21:18:07 ps Exp $"); /* XXX we use functions that might not exist. */ #include "opt_compat.h" @@ -121,7 +121,7 @@ static void linux_sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask); static void exec_linux_setregs(struct thread *td, u_long entry, u_long stack, u_long ps_strings); -static void linux32_fixlimits(struct image_params *imgp); +static void linux32_fixlimits(struct proc *p); /* * Linux syscalls return negative errno's, we do positive and map them @@ -953,9 +953,8 @@ * XXX copied from ia32_sysvec.c. */ static void -linux32_fixlimits(struct image_params *imgp) +linux32_fixlimits(struct proc *p) { - struct proc *p = imgp->proc; struct plimit *oldlim, *newlim; if (linux32_maxdsiz == 0 && linux32_maxssiz == 0 && ==== //depot/projects/smpng/sys/arm/arm/machdep.c#15 (text+ko) ==== @@ -44,7 +44,7 @@ #include "opt_compat.h" #include -__FBSDID("$FreeBSD: src/sys/arm/arm/machdep.c,v 1.18 2005/10/14 12:43:44 davidxu Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/machdep.c,v 1.19 2005/11/06 16:10:28 cognet Exp $"); #include #include @@ -244,6 +244,7 @@ cpu_setup(""); identify_arm_cpu(); thread0.td_frame = (struct trapframe *)pcb->un_32.pcb32_sp - 1; + pmap_postinit(); #ifdef ARM_CACHE_LOCK_ENABLE pmap_kenter_user(ARM_TP_ADDRESS, ARM_TP_ADDRESS); arm_lock_cache_line(ARM_TP_ADDRESS); ==== //depot/projects/smpng/sys/arm/arm/pmap.c#22 (text+ko) ==== @@ -147,7 +147,7 @@ #include "opt_vm.h" #include -__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.39 2005/10/23 23:09:14 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.40 2005/11/06 16:10:28 cognet Exp $"); #include #include #include @@ -398,11 +398,6 @@ */ #define PV_BEEN_REFD(f) (((f) & PVF_REF) != 0) -/* - * Data for the pv entry allocation mechanism - */ -#define MINPV 2048 - #ifndef PMAP_SHPGPERPROC #define PMAP_SHPGPERPROC 200 #endif @@ -1949,6 +1944,7 @@ void pmap_init(void) { + int shpgperproc = PMAP_SHPGPERPROC; PDEBUG(1, printf("pmap_init: phys_start = %08x\n")); @@ -1957,12 +1953,24 @@ */ pvzone = uma_zcreate("PV ENTRY", sizeof (struct pv_entry), NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, UMA_ZONE_VM | UMA_ZONE_NOFREE); - uma_prealloc(pvzone, MINPV); /* * Now it is safe to enable pv_table recording. */ PDEBUG(1, printf("pmap_init: done!\n")); + TUNABLE_INT_FETCH("vm.pmap.shpgperproc", &shpgperproc); + + pv_entry_max = shpgperproc * maxproc + vm_page_array_size; + pv_entry_high_water = 9 * (pv_entry_max / 10); + l2zone = uma_zcreate("L2 Table", L2_TABLE_SIZE_REAL, pmap_l2ptp_ctor, + NULL, NULL, NULL, UMA_ALIGN_PTR, UMA_ZONE_VM | UMA_ZONE_NOFREE); + l2table_zone = uma_zcreate("L2 Table", sizeof(struct l2_dtable), + NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, + UMA_ZONE_VM | UMA_ZONE_NOFREE); + + uma_zone_set_obj(pvzone, &pvzone_obj, pv_entry_max); + uma_zone_set_obj(l2zone, &l2zone_obj, pv_entry_max); + } int @@ -2190,15 +2198,14 @@ return (rv); } -/* - * Initialize the address space (zone) for the pv_entries. Set a - * high water mark so that the system can recover from excessive - * numbers of pv entries. - */ +void +pmap_init2(void) +{ +} + void -pmap_init2() +pmap_postinit(void) { - int shpgperproc = PMAP_SHPGPERPROC; struct l2_bucket *l2b; struct l1_ttable *l1; pd_entry_t *pl1pt; @@ -2206,21 +2213,6 @@ vm_offset_t va, eva; u_int loop, needed; - TUNABLE_INT_FETCH("vm.pmap.shpgperproc", &shpgperproc); - - pv_entry_max = shpgperproc * maxproc + vm_page_array_size; - pv_entry_high_water = 9 * (pv_entry_max / 10); - l2zone = uma_zcreate("L2 Table", L2_TABLE_SIZE_REAL, pmap_l2ptp_ctor, - NULL, NULL, NULL, UMA_ALIGN_PTR, UMA_ZONE_VM | UMA_ZONE_NOFREE); - uma_prealloc(l2zone, 4096); - l2table_zone = uma_zcreate("L2 Table", sizeof(struct l2_dtable), - NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, - UMA_ZONE_VM | UMA_ZONE_NOFREE); - uma_prealloc(l2table_zone, 1024); - - uma_zone_set_obj(pvzone, &pvzone_obj, pv_entry_max); - uma_zone_set_obj(l2zone, &l2zone_obj, pv_entry_max); - needed = (maxproc / PMAP_DOMAINS) + ((maxproc % PMAP_DOMAINS) ? 1 : 0); needed -= 1; l1 = malloc(sizeof(*l1) * needed, M_VMPMAP, M_WAITOK); @@ -3787,8 +3779,7 @@ pv_entry_t ret_value; pv_entry_count++; - if (pv_entry_high_water && - (pv_entry_count > pv_entry_high_water) && + if ((pv_entry_count > pv_entry_high_water) && (pmap_pagedaemon_waken == 0)) { pmap_pagedaemon_waken = 1; wakeup (&vm_pages_needed); ==== //depot/projects/smpng/sys/arm/include/pcpu.h#3 (text+ko) ==== @@ -24,7 +24,7 @@ * SUCH DAMAGE. * * from: FreeBSD: src/sys/i386/include/globaldata.h,v 1.27 2001/04/27 - * $FreeBSD: src/sys/arm/include/pcpu.h,v 1.2 2004/11/04 19:19:44 cognet Exp $ + * $FreeBSD: src/sys/arm/include/pcpu.h,v 1.3 2005/11/08 13:01:29 cognet Exp $ */ #ifndef _MACHINE_PCPU_H_ @@ -32,7 +32,6 @@ #ifdef _KERNEL -#include #include #define ALT_STACK_SIZE 128 ==== //depot/projects/smpng/sys/arm/include/pmap.h#13 (text+ko) ==== @@ -44,7 +44,7 @@ * from: @(#)pmap.h 7.4 (Berkeley) 5/12/91 * from: FreeBSD: src/sys/i386/include/pmap.h,v 1.70 2000/11/30 * - * $FreeBSD: src/sys/arm/include/pmap.h,v 1.12 2005/10/04 16:29:31 cognet Exp $ + * $FreeBSD: src/sys/arm/include/pmap.h,v 1.13 2005/11/06 16:10:27 cognet Exp $ */ #ifndef _MACHINE_PMAP_H_ @@ -509,6 +509,8 @@ extern char *_tmppt; +void pmap_postinit(void); + #ifdef ARM_USE_SMALL_ALLOC void arm_add_smallalloc_pages(void *, void *, int, int); void arm_busy_pages(void); ==== //depot/projects/smpng/sys/boot/i386/boot2/boot2.c#29 (text+ko) ==== @@ -14,7 +14,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/boot/i386/boot2/boot2.c,v 1.78 2005/10/16 20:22:36 sobomax Exp $"); +__FBSDID("$FreeBSD: src/sys/boot/i386/boot2/boot2.c,v 1.79 2005/11/03 07:35:36 ru Exp $"); #include #include @@ -67,7 +67,12 @@ /* 0x1f is reserved for log2(RB_BOOTINFO). */ /* pass: -a, -s, -r, -d, -c, -v, -h, -C, -g, -m, -p, -D */ -#define RBX_MASK 0x2011ffff +#define RBX_MASK (OPT_SET(RBX_ASKNAME) | OPT_SET(RBX_SINGLE) | \ + OPT_SET(RBX_DFLTROOT) | OPT_SET(RBX_KDB ) | \ + OPT_SET(RBX_CONFIG) | OPT_SET(RBX_VERBOSE) | \ + OPT_SET(RBX_SERIAL) | OPT_SET(RBX_CDROM) | \ + OPT_SET(RBX_GDB ) | OPT_SET(RBX_MUTE) | \ + OPT_SET(RBX_PAUSE) | OPT_SET(RBX_DUAL)) #define PATH_CONFIG "/boot.config" #define PATH_BOOT3 "/boot/loader" @@ -89,7 +94,8 @@ #define TYPE_MAXHARD TYPE_DA #define TYPE_FD 2 -#define OPT_CHECK(opt) ((opts >> (opt)) & 1) +#define OPT_SET(opt) (1 << (opt)) +#define OPT_CHECK(opt) ((opts) & OPT_SET(opt)) extern uint32_t _end; @@ -413,7 +419,7 @@ if (*(uint8_t *)PTOV(0x496) & 0x10) { cp = "yes"; } else { - opts |= 1 << RBX_DUAL | 1 << RBX_SERIAL; + opts |= OPT_SET(RBX_DUAL) | OPT_SET(RBX_SERIAL); cp = "no"; } printf("Keyboard: %s\n", cp); @@ -431,10 +437,10 @@ for (i = 0; c != optstr[i]; i++) if (i == NOPT - 1) return -1; - opts ^= 1 << flags[i]; + opts ^= OPT_SET(flags[i]); } - ioctrl = opts & 1 << RBX_DUAL ? (IO_SERIAL|IO_KEYBOARD) : - opts & 1 << RBX_SERIAL ? IO_SERIAL : IO_KEYBOARD; + ioctrl = OPT_CHECK(RBX_DUAL) ? (IO_SERIAL|IO_KEYBOARD) : + OPT_CHECK(RBX_SERIAL) ? IO_SERIAL : IO_KEYBOARD; if (ioctrl & IO_SERIAL) sio_init(115200 / comspeed); } else { ==== //depot/projects/smpng/sys/compat/freebsd32/freebsd32_misc.c#29 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/compat/freebsd32/freebsd32_misc.c,v 1.46 2005/10/31 21:09:56 ps Exp $"); +__FBSDID("$FreeBSD: src/sys/compat/freebsd32/freebsd32_misc.c,v 1.47 2005/11/06 18:12:43 ps Exp $"); #include "opt_compat.h" @@ -1033,7 +1033,7 @@ error = freebsd32_copyoutmsghdr(&msg, uap->msg); if (error == 0) - error = freebsd32_copyoutiov(iov, iov->iov_len, + error = freebsd32_copyoutiov(iov, m32.msg_iovlen, (struct iovec32 *)(uintptr_t)m32.msg_iov, EMSGSIZE); } free(iov, M_IOV); ==== //depot/projects/smpng/sys/compat/ia32/ia32_sysvec.c#13 (text+ko) ==== @@ -26,7 +26,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/compat/ia32/ia32_sysvec.c,v 1.20 2005/01/29 23:11:58 sobomax Exp $"); +__FBSDID("$FreeBSD: src/sys/compat/ia32/ia32_sysvec.c,v 1.21 2005/11/02 21:18:07 ps Exp $"); #include "opt_compat.h" @@ -93,7 +93,7 @@ #endif static register_t *ia32_copyout_strings(struct image_params *imgp); -static void ia32_fixlimits(struct image_params *imgp); +static void ia32_fixlimits(struct proc *p); extern struct sysent freebsd32_sysent[]; @@ -278,9 +278,8 @@ SYSCTL_ULONG(_compat_ia32, OID_AUTO, maxvmem, CTLFLAG_RW, &ia32_maxvmem, 0, ""); static void -ia32_fixlimits(struct image_params *imgp) +ia32_fixlimits(struct proc *p) { - struct proc *p = imgp->proc; struct plimit *oldlim, *newlim; if (ia32_maxdsiz == 0 && ia32_maxssiz == 0 && ia32_maxvmem == 0) ==== //depot/projects/smpng/sys/compat/ndis/ndis_var.h#25 (text+ko) ==== @@ -29,7 +29,7 @@ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF * THE POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/sys/compat/ndis/ndis_var.h,v 1.45 2005/11/02 18:01:04 wpaul Exp $ + * $FreeBSD: src/sys/compat/ndis/ndis_var.h,v 1.46 2005/11/07 16:57:14 wpaul Exp $ */ #ifndef _NDIS_VAR_H_ @@ -1332,7 +1332,7 @@ typedef struct ndis_packet_pool ndis_packet_pool; /* mbuf ext type for NDIS */ -#define EXT_NDIS 0x999 +#define EXT_NDIS EXT_NET_DRV /* mtx type for NDIS */ #define MTX_NDIS_LOCK "NDIS lock" ==== //depot/projects/smpng/sys/compat/ndis/ntoskrnl_var.h#21 (text+ko) ==== @@ -29,7 +29,7 @@ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF * THE POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/sys/compat/ndis/ntoskrnl_var.h,v 1.41 2005/10/26 06:52:57 wpaul Exp $ + * $FreeBSD: src/sys/compat/ndis/ntoskrnl_var.h,v 1.42 2005/11/06 19:38:33 wpaul Exp $ */ #ifndef _NTOSKRNL_VAR_H_ @@ -1196,6 +1196,7 @@ #define STATUS_MUTANT_NOT_OWNED 0xC0000046 #define STATUS_INVALID_PARAMETER_2 0xC00000F0 #define STATUS_INSUFFICIENT_RESOURCES 0xC000009A +#define STATUS_NOT_FOUND 0xC0000225 #define STATUS_WAIT_0 0x00000000 ==== //depot/projects/smpng/sys/compat/ndis/subr_hal.c#19 (text+ko) ==== @@ -31,7 +31,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/compat/ndis/subr_hal.c,v 1.26 2005/10/21 05:23:20 wpaul Exp $"); +__FBSDID("$FreeBSD: src/sys/compat/ndis/subr_hal.c,v 1.27 2005/11/06 19:38:33 wpaul Exp $"); #include #include @@ -78,6 +78,8 @@ static void READ_PORT_BUFFER_UCHAR(uint8_t *, uint8_t *, uint32_t); static uint64_t KeQueryPerformanceCounter(uint64_t *); +static void _KeLowerIrql(uint8_t); +static uint8_t KeRaiseIrqlToDpcLevel(void); static void dummy (void); #define NDIS_MAXCPUS 64 @@ -370,10 +372,6 @@ { uint8_t oldirql; - /* I am so going to hell for this. */ - if (KeGetCurrentIrql() > DISPATCH_LEVEL) - panic("IRQL_NOT_LESS_THAN_OR_EQUAL"); - KeRaiseIrql(DISPATCH_LEVEL, &oldirql); KeAcquireSpinLockAtDpcLevel(lock); @@ -416,13 +414,16 @@ uint8_t oldirql; oldirql = KeGetCurrentIrql(); - if (irql < oldirql) + + /* I am so going to hell for this. */ + if (oldirql > irql) panic("IRQL_NOT_LESS_THAN"); if (oldirql != DISPATCH_LEVEL) { sched_pin(); mtx_lock(&disp_lock[curthread->td_oncpu]); } +/*printf("RAISE IRQL: %d %d\n", irql, oldirql);*/ return(oldirql); } @@ -443,6 +444,23 @@ return; } +static uint8_t +KeRaiseIrqlToDpcLevel(void) +{ + uint8_t irql; + + KeRaiseIrql(DISPATCH_LEVEL, &irql); + return(irql); +} + +static void +_KeLowerIrql(oldirql) + uint8_t oldirql; +{ + KeLowerIrql(oldirql); + return; +} + static void dummy() { printf ("hal dummy called...\n"); @@ -469,6 +487,9 @@ IMPORT_SFUNC(KeQueryPerformanceCounter, 1), IMPORT_FFUNC(KfLowerIrql, 1), IMPORT_FFUNC(KfRaiseIrql, 1), + IMPORT_SFUNC(KeRaiseIrqlToDpcLevel, 0), +#undef KeLowerIrql + IMPORT_SFUNC_MAP(KeLowerIrql, _KeLowerIrql, 1), /* * This last entry is a catch-all for any function we haven't ==== //depot/projects/smpng/sys/compat/ndis/subr_ntoskrnl.c#37 (text+ko) ==== @@ -31,7 +31,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/compat/ndis/subr_ntoskrnl.c,v 1.81 2005/11/02 18:01:04 wpaul Exp $"); +__FBSDID("$FreeBSD: src/sys/compat/ndis/subr_ntoskrnl.c,v 1.82 2005/11/06 19:38:33 wpaul Exp $"); #include #include @@ -227,6 +227,10 @@ uint32_t, void *, uint8_t, void **, void **); static void ObfDereferenceObject(void *); static uint32_t ZwClose(ndis_handle); +static uint32_t WmiQueryTraceInformation(uint32_t, void *, uint32_t, + uint32_t, void *); +static uint32_t WmiTraceMessage(uint64_t, uint32_t, void *, uint16_t, ...); +static uint32_t IoWMIRegistrationControl(device_object *, uint32_t); static void *ntoskrnl_memset(void *, int, size_t); static char *ntoskrnl_strstr(char *, char *); static int ntoskrnl_toupper(int); @@ -3336,6 +3340,32 @@ return(STATUS_SUCCESS); } +static uint32_t +WmiQueryTraceInformation(traceclass, traceinfo, infolen, reqlen, buf) + uint32_t traceclass; + void *traceinfo; + uint32_t infolen; + uint32_t reqlen; + void *buf; +{ + return(STATUS_NOT_FOUND); +} + +static uint32_t +WmiTraceMessage(uint64_t loghandle, uint32_t messageflags, + void *guid, uint16_t messagenum, ...) +{ + return(STATUS_SUCCESS); +} + +static uint32_t +IoWMIRegistrationControl(dobj, action) + device_object *dobj; + uint32_t action; +{ + return(STATUS_SUCCESS); +} + /* * This is here just in case the thread returns without calling * PsTerminateSystemThread(). @@ -4215,6 +4245,9 @@ IMPORT_SFUNC(ZwClose, 1), IMPORT_SFUNC(PsCreateSystemThread, 7), IMPORT_SFUNC(PsTerminateSystemThread, 1), + IMPORT_SFUNC(IoWMIRegistrationControl, 2), + IMPORT_SFUNC(WmiQueryTraceInformation, 5), + IMPORT_CFUNC(WmiTraceMessage, 0), /* * This last entry is a catch-all for any function we haven't ==== //depot/projects/smpng/sys/conf/Makefile.alpha#26 (text+ko) ==== @@ -1,7 +1,7 @@ # Makefile.alpha -- with config changes. # Copyright 1990 W. Jolitz # from: @(#)Makefile.alpha 7.1 5/10/91 -# $FreeBSD: src/sys/conf/Makefile.alpha,v 1.136 2005/10/27 19:27:54 jhb Exp $ +# $FreeBSD: src/sys/conf/Makefile.alpha,v 1.138 2005/11/04 04:14:49 imp Exp $ # # Makefile for FreeBSD # ==== //depot/projects/smpng/sys/conf/Makefile.amd64#13 (text+ko) ==== @@ -2,7 +2,7 @@ # Copyright 1990 W. Jolitz # from: @(#)Makefile.i386 7.1 5/10/91 # from FreeBSD: src/sys/conf/Makefile.i386,v 1.255 2002/02/20 23:35:49 -# $FreeBSD: src/sys/conf/Makefile.amd64,v 1.18 2005/10/27 19:27:54 jhb Exp $ +# $FreeBSD: src/sys/conf/Makefile.amd64,v 1.20 2005/11/04 04:14:49 imp Exp $ # # Makefile for FreeBSD # ==== //depot/projects/smpng/sys/conf/Makefile.arm#14 (text+ko) ==== @@ -1,7 +1,7 @@ # Makefile.arm -- with config changes. # Copyright 1990 W. Jolitz # from: @(#)Makefile.i386 7.1 5/10/91 -# $FreeBSD: src/sys/conf/Makefile.arm,v 1.14 2005/10/27 19:27:54 jhb Exp $ +# $FreeBSD: src/sys/conf/Makefile.arm,v 1.16 2005/11/04 04:14:49 imp Exp $ # # Makefile for FreeBSD # ==== //depot/projects/smpng/sys/conf/Makefile.i386#24 (text+ko) ==== @@ -1,7 +1,7 @@ # Makefile.i386 -- with config changes. # Copyright 1990 W. Jolitz # from: @(#)Makefile.i386 7.1 5/10/91 -# $FreeBSD: src/sys/conf/Makefile.i386,v 1.266 2005/10/27 19:27:54 jhb Exp $ +# $FreeBSD: src/sys/conf/Makefile.i386,v 1.268 2005/11/04 04:14:49 imp Exp $ # # Makefile for FreeBSD # ==== //depot/projects/smpng/sys/conf/Makefile.ia64#31 (text+ko) ==== @@ -1,7 +1,7 @@ # Makefile.ia64 -- with config changes. # Copyright 1990 W. Jolitz # from: src/sys/conf/Makefile.alpha,v 1.76 -# $FreeBSD: src/sys/conf/Makefile.ia64,v 1.63 2005/10/27 19:27:54 jhb Exp $ +# $FreeBSD: src/sys/conf/Makefile.ia64,v 1.65 2005/11/04 04:14:49 imp Exp $ # # Makefile for FreeBSD # ==== //depot/projects/smpng/sys/conf/Makefile.pc98#23 (text+ko) ==== @@ -3,7 +3,7 @@ # Makefile.i386 -- with config changes. # Copyright 1990 W. Jolitz # from: @(#)Makefile.i386 7.1 5/10/91 -# $FreeBSD: src/sys/conf/Makefile.pc98,v 1.168 2005/10/27 19:27:54 jhb Exp $ +# $FreeBSD: src/sys/conf/Makefile.pc98,v 1.170 2005/11/04 04:14:49 imp Exp $ # # Makefile for FreeBSD # ==== //depot/projects/smpng/sys/conf/Makefile.powerpc#32 (text+ko) ==== @@ -1,7 +1,7 @@ # Makefile.powerpc -- with config changes. # Copyright 1990 W. Jolitz # from: @(#)Makefile.i386 7.1 5/10/91 -# $FreeBSD: src/sys/conf/Makefile.powerpc,v 1.279 2005/10/27 19:27:54 jhb Exp $ +# $FreeBSD: src/sys/conf/Makefile.powerpc,v 1.281 2005/11/04 04:14:49 imp Exp $ # # Makefile for FreeBSD # >>> TRUNCATED FOR MAIL (1000 lines) <<<