svn commit: r228915 - in user/mjacob/sys: amd64/conf arm/arm arm/econa arm/include boot/forth boot/i386/boot0 boot/i386/libi386 cam/ata cam/scsi cddl/compat/opensolaris/kern cddl/contrib/opensolari...

Matt Jacob mjacob at FreeBSD.org
Tue Dec 27 15:05:57 UTC 2011


Author: mjacob
Date: Tue Dec 27 15:05:55 2011
New Revision: 228915
URL: http://svn.freebsd.org/changeset/base/228915

Log:
  IFC at 228914

Added:
  user/mjacob/sys/dev/ath/if_ath_led.c
     - copied unchanged from r228914, head/sys/dev/ath/if_ath_led.c
  user/mjacob/sys/dev/ath/if_ath_led.h
     - copied unchanged from r228914, head/sys/dev/ath/if_ath_led.h
  user/mjacob/sys/dev/cxgbe/firmware/
     - copied from r228914, head/sys/dev/cxgbe/firmware/
  user/mjacob/sys/modules/carp/
     - copied from r228914, head/sys/modules/carp/
  user/mjacob/sys/modules/cxgbe/firmware/
     - copied from r228914, head/sys/modules/cxgbe/firmware/
  user/mjacob/sys/modules/usb/avr32dci/
     - copied from r228914, head/sys/modules/usb/avr32dci/
  user/mjacob/sys/sys/_kstack_cache.h
     - copied unchanged from r228914, head/sys/sys/_kstack_cache.h
Deleted:
  user/mjacob/sys/dev/cxgbe/common/t4fw_interface.h
  user/mjacob/sys/fs/ext2fs/ext2_readwrite.c
  user/mjacob/sys/libkern/gets.c
  user/mjacob/sys/modules/if_carp/
