Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 31 Dec 2009 00:52:30 GMT
From:      Andrew Thompson <thompsa@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 172419 for review
Message-ID:  <200912310052.nBV0qULx076822@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://p4web.freebsd.org/chv.cgi?CH=172419

Change 172419 by thompsa@thompsa_pea on 2009/12/31 00:51:43

	IFC @172418

Affected files ...

.. //depot/projects/usb/src/sys/amd64/amd64/mem.c#5 integrate
.. //depot/projects/usb/src/sys/arm/arm/mem.c#5 integrate
.. //depot/projects/usb/src/sys/arm/conf/AVILA#19 integrate
.. //depot/projects/usb/src/sys/arm/conf/CAMBRIA#11 integrate
.. //depot/projects/usb/src/sys/arm/include/pmc_mdep.h#3 integrate
.. //depot/projects/usb/src/sys/arm/xscale/ixp425/files.ixp425#10 integrate
.. //depot/projects/usb/src/sys/boot/common/dev_net.c#4 integrate
.. //depot/projects/usb/src/sys/boot/ofw/libofw/ofw_disk.c#3 integrate
.. //depot/projects/usb/src/sys/boot/sparc64/loader/main.c#9 integrate
.. //depot/projects/usb/src/sys/cam/ata/ata_all.c#7 integrate
.. //depot/projects/usb/src/sys/cam/ata/ata_da.c#9 integrate
.. //depot/projects/usb/src/sys/cddl/boot/zfs/zfsimpl.h#5 integrate
.. //depot/projects/usb/src/sys/cddl/contrib/opensolaris/common/zfs/zfs_prop.c#4 integrate
.. //depot/projects/usb/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_acl.h#4 integrate
.. //depot/projects/usb/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c#7 integrate
.. //depot/projects/usb/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c#11 integrate
.. //depot/projects/usb/src/sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h#3 integrate
.. //depot/projects/usb/src/sys/conf/files#89 integrate
.. //depot/projects/usb/src/sys/conf/files.arm#10 integrate
.. //depot/projects/usb/src/sys/conf/files.ia64#15 integrate
.. //depot/projects/usb/src/sys/conf/files.sun4v#9 integrate
.. //depot/projects/usb/src/sys/conf/options.sparc64#6 integrate
.. //depot/projects/usb/src/sys/contrib/dev/iwn/iwlwifi-1000-128.50.3.1.fw.uu#1 branch
.. //depot/projects/usb/src/sys/contrib/dev/iwn/iwlwifi-4965-228.57.2.23.fw.uu#2 delete
.. //depot/projects/usb/src/sys/contrib/dev/iwn/iwlwifi-4965-228.61.2.24.fw.uu#1 branch
.. //depot/projects/usb/src/sys/contrib/dev/iwn/iwlwifi-5000-5.4.A.11.fw.uu#2 delete
.. //depot/projects/usb/src/sys/contrib/dev/iwn/iwlwifi-5000-8.24.2.12.fw.uu#1 branch
.. //depot/projects/usb/src/sys/contrib/dev/iwn/iwlwifi-6000-9.176.4.1.fw.uu#1 branch
.. //depot/projects/usb/src/sys/contrib/pf/net/if_pfsync.c#8 integrate
.. //depot/projects/usb/src/sys/contrib/pf/net/if_pfsync.h#4 integrate
.. //depot/projects/usb/src/sys/contrib/pf/net/pf.c#16 integrate
.. //depot/projects/usb/src/sys/contrib/pf/net/pfvar.h#7 integrate
.. //depot/projects/usb/src/sys/dev/adlink/adlink.c#4 integrate
.. //depot/projects/usb/src/sys/dev/ae/if_ae.c#7 integrate
.. //depot/projects/usb/src/sys/dev/agp/agp.c#9 integrate
.. //depot/projects/usb/src/sys/dev/ahci/ahci.c#9 integrate
.. //depot/projects/usb/src/sys/dev/aic7xxx/aicasm/Makefile#3 integrate
.. //depot/projects/usb/src/sys/dev/aic7xxx/aicasm/aicasm.c#4 integrate
.. //depot/projects/usb/src/sys/dev/aic7xxx/aicasm/aicasm_macro_scan.l#3 integrate
.. //depot/projects/usb/src/sys/dev/aic7xxx/aicasm/aicasm_scan.l#3 integrate
.. //depot/projects/usb/src/sys/dev/aic7xxx/aicasm/aicasm_symbol.c#3 integrate
.. //depot/projects/usb/src/sys/dev/bktr/bktr_os.c#7 integrate
.. //depot/projects/usb/src/sys/dev/cardbus/cardbus_cis.c#8 integrate
.. //depot/projects/usb/src/sys/dev/drm/drm_vm.c#6 integrate
.. //depot/projects/usb/src/sys/dev/fb/creator.c#9 integrate
.. //depot/projects/usb/src/sys/dev/fb/fb.c#4 integrate
.. //depot/projects/usb/src/sys/dev/fb/fbreg.h#4 integrate
.. //depot/projects/usb/src/sys/dev/fb/machfb.c#5 integrate
.. //depot/projects/usb/src/sys/dev/fb/s3_pci.c#4 integrate
.. //depot/projects/usb/src/sys/dev/fb/vesa.c#7 integrate
.. //depot/projects/usb/src/sys/dev/fb/vga.c#4 integrate
.. //depot/projects/usb/src/sys/dev/fb/vgareg.h#5 integrate
.. //depot/projects/usb/src/sys/dev/firewire/fwdev.c#9 integrate
.. //depot/projects/usb/src/sys/dev/firewire/fwmem.c#4 integrate
.. //depot/projects/usb/src/sys/dev/hifn/hifn7751.c#5 integrate
.. //depot/projects/usb/src/sys/dev/hwpmc/hwpmc_arm.c#4 integrate
.. //depot/projects/usb/src/sys/dev/hwpmc/hwpmc_core.c#6 integrate
.. //depot/projects/usb/src/sys/dev/hwpmc/hwpmc_mod.c#16 integrate
.. //depot/projects/usb/src/sys/dev/hwpmc/hwpmc_xscale.c#1 branch
.. //depot/projects/usb/src/sys/dev/hwpmc/hwpmc_xscale.h#1 branch
.. //depot/projects/usb/src/sys/dev/hwpmc/pmc_events.h#8 integrate
.. //depot/projects/usb/src/sys/dev/iwn/if_iwn.c#13 integrate
.. //depot/projects/usb/src/sys/dev/iwn/if_iwnreg.h#3 integrate
.. //depot/projects/usb/src/sys/dev/iwn/if_iwnvar.h#5 integrate
.. //depot/projects/usb/src/sys/dev/jme/if_jme.c#9 integrate
.. //depot/projects/usb/src/sys/dev/ksyms/ksyms.c#4 integrate
.. //depot/projects/usb/src/sys/dev/led/led.c#6 integrate
.. //depot/projects/usb/src/sys/dev/mc146818/mc146818.c#3 integrate
.. //depot/projects/usb/src/sys/dev/mc146818/mc146818reg.h#3 integrate
.. //depot/projects/usb/src/sys/dev/mc146818/mc146818var.h#3 integrate
.. //depot/projects/usb/src/sys/dev/md/md.c#14 integrate
.. //depot/projects/usb/src/sys/dev/mge/if_mge.c#8 integrate
.. //depot/projects/usb/src/sys/dev/mk48txx/mk48txx.c#5 integrate
.. //depot/projects/usb/src/sys/dev/mk48txx/mk48txxreg.h#2 integrate
.. //depot/projects/usb/src/sys/dev/mk48txx/mk48txxvar.h#2 integrate
.. //depot/projects/usb/src/sys/dev/mpt/mpt_pci.c#10 integrate
.. //depot/projects/usb/src/sys/dev/pci/pci.c#32 integrate
.. //depot/projects/usb/src/sys/dev/pci/pci_private.h#6 integrate
.. //depot/projects/usb/src/sys/dev/siis/siis.c#9 integrate
.. //depot/projects/usb/src/sys/dev/siis/siis.h#5 integrate
.. //depot/projects/usb/src/sys/dev/sound/pcm/channel.c#9 integrate
.. //depot/projects/usb/src/sys/dev/sound/pcm/dsp.c#10 integrate
.. //depot/projects/usb/src/sys/dev/sound/pcm/sndstat.c#6 integrate
.. //depot/projects/usb/src/sys/dev/ste/if_ste.c#6 integrate
.. //depot/projects/usb/src/sys/dev/ste/if_stereg.h#4 integrate
.. //depot/projects/usb/src/sys/dev/syscons/syscons.c#19 integrate
.. //depot/projects/usb/src/sys/dev/tdfx/tdfx_pci.c#5 integrate
.. //depot/projects/usb/src/sys/dev/twe/twe.c#6 integrate
.. //depot/projects/usb/src/sys/dev/twe/twe_freebsd.c#6 integrate
.. //depot/projects/usb/src/sys/dev/twe/twevar.h#3 integrate
.. //depot/projects/usb/src/sys/dev/uart/uart_bus_ebus.c#2 integrate
.. //depot/projects/usb/src/sys/dev/uart/uart_cpu_sparc64.c#3 integrate
.. //depot/projects/usb/src/sys/dev/usb/net/if_aue.c#19 integrate
.. //depot/projects/usb/src/sys/dev/usb/net/if_axe.c#22 integrate
.. //depot/projects/usb/src/sys/dev/usb/net/if_cue.c#16 integrate
.. //depot/projects/usb/src/sys/dev/usb/net/if_kue.c#16 integrate
.. //depot/projects/usb/src/sys/dev/usb/quirk/usb_quirk.c#13 integrate
.. //depot/projects/usb/src/sys/dev/usb/quirk/usb_quirk.h#8 integrate
.. //depot/projects/usb/src/sys/dev/usb/serial/uftdi.c#22 integrate
.. //depot/projects/usb/src/sys/dev/usb/serial/uplcom.c#17 integrate
.. //depot/projects/usb/src/sys/dev/usb/serial/uslcom.c#14 integrate
.. //depot/projects/usb/src/sys/dev/usb/serial/uvisor.c#16 integrate
.. //depot/projects/usb/src/sys/dev/usb/storage/umass.c#43 integrate
.. //depot/projects/usb/src/sys/dev/usb/usbdevs#93 integrate
.. //depot/projects/usb/src/sys/dev/usb/wlan/if_rum.c#20 integrate
.. //depot/projects/usb/src/sys/dev/usb/wlan/if_ural.c#19 integrate
.. //depot/projects/usb/src/sys/dev/vge/if_vge.c#14 integrate
.. //depot/projects/usb/src/sys/dev/xen/blkfront/blkfront.c#9 integrate
.. //depot/projects/usb/src/sys/fs/nfs/nfs_commonacl.c#6 integrate
.. //depot/projects/usb/src/sys/fs/nfs/nfs_var.h#7 integrate
.. //depot/projects/usb/src/sys/fs/nfsclient/nfs.h#3 integrate
.. //depot/projects/usb/src/sys/fs/nfsclient/nfs_clbio.c#8 integrate
.. //depot/projects/usb/src/sys/fs/nfsclient/nfs_clvnops.c#14 integrate
.. //depot/projects/usb/src/sys/fs/nfsserver/nfs_nfsdport.c#9 integrate
.. //depot/projects/usb/src/sys/fs/nfsserver/nfs_nfsdserv.c#5 integrate
.. //depot/projects/usb/src/sys/geom/concat/g_concat.c#6 integrate
.. //depot/projects/usb/src/sys/geom/gate/g_gate.c#3 integrate
.. //depot/projects/usb/src/sys/geom/geom_dev.c#13 integrate
.. //depot/projects/usb/src/sys/geom/geom_io.c#12 integrate
.. //depot/projects/usb/src/sys/geom/mirror/g_mirror.c#10 integrate
.. //depot/projects/usb/src/sys/geom/raid3/g_raid3.c#10 integrate
.. //depot/projects/usb/src/sys/geom/stripe/g_stripe.c#7 integrate
.. //depot/projects/usb/src/sys/i386/i386/elan-mmcr.c#5 integrate
.. //depot/projects/usb/src/sys/i386/i386/mem.c#3 integrate
.. //depot/projects/usb/src/sys/i386/xbox/xboxfb.c#4 integrate
.. //depot/projects/usb/src/sys/ia64/ia64/bus_machdep.c#1 branch
.. //depot/projects/usb/src/sys/ia64/ia64/clock.c#7 integrate
.. //depot/projects/usb/src/sys/ia64/ia64/machdep.c#17 integrate
.. //depot/projects/usb/src/sys/ia64/ia64/mem.c#3 integrate
.. //depot/projects/usb/src/sys/ia64/ia64/mp_machdep.c#13 integrate
.. //depot/projects/usb/src/sys/ia64/ia64/nexus.c#7 integrate
.. //depot/projects/usb/src/sys/ia64/ia64/sscdisk.c#4 integrate
.. //depot/projects/usb/src/sys/ia64/ia64/sys_machdep.c#2 integrate
.. //depot/projects/usb/src/sys/ia64/include/bus.h#3 integrate
.. //depot/projects/usb/src/sys/ia64/include/clock.h#4 integrate
.. //depot/projects/usb/src/sys/ia64/include/cpufunc.h#4 integrate
.. //depot/projects/usb/src/sys/ia64/include/mca.h#3 integrate
.. //depot/projects/usb/src/sys/ia64/include/md_var.h#7 integrate
.. //depot/projects/usb/src/sys/isa/vga_isa.c#6 integrate
.. //depot/projects/usb/src/sys/kern/kern_conf.c#20 integrate
.. //depot/projects/usb/src/sys/kern/kern_jail.c#35 integrate
.. //depot/projects/usb/src/sys/kern/kern_proc.c#25 integrate
.. //depot/projects/usb/src/sys/kern/kern_rmlock.c#6 integrate
.. //depot/projects/usb/src/sys/kern/sched_ule.c#22 integrate
.. //depot/projects/usb/src/sys/kern/subr_acl_nfs4.c#4 integrate
.. //depot/projects/usb/src/sys/kern/subr_acl_posix1e.c#7 integrate
.. //depot/projects/usb/src/sys/kern/subr_bus.c#36 integrate
.. //depot/projects/usb/src/sys/kern/subr_devstat.c#4 integrate
.. //depot/projects/usb/src/sys/kern/subr_witness.c#22 integrate
.. //depot/projects/usb/src/sys/kern/tty.c#34 integrate
.. //depot/projects/usb/src/sys/kern/uipc_accf.c#3 integrate
.. //depot/projects/usb/src/sys/kern/vfs_mount.c#33 integrate
.. //depot/projects/usb/src/sys/kern/vfs_subr.c#29 integrate
.. //depot/projects/usb/src/sys/mips/mips/mem.c#3 integrate
.. //depot/projects/usb/src/sys/modules/iwnfw/Makefile#4 integrate
.. //depot/projects/usb/src/sys/modules/iwnfw/iwn1000/Makefile#1 branch
.. //depot/projects/usb/src/sys/modules/iwnfw/iwn4965/Makefile#2 integrate
.. //depot/projects/usb/src/sys/modules/iwnfw/iwn5000/Makefile#2 integrate
.. //depot/projects/usb/src/sys/modules/iwnfw/iwn6000/Makefile#1 branch
.. //depot/projects/usb/src/sys/net/if.c#43 integrate
.. //depot/projects/usb/src/sys/net/if.h#14 integrate
.. //depot/projects/usb/src/sys/net/if_bridge.c#22 integrate
.. //depot/projects/usb/src/sys/net/if_ethersubr.c#26 integrate
.. //depot/projects/usb/src/sys/net/if_llatbl.c#9 integrate
.. //depot/projects/usb/src/sys/net/if_llatbl.h#5 integrate
.. //depot/projects/usb/src/sys/net/if_var.h#32 integrate
.. //depot/projects/usb/src/sys/net/if_vlan.c#20 integrate
.. //depot/projects/usb/src/sys/net/netisr.c#14 integrate
.. //depot/projects/usb/src/sys/net/route.c#28 integrate
.. //depot/projects/usb/src/sys/net/route.h#13 integrate
.. //depot/projects/usb/src/sys/net/rtsock.c#34 integrate
.. //depot/projects/usb/src/sys/netgraph/atm/uni/ng_uni.c#3 integrate
.. //depot/projects/usb/src/sys/netgraph/ng_base.c#22 integrate
.. //depot/projects/usb/src/sys/netgraph/ng_ipfw.c#6 integrate
.. //depot/projects/usb/src/sys/netgraph/ng_ipfw.h#4 integrate
.. //depot/projects/usb/src/sys/netinet/in.c#40 integrate
.. //depot/projects/usb/src/sys/netinet/in.h#16 integrate
.. //depot/projects/usb/src/sys/netinet/ip_dummynet.h#9 integrate
.. //depot/projects/usb/src/sys/netinet/ip_encap.c#5 integrate
.. //depot/projects/usb/src/sys/netinet/ip_mroute.c#19 integrate
.. //depot/projects/usb/src/sys/netinet/ip_output.c#31 integrate
.. //depot/projects/usb/src/sys/netinet/ipfw/ip_dummynet.c#6 integrate
.. //depot/projects/usb/src/sys/netinet/ipfw/ip_fw2.c#14 integrate
.. //depot/projects/usb/src/sys/netinet/ipfw/ip_fw_dynamic.c#2 integrate
.. //depot/projects/usb/src/sys/netinet/ipfw/ip_fw_log.c#2 integrate
.. //depot/projects/usb/src/sys/netinet/ipfw/ip_fw_nat.c#7 integrate
.. //depot/projects/usb/src/sys/netinet/ipfw/ip_fw_pfil.c#7 integrate
.. //depot/projects/usb/src/sys/netinet/ipfw/ip_fw_private.h#2 integrate
.. //depot/projects/usb/src/sys/netinet/ipfw/ip_fw_sockopt.c#2 integrate
.. //depot/projects/usb/src/sys/netinet/ipfw/ip_fw_table.c#2 integrate
.. //depot/projects/usb/src/sys/netinet/libalias/alias_mod.c#3 integrate
.. //depot/projects/usb/src/sys/netinet6/in6.c#36 integrate
.. //depot/projects/usb/src/sys/netinet6/nd6.c#29 integrate
.. //depot/projects/usb/src/sys/nfsclient/krpc_subr.c#8 integrate
.. //depot/projects/usb/src/sys/pc98/cbus/gdc.c#4 integrate
.. //depot/projects/usb/src/sys/powerpc/ofw/ofw_syscons.c#6 integrate
.. //depot/projects/usb/src/sys/powerpc/powerpc/mem.c#5 integrate
.. //depot/projects/usb/src/sys/rpc/rpcsec_gss/svc_rpcsec_gss.c#5 integrate
.. //depot/projects/usb/src/sys/sparc64/include/intr_machdep.h#8 integrate
.. //depot/projects/usb/src/sys/sparc64/include/iommureg.h#5 integrate
.. //depot/projects/usb/src/sys/sparc64/include/iommuvar.h#5 integrate
.. //depot/projects/usb/src/sys/sparc64/pci/fire.c#1 branch
.. //depot/projects/usb/src/sys/sparc64/pci/firereg.h#1 branch
.. //depot/projects/usb/src/sys/sparc64/pci/firevar.h#1 branch
.. //depot/projects/usb/src/sys/sparc64/pci/ofw_pci.h#7 integrate
.. //depot/projects/usb/src/sys/sparc64/pci/ofw_pcib.c#8 integrate
.. //depot/projects/usb/src/sys/sparc64/pci/ofw_pcibus.c#11 integrate
.. //depot/projects/usb/src/sys/sparc64/pci/psycho.c#13 integrate
.. //depot/projects/usb/src/sys/sparc64/pci/schizo.c#6 integrate
.. //depot/projects/usb/src/sys/sparc64/sparc64/eeprom.c#5 integrate
.. //depot/projects/usb/src/sys/sparc64/sparc64/identcpu.c#5 integrate
.. //depot/projects/usb/src/sys/sparc64/sparc64/interrupt.S#3 integrate
.. //depot/projects/usb/src/sys/sparc64/sparc64/intr_machdep.c#9 integrate
.. //depot/projects/usb/src/sys/sparc64/sparc64/iommu.c#8 integrate
.. //depot/projects/usb/src/sys/sparc64/sparc64/nexus.c#7 integrate
.. //depot/projects/usb/src/sys/sparc64/sparc64/ofw_machdep.c#4 integrate
.. //depot/projects/usb/src/sys/sparc64/sparc64/rtc.c#5 integrate
.. //depot/projects/usb/src/sys/sun4v/conf/NOTES#3 integrate
.. //depot/projects/usb/src/sys/sys/ata.h#11 integrate
.. //depot/projects/usb/src/sys/sys/conf.h#22 integrate
.. //depot/projects/usb/src/sys/sys/disk.h#6 integrate
.. //depot/projects/usb/src/sys/sys/file.h#8 integrate
.. //depot/projects/usb/src/sys/sys/pmc.h#9 integrate
.. //depot/projects/usb/src/sys/sys/ttydevsw.h#3 integrate
.. //depot/projects/usb/src/sys/vm/device_pager.c#12 integrate
.. //depot/projects/usb/src/sys/vm/uma_core.c#12 integrate
.. //depot/projects/usb/src/sys/xen/gnttab.c#7 integrate

