Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 1 Apr 2012 08:14:51 +0000 (UTC)
From:      Andreas Tobler <andreast@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r233754 - in projects/pseries: amd64/acpica amd64/amd64 amd64/include arm/include boot/common boot/forth boot/powerpc/ps3 cam/scsi cddl/dev/sdt conf contrib/dev/acpica/components/namesp...
Message-ID:  <201204010814.q318Ep62039912@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: andreast
Date: Sun Apr  1 08:14:50 2012
New Revision: 233754
URL: http://svn.freebsd.org/changeset/base/233754

Log:
  IFC @ r233751

Added:
  projects/pseries/dev/hwpmc/hwpmc_soft.c
     - copied unchanged from r233751, head/sys/dev/hwpmc/hwpmc_soft.c
  projects/pseries/dev/hwpmc/hwpmc_soft.h
     - copied unchanged from r233751, head/sys/dev/hwpmc/hwpmc_soft.h
  projects/pseries/dev/mfi/mfi_syspd.c
     - copied unchanged from r233751, head/sys/dev/mfi/mfi_syspd.c
  projects/pseries/dev/mfi/mfi_tbolt.c
     - copied unchanged from r233751, head/sys/dev/mfi/mfi_tbolt.c
  projects/pseries/mips/nlm/dev/cfi_pci_xlp.c
     - copied unchanged from r233751, head/sys/mips/nlm/dev/cfi_pci_xlp.c
  projects/pseries/mips/nlm/dev/uart_pci_xlp.c
     - copied unchanged from r233751, head/sys/mips/nlm/dev/uart_pci_xlp.c
  projects/pseries/x86/include/legacyvar.h
     - copied unchanged from r233751, head/sys/x86/include/legacyvar.h
  projects/pseries/x86/x86/legacy.c
     - copied unchanged from r233751, head/sys/x86/x86/legacy.c
Deleted:
  projects/pseries/amd64/amd64/legacy.c
  projects/pseries/amd64/include/legacyvar.h
  projects/pseries/i386/i386/legacy.c
  projects/pseries/i386/include/legacyvar.h
  projects/pseries/mips/nlm/intern_dev.c
  projects/pseries/mips/nlm/uart_pci_xlp.c
  projects/pseries/pc98/include/legacyvar.h
Modified:
  projects/pseries/amd64/acpica/acpi_wakeup.c
  projects/pseries/amd64/amd64/initcpu.c
  projects/pseries/amd64/amd64/mp_machdep.c
  projects/pseries/amd64/amd64/trap.c
  projects/pseries/amd64/include/pmc_mdep.h
  projects/pseries/amd64/include/vm.h
  projects/pseries/arm/include/pmc_mdep.h
  projects/pseries/boot/common/loader.8
  projects/pseries/boot/forth/loader.conf.5
  projects/pseries/boot/powerpc/ps3/start.S
  projects/pseries/cam/scsi/scsi_da.c
  projects/pseries/cddl/dev/sdt/sdt.c
  projects/pseries/conf/files
  projects/pseries/conf/files.amd64
  projects/pseries/conf/files.arm
  projects/pseries/conf/files.i386
  projects/pseries/conf/files.ia64
  projects/pseries/conf/files.mips
  projects/pseries/conf/files.pc98
  projects/pseries/conf/files.powerpc
  projects/pseries/conf/files.sparc64
  projects/pseries/conf/kern.post.mk
  projects/pseries/conf/kern.pre.mk
  projects/pseries/conf/kmod.mk
  projects/pseries/conf/options
  projects/pseries/contrib/dev/acpica/components/namespace/nsrepair.c
  projects/pseries/contrib/dev/acpica/components/parser/psargs.c
  projects/pseries/dev/acpica/acpi.c
  projects/pseries/dev/acpica/acpi_pcib_acpi.c
  projects/pseries/dev/ale/if_ale.c
  projects/pseries/dev/ale/if_alevar.h
  projects/pseries/dev/ath/if_ath.c
  projects/pseries/dev/ath/if_ath_tx.c
  projects/pseries/dev/ath/if_athvar.h
  projects/pseries/dev/atkbdc/atkbdc_isa.c
  projects/pseries/dev/atkbdc/psm.c
  projects/pseries/dev/cfi/cfi_core.c
  projects/pseries/dev/cfi/cfi_dev.c
  projects/pseries/dev/cfi/cfi_disk.c
  projects/pseries/dev/cfi/cfi_var.h
  projects/pseries/dev/e1000/if_em.c
  projects/pseries/dev/e1000/if_igb.c
  projects/pseries/dev/fxp/if_fxp.c
  projects/pseries/dev/fxp/if_fxpreg.h
  projects/pseries/dev/fxp/if_fxpvar.h
  projects/pseries/dev/hwpmc/hwpmc_amd.c
  projects/pseries/dev/hwpmc/hwpmc_core.c
  projects/pseries/dev/hwpmc/hwpmc_intel.c
  projects/pseries/dev/hwpmc/hwpmc_logging.c
  projects/pseries/dev/hwpmc/hwpmc_mips.c
  projects/pseries/dev/hwpmc/hwpmc_mod.c
  projects/pseries/dev/hwpmc/hwpmc_piv.c
  projects/pseries/dev/hwpmc/hwpmc_powerpc.c
  projects/pseries/dev/hwpmc/hwpmc_ppro.c
  projects/pseries/dev/hwpmc/hwpmc_tsc.c
  projects/pseries/dev/hwpmc/hwpmc_x86.c
  projects/pseries/dev/hwpmc/hwpmc_xscale.c
  projects/pseries/dev/hwpmc/pmc_events.h
  projects/pseries/dev/isci/isci.h
  projects/pseries/dev/isci/isci_controller.c
  projects/pseries/dev/isci/isci_domain.c
  projects/pseries/dev/isci/isci_task_request.c
  projects/pseries/dev/isci/scil/sati_read_capacity.c
  projects/pseries/dev/iwn/if_iwn.c
  projects/pseries/dev/mfi/mfi.c
  projects/pseries/dev/mfi/mfi_cam.c
  projects/pseries/dev/mfi/mfi_debug.c
  projects/pseries/dev/mfi/mfi_disk.c
  projects/pseries/dev/mfi/mfi_ioctl.h
  projects/pseries/dev/mfi/mfi_linux.c
  projects/pseries/dev/mfi/mfi_pci.c
  projects/pseries/dev/mfi/mfireg.h
  projects/pseries/dev/mfi/mfivar.h
  projects/pseries/dev/pci/pci.c
  projects/pseries/dev/sound/pci/hda/hdaa.c
  projects/pseries/dev/sound/pci/hda/hdac.c
  projects/pseries/dev/syscons/syscons.c
  projects/pseries/geom/geom_vfs.c
  projects/pseries/geom/part/g_part_ldm.c
  projects/pseries/gnu/fs/reiserfs/reiserfs_vfsops.c
  projects/pseries/i386/i386/trap.c
  projects/pseries/i386/include/pmc_mdep.h
  projects/pseries/i386/include/vm.h
  projects/pseries/i386/xbox/xboxfb.c
  projects/pseries/kern/kern_clock.c
  projects/pseries/kern/kern_lock.c
  projects/pseries/kern/kern_mutex.c
  projects/pseries/kern/kern_pmc.c
  projects/pseries/kern/kern_rwlock.c
  projects/pseries/kern/kern_sdt.c
  projects/pseries/kern/kern_sx.c
  projects/pseries/kern/kern_umtx.c
  projects/pseries/kern/subr_trap.c
  projects/pseries/mips/atheros/std.ar71xx
  projects/pseries/mips/cavium/cvmx_config.h
  projects/pseries/mips/cavium/std.octeon1
  projects/pseries/mips/conf/AR71XX_BASE
  projects/pseries/mips/conf/AR91XX_BASE
  projects/pseries/mips/conf/SWARM
  projects/pseries/mips/conf/SWARM64
  projects/pseries/mips/conf/SWARM64_SMP
  projects/pseries/mips/conf/SWARM_SMP
  projects/pseries/mips/conf/XLP
  projects/pseries/mips/conf/XLP64
  projects/pseries/mips/conf/XLPN32
  projects/pseries/mips/conf/XLR
  projects/pseries/mips/conf/XLR64
  projects/pseries/mips/conf/XLRN32
  projects/pseries/mips/conf/std.XLP
  projects/pseries/mips/include/param.h
  projects/pseries/mips/include/pmc_mdep.h
  projects/pseries/mips/include/vm.h
  projects/pseries/mips/mips/trap.c
  projects/pseries/mips/nlm/board.h
  projects/pseries/mips/nlm/dev/net/nae.c
  projects/pseries/mips/nlm/dev/net/ucore/ucore.h
  projects/pseries/mips/nlm/dev/net/ucore/ucore_app.c
  projects/pseries/mips/nlm/files.xlp
  projects/pseries/mips/nlm/hal/nlm_hal.c
  projects/pseries/mips/nlm/hal/pcibus.h
  projects/pseries/mips/nlm/hal/pic.h
  projects/pseries/mips/nlm/intr_machdep.c
  projects/pseries/mips/nlm/uart_cpu_xlp.c
  projects/pseries/mips/nlm/xlp.h
  projects/pseries/mips/nlm/xlp_machdep.c
  projects/pseries/mips/nlm/xlp_pci.c
  projects/pseries/modules/hwpmc/Makefile
  projects/pseries/modules/mfi/Makefile
  projects/pseries/netinet/ipfw/ip_fw_sockopt.c
  projects/pseries/netinet/sctp.h
  projects/pseries/netinet/sctp_constants.h
  projects/pseries/netinet/sctp_header.h
  projects/pseries/netinet/sctp_input.c
  projects/pseries/netinet/sctp_output.c
  projects/pseries/netinet/sctp_output.h
  projects/pseries/netinet/sctp_pcb.h
  projects/pseries/netinet/sctp_peeloff.c
  projects/pseries/netinet/sctp_structs.h
  projects/pseries/netinet/sctp_uio.h
  projects/pseries/netinet/sctp_usrreq.c
  projects/pseries/netinet/sctputil.c
  projects/pseries/netinet/sctputil.h
  projects/pseries/netinet/tcp_subr.c
  projects/pseries/netinet/udp_usrreq.c
  projects/pseries/netinet/udp_var.h
  projects/pseries/ofed/include/linux/io.h
  projects/pseries/ofed/include/linux/page.h
  projects/pseries/powerpc/aim/mmu_oea64.c
  projects/pseries/powerpc/aim/moea64_native.c
  projects/pseries/powerpc/include/pmc_mdep.h
  projects/pseries/powerpc/include/trap.h
  projects/pseries/powerpc/include/trap_aim.h
  projects/pseries/powerpc/include/trap_booke.h
  projects/pseries/powerpc/include/vm.h
  projects/pseries/sparc64/pci/fire.c
  projects/pseries/sparc64/pci/firereg.h
  projects/pseries/sparc64/sparc64/trap.c
  projects/pseries/sys/conf.h
  projects/pseries/sys/pmc.h
  projects/pseries/sys/pmckern.h
  projects/pseries/sys/pmclog.h
  projects/pseries/sys/sdt.h
  projects/pseries/ufs/ffs/ffs_inode.c
  projects/pseries/ufs/ffs/ffs_vfsops.c
  projects/pseries/ufs/ufs/ufs_quota.c
  projects/pseries/vm/vnode_pager.c
  projects/pseries/x86/acpica/madt.c
  projects/pseries/x86/include/endian.h
  projects/pseries/x86/include/segments.h
  projects/pseries/x86/isa/isa_dma.c
  projects/pseries/x86/pci/pci_bus.c
  projects/pseries/x86/x86/mca.c
  projects/pseries/x86/x86/mptable_pci.c