Modified:
  user/mjacob/sys/amd64/conf/NOTES
  user/mjacob/sys/arm/arm/irq_dispatch.S
  user/mjacob/sys/arm/arm/pmap.c
  user/mjacob/sys/arm/arm/vm_machdep.c
  user/mjacob/sys/arm/econa/ehci_ebus.c
  user/mjacob/sys/arm/econa/ohci_ec.c
  user/mjacob/sys/arm/include/pmap.h
  user/mjacob/sys/boot/forth/loader.conf
  user/mjacob/sys/boot/i386/boot0/boot0.S
  user/mjacob/sys/boot/i386/libi386/time.c
  user/mjacob/sys/cam/ata/ata_da.c
  user/mjacob/sys/cam/scsi/scsi_all.h
  user/mjacob/sys/cam/scsi/scsi_cd.c
  user/mjacob/sys/cam/scsi/scsi_da.c
  user/mjacob/sys/cddl/compat/opensolaris/kern/opensolaris_cmn_err.c
  user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/space_map.c
  user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_replay.c
  user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
  user/mjacob/sys/conf/NOTES
  user/mjacob/sys/conf/files
  user/mjacob/sys/conf/kern.mk
  user/mjacob/sys/conf/kern.pre.mk
  user/mjacob/sys/conf/systags.sh
  user/mjacob/sys/contrib/ngatm/netnatm/msg/uni_ie.c
  user/mjacob/sys/contrib/pf/net/if_pfsync.c
  user/mjacob/sys/ddb/db_command.c
  user/mjacob/sys/ddb/db_ps.c
  user/mjacob/sys/ddb/db_thread.c
  user/mjacob/sys/ddb/ddb.h
  user/mjacob/sys/dev/aic7xxx/aicasm/aicasm_macro_scan.l
  user/mjacob/sys/dev/aic7xxx/aicasm/aicasm_scan.l
  user/mjacob/sys/dev/an/if_an.c
  user/mjacob/sys/dev/ata/ata-pci.h
  user/mjacob/sys/dev/ata/chipsets/ata-intel.c
  user/mjacob/sys/dev/ath/ath_hal/ar5212/ar5212_misc.c
  user/mjacob/sys/dev/ath/ath_hal/ar5416/ar2133.c
  user/mjacob/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c
  user/mjacob/sys/dev/ath/ath_hal/ar5416/ar5416_gpio.c
  user/mjacob/sys/dev/ath/ath_hal/ar5416/ar5416_misc.c
  user/mjacob/sys/dev/ath/ath_hal/ar5416/ar5416reg.h
  user/mjacob/sys/dev/ath/ath_hal/ar9002/ar9280.c
  user/mjacob/sys/dev/ath/ath_hal/ar9002/ar9285.c
  user/mjacob/sys/dev/ath/ath_hal/ar9002/ar9287.c
  user/mjacob/sys/dev/ath/ath_hal/ar9002/ar9287.h
  user/mjacob/sys/dev/ath/if_ath.c
  user/mjacob/sys/dev/ath/if_ath_sysctl.c
  user/mjacob/sys/dev/ath/if_athvar.h
  user/mjacob/sys/dev/bwi/if_bwi.c
  user/mjacob/sys/dev/bwn/if_bwn.c
  user/mjacob/sys/dev/bxe/bxe_reg.h
  user/mjacob/sys/dev/cfe/cfe_console.c
  user/mjacob/sys/dev/cxgb/common/cxgb_aq100x.c
  user/mjacob/sys/dev/cxgbe/adapter.h
  user/mjacob/sys/dev/cxgbe/common/common.h
  user/mjacob/sys/dev/cxgbe/common/t4_hw.c
  user/mjacob/sys/dev/cxgbe/common/t4_hw.h
  user/mjacob/sys/dev/cxgbe/offload.h
  user/mjacob/sys/dev/cxgbe/osdep.h
  user/mjacob/sys/dev/cxgbe/t4_ioctl.h
  user/mjacob/sys/dev/cxgbe/t4_l2t.c
  user/mjacob/sys/dev/cxgbe/t4_l2t.h
  user/mjacob/sys/dev/cxgbe/t4_main.c
  user/mjacob/sys/dev/cxgbe/t4_sge.c
  user/mjacob/sys/dev/dcons/dcons_os.c
  user/mjacob/sys/dev/drm/mga_drv.h
  user/mjacob/sys/dev/e1000/if_igb.c
  user/mjacob/sys/dev/e1000/if_igb.h
  user/mjacob/sys/dev/esp/ncr53c9x.c
  user/mjacob/sys/dev/fxp/if_fxp.c
  user/mjacob/sys/dev/gpio/gpioiic.c
  user/mjacob/sys/dev/hwpmc/hwpmc_core.c
  user/mjacob/sys/dev/hwpmc/hwpmc_powerpc.c
  user/mjacob/sys/dev/hwpmc/pmc_events.h
  user/mjacob/sys/dev/if_ndis/if_ndis.c
  user/mjacob/sys/dev/iicbus/iicbb.c
  user/mjacob/sys/dev/ipw/if_ipw.c
  user/mjacob/sys/dev/isp/isp_freebsd.c
  user/mjacob/sys/dev/isp/isp_freebsd.h
  user/mjacob/sys/dev/iwi/if_iwi.c
  user/mjacob/sys/dev/iwn/if_iwn.c
  user/mjacob/sys/dev/malo/if_malo.c
  user/mjacob/sys/dev/msk/if_msk.c
  user/mjacob/sys/dev/mwl/if_mwl.c
  user/mjacob/sys/dev/netmap/if_em_netmap.h
  user/mjacob/sys/dev/netmap/if_igb_netmap.h
  user/mjacob/sys/dev/netmap/ixgbe_netmap.h
  user/mjacob/sys/dev/netmap/netmap.c
  user/mjacob/sys/dev/netmap/netmap_kern.h
  user/mjacob/sys/dev/ofw/ofw_console.c
  user/mjacob/sys/dev/pci/isa_pci.c
  user/mjacob/sys/dev/ral/rt2560.c
  user/mjacob/sys/dev/ral/rt2661.c
  user/mjacob/sys/dev/sio/sio.c
  user/mjacob/sys/dev/sound/pci/hda/hdac.c
  user/mjacob/sys/dev/sound/usb/uaudio.c
  user/mjacob/sys/dev/sound/usb/uaudio.h
  user/mjacob/sys/dev/syscons/syscons.c
  user/mjacob/sys/dev/syscons/syscons.h
  user/mjacob/sys/dev/ti/if_ti.c
  user/mjacob/sys/dev/twa/tw_osl.h
  user/mjacob/sys/dev/uart/uart_tty.c
  user/mjacob/sys/dev/usb/controller/at91dci.c
  user/mjacob/sys/dev/usb/controller/at91dci.h
  user/mjacob/sys/dev/usb/controller/at91dci_atmelarm.c
  user/mjacob/sys/dev/usb/controller/atmegadci.c
  user/mjacob/sys/dev/usb/controller/atmegadci.h
  user/mjacob/sys/dev/usb/controller/atmegadci_atmelarm.c
  user/mjacob/sys/dev/usb/controller/avr32dci.c
  user/mjacob/sys/dev/usb/controller/avr32dci.h
  user/mjacob/sys/dev/usb/controller/ehci.c
  user/mjacob/sys/dev/usb/controller/ehci.h
  user/mjacob/sys/dev/usb/controller/ehci_ixp4xx.c
  user/mjacob/sys/dev/usb/controller/ehci_mv.c
  user/mjacob/sys/dev/usb/controller/ehci_pci.c
  user/mjacob/sys/dev/usb/controller/musb_otg.c
  user/mjacob/sys/dev/usb/controller/musb_otg.h
  user/mjacob/sys/dev/usb/controller/musb_otg_atmelarm.c
  user/mjacob/sys/dev/usb/controller/ohci.c
  user/mjacob/sys/dev/usb/controller/ohci.h
  user/mjacob/sys/dev/usb/controller/ohci_atmelarm.c
  user/mjacob/sys/dev/usb/controller/ohci_pci.c
  user/mjacob/sys/dev/usb/controller/ohci_s3c24x0.c
  user/mjacob/sys/dev/usb/controller/uhci.c
  user/mjacob/sys/dev/usb/controller/uhci.h
  user/mjacob/sys/dev/usb/controller/uhci_pci.c
  user/mjacob/sys/dev/usb/controller/usb_controller.c
  user/mjacob/sys/dev/usb/controller/uss820dci.c
  user/mjacob/sys/dev/usb/controller/uss820dci.h
  user/mjacob/sys/dev/usb/controller/uss820dci_atmelarm.c
  user/mjacob/sys/dev/usb/controller/xhci_pci.c
  user/mjacob/sys/dev/usb/controller/xhcireg.h
  user/mjacob/sys/dev/usb/input/ukbd.c
  user/mjacob/sys/dev/usb/net/if_axe.c
  user/mjacob/sys/dev/usb/serial/usb_serial.c
  user/mjacob/sys/dev/usb/usb_bus.h
  user/mjacob/sys/dev/usb/usb_controller.h
  user/mjacob/sys/dev/usb/usb_hub.c
  user/mjacob/sys/dev/usb/usb_if.m
  user/mjacob/sys/dev/usb/usb_transfer.c
  user/mjacob/sys/dev/usb/usbdevs
  user/mjacob/sys/dev/usb/wlan/if_rum.c
  user/mjacob/sys/dev/usb/wlan/if_run.c
  user/mjacob/sys/dev/usb/wlan/if_uath.c
  user/mjacob/sys/dev/usb/wlan/if_upgt.c
  user/mjacob/sys/dev/usb/wlan/if_ural.c
  user/mjacob/sys/dev/usb/wlan/if_urtw.c
  user/mjacob/sys/dev/usb/wlan/if_zyd.c
  user/mjacob/sys/dev/viawd/viawd.c
  user/mjacob/sys/dev/viawd/viawd.h
  user/mjacob/sys/dev/wi/if_wi.c
  user/mjacob/sys/dev/wpi/if_wpi.c
  user/mjacob/sys/dev/xen/console/console.c
  user/mjacob/sys/fs/ext2fs/ext2_alloc.c
  user/mjacob/sys/fs/ext2fs/ext2_balloc.c
  user/mjacob/sys/fs/ext2fs/ext2_bmap.c
  user/mjacob/sys/fs/ext2fs/ext2_extern.h
  user/mjacob/sys/fs/ext2fs/ext2_inode.c
  user/mjacob/sys/fs/ext2fs/ext2_lookup.c
  user/mjacob/sys/fs/ext2fs/ext2_subr.c
  user/mjacob/sys/fs/ext2fs/ext2_vfsops.c
  user/mjacob/sys/fs/ext2fs/ext2_vnops.c
  user/mjacob/sys/fs/ext2fs/ext2fs.h
  user/mjacob/sys/fs/ext2fs/fs.h
  user/mjacob/sys/fs/msdosfs/msdosfs_conv.c
  user/mjacob/sys/fs/nfs/nfs_commonkrpc.c
  user/mjacob/sys/fs/nfsclient/nfs_clrpcops.c
  user/mjacob/sys/fs/nfsserver/nfs_nfsdport.c
  user/mjacob/sys/fs/ntfs/ntfs_subr.c
  user/mjacob/sys/fs/ntfs/ntfs_subr.h
  user/mjacob/sys/fs/ntfs/ntfs_vnops.c
  user/mjacob/sys/gdb/gdb_cons.c
  user/mjacob/sys/geom/eli/g_eli.c
  user/mjacob/sys/i386/conf/NOTES
  user/mjacob/sys/i386/i386/locore.s
  user/mjacob/sys/i386/i386/mp_machdep.c
  user/mjacob/sys/i386/i386/pmap.c
  user/mjacob/sys/i386/xen/mp_machdep.c
  user/mjacob/sys/i386/xen/pmap.c
  user/mjacob/sys/ia64/ia64/ssc.c
  user/mjacob/sys/ia64/ia64/uma_machdep.c
  user/mjacob/sys/kern/kern_conf.c
  user/mjacob/sys/kern/kern_cons.c
  user/mjacob/sys/kern/kern_ntptime.c
  user/mjacob/sys/kern/kern_proc.c
  user/mjacob/sys/kern/kern_shutdown.c
  user/mjacob/sys/kern/kern_tc.c
  user/mjacob/sys/kern/sched_ule.c
  user/mjacob/sys/kern/subr_kdb.c
  user/mjacob/sys/kern/sys_pipe.c
  user/mjacob/sys/kern/uipc_shm.c
  user/mjacob/sys/kern/vfs_mountroot.c
  user/mjacob/sys/kern/vfs_subr.c
  user/mjacob/sys/kern/vfs_syscalls.c
  user/mjacob/sys/kern/vnode_if.src
  user/mjacob/sys/mips/adm5120/console.c
  user/mjacob/sys/mips/atheros/ar71xx_ehci.c
  user/mjacob/sys/mips/atheros/ar71xx_gpio.c
  user/mjacob/sys/mips/atheros/ar71xx_ohci.c
  user/mjacob/sys/mips/cavium/octeon_machdep.c
  user/mjacob/sys/mips/cavium/usb/octusb.c
  user/mjacob/sys/mips/cavium/usb/octusb.h
  user/mjacob/sys/mips/cavium/usb/octusb_octeon.c
  user/mjacob/sys/mips/conf/AR91XX_BASE
  user/mjacob/sys/mips/conf/AR91XX_BASE.hints
  user/mjacob/sys/mips/conf/TP-WN1043ND.hints
  user/mjacob/sys/mips/rmi/xls_ehci.c
  user/mjacob/sys/mips/rt305x/rt305x_dotg.c
  user/mjacob/sys/modules/Makefile
  user/mjacob/sys/modules/aic7xxx/ahc/ahc_pci/Makefile
  user/mjacob/sys/modules/aic7xxx/ahd/Makefile
  user/mjacob/sys/modules/asr/Makefile
  user/mjacob/sys/modules/ath/Makefile
  user/mjacob/sys/modules/cxgbe/Makefile
  user/mjacob/sys/modules/nve/Makefile
  user/mjacob/sys/modules/pfsync/Makefile
  user/mjacob/sys/modules/usb/Makefile
  user/mjacob/sys/net/if.c
  user/mjacob/sys/net/if.h
  user/mjacob/sys/net/if_ethersubr.c
  user/mjacob/sys/net/if_types.h
  user/mjacob/sys/net/if_var.h
  user/mjacob/sys/net/route.c
  user/mjacob/sys/net/rtsock.c
  user/mjacob/sys/net80211/ieee80211.c
  user/mjacob/sys/net80211/ieee80211_acl.c
  user/mjacob/sys/net80211/ieee80211_hostap.c
  user/mjacob/sys/net80211/ieee80211_ht.c
  user/mjacob/sys/net80211/ieee80211_ioctl.c
  user/mjacob/sys/net80211/ieee80211_mesh.c
  user/mjacob/sys/net80211/ieee80211_proto.h
  user/mjacob/sys/net80211/ieee80211_var.h
  user/mjacob/sys/netinet/if_ether.c
  user/mjacob/sys/netinet/if_ether.h
  user/mjacob/sys/netinet/in.c
  user/mjacob/sys/netinet/in_var.h
  user/mjacob/sys/netinet/ip_carp.c
  user/mjacob/sys/netinet/ip_carp.h
  user/mjacob/sys/netinet/sctp.h
  user/mjacob/sys/netinet/sctp_asconf.c
  user/mjacob/sys/netinet/sctp_asconf.h
  user/mjacob/sys/netinet/sctp_auth.c
  user/mjacob/sys/netinet/sctp_auth.h
  user/mjacob/sys/netinet/sctp_bsd_addr.c
  user/mjacob/sys/netinet/sctp_bsd_addr.h
  user/mjacob/sys/netinet/sctp_cc_functions.c
  user/mjacob/sys/netinet/sctp_constants.h
  user/mjacob/sys/netinet/sctp_crc32.h
  user/mjacob/sys/netinet/sctp_dtrace_declare.h
  user/mjacob/sys/netinet/sctp_dtrace_define.h
  user/mjacob/sys/netinet/sctp_header.h
  user/mjacob/sys/netinet/sctp_indata.c
  user/mjacob/sys/netinet/sctp_indata.h
  user/mjacob/sys/netinet/sctp_input.c
  user/mjacob/sys/netinet/sctp_input.h
  user/mjacob/sys/netinet/sctp_os.h
  user/mjacob/sys/netinet/sctp_output.c
  user/mjacob/sys/netinet/sctp_output.h
  user/mjacob/sys/netinet/sctp_pcb.c
  user/mjacob/sys/netinet/sctp_pcb.h
  user/mjacob/sys/netinet/sctp_peeloff.c
  user/mjacob/sys/netinet/sctp_peeloff.h
  user/mjacob/sys/netinet/sctp_ss_functions.c
  user/mjacob/sys/netinet/sctp_structs.h
  user/mjacob/sys/netinet/sctp_sysctl.c
  user/mjacob/sys/netinet/sctp_sysctl.h
  user/mjacob/sys/netinet/sctp_timer.c
  user/mjacob/sys/netinet/sctp_timer.h
  user/mjacob/sys/netinet/sctp_uio.h
  user/mjacob/sys/netinet/sctp_usrreq.c
  user/mjacob/sys/netinet/sctp_var.h
  user/mjacob/sys/netinet/sctputil.c
  user/mjacob/sys/netinet/sctputil.h
  user/mjacob/sys/netinet6/icmp6.c
  user/mjacob/sys/netinet6/in6.c
  user/mjacob/sys/netinet6/in6_ifattach.c
  user/mjacob/sys/netinet6/in6_proto.c
  user/mjacob/sys/netinet6/in6_var.h
  user/mjacob/sys/netinet6/ip6_mroute.c
  user/mjacob/sys/netinet6/nd6.c
  user/mjacob/sys/netinet6/nd6_nbr.c
  user/mjacob/sys/netinet6/sctp6_usrreq.c
  user/mjacob/sys/netinet6/sctp6_var.h
  user/mjacob/sys/nfsclient/nfs_krpc.c
  user/mjacob/sys/nfsserver/nfs_serv.c
  user/mjacob/sys/pc98/cbus/sio.c
  user/mjacob/sys/powerpc/aim/locore32.S
  user/mjacob/sys/powerpc/aim/machdep.c
  user/mjacob/sys/powerpc/aim/mmu_oea.c
  user/mjacob/sys/powerpc/aim/mmu_oea64.c
  user/mjacob/sys/powerpc/aim/trap.c
  user/mjacob/sys/powerpc/aim/uma_machdep.c
  user/mjacob/sys/powerpc/include/pmc_mdep.h
  user/mjacob/sys/powerpc/include/spr.h
  user/mjacob/sys/powerpc/mambo/mambo_console.c
  user/mjacob/sys/powerpc/ps3/ehci_ps3.c
  user/mjacob/sys/powerpc/ps3/ohci_ps3.c
  user/mjacob/sys/powerpc/ps3/ps3-hv-asm.awk
  user/mjacob/sys/powerpc/ps3/ps3-hvcall.S
  user/mjacob/sys/powerpc/ps3/ps3-hvcall.h
  user/mjacob/sys/powerpc/ps3/ps3-hvcall.master
  user/mjacob/sys/powerpc/ps3/ps3_syscons.c
  user/mjacob/sys/sparc64/sparc64/vm_machdep.c
  user/mjacob/sys/sys/cdefs.h
  user/mjacob/sys/sys/cons.h
  user/mjacob/sys/sys/libkern.h
  user/mjacob/sys/sys/mman.h
  user/mjacob/sys/sys/param.h
  user/mjacob/sys/sys/pmc.h
  user/mjacob/sys/sys/proc.h
  user/mjacob/sys/sys/sockio.h
  user/mjacob/sys/sys/stdint.h
  user/mjacob/sys/sys/taskqueue.h
  user/mjacob/sys/sys/timeffc.h
  user/mjacob/sys/sys/vnode.h
  user/mjacob/sys/vm/vm_glue.c
  user/mjacob/sys/vm/vm_meter.c
  user/mjacob/sys/vm/vm_object.c
  user/mjacob/sys/xen/xenstore/xenstore.c