Differences ...

==== //depot/projects/usb/src/sys/amd64/amd64/mem.c#5 (text+ko) ====

@@ -37,7 +37,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/mem.c,v 1.124 2008/09/27 08:51:18 ed Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/mem.c,v 1.125 2009/12/29 21:51:28 rnoland Exp $");
 
 /*
  * Memory special file
@@ -144,8 +144,8 @@
  */
 /* ARGSUSED */
 int
-memmmap(struct cdev *dev, vm_offset_t offset, vm_paddr_t *paddr,
-    int prot __unused)
+memmmap(struct cdev *dev, vm_ooffset_t offset, vm_paddr_t *paddr,
+    int prot __unused, vm_memattr_t *memattr __unused)
 {
 	if (dev2unit(dev) == CDEV_MINOR_MEM)
 		*paddr = offset;

==== //depot/projects/usb/src/sys/arm/arm/mem.c#5 (text+ko) ====

@@ -37,7 +37,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/arm/mem.c,v 1.6 2008/09/27 08:51:18 ed Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/arm/mem.c,v 1.7 2009/12/29 21:51:28 rnoland Exp $");
 
 /*
  * Memory special file
@@ -153,8 +153,8 @@
 /* ARGSUSED */
 
 int
-memmmap(struct cdev *dev, vm_offset_t offset, vm_paddr_t *paddr,
-    int prot __unused)
+memmmap(struct cdev *dev, vm_ooffset_t offset, vm_paddr_t *paddr,
+    int prot __unused, vm_memattr_t *memattr __unused)
 {
 	if (dev2unit(dev) == CDEV_MINOR_MEM)
 		*paddr = offset;

==== //depot/projects/usb/src/sys/arm/conf/AVILA#19 (text+ko) ====

@@ -16,7 +16,7 @@
 # If you are in doubt as to the purpose or necessity of a line, check first 
 # in NOTES.
 #
-# $FreeBSD: src/sys/arm/conf/AVILA,v 1.34 2009/12/02 00:38:11 thompsa Exp $
+# $FreeBSD: src/sys/arm/conf/AVILA,v 1.35 2009/12/23 23:16:54 rpaulo Exp $
 
 ident		AVILA
 
@@ -61,6 +61,10 @@
 #options 	PREEMPTION
 #options 	VERBOSE_SYSINIT
 
+# Hardware performance counters
+options 	HWPMC_HOOKS
+device		hwpmc
+
 #device		saarm
 
 device		pci

==== //depot/projects/usb/src/sys/arm/conf/CAMBRIA#11 (text+ko) ====

@@ -16,7 +16,7 @@
 # If you are in doubt as to the purpose or necessity of a line, check first 
 # in NOTES.
 #
-# $FreeBSD: src/sys/arm/conf/CAMBRIA,v 1.15 2009/12/02 00:37:03 thompsa Exp $
+# $FreeBSD: src/sys/arm/conf/CAMBRIA,v 1.16 2009/12/23 23:16:54 rpaulo Exp $
 
 ident		CAMBRIA
 
@@ -58,6 +58,10 @@
 options 	BOOTP_WIRED_TO=npe0
 options 	BOOTP_COMPAT
 
+# Hardware performance counters
+options 	HWPMC_HOOKS
+device		hwpmc
+
 #options 	VERBOSE_SYSINIT
 options 	VERBOSE_INIT_ARM
 

==== //depot/projects/usb/src/sys/arm/include/pmc_mdep.h#3 (text+ko) ====

@@ -1,12 +1,42 @@
 /*-
- * This file is in the public domain.
+ * Copyright (c) 2009 Rui Paulo <rpaulo@FreeBSD.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/arm/include/pmc_mdep.h,v 1.3 2007/12/07 13:45:46 jkoshy Exp $
+ * $FreeBSD: src/sys/arm/include/pmc_mdep.h,v 1.4 2009/12/23 23:16:54 rpaulo Exp $
  */
 
 #ifndef _MACHINE_PMC_MDEP_H_
 #define	_MACHINE_PMC_MDEP_H_
 
+#define	PMC_MDEP_CLASS_INDEX_XSCALE	0
+/*
+ * On the ARM platform we support the following PMCs.
+ *
+ * XSCALE	Intel XScale processors
+ */
+#include <dev/hwpmc/hwpmc_xscale.h>
+
 union pmc_md_op_pmcallocate {
 	uint64_t	__pad[4];
 };
@@ -15,14 +45,20 @@
 #define	PMCLOG_READADDR		PMCLOG_READ32
 #define	PMCLOG_EMITADDR		PMCLOG_EMIT32
 
-#if	_KERNEL
+#ifdef	_KERNEL
 union pmc_md_pmc {
+	struct pmc_md_xscale_pmc	pm_xscale;
 };
 
-#define	PMC_TRAPFRAME_TO_PC(TF)	(0)	/* Stubs */
-#define	PMC_TRAPFRAME_TO_FP(TF)	(0)
-#define	PMC_TRAPFRAME_TO_SP(TF)	(0)
+#define	PMC_TRAPFRAME_TO_PC(TF)	((TF)->tf_pc)
+#define	PMC_TRAPFRAME_TO_FP(TF)	((TF)->tf_usr_lr)
+#define	PMC_TRAPFRAME_TO_SP(TF)	((TF)->tf_usr_sp)
 
-#endif
+/*
+ * Prototypes
+ */
+struct pmc_mdep *pmc_xscale_initialize(void);
+void		pmc_xscale_finalize(struct pmc_mdep *_md);
+#endif /* _KERNEL */
 
 #endif /* !_MACHINE_PMC_MDEP_H_ */

==== //depot/projects/usb/src/sys/arm/xscale/ixp425/files.ixp425#10 (text+ko) ====

@@ -1,4 +1,4 @@
-#$FreeBSD: src/sys/arm/xscale/ixp425/files.ixp425,v 1.11 2009/05/27 16:16:56 thompsa Exp $
+#$FreeBSD: src/sys/arm/xscale/ixp425/files.ixp425,v 1.12 2009/12/23 23:16:54 rpaulo Exp $
 arm/arm/bus_space_generic.c		standard
 arm/arm/cpufunc_asm_xscale.S		standard
 arm/arm/irq_dispatch.S			standard
@@ -16,6 +16,7 @@
 arm/xscale/ixp425/ixp425_a4x_space.c	optional	uart
 arm/xscale/ixp425/ixp425_a4x_io.S	optional	uart
 dev/cfi/cfi_bus_ixp4xx.c		optional	cfi
+dev/hwpmc/hwpmc_xscale.c		optional	hwpmc
 dev/uart/uart_dev_ns8250.c		optional	uart
 #
 # NPE-based Ethernet support (requires qmgr also).

==== //depot/projects/usb/src/sys/boot/common/dev_net.c#4 (text+ko) ====

@@ -39,7 +39,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/boot/common/dev_net.c,v 1.18 2008/09/10 20:53:22 marius Exp $");
+__FBSDID("$FreeBSD: src/sys/boot/common/dev_net.c,v 1.19 2009/12/24 15:16:16 marius Exp $");
 
 /*-
  * This module implements a "raw device" interface suitable for
@@ -76,7 +76,9 @@
 #include "dev_net.h"
 #include "bootstrap.h"
 
+#ifdef	NETIF_DEBUG
 int debug = 0;
+#endif
 
 static int netdev_sock = -1;
 static int netdev_opens;
@@ -100,7 +102,7 @@
 	net_print
 };
 
-int
+static int
 net_init(void)
 {
 
@@ -112,7 +114,7 @@
  * This opens the low-level device and sets f->f_devdata.
  * This is declared with variable arguments...
  */
-int
+static int
 net_open(struct open_file *f, ...)
 {
 	va_list args;
@@ -132,8 +134,10 @@
 				printf("net_open: netif_open() failed\n");
 				return (ENXIO);
 			}
+#ifdef	NETIF_DEBUG
 			if (debug)
-			printf("net_open: netif_open() succeeded\n");
+				printf("net_open: netif_open() succeeded\n");
+#endif
 		}
 		if (rootip.s_addr == 0) {
 			/* Get root IP address, and path, etc. */
@@ -154,7 +158,7 @@
 	return (error);
 }
 
-int
+static int
 net_close(struct open_file *f)
 {
 #ifdef	NETIF_DEBUG
@@ -173,15 +177,17 @@
 		return(0);
 	rootip.s_addr = 0;
 	if (netdev_sock >= 0) {
+#ifdef	NETIF_DEBUG
 		if (debug)
 			printf("net_close: calling netif_close()\n");
+#endif
 		netif_close(netdev_sock);
 		netdev_sock = -1;
 	}
 	return (0);
 }
 
-int
+static int
 net_strategy()
 {
 
@@ -227,9 +233,11 @@
 		bootp(sock, BOOTP_NONE);
 	if (myip.s_addr != 0)
 		goto exit;
+#ifdef	NETIF_DEBUG
 	if (debug)
 		printf("net_open: BOOTP failed, trying RARP/RPC...\n");
 #endif
+#endif
 
 	/*
 	 * Use RARP to get our IP address.  This also sets our
@@ -246,8 +254,10 @@
 		printf("net_open: bootparam/whoami RPC failed\n");
 		return (EIO);
 	}
+#ifdef	NETIF_DEBUG
 	if (debug)
 		printf("net_open: client name: %s\n", hostname);
+#endif
 
 	/*
 	 * Ignore the gateway from whoami (unreliable).
@@ -261,11 +271,15 @@
 	}
 	if (smask) {
 		netmask = smask;
+#ifdef	NETIF_DEBUG
 		if (debug)
-		printf("net_open: subnet mask: %s\n", intoa(netmask));
+			printf("net_open: subnet mask: %s\n", intoa(netmask));
+#endif
 	}
+#ifdef	NETIF_DEBUG
 	if (gateip.s_addr && debug)
 		printf("net_open: net gateway: %s\n", inet_ntoa(gateip));
+#endif
 
 	/* Get the root server and pathname. */
 	if (bp_getfile(sock, "root", &rootip, rootpath)) {
@@ -288,10 +302,12 @@
 		bcopy(&rootpath[i], &temp[0], strlen(&rootpath[i])+1);
 		bcopy(&temp[0], &rootpath[0], strlen(&rootpath[i])+1);
 	}
+#ifdef	NETIF_DEBUG
 	if (debug) {
 		printf("net_open: server addr: %s\n", inet_ntoa(rootip));
 		printf("net_open: server path: %s\n", rootpath);
 	}
+#endif
 
 	d = socktodesc(sock);
 	sprintf(temp, "%6D", d->myea, ":");

==== //depot/projects/usb/src/sys/boot/ofw/libofw/ofw_disk.c#3 (text+ko) ====

@@ -24,7 +24,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/boot/ofw/libofw/ofw_disk.c,v 1.14 2008/10/13 17:14:29 nwhitehorn Exp $");
+__FBSDID("$FreeBSD: src/sys/boot/ofw/libofw/ofw_disk.c,v 1.15 2009/12/28 22:56:30 antoine Exp $");
 
 /*
  * Disk I/O routines using Open Firmware
@@ -67,7 +67,7 @@
 	SLIST_ENTRY(opened_dev)	link;
 };
 
-SLIST_HEAD(, opened_dev) opened_devs = SLIST_HEAD_INITIALIZER(opened_dev);
+SLIST_HEAD(, opened_dev) opened_devs = SLIST_HEAD_INITIALIZER(opened_devs);
 
 static int
 ofwd_init(void)

==== //depot/projects/usb/src/sys/boot/sparc64/loader/main.c#9 (text+ko) ====

@@ -33,7 +33,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/boot/sparc64/loader/main.c,v 1.42 2009/04/14 19:02:34 marius Exp $");
+__FBSDID("$FreeBSD: src/sys/boot/sparc64/loader/main.c,v 1.44 2009/12/24 15:23:51 marius Exp $");
 
 /*
  * FreeBSD/sparc64 kernel loader - machine dependent part
@@ -261,7 +261,6 @@
 sparc64_autoload(void)
 {
 
-	setenv("hw.ata.atapi_dma", "0", 0);
 	return (0);
 }
 
@@ -387,6 +386,8 @@
 	pmap_print_tlb_sun4u();
 #endif
 
+	dev_cleanup();
+
 	entry = e->e_entry;
 
 	OF_release((void *)heapva, HEAPSZ);

==== //depot/projects/usb/src/sys/cam/ata/ata_all.c#7 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/cam/ata/ata_all.c,v 1.11 2009/12/07 16:23:25 mav Exp $");
+__FBSDID("$FreeBSD: src/sys/cam/ata/ata_all.c,v 1.12 2009/12/28 20:08:01 mav Exp $");
 
 #include <sys/param.h>
 
@@ -75,6 +75,11 @@
 	switch (cmd->command) {
 	case 0x00: return ("NOP");
 	case 0x03: return ("CFA_REQUEST_EXTENDED_ERROR");
+	case 0x06:
+		switch (cmd->features) {
+	        case 0x01: return ("DSM TRIM");
+	        }
+	        return "DSM";
 	case 0x08: return ("DEVICE_RESET");
 	case 0x20: return ("READ");
 	case 0x24: return ("READ48");
@@ -338,7 +343,8 @@
 	    cmd == ATA_WRITE_DMA_FUA48 ||
 	    cmd == ATA_WRITE_DMA_QUEUED48 ||
 	    cmd == ATA_WRITE_DMA_QUEUED_FUA48 ||
-	    cmd == ATA_WRITE_STREAM_DMA48)
+	    cmd == ATA_WRITE_STREAM_DMA48 ||
+	    cmd == ATA_DATA_SET_MANAGEMENT)
 		ataio->cmd.flags |= CAM_ATAIO_DMA;
 	ataio->cmd.command = cmd;
 	ataio->cmd.features = features;

==== //depot/projects/usb/src/sys/cam/ata/ata_da.c#9 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/cam/ata/ata_da.c,v 1.12 2009/12/06 11:48:53 mav Exp $");
+__FBSDID("$FreeBSD: src/sys/cam/ata/ata_da.c,v 1.14 2009/12/28 20:08:01 mav Exp $");
 
 #include <sys/param.h>
 
@@ -74,8 +74,10 @@
 	ADA_FLAG_CAN_DMA	= 0x010,
 	ADA_FLAG_NEED_OTAG	= 0x020,
 	ADA_FLAG_WENT_IDLE	= 0x040,
+	ADA_FLAG_CAN_TRIM	= 0x080,
 	ADA_FLAG_OPEN		= 0x100,
-	ADA_FLAG_SCTX_INIT	= 0x200
+	ADA_FLAG_SCTX_INIT	= 0x200,
+	ADA_FLAG_CAN_CFA        = 0x400
 } ada_flags;
 
 typedef enum {
@@ -86,6 +88,7 @@
 	ADA_CCB_BUFFER_IO	= 0x03,
 	ADA_CCB_WAITING		= 0x04,
 	ADA_CCB_DUMP		= 0x05,
+	ADA_CCB_TRIM		= 0x06,
 	ADA_CCB_TYPE_MASK	= 0x0F,
 } ada_ccb_state;
 
@@ -101,13 +104,23 @@
 	u_int64_t sectors;	/* Total number sectors */
 };
 
+#define TRIM_MAX_BLOCKS	4
+#define TRIM_MAX_RANGES	TRIM_MAX_BLOCKS * 64
+struct trim_request {
+	uint8_t		data[TRIM_MAX_RANGES * 8];
+	struct bio	*bps[TRIM_MAX_RANGES];
+};
+
 struct ada_softc {
 	struct	 bio_queue_head bio_queue;
+	struct	 bio_queue_head trim_queue;
 	ada_state state;
 	ada_flags flags;	
 	ada_quirks quirks;
 	int	 ordered_tag_count;
 	int	 outstanding_cmds;
+	int	 trim_max_ranges;
+	int	 trim_running;
 	struct	 disk_params params;
 	struct	 disk *disk;
 	union	 ccb saved_ccb;
@@ -115,6 +128,7 @@
 	struct sysctl_ctx_list	sysctl_ctx;
 	struct sysctl_oid	*sysctl_tree;
 	struct callout		sendordered_c;
+	struct trim_request	trim_req;
 };
 
 struct ada_quirk_entry {
@@ -309,6 +323,18 @@
 	return (0);	
 }
 
+static void
+adaschedule(struct cam_periph *periph)
+{
+	struct ada_softc *softc = (struct ada_softc *)periph->softc;
+
+	if (bioq_first(&softc->bio_queue) ||
+	    (!softc->trim_running && bioq_first(&softc->trim_queue))) {
+		/* Have more work to do, so ensure we stay scheduled */
+		xpt_schedule(periph, CAM_PRIORITY_NORMAL);
+	}
+}
+
 /*
  * Actually translate the requested transfer into one the physical driver
  * can understand.  The transfer is described by a buf and will include
@@ -341,12 +367,16 @@
 	/*
 	 * Place it in the queue of disk activities for this disk
 	 */
-	bioq_disksort(&softc->bio_queue, bp);
+	if (bp->bio_cmd == BIO_DELETE &&
+	    (softc->flags & ADA_FLAG_CAN_TRIM))
+		bioq_disksort(&softc->trim_queue, bp);
+	else
+		bioq_disksort(&softc->bio_queue, bp);
 
 	/*
 	 * Schedule ourselves for performing the work.
 	 */
-	xpt_schedule(periph, CAM_PRIORITY_NORMAL);
+	adaschedule(periph);
 	cam_periph_unlock(periph);
 
 	return;
@@ -485,6 +515,7 @@
 	 *     with XPT_ABORT_CCB.
 	 */
 	bioq_flush(&softc->bio_queue, NULL, ENXIO);
+	bioq_flush(&softc->trim_queue, NULL, ENXIO);
 
 	disk_gone(softc->disk);
 	xpt_print(periph->path, "lost device\n");
@@ -618,6 +649,7 @@
 	}
 
 	bioq_init(&softc->bio_queue);
