Date: Tue, 18 Mar 2008 12:55:07 GMT From: John Baldwin <jhb@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 137999 for review Message-ID: <200803181255.m2ICt7CT094897@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=137999 Change 137999 by jhb@jhb_zion on 2008/03/18 12:54:14 IFC @137998 Affected files ... .. //depot/projects/smpng/sys/amd64/acpica/madt.c#16 integrate .. //depot/projects/smpng/sys/amd64/amd64/intr_machdep.c#30 integrate .. //depot/projects/smpng/sys/amd64/amd64/local_apic.c#32 integrate .. //depot/projects/smpng/sys/amd64/amd64/machdep.c#70 integrate .. //depot/projects/smpng/sys/amd64/amd64/mptable.c#13 integrate .. //depot/projects/smpng/sys/amd64/include/atomic.h#31 integrate .. //depot/projects/smpng/sys/amd64/isa/atpic.c#17 integrate .. //depot/projects/smpng/sys/amd64/linux32/linux32_proto.h#23 integrate .. //depot/projects/smpng/sys/amd64/linux32/linux32_syscall.h#23 integrate .. //depot/projects/smpng/sys/amd64/linux32/linux32_sysent.c#23 integrate .. //depot/projects/smpng/sys/amd64/linux32/syscalls.master#27 integrate .. //depot/projects/smpng/sys/arm/arm/intr.c#17 integrate .. //depot/projects/smpng/sys/arm/arm/machdep.c#23 integrate .. //depot/projects/smpng/sys/arm/arm/vm_machdep.c#27 integrate .. //depot/projects/smpng/sys/cam/scsi/scsi_ses.c#18 integrate .. //depot/projects/smpng/sys/compat/linux/linux_misc.c#86 integrate .. //depot/projects/smpng/sys/compat/svr4/svr4_fcntl.c#26 integrate .. //depot/projects/smpng/sys/conf/files#212 integrate .. //depot/projects/smpng/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c#8 integrate .. //depot/projects/smpng/sys/contrib/opensolaris/uts/common/os/callb.c#2 integrate .. //depot/projects/smpng/sys/contrib/opensolaris/uts/common/os/taskq.c#2 integrate .. //depot/projects/smpng/sys/dev/aac/aac.c#59 integrate .. //depot/projects/smpng/sys/dev/ata/ata-all.c#89 integrate .. //depot/projects/smpng/sys/dev/ata/ata-all.h#55 integrate .. //depot/projects/smpng/sys/dev/ata/ata-disk.c#67 integrate .. //depot/projects/smpng/sys/dev/ata/ata-disk.h#19 integrate .. //depot/projects/smpng/sys/dev/cxgb/common/cxgb_ael1002.c#4 integrate .. //depot/projects/smpng/sys/dev/cxgb/common/cxgb_common.h#4 integrate .. //depot/projects/smpng/sys/dev/cxgb/common/cxgb_version.h#4 integrate .. //depot/projects/smpng/sys/dev/cxgb/cxgb_ioctl.h#4 integrate .. //depot/projects/smpng/sys/dev/cxgb/cxgb_main.c#7 integrate .. //depot/projects/smpng/sys/dev/cxgb/ulp/tom/cxgb_cpl_io.c#3 integrate .. //depot/projects/smpng/sys/dev/cxgb/ulp/tom/cxgb_cpl_socket.c#3 integrate .. //depot/projects/smpng/sys/dev/cxgb/ulp/tom/cxgb_ddp.c#2 integrate .. //depot/projects/smpng/sys/dev/cxgb/ulp/tom/cxgb_defs.h#3 integrate .. //depot/projects/smpng/sys/dev/hwpmc/hwpmc_amd.c#9 integrate .. //depot/projects/smpng/sys/dev/ofw/ofw_console.c#27 integrate .. //depot/projects/smpng/sys/dev/syscons/sysmouse.c#15 integrate .. //depot/projects/smpng/sys/dev/usb/if_zyd.c#3 integrate .. //depot/projects/smpng/sys/gdb/gdb_cons.c#3 integrate .. //depot/projects/smpng/sys/geom/vinum/geom_vinum_drive.c#18 integrate .. //depot/projects/smpng/sys/i386/acpica/acpi_wakeup.c#37 integrate .. //depot/projects/smpng/sys/i386/acpica/madt.c#23 integrate .. //depot/projects/smpng/sys/i386/cpufreq/est.c#9 integrate .. //depot/projects/smpng/sys/i386/cpufreq/p4tcc.c#4 integrate .. //depot/projects/smpng/sys/i386/i386/intr_machdep.c#30 integrate .. //depot/projects/smpng/sys/i386/i386/local_apic.c#53 integrate .. //depot/projects/smpng/sys/i386/i386/machdep.c#131 integrate .. //depot/projects/smpng/sys/i386/i386/mp_machdep.c#111 integrate .. //depot/projects/smpng/sys/i386/i386/mptable.c#21 integrate .. //depot/projects/smpng/sys/i386/i386/vm_machdep.c#85 integrate .. //depot/projects/smpng/sys/i386/include/atomic.h#49 integrate .. //depot/projects/smpng/sys/i386/isa/atpic.c#20 integrate .. //depot/projects/smpng/sys/i386/linux/linux_proto.h#43 integrate .. //depot/projects/smpng/sys/i386/linux/linux_syscall.h#41 integrate .. //depot/projects/smpng/sys/i386/linux/linux_sysent.c#42 integrate .. //depot/projects/smpng/sys/i386/linux/syscalls.master#48 integrate .. //depot/projects/smpng/sys/i386/xbox/xbox.c#5 integrate .. //depot/projects/smpng/sys/ia64/ia64/interrupt.c#40 integrate .. //depot/projects/smpng/sys/ia64/ia64/machdep.c#114 integrate .. //depot/projects/smpng/sys/ia64/ia64/sscdisk.c#19 integrate .. //depot/projects/smpng/sys/ia64/include/atomic.h#14 integrate .. //depot/projects/smpng/sys/ia64/isa/isa_dma.c#10 integrate .. //depot/projects/smpng/sys/kern/init_main.c#72 integrate .. //depot/projects/smpng/sys/kern/kern_alq.c#17 integrate .. //depot/projects/smpng/sys/kern/kern_clock.c#59 integrate .. //depot/projects/smpng/sys/kern/kern_conf.c#52 integrate .. //depot/projects/smpng/sys/kern/kern_descrip.c#111 integrate .. //depot/projects/smpng/sys/kern/kern_event.c#54 integrate .. //depot/projects/smpng/sys/kern/kern_idle.c#31 integrate .. //depot/projects/smpng/sys/kern/kern_intr.c#91 integrate .. //depot/projects/smpng/sys/kern/kern_linker.c#91 integrate .. //depot/projects/smpng/sys/kern/kern_malloc.c#50 integrate .. //depot/projects/smpng/sys/kern/kern_mbuf.c#26 integrate .. //depot/projects/smpng/sys/kern/kern_module.c#27 integrate .. //depot/projects/smpng/sys/kern/kern_ntptime.c#23 integrate .. //depot/projects/smpng/sys/kern/kern_poll.c#25 integrate .. //depot/projects/smpng/sys/kern/kern_resource.c#76 integrate .. //depot/projects/smpng/sys/kern/kern_shutdown.c#70 integrate .. //depot/projects/smpng/sys/kern/kern_switch.c#71 integrate .. //depot/projects/smpng/sys/kern/kern_synch.c#121 integrate .. //depot/projects/smpng/sys/kern/kern_tc.c#46 integrate .. //depot/projects/smpng/sys/kern/link_elf.c#45 integrate .. //depot/projects/smpng/sys/kern/link_elf_obj.c#19 integrate .. //depot/projects/smpng/sys/kern/sched_4bsd.c#71 integrate .. //depot/projects/smpng/sys/kern/sched_ule.c#83 integrate .. //depot/projects/smpng/sys/kern/subr_autoconf.c#12 integrate .. //depot/projects/smpng/sys/kern/subr_eventhandler.c#23 integrate .. //depot/projects/smpng/sys/kern/subr_log.c#18 integrate .. //depot/projects/smpng/sys/kern/subr_prof.c#31 integrate .. //depot/projects/smpng/sys/kern/subr_smp.c#49 integrate .. //depot/projects/smpng/sys/kern/subr_witness.c#167 integrate .. //depot/projects/smpng/sys/kern/tty_cons.c#39 integrate .. //depot/projects/smpng/sys/kern/tty_pts.c#8 integrate .. //depot/projects/smpng/sys/kern/tty_pty.c#52 integrate .. //depot/projects/smpng/sys/kern/tty_subr.c#9 integrate .. //depot/projects/smpng/sys/kern/tty_tty.c#19 integrate .. //depot/projects/smpng/sys/kern/uipc_domain.c#21 integrate .. //depot/projects/smpng/sys/kern/uipc_socket.c#109 integrate .. //depot/projects/smpng/sys/kern/vfs_acl.c#4 integrate .. //depot/projects/smpng/sys/kern/vfs_bio.c#108 integrate .. //depot/projects/smpng/sys/kern/vfs_cache.c#38 integrate .. //depot/projects/smpng/sys/kern/vfs_hash.c#7 integrate .. //depot/projects/smpng/sys/kern/vfs_lookup.c#47 integrate .. //depot/projects/smpng/sys/kern/vfs_subr.c#147 integrate .. //depot/projects/smpng/sys/net/bpf.c#73 integrate .. //depot/projects/smpng/sys/net/ieee8023ad_lacp.c#11 integrate .. //depot/projects/smpng/sys/net/ieee8023ad_lacp.h#8 integrate .. //depot/projects/smpng/sys/net/if.c#98 integrate .. //depot/projects/smpng/sys/net/if_lagg.c#10 integrate .. //depot/projects/smpng/sys/net/netisr.c#13 integrate .. //depot/projects/smpng/sys/net/rtsock.c#59 integrate .. //depot/projects/smpng/sys/netatm/ipatm/ipatm_load.c#11 integrate .. //depot/projects/smpng/sys/netatm/sigpvc/sigpvc_if.c#8 integrate .. //depot/projects/smpng/sys/netatm/spans/spans_if.c#8 integrate .. //depot/projects/smpng/sys/netatm/uni/uni_load.c#5 integrate .. //depot/projects/smpng/sys/netgraph/ng_base.c#53 integrate .. //depot/projects/smpng/sys/netgraph/ng_l2tp.c#15 integrate .. //depot/projects/smpng/sys/netinet/in_pcb.c#79 integrate .. //depot/projects/smpng/sys/netinet/ip_fw2.c#90 integrate .. //depot/projects/smpng/sys/netinet/libalias/alias_irc.c#6 integrate .. //depot/projects/smpng/sys/netipsec/ipsec.c#23 integrate .. //depot/projects/smpng/sys/nfsclient/nfs_diskless.c#17 integrate .. //depot/projects/smpng/sys/pc98/pc98/machdep.c#27 integrate .. //depot/projects/smpng/sys/powerpc/aim/machdep.c#4 integrate .. //depot/projects/smpng/sys/powerpc/booke/machdep.c#2 integrate .. //depot/projects/smpng/sys/powerpc/booke/vm_machdep.c#2 integrate .. //depot/projects/smpng/sys/powerpc/include/atomic.h#19 integrate .. //depot/projects/smpng/sys/powerpc/include/gdb_machdep.h#2 integrate .. //depot/projects/smpng/sys/powerpc/powerpc/gdb_machdep.c#3 integrate .. //depot/projects/smpng/sys/powerpc/powerpc/intr_machdep.c#14 integrate .. //depot/projects/smpng/sys/security/audit/audit.c#12 integrate .. //depot/projects/smpng/sys/sparc64/include/atomic.h#16 integrate .. //depot/projects/smpng/sys/sparc64/sparc64/intr_machdep.c#28 integrate .. //depot/projects/smpng/sys/sparc64/sparc64/vm_machdep.c#52 integrate .. //depot/projects/smpng/sys/sun4v/include/atomic.h#2 integrate .. //depot/projects/smpng/sys/sys/ata.h#29 integrate .. //depot/projects/smpng/sys/sys/bus_dma.h#3 integrate .. //depot/projects/smpng/sys/sys/conf.h#50 integrate .. //depot/projects/smpng/sys/sys/eventhandler.h#27 integrate .. //depot/projects/smpng/sys/sys/interrupt.h#24 integrate .. //depot/projects/smpng/sys/sys/kernel.h#39 integrate .. //depot/projects/smpng/sys/sys/module.h#11 integrate .. //depot/projects/smpng/sys/sys/resourcevar.h#28 integrate .. //depot/projects/smpng/sys/sys/rwlock.h#13 integrate .. //depot/projects/smpng/sys/sys/taskqueue.h#12 integrate .. //depot/projects/smpng/sys/ufs/ffs/ffs_softdep.c#68 integrate .. //depot/projects/smpng/sys/vm/vm_fault.c#71 integrate .. //depot/projects/smpng/sys/vm/vm_glue.c#64 integrate .. //depot/projects/smpng/sys/vm/vm_init.c#15 integrate .. //depot/projects/smpng/sys/vm/vm_mmap.c#65 integrate .. //depot/projects/smpng/sys/vm/vm_page.c#96 integrate .. //depot/projects/smpng/sys/vm/vm_page.h#41 integrate .. //depot/projects/smpng/sys/vm/vm_pageout.c#64 integrate .. //depot/projects/smpng/sys/vm/vm_pageq.c#25 delete .. //depot/projects/smpng/sys/vm/vm_zeroidle.c#37 integrate Differences ... ==== //depot/projects/smpng/sys/amd64/acpica/madt.c#16 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/amd64/acpica/madt.c,v 1.25 2008/01/31 16:51:42 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/acpica/madt.c,v 1.26 2008/03/16 10:58:02 rwatson Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -409,7 +409,7 @@ apic_register_enumerator(&madt_enumerator); } SYSINIT(madt_register, SI_SUB_TUNABLES - 1, SI_ORDER_FIRST, - madt_register, NULL) + madt_register, NULL); /* * Call the handler routine for each entry in the MADT table. @@ -779,4 +779,4 @@ la->la_acpi_id); } } -SYSINIT(madt_set_ids, SI_SUB_CPU, SI_ORDER_ANY, madt_set_ids, NULL) +SYSINIT(madt_set_ids, SI_SUB_CPU, SI_ORDER_ANY, madt_set_ids, NULL); ==== //depot/projects/smpng/sys/amd64/amd64/intr_machdep.c#30 (text+ko) ==== @@ -26,7 +26,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/amd64/intr_machdep.c,v 1.37 2008/03/14 19:41:46 jhb Exp $ + * $FreeBSD: src/sys/amd64/amd64/intr_machdep.c,v 1.39 2008/03/17 22:42:00 jhb Exp $ */ /* @@ -77,12 +77,6 @@ static struct mtx intrcnt_lock; static STAILQ_HEAD(, pic) pics; -#ifdef INTR_FILTER -static void intr_eoi_src(void *arg); -static void intr_disab_eoi_src(void *arg); -static void intr_event_stray(void *cookie); -#endif - #ifdef SMP static int assign_cpu; @@ -90,6 +84,10 @@ #endif static int intr_assign_cpu(void *arg, u_char cpu); +static void intr_disable_src(void *arg); +#ifdef INTR_FILTER +static void intr_event_stray(void *cookie); +#endif static void intr_init(void *__dummy); static int intr_pic_registered(struct pic *pic); static void intrcnt_setname(const char *name, int index); @@ -144,16 +142,10 @@ vector = isrc->is_pic->pic_vector(isrc); if (interrupt_sources[vector] != NULL) return (EEXIST); -#ifdef INTR_FILTER error = intr_event_create(&isrc->is_event, isrc, 0, - (mask_fn)isrc->is_pic->pic_enable_source, - intr_eoi_src, intr_disab_eoi_src, intr_assign_cpu, "irq%d:", - vector); -#else - error = intr_event_create(&isrc->is_event, isrc, 0, - (mask_fn)isrc->is_pic->pic_enable_source, intr_assign_cpu, "irq%d:", + intr_disable_src, (mask_fn)isrc->is_pic->pic_enable_source, + (mask_fn)isrc->is_pic->pic_eoi_source, intr_assign_cpu, "irq%d:", vector); -#endif if (error) return (error); sx_xlock(&intr_table_lock); @@ -237,6 +229,15 @@ return (isrc->is_pic->pic_config_intr(isrc, trig, pol)); } +static void +intr_disable_src(void *arg) +{ + struct intsrc *isrc; + + isrc = arg; + isrc->is_pic->pic_disable_source(isrc, PIC_EOI); +} + #ifdef INTR_FILTER void intr_execute_handlers(struct intsrc *isrc, struct trapframe *frame) @@ -289,24 +290,6 @@ "too many stray irq %d's: not logging anymore\n", isrc->is_pic->pic_vector(isrc)); } - -static void -intr_eoi_src(void *arg) -{ - struct intsrc *isrc; - - isrc = arg; - isrc->is_pic->pic_eoi_source(isrc); -} - -static void -intr_disab_eoi_src(void *arg) -{ - struct intsrc *isrc; - - isrc = arg; - isrc->is_pic->pic_disable_source(isrc, PIC_EOI); -} #else void intr_execute_handlers(struct intsrc *isrc, struct trapframe *frame) @@ -510,7 +493,7 @@ sx_init(&intr_table_lock, "intr sources"); mtx_init(&intrcnt_lock, "intrcnt", NULL, MTX_SPIN); } -SYSINIT(intr_init, SI_SUB_INTR, SI_ORDER_FIRST, intr_init, NULL) +SYSINIT(intr_init, SI_SUB_INTR, SI_ORDER_FIRST, intr_init, NULL); #ifndef DEV_ATPIC /* Initialize the two 8259A's to a known-good shutdown state. */ @@ -642,5 +625,6 @@ } sx_xunlock(&intr_table_lock); } -SYSINIT(intr_shuffle_irqs, SI_SUB_SMP, SI_ORDER_SECOND, intr_shuffle_irqs, NULL) +SYSINIT(intr_shuffle_irqs, SI_SUB_SMP, SI_ORDER_SECOND, intr_shuffle_irqs, + NULL); #endif ==== //depot/projects/smpng/sys/amd64/amd64/local_apic.c#32 (text+ko) ==== @@ -32,7 +32,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/amd64/amd64/local_apic.c,v 1.43 2007/10/27 13:34:53 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/local_apic.c,v 1.44 2008/03/16 10:58:02 rwatson Exp $"); #include "opt_hwpmc_hooks.h" @@ -1039,7 +1039,7 @@ printf("%s: Failed to probe CPUs: returned %d\n", best_enum->apic_name, retval); } -SYSINIT(apic_init, SI_SUB_TUNABLES - 1, SI_ORDER_SECOND, apic_init, NULL) +SYSINIT(apic_init, SI_SUB_TUNABLES - 1, SI_ORDER_SECOND, apic_init, NULL); /* * Setup the local APIC. We have to do this prior to starting up the APs @@ -1057,7 +1057,8 @@ printf("%s: Failed to setup the local APIC: returned %d\n", best_enum->apic_name, retval); } -SYSINIT(apic_setup_local, SI_SUB_CPU, SI_ORDER_SECOND, apic_setup_local, NULL) +SYSINIT(apic_setup_local, SI_SUB_CPU, SI_ORDER_SECOND, apic_setup_local, + NULL); /* * Setup the I/O APICs. @@ -1086,7 +1087,7 @@ /* Enable the MSI "pic". */ msi_init(); } -SYSINIT(apic_setup_io, SI_SUB_INTR, SI_ORDER_SECOND, apic_setup_io, NULL) +SYSINIT(apic_setup_io, SI_SUB_INTR, SI_ORDER_SECOND, apic_setup_io, NULL); #ifdef SMP /* ==== //depot/projects/smpng/sys/amd64/amd64/machdep.c#70 (text+ko) ==== @@ -39,7 +39,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.682 2008/03/13 10:54:36 kib Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.683 2008/03/16 10:58:02 rwatson Exp $"); #include "opt_atalk.h" #include "opt_atpic.h" @@ -149,7 +149,7 @@ static void cpu_startup(void *); static void get_fpcontext(struct thread *td, mcontext_t *mcp); static int set_fpcontext(struct thread *td, const mcontext_t *mcp); -SYSINIT(cpu, SI_SUB_CPU, SI_ORDER_FIRST, cpu_startup, NULL) +SYSINIT(cpu, SI_SUB_CPU, SI_ORDER_FIRST, cpu_startup, NULL); #ifdef DDB extern vm_offset_t ksym_start, ksym_end; ==== //depot/projects/smpng/sys/amd64/amd64/mptable.c#13 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/amd64/amd64/mptable.c,v 1.240 2007/05/08 22:01:02 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/mptable.c,v 1.241 2008/03/16 10:58:02 rwatson Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -381,7 +381,7 @@ apic_register_enumerator(&mptable_enumerator); } SYSINIT(mptable_register, SI_SUB_TUNABLES - 1, SI_ORDER_FIRST, - mptable_register, NULL) + mptable_register, NULL); /* * Call the handler routine for each entry in the MP config table. ==== //depot/projects/smpng/sys/amd64/include/atomic.h#31 (text+ko) ==== @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/include/atomic.h,v 1.44 2006/12/29 15:29:49 bde Exp $ + * $FreeBSD: src/sys/amd64/include/atomic.h,v 1.45 2008/03/16 21:20:48 pjd Exp $ */ #ifndef _MACHINE_ATOMIC_H_ #define _MACHINE_ATOMIC_H_ @@ -74,6 +74,7 @@ int atomic_cmpset_int(volatile u_int *dst, u_int exp, u_int src); int atomic_cmpset_long(volatile u_long *dst, u_long exp, u_long src); u_int atomic_fetchadd_int(volatile u_int *p, u_int v); +u_long atomic_fetchadd_long(volatile u_long *p, u_long v); #define ATOMIC_STORE_LOAD(TYPE, LOP, SOP) \ u_##TYPE atomic_load_acq_##TYPE(volatile u_##TYPE *p); \ @@ -174,6 +175,25 @@ return (v); } +/* + * Atomically add the value of v to the long integer pointed to by p and return + * the previous value of *p. + */ +static __inline u_long +atomic_fetchadd_long(volatile u_long *p, u_long v) +{ + + __asm __volatile( + " " MPLOCKED " " + " xaddq %0, %1 ; " + "# atomic_fetchadd_long" + : "+r" (v), /* 0 (result) */ + "=m" (*p) /* 1 */ + : "m" (*p)); /* 2 */ + + return (v); +} + #if defined(_KERNEL) && !defined(SMP) /* ==== //depot/projects/smpng/sys/amd64/isa/atpic.c#17 (text+ko) ==== @@ -32,7 +32,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/amd64/isa/atpic.c,v 1.22 2007/05/08 21:29:13 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/isa/atpic.c,v 1.23 2008/03/16 10:58:02 rwatson Exp $"); #include "opt_auto_eoi.h" #include "opt_isa.h" @@ -499,7 +499,7 @@ intr_register_source(&ai->at_intsrc); } } -SYSINIT(atpic_init, SI_SUB_INTR, SI_ORDER_SECOND + 1, atpic_init, NULL) +SYSINIT(atpic_init, SI_SUB_INTR, SI_ORDER_SECOND + 1, atpic_init, NULL); void atpic_handle_intr(u_int vector, struct trapframe *frame) ==== //depot/projects/smpng/sys/amd64/linux32/linux32_proto.h#23 (text+ko) ==== @@ -2,8 +2,8 @@ * System call prototypes. * * DO NOT EDIT-- this file is automatically generated. - * $FreeBSD: src/sys/amd64/linux32/linux32_proto.h,v 1.33 2007/09/18 19:50:32 dwmalone Exp $ - * created from FreeBSD: src/sys/amd64/linux32/syscalls.master,v 1.29 2007/08/28 12:26:34 kib Exp + * $FreeBSD: src/sys/amd64/linux32/linux32_proto.h,v 1.34 2008/03/16 16:29:37 rdivacky Exp $ + * created from FreeBSD: src/sys/amd64/linux32/syscalls.master,v 1.31 2008/03/16 16:24:20 rdivacky Exp */ #ifndef _LINUX_SYSPROTO_H_ @@ -734,6 +734,11 @@ char uaddr2_l_[PADL_(void *)]; void * uaddr2; char uaddr2_r_[PADR_(void *)]; char val3_l_[PADL_(int)]; int val3; char val3_r_[PADR_(int)]; }; +struct linux_sched_setaffinity_args { + char pid_l_[PADL_(l_pid_t)]; l_pid_t pid; char pid_r_[PADR_(l_pid_t)]; + char len_l_[PADL_(l_uint)]; l_uint len; char len_r_[PADR_(l_uint)]; + char user_mask_ptr_l_[PADL_(l_ulong *)]; l_ulong * user_mask_ptr; char user_mask_ptr_r_[PADR_(l_ulong *)]; +}; struct linux_sched_getaffinity_args { char pid_l_[PADL_(l_pid_t)]; l_pid_t pid; char pid_r_[PADR_(l_pid_t)]; char len_l_[PADL_(l_uint)]; l_uint len; char len_r_[PADR_(l_uint)]; @@ -1105,6 +1110,7 @@ int linux_fremovexattr(struct thread *, struct linux_fremovexattr_args *); int linux_tkill(struct thread *, struct linux_tkill_args *); int linux_sys_futex(struct thread *, struct linux_sys_futex_args *); +int linux_sched_setaffinity(struct thread *, struct linux_sched_setaffinity_args *); int linux_sched_getaffinity(struct thread *, struct linux_sched_getaffinity_args *); int linux_set_thread_area(struct thread *, struct linux_set_thread_area_args *); int linux_fadvise64(struct thread *, struct linux_fadvise64_args *); @@ -1360,6 +1366,7 @@ #define LINUX_SYS_AUE_linux_fremovexattr AUE_NULL #define LINUX_SYS_AUE_linux_tkill AUE_NULL #define LINUX_SYS_AUE_linux_sys_futex AUE_NULL +#define LINUX_SYS_AUE_linux_sched_setaffinity AUE_NULL #define LINUX_SYS_AUE_linux_sched_getaffinity AUE_NULL #define LINUX_SYS_AUE_linux_set_thread_area AUE_NULL #define LINUX_SYS_AUE_linux_fadvise64 AUE_NULL ==== //depot/projects/smpng/sys/amd64/linux32/linux32_syscall.h#23 (text+ko) ==== @@ -2,8 +2,8 @@ * System call numbers. * * DO NOT EDIT-- this file is automatically generated. - * $FreeBSD: src/sys/amd64/linux32/linux32_syscall.h,v 1.33 2007/09/18 19:50:32 dwmalone Exp $ - * created from FreeBSD: src/sys/amd64/linux32/syscalls.master,v 1.29 2007/08/28 12:26:34 kib Exp + * $FreeBSD: src/sys/amd64/linux32/linux32_syscall.h,v 1.34 2008/03/16 16:29:37 rdivacky Exp $ + * created from FreeBSD: src/sys/amd64/linux32/syscalls.master,v 1.31 2008/03/16 16:24:20 rdivacky Exp */ #define LINUX_SYS_exit 1 @@ -222,6 +222,7 @@ #define LINUX_SYS_linux_fremovexattr 237 #define LINUX_SYS_linux_tkill 238 #define LINUX_SYS_linux_sys_futex 240 +#define LINUX_SYS_linux_sched_setaffinity 241 #define LINUX_SYS_linux_sched_getaffinity 242 #define LINUX_SYS_linux_set_thread_area 243 #define LINUX_SYS_linux_fadvise64 250 ==== //depot/projects/smpng/sys/amd64/linux32/linux32_sysent.c#23 (text+ko) ==== @@ -2,8 +2,8 @@ * System call switch table. * * DO NOT EDIT-- this file is automatically generated. - * $FreeBSD: src/sys/amd64/linux32/linux32_sysent.c,v 1.33 2007/09/18 19:50:32 dwmalone Exp $ - * created from FreeBSD: src/sys/amd64/linux32/syscalls.master,v 1.29 2007/08/28 12:26:34 kib Exp + * $FreeBSD: src/sys/amd64/linux32/linux32_sysent.c,v 1.34 2008/03/16 16:29:37 rdivacky Exp $ + * created from FreeBSD: src/sys/amd64/linux32/syscalls.master,v 1.31 2008/03/16 16:24:20 rdivacky Exp */ #include <bsm/audit_kevents.h> @@ -261,7 +261,7 @@ { AS(linux_tkill_args), (sy_call_t *)linux_tkill, AUE_NULL, NULL, 0, 0 }, /* 238 = linux_tkill */ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 239 = linux_sendfile64 */ { AS(linux_sys_futex_args), (sy_call_t *)linux_sys_futex, AUE_NULL, NULL, 0, 0 }, /* 240 = linux_sys_futex */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 241 = linux_sched_setaffinity */ + { AS(linux_sched_setaffinity_args), (sy_call_t *)linux_sched_setaffinity, AUE_NULL, NULL, 0, 0 }, /* 241 = linux_sched_setaffinity */ { AS(linux_sched_getaffinity_args), (sy_call_t *)linux_sched_getaffinity, AUE_NULL, NULL, 0, 0 }, /* 242 = linux_sched_getaffinity */ { AS(linux_set_thread_area_args), (sy_call_t *)linux_set_thread_area, AUE_NULL, NULL, 0, 0 }, /* 243 = linux_set_thread_area */ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 }, /* 244 = linux_get_thread_area */ ==== //depot/projects/smpng/sys/amd64/linux32/syscalls.master#27 (text+ko) ==== @@ -1,4 +1,4 @@ - $FreeBSD: src/sys/amd64/linux32/syscalls.master,v 1.30 2007/09/18 19:50:32 dwmalone Exp $ + $FreeBSD: src/sys/amd64/linux32/syscalls.master,v 1.31 2008/03/16 16:24:20 rdivacky Exp $ ; @(#)syscalls.master 8.1 (Berkeley) 7/19/93 ; System call name/number master file (or rather, slave, from LINUX). @@ -407,7 +407,8 @@ 239 AUE_SENDFILE UNIMPL linux_sendfile64 240 AUE_NULL STD { int linux_sys_futex(void *uaddr, int op, int val, \ struct l_timespec *timeout, void *uaddr2, int val3); } -241 AUE_NULL UNIMPL linux_sched_setaffinity +241 AUE_NULL STD { int linux_sched_setaffinity(l_pid_t pid, l_uint len, \ + l_ulong *user_mask_ptr); } 242 AUE_NULL STD { int linux_sched_getaffinity(l_pid_t pid, l_uint len, \ l_ulong *user_mask_ptr); } 243 AUE_NULL STD { int linux_set_thread_area(struct l_user_desc *desc); } ==== //depot/projects/smpng/sys/arm/arm/intr.c#17 (text+ko) ==== @@ -37,7 +37,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/arm/arm/intr.c,v 1.18 2008/03/14 19:41:46 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/intr.c,v 1.19 2008/03/17 22:42:00 jhb Exp $"); #include <sys/param.h> #include <sys/systm.h> #include <sys/syslog.h> @@ -50,6 +50,8 @@ #include <machine/intr.h> #include <machine/cpu.h> +typedef void (*mask_fn)(void *); + static struct intr_event *intr_events[NIRQ]; static int intrcnt_tab[NIRQ]; static int intrcnt_index = 0; @@ -57,27 +59,6 @@ void arm_handler_execute(struct trapframe *, int); -#ifdef INTR_FILTER -static void -intr_disab_eoi_src(void *arg) -{ - uintptr_t nb; - - nb = (uintptr_t)arg; - arm_mask_irq(nb); -} - -static void -intr_eoi_src(void *arg) -{ - uintptr_t nb; - - nb = (uintptr_t)arg; - arm_unmask_irq(nb); -} - -#endif - void arm_setup_irqhandler(const char *name, driver_filter_t *filt, void (*hand)(void*), void *arg, int irq, int flags, void **cookiep) @@ -89,14 +70,9 @@ return; event = intr_events[irq]; if (event == NULL) { -#ifdef INTR_FILTER error = intr_event_create(&event, (void *)irq, 0, - (void (*)(void *))arm_unmask_irq, intr_eoi_src, - intr_disab_eoi_src, NULL, "intr%d:", irq); -#else - error = intr_event_create(&event, (void *)irq, 0, - (void (*)(void *))arm_unmask_irq, NULL, "intr%d:", irq); -#endif + (mask_fn)arm_mask_irq, (mask_fn)arm_unmask_irq, + (mask_fn)arm_unmask_irq, NULL, "intr%d:", irq); if (error) return; intr_events[irq] = event; ==== //depot/projects/smpng/sys/arm/arm/machdep.c#23 (text+ko) ==== @@ -44,7 +44,7 @@ #include "opt_compat.h" #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/arm/arm/machdep.c,v 1.28 2007/05/31 22:52:10 attilio Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/machdep.c,v 1.29 2008/03/16 10:58:02 rwatson Exp $"); #include <sys/param.h> #include <sys/proc.h> @@ -308,7 +308,7 @@ #endif } -SYSINIT(cpu, SI_SUB_CPU, SI_ORDER_FIRST, cpu_startup, NULL) +SYSINIT(cpu, SI_SUB_CPU, SI_ORDER_FIRST, cpu_startup, NULL); /* Get current clock frequency for the given cpu id. */ int ==== //depot/projects/smpng/sys/arm/arm/vm_machdep.c#27 (text+ko) ==== @@ -41,7 +41,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/arm/arm/vm_machdep.c,v 1.35 2007/11/14 20:21:53 marcel Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/vm_machdep.c,v 1.36 2008/03/16 10:58:02 rwatson Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -77,7 +77,7 @@ #ifndef ARM_USE_SMALL_ALLOC static void sf_buf_init(void *arg); -SYSINIT(sock_sf, SI_SUB_MBUF, SI_ORDER_ANY, sf_buf_init, NULL) +SYSINIT(sock_sf, SI_SUB_MBUF, SI_ORDER_ANY, sf_buf_init, NULL); LIST_HEAD(sf_head, sf_buf); ==== //depot/projects/smpng/sys/cam/scsi/scsi_ses.c#18 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/cam/scsi/scsi_ses.c,v 1.36 2008/02/20 19:49:46 scottl Exp $"); +__FBSDID("$FreeBSD: src/sys/cam/scsi/scsi_ses.c,v 1.37 2008/03/17 17:18:16 scottl Exp $"); #include <sys/param.h> #include <sys/queue.h> @@ -144,9 +144,9 @@ encvec ses_vec; /* vector to handlers */ void * ses_private; /* per-type private data */ encobj * ses_objmap; /* objects */ - u_int32_t ses_nobjects; /* number of objects */ + uint32_t ses_nobjects; /* number of objects */ ses_encstat ses_encstat; /* overall status */ - u_int8_t ses_flags; + uint8_t ses_flags; union ccb ses_saved_ccb; struct cdev *ses_dev; struct cam_periph *periph; @@ -166,9 +166,9 @@ static periph_dtor_t sescleanup; static periph_start_t sesstart; -static void sesasync(void *, u_int32_t, struct cam_path *, void *); +static void sesasync(void *, uint32_t, struct cam_path *, void *); static void sesdone(struct cam_periph *, union ccb *); -static int seserror(union ccb *, u_int32_t, u_int32_t); +static int seserror(union ccb *, uint32_t, uint32_t); static struct periph_driver sesdriver = { sesinit, "ses", @@ -234,7 +234,7 @@ } static void -sesasync(void *callback_arg, u_int32_t code, struct cam_path *path, void *arg) +sesasync(void *callback_arg, uint32_t code, struct cam_path *path, void *arg) { struct cam_periph *periph; @@ -303,7 +303,7 @@ return (CAM_REQ_CMP_ERR); } - softc = malloc(sizeof (struct ses_softc), M_SCSISES, M_NOWAIT); + softc = SES_MALLOC(sizeof (struct ses_softc)); if (softc == NULL) { printf("sesregister: Unable to probe new device. " "Unable to allocate softc\n"); @@ -472,7 +472,7 @@ } static int -seserror(union ccb *ccb, u_int32_t cflags, u_int32_t sflags) +seserror(union ccb *ccb, uint32_t cflags, uint32_t sflags) { struct ses_softc *softc; struct cam_periph *periph; @@ -489,7 +489,7 @@ struct cam_periph *periph; ses_encstat tmp; ses_objstat objs; - ses_object obj, *uobj; + ses_object *uobj; struct ses_softc *ssc; void *addr; int error, i; @@ -511,6 +511,9 @@ /* * Now check to see whether we're initialized or not. + * This actually should never fail as we're not supposed + * to get past ses_open w/o successfully initializing + * things. */ if ((ssc->ses_flags & SES_FLAG_INITIALIZED) == 0) { cam_periph_unlock(periph); @@ -526,6 +529,14 @@ /* * If this command can change the device's state, * we must have the device open for writing. + * + * For commands that get information about the + * device- we don't need to lock the peripheral + * if we aren't running a command. The number + * of objects and the contents will stay stable + * after the first open that does initialization. + * The periph also can't go away while a user + * process has it open. */ switch (cmd) { case SESIOC_GETNOBJ: @@ -546,23 +557,16 @@ break; case SESIOC_GETOBJMAP: - /* - * XXX Dropping the lock while copying multiple segments is - * bogus. - */ - cam_periph_lock(periph); - for (uobj = addr, i = 0; i != ssc->ses_nobjects; i++, uobj++) { - obj.obj_id = i; - obj.subencid = ssc->ses_objmap[i].subenclosure; - obj.object_type = ssc->ses_objmap[i].enctype; - cam_periph_unlock(periph); - error = copyout(&obj, uobj, sizeof (ses_object)); - cam_periph_lock(periph); + for (uobj = addr, i = 0; i != ssc->ses_nobjects; i++) { + ses_object kobj; + kobj.obj_id = i; + kobj.subencid = ssc->ses_objmap[i].subenclosure; + kobj.object_type = ssc->ses_objmap[i].enctype; + error = copyout(&kobj, &uobj[i], sizeof (ses_object)); if (error) { break; } } - cam_periph_unlock(periph); break; case SESIOC_GETENCSTAT: ==== //depot/projects/smpng/sys/compat/linux/linux_misc.c#86 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/compat/linux/linux_misc.c,v 1.217 2008/02/22 11:47:56 kib Exp $"); +__FBSDID("$FreeBSD: src/sys/compat/linux/linux_misc.c,v 1.218 2008/03/16 16:24:20 rdivacky Exp $"); #include "opt_compat.h" #include "opt_mac.h" @@ -63,6 +63,7 @@ #include <sys/vmmeter.h> #include <sys/vnode.h> #include <sys/wait.h> +#include <sys/cpuset.h> #include <security/mac/mac_framework.h> @@ -1730,22 +1731,52 @@ } /* - * XXX: fake one.. waiting for real implementation of affinity mask. + * Get affinity of a process. */ int linux_sched_getaffinity(struct thread *td, struct linux_sched_getaffinity_args *args) { int error; - cpumask_t i = ~0; + struct cpuset_getaffinity_args cga; + +#ifdef DEBUG + if (ldebug(sched_getaffinity)) + printf(ARGS(sched_getaffinity, "%d, %d, *"), args->pid, + args->len); +#endif + + cga.level = CPU_LEVEL_WHICH; + cga.which = CPU_WHICH_PID; + cga.id = args->pid; + cga.cpusetsize = sizeof(cpumask_t); + cga.mask = (long *) args->user_mask_ptr; + + if ((error = cpuset_getaffinity(td, &cga)) == 0) + td->td_retval[0] = sizeof(cpumask_t); + + return (error); +} - if (args->len < sizeof(cpumask_t)) - return (EINVAL); +/* + * Set affinity of a process. + */ +int +linux_sched_setaffinity(struct thread *td, + struct linux_sched_setaffinity_args *args) +{ + struct cpuset_setaffinity_args csa; - error = copyout(&i, args->user_mask_ptr, sizeof(cpumask_t)); - if (error) - return (EFAULT); +#ifdef DEBUG + if (ldebug(sched_setaffinity)) + printf(ARGS(sched_setaffinity, "%d, %d, *"), args->pid, + args->len); +#endif + csa.level = CPU_LEVEL_WHICH; + csa.which = CPU_WHICH_PID; + csa.id = args->pid; + csa.cpusetsize = args->len; + csa.mask = (long *) args->user_mask_ptr; - td->td_retval[0] = sizeof(cpumask_t); - return (0); + return (cpuset_setaffinity(td, &csa)); } ==== //depot/projects/smpng/sys/compat/svr4/svr4_fcntl.c#26 (text+ko) ==== @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/compat/svr4/svr4_fcntl.c,v 1.43 2008/01/13 14:44:01 attilio Exp $"); +__FBSDID("$FreeBSD: src/sys/compat/svr4/svr4_fcntl.c,v 1.44 2008/03/17 18:27:28 antoine Exp $"); #include "opt_mac.h" @@ -79,6 +79,8 @@ switch (cmd) { case SVR4_F_DUPFD: return F_DUPFD; + case SVR4_F_DUP2FD: + return F_DUP2FD; case SVR4_F_GETFD: return F_GETFD; case SVR4_F_SETFD: @@ -584,6 +586,7 @@ switch (cmd) { case F_DUPFD: + case F_DUP2FD: case F_GETFD: case F_SETFD: return (kern_fcntl(td, uap->fd, cmd, (intptr_t)uap->arg)); @@ -637,19 +640,6 @@ } case -1: switch (uap->cmd) { - case SVR4_F_DUP2FD: - { - struct dup2_args du; - - du.from = uap->fd; - du.to = (int)uap->arg; - error = dup2(td, &du); - if (error) - return error; - *retval = du.to; - return 0; - } - case SVR4_F_FREESP: { struct svr4_flock ifl; ==== //depot/projects/smpng/sys/conf/files#212 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/files,v 1.1280 2008/03/12 10:11:56 jeff Exp $ +# $FreeBSD: src/sys/conf/files,v 1.1281 2008/03/18 06:52:15 alc Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and @@ -2133,7 +2133,6 @@ vm/vm_object.c standard vm/vm_page.c standard vm/vm_pageout.c standard -vm/vm_pageq.c standard vm/vm_pager.c standard vm/vm_phys.c standard vm/vm_reserv.c standard ==== //depot/projects/smpng/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c#8 (text+ko) ==== @@ -346,6 +346,10 @@ VM_OBJECT_LOCK(obj); vm_page_wakeup(m); } else { + if (__predict_false(obj->cache != NULL)) { + vm_page_cache_free(obj, OFF_TO_IDX(start), + OFF_TO_IDX(start) + 1); + } dirbytes += bytes; } len -= bytes; ==== //depot/projects/smpng/sys/contrib/opensolaris/uts/common/os/callb.c#2 (text+ko) ==== @@ -359,5 +359,5 @@ mutex_exit(&ct->ct_lock); } -SYSINIT(sol_callb, SI_SUB_DRIVERS, SI_ORDER_FIRST, callb_init, NULL) +SYSINIT(sol_callb, SI_SUB_DRIVERS, SI_ORDER_FIRST, callb_init, NULL); SYSUNINIT(sol_callb, SI_SUB_DRIVERS, SI_ORDER_FIRST, callb_fini, NULL); ==== //depot/projects/smpng/sys/contrib/opensolaris/uts/common/os/taskq.c#2 (text+ko) ==== @@ -1016,5 +1016,5 @@ kmem_cache_free(taskq_cache, tq); } -SYSINIT(sol_taskq, SI_SUB_DRIVERS, SI_ORDER_MIDDLE, taskq_init, NULL) +SYSINIT(sol_taskq, SI_SUB_DRIVERS, SI_ORDER_MIDDLE, taskq_init, NULL); SYSUNINIT(sol_taskq, SI_SUB_DRIVERS, SI_ORDER_MIDDLE, taskq_fini, NULL); ==== //depot/projects/smpng/sys/dev/aac/aac.c#59 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/dev/aac/aac.c,v 1.127 2007/12/20 21:13:58 emaste Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/aac/aac.c,v 1.128 2008/03/14 21:59:11 emaste Exp $"); /* * Driver for the Adaptec 'FSA' family of PCI/SCSI RAID adapters. @@ -246,7 +246,7 @@ */ /* - * Initialise the controller and softc + * Initialize the controller and softc */ int aac_attach(struct aac_softc *sc) @@ -256,7 +256,7 @@ debug_called(1); >>> TRUNCATED FOR MAIL (1000 lines) <<<
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200803181255.m2ICt7CT094897>