Directory Properties:
  user/mjacob/sys/   (props changed)
  user/mjacob/sys/boot/   (props changed)
  user/mjacob/sys/cddl/contrib/opensolaris/   (props changed)
  user/mjacob/sys/conf/   (props changed)
  user/mjacob/sys/contrib/pf/   (props changed)

Modified: user/mjacob/sys/amd64/conf/NOTES
==============================================================================
--- user/mjacob/sys/amd64/conf/NOTES	Tue Dec 27 14:59:24 2011	(r228914)
+++ user/mjacob/sys/amd64/conf/NOTES	Tue Dec 27 15:05:55 2011	(r228915)
@@ -455,6 +455,7 @@ device		tpm
 #
 # ichwd: Intel ICH watchdog timer
 # amdsbwd: AMD SB7xx watchdog timer
+# viawd: VIA south bridge watchdog timer
 #
 device		ichwd
 device		amdsbwd

Modified: user/mjacob/sys/arm/arm/irq_dispatch.S
==============================================================================
--- user/mjacob/sys/arm/arm/irq_dispatch.S	Tue Dec 27 14:59:24 2011	(r228914)
+++ user/mjacob/sys/arm/arm/irq_dispatch.S	Tue Dec 27 15:05:55 2011	(r228915)
@@ -98,10 +98,9 @@ ASENTRY_NP(irq_entry)
 	PULLFRAMEFROMSVCANDEXIT
 	movs	pc, lr			/* Exit */
 
-	.bss
+	.data
 	.align	0
 
-
 	.global _C_LABEL(intrnames), _C_LABEL(sintrnames)
 	.global _C_LABEL(intrcnt), _C_LABEL(sintrcnt)
 _C_LABEL(intrnames): 

