freebsd-skq/sys
scottl e33e5dce32 Separate the parallel scsi knowledge out of the core of the XPT, and
modularize it so that new transports can be created.

Add a transport for SATA

Add a periph+protocol layer for ATA

Add a driver for AHCI-compliant hardware.

Add a maxio field to CAM so that drivers can advertise their max
I/O capability.  Modify various drivers so that they are insulated
from the value of MAXPHYS.

The new ATA/SATA code supports AHCI-compliant hardware, and will override
the classic ATA driver if it is loaded as a module at boot time or compiled
into the kernel.  The stack now support NCQ (tagged queueing) for increased
performance on modern SATA drives.  It also supports port multipliers.

ATA drives are accessed via 'ada' device nodes.  ATAPI drives are
accessed via 'cd' device nodes.  They can all be enumerated and manipulated
via camcontrol, just like SCSI drives.  SCSI commands are not translated to
their ATA equivalents; ATA native commands are used throughout the entire
stack, including camcontrol.  See the camcontrol manpage for further
details.  Testing this code may require that you update your fstab, and
possibly modify your BIOS to enable AHCI functionality, if available.

This code is very experimental at the moment.  The userland ABI/API has
changed, so applications will need to be recompiled.  It may change
further in the near future.  The 'ada' device name may also change as
more infrastructure is completed in this project.  The goal is to
eventually put all CAM busses and devices until newbus, allowing for
interesting topology and management options.

Few functional changes will be seen with existing SCSI/SAS/FC drivers,
though the userland ABI has still changed.  In the future, transports
specific modules for SAS and FC may appear in order to better support
the topologies and capabilities of these technologies.

The modularization of CAM and the addition of the ATA/SATA modules is
meant to break CAM out of the mold of being specific to SCSI, letting it
grow to be a framework for arbitrary transports and protocols.  It also
allows drivers to be written to support discrete hardware without
jeopardizing the stability of non-related hardware.  While only an AHCI
driver is provided now, a Silicon Image driver is also in the works.
Drivers for ICH1-4, ICH5-6, PIIX, classic IDE, and any other hardware
is possible and encouraged.  Help with new transports is also encouraged.

