freebsd-skq/sys/modules/Makefile
Scott Long 52c9ce25d8 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

618 lines
8.1 KiB
Makefile

# $FreeBSD$
.include <bsd.own.mk>
SUBDIR= ${_3dfx} \
${_3dfx_linux} \
${_aac} \
accf_data \
accf_dns \
accf_http \
${_acpi} \
ae \
age \
${_agp} \
aha \
${_ahb} \
ahci \
${_aic} \
aic7xxx \
aio \
${_amd} \
${_amdtemp} \
alc \
ale \
amr \
${_an} \
${_aout} \
${_apm} \
${_arcmsr} \
${_arcnet} \
${_asmc} \
${_asr} \
ata \
ath \
${_auxio} \
bce \
bfe \
bge \
${_bios} \
${_bktr} \
${_bm} \
bridgestp \
cam \
${_canbepm} \
${_canbus} \
${_cardbus} \
cas \
${_cbb} \
cd9660 \
cd9660_iconv \
${_ce} \
${_ciss} \
${_cm} \
${_cmx} \
coda \
coda5 \
${_coff} \
${_coretemp} \
${_cp} \
${_cpuctl} \
${_cpufreq} \
${_crypto} \
${_cryptodev} \
${_cs} \
${_ctau} \
cxgb \
${_cyclic} \
dc \
dcons \
dcons_crom \
de \
${_dpms} \
${_dpt} \
${_drm} \
${_dtrace} \
dummynet \
${_ed} \
${_elink} \
${_em} \
en \
${_ep} \
${_et} \
${_ex} \
${_exca} \
${_ext2fs} \
fatm \
fdc \
fdescfs \
${_fe} \
firewire \
firmware \
fxp \
gem \
geom \
${_glxsb} \
hatm \
hifn \
hme \
${_hptiop} \
${_hptmv} \
${_hptrr} \
hwpmc \
${_i2c} \
${_ibcs2} \
${_ichwd} \
${_ida} \
${_ie} \
if_bridge \
if_disc \
if_edsc \
if_ef \
if_faith \
if_gif \
if_gre \
if_lagg \
${_if_ndis} \
if_stf \
if_tap \
if_tun \
if_vlan \
${_igb} \
${_iir} \
${_io} \
ipdivert \
${_ipfilter} \
ipfw \
ipfw_nat \
${_ipmi} \
ip_mroute_mod \
${_ips} \
${_ipw} \
${_ipwfw} \
iscsi \
isp \
ispfw \
${_iwi} \
${_iwifw} \
${_iwn} \
${_iwnfw} \
${_ixgb} \
jme \
joy \
kbdmux \
krpc \
ksyms \
le \
lge \
libalias \
libiconv \
libmbpool \
libmchain \
${_linprocfs} \
${_linsysfs} \
${_linux} \
lmc \
lpt \
mac_biba \
mac_bsdextended \
mac_ifoff \
mac_lomac \
mac_mls \
mac_none \
mac_partition \
mac_portacl \
mac_seeotheruids \
mac_stub \
mac_test \
malo \
mcd \
md \
mem \
mfi \
mii \
mlx \
${_mly} \
mmc \
mmcsd \
mpt \
mqueue \
msdosfs \
msdosfs_iconv \
${_mse} \
msk \
mwl \
mxge \
my \
${_ncp} \
${_ncv} \
${_ndis} \
netgraph \
${_nfe} \
nfscl \
nfsclient \
nfscommon \
nfsd \
nfslockd \
nfsserver \
nfssvc \
nge \
nmdm \
${_nsp} \
ntfs \
ntfs_iconv \
nullfs \
${_nve} \
${_nvram} \
${_nwfs} \
${_nxge} \
${_opensolaris} \
${_padlock} \
patm \
${_pccard} \
${_pcfclock} \
pcn \
${_pf} \
${_pflog} \
plip \
${_pmc} \
portalfs \
ppbus \
ppc \
ppi \
pps \
procfs \
pseudofs \
${_pst} \
puc \
ral \
ralfw \
${_random} \
rc4 \
${_rdma} \
re \
reiserfs \
rl \
${_s3} \
${_safe} \
${_sbni} \
scc \
scd \
${_scsi_low} \
sdhci \
sem \
sf \
sis \
sk \
${_smbfs} \
sn \
${_snc} \
snp \
${_sound} \
${_speaker} \
${_splash} \
${_sppp} \
ste \
${_stg} \
stge \
${_streams} \
${_svr4} \
sym \
${_syscons} \
sysvipc \
ti \
tl \
${_tmpfs} \
trm \
${_twa} \
twe \
tx \
txp \
uart \
ubsec \
udf \
udf_iconv \
ufs \
unionfs \
usb \
utopia \
${_vesa} \
vge \
vkbd \
${_vpo} \
vr \
vx \
wb \
${_wi} \
wlan \
wlan_acl \
wlan_amrr \
wlan_ccmp \
wlan_rssadapt \
wlan_tkip \
wlan_wep \
wlan_xauth \
${_wpi} \
${_wpifw} \
${_xe} \
xfs \
xl \
${_zfs} \
zlib \
.if ${MACHINE_ARCH} != "powerpc"
_syscons= syscons
_vpo= vpo
.endif
.if ${MK_CRYPT} != "no" || defined(ALL_MODULES)
.if exists(${.CURDIR}/../opencrypto)
_crypto= crypto
_cryptodev= cryptodev
.endif
.if exists(${.CURDIR}/../crypto)
_random= random
.endif
.endif
.if ${MK_IPFILTER} != "no" || defined(ALL_MODULES)
_ipfilter= ipfilter
.endif
.if ${MK_PF} != "no" || defined(ALL_MODULES)
_pf= pf
_pflog= pflog
.endif
.if ${MACHINE_ARCH} == "i386"
# XXX some of these can move to the general case when de-i386'ed
# XXX some of these can move now, but are untested on other architectures.
_3dfx= 3dfx
_3dfx_linux= 3dfx_linux
_agp= agp
_aic= aic
_amd= amd
_an= an
_aout= aout
_apm= apm
_arcnet= arcnet
_bktr= bktr
_cardbus= cardbus
_cbb= cbb
_ce= ce
_coff= coff
_cp= cp
_cpuctl= cpuctl
_cpufreq= cpufreq
_cs= cs
.if ${MK_CDDL} != "no" || defined(ALL_MODULES)
_cyclic= cyclic
.endif
_dpms= dpms
_drm= drm
.if ${MK_CDDL} != "no" || defined(ALL_MODULES)
_dtrace= dtrace
.endif
_ed= ed
_elink= elink
_em= em
_ep= ep
_et= et
_exca= exca
_ext2fs= ext2fs
_fe= fe
_glxsb= glxsb
_i2c= i2c
_ibcs2= ibcs2
_ie= ie
_if_ndis= if_ndis
_igb= igb
_io= io
_linprocfs= linprocfs
_linsysfs= linsysfs
_linux= linux
_mse= mse
.if ${MK_NCP} != "no"
_ncp= ncp
.endif
_ncv= ncv
_ndis= ndis
_nsp= nsp
.if ${MK_NCP} != "no"
_nwfs= nwfs
.endif
.if ${MK_CDDL} != "no" || defined(ALL_MODULES)
_opensolaris= opensolaris
.endif
_pccard= pccard
_pcfclock= pcfclock
_pst= pst
_rdma= rdma
_safe= safe
_sbni= sbni
_scsi_low= scsi_low
_smbfs= smbfs
_sound= sound
_speaker= speaker
_splash= splash
_sppp= sppp
_stg= stg
_streams= streams
_svr4= svr4
_tmpfs= tmpfs
_wi= wi
_xe= xe
.if ${MK_ZFS} != "no" || defined(ALL_MODULES)
_zfs= zfs
.endif
.if ${MACHINE} == "i386"
_aac= aac
_acpi= acpi
_ahb= ahb
_amdtemp= amdtemp
_arcmsr= arcmsr
_asmc= asmc
_asr= asr
_bios= bios
_ciss= ciss
_cm= cm
_cmx= cmx
_coretemp= coretemp
_ctau= ctau
_dpt= dpt
_ex= ex
_hptiop= hptiop
_hptmv= hptmv
_hptrr= hptrr
_ichwd= ichwd
_ida= ida
_iir= iir
_ipmi= ipmi
_ips= ips
_ipw= ipw
_ipwfw= ipwfw
_iwi= iwi
_iwifw= iwifw
_iwn= iwn
_iwnfw= iwnfw
_ixgb= ixgb
_mly= mly
_nfe= nfe
_nve= nve
_nvram= nvram
_nxge= nxge
_wpi= wpi
_wpifw= wpifw
.if ${MK_CRYPT} != "no" || defined(ALL_MODULES)
.if exists(${.CURDIR}/../crypto/via)
_padlock= padlock
.endif
.endif
_s3= s3
_twa= twa
_vesa= vesa
.elif ${MACHINE} == "pc98"
_canbepm= canbepm
_canbus= canbus
_pmc= pmc
_snc= snc
.endif
.endif
.if ${MACHINE_ARCH} == "amd64"
_aac= aac
_acpi= acpi
_agp= agp
_an= an
_amdtemp= amdtemp
_arcmsr= arcmsr
_asmc= asmc
_cardbus= cardbus
_cbb= cbb
_cmx= cmx
_ciss= ciss
_coretemp= coretemp
_cpuctl= cpuctl
_cpufreq= cpufreq
.if ${MK_CDDL} != "no" || defined(ALL_MODULES)
_cyclic= cyclic
.endif
_drm= drm
.if ${MK_CDDL} != "no" || defined(ALL_MODULES)
_dtrace= dtrace
.endif
_ed= ed
_et= et
_em= em
_exca= exca
_ext2fs= ext2fs
_hptiop= hptiop
_hptmv= hptmv
_hptrr= hptrr
_i2c= i2c
_ichwd= ichwd
_ida= ida
_if_ndis= if_ndis
_igb= igb
_iir= iir
_io= io
_ipmi= ipmi
_ips= ips
_ipw= ipw
_ipwfw= ipwfw
_iwn= iwn
_iwnfw= iwnfw
_ixgb= ixgb
_linprocfs= linprocfs
_linsysfs= linsysfs
_linux= linux
_mly= mly
_ndis= ndis
_nfe= nfe
_nve= nve
_nvram= nvram
_nxge= nxge
.if ${MK_CDDL} != "no" || defined(ALL_MODULES)
_opensolaris= opensolaris
.endif
.if ${MK_CRYPT} != "no" || defined(ALL_MODULES)
.if exists(${.CURDIR}/../crypto/via)
_padlock= padlock
.endif
.endif
_pccard= pccard
_rdma= rdma
_safe= safe
_scsi_low= scsi_low
_smbfs= smbfs
_sound= sound
_speaker= speaker
_sppp= sppp
_tmpfs= tmpfs
_twa= twa
_wi= wi
_wpi= wpi
_wpifw= wpifw
.if ${MK_ZFS} != "no" || defined(ALL_MODULES)
_zfs= zfs
.endif
.endif
.if ${MACHINE_ARCH} == "ia64"
# Modules not enabled on ia64 (as compared to i386) include:
# aac acpi aout apm atspeaker drm ibcs2 linprocfs linux ncv
# nsp s3 sbni stg vesa
# acpi is not enabled because it is broken as a module on ia64
_aic= aic
_an= an
_arcnet= arcnet
_asr= asr
_bktr= bktr
_cardbus= cardbus
_cbb= cbb
_ciss= ciss
_cm= cm
_cmx= cmx
_coff= coff
_cpufreq= cpufreq
_em= em
_ep= ep
_exca= exca
_fe= fe
_igb= igb
_iir= iir
_mly= mly
_pccard= pccard
_scsi_low= scsi_low
_smbfs= smbfs
_sound= sound
_splash= splash
_sppp= sppp
_streams= streams
_wi= wi
_xe= xe
.endif
.if ${MACHINE_ARCH} == "powerpc"
_an= an
_bm= bm
_cpufreq= cpufreq
_nvram= powermac_nvram
_smbfs= smbfs
_sound= sound
.endif
.if ${MACHINE_ARCH} == "sparc64"
_auxio= auxio
_em= em
_i2c= i2c
_igb= igb
.if ${MK_CDDL} != "no" || defined(ALL_MODULES)
_opensolaris= opensolaris
.endif
_sound= sound
.if ${MK_ZFS} != "no" || defined(ALL_MODULES)
_zfs= zfs
.endif
.endif
.if defined(MODULES_OVERRIDE) && !defined(ALL_MODULES)
SUBDIR=${MODULES_OVERRIDE}
.endif
.for reject in ${WITHOUT_MODULES}
SUBDIR:= ${SUBDIR:N${reject}}
.endfor
# Calling kldxref(8) for each module is expensive.
.if !defined(NO_XREF)
.MAKEFLAGS+= -DNO_XREF
afterinstall:
@if type kldxref >/dev/null 2>&1; then \
${ECHO} kldxref ${DESTDIR}${KMODDIR}; \
kldxref ${DESTDIR}${KMODDIR}; \
fi
.endif
.include <bsd.subdir.mk>