Modified: user/mjacob/sys/arm/arm/pmap.c
==============================================================================
--- user/mjacob/sys/arm/arm/pmap.c	Tue Dec 27 14:59:24 2011	(r228914)
+++ user/mjacob/sys/arm/arm/pmap.c	Tue Dec 27 15:05:55 2011	(r228915)
@@ -4039,6 +4039,7 @@ pmap_zero_page_generic(vm_paddr_t phys, 
 	 * order to work without corruption when write-allocate is enabled.
 	 */
 	*cdst_pte = L2_S_PROTO | phys | L2_S_PROT(PTE_KERNEL, VM_PROT_WRITE);
+	PTE_SYNC(cdst_pte);
 	cpu_tlb_flushD_SE(cdstp);
 	cpu_cpwait();
 	if (off || size != PAGE_SIZE)

Modified: user/mjacob/sys/arm/arm/vm_machdep.c
==============================================================================
--- user/mjacob/sys/arm/arm/vm_machdep.c	Tue Dec 27 14:59:24 2011	(r228914)
+++ user/mjacob/sys/arm/arm/vm_machdep.c	Tue Dec 27 15:05:55 2011	(r228915)
@@ -617,7 +617,6 @@ uma_small_alloc(uma_zone_t zone, int byt
 	void *ret;
 	struct arm_small_page *sp;
 	TAILQ_HEAD(,arm_small_page) *head;
-	static vm_pindex_t color;
 	vm_page_t m;
 
 	*flags = UMA_SLAB_PRIV;
@@ -650,8 +649,7 @@ uma_small_alloc(uma_zone_t zone, int byt
 		if (wait & M_ZERO)
 			pflags |= VM_ALLOC_ZERO;
 		for (;;) {
-			m = vm_page_alloc(NULL, color++, 
-			    pflags | VM_ALLOC_NOOBJ);
+			m = vm_page_alloc(NULL, 0, pflags | VM_ALLOC_NOOBJ);
 			if (m == NULL) {
 				if (wait & M_NOWAIT)
 					return (NULL);

Modified: user/mjacob/sys/arm/econa/ehci_ebus.c
==============================================================================
--- user/mjacob/sys/arm/econa/ehci_ebus.c	Tue Dec 27 14:59:24 2011	(r228914)
+++ user/mjacob/sys/arm/econa/ehci_ebus.c	Tue Dec 27 15:05:55 2011	(r228915)
@@ -75,10 +75,6 @@ __FBSDID("$FreeBSD$");
 
 static device_attach_t ehci_ebus_attach;
 static device_detach_t ehci_ebus_detach;
-static device_shutdown_t ehci_ebus_shutdown;
-static device_suspend_t ehci_ebus_suspend;
-static device_resume_t ehci_ebus_resume;
-
 
 static void *ih_err;
 
@@ -86,45 +82,6 @@ static void *ih_err;
 #define	USB_BRIDGE_INTR_MASK   0x214
 
 static int
-ehci_ebus_suspend(device_t self)
-{
-	ehci_softc_t *sc = device_get_softc(self);
-	int err;
-
-	err = bus_generic_suspend(self);
-	if (err)
-		return (err);
-	ehci_suspend(sc);
-	return (0);
-}
-
-static int
-ehci_ebus_resume(device_t self)
-{
-	ehci_softc_t *sc = device_get_softc(self);
-
-	ehci_resume(sc);
-
-	bus_generic_resume(self);
-
-	return (0);
-}
-
-static int
-ehci_ebus_shutdown(device_t self)
-{
-	ehci_softc_t *sc = device_get_softc(self);
-	int err;
-
-	err = bus_generic_shutdown(self);
-	if (err)
-		return (err);
-	ehci_shutdown(sc);
-
-	return (0);
-}
-
-static int
 ehci_ebus_probe(device_t self)
 {
 
@@ -277,17 +234,17 @@ static device_method_t ehci_methods[] = 
 	DEVMETHOD(device_probe, ehci_ebus_probe),
 	DEVMETHOD(device_attach, ehci_ebus_attach),
 	DEVMETHOD(device_detach, ehci_ebus_detach),
-	DEVMETHOD(device_suspend, ehci_ebus_suspend),
-	DEVMETHOD(device_resume, ehci_ebus_resume),
-	DEVMETHOD(device_shutdown, ehci_ebus_shutdown),
+	DEVMETHOD(device_suspend, bus_generic_suspend),
+	DEVMETHOD(device_resume, bus_generic_resume),
+	DEVMETHOD(device_shutdown, bus_generic_shutdown),
 
 	DEVMETHOD_END
 };
 
 static driver_t ehci_driver = {
-	"ehci",
-	ehci_methods,
-	sizeof(ehci_softc_t),
+	.name = "ehci",
+	.methods = ehci_methods,
+	.size = sizeof(ehci_softc_t),
 };
 
 static devclass_t ehci_devclass;

Modified: user/mjacob/sys/arm/econa/ohci_ec.c
==============================================================================
--- user/mjacob/sys/arm/econa/ohci_ec.c	Tue Dec 27 14:59:24 2011	(r228914)
+++ user/mjacob/sys/arm/econa/ohci_ec.c	Tue Dec 27 15:05:55 2011	(r228915)
@@ -220,15 +220,17 @@ static device_method_t ohci_methods[] = 
 	DEVMETHOD(device_probe, ohci_ec_probe),
 	DEVMETHOD(device_attach, ohci_ec_attach),
 	DEVMETHOD(device_detach, ohci_ec_detach),
+	DEVMETHOD(device_resume, bus_generic_resume),
+	DEVMETHOD(device_suspend, bus_generic_suspend),
 	DEVMETHOD(device_shutdown, bus_generic_shutdown),
 
 	DEVMETHOD_END
 };
 
 static driver_t ohci_driver = {
-	"ohci",
-	ohci_methods,
-	sizeof(struct ec_ohci_softc),
+	.name = "ohci",
+	.methods = ohci_methods,
+	.size = sizeof(struct ec_ohci_softc),
 };
 
 static devclass_t ohci_devclass;

Modified: user/mjacob/sys/arm/include/pmap.h
==============================================================================
--- user/mjacob/sys/arm/include/pmap.h	Tue Dec 27 14:59:24 2011	(r228914)
+++ user/mjacob/sys/arm/include/pmap.h	Tue Dec 27 15:05:55 2011	(r228915)
@@ -382,7 +382,8 @@ do {									\
 	if (PMAP_NEEDS_PTE_SYNC) {					\
 		cpu_dcache_wb_range((vm_offset_t)(pte), sizeof(pt_entry_t));\
 		cpu_l2cache_wb_range((vm_offset_t)(pte), sizeof(pt_entry_t));\
-	}\
+	} else								\
+		cpu_drain_writebuf();					\
 } while (/*CONSTCOND*/0)
 
 #define	PTE_SYNC_RANGE(pte, cnt)					\
@@ -392,7 +393,8 @@ do {									\
 		    (cnt) << 2); /* * sizeof(pt_entry_t) */		\
 		cpu_l2cache_wb_range((vm_offset_t)(pte), 		\
 		    (cnt) << 2); /* * sizeof(pt_entry_t) */		\
-	}								\
+	} else								\
+		cpu_drain_writebuf();					\
 } while (/*CONSTCOND*/0)
 
 extern pt_entry_t		pte_l1_s_cache_mode;

Modified: user/mjacob/sys/boot/forth/loader.conf
==============================================================================
--- user/mjacob/sys/boot/forth/loader.conf	Tue Dec 27 14:59:24 2011	(r228914)
+++ user/mjacob/sys/boot/forth/loader.conf	Tue Dec 27 15:05:55 2011	(r228915)
@@ -260,6 +260,7 @@ pf_load="NO"			# packet filter
 
 bridgestp_load="NO"		# if_bridge(4) support
 miibus_load="NO"		# miibus support, needed for some drivers
+carp_load="NO"			# carp(4) protocol
 if_ae_load="NO"			# Attansic/Atheros L2 FastEthernet
 if_age_load="NO"		# Attansic/Atheros L1 Gigabit Ethernet
 if_alc_load="NO"		# Atheros AR8131/AR8132 Ethernet
@@ -275,7 +276,6 @@ if_bridge_load="NO"		# if_bridge(4) devi
 if_bwi_load="NO"		# Broadcom BCM53xx IEEE 802.11b/g wireness NICs
 if_bwn_load="NO"		# Broadcom BCM43xx IEEE 802.11 wireless NICs
 if_bxe_load="NO"		# Broadcom NetXtreme II 10Gb Ethernet
-if_carp_load="NO"		# carp(4) devices
 if_cas_load="NO"		# Sun Cassini/Cassini+ and NS DP83065 Saturn
 if_cm_load="NO"			# SMC (90c26, 90c56, 90c66)
 if_cs_load="NO"			# Crystal Semiconductor CS8920

Modified: user/mjacob/sys/boot/i386/boot0/boot0.S
==============================================================================
--- user/mjacob/sys/boot/i386/boot0/boot0.S	Tue Dec 27 14:59:24 2011	(r228914)
+++ user/mjacob/sys/boot/i386/boot0/boot0.S	Tue Dec 27 15:05:55 2011	(r228915)
@@ -413,6 +413,7 @@ got_key:
 	3:
 #endif /* ONLY_F_KEYS */
 #endif /* SIO */
+check_selection:
 		cmpb $0x5,%al			# F1..F6 or 1..6 ?
 #ifdef PXE /* enable PXE/INT18 using F6 */
 		jne 1f;
@@ -421,7 +422,6 @@ got_key:
 #endif /* PXE */
 		jae beep			# Not in F1..F5, beep
 
-check_selection:
 	/*
 	 * We have a selection.  If it's a bad selection go back to complain.
 	 * The bits in MNUOPT were set when the options were printed.

Modified: user/mjacob/sys/boot/i386/libi386/time.c
==============================================================================
--- user/mjacob/sys/boot/i386/libi386/time.c	Tue Dec 27 14:59:24 2011	(r228914)
+++ user/mjacob/sys/boot/i386/libi386/time.c	Tue Dec 27 15:05:55 2011	(r228915)
@@ -62,7 +62,7 @@ bios_seconds(void)
  * Some BIOSes (notably qemu) don't correctly read the RTC
  * registers in an atomic way, sometimes returning bogus values.
  * Therefore we "debounce" the reading by accepting it only when
- * we got two identical values in succession.
+ * we got 8 identical values in succession.
  *
  * If we pass midnight, don't wrap back to 0.
  */
@@ -71,14 +71,16 @@ time(time_t *t)
 {
     static time_t lasttime;
     time_t now, check;
-    int try;
+    int same, try;
 
-    try = 0;
+    same = try = 0;
     check = bios_seconds();
     do {
 	now = check;
 	check = bios_seconds();
-    } while (now != check && ++try < 1000);
+	if (check != now)
+	    same = 0;
+    } while (++same < 8 && ++try < 1000);
 
     if (now < lasttime)
 	now += 24 * 3600;

Modified: user/mjacob/sys/cam/ata/ata_da.c
==============================================================================
--- user/mjacob/sys/cam/ata/ata_da.c	Tue Dec 27 14:59:24 2011	(r228914)
+++ user/mjacob/sys/cam/ata/ata_da.c	Tue Dec 27 15:05:55 2011	(r228915)
@@ -165,6 +165,11 @@ static struct ada_quirk_entry ada_quirk_
 	},
 	{
 		/* Samsung Advanced Format (4k) drives */
+		{ T_DIRECT, SIP_MEDIA_FIXED, "*", "SAMSUNG HD155UI*", "*" },
+		/*quirks*/ADA_Q_4K
+	},
+	{
+		/* Samsung Advanced Format (4k) drives */
 		{ T_DIRECT, SIP_MEDIA_FIXED, "*", "SAMSUNG HD204UI*", "*" },
 		/*quirks*/ADA_Q_4K
 	},