+	bioq_init(&softc->trim_queue);
 
 	if (cgd->ident_data.capabilities1 & ATA_SUPPORT_DMA)
 		softc->flags |= ADA_FLAG_CAN_DMA;
@@ -628,6 +660,17 @@
 	if (cgd->ident_data.satacapabilities & ATA_SUPPORT_NCQ &&
 	    cgd->inq_flags & SID_CmdQue)
 		softc->flags |= ADA_FLAG_CAN_NCQ;
+	if (cgd->ident_data.support_dsm & ATA_SUPPORT_DSM_TRIM) {
+		softc->flags |= ADA_FLAG_CAN_TRIM;
+		softc->trim_max_ranges = TRIM_MAX_RANGES;
+		if (cgd->ident_data.max_dsm_blocks != 0) {
+			softc->trim_max_ranges =
+			    min(cgd->ident_data.max_dsm_blocks * 64,
+				softc->trim_max_ranges);
+		}
+	}
+	if (cgd->ident_data.support.command2 & ATA_SUPPORT_CFA)
+		softc->flags |= ADA_FLAG_CAN_CFA;
 	softc->state = ADA_STATE_NORMAL;
 
 	periph->softc = softc;
@@ -672,7 +715,7 @@
 		maxio = DFLTPHYS;	/* traditional default */
 	else if (maxio > MAXPHYS)
 		maxio = MAXPHYS;	/* for safety */
