From owner-svn-src-user@FreeBSD.ORG Tue Dec 27 15:05:57 2011 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 28A7E106564A; Tue, 27 Dec 2011 15:05:56 +0000 (UTC) (envelope-from mjacob@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id CE4938FC0C; Tue, 27 Dec 2011 15:05:56 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id pBRF5uYp057739; Tue, 27 Dec 2011 15:05:56 GMT (envelope-from mjacob@svn.freebsd.org) Received: (from mjacob@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id pBRF5uGU057720; Tue, 27 Dec 2011 15:05:56 GMT (envelope-from mjacob@svn.freebsd.org) Message-Id: <201112271505.pBRF5uGU057720@svn.freebsd.org> From: Matt Jacob Date: Tue, 27 Dec 2011 15:05:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: 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... X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 27 Dec 2011 15:05:57 -0000 Author: mjacob Date: Tue Dec 27 15:05:55 2011 New Revision: 228915 URL: http://svn.freebsd.org/changeset/base/228915 Log: IFC@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 #include +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 ***