@@ -174,6 +179,16 @@ static struct ada_quirk_entry ada_quirk_
 		/*quirks*/ADA_Q_4K
 	},
 	{
+		/* Seagate Barracuda Advanced Format (4k) drives */
+		{ T_DIRECT, SIP_MEDIA_FIXED, "*", "ST???DM*", "*" },
+		/*quirks*/ADA_Q_4K
+	},
+	{
+		/* Seagate Barracuda Advanced Format (4k) drives */
+		{ T_DIRECT, SIP_MEDIA_FIXED, "*", "ST????DM*", "*" },
+		/*quirks*/ADA_Q_4K
+	},
+	{
 		/* Seagate Momentus Advanced Format (4k) drives */
 		{ T_DIRECT, SIP_MEDIA_FIXED, "*", "ST9500423AS*", "*" },
 		/*quirks*/ADA_Q_4K
@@ -185,6 +200,16 @@ static struct ada_quirk_entry ada_quirk_
 	},
 	{
 		/* Seagate Momentus Advanced Format (4k) drives */
+		{ T_DIRECT, SIP_MEDIA_FIXED, "*", "ST9640423AS*", "*" },
+		/*quirks*/ADA_Q_4K
+	},
+	{
+		/* Seagate Momentus Advanced Format (4k) drives */
+		{ T_DIRECT, SIP_MEDIA_FIXED, "*", "ST9640424AS*", "*" },
+		/*quirks*/ADA_Q_4K
+	},
+	{
+		/* Seagate Momentus Advanced Format (4k) drives */
 		{ T_DIRECT, SIP_MEDIA_FIXED, "*", "ST9750420AS*", "*" },
 		/*quirks*/ADA_Q_4K
 	},