Directory Properties:
  projects/pseries/   (props changed)
  projects/pseries/boot/   (props changed)
  projects/pseries/conf/   (props changed)
  projects/pseries/contrib/dev/acpica/   (props changed)
  projects/pseries/contrib/dev/acpica/components/namespace/   (props changed)
  projects/pseries/contrib/dev/acpica/components/parser/   (props changed)
  projects/pseries/contrib/dev/acpica/include/   (props changed)

Modified: projects/pseries/amd64/acpica/acpi_wakeup.c
==============================================================================
--- projects/pseries/amd64/acpica/acpi_wakeup.c	Sun Apr  1 06:31:57 2012	(r233753)
+++ projects/pseries/amd64/acpica/acpi_wakeup.c	Sun Apr  1 08:14:50 2012	(r233754)
@@ -284,6 +284,7 @@ acpi_sleep_machdep(struct acpi_softc *sc
 	} else {
 		pmap_init_pat();
 		load_cr3(susppcbs[0]->pcb_cr3);
+		initializecpu();
 		PCPU_SET(switchtime, 0);
 		PCPU_SET(switchticks, ticks);
 #ifdef SMP

Modified: projects/pseries/amd64/amd64/initcpu.c
==============================================================================
--- projects/pseries/amd64/amd64/initcpu.c	Sun Apr  1 06:31:57 2012	(r233753)
+++ projects/pseries/amd64/amd64/initcpu.c	Sun Apr  1 08:14:50 2012	(r233754)
@@ -79,6 +79,27 @@ SYSCTL_UINT(_hw, OID_AUTO, via_feature_r
 SYSCTL_UINT(_hw, OID_AUTO, via_feature_xcrypt, CTLFLAG_RD,
 	&via_feature_xcrypt, 0, "VIA xcrypt feature available in CPU");
 
+static void
+init_amd(void)
+{
+
+	/*
+	 * Work around Erratum 721 for Family 10h and 12h processors.
+	 * These processors may incorrectly update the stack pointer
+	 * after a long series of push and/or near-call instructions,
+	 * or a long series of pop and/or near-return instructions.
+	 *
+	 * http://support.amd.com/us/Processor_TechDocs/41322_10h_Rev_Gd.pdf
+	 * http://support.amd.com/us/Processor_TechDocs/44739_12h_Rev_Gd.pdf
+	 */
+	switch (CPUID_TO_FAMILY(cpu_id)) {
+	case 0x10:
+	case 0x12:
+		wrmsr(0xc0011029, rdmsr(0xc0011029) | 1);
+		break;
+	}
+}
+
 /*
  * Initialize special VIA features
  */
@@ -135,8 +156,14 @@ initializecpu(void)
 		wrmsr(MSR_EFER, msr);
 		pg_nx = PG_NX;
 	}
-	if (cpu_vendor_id == CPU_VENDOR_CENTAUR)
+	switch (cpu_vendor_id) {
+	case CPU_VENDOR_AMD:
+		init_amd();
+		break;
+	case CPU_VENDOR_CENTAUR:
 		init_via();
+		break;
+	}
 }
 
 void

Modified: projects/pseries/amd64/amd64/mp_machdep.c
==============================================================================
--- projects/pseries/amd64/amd64/mp_machdep.c	Sun Apr  1 06:31:57 2012	(r233753)
+++ projects/pseries/amd64/amd64/mp_machdep.c	Sun Apr  1 08:14:50 2012	(r233754)
@@ -1425,6 +1425,7 @@ cpususpend_handler(void)
 	} else {
 		pmap_init_pat();
 		load_cr3(susppcbs[cpu]->pcb_cr3);
+		initializecpu();
 		PCPU_SET(switchtime, 0);
 		PCPU_SET(switchticks, ticks);
 	}

Modified: projects/pseries/amd64/amd64/trap.c
==============================================================================
--- projects/pseries/amd64/amd64/trap.c	Sun Apr  1 06:31:57 2012	(r233753)
+++ projects/pseries/amd64/amd64/trap.c	Sun Apr  1 08:14:50 2012	(r233754)
@@ -71,6 +71,9 @@ __FBSDID("$FreeBSD$");
 #include <sys/vmmeter.h>
 #ifdef HWPMC_HOOKS
 #include <sys/pmckern.h>
+PMC_SOFT_DEFINE( , , page_fault, all);
+PMC_SOFT_DEFINE( , , page_fault, read);
+PMC_SOFT_DEFINE( , , page_fault, write);
 #endif
 
 #include <vm/vm.h>
@@ -743,8 +746,20 @@ trap_pfault(frame, usermode)
 		 */
 		rv = vm_fault(map, va, ftype, VM_FAULT_NORMAL);
 	}