-	if (cgd->ident_data.support.command2 & ATA_SUPPORT_ADDRESS48)
+	if (softc->flags & ADA_FLAG_CAN_48BIT)
 		maxio = min(maxio, 65536 * softc->params.secsize);
 	else					/* 28bit ATA command limit */
 		maxio = min(maxio, 256 * softc->params.secsize);
@@ -681,15 +724,24 @@
 	softc->disk->d_flags = 0;
 	if (softc->flags & ADA_FLAG_CAN_FLUSHCACHE)
 		softc->disk->d_flags |= DISKFLAG_CANFLUSHCACHE;
+	if ((softc->flags & ADA_FLAG_CAN_TRIM) ||
+	    ((softc->flags & ADA_FLAG_CAN_CFA) &&
+	    !(softc->flags & ADA_FLAG_CAN_48BIT)))
+		softc->disk->d_flags |= DISKFLAG_CANDELETE;
 	strlcpy(softc->disk->d_ident, cgd->serial_num,
 	    MIN(sizeof(softc->disk->d_ident), cgd->serial_num_len + 1));
 
 	softc->disk->d_sectorsize = softc->params.secsize;
 	softc->disk->d_mediasize = (off_t)softc->params.sectors *
 	    softc->params.secsize;
-	softc->disk->d_stripesize = ata_physical_sector_size(&cgd->ident_data);
-	softc->disk->d_stripeoffset = softc->disk->d_stripesize -
-	    ata_logical_sector_offset(&cgd->ident_data);
+	if (ata_physical_sector_size(&cgd->ident_data) !=
+	    softc->params.secsize) {
+		softc->disk->d_stripesize =
+		    ata_physical_sector_size(&cgd->ident_data);
+		softc->disk->d_stripeoffset = (softc->disk->d_stripesize -
+		    ata_logical_sector_offset(&cgd->ident_data)) %
+		    softc->disk->d_stripesize;
+	}
 	/* 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;
@@ -738,13 +790,10 @@
 	switch (softc->state) {
 	case ADA_STATE_NORMAL:
 	{
-		/* Pull a buffer from the queue and get going on it */		
 		struct bio *bp;