@@ -194,6 +219,11 @@ static struct ada_quirk_entry ada_quirk_
 		/*quirks*/ADA_Q_4K
 	},
 	{
+		/* Seagate Momentus Advanced Format (4k) drives */
+		{ T_DIRECT, SIP_MEDIA_FIXED, "*", "ST9750423AS*", "*" },
+		/*quirks*/ADA_Q_4K
+	},
+	{
 		/* Seagate Momentus Thin Advanced Format (4k) drives */
 		{ T_DIRECT, SIP_MEDIA_FIXED, "*", "ST???LT*", "*" },
 		/*quirks*/ADA_Q_4K

Modified: user/mjacob/sys/cam/scsi/scsi_all.h
==============================================================================
--- user/mjacob/sys/cam/scsi/scsi_all.h	Tue Dec 27 14:59:24 2011	(r228914)
+++ user/mjacob/sys/cam/scsi/scsi_all.h	Tue Dec 27 15:05:55 2011	(r228915)
@@ -932,6 +932,7 @@ struct ata_pass_16 {
 #define	WRITE_12		0xAA
 #define	WRITE_VERIFY_12		0xAE
 #define	READ_ELEMENT_STATUS	0xB8
+#define	READ_CD			0xBE
 
 /* Maintenance In Service Action Codes */
 #define	REPORT_IDENTIFYING_INFRMATION		0x05
@@ -1348,6 +1349,17 @@ struct scsi_read_capacity_data_long
 {
 	uint8_t addr[8];
 	uint8_t length[4];
+#define	SRC16_PROT_EN		0x01
+#define	SRC16_P_TYPE		0x0e
+	uint8_t prot;
+#define	SRC16_LBPPBE		0x0f
+#define	SRC16_PI_EXPONENT	0xf0
+#define	SRC16_PI_EXPONENT_SHIFT	4
+	uint8_t prot_lbppbe;
+#define	SRC16_LALBA		0x3fff
+#define	SRC16_LBPRZ		0x4000
+#define	SRC16_LBPME		0x8000
+	uint8_t lalba_lbp[2];
 };
 
 struct scsi_report_luns

Modified: user/mjacob/sys/cam/scsi/scsi_cd.c
==============================================================================
--- user/mjacob/sys/cam/scsi/scsi_cd.c	Tue Dec 27 14:59:24 2011	(r228914)
+++ user/mjacob/sys/cam/scsi/scsi_cd.c	Tue Dec 27 15:05:55 2011	(r228915)
@@ -1483,6 +1483,14 @@ cdstart(struct cam_periph *periph, union
 					/* dxfer_len */ bp->bio_bcount,
 					/* sense_len */ SSD_FULL_SIZE,
 					/* timeout */ 30000);
+			/* Use READ CD command for audio tracks. */
+			if (softc->params.blksize == 2352) {
+				start_ccb->csio.cdb_io.cdb_bytes[0] = READ_CD;
+				start_ccb->csio.cdb_io.cdb_bytes[9] = 0xf8;
+				start_ccb->csio.cdb_io.cdb_bytes[10] = 0;
+				start_ccb->csio.cdb_io.cdb_bytes[11] = 0;
+				start_ccb->csio.cdb_len = 12;
+			}
 			start_ccb->ccb_h.ccb_state = CD_CCB_BUFFER_IO;
 
 			
@@ -2880,6 +2888,13 @@ cdcheckmedia(struct cam_periph *periph)
 
 	softc->flags |= CD_FLAG_VALID_TOC;
 
+	/* If the first track is audio, correct sector size. */
+	if ((softc->toc.entries[0].control & 4) == 0) {
+		softc->disk->d_sectorsize = softc->params.blksize = 2352;
+		softc->disk->d_mediasize =
+		    (off_t)softc->params.blksize * softc->params.disksize;
+	}
+
 bailout:
 
 	/*

Modified: user/mjacob/sys/cam/scsi/scsi_da.c
==============================================================================
--- user/mjacob/sys/cam/scsi/scsi_da.c	Tue Dec 27 14:59:24 2011	(r228914)
+++ user/mjacob/sys/cam/scsi/scsi_da.c	Tue Dec 27 15:05:55 2011	(r228915)
@@ -82,14 +82,17 @@ typedef enum {
 	DA_FLAG_WENT_IDLE	= 0x040,
 	DA_FLAG_RETRY_UA	= 0x080,
 	DA_FLAG_OPEN		= 0x100,
-	DA_FLAG_SCTX_INIT	= 0x200
+	DA_FLAG_SCTX_INIT	= 0x200,
+	DA_FLAG_CAN_RC16	= 0x400,
+	DA_FLAG_CAN_LBPME	= 0x800
 } da_flags;
 
 typedef enum {
 	DA_Q_NONE		= 0x00,
 	DA_Q_NO_SYNC_CACHE	= 0x01,
 	DA_Q_NO_6_BYTE		= 0x02,
-	DA_Q_NO_PREVENT		= 0x04
+	DA_Q_NO_PREVENT		= 0x04,
+	DA_Q_4K			= 0x08
 } da_quirks;
 
 typedef enum {
@@ -112,6 +115,8 @@ struct disk_params {
 	u_int8_t  secs_per_track;
 	u_int32_t secsize;	/* Number of bytes/sector */
 	u_int64_t sectors;	/* total number sectors */
+	u_int     stripesize;
+	u_int     stripeoffset;
 };
 
 struct da_softc {
@@ -564,7 +569,223 @@ static struct da_quirk_entry da_quirk_ta
 		 */
 		{T_DIRECT, SIP_MEDIA_REMOVABLE, "Sony", "Sony DSC", "*"},
 		/*quirks*/ DA_Q_NO_SYNC_CACHE | DA_Q_NO_PREVENT
-	}
+	},
+	/* ATA/SATA devices over SAS/USB/... */
+	{
+		/* Hitachi Advanced Format (4k) drives */
+		{ T_DIRECT, SIP_MEDIA_FIXED, "Hitachi", "H??????????E3*", "*" },
+		/*quirks*/DA_Q_4K
+	},
+	{
+		/* Samsung Advanced Format (4k) drives */
+		{ T_DIRECT, SIP_MEDIA_FIXED, "ATA", "SAMSUNG HD155UI*", "*" },
+		/*quirks*/DA_Q_4K
+	},
+	{
+		/* Samsung Advanced Format (4k) drives */
+		{ T_DIRECT, SIP_MEDIA_FIXED, "SAMSUNG", "HD155UI*", "*" },
+		/*quirks*/DA_Q_4K
+	},
+	{
+		/* Samsung Advanced Format (4k) drives */
+		{ T_DIRECT, SIP_MEDIA_FIXED, "ATA", "SAMSUNG HD204UI*", "*" },
+		/*quirks*/DA_Q_4K
+	},
+	{
+		/* Samsung Advanced Format (4k) drives */
+		{ T_DIRECT, SIP_MEDIA_FIXED, "SAMSUNG", "HD204UI*", "*" },
+		/*quirks*/DA_Q_4K
+	},
+	{
+		/* Seagate Barracuda Green Advanced Format (4k) drives */
+		{ T_DIRECT, SIP_MEDIA_FIXED, "ATA", "ST????DL*", "*" },
+		/*quirks*/DA_Q_4K
+	},
+	{
+		/* Seagate Barracuda Green Advanced Format (4k) drives */
+		{ T_DIRECT, SIP_MEDIA_FIXED, "ST????DL", "*", "*" },
+		/*quirks*/DA_Q_4K
+	},
+	{
+		/* Seagate Barracuda Green Advanced Format (4k) drives */
+		{ T_DIRECT, SIP_MEDIA_FIXED, "ATA", "ST???DM*", "*" },
+		/*quirks*/DA_Q_4K
+	},
+	{
+		/* Seagate Barracuda Green Advanced Format (4k) drives */
+		{ T_DIRECT, SIP_MEDIA_FIXED, "ST???DM*", "*", "*" },
+		/*quirks*/DA_Q_4K
+	},
+	{
+		/* Seagate Barracuda Green Advanced Format (4k) drives */
+		{ T_DIRECT, SIP_MEDIA_FIXED, "ATA", "ST????DM*", "*" },
+		/*quirks*/DA_Q_4K
+	},
+	{
+		/* Seagate Barracuda Green Advanced Format (4k) drives */
+		{ T_DIRECT, SIP_MEDIA_FIXED, "ST????DM", "*", "*" },
+		/*quirks*/DA_Q_4K
+	},
+	{
+		/* Seagate Momentus Advanced Format (4k) drives */
+		{ T_DIRECT, SIP_MEDIA_FIXED, "ATA", "ST9500423AS*", "*" },
+		/*quirks*/DA_Q_4K
+	},
+	{
+		/* Seagate Momentus Advanced Format (4k) drives */
+		{ T_DIRECT, SIP_MEDIA_FIXED, "ST950042", "3AS*", "*" },
+		/*quirks*/DA_Q_4K
+	},
+	{
+		/* Seagate Momentus Advanced Format (4k) drives */
+		{ T_DIRECT, SIP_MEDIA_FIXED, "ATA", "ST9500424AS*", "*" },
+		/*quirks*/DA_Q_4K
+	},
+	{
+		/* Seagate Momentus Advanced Format (4k) drives */
+		{ T_DIRECT, SIP_MEDIA_FIXED, "ST950042", "4AS*", "*" },
+		/*quirks*/DA_Q_4K
+	},
+	{
+		/* Seagate Momentus Advanced Format (4k) drives */
+		{ T_DIRECT, SIP_MEDIA_FIXED, "ATA", "ST9640423AS*", "*" },
+		/*quirks*/DA_Q_4K
+	},
+	{
+		/* Seagate Momentus Advanced Format (4k) drives */
+		{ T_DIRECT, SIP_MEDIA_FIXED, "ST964042", "3AS*", "*" },
+		/*quirks*/DA_Q_4K
+	},
+	{
+		/* Seagate Momentus Advanced Format (4k) drives */
+		{ T_DIRECT, SIP_MEDIA_FIXED, "ATA", "ST9640424AS*", "*" },
+		/*quirks*/DA_Q_4K
+	},
+	{
+		/* Seagate Momentus Advanced Format (4k) drives */
+		{ T_DIRECT, SIP_MEDIA_FIXED, "ST964042", "4AS*", "*" },
+		/*quirks*/DA_Q_4K
+	},
+	{
+		/* Seagate Momentus Advanced Format (4k) drives */
+		{ T_DIRECT, SIP_MEDIA_FIXED, "ATA", "ST9750420AS*", "*" },
+		/*quirks*/DA_Q_4K
+	},
+	{
+		/* Seagate Momentus Advanced Format (4k) drives */
+		{ T_DIRECT, SIP_MEDIA_FIXED, "ST975042", "0AS*", "*" },
+		/*quirks*/DA_Q_4K
+	},
+	{
+		/* Seagate Momentus Advanced Format (4k) drives */
+		{ T_DIRECT, SIP_MEDIA_FIXED, "ATA", "ST9750422AS*", "*" },
+		/*quirks*/DA_Q_4K
+	},
+	{
+		/* Seagate Momentus Advanced Format (4k) drives */
+		{ T_DIRECT, SIP_MEDIA_FIXED, "ST975042", "2AS*", "*" },
+		/*quirks*/DA_Q_4K
+	},
+	{
+		/* Seagate Momentus Advanced Format (4k) drives */
+		{ T_DIRECT, SIP_MEDIA_FIXED, "ATA", "ST9750423AS*", "*" },
+		/*quirks*/DA_Q_4K
+	},
+	{
+		/* Seagate Momentus Advanced Format (4k) drives */
+		{ T_DIRECT, SIP_MEDIA_FIXED, "ST975042", "3AS*", "*" },
+		/*quirks*/DA_Q_4K
+	},
+	{
+		/* Seagate Momentus Thin Advanced Format (4k) drives */
+		{ T_DIRECT, SIP_MEDIA_FIXED, "ATA", "ST???LT*", "*" },
+		/*quirks*/DA_Q_4K
+	},
+	{
+		/* Seagate Momentus Thin Advanced Format (4k) drives */
+		{ T_DIRECT, SIP_MEDIA_FIXED, "ST???LT*", "*", "*" },
+		/*quirks*/DA_Q_4K
+	},
+	{
+		/* WDC Caviar Green Advanced Format (4k) drives */
+		{ T_DIRECT, SIP_MEDIA_FIXED, "ATA", "WDC WD????RS*", "*" },
+		/*quirks*/DA_Q_4K
+	},
+	{
+		/* WDC Caviar Green Advanced Format (4k) drives */
+		{ T_DIRECT, SIP_MEDIA_FIXED, "WDC WD??", "??RS*", "*" },
+		/*quirks*/DA_Q_4K
+	},
+	{
+		/* WDC Caviar Green Advanced Format (4k) drives */
+		{ T_DIRECT, SIP_MEDIA_FIXED, "ATA", "WDC WD????RX*", "*" },
+		/*quirks*/DA_Q_4K
+	},
+	{
+		/* WDC Caviar Green Advanced Format (4k) drives */
+		{ T_DIRECT, SIP_MEDIA_FIXED, "WDC WD??", "??RX*", "*" },
+		/*quirks*/DA_Q_4K
+	},
+	{
+		/* WDC Caviar Green Advanced Format (4k) drives */
+		{ T_DIRECT, SIP_MEDIA_FIXED, "ATA", "WDC WD??????RS*", "*" },
+		/*quirks*/DA_Q_4K
+	},
+	{
+		/* WDC Caviar Green Advanced Format (4k) drives */
+		{ T_DIRECT, SIP_MEDIA_FIXED, "WDC WD??", "????RS*", "*" },
+		/*quirks*/DA_Q_4K
+	},
+	{
+		/* WDC Caviar Green Advanced Format (4k) drives */
+		{ T_DIRECT, SIP_MEDIA_FIXED, "ATA", "WDC WD??????RX*", "*" },
+		/*quirks*/DA_Q_4K
+	},
+	{
+		/* WDC Caviar Green Advanced Format (4k) drives */
+		{ T_DIRECT, SIP_MEDIA_FIXED, "WDC WD??", "????RX*", "*" },
+		/*quirks*/DA_Q_4K
+	},
+	{
+		/* WDC Scorpio Black Advanced Format (4k) drives */
+		{ T_DIRECT, SIP_MEDIA_FIXED, "ATA", "WDC WD???PKT*", "*" },
+		/*quirks*/DA_Q_4K
+	},
+	{
+		/* WDC Scorpio Black Advanced Format (4k) drives */
+		{ T_DIRECT, SIP_MEDIA_FIXED, "WDC WD??", "?PKT*", "*" },
+		/*quirks*/DA_Q_4K
+	},
+	{
+		/* WDC Scorpio Black Advanced Format (4k) drives */
+		{ T_DIRECT, SIP_MEDIA_FIXED, "ATA", "WDC WD?????PKT*", "*" },
+		/*quirks*/DA_Q_4K
+	},
+	{
+		/* WDC Scorpio Black Advanced Format (4k) drives */
+		{ T_DIRECT, SIP_MEDIA_FIXED, "WDC WD??", "???PKT*", "*" },
+		/*quirks*/DA_Q_4K
+	},
+	{
+		/* WDC Scorpio Blue Advanced Format (4k) drives */
+		{ T_DIRECT, SIP_MEDIA_FIXED, "ATA", "WDC WD???PVT*", "*" },
+		/*quirks*/DA_Q_4K
+	},
+	{
+		/* WDC Scorpio Blue Advanced Format (4k) drives */
+		{ T_DIRECT, SIP_MEDIA_FIXED, "WDC WD??", "?PVT*", "*" },
+		/*quirks*/DA_Q_4K
+	},
+	{
+		/* WDC Scorpio Blue Advanced Format (4k) drives */
+		{ T_DIRECT, SIP_MEDIA_FIXED, "ATA", "WDC WD?????PVT*", "*" },
+		/*quirks*/DA_Q_4K
+	},
+	{
+		/* WDC Scorpio Blue Advanced Format (4k) drives */
+		{ T_DIRECT, SIP_MEDIA_FIXED, "WDC WD??", "???PVT*", "*" },
+		/*quirks*/DA_Q_4K
+	},
 };
 
 static	disk_strategy_t	dastrategy;