Submitted by:	scottl, mav
Approved by:	re
2009-07-10 08:18:08 +00:00
..
amd64 Restore the segment registers and segment base MSRs for amd64 syscall 2009-07-09 09:34:11 +00:00
arm Cleanup ALIGNED_POINTER: 2009-07-05 17:45:48 +00:00
boot On special systems where the MBR and the GPT are in sync (up to the 4th 2009-06-26 09:32:31 +00:00
bsm There is an optimization in chmod(1), that makes it not to call chmod(2) 2009-07-08 15:23:18 +00:00
cam Separate the parallel scsi knowledge out of the core of the XPT, and 2009-07-10 08:18:08 +00:00
cddl dtrace/amd64: fix virtual address checks 2009-06-24 16:03:57 +00:00
compat Regen the freebsd32 parts. 2009-07-08 16:30:34 +00:00
conf Separate the parallel scsi knowledge out of the core of the XPT, and 2009-07-10 08:18:08 +00:00
contrib Update to 3.6.2.2 firmware (latest w/o host-based power save support): 2009-06-29 18:42:54 +00:00
crypto Changed to M_NOWAIT when reallocing psc_buf in padlock_sha_update(), 2009-05-27 09:52:12 +00:00
ddb Place hostnames and similar information fully under the prison system. 2009-05-29 21:27:12 +00:00
dev Separate the parallel scsi knowledge out of the core of the XPT, and 2009-07-10 08:18:08 +00:00
fs Since the nfscl_getclose() function both decremented open counts and, 2009-07-09 19:00:29 +00:00
gdb
geom Revert revisions 188839 and 188868. Use of the ioctl in geom_dev.c 2009-07-08 05:56:14 +00:00
gnu Fix the build by using proper format. 2009-06-25 16:48:13 +00:00
i386 There is an optimization in chmod(1), that makes it not to call chmod(2) 2009-07-08 15:23:18 +00:00
ia64 Cleanup ALIGNED_POINTER: 2009-07-05 17:45:48 +00:00
isa
kern The control terminal revocation at the session leader exit does not 2009-07-09 18:54:38 +00:00
kgssapi When the KOBJMETHOD() macro was updated, it resulted in the 2009-06-14 17:33:46 +00:00
libkern done method is supposed to return int. 2009-06-22 22:09:18 +00:00
mips Cleanup ALIGNED_POINTER: 2009-07-05 17:45:48 +00:00
modules Separate the parallel scsi knowledge out of the core of the XPT, and 2009-07-10 08:18:08 +00:00
net In case we cannot queue a packet reaching the queue limit, retain the 2009-06-30 05:21:00 +00:00
net80211 correctly set the tailq ptr when removing the last item in the q 2009-07-10 02:19:57 +00:00
netatalk Use queue(9) instead of hand-crafted link lists for the global netatalk 2009-06-24 21:36:09 +00:00
netgraph Fix infinite loop in ng_iface, that happens when packet passes out via 2009-07-01 08:08:56 +00:00
netinet Update various IPFW-related modules to use if_addr_rlock()/ 2009-06-26 00:46:50 +00:00
netinet6 Fix "options VIMAGE_GLOBALS" build following introduction of 2009-06-29 15:23:50 +00:00
netipsec Add address list locking for in6_ifaddrhead/ia_link: as with locking 2009-06-25 16:35:28 +00:00
netipx Use queue(9) instead of hand-crafted link lists for the global IPX 2009-06-24 20:57:50 +00:00
netnatm Reimplement the netisr framework in order to support parallel netisr 2009-06-01 10:41:38 +00:00
netncp
netsmb Rework socket upcalls to close some races with setup/teardown of upcalls. 2009-06-01 21:17:03 +00:00
nfs Remove the old kernel RPC implementation and the NFS_LEGACYRPC option. 2009-06-30 19:03:27 +00:00
nfsclient In vn_vget_ino() and their inline equivalents, mnt_ref() the mount point 2009-07-02 18:02:55 +00:00
nfsserver Remove the old kernel RPC implementation and the NFS_LEGACYRPC option. 2009-06-30 19:03:27 +00:00
nlm Since svc_[dg|vc|tli|tp]_create() did not hold a reference count on the 2009-06-17 22:50:26 +00:00
opencrypto Fix cryptodev UIO creation. 2009-05-23 13:23:46 +00:00
pc98 Enable POSIX semaphores on all non-embedded architectures by default. 2009-07-02 18:24:37 +00:00
pci Use if_maddr_rlock()/if_maddr_runlock() rather than IF_ADDR_LOCK()/ 2009-06-26 11:45:06 +00:00
powerpc Cleanup ALIGNED_POINTER: 2009-07-05 17:45:48 +00:00
rpc When unmounting an NFS mount using sec=krb5[ip], the umount system 2009-07-01 16:42:03 +00:00
security Create audit records for AUE_POSIX_OPENPT, currently w/o arguments. 2009-07-02 16:33:38 +00:00
sparc64 Cleanup ALIGNED_POINTER: 2009-07-05 17:45:48 +00:00
sun4v Cleanup ALIGNED_POINTER: 2009-07-05 17:45:48 +00:00
sys Extend the cn_flags field of the struct componentname to 64 bits to have 2009-07-09 18:49:26 +00:00
tools - Increase dynamic range of filter coefficients from 28bit to 30bit. 2009-07-05 18:15:06 +00:00
ufs Fix fpathconf(3) on fifos, in effect making ls(1) properly 2009-07-02 20:05:21 +00:00
vm When forking a vm space that has wired map entries, do not forget to 2009-07-03 22:17:37 +00:00
xdr MFdevbranch 192944 2009-05-28 08:18:12 +00:00
xen Make ipi_cpu() function as intended. 2009-05-30 08:53:13 +00:00
Makefile Remove the unmaintained University of Michigan NFSv4 client from 8.x 2009-05-22 12:35:12 +00:00