PERFORCE change 172419 for review
Andrew Thompson
thompsa at FreeBSD.org
Thu Dec 31 00:52:32 UTC 2009
http://p4web.freebsd.org/chv.cgi?CH=172419
Change 172419 by thompsa at 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 at 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) <<<
More information about the p4-projects
mailing list