-	if (rv == KERN_SUCCESS)
+	if (rv == KERN_SUCCESS) {
+#ifdef HWPMC_HOOKS
+		if (ftype == VM_PROT_READ || ftype == VM_PROT_WRITE) {
+			PMC_SOFT_CALL_TF( , , page_fault, all, frame);
+			if (ftype == VM_PROT_READ)
+				PMC_SOFT_CALL_TF( , , page_fault, read,
+				    frame);
+			else
+				PMC_SOFT_CALL_TF( , , page_fault, write,
+				    frame);
+		}
+#endif
 		return (0);
+	}
 nogo:
 	if (!usermode) {
 		if (td->td_intr_nesting_level == 0 &&

Modified: projects/pseries/amd64/include/pmc_mdep.h
==============================================================================
--- projects/pseries/amd64/include/pmc_mdep.h	Sun Apr  1 06:31:57 2012	(r233753)
+++ projects/pseries/amd64/include/pmc_mdep.h	Sun Apr  1 08:14:50 2012	(r233754)
@@ -50,13 +50,13 @@ struct pmc_mdep;
  * measurement architecture have PMCs of the following classes: TSC,
  * IAF, IAP, UCF and UCP.
  */
-#define	PMC_MDEP_CLASS_INDEX_TSC	0
-#define	PMC_MDEP_CLASS_INDEX_K8		1
-#define	PMC_MDEP_CLASS_INDEX_P4		1
-#define	PMC_MDEP_CLASS_INDEX_IAP	1
-#define	PMC_MDEP_CLASS_INDEX_IAF	2
-#define	PMC_MDEP_CLASS_INDEX_UCP	3
-#define	PMC_MDEP_CLASS_INDEX_UCF	4
+#define	PMC_MDEP_CLASS_INDEX_TSC	1
+#define	PMC_MDEP_CLASS_INDEX_K8		2
+#define	PMC_MDEP_CLASS_INDEX_P4		2
+#define	PMC_MDEP_CLASS_INDEX_IAP	2
+#define	PMC_MDEP_CLASS_INDEX_IAF	3
+#define	PMC_MDEP_CLASS_INDEX_UCP	4
+#define	PMC_MDEP_CLASS_INDEX_UCF	5
 
 /*
  * On the amd64 platform we support the following PMCs.
@@ -119,6 +119,15 @@ union pmc_md_pmc {
 
 #define	PMC_IN_USERSPACE(va) ((va) <= VM_MAXUSER_ADDRESS)
 
+/* Build a fake kernel trapframe from current instruction pointer. */
+#define PMC_FAKE_TRAPFRAME(TF)						\
+	do {								\
+	(TF)->tf_cs = 0; (TF)->tf_rflags = 0;				\
+	__asm __volatile("movq %%rbp,%0" : "=r" ((TF)->tf_rbp));	\
+	__asm __volatile("movq %%rsp,%0" : "=r" ((TF)->tf_rsp));	\
+	__asm __volatile("call 1f \n\t1: pop %0" : "=r"((TF)->tf_rip));	\
+	} while (0)
+
 /*
  * Prototypes
  */

Modified: projects/pseries/amd64/include/vm.h
==============================================================================
--- projects/pseries/amd64/include/vm.h	Sun Apr  1 06:31:57 2012	(r233753)
+++ projects/pseries/amd64/include/vm.h	Sun Apr  1 08:14:50 2012	(r233754)
@@ -38,7 +38,7 @@
 #define	VM_MEMATTR_WRITE_THROUGH	((vm_memattr_t)PAT_WRITE_THROUGH)
 #define	VM_MEMATTR_WRITE_PROTECTED	((vm_memattr_t)PAT_WRITE_PROTECTED)
 #define	VM_MEMATTR_WRITE_BACK		((vm_memattr_t)PAT_WRITE_BACK)
-#define	VM_MEMATTR_UNCACHED		((vm_memattr_t)PAT_UNCACHED)
+#define	VM_MEMATTR_WEAK_UNCACHEABLE	((vm_memattr_t)PAT_UNCACHED)
 
 #define	VM_MEMATTR_DEFAULT		VM_MEMATTR_WRITE_BACK
 

Modified: projects/pseries/arm/include/pmc_mdep.h
==============================================================================
--- projects/pseries/arm/include/pmc_mdep.h	Sun Apr  1 06:31:57 2012	(r233753)
+++ projects/pseries/arm/include/pmc_mdep.h	Sun Apr  1 08:14:50 2012	(r233754)
@@ -29,7 +29,7 @@
 #ifndef _MACHINE_PMC_MDEP_H_
 #define	_MACHINE_PMC_MDEP_H_
 
-#define	PMC_MDEP_CLASS_INDEX_XSCALE	0
+#define	PMC_MDEP_CLASS_INDEX_XSCALE	1
 /*
  * On the ARM platform we support the following PMCs.
  *

Modified: projects/pseries/boot/common/loader.8
==============================================================================
--- projects/pseries/boot/common/loader.8	Sun Apr  1 06:31:57 2012	(r233753)
+++ projects/pseries/boot/common/loader.8	Sun Apr  1 08:14:50 2012	(r233754)
@@ -223,7 +223,7 @@ Loads a
 .Xr geli 8
 encryption keyfile for the given provider name.
 The key index can be specified via
-.Ar keyno 
+.Ar keyno
 or will default to zero.
 .Pp
 .It Ic ls Xo

Modified: projects/pseries/boot/forth/loader.conf.5
==============================================================================
--- projects/pseries/boot/forth/loader.conf.5	Sun Apr  1 06:31:57 2012	(r233753)
+++ projects/pseries/boot/forth/loader.conf.5	Sun Apr  1 08:14:50 2012	(r233754)
@@ -266,7 +266,7 @@ The
 stops reading
 .Nm
 when it encounters a syntax error, so any options which are vital for
-booting a particular system (i.e.\& 
+booting a particular system (i.e.\&
 .Dq Va hw.ata.ata_dma Ns "=0" )
 should precede any experimental additions to
 .Nm .

Modified: projects/pseries/boot/powerpc/ps3/start.S
==============================================================================
--- projects/pseries/boot/powerpc/ps3/start.S	Sun Apr  1 06:31:57 2012	(r233753)
+++ projects/pseries/boot/powerpc/ps3/start.S	Sun Apr  1 08:14:50 2012	(r233754)
@@ -25,6 +25,8 @@
  * $FreeBSD$
  */
 
+#define LOCORE
+
 #include <machine/trap_aim.h>
 
 /*

Modified: projects/pseries/cam/scsi/scsi_da.c
==============================================================================
--- projects/pseries/cam/scsi/scsi_da.c	Sun Apr  1 06:31:57 2012	(r233753)
+++ projects/pseries/cam/scsi/scsi_da.c	Sun Apr  1 08:14:50 2012	(r233754)
@@ -1631,9 +1631,7 @@ daregister(struct cam_periph *periph, vo
 		softc->minimum_cmd_size = 16;
 
 	/* Predict whether device may support READ CAPACITY(16). */
-	if (SID_ANSI_REV(&cgd->inq_data) >= SCSI_REV_SPC3 ||
-	    (SID_ANSI_REV(&cgd->inq_data) >= SCSI_REV_SPC &&
-	     (cgd->inq_data.spc3_flags & SPC3_SID_PROTECT))) {
+	if (SID_ANSI_REV(&cgd->inq_data) >= SCSI_REV_SPC3) {
 		softc->flags |= DA_FLAG_CAN_RC16;
 		softc->state = DA_STATE_PROBE2;
 	}

Modified: projects/pseries/cddl/dev/sdt/sdt.c
==============================================================================
--- projects/pseries/cddl/dev/sdt/sdt.c	Sun Apr  1 06:31:57 2012	(r233753)
+++ projects/pseries/cddl/dev/sdt/sdt.c	Sun Apr  1 08:14:50 2012	(r233754)
@@ -52,6 +52,8 @@ static void	sdt_destroy(void *, dtrace_i
 static void	sdt_enable(void *, dtrace_id_t, void *);
 static void	sdt_disable(void *, dtrace_id_t, void *);
 static void	sdt_load(void *);
+static int	sdt_provider_unreg_callback(struct sdt_provider *prov, 
+		    void *arg);
 
 static struct cdevsw sdt_cdevsw = {
 	.d_version	= D_VERSION,
@@ -190,7 +192,8 @@ sdt_load(void *dummy)
 
 	sdt_probe_func = dtrace_probe;
 
-	(void) sdt_provider_listall(sdt_provider_reg_callback, NULL);
+	sdt_register_callbacks(sdt_provider_reg_callback, NULL,
+	    sdt_provider_unreg_callback, NULL, sdt_probe_callback, NULL);
 }
 
 static int
@@ -206,7 +209,7 @@ sdt_unload()
 
 	sdt_probe_func = sdt_probe_stub;
 
-	(void) sdt_provider_listall(sdt_provider_unreg_callback, NULL);
+	sdt_deregister_callbacks();
 	
 	destroy_dev(sdt_cdev);
 

Modified: projects/pseries/conf/files
==============================================================================
--- projects/pseries/conf/files	Sun Apr  1 06:31:57 2012	(r233753)
+++ projects/pseries/conf/files	Sun Apr  1 08:14:50 2012	(r233754)
@@ -139,6 +139,131 @@ cam/scsi/scsi_sg.c		optional sg
 cam/scsi/scsi_targ_bh.c		optional targbh
 cam/scsi/scsi_target.c		optional targ
 cam/scsi/smp_all.c		optional scbus
+# shared between zfs and dtrace
+cddl/compat/opensolaris/kern/opensolaris.c				optional zfs compile-with "${ZFS_C}"
+cddl/compat/opensolaris/kern/opensolaris_cmn_err.c			optional zfs compile-with "${ZFS_C}"
+cddl/compat/opensolaris/kern/opensolaris_kmem.c				optional zfs compile-with "${ZFS_C}"
+cddl/compat/opensolaris/kern/opensolaris_misc.c				optional zfs compile-with "${ZFS_C}"
+cddl/compat/opensolaris/kern/opensolaris_sunddi.c			optional zfs compile-with "${ZFS_C}"
+# zfs specific
+cddl/compat/opensolaris/kern/opensolaris_acl.c				optional zfs compile-with "${ZFS_C}"
+cddl/compat/opensolaris/kern/opensolaris_kobj.c				optional zfs compile-with "${ZFS_C}"
+cddl/compat/opensolaris/kern/opensolaris_kstat.c			optional zfs compile-with "${ZFS_C}"
+cddl/compat/opensolaris/kern/opensolaris_lookup.c			optional zfs compile-with "${ZFS_C}"
+cddl/compat/opensolaris/kern/opensolaris_policy.c			optional zfs compile-with "${ZFS_C}"
+cddl/compat/opensolaris/kern/opensolaris_string.c			optional zfs compile-with "${ZFS_C}"
+cddl/compat/opensolaris/kern/opensolaris_sysevent.c			optional zfs compile-with "${ZFS_C}"
+cddl/compat/opensolaris/kern/opensolaris_taskq.c			optional zfs compile-with "${ZFS_C}"
+cddl/compat/opensolaris/kern/opensolaris_uio.c				optional zfs compile-with "${ZFS_C}"
+cddl/compat/opensolaris/kern/opensolaris_vfs.c				optional zfs compile-with "${ZFS_C}"
+cddl/compat/opensolaris/kern/opensolaris_zone.c				optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/common/acl/acl_common.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/common/avl/avl.c				optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/common/nvpair/nvpair.c				optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/common/nvpair/nvpair_alloc_fixed.c		optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/common/unicode/u8_textprep.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/common/zfs/zfs_comutil.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/common/zfs/zfs_deleg.c				optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/common/zfs/zfs_fletcher.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/common/zfs/zfs_ioctl_compat.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/common/zfs/zfs_namecheck.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/common/zfs/zfs_prop.c				optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/common/zfs/zpool_prop.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/common/zfs/zprop_common.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/gfs.c				optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/vnode.c				optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/bplist.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/bpobj.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/ddt.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/ddt_zap.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_diff.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_object.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_traverse.c		optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_zfetch.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c			optional zfs compile-with "${ZFS_C}" \
+	warning "kernel contains CDDL licensed ZFS filesystem"
+cddl/contrib/opensolaris/uts/common/fs/zfs/dnode_sync.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c		optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_deadlist.c		optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_deleg.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dir.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_prop.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_synctask.c		optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/gzip.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/lzjb.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/refcount.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/rrwlock.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/sa.c				optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/sha256.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/spa_config.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/spa_errlog.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/spa_history.c		optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/space_map.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/txg.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/uberblock.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/unique.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_cache.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_file.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_label.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_mirror.c		optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_missing.c		optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_queue.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_raidz.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_root.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/zap.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/zap_leaf.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/zap_micro.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_byteswap.c		optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ctldir.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_debug.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_fm.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_fuid.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_log.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_onexit.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_replay.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_rlock.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_sa.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/zil.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/zio_checksum.c		optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/zio_compress.c		optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/zio_inject.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/zle.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/zrlock.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/os/callb.c				optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/os/fm.c				optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/os/list.c				optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/os/nvpair_alloc_system.c		optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/zmod/adler32.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/zmod/deflate.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/zmod/inffast.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/zmod/inflate.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/zmod/inftrees.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/zmod/opensolaris_crc32.c		optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/zmod/trees.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/zmod/zmod.c				optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/zmod/zmod_subr.c			optional zfs compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/uts/common/zmod/zutil.c			optional zfs compile-with "${ZFS_C}"
 contrib/altq/altq/altq_cbq.c	optional altq \
 	compile-with "${NORMAL_C} -I$S/contrib/pf"
 contrib/altq/altq/altq_cdnr.c	optional altq
@@ -415,7 +540,7 @@ crypto/rijndael/rijndael-api.c	optional 
 crypto/sha1.c			optional carp | crypto | ipsec | \
 					 netgraph_mppc_encryption | sctp
 crypto/sha2/sha2.c		optional crypto | geom_bde | ipsec | random | \
-					 sctp
+					 sctp | zfs
 ddb/db_access.c			optional	ddb
 ddb/db_break.c			optional	ddb
 ddb/db_capture.c		optional	ddb
@@ -1135,6 +1260,7 @@ dev/hme/if_hme_sbus.c		optional hme sbus
 dev/hptiop/hptiop.c		optional hptiop scbus
 dev/hwpmc/hwpmc_logging.c	optional hwpmc
 dev/hwpmc/hwpmc_mod.c		optional hwpmc
+dev/hwpmc/hwpmc_soft.c		optional hwpmc
 dev/ichsmb/ichsmb.c		optional ichsmb
 dev/ichsmb/ichsmb_pci.c		optional ichsmb pci
 dev/ida/ida.c			optional ida
@@ -1432,6 +1558,8 @@ dev/mfi/mfi.c			optional mfi
 dev/mfi/mfi_debug.c		optional mfi
 dev/mfi/mfi_pci.c		optional mfi pci
 dev/mfi/mfi_disk.c		optional mfi
+dev/mfi/mfi_syspd.c		optional mfi
+dev/mfi/mfi_tbolt.c		optional mfi
 dev/mfi/mfi_linux.c		optional mfi compat_linux
 dev/mfi/mfi_cam.c		optional mfip scbus
 dev/mii/acphy.c			optional miibus | acphy

Modified: projects/pseries/conf/files.amd64
==============================================================================
--- projects/pseries/conf/files.amd64	Sun Apr  1 06:31:57 2012	(r233753)
+++ projects/pseries/conf/files.amd64	Sun Apr  1 08:14:50 2012	(r233754)
@@ -113,7 +113,6 @@ amd64/amd64/identcpu.c		standard
 amd64/amd64/in_cksum.c		optional	inet | inet6
 amd64/amd64/initcpu.c		standard
 amd64/amd64/io.c		optional	io
-amd64/amd64/legacy.c		standard
 amd64/amd64/locore.S		standard	no-obj
 amd64/amd64/machdep.c		standard
 amd64/amd64/mem.c		optional	mem
@@ -133,6 +132,7 @@ amd64/amd64/uio_machdep.c	standard
 amd64/amd64/uma_machdep.c	standard
 amd64/amd64/vm_machdep.c	standard
 amd64/pci/pci_cfgreg.c		optional	pci
+cddl/contrib/opensolaris/common/atomic/amd64/opensolaris_atomic.S	optional zfs compile-with "${ZFS_S}"
 crypto/aesni/aesencdec_amd64.S	optional aesni
 crypto/aesni/aeskeys_amd64.S	optional aesni
 crypto/aesni/aesni.c		optional aesni
@@ -476,6 +476,7 @@ x86/x86/busdma_machdep.c	standard
 x86/x86/dump_machdep.c		standard
 x86/x86/intr_machdep.c		standard
 x86/x86/io_apic.c		standard
+x86/x86/legacy.c		standard
 x86/x86/local_apic.c		standard
 x86/x86/mca.c			standard
 x86/x86/mptable.c		optional	mptable

Modified: projects/pseries/conf/files.arm
==============================================================================
--- projects/pseries/conf/files.arm	Sun Apr  1 06:31:57 2012	(r233753)
+++ projects/pseries/conf/files.arm	Sun Apr  1 08:14:50 2012	(r233754)
@@ -47,6 +47,7 @@ arm/arm/vm_machdep.c		standard
 arm/fpe-arm/armfpe_glue.S	optional	armfpe
 arm/fpe-arm/armfpe_init.c	optional	armfpe
 arm/fpe-arm/armfpe.S		optional	armfpe
+cddl/compat/opensolaris/kern/opensolaris_atomic.c	optional zfs compile-with "${ZFS_C}"
 dev/hwpmc/hwpmc_arm.c		optional	hwpmc
 dev/ofw/openfirm.c		optional	fdt
 dev/ofw/openfirmio.c		optional	fdt

Modified: projects/pseries/conf/files.i386
==============================================================================
--- projects/pseries/conf/files.i386	Sun Apr  1 06:31:57 2012	(r233753)
+++ projects/pseries/conf/files.i386	Sun Apr  1 08:14:50 2012	(r233754)
@@ -71,6 +71,7 @@ hptrr_lib.o			optional	hptrr			\
 	compile-with	"uudecode < $S/dev/hptrr/i386-elf.hptrr_lib.o.uu" \
 	no-implicit-rule
 #
+cddl/contrib/opensolaris/common/atomic/i386/opensolaris_atomic.S	optional zfs compile-with "${ZFS_S}"
 compat/linprocfs/linprocfs.c	optional linprocfs
 compat/linsysfs/linsysfs.c	optional linsysfs
 compat/linux/linux_emul.c	optional compat_linux
@@ -407,7 +408,6 @@ i386/i386/in_cksum.c		optional inet | in
 i386/i386/initcpu.c		standard
 i386/i386/io.c			optional io
 i386/i386/k6_mem.c		optional mem
-i386/i386/legacy.c		optional native
 i386/i386/locore.s		optional native	no-obj
 i386/xen/locore.s		optional xen	no-obj
 i386/i386/longrun.c		optional cpu_enable_longrun
@@ -528,6 +528,7 @@ x86/x86/busdma_machdep.c	standard
 x86/x86/dump_machdep.c		standard
 x86/x86/intr_machdep.c		standard
 x86/x86/io_apic.c		optional apic
+x86/x86/legacy.c		optional native
 x86/x86/local_apic.c		optional apic
 x86/x86/mca.c			standard
 x86/x86/mptable.c		optional apic native

Modified: projects/pseries/conf/files.ia64
==============================================================================
--- projects/pseries/conf/files.ia64	Sun Apr  1 06:31:57 2012	(r233753)
+++ projects/pseries/conf/files.ia64	Sun Apr  1 08:14:50 2012	(r233754)
@@ -28,6 +28,7 @@ ukbdmap.h			optional	ukbd_dflt_keymap	\
 	no-obj no-implicit-rule before-depend				\
 	clean		"ukbdmap.h"
 #
+cddl/contrib/opensolaris/common/atomic/ia64/opensolaris_atomic.S	optional zfs compile-with "${ZFS_S}"
 compat/freebsd32/freebsd32_ioctl.c	optional	compat_freebsd32
 compat/freebsd32/freebsd32_misc.c	optional	compat_freebsd32
 compat/freebsd32/freebsd32_syscalls.c	optional	compat_freebsd32

Modified: projects/pseries/conf/files.mips
==============================================================================
--- projects/pseries/conf/files.mips	Sun Apr  1 06:31:57 2012	(r233753)
+++ projects/pseries/conf/files.mips	Sun Apr  1 08:14:50 2012	(r233754)
@@ -85,6 +85,7 @@ libkern/ucmpdi2.c		standard
 #libkern/mips/strcmp.S		standard
 #libkern/mips/strncmp.S		standard
 
+cddl/compat/opensolaris/kern/opensolaris_atomic.c	optional zfs compile-with "${ZFS_C}"
 compat/freebsd32/freebsd32_ioctl.c	optional	compat_freebsd32
 compat/freebsd32/freebsd32_misc.c	optional	compat_freebsd32
 compat/freebsd32/freebsd32_syscalls.c	optional	compat_freebsd32

Modified: projects/pseries/conf/files.pc98
==============================================================================
--- projects/pseries/conf/files.pc98	Sun Apr  1 06:31:57 2012	(r233753)
+++ projects/pseries/conf/files.pc98	Sun Apr  1 08:14:50 2012	(r233754)
@@ -38,6 +38,7 @@ ukbdmap.h			optional	ukbd_dflt_keymap	\
 	no-obj no-implicit-rule before-depend				\
 	clean		"ukbdmap.h"
 #
+cddl/contrib/opensolaris/common/atomic/i386/opensolaris_atomic.S	optional zfs compile-with "${ZFS_S}"
 compat/linprocfs/linprocfs.c	optional linprocfs
 compat/linsysfs/linsysfs.c	optional linsysfs
 compat/linux/linux_emul.c	optional compat_linux
@@ -146,7 +147,6 @@ i386/i386/in_cksum.c		optional inet | in
 i386/i386/initcpu.c		standard
 i386/i386/io.c			optional io
 i386/i386/k6_mem.c		optional mem
-i386/i386/legacy.c		standard
 i386/i386/locore.s		standard	no-obj
 i386/i386/mem.c			optional mem
 i386/i386/minidump_machdep.c	standard
@@ -204,7 +204,6 @@ i386/svr4/svr4_locore.s		optional compat
 	dependency	"svr4_assym.h"	\
 	warning "COMPAT_SVR4 is broken and should be avoided"
 i386/svr4/svr4_machdep.c	optional compat_svr4
-#
 kern/kern_clocksource.c		standard
 kern/imgact_aout.c		optional compat_aout
 kern/imgact_gzip.c		optional gzip
@@ -252,6 +251,7 @@ x86/x86/busdma_machdep.c	standard
 x86/x86/dump_machdep.c		standard
 x86/x86/intr_machdep.c		standard
 x86/x86/io_apic.c		optional apic
+x86/x86/legacy.c		standard
 x86/x86/local_apic.c		optional apic
 x86/x86/mca.c			standard
 x86/x86/mptable.c		optional apic

Modified: projects/pseries/conf/files.powerpc
==============================================================================
--- projects/pseries/conf/files.powerpc	Sun Apr  1 06:31:57 2012	(r233753)
+++ projects/pseries/conf/files.powerpc	Sun Apr  1 08:14:50 2012	(r233754)
@@ -14,6 +14,9 @@ font.h				optional	sc			\
 	no-obj no-implicit-rule before-depend				\
 	clean	"font.h ${SC_DFLT_FONT}-8x14 ${SC_DFLT_FONT}-8x16 ${SC_DFLT_FONT}-8x8"
 #
+# There is only an asm version on ppc64.
+cddl/compat/opensolaris/kern/opensolaris_atomic.c			optional zfs powerpc compile-with "${ZFS_C}"
+cddl/contrib/opensolaris/common/atomic/powerpc64/opensolaris_atomic.S	optional zfs powerpc64 compile-with "${ZFS_S}"
 crypto/blowfish/bf_enc.c	optional	crypto | ipsec
 crypto/des/des_enc.c		optional	crypto | ipsec | netsmb
 dev/bm/if_bm.c			optional	bm powermac

Modified: projects/pseries/conf/files.sparc64
==============================================================================
--- projects/pseries/conf/files.sparc64	Sun Apr  1 06:31:57 2012	(r233753)
+++ projects/pseries/conf/files.sparc64	Sun Apr  1 08:14:50 2012	(r233754)
@@ -22,6 +22,7 @@ ukbdmap.h			optional	ukbd_dflt_keymap	\
 	no-obj no-implicit-rule before-depend				\
 	clean		"ukbdmap.h"
 #
+cddl/contrib/opensolaris/common/atomic/sparc64/opensolaris_atomic.S	optional zfs compile-with "${ZFS_S}"
 crypto/blowfish/bf_enc.c	optional	crypto | ipsec
 crypto/des/des_enc.c		optional	crypto | ipsec | netsmb
 dev/atkbdc/atkbd.c		optional	atkbd atkbdc

Modified: projects/pseries/conf/kern.post.mk
==============================================================================
--- projects/pseries/conf/kern.post.mk	Sun Apr  1 06:31:57 2012	(r233753)
+++ projects/pseries/conf/kern.post.mk	Sun Apr  1 08:14:50 2012	(r233754)
@@ -152,6 +152,12 @@ genassym.o: $S/$M/$M/genassym.c
 
 ${SYSTEM_OBJS} genassym.o vers.o: opt_global.h
 
+# We have "special" -I include paths for opensolaris/zfs files in 'depend'.
+CFILES_NOZFS=	${CFILES:N*/opensolaris/*}
+SFILES_NOZFS=	${SFILES:N*/opensolaris/*}
+CFILES_ZFS=	${CFILES:M*/opensolaris/*}
+SFILES_ZFS=	${SFILES:M*/opensolaris/*}
+
 kernel-depend: .depend
 # The argument list can be very long, so use make -V and xargs to
 # pass it to mkdep.
@@ -160,10 +166,14 @@ SRCS=	assym.s vnode_if.h ${BEFORE_DEPEND
 	${MFILES:T:S/.m$/.h/}
 .depend: .PRECIOUS ${SRCS}
 	rm -f .newdep
-	${MAKE} -V CFILES -V SYSTEM_CFILES -V GEN_CFILES | \
+	${MAKE} -V CFILES_NOZFS -V SYSTEM_CFILES -V GEN_CFILES | \
 	    MKDEP_CPP="${CC} -E" CC="${CC}" xargs mkdep -a -f .newdep ${CFLAGS}
-	${MAKE} -V SFILES | \
+	${MAKE} -V CFILES_ZFS | \
+	    MKDEP_CPP="${CC} -E" CC="${CC}" xargs mkdep -a -f .newdep ${ZFS_CFLAGS}
+	${MAKE} -V SFILES_NOZFS | \
 	    MKDEP_CPP="${CC} -E" xargs mkdep -a -f .newdep ${ASM_CFLAGS}
+	${MAKE} -V SFILES_ZFS | \
+	    MKDEP_CPP="${CC} -E" xargs mkdep -a -f .newdep ${ZFS_ASM_CFLAGS}
 	rm -f .depend
 	mv .newdep .depend
 

Modified: projects/pseries/conf/kern.pre.mk
==============================================================================
--- projects/pseries/conf/kern.pre.mk	Sun Apr  1 06:31:57 2012	(r233753)
+++ projects/pseries/conf/kern.pre.mk	Sun Apr  1 08:14:50 2012	(r233754)
@@ -6,7 +6,7 @@
 .include <bsd.own.mk>
 
 # backwards compat option for older systems.
-MACHINE_CPUARCH?=${MACHINE_ARCH:C/mipse[lb]/mips/:C/armeb/arm/:C/powerpc64/powerpc/}
+MACHINE_CPUARCH?=${MACHINE_ARCH:C/mips(n32|64)?(el)?/mips/:C/armeb/arm/:C/powerpc64/powerpc/}
 
 # Can be overridden by makeoptions or /etc/make.conf
 KERNEL_KO?=	kernel
@@ -131,6 +131,12 @@ NORMAL_C_NOWERROR= ${CC} -c ${CFLAGS} ${
 NORMAL_M= ${AWK} -f $S/tools/makeobjops.awk ${.IMPSRC} -c ; \
 	  ${CC} -c ${CFLAGS} ${WERROR} ${PROF} ${.PREFIX}.c
 
+# Special flags for managing the compat compiles for ZFS
+ZFS_CFLAGS=	-DFREEBSD_NAMECACHE -DBUILDING_ZFS -nostdinc -I$S/cddl/compat/opensolaris -I$S/cddl/contrib/opensolaris/uts/common/fs/zfs -I$S/cddl/contrib/opensolaris/uts/common/zmod -I$S/cddl/contrib/opensolaris/uts/common -I$S -I$S/cddl/contrib/opensolaris/common/zfs -I$S/cddl/contrib/opensolaris/common ${CFLAGS} -Wno-unknown-pragmas -Wno-missing-prototypes -Wno-undef -Wno-strict-prototypes -Wno-cast-qual -Wno-parentheses -Wno-redundant-decls -Wno-missing-braces -Wno-uninitialized -Wno-unused -Wno-inline -Wno-switch -Wno-pointer-arith -Wno-unknown-pragmas
+ZFS_ASM_CFLAGS= -x assembler-with-cpp -DLOCORE ${ZFS_CFLAGS}
+ZFS_C=		${CC} -c ${ZFS_CFLAGS} ${WERROR} ${PROF} ${.IMPSRC}
+ZFS_S=		${CC} -c ${ZFS_ASM_CFLAGS} ${WERROR} ${.IMPSRC}
+
 .if ${MK_CTF} != "no"
 NORMAL_CTFCONVERT=	${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
 .elif ${MAKE_VERSION} >= 5201111300

Modified: projects/pseries/conf/kmod.mk
==============================================================================
--- projects/pseries/conf/kmod.mk	Sun Apr  1 06:31:57 2012	(r233753)
+++ projects/pseries/conf/kmod.mk	Sun Apr  1 08:14:50 2012	(r233754)
@@ -61,7 +61,7 @@
 #
 
 # backwards compat option for older systems.
-MACHINE_CPUARCH?=${MACHINE_ARCH:C/mipse[lb]/mips/:C/armeb/arm/:C/powerpc64/powerpc/}
+MACHINE_CPUARCH?=${MACHINE_ARCH:C/mips(n32|64)?(el)?/mips/:C/armeb/arm/:C/powerpc64/powerpc/}
 
 AWK?=		awk
 KMODLOAD?=	/sbin/kldload

Modified: projects/pseries/conf/options
==============================================================================
--- projects/pseries/conf/options	Sun Apr  1 06:31:57 2012	(r233753)
+++ projects/pseries/conf/options	Sun Apr  1 08:14:50 2012	(r233754)
@@ -837,6 +837,8 @@ XBOX			opt_xbox.h
 # XFS
 XFS
 
+ZFS			opt_dontuse.h
+
 # Interrupt filtering
 INTR_FILTER
 

Modified: projects/pseries/contrib/dev/acpica/components/namespace/nsrepair.c
==============================================================================
--- projects/pseries/contrib/dev/acpica/components/namespace/nsrepair.c	Sun Apr  1 06:31:57 2012	(r233753)
+++ projects/pseries/contrib/dev/acpica/components/namespace/nsrepair.c	Sun Apr  1 08:14:50 2012	(r233754)
@@ -209,6 +209,9 @@ ObjectRepaired:
          */
         if (!(Data->Flags & ACPI_OBJECT_WRAPPED))
         {
+            NewObject->Common.ReferenceCount =
+                ReturnObject->Common.ReferenceCount;
+
             if (ReturnObject->Common.ReferenceCount > 1)
             {
                 ReturnObject->Common.ReferenceCount--;

Modified: projects/pseries/contrib/dev/acpica/components/parser/psargs.c
==============================================================================
--- projects/pseries/contrib/dev/acpica/components/parser/psargs.c	Sun Apr  1 06:31:57 2012	(r233753)
+++ projects/pseries/contrib/dev/acpica/components/parser/psargs.c	Sun Apr  1 08:14:50 2012	(r233754)
@@ -672,6 +672,7 @@ AcpiPsGetNextField (
                 Arg = AcpiPsAllocOp (AML_INT_BYTELIST_OP);
                 if (!Arg)
                 {
+                    AcpiPsFreeOp (Field);
                     return_PTR (NULL);
                 }
 
@@ -717,6 +718,7 @@ AcpiPsGetNextField (
             Arg = AcpiPsAllocOp (AML_INT_NAMEPATH_OP);
             if (!Arg)
             {
+                AcpiPsFreeOp (Field);
                 return_PTR (NULL);
             }
 

Modified: projects/pseries/dev/acpica/acpi.c
==============================================================================
--- projects/pseries/dev/acpica/acpi.c	Sun Apr  1 06:31:57 2012	(r233753)
+++ projects/pseries/dev/acpica/acpi.c	Sun Apr  1 08:14:50 2012	(r233754)
@@ -1968,6 +1968,7 @@ static void
 acpi_shutdown_final(void *arg, int howto)
 {
     struct acpi_softc *sc = (struct acpi_softc *)arg;
+    register_t intr;
     ACPI_STATUS status;
 
     /*
@@ -1983,13 +1984,15 @@ acpi_shutdown_final(void *arg, int howto
 	    return;
 	}
 	device_printf(sc->acpi_dev, "Powering system off\n");
-	ACPI_DISABLE_IRQS();
+	intr = intr_disable();
 	status = AcpiEnterSleepState(ACPI_STATE_S5, acpi_sleep_flags);
-	if (ACPI_FAILURE(status))
+	if (ACPI_FAILURE(status)) {
+	    intr_restore(intr);
 	    device_printf(sc->acpi_dev, "power-off failed - %s\n",
 		AcpiFormatException(status));
-	else {
+	} else {
 	    DELAY(1000000);
+	    intr_restore(intr);
 	    device_printf(sc->acpi_dev, "power-off failed - timeout\n");
 	}
     } else if ((howto & RB_HALT) == 0 && sc->acpi_handle_reboot) {
@@ -2641,7 +2644,8 @@ enum acpi_sleep_state {
 static ACPI_STATUS
 acpi_EnterSleepState(struct acpi_softc *sc, int state)
 {
-    ACPI_STATUS	status;
+    register_t intr;
+    ACPI_STATUS status;
     enum acpi_sleep_state slp_state;
 
     ACPI_FUNCTION_TRACE_U32((char *)(uintptr_t)__func__, state);
@@ -2730,8 +2734,9 @@ acpi_EnterSleepState(struct acpi_softc *
 	if (state == ACPI_STATE_S4)
 	    AcpiEnable();
     } else {
-	ACPI_DISABLE_IRQS();
+	intr = intr_disable();
 	status = AcpiEnterSleepState(state, acpi_sleep_flags);
+	intr_restore(intr);
 	if (ACPI_FAILURE(status)) {
 	    device_printf(sc->acpi_dev, "AcpiEnterSleepState failed - %s\n",
 			  AcpiFormatException(status));

Modified: projects/pseries/dev/acpica/acpi_pcib_acpi.c
==============================================================================
--- projects/pseries/dev/acpica/acpi_pcib_acpi.c	Sun Apr  1 06:31:57 2012	(r233753)
+++ projects/pseries/dev/acpica/acpi_pcib_acpi.c	Sun Apr  1 08:14:50 2012	(r233754)
@@ -59,8 +59,9 @@ struct acpi_hpcib_softc {
     ACPI_HANDLE		ap_handle;
     int			ap_flags;
 
-    int			ap_segment;	/* analagous to Alpha 'hose' */
+    int			ap_segment;	/* PCI domain */
     int			ap_bus;		/* bios-assigned bus number */
+    int			ap_addr;	/* device/func of PCI-Host bridge */
 
     ACPI_BUFFER		ap_prt;		/* interrupt routing table */
 #ifdef NEW_PCIB
@@ -276,7 +277,7 @@ acpi_pcib_acpi_attach(device_t dev)
     struct acpi_hpcib_softc	*sc;
     ACPI_STATUS			status;
     static int bus0_seen = 0;
-    u_int addr, slot, func, busok;
+    u_int slot, func, busok;
     uint8_t busno;
 
     ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__);
@@ -286,7 +287,7 @@ acpi_pcib_acpi_attach(device_t dev)
     sc->ap_handle = acpi_get_handle(dev);
 
     /*
-     * Get our segment number by evaluating _SEG
+     * Get our segment number by evaluating _SEG.
      * It's OK for this to not exist.
      */
     status = acpi_GetInteger(sc->ap_handle, "_SEG", &sc->ap_segment);
@@ -300,6 +301,18 @@ acpi_pcib_acpi_attach(device_t dev)
 	sc->ap_segment = 0;
     }
 
+    /*
+     * Get the address (device and function) of the associated
+     * PCI-Host bridge device from _ADR.  Assume we don't have one if
+     * it doesn't exist.
+     */
+    status = acpi_GetInteger(sc->ap_handle, "_ADR", &sc->ap_addr);
+    if (ACPI_FAILURE(status)) {
+	device_printf(dev, "could not evaluate _ADR - %s\n",
+	    AcpiFormatException(status));
+	sc->ap_addr = -1;
+    }
+
 #ifdef NEW_PCIB
     /*
      * Determine which address ranges this bridge decodes and setup
@@ -354,18 +367,10 @@ acpi_pcib_acpi_attach(device_t dev)
     busok = 1;
     if (sc->ap_segment == 0 && sc->ap_bus == 0 && bus0_seen) {
 	busok = 0;
-	status = acpi_GetInteger(sc->ap_handle, "_ADR", &addr);
-	if (ACPI_FAILURE(status)) {
-	    if (status != AE_NOT_FOUND) {
-		device_printf(dev, "could not evaluate _ADR - %s\n",
-		    AcpiFormatException(status));
-		return_VALUE (ENXIO);
-	    } else
-		device_printf(dev, "couldn't find _ADR\n");
-	} else {
+	if (sc->ap_addr != -1) {
 	    /* XXX: We assume bus 0. */
-	    slot = ACPI_ADR_PCI_SLOT(addr);
-	    func = ACPI_ADR_PCI_FUNC(addr);
+	    slot = ACPI_ADR_PCI_SLOT(sc->ap_addr);
+	    func = ACPI_ADR_PCI_FUNC(sc->ap_addr);
 	    if (bootverbose)
 		device_printf(dev, "reading config registers from 0:%d:%d\n",
 		    slot, func);
@@ -488,10 +493,24 @@ static int
 acpi_pcib_map_msi(device_t pcib, device_t dev, int irq, uint64_t *addr,
     uint32_t *data)
 {
-	device_t bus;
+	struct acpi_hpcib_softc *sc;
+	device_t bus, hostb;
+	int error;
 
 	bus = device_get_parent(pcib);
-	return (PCIB_MAP_MSI(device_get_parent(bus), dev, irq, addr, data));
+	error = PCIB_MAP_MSI(device_get_parent(bus), dev, irq, addr, data);
+	if (error)
+		return (error);
+
+	sc = device_get_softc(dev);
+	if (sc->ap_addr == -1)
+		return (0);
+	/* XXX: Assumes all bridges are on bus 0. */
+	hostb = pci_find_dbsf(sc->ap_segment, 0, ACPI_ADR_PCI_SLOT(sc->ap_addr),
+	    ACPI_ADR_PCI_FUNC(sc->ap_addr));
+	if (hostb != NULL)
+		pci_ht_map_msi(hostb, *addr);
+	return (0);
 }
 
 struct resource *

Modified: projects/pseries/dev/ale/if_ale.c
==============================================================================
--- projects/pseries/dev/ale/if_ale.c	Sun Apr  1 06:31:57 2012	(r233753)
+++ projects/pseries/dev/ale/if_ale.c	Sun Apr  1 08:14:50 2012	(r233754)
@@ -115,7 +115,6 @@ static void	ale_init_tx_ring(struct ale_
 static void	ale_int_task(void *, int);
 static int	ale_intr(void *);
 static int	ale_ioctl(struct ifnet *, u_long, caddr_t);
-static void	ale_link_task(void *, int);
 static void	ale_mac_config(struct ale_softc *);
 static int	ale_miibus_readreg(device_t, int, int);
 static void	ale_miibus_statchg(device_t);
@@ -253,10 +252,45 @@ static void
 ale_miibus_statchg(device_t dev)
 {
 	struct ale_softc *sc;
+	struct mii_data *mii;
+	struct ifnet *ifp;
+	uint32_t reg;
 
 	sc = device_get_softc(dev);
+	mii = device_get_softc(sc->ale_miibus);
+	ifp = sc->ale_ifp;
+	if (mii == NULL || ifp == NULL ||
+	    (ifp->if_drv_flags & IFF_DRV_RUNNING) == 0)
+		return;
+
+	sc->ale_flags &= ~ALE_FLAG_LINK;
+	if ((mii->mii_media_status & (IFM_ACTIVE | IFM_AVALID)) ==
+	    (IFM_ACTIVE | IFM_AVALID)) {
+		switch (IFM_SUBTYPE(mii->mii_media_active)) {
+		case IFM_10_T:
+		case IFM_100_TX:
+			sc->ale_flags |= ALE_FLAG_LINK;
+			break;
+		case IFM_1000_T:
+			if ((sc->ale_flags & ALE_FLAG_FASTETHER) == 0)
+				sc->ale_flags |= ALE_FLAG_LINK;
+			break;
+		default:
+			break;
+		}
+	}
 
-	taskqueue_enqueue(taskqueue_swi, &sc->ale_link_task);
+	/* Stop Rx/Tx MACs. */
+	ale_stop_mac(sc);
+
+	/* Program MACs with resolved speed/duplex/flow-control. */
+	if ((sc->ale_flags & ALE_FLAG_LINK) != 0) {
+		ale_mac_config(sc);
+		/* Reenable Tx/Rx MACs. */
+		reg = CSR_READ_4(sc, ALE_MAC_CFG);
+		reg |= MAC_CFG_TX_ENB | MAC_CFG_RX_ENB;
+		CSR_WRITE_4(sc, ALE_MAC_CFG, reg);
+	}
 }
 
 static void
@@ -267,6 +301,10 @@ ale_mediastatus(struct ifnet *ifp, struc
 
 	sc = ifp->if_softc;
 	ALE_LOCK(sc);
+	if ((ifp->if_flags & IFF_UP) == 0) {
+		ALE_UNLOCK(sc);
+		return;
+	}
 	mii = device_get_softc(sc->ale_miibus);
 
 	mii_pollstat(mii);
@@ -425,7 +463,6 @@ ale_attach(device_t dev)
 	    MTX_DEF);
 	callout_init_mtx(&sc->ale_tick_ch, &sc->ale_mtx, 0);
 	TASK_INIT(&sc->ale_int_task, 0, ale_int_task, sc);
-	TASK_INIT(&sc->ale_link_task, 0, ale_link_task, sc);
 
 	/* Map the device. */
 	pci_enable_busmaster(dev);
@@ -679,7 +716,6 @@ ale_detach(device_t dev)
 		ALE_UNLOCK(sc);
 		callout_drain(&sc->ale_tick_ch);
 		taskqueue_drain(sc->ale_tq, &sc->ale_int_task);
-		taskqueue_drain(taskqueue_swi, &sc->ale_link_task);
 	}
 
 	if (sc->ale_tq != NULL) {
@@ -2076,57 +2112,6 @@ ale_mac_config(struct ale_softc *sc)
 }
 
 static void
-ale_link_task(void *arg, int pending)
-{
-	struct ale_softc *sc;
-	struct mii_data *mii;
-	struct ifnet *ifp;
-	uint32_t reg;
-
-	sc = (struct ale_softc *)arg;
-
-	ALE_LOCK(sc);
-	mii = device_get_softc(sc->ale_miibus);
-	ifp = sc->ale_ifp;
-	if (mii == NULL || ifp == NULL ||
-	    (ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) {
-		ALE_UNLOCK(sc);
-		return;
-	}
-
-	sc->ale_flags &= ~ALE_FLAG_LINK;
-	if ((mii->mii_media_status & (IFM_ACTIVE | IFM_AVALID)) ==
-	    (IFM_ACTIVE | IFM_AVALID)) {
-		switch (IFM_SUBTYPE(mii->mii_media_active)) {
-		case IFM_10_T:
-		case IFM_100_TX:
-			sc->ale_flags |= ALE_FLAG_LINK;
-			break;
-		case IFM_1000_T:
-			if ((sc->ale_flags & ALE_FLAG_FASTETHER) == 0)
-				sc->ale_flags |= ALE_FLAG_LINK;
-			break;
-		default:
-			break;
-		}
-	}
-
-	/* Stop Rx/Tx MACs. */
-	ale_stop_mac(sc);
-
-	/* Program MACs with resolved speed/duplex/flow-control. */
-	if ((sc->ale_flags & ALE_FLAG_LINK) != 0) {
-		ale_mac_config(sc);
-		/* Reenable Tx/Rx MACs. */
-		reg = CSR_READ_4(sc, ALE_MAC_CFG);
-		reg |= MAC_CFG_TX_ENB | MAC_CFG_RX_ENB;
-		CSR_WRITE_4(sc, ALE_MAC_CFG, reg);
-	}
-
-	ALE_UNLOCK(sc);
-}
-
-static void
 ale_stats_clear(struct ale_softc *sc)
 {
 	struct smb sb;
@@ -2876,14 +2861,14 @@ ale_init_locked(struct ale_softc *sc)
 	CSR_WRITE_4(sc, ALE_INTR_STATUS, 0xFFFFFFFF);
 	CSR_WRITE_4(sc, ALE_INTR_STATUS, 0);
 
+	ifp->if_drv_flags |= IFF_DRV_RUNNING;
+	ifp->if_drv_flags &= ~IFF_DRV_OACTIVE;
+
 	sc->ale_flags &= ~ALE_FLAG_LINK;
 	/* Switch to the current media. */
 	mii_mediachg(mii);
 
 	callout_reset(&sc->ale_tick_ch, hz, ale_tick, sc);
-
-	ifp->if_drv_flags |= IFF_DRV_RUNNING;
-	ifp->if_drv_flags &= ~IFF_DRV_OACTIVE;
 }
 
 static void

Modified: projects/pseries/dev/ale/if_alevar.h
==============================================================================
--- projects/pseries/dev/ale/if_alevar.h	Sun Apr  1 06:31:57 2012	(r233753)
+++ projects/pseries/dev/ale/if_alevar.h	Sun Apr  1 08:14:50 2012	(r233754)
@@ -221,7 +221,6 @@ struct ale_softc {
 	int			ale_pagesize;
 
 	struct task		ale_int_task;
-	struct task		ale_link_task;
 	struct taskqueue	*ale_tq;
 	struct mtx		ale_mtx;
 };

Modified: projects/pseries/dev/ath/if_ath.c
==============================================================================
--- projects/pseries/dev/ath/if_ath.c	Sun Apr  1 06:31:57 2012	(r233753)
+++ projects/pseries/dev/ath/if_ath.c	Sun Apr  1 08:14:50 2012	(r233754)
@@ -191,6 +191,7 @@ static void	ath_tx_cleanup(struct ath_so
 static void	ath_tx_proc_q0(void *, int);
 static void	ath_tx_proc_q0123(void *, int);
 static void	ath_tx_proc(void *, int);
+static void	ath_txq_sched_tasklet(void *, int);
 static int	ath_chan_set(struct ath_softc *, struct ieee80211_channel *);
 static void	ath_draintxq(struct ath_softc *, ATH_RESET_TYPE reset_type);
 static void	ath_stoprecv(struct ath_softc *, int);
@@ -398,6 +399,7 @@ ath_attach(u_int16_t devid, struct ath_s
 	TASK_INIT(&sc->sc_bmisstask, 0, ath_bmiss_proc, sc);
 	TASK_INIT(&sc->sc_bstucktask,0, ath_bstuck_proc, sc);
 	TASK_INIT(&sc->sc_resettask,0, ath_reset_proc, sc);
+	TASK_INIT(&sc->sc_txqtask,0, ath_txq_sched_tasklet, sc);
 
 	/*
 	 * Allocate hardware transmit queues: one queue for
@@ -5132,6 +5134,41 @@ ath_tx_proc(void *arg, int npending)
 #undef	TXQACTIVE
 
 /*
+ * Deferred processing of TXQ rescheduling.
+ */
+static void
+ath_txq_sched_tasklet(void *arg, int npending)
+{
+	struct ath_softc *sc = arg;
+	int i;
+
+	/* XXX is skipping ok? */
+	ATH_PCU_LOCK(sc);
+#if 0
+	if (sc->sc_inreset_cnt > 0) {
+		device_printf(sc->sc_dev,
+		    "%s: sc_inreset_cnt > 0; skipping\n", __func__);
+		ATH_PCU_UNLOCK(sc);
+		return;

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201204010814.q318Ep62039912>