e085f869d5
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
649 lines
8.6 KiB
Makefile
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>
|