+		u_int8_t tag_code;
 
-		/*
-		 * See if there is a buf with work for us to do..
-		 */
-		bp = bioq_first(&softc->bio_queue);
+		/* Execute immediate CCB if waiting. */
 		if (periph->immediate_priority <= periph->pinfo.priority) {
 			CAM_DEBUG_PRINT(CAM_DEBUG_SUBTRACE,
 					("queuing for immediate ccb\n"));
@@ -753,115 +802,188 @@
 					  periph_links.sle);
 			periph->immediate_priority = CAM_PRIORITY_NONE;
 			wakeup(&periph->ccb_list);
-		} else if (bp == NULL) {
+			/* Have more work to do, so ensure we stay scheduled */
+			adaschedule(periph);
+			break;
+		}
+		/* Run TRIM if not running yet. */
+		if (!softc->trim_running &&
+		    (bp = bioq_first(&softc->trim_queue)) != 0) {
+			struct trim_request *req = &softc->trim_req;
+			struct bio *bp1;
+			int bps = 0, ranges = 0;
+
+			softc->trim_running = 1;
+			bzero(req, sizeof(*req));
+			bp1 = bp;
+			do {
+				uint64_t lba = bp1->bio_pblkno;
+				int count = bp1->bio_bcount /
+				    softc->params.secsize;
+
+				bioq_remove(&softc->trim_queue, bp1);
+				while (count > 0) {
+					int c = min(count, 0xffff);
+					int off = ranges * 8;
+
+					req->data[off + 0] = lba & 0xff;
+					req->data[off + 1] = (lba >> 8) & 0xff;
+					req->data[off + 2] = (lba >> 16) & 0xff;
+					req->data[off + 3] = (lba >> 24) & 0xff;
+					req->data[off + 4] = (lba >> 32) & 0xff;
+					req->data[off + 5] = (lba >> 40) & 0xff;
+					req->data[off + 6] = c & 0xff;
+					req->data[off + 7] = (c >> 8) & 0xff;
+					lba += c;
+					count -= c;
+					ranges++;
+				}
+				req->bps[bps++] = bp1;
+				bp1 = bioq_first(&softc->trim_queue);
+				if (bp1 == NULL ||
+				    bp1->bio_bcount / softc->params.secsize >
+				    (softc->trim_max_ranges - ranges) * 0xffff)
+					break;
+			} while (1);
+			cam_fill_ataio(ataio,
+			    ada_retry_count,
+			    adadone,
+			    CAM_DIR_OUT,
+			    0,
+			    req->data,
+			    ((ranges + 63) / 64) * 512,
+			    ada_default_timeout * 1000);
+			ata_48bit_cmd(ataio, ATA_DATA_SET_MANAGEMENT,
+			    ATA_DSM_TRIM, 0, (ranges + 63) / 64);
+			start_ccb->ccb_h.ccb_state = ADA_CCB_TRIM;
+			goto out;
+		}
+		/* Run regular command. */
+		bp = bioq_first(&softc->bio_queue);
+		if (bp == NULL) {
 			xpt_release_ccb(start_ccb);
+			break;
+		}
+		bioq_remove(&softc->bio_queue, bp);
+
+		if ((softc->flags & ADA_FLAG_NEED_OTAG) != 0) {
+			softc->flags &= ~ADA_FLAG_NEED_OTAG;
+			softc->ordered_tag_count++;
+			tag_code = 0;
 		} else {
-			u_int8_t tag_code;
+			tag_code = 1;
+		}
+		switch (bp->bio_cmd) {
+		case BIO_READ:
+		case BIO_WRITE:
+		{
+			uint64_t lba = bp->bio_pblkno;
+			uint16_t count = bp->bio_bcount / softc->params.secsize;
 
-			bioq_remove(&softc->bio_queue, bp);
+			cam_fill_ataio(ataio,
+			    ada_retry_count,
+			    adadone,
+			    bp->bio_cmd == BIO_READ ?
+			        CAM_DIR_IN : CAM_DIR_OUT,
+			    tag_code,
+			    bp->bio_data,
+			    bp->bio_bcount,
+			    ada_default_timeout*1000);
 
-			if ((softc->flags & ADA_FLAG_NEED_OTAG) != 0) {
-				softc->flags &= ~ADA_FLAG_NEED_OTAG;
-				softc->ordered_tag_count++;
-				tag_code = 0;
-			} else {
-				tag_code = 1;
-			}
-			switch (bp->bio_cmd) {
-			case BIO_READ:
-			case BIO_WRITE:
-			{
-				uint64_t lba = bp->bio_pblkno;
-				uint16_t count = bp->bio_bcount / softc->params.secsize;
-
-				cam_fill_ataio(ataio,
-				    ada_retry_count,
-				    adadone,
-				    bp->bio_cmd == BIO_READ ?
-				        CAM_DIR_IN : CAM_DIR_OUT,
-				    tag_code,
-				    bp->bio_data,
-				    bp->bio_bcount,
-				    ada_default_timeout*1000);
-
-				if ((softc->flags & ADA_FLAG_CAN_NCQ) && tag_code) {
+			if ((softc->flags & ADA_FLAG_CAN_NCQ) && tag_code) {
+				if (bp->bio_cmd == BIO_READ) {
+					ata_ncq_cmd(ataio, ATA_READ_FPDMA_QUEUED,
+					    lba, count);
+				} else {
+					ata_ncq_cmd(ataio, ATA_WRITE_FPDMA_QUEUED,
+					    lba, count);
+				}
+			} else if ((softc->flags & ADA_FLAG_CAN_48BIT) &&
+			    (lba + count >= ATA_MAX_28BIT_LBA ||
+			    count > 256)) {
+				if (softc->flags & ADA_FLAG_CAN_DMA) {
+					if (bp->bio_cmd == BIO_READ) {
+						ata_48bit_cmd(ataio, ATA_READ_DMA48,
+						    0, lba, count);
+					} else {
+						ata_48bit_cmd(ataio, ATA_WRITE_DMA48,
+						    0, lba, count);
+					}
+				} else {
 					if (bp->bio_cmd == BIO_READ) {
-						ata_ncq_cmd(ataio, ATA_READ_FPDMA_QUEUED,
-						    lba, count);
+						ata_48bit_cmd(ataio, ATA_READ_MUL48,
+						    0, lba, count);
 					} else {
-						ata_ncq_cmd(ataio, ATA_WRITE_FPDMA_QUEUED,
-						    lba, count);
+						ata_48bit_cmd(ataio, ATA_WRITE_MUL48,
+						    0, lba, count);
 					}
-				} else if ((softc->flags & ADA_FLAG_CAN_48BIT) &&
-				    (lba + count >= ATA_MAX_28BIT_LBA ||
-				    count > 256)) {
-					if (softc->flags & ADA_FLAG_CAN_DMA) {
-						if (bp->bio_cmd == BIO_READ) {
-							ata_48bit_cmd(ataio, ATA_READ_DMA48,
-							    0, lba, count);
-						} else {
-							ata_48bit_cmd(ataio, ATA_WRITE_DMA48,
-							    0, lba, count);
-						}
+				}
+			} else {
+				if (count == 256)
+					count = 0;
+				if (softc->flags & ADA_FLAG_CAN_DMA) {
+					if (bp->bio_cmd == BIO_READ) {
+						ata_28bit_cmd(ataio, ATA_READ_DMA,
+						    0, lba, count);
 					} else {
-						if (bp->bio_cmd == BIO_READ) {
-							ata_48bit_cmd(ataio, ATA_READ_MUL48,
-							    0, lba, count);
-						} else {
-							ata_48bit_cmd(ataio, ATA_WRITE_MUL48,

>>> TRUNCATED FOR MAIL (1000 lines) <<<



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