@@ -585,7 +806,7 @@ static  int		daerror(union ccb *ccb, u_i
 static void		daprevent(struct cam_periph *periph, int action);
 static int		dagetcapacity(struct cam_periph *periph);
 static void		dasetgeom(struct cam_periph *periph, uint32_t block_len,
-				  uint64_t maxsector);
+				  uint64_t maxsector, u_int lbppbe, u_int lalba);
 static timeout_t	dasendorderedtag;
 static void		dashutdown(void *arg, int howto);
 
@@ -687,6 +908,8 @@ daopen(struct disk *dp)
 
 		softc->disk->d_sectorsize = softc->params.secsize;
 		softc->disk->d_mediasize = softc->params.secsize * (off_t)softc->params.sectors;
+		softc->disk->d_stripesize = softc->params.stripesize;
+		softc->disk->d_stripeoffset = softc->params.stripeoffset;
 		/* XXX: these are not actually "firmware" values, so they may be wrong */
 		softc->disk->d_fwsectors = softc->params.secs_per_track;
 		softc->disk->d_fwheads = softc->params.heads;
@@ -1312,6 +1535,14 @@ daregister(struct cam_periph *periph, vo
 	else if (softc->minimum_cmd_size > 12)
 		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))) {
+		softc->flags |= DA_FLAG_CAN_RC16;
+		softc->state = DA_STATE_PROBE2;
+	}
+
 	/*
 	 * Register this media as a disk.
 	 */
@@ -1701,10 +1932,14 @@ dadone(struct cam_periph *periph, union 
 			struct disk_params *dp;
 			uint32_t block_size;
 			uint64_t maxsector;
+			u_int lbppbe;	/* LB per physical block exponent. */
+			u_int lalba;	/* Lowest aligned LBA. */
 
 			if (softc->state == DA_STATE_PROBE) {
 				block_size = scsi_4btoul(rdcap->length);
 				maxsector = scsi_4btoul(rdcap->addr);
+				lbppbe = 0;
+				lalba = 0;
 
 				/*
 				 * According to SBC-2, if the standard 10
@@ -1724,6 +1959,8 @@ dadone(struct cam_periph *periph, union 
 			} else {
 				block_size = scsi_4btoul(rcaplong->length);
 				maxsector = scsi_8btou64(rcaplong->addr);
+				lbppbe = rcaplong->prot_lbppbe & SRC16_LBPPBE;
+				lalba = scsi_2btoul(rcaplong->lalba_lbp);
 			}
 
 			/*
@@ -1741,7 +1978,12 @@ dadone(struct cam_periph *periph, union 
 				announce_buf[0] = '\0';
 				cam_periph_invalidate(periph);
 			} else {
-				dasetgeom(periph, block_size, maxsector);
+				dasetgeom(periph, block_size, maxsector,
+				    lbppbe, lalba & SRC16_LALBA);
+				if (lalba & SRC16_LBPME)
+					softc->flags |= DA_FLAG_CAN_LBPME;
+				else
+					softc->flags &= ~DA_FLAG_CAN_LBPME;
 				dp = &softc->params;
 				snprintf(announce_buf, sizeof(announce_buf),
 				        "%juMB (%ju %u byte sectors: %dH %dS/T "
@@ -1808,6 +2050,24 @@ dadone(struct cam_periph *periph, union 
 					    &ascq, /*show_errors*/ 1);
 				}
 				/*
+				 * If we tried READ CAPACITY(16) and failed,
+				 * fallback to READ CAPACITY(10).
+				 */
+				if ((softc->state == DA_STATE_PROBE2) &&
+				    (softc->flags & DA_FLAG_CAN_RC16) &&
+				    (((csio->ccb_h.status & CAM_STATUS_MASK) ==
+					CAM_REQ_INVALID) ||
+				     ((have_sense) &&
+				      (error_code == SSD_CURRENT_ERROR) &&
+				      (sense_key == SSD_KEY_ILLEGAL_REQUEST)))) {
+					softc->flags &= ~DA_FLAG_CAN_RC16;
+					softc->state = DA_STATE_PROBE;
+					free(rdcap, M_SCSIDA);
+					xpt_release_ccb(done_ccb);
+					xpt_schedule(periph, priority);
+					return;
+				} else
+				/*
 				 * Attach to anything that claims to be a
 				 * direct access or optical disk device,
 				 * as long as it doesn't return a "Logical
@@ -1977,13 +2237,18 @@ dagetcapacity(struct cam_periph *periph)
 	struct scsi_read_capacity_data_long *rcaplong;
 	uint32_t block_len;
 	uint64_t maxsector;
-	int error;
+	int error, rc16failed;
 	u_int32_t sense_flags;
+	u_int lbppbe;	/* Logical blocks per physical block exponent. */
+	u_int lalba;	/* Lowest aligned LBA. */
 
 	softc = (struct da_softc *)periph->softc;
 	block_len = 0;
 	maxsector = 0;
+	lbppbe = 0;
+	lalba = 0;
 	error = 0;
+	rc16failed = 0;
 	sense_flags = SF_RETRY_UA;
 	if (softc->flags & DA_FLAG_PACK_REMOVABLE)
 		sense_flags |= SF_NO_PRINT;
@@ -1991,11 +2256,63 @@ dagetcapacity(struct cam_periph *periph)
 	/* Do a read capacity */
 	rcap = (struct scsi_read_capacity_data *)malloc(sizeof(*rcaplong),
 							M_SCSIDA,
-							M_NOWAIT);
+							M_NOWAIT | M_ZERO);
 	if (rcap == NULL)
 		return (ENOMEM);
-		
+	rcaplong = (struct scsi_read_capacity_data_long *)rcap;
+
 	ccb = cam_periph_getccb(periph, CAM_PRIORITY_NORMAL);
+
+	/* Try READ CAPACITY(16) first if we think it should work. */
+	if (softc->flags & DA_FLAG_CAN_RC16) {
+		scsi_read_capacity_16(&ccb->csio,
+			      /*retries*/ 4,
+			      /*cbfcnp*/ dadone,
+			      /*tag_action*/ MSG_SIMPLE_Q_TAG,
+			      /*lba*/ 0,
+			      /*reladr*/ 0,
+			      /*pmi*/ 0,
+			      rcaplong,
+			      /*sense_len*/ SSD_FULL_SIZE,
+			      /*timeout*/ 60000);
+		ccb->ccb_h.ccb_bp = NULL;
+
+		error = cam_periph_runccb(ccb, daerror,
+				  /*cam_flags*/CAM_RETRY_SELTO,
+				  sense_flags,
+				  softc->disk->d_devstat);
+
+		if ((ccb->ccb_h.status & CAM_DEV_QFRZN) != 0)
+			cam_release_devq(ccb->ccb_h.path,
+				 /*relsim_flags*/0,
+				 /*reduction*/0,
+				 /*timeout*/0,
+				 /*getcount_only*/0);
+
+		if (error == 0)
+			goto rc16ok;
+
+		/* If we got ILLEGAL REQUEST, do not prefer RC16 any more. */
+		if ((ccb->ccb_h.status & CAM_STATUS_MASK) ==
+		     CAM_REQ_INVALID) {
+			softc->flags &= ~DA_FLAG_CAN_RC16;
+		} else if (((ccb->ccb_h.status & CAM_STATUS_MASK) ==
+		     CAM_SCSI_STATUS_ERROR) &&
+		    (ccb->csio.scsi_status == SCSI_STATUS_CHECK_COND) &&
+		    (ccb->ccb_h.status & CAM_AUTOSNS_VALID) &&
+		    ((ccb->ccb_h.flags & CAM_SENSE_PHYS) == 0) &&
+		    ((ccb->ccb_h.flags & CAM_SENSE_PTR) == 0)) {
+			int sense_key, error_code, asc, ascq;
+
+			scsi_extract_sense(&ccb->csio.sense_data,
+				   &error_code, &sense_key, &asc, &ascq);
+			if (sense_key == SSD_KEY_ILLEGAL_REQUEST)
+				softc->flags &= ~DA_FLAG_CAN_RC16;
+		}
+		rc16failed = 1;
+	}
+
+	/* Do READ CAPACITY(10). */
 	scsi_read_capacity(&ccb->csio,
 			   /*retries*/4,
 			   /*cbfncp*/dadone,
@@ -2021,13 +2338,12 @@ dagetcapacity(struct cam_periph *periph)
 		block_len = scsi_4btoul(rcap->length);
 		maxsector = scsi_4btoul(rcap->addr);
 
-		if (maxsector != 0xffffffff)
+		if (maxsector != 0xffffffff || rc16failed)
 			goto done;
 	} else
 		goto done;
 
