freebsd-skq/sys/modules/Makefile
Stanislav Sedov e085f869d5 - Add cpuctl(4) pseudo-device driver to provide access to some low-level
features of CPUs like reading/writing machine-specific registers,
  retrieving cpuid data, and updating microcode.
- Add cpucontrol(8) utility, that provides userland access to
  the features of cpuctl(4).
- Add subsequent manpages.

The cpuctl(4) device operates as follows. The pseudo-device node cpuctlX
is created for each cpu present in the systems. The pseudo-device minor
number corresponds to the cpu number in the system. The cpuctl(4) pseudo-
device allows a number of ioctl to be preformed, namely RDMSR/WRMSR/CPUID
and UPDATE. The first pair alows the caller to read/write machine-specific
registers from the correspondent CPU. cpuid data could be retrieved using
the CPUID call, and microcode updates are applied via UPDATE.

The permissions are inforced based on the pseudo-device file permissions.
RDMSR/CPUID will be allowed when the caller has read access to the device
node, while WRMSR/UPDATE will be granted only when the node is opened
for writing. There're also a number of priv(9) checks.

The cpucontrol(8) utility is intened to provide userland access to
the cpuctl(4) device features. The utility also allows one to apply
cpu microcode updates.

Currently only Intel and AMD cpus are supported and were tested.

Approved by:	kib
Reviewed by:	rpaulo, cokane, Peter Jeremy
MFC after:	1 month
2008-08-08 16:26:53 +00:00

649 lines
8.6 KiB
Makefile

# $FreeBSD$
.include <bsd.own.mk>
SUBDIR= ${_3dfx} \
${_3dfx_linux} \
${_aac} \
accf_data \
accf_dns \
accf_http \
${_acpi} \
age \
${_agp} \
aha \
${_ahb} \
${_aic} \
aic7xxx \
aio \
${_amd} \
amr \
${_an} \
${_aout} \
${_apm} \
${_ar} \
${_arcmsr} \
${_arcnet} \
${_asmc} \
${_asr} \
ata \
${_ath} \
${_ath_hal} \
${_ath_rate_amrr} \
${_ath_rate_onoe} \
${_ath_rate_sample} \
aue \
${_auxio} \
axe \
bce \
bfe \
bge \
${_bios} \
${_bktr} \
${_bm} \
bridgestp \
cam \
${_canbepm} \
${_canbus} \
${_cardbus} \
${_cbb} \
cd9660 \
cd9660_iconv \
cdce \
${_ce} \
${_ciss} \
${_cm} \
${_cmx} \
coda \
coda5 \
${_coff} \
${_coretemp} \
${_cp} \
${_cpuctl} \
${_cpufreq} \
${_crypto} \
${_cryptodev} \
${_cs} \
${_ctau} \
cue \
cxgb \
${_cyclic} \
dc \
dcons \
dcons_crom \
de \
${_dpt} \
${_drm} \
${_dtrace} \
dummynet \
${_ed} \
${_elink} \
${_em} \
en \
${_ep} \
${_et} \
${_ex} \
${_exca} \
${_ext2fs} \
fatm \
fdc \
fdescfs \
${_fe} \
firewire \
firmware \
fxp \
gem \
geom \
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 \
${_k8temp} \
kbdmux \
krpc \
kue \
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} \
mpt \
mqueue \
msdosfs \
msdosfs_iconv \
${_mse} \
msk \
mxge \
my \
${_ncp} \
${_ncv} \
${_ndis} \
netgraph \
${_nfe} \
nfsclient \
nfslockd \
nfsserver \
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 \
${_random} \
${_ray} \
rc4 \
${_rdma} \
re \
reiserfs \
rl \
rue \
rum \
${_s3} \
${_safe} \
scc \
scd \
${_scsi_low} \
sem \
sf \
sis \
sk \
${_smbfs} \
sn \
${_snc} \
${_sound} \
${_speaker} \
${_splash} \
${_sppp} \
${_sr} \
ste \
${_stg} \
stge \
${_streams} \
sym \
${_syscons} \
sysvipc \
ti \
tl \
${_tmpfs} \
trm \
${_twa} \
twe \
tx \
txp \
uark \
uart \
ubsa \
ubsec \
ucom \
udav \
udbp \
udf \
udf_iconv \
ufm \
${_ufs} \
uftdi \
ugen \
uhid \
ukbd \
ulpt \
umass \
umct \
umodem \
ums \
unionfs \
uplcom \
ural \
urio \
usb \
uscanner \
uslcom \
utopia \
uvisor \
uvscom \
${_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 \
zyd
.if ${MACHINE_ARCH} != "powerpc"
_syscons= syscons
_vpo= vpo
.endif
.if defined(ALL_MODULES)
_ufs= ufs
.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
_ar= ar
_arcnet= arcnet
_ath= ath
_ath_hal= ath_hal
_ath_rate_amrr= ath_rate_amrr
_ath_rate_onoe= ath_rate_onoe
_ath_rate_sample=ath_rate_sample
_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
_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
_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
_ray= ray
_rdma= rdma
_safe= safe
_scsi_low= scsi_low
_smbfs= smbfs
_sound= sound
_speaker= speaker
_splash= splash
_sppp= sppp
_sr= sr
_stg= stg
_streams= streams
_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
_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
_arcmsr= arcmsr
_asmc= asmc
_ath= ath
_ath_hal= ath_hal
_ath_rate_amrr= ath_rate_amrr
_ath_rate_onoe= ath_rate_onoe
_ath_rate_sample=ath_rate_sample
_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
_k8temp= k8temp
_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
_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 stg vesa
# acpi is not enabled because it is broken as a module on ia64
_aic= aic
#_ar= ar not 64-bit clean
_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
#_sr= sr not 64bit clean
_streams= streams
_wi= wi
_xe= xe
.endif
.if ${MACHINE_ARCH} == "powerpc"
_an= an
_ath= ath
_ath_hal= ath_hal
_ath_rate_amrr= ath_rate_amrr
_ath_rate_onoe= ath_rate_onoe
_ath_rate_sample=ath_rate_sample
_bm= bm
_nvram= powermac_nvram
_smbfs= smbfs
.endif
.if ${MACHINE_ARCH} == "sparc64"
_ath= ath
_ath_hal= ath_hal
_ath_rate_amrr= ath_rate_amrr
_ath_rate_onoe= ath_rate_onoe
_ath_rate_sample=ath_rate_sample
_auxio= auxio
_em= em
_i2c= i2c
_igb= igb
_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>