-	rcaplong = (struct scsi_read_capacity_data_long *)rcap;
-
+	/* If READ CAPACITY(10) returned overflow, use READ CAPACITY(16) */
 	scsi_read_capacity_16(&ccb->csio,
 			      /*retries*/ 4,
 			      /*cbfcnp*/ dadone,
@@ -2053,8 +2369,11 @@ dagetcapacity(struct cam_periph *periph)
 				 /*getcount_only*/0);
 
 	if (error == 0) {
+rc16ok:
 		block_len = scsi_4btoul(rcaplong->length);
 		maxsector = scsi_8btou64(rcaplong->addr);
+		lbppbe = rcaplong->prot_lbppbe & SRC16_LBPPBE;
+		lalba = scsi_2btoul(rcaplong->lalba_lbp);
 	}
 
 done:
@@ -2065,8 +2384,14 @@ done:
 			    "unsupportable block size %ju\n",
 			    (uintmax_t) block_len);
 			error = EINVAL;
-		} else
-			dasetgeom(periph, block_len, maxsector);
+		} else {
+			dasetgeom(periph, block_len, maxsector,
+			    lbppbe, lalba & SRC16_LALBA);
+			if (lalba & SRC16_LBPME)
+				softc->flags |= DA_FLAG_CAN_LBPME;
+			else
+				softc->flags &= ~DA_FLAG_CAN_LBPME;
+		}
 	}
 
 	xpt_release_ccb(ccb);
@@ -2077,7 +2402,8 @@ done:
 }
 
 static void
-dasetgeom(struct cam_periph *periph, uint32_t block_len, uint64_t maxsector)
+dasetgeom(struct cam_periph *periph, uint32_t block_len, uint64_t maxsector,
+    u_int lbppbe, u_int lalba)
 {
 	struct ccb_calc_geometry ccg;
 	struct da_softc *softc;
@@ -2088,6 +2414,17 @@ dasetgeom(struct cam_periph *periph, uin
 	dp = &softc->params;
 	dp->secsize = block_len;
 	dp->sectors = maxsector + 1;
+	if (lbppbe > 0) {
+		dp->stripesize = block_len << lbppbe;
+		dp->stripeoffset = (dp->stripesize - block_len * lalba) %
+		    dp->stripesize;
+	} else if (softc->quirks & DA_Q_4K) {
+		dp->stripesize = 4096;
+		dp->stripeoffset = 0;
+	} else {
+		dp->stripesize = 0;
+		dp->stripeoffset = 0;
+	}
 	/*
 	 * Have the controller provide us with a geometry
 	 * for this disk.  The only time the geometry

Modified: user/mjacob/sys/cddl/compat/opensolaris/kern/opensolaris_cmn_err.c
==============================================================================
--- user/mjacob/sys/cddl/compat/opensolaris/kern/opensolaris_cmn_err.c	Tue Dec 27 14:59:24 2011	(r228914)
+++ user/mjacob/sys/cddl/compat/opensolaris/kern/opensolaris_cmn_err.c	Tue Dec 27 15:05:55 2011	(r228915)
@@ -28,29 +28,35 @@ void
 vcmn_err(int ce, const char *fmt, va_list adx)
 {
 	char buf[256];
+	const char *prefix;
 
+	prefix = NULL; /* silence unwitty compilers */
 	switch (ce) {
 	case CE_CONT:
-		snprintf(buf, sizeof(buf), "Solaris(cont): %s\n", fmt);
+		prefix = "Solaris(cont): ";
 		break;
 	case CE_NOTE:
-		snprintf(buf, sizeof(buf), "Solaris: NOTICE: %s\n", fmt);
+		prefix = "Solaris: NOTICE: ";
 		break;
 	case CE_WARN:
-		snprintf(buf, sizeof(buf), "Solaris: WARNING: %s\n", fmt);
+		prefix = "Solaris: WARNING: ";
 		break;
 	case CE_PANIC:
-		snprintf(buf, sizeof(buf), "Solaris(panic): %s\n", fmt);
+		prefix = "Solaris(panic): ";
 		break;
 	case CE_IGNORE:
 		break;
 	default:
 		panic("Solaris: unknown severity level");
 	}
-	if (ce == CE_PANIC)
-		panic("%s", buf);
-	if (ce != CE_IGNORE)
-		vprintf(buf, adx);
+	if (ce == CE_PANIC) {
+		vsnprintf(buf, sizeof(buf), fmt, adx);
+		panic("%s%s", prefix, buf);
+	}
+	if (ce != CE_IGNORE) {
+		printf("%s", prefix);
+		vprintf(fmt, adx);
+	}
 }
 
 void

Modified: user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/space_map.c
==============================================================================
--- user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/space_map.c	Tue Dec 27 14:59:24 2011	(r228914)
+++ user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/space_map.c	Tue Dec 27 15:05:55 2011	(r228915)
@@ -29,6 +29,13 @@
 #include <sys/zio.h>
 #include <sys/space_map.h>
 
+SYSCTL_DECL(_vfs_zfs);
+static int space_map_last_hope;
+TUNABLE_INT("vfs.zfs.space_map_last_hope", &space_map_last_hope);
+SYSCTL_INT(_vfs_zfs, OID_AUTO, space_map_last_hope, CTLFLAG_RDTUN,
+    &space_map_last_hope, 0,
+    "If kernel panic in space_map code on pool import, import the pool in readonly mode and backup all your data before trying this option.");
+
 /*
  * Space map routines.
  * NOTE: caller is responsible for all locking.
@@ -93,7 +100,7 @@ space_map_add(space_map_t *sm, uint64_t 
 	VERIFY(sm->sm_space + size <= sm->sm_size);
 	VERIFY(P2PHASE(start, 1ULL << sm->sm_shift) == 0);
 	VERIFY(P2PHASE(size, 1ULL << sm->sm_shift) == 0);
-
+again:
 	ssearch.ss_start = start;
 	ssearch.ss_end = end;
 	ss = avl_find(&sm->sm_root, &ssearch, &where);
@@ -104,6 +111,23 @@ space_map_add(space_map_t *sm, uint64_t 
 		    (longlong_t)start, (longlong_t)size);
 		return;
 	}
+	if (ss != NULL && space_map_last_hope) {
+		uint64_t sstart, ssize;
+
+		if (ss->ss_start > start)
+			sstart = ss->ss_start;
+		else
+			sstart = start;
+		if (ss->ss_end > end)
+			ssize = end - sstart;
+		else
+			ssize = ss->ss_end - sstart;
+		ZFS_LOG(0,
+		    "Removing colliding space_map range (start=%ju end=%ju). Good luck!",
+		    (uintmax_t)sstart, (uintmax_t)(sstart + ssize));
+		space_map_remove(sm, sstart, ssize);
+		goto again;
+	}
 
 	/* Make sure we don't overlap with either of our neighbors */
 	VERIFY(ss == NULL);

Modified: user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_replay.c
==============================================================================
--- user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_replay.c	Tue Dec 27 14:59:24 2011	(r228914)
+++ user/mjacob/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_replay.c	Tue Dec 27 15:05:55 2011	(r228915)
@@ -904,11 +904,15 @@ zfs_replay_setattr(zfsvfs_t *zfsvfs, lr_
 	return (error);
 }
 
+extern int zfs_setsecattr(vnode_t *vp, vsecattr_t *vsecp, int flag, cred_t *cr,
+    caller_context_t *ct);
+
 static int
 zfs_replay_acl_v0(zfsvfs_t *zfsvfs, lr_acl_v0_t *lr, boolean_t byteswap)
 {
 	ace_t *ace = (ace_t *)(lr + 1);	/* ace array follows lr_acl_t */
 	vsecattr_t vsa;
+	vnode_t *vp;
 	znode_t *zp;
 	int error;
 
@@ -927,13 +931,12 @@ zfs_replay_acl_v0(zfsvfs_t *zfsvfs, lr_a
 	vsa.vsa_aclflags = 0;
 	vsa.vsa_aclentp = ace;
 
-#ifdef TODO
-	error = VOP_SETSECATTR(ZTOV(zp), &vsa, 0, kcred, NULL);
-#else
-	panic("%s:%u: unsupported condition", __func__, __LINE__);

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


More information about the svn-src-user mailing list