Linux srv25.usacloudserver.us 5.14.0-570.39.1.el9_6.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Sep 4 05:08:52 EDT 2025 x86_64
LiteSpeed
Server IP : 23.137.84.82 & Your IP : 216.73.216.127
Domains :
Cant Read [ /etc/named.conf ]
User : epicgamerzoneco
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
usr /
include /
linux /
Delete
Unzip
Name
Size
Permission
Date
Action
android
[ DIR ]
drwxr-xr-x
2025-09-09 19:29
byteorder
[ DIR ]
drwxr-xr-x
2025-09-09 19:29
caif
[ DIR ]
drwxr-xr-x
2025-09-09 19:29
can
[ DIR ]
drwxr-xr-x
2025-09-09 19:29
cifs
[ DIR ]
drwxr-xr-x
2025-09-09 19:29
dvb
[ DIR ]
drwxr-xr-x
2025-09-09 19:29
genwqe
[ DIR ]
drwxr-xr-x
2025-09-09 19:29
hdlc
[ DIR ]
drwxr-xr-x
2025-09-09 19:29
hsi
[ DIR ]
drwxr-xr-x
2025-09-09 19:29
iio
[ DIR ]
drwxr-xr-x
2025-09-09 19:29
isdn
[ DIR ]
drwxr-xr-x
2025-09-09 19:29
misc
[ DIR ]
drwxr-xr-x
2025-09-09 19:29
mmc
[ DIR ]
drwxr-xr-x
2025-09-09 19:29
netfilter
[ DIR ]
drwxr-xr-x
2025-09-09 19:29
netfilter_arp
[ DIR ]
drwxr-xr-x
2025-09-09 19:29
netfilter_bridge
[ DIR ]
drwxr-xr-x
2025-09-09 19:29
netfilter_ipv4
[ DIR ]
drwxr-xr-x
2025-09-09 19:29
netfilter_ipv6
[ DIR ]
drwxr-xr-x
2025-09-09 19:29
nfsd
[ DIR ]
drwxr-xr-x
2025-09-09 19:29
raid
[ DIR ]
drwxr-xr-x
2025-09-09 19:29
sched
[ DIR ]
drwxr-xr-x
2025-09-09 19:29
spi
[ DIR ]
drwxr-xr-x
2025-09-09 19:29
sunrpc
[ DIR ]
drwxr-xr-x
2025-09-09 19:29
surface_aggregator
[ DIR ]
drwxr-xr-x
2025-09-09 19:29
tc_act
[ DIR ]
drwxr-xr-x
2025-09-09 19:29
tc_ematch
[ DIR ]
drwxr-xr-x
2025-09-09 19:29
usb
[ DIR ]
drwxr-xr-x
2025-09-09 19:29
a.out.h
6.73
KB
-rw-r--r--
2025-09-04 09:37
acct.h
3.82
KB
-rw-r--r--
2025-09-04 09:37
acrn.h
16.29
KB
-rw-r--r--
2025-09-04 09:37
adb.h
1.11
KB
-rw-r--r--
2025-09-04 09:37
adfs_fs.h
993
B
-rw-r--r--
2025-09-04 09:37
affs_hardblocks.h
1.54
KB
-rw-r--r--
2025-09-04 09:37
agpgart.h
3.85
KB
-rw-r--r--
2025-09-04 09:37
aio_abi.h
3.32
KB
-rw-r--r--
2025-09-04 09:37
am437x-vpfe.h
3.59
KB
-rw-r--r--
2025-09-04 09:37
apm_bios.h
3.6
KB
-rw-r--r--
2025-09-04 09:37
arcfb.h
213
B
-rw-r--r--
2025-09-04 09:37
arm_sdei.h
2.69
KB
-rw-r--r--
2025-09-04 09:37
aspeed-lpc-ctrl.h
1.74
KB
-rw-r--r--
2025-09-04 09:37
aspeed-p2a-ctrl.h
1.86
KB
-rw-r--r--
2025-09-04 09:37
atalk.h
1023
B
-rw-r--r--
2025-09-04 09:37
atm.h
7.7
KB
-rw-r--r--
2025-09-04 09:37
atm_eni.h
648
B
-rw-r--r--
2025-09-04 09:37
atm_he.h
406
B
-rw-r--r--
2025-09-04 09:37
atm_idt77105.h
955
B
-rw-r--r--
2025-09-04 09:37
atm_nicstar.h
1.25
KB
-rw-r--r--
2025-09-04 09:37
atm_tcp.h
1.58
KB
-rw-r--r--
2025-09-04 09:37
atm_zatm.h
1.5
KB
-rw-r--r--
2025-09-04 09:37
atmapi.h
952
B
-rw-r--r--
2025-09-04 09:37
atmarp.h
1.27
KB
-rw-r--r--
2025-09-04 09:37
atmbr2684.h
3.19
KB
-rw-r--r--
2025-09-04 09:37
atmclip.h
576
B
-rw-r--r--
2025-09-04 09:37
atmdev.h
7.5
KB
-rw-r--r--
2025-09-04 09:37
atmioc.h
1.61
KB
-rw-r--r--
2025-09-04 09:37
atmlec.h
2.33
KB
-rw-r--r--
2025-09-04 09:37
atmmpc.h
4.13
KB
-rw-r--r--
2025-09-04 09:37
atmppp.h
639
B
-rw-r--r--
2025-09-04 09:37
atmsap.h
4.85
KB
-rw-r--r--
2025-09-04 09:37
atmsvc.h
1.81
KB
-rw-r--r--
2025-09-04 09:37
audit.h
21.06
KB
-rw-r--r--
2025-09-04 09:37
auto_dev-ioctl.h
4.87
KB
-rw-r--r--
2025-09-04 09:37
auto_fs.h
6.28
KB
-rw-r--r--
2025-09-04 09:37
auto_fs4.h
451
B
-rw-r--r--
2025-09-04 09:37
auxvec.h
1.56
KB
-rw-r--r--
2025-09-04 09:37
ax25.h
2.76
KB
-rw-r--r--
2025-09-04 09:37
batadv_packet.h
19.87
KB
-rw-r--r--
2025-09-04 09:37
batman_adv.h
16.49
KB
-rw-r--r--
2025-09-04 09:37
baycom.h
883
B
-rw-r--r--
2025-09-04 09:37
bcm933xx_hcs.h
419
B
-rw-r--r--
2025-09-04 09:37
bfs_fs.h
1.86
KB
-rw-r--r--
2025-09-04 09:37
binfmts.h
776
B
-rw-r--r--
2025-09-04 09:37
bits.h
447
B
-rw-r--r--
2025-09-04 09:37
blkpg.h
904
B
-rw-r--r--
2025-09-04 09:37
blktrace_api.h
4.59
KB
-rw-r--r--
2025-09-04 09:37
blkzoned.h
6.34
KB
-rw-r--r--
2025-09-04 09:37
bpf.h
272.11
KB
-rw-r--r--
2025-09-04 09:37
bpf_common.h
1.33
KB
-rw-r--r--
2025-09-04 09:37
bpf_perf_event.h
529
B
-rw-r--r--
2025-09-04 09:37
bpfilter.h
465
B
-rw-r--r--
2025-09-04 09:37
bpqether.h
981
B
-rw-r--r--
2025-09-04 09:37
bsg.h
2.44
KB
-rw-r--r--
2025-09-04 09:37
bt-bmc.h
572
B
-rw-r--r--
2025-09-04 09:37
btf.h
5.46
KB
-rw-r--r--
2025-09-04 09:37
btrfs.h
29.85
KB
-rw-r--r--
2025-09-04 09:37
btrfs_tree.h
25.22
KB
-rw-r--r--
2025-09-04 09:37
cachefiles.h
1.61
KB
-rw-r--r--
2025-09-04 09:37
can.h
11.03
KB
-rw-r--r--
2025-09-04 09:37
capability.h
13.17
KB
-rw-r--r--
2025-09-04 09:37
capi.h
3.05
KB
-rw-r--r--
2025-09-04 09:37
cciss_defs.h
3.2
KB
-rw-r--r--
2025-09-04 09:37
cciss_ioctl.h
2.7
KB
-rw-r--r--
2025-09-04 09:37
ccs.h
767
B
-rw-r--r--
2025-09-04 09:37
cdrom.h
28.87
KB
-rw-r--r--
2025-09-04 09:37
cec-funcs.h
53.14
KB
-rw-r--r--
2025-09-04 09:37
cec.h
40.47
KB
-rw-r--r--
2025-09-04 09:37
cfm_bridge.h
1.42
KB
-rw-r--r--
2025-09-04 09:37
cgroupstats.h
2.17
KB
-rw-r--r--
2025-09-04 09:37
chio.h
5.16
KB
-rw-r--r--
2025-09-04 09:37
close_range.h
377
B
-rw-r--r--
2025-09-04 09:37
cm4000_cs.h
1.76
KB
-rw-r--r--
2025-09-04 09:37
cn_proc.h
4.05
KB
-rw-r--r--
2025-09-04 09:37
coda.h
17.79
KB
-rw-r--r--
2025-09-04 09:37
coff.h
12.25
KB
-rw-r--r--
2025-09-04 09:37
connector.h
2.2
KB
-rw-r--r--
2025-09-04 09:37
const.h
987
B
-rw-r--r--
2025-09-04 09:37
coresight-stm.h
747
B
-rw-r--r--
2025-09-04 09:37
cramfs_fs.h
3.47
KB
-rw-r--r--
2025-09-04 09:37
cryptouser.h
5.2
KB
-rw-r--r--
2025-09-04 09:37
cuda.h
905
B
-rw-r--r--
2025-09-04 09:37
cxl_mem.h
7.73
KB
-rw-r--r--
2025-09-04 09:37
cycx_cfm.h
2.92
KB
-rw-r--r--
2025-09-04 09:37
dcbnl.h
24.7
KB
-rw-r--r--
2025-09-04 09:37
dccp.h
6.29
KB
-rw-r--r--
2025-09-04 09:37
devlink.h
22.3
KB
-rw-r--r--
2025-09-04 09:37
dlm.h
2.49
KB
-rw-r--r--
2025-09-04 09:37
dlm_device.h
2.48
KB
-rw-r--r--
2025-09-04 09:37
dlm_netlink.h
1.13
KB
-rw-r--r--
2025-09-04 09:37
dlm_plock.h
894
B
-rw-r--r--
2025-09-04 09:37
dlmconstants.h
4.96
KB
-rw-r--r--
2025-09-04 09:37
dm-ioctl.h
11.48
KB
-rw-r--r--
2025-09-04 09:37
dm-log-userspace.h
14.83
KB
-rw-r--r--
2025-09-04 09:37
dma-buf.h
5.12
KB
-rw-r--r--
2025-09-04 09:37
dma-heap.h
1.36
KB
-rw-r--r--
2025-09-04 09:37
dn.h
4.53
KB
-rw-r--r--
2025-09-04 09:37
dns_resolver.h
3.86
KB
-rw-r--r--
2025-09-04 09:37
dpll.h
7.19
KB
-rw-r--r--
2025-09-04 09:37
dqblk_xfs.h
9.17
KB
-rw-r--r--
2025-09-04 09:37
edd.h
5.47
KB
-rw-r--r--
2025-09-04 09:37
efs_fs_sb.h
2.17
KB
-rw-r--r--
2025-09-04 09:37
elf-em.h
2.57
KB
-rw-r--r--
2025-09-04 09:37
elf-fdpic.h
1.1
KB
-rw-r--r--
2025-09-04 09:37
elf.h
14.69
KB
-rw-r--r--
2025-09-04 09:37
errno.h
23
B
-rw-r--r--
2025-09-04 09:37
errqueue.h
1.94
KB
-rw-r--r--
2025-09-04 09:37
erspan.h
1.03
KB
-rw-r--r--
2025-09-04 09:37
ethtool.h
100.09
KB
-rw-r--r--
2025-09-04 09:37
ethtool_netlink.h
29.87
KB
-rw-r--r--
2025-09-04 09:37
eventfd.h
264
B
-rw-r--r--
2025-09-04 09:37
eventpoll.h
2.84
KB
-rw-r--r--
2025-09-04 09:37
f2fs.h
3.22
KB
-rw-r--r--
2025-09-04 09:37
fadvise.h
842
B
-rw-r--r--
2025-09-04 09:37
falloc.h
3.5
KB
-rw-r--r--
2025-09-04 09:37
fanotify.h
6.64
KB
-rw-r--r--
2025-09-04 09:37
fb.h
16.09
KB
-rw-r--r--
2025-09-04 09:37
fcntl.h
4.22
KB
-rw-r--r--
2025-09-04 09:37
fd.h
11.83
KB
-rw-r--r--
2025-09-04 09:37
fdreg.h
5.24
KB
-rw-r--r--
2025-09-04 09:37
fib_rules.h
1.99
KB
-rw-r--r--
2025-09-04 09:37
fiemap.h
2.71
KB
-rw-r--r--
2025-09-04 09:37
filter.h
2.16
KB
-rw-r--r--
2025-09-04 09:37
firewire-cdev.h
43.2
KB
-rw-r--r--
2025-09-04 09:37
firewire-constants.h
3.16
KB
-rw-r--r--
2025-09-04 09:37
fou.h
819
B
-rw-r--r--
2025-09-04 09:37
fpga-dfl.h
8.52
KB
-rw-r--r--
2025-09-04 09:37
fs.h
12.88
KB
-rw-r--r--
2025-09-04 09:37
fscrypt.h
6.41
KB
-rw-r--r--
2025-09-04 09:37
fsi.h
2.2
KB
-rw-r--r--
2025-09-04 09:37
fsl_hypervisor.h
7.13
KB
-rw-r--r--
2025-09-04 09:37
fsl_mc.h
734
B
-rw-r--r--
2025-09-04 09:37
fsmap.h
4.29
KB
-rw-r--r--
2025-09-04 09:37
fsverity.h
3.11
KB
-rw-r--r--
2025-09-04 09:37
fuse.h
25.36
KB
-rw-r--r--
2025-09-04 09:37
futex.h
5.98
KB
-rw-r--r--
2025-09-04 09:37
gameport.h
897
B
-rw-r--r--
2025-09-04 09:37
gen_stats.h
1.49
KB
-rw-r--r--
2025-09-04 09:37
genetlink.h
2.19
KB
-rw-r--r--
2025-09-04 09:37
gfs2_ondisk.h
14.43
KB
-rw-r--r--
2025-09-04 09:37
gpio.h
19.46
KB
-rw-r--r--
2025-09-04 09:37
gsmmux.h
4.4
KB
-rw-r--r--
2025-09-04 09:37
gtp.h
734
B
-rw-r--r--
2025-09-04 09:37
handshake.h
1.61
KB
-rw-r--r--
2025-09-04 09:37
hash_info.h
971
B
-rw-r--r--
2025-09-04 09:37
hdlc.h
637
B
-rw-r--r--
2025-09-04 09:37
hdlcdrv.h
2.84
KB
-rw-r--r--
2025-09-04 09:37
hdreg.h
22.17
KB
-rw-r--r--
2025-09-04 09:37
hid.h
2.04
KB
-rw-r--r--
2025-09-04 09:37
hiddev.h
6.2
KB
-rw-r--r--
2025-09-04 09:37
hidraw.h
1.95
KB
-rw-r--r--
2025-09-04 09:37
hpet.h
743
B
-rw-r--r--
2025-09-04 09:37
hsr_netlink.h
1.08
KB
-rw-r--r--
2025-09-04 09:37
hw_breakpoint.h
742
B
-rw-r--r--
2025-09-04 09:37
hyperv.h
10.89
KB
-rw-r--r--
2025-09-04 09:37
i2c-dev.h
1.83
KB
-rw-r--r--
2025-09-04 09:37
i2c.h
6.73
KB
-rw-r--r--
2025-09-04 09:37
i2o-dev.h
11.28
KB
-rw-r--r--
2025-09-04 09:37
i8k.h
1.49
KB
-rw-r--r--
2025-09-04 09:37
icmp.h
4.67
KB
-rw-r--r--
2025-09-04 09:37
icmpv6.h
4.2
KB
-rw-r--r--
2025-09-04 09:37
idxd.h
9.11
KB
-rw-r--r--
2025-09-04 09:37
if.h
10.67
KB
-rw-r--r--
2025-09-04 09:37
if_addr.h
1.84
KB
-rw-r--r--
2025-09-04 09:37
if_addrlabel.h
721
B
-rw-r--r--
2025-09-04 09:37
if_alg.h
1.53
KB
-rw-r--r--
2025-09-04 09:37
if_arcnet.h
3.63
KB
-rw-r--r--
2025-09-04 09:37
if_arp.h
6.41
KB
-rw-r--r--
2025-09-04 09:37
if_bonding.h
5.02
KB
-rw-r--r--
2025-09-04 09:37
if_bridge.h
20.18
KB
-rw-r--r--
2025-09-04 09:37
if_cablemodem.h
986
B
-rw-r--r--
2025-09-04 09:37
if_eql.h
1.32
KB
-rw-r--r--
2025-09-04 09:37
if_ether.h
8.21
KB
-rw-r--r--
2025-09-04 09:37
if_fc.h
1.7
KB
-rw-r--r--
2025-09-04 09:37
if_fddi.h
4.27
KB
-rw-r--r--
2025-09-04 09:37
if_hippi.h
4.14
KB
-rw-r--r--
2025-09-04 09:37
if_infiniband.h
1.22
KB
-rw-r--r--
2025-09-04 09:37
if_link.h
52.83
KB
-rw-r--r--
2025-09-04 09:37
if_ltalk.h
210
B
-rw-r--r--
2025-09-04 09:37
if_macsec.h
6.35
KB
-rw-r--r--
2025-09-04 09:37
if_packet.h
7.99
KB
-rw-r--r--
2025-09-04 09:37
if_phonet.h
424
B
-rw-r--r--
2025-09-04 09:37
if_plip.h
660
B
-rw-r--r--
2025-09-04 09:37
if_ppp.h
29
B
-rw-r--r--
2025-09-04 09:37
if_pppol2tp.h
3.23
KB
-rw-r--r--
2025-09-04 09:37
if_pppox.h
4.76
KB
-rw-r--r--
2025-09-04 09:37
if_slip.h
872
B
-rw-r--r--
2025-09-04 09:37
if_team.h
2.54
KB
-rw-r--r--
2025-09-04 09:37
if_tun.h
4
KB
-rw-r--r--
2025-09-04 09:37
if_tunnel.h
5.36
KB
-rw-r--r--
2025-09-04 09:37
if_vlan.h
1.79
KB
-rw-r--r--
2025-09-04 09:37
if_x25.h
881
B
-rw-r--r--
2025-09-04 09:37
if_xdp.h
4.89
KB
-rw-r--r--
2025-09-04 09:37
ife.h
351
B
-rw-r--r--
2025-09-04 09:37
igmp.h
2.99
KB
-rw-r--r--
2025-09-04 09:37
ila.h
1.22
KB
-rw-r--r--
2025-09-04 09:37
in.h
10.15
KB
-rw-r--r--
2025-09-04 09:37
in6.h
7.36
KB
-rw-r--r--
2025-09-04 09:37
in_route.h
936
B
-rw-r--r--
2025-09-04 09:37
inet_diag.h
4.9
KB
-rw-r--r--
2025-09-04 09:37
inotify.h
3.21
KB
-rw-r--r--
2025-09-04 09:37
input-event-codes.h
29.5
KB
-rw-r--r--
2025-09-04 09:37
input.h
15.84
KB
-rw-r--r--
2025-09-04 09:37
io_uring.h
20.4
KB
-rw-r--r--
2025-09-04 09:37
ioctl.h
163
B
-rw-r--r--
2025-09-04 09:37
iommufd.h
28.39
KB
-rw-r--r--
2025-09-04 09:37
ioprio.h
4.08
KB
-rw-r--r--
2025-09-04 09:37
ip.h
4.7
KB
-rw-r--r--
2025-09-04 09:37
ip6_tunnel.h
1.91
KB
-rw-r--r--
2025-09-04 09:37
ip_vs.h
13.8
KB
-rw-r--r--
2025-09-04 09:37
ipc.h
2.05
KB
-rw-r--r--
2025-09-04 09:37
ipmi.h
15.08
KB
-rw-r--r--
2025-09-04 09:37
ipmi_bmc.h
488
B
-rw-r--r--
2025-09-04 09:37
ipmi_msgdefs.h
3.35
KB
-rw-r--r--
2025-09-04 09:37
ipmi_ssif_bmc.h
441
B
-rw-r--r--
2025-09-04 09:37
ipsec.h
947
B
-rw-r--r--
2025-09-04 09:37
ipv6.h
4.07
KB
-rw-r--r--
2025-09-04 09:37
ipv6_route.h
1.86
KB
-rw-r--r--
2025-09-04 09:37
ipx.h
2.29
KB
-rw-r--r--
2025-09-04 09:37
irqnr.h
104
B
-rw-r--r--
2025-09-04 09:37
iso_fs.h
6.33
KB
-rw-r--r--
2025-09-04 09:37
isst_if.h
14.92
KB
-rw-r--r--
2025-09-04 09:37
ivtv.h
2.95
KB
-rw-r--r--
2025-09-04 09:37
ivtvfb.h
1.18
KB
-rw-r--r--
2025-09-04 09:37
jffs2.h
6.66
KB
-rw-r--r--
2025-09-04 09:37
joystick.h
3.35
KB
-rw-r--r--
2025-09-04 09:37
kcm.h
822
B
-rw-r--r--
2025-09-04 09:37
kcmp.h
522
B
-rw-r--r--
2025-09-04 09:37
kcov.h
1.92
KB
-rw-r--r--
2025-09-04 09:37
kd.h
6.3
KB
-rw-r--r--
2025-09-04 09:37
kdev_t.h
383
B
-rw-r--r--
2025-09-04 09:37
kernel-page-flags.h
900
B
-rw-r--r--
2025-09-04 09:37
kernel.h
194
B
-rw-r--r--
2025-09-04 09:37
kernelcapi.h
1019
B
-rw-r--r--
2025-09-04 09:37
kexec.h
2.05
KB
-rw-r--r--
2025-09-04 09:37
keyboard.h
13.14
KB
-rw-r--r--
2025-09-04 09:37
keyctl.h
5.86
KB
-rw-r--r--
2025-09-04 09:37
kfd_ioctl.h
56.75
KB
-rw-r--r--
2025-09-04 09:37
kfd_sysfs.h
5.1
KB
-rw-r--r--
2025-09-04 09:37
kvm.h
46.76
KB
-rw-r--r--
2025-09-04 09:37
kvm_para.h
1001
B
-rw-r--r--
2025-09-04 09:37
l2tp.h
5.61
KB
-rw-r--r--
2025-09-04 09:37
landlock.h
10.14
KB
-rw-r--r--
2025-09-04 09:37
libc-compat.h
8.09
KB
-rw-r--r--
2025-09-04 09:37
limits.h
937
B
-rw-r--r--
2025-09-04 09:37
lirc.h
7.95
KB
-rw-r--r--
2025-09-04 09:37
llc.h
3.09
KB
-rw-r--r--
2025-09-04 09:37
loadpin.h
834
B
-rw-r--r--
2025-09-04 09:37
loop.h
3.32
KB
-rw-r--r--
2025-09-04 09:37
lp.h
4.09
KB
-rw-r--r--
2025-09-04 09:37
lsm.h
1.51
KB
-rw-r--r--
2025-09-04 09:37
lwtunnel.h
2.31
KB
-rw-r--r--
2025-09-04 09:37
magic.h
3.73
KB
-rw-r--r--
2025-09-04 09:37
major.h
4.55
KB
-rw-r--r--
2025-09-04 09:37
map_to_7segment.h
6.45
KB
-rw-r--r--
2025-09-04 09:37
matroxfb.h
1.43
KB
-rw-r--r--
2025-09-04 09:37
max2175.h
1.01
KB
-rw-r--r--
2025-09-04 09:37
mdio.h
23.78
KB
-rw-r--r--
2025-09-04 09:37
media-bus-format.h
6.75
KB
-rw-r--r--
2025-09-04 09:37
media.h
12.46
KB
-rw-r--r--
2025-09-04 09:37
mei.h
3.4
KB
-rw-r--r--
2025-09-04 09:37
mei_uuid.h
738
B
-rw-r--r--
2025-09-04 09:37
membarrier.h
9.14
KB
-rw-r--r--
2025-09-04 09:37
memfd.h
1.43
KB
-rw-r--r--
2025-09-04 09:37
mempolicy.h
2.51
KB
-rw-r--r--
2025-09-04 09:37
meye.h
2.47
KB
-rw-r--r--
2025-09-04 09:37
mii.h
9.27
KB
-rw-r--r--
2025-09-04 09:37
minix_fs.h
2.07
KB
-rw-r--r--
2025-09-04 09:37
mman.h
1.75
KB
-rw-r--r--
2025-09-04 09:37
mmtimer.h
2.07
KB
-rw-r--r--
2025-09-04 09:37
module.h
293
B
-rw-r--r--
2025-09-04 09:37
mount.h
4.9
KB
-rw-r--r--
2025-09-04 09:37
mpls.h
2.25
KB
-rw-r--r--
2025-09-04 09:37
mpls_iptunnel.h
761
B
-rw-r--r--
2025-09-04 09:37
mptcp.h
3.67
KB
-rw-r--r--
2025-09-04 09:37
mptcp_pm.h
4.3
KB
-rw-r--r--
2025-09-04 09:37
mqueue.h
2.15
KB
-rw-r--r--
2025-09-04 09:37
mroute.h
5.78
KB
-rw-r--r--
2025-09-04 09:37
mroute6.h
4.81
KB
-rw-r--r--
2025-09-04 09:37
mrp_bridge.h
1.67
KB
-rw-r--r--
2025-09-04 09:37
msdos_fs.h
6.57
KB
-rw-r--r--
2025-09-04 09:37
msg.h
3.31
KB
-rw-r--r--
2025-09-04 09:37
mtio.h
7.98
KB
-rw-r--r--
2025-09-04 09:37
nbd-netlink.h
2.35
KB
-rw-r--r--
2025-09-04 09:37
nbd.h
3.77
KB
-rw-r--r--
2025-09-04 09:37
ncsi.h
4.71
KB
-rw-r--r--
2025-09-04 09:37
ndctl.h
6.67
KB
-rw-r--r--
2025-09-04 09:37
neighbour.h
5.91
KB
-rw-r--r--
2025-09-04 09:37
net.h
2.04
KB
-rw-r--r--
2025-09-04 09:37
net_dropmon.h
2.85
KB
-rw-r--r--
2025-09-04 09:37
net_namespace.h
715
B
-rw-r--r--
2025-09-04 09:37
net_tstamp.h
5.97
KB
-rw-r--r--
2025-09-04 09:37
netconf.h
614
B
-rw-r--r--
2025-09-04 09:37
netdev.h
5.39
KB
-rw-r--r--
2025-09-04 09:37
netdevice.h
2.2
KB
-rw-r--r--
2025-09-04 09:37
netfilter.h
1.69
KB
-rw-r--r--
2025-09-04 09:37
netfilter_arp.h
445
B
-rw-r--r--
2025-09-04 09:37
netfilter_bridge.h
1.14
KB
-rw-r--r--
2025-09-04 09:37
netfilter_decnet.h
1.72
KB
-rw-r--r--
2025-09-04 09:37
netfilter_ipv4.h
1.45
KB
-rw-r--r--
2025-09-04 09:37
netfilter_ipv6.h
1.35
KB
-rw-r--r--
2025-09-04 09:37
netlink.h
12.09
KB
-rw-r--r--
2025-09-04 09:37
netlink_diag.h
1.49
KB
-rw-r--r--
2025-09-04 09:37
netrom.h
807
B
-rw-r--r--
2025-09-04 09:37
nexthop.h
3.97
KB
-rw-r--r--
2025-09-04 09:37
nfc.h
10.95
KB
-rw-r--r--
2025-09-04 09:37
nfs.h
4.36
KB
-rw-r--r--
2025-09-04 09:37
nfs2.h
1.43
KB
-rw-r--r--
2025-09-04 09:37
nfs3.h
2.4
KB
-rw-r--r--
2025-09-04 09:37
nfs4.h
6.54
KB
-rw-r--r--
2025-09-04 09:37
nfs4_mount.h
1.89
KB
-rw-r--r--
2025-09-04 09:37
nfs_fs.h
1.62
KB
-rw-r--r--
2025-09-04 09:37
nfs_idmap.h
2.19
KB
-rw-r--r--
2025-09-04 09:37
nfs_mount.h
2.09
KB
-rw-r--r--
2025-09-04 09:37
nfsacl.h
718
B
-rw-r--r--
2025-09-04 09:37
nfsd_netlink.h
1.95
KB
-rw-r--r--
2025-09-04 09:37
nilfs2_api.h
7.41
KB
-rw-r--r--
2025-09-04 09:37
nilfs2_ondisk.h
17.66
KB
-rw-r--r--
2025-09-04 09:37
nitro_enclaves.h
12.85
KB
-rw-r--r--
2025-09-04 09:37
nl80211.h
338.95
KB
-rw-r--r--
2025-09-04 09:37
nsfs.h
639
B
-rw-r--r--
2025-09-04 09:37
nubus.h
8
KB
-rw-r--r--
2025-09-04 09:37
nvme_ioctl.h
2.43
KB
-rw-r--r--
2025-09-04 09:37
nvram.h
532
B
-rw-r--r--
2025-09-04 09:37
omap3isp.h
20.36
KB
-rw-r--r--
2025-09-04 09:37
omapfb.h
5.78
KB
-rw-r--r--
2025-09-04 09:37
oom.h
511
B
-rw-r--r--
2025-09-04 09:37
openat2.h
1.42
KB
-rw-r--r--
2025-09-04 09:37
openvswitch.h
40.41
KB
-rw-r--r--
2025-09-04 09:37
packet_diag.h
1.63
KB
-rw-r--r--
2025-09-04 09:37
param.h
141
B
-rw-r--r--
2025-09-04 09:37
parport.h
3.56
KB
-rw-r--r--
2025-09-04 09:37
patchkey.h
892
B
-rw-r--r--
2025-09-04 09:37
pci.h
1.35
KB
-rw-r--r--
2025-09-04 09:37
pci_regs.h
60.58
KB
-rw-r--r--
2025-09-04 09:37
pcitest.h
920
B
-rw-r--r--
2025-09-04 09:37
perf_event.h
42.43
KB
-rw-r--r--
2025-09-04 09:37
personality.h
2.05
KB
-rw-r--r--
2025-09-04 09:37
pfkeyv2.h
10.32
KB
-rw-r--r--
2025-09-04 09:37
pfrut.h
7.8
KB
-rw-r--r--
2025-09-04 09:37
pg.h
2.34
KB
-rw-r--r--
2025-09-04 09:37
phantom.h
1.62
KB
-rw-r--r--
2025-09-04 09:37
phonet.h
4.57
KB
-rw-r--r--
2025-09-04 09:37
pidfd.h
256
B
-rw-r--r--
2025-09-04 09:37
pkt_cls.h
18.65
KB
-rw-r--r--
2025-09-04 09:37
pkt_sched.h
28.66
KB
-rw-r--r--
2025-09-04 09:37
pktcdvd.h
2.63
KB
-rw-r--r--
2025-09-04 09:37
pmu.h
5.32
KB
-rw-r--r--
2025-09-04 09:37
poll.h
22
B
-rw-r--r--
2025-09-04 09:37
posix_acl.h
1.22
KB
-rw-r--r--
2025-09-04 09:37
posix_acl_xattr.h
1.09
KB
-rw-r--r--
2025-09-04 09:37
posix_types.h
1.07
KB
-rw-r--r--
2025-09-04 09:37
ppdev.h
3.21
KB
-rw-r--r--
2025-09-04 09:37
ppp-comp.h
2.47
KB
-rw-r--r--
2025-09-04 09:37
ppp-ioctl.h
5.59
KB
-rw-r--r--
2025-09-04 09:37
ppp_defs.h
5.43
KB
-rw-r--r--
2025-09-04 09:37
pps.h
4.62
KB
-rw-r--r--
2025-09-04 09:37
pr.h
1.59
KB
-rw-r--r--
2025-09-04 09:37
prctl.h
10.81
KB
-rw-r--r--
2025-09-04 09:37
psample.h
2.57
KB
-rw-r--r--
2025-09-04 09:37
psci.h
5.02
KB
-rw-r--r--
2025-09-04 09:37
psp-dbc.h
5.16
KB
-rw-r--r--
2025-09-04 09:37
psp-sev.h
6.26
KB
-rw-r--r--
2025-09-04 09:37
ptp_clock.h
7.35
KB
-rw-r--r--
2025-09-04 09:37
ptrace.h
4.29
KB
-rw-r--r--
2025-09-04 09:37
qemu_fw_cfg.h
2.41
KB
-rw-r--r--
2025-09-04 09:37
qnx4_fs.h
2.27
KB
-rw-r--r--
2025-09-04 09:37
qnxtypes.h
624
B
-rw-r--r--
2025-09-04 09:37
qrtr.h
893
B
-rw-r--r--
2025-09-04 09:37
quota.h
6.16
KB
-rw-r--r--
2025-09-04 09:37
radeonfb.h
360
B
-rw-r--r--
2025-09-04 09:37
random.h
1.38
KB
-rw-r--r--
2025-09-04 09:37
rds.h
10.91
KB
-rw-r--r--
2025-09-04 09:37
reboot.h
1.31
KB
-rw-r--r--
2025-09-04 09:37
reiserfs_fs.h
775
B
-rw-r--r--
2025-09-04 09:37
reiserfs_xattr.h
533
B
-rw-r--r--
2025-09-04 09:37
remoteproc_cdev.h
1.08
KB
-rw-r--r--
2025-09-04 09:37
resource.h
2.32
KB
-rw-r--r--
2025-09-04 09:37
rfkill.h
6.45
KB
-rw-r--r--
2025-09-04 09:37
rio_cm_cdev.h
3.17
KB
-rw-r--r--
2025-09-04 09:37
rio_mport_cdev.h
9.11
KB
-rw-r--r--
2025-09-04 09:37
rkisp1-config.h
30.63
KB
-rw-r--r--
2025-09-04 09:37
romfs_fs.h
1.21
KB
-rw-r--r--
2025-09-04 09:37
rose.h
2.18
KB
-rw-r--r--
2025-09-04 09:37
route.h
2.28
KB
-rw-r--r--
2025-09-04 09:37
rpl.h
814
B
-rw-r--r--
2025-09-04 09:37
rpl_iptunnel.h
424
B
-rw-r--r--
2025-09-04 09:37
rpmsg.h
1.03
KB
-rw-r--r--
2025-09-04 09:37
rpmsg_types.h
288
B
-rw-r--r--
2025-09-04 09:37
rseq.h
4.79
KB
-rw-r--r--
2025-09-04 09:37
rtc.h
5.19
KB
-rw-r--r--
2025-09-04 09:37
rtnetlink.h
20.8
KB
-rw-r--r--
2025-09-04 09:37
rxrpc.h
4.81
KB
-rw-r--r--
2025-09-04 09:37
scc.h
4.52
KB
-rw-r--r--
2025-09-04 09:37
sched.h
6.12
KB
-rw-r--r--
2025-09-04 09:37
scif_ioctl.h
6.23
KB
-rw-r--r--
2025-09-04 09:37
screen_info.h
2.42
KB
-rw-r--r--
2025-09-04 09:37
sctp.h
35.18
KB
-rw-r--r--
2025-09-04 09:37
seccomp.h
5.6
KB
-rw-r--r--
2025-09-04 09:37
securebits.h
2.64
KB
-rw-r--r--
2025-09-04 09:37
sed-opal.h
5.29
KB
-rw-r--r--
2025-09-04 09:37
seg6.h
1.14
KB
-rw-r--r--
2025-09-04 09:37
seg6_genl.h
589
B
-rw-r--r--
2025-09-04 09:37
seg6_hmac.h
423
B
-rw-r--r--
2025-09-04 09:37
seg6_iptunnel.h
984
B
-rw-r--r--
2025-09-04 09:37
seg6_local.h
3.78
KB
-rw-r--r--
2025-09-04 09:37
selinux_netlink.h
1.17
KB
-rw-r--r--
2025-09-04 09:37
sem.h
2.98
KB
-rw-r--r--
2025-09-04 09:37
serial.h
4.9
KB
-rw-r--r--
2025-09-04 09:37
serial_core.h
4.93
KB
-rw-r--r--
2025-09-04 09:37
serial_reg.h
15.65
KB
-rw-r--r--
2025-09-04 09:37
serio.h
2.09
KB
-rw-r--r--
2025-09-04 09:37
sev-guest.h
2.47
KB
-rw-r--r--
2025-09-04 09:37
shm.h
3.71
KB
-rw-r--r--
2025-09-04 09:37
signal.h
388
B
-rw-r--r--
2025-09-04 09:37
signalfd.h
1.2
KB
-rw-r--r--
2025-09-04 09:37
smc.h
8.31
KB
-rw-r--r--
2025-09-04 09:37
smc_diag.h
2.77
KB
-rw-r--r--
2025-09-04 09:37
smiapp.h
1.03
KB
-rw-r--r--
2025-09-04 09:37
snmp.h
13.92
KB
-rw-r--r--
2025-09-04 09:37
sock_diag.h
1.27
KB
-rw-r--r--
2025-09-04 09:37
socket.h
919
B
-rw-r--r--
2025-09-04 09:37
sockios.h
6.69
KB
-rw-r--r--
2025-09-04 09:37
sonet.h
2.24
KB
-rw-r--r--
2025-09-04 09:37
sonypi.h
5.18
KB
-rw-r--r--
2025-09-04 09:37
sound.h
1.21
KB
-rw-r--r--
2025-09-04 09:37
soundcard.h
44.96
KB
-rw-r--r--
2025-09-04 09:37
stat.h
7.23
KB
-rw-r--r--
2025-09-04 09:37
stddef.h
1.69
KB
-rw-r--r--
2025-09-04 09:37
stm.h
1.25
KB
-rw-r--r--
2025-09-04 09:37
string.h
238
B
-rw-r--r--
2025-09-04 09:37
suspend_ioctls.h
1.4
KB
-rw-r--r--
2025-09-04 09:37
swab.h
6.76
KB
-rw-r--r--
2025-09-04 09:37
switchtec_ioctl.h
5.14
KB
-rw-r--r--
2025-09-04 09:37
sync_file.h
3.49
KB
-rw-r--r--
2025-09-04 09:37
synclink.h
8.77
KB
-rw-r--r--
2025-09-04 09:37
sysctl.h
25.3
KB
-rw-r--r--
2025-09-04 09:37
sysinfo.h
1.02
KB
-rw-r--r--
2025-09-04 09:37
target_core_user.h
4.52
KB
-rw-r--r--
2025-09-04 09:37
taskstats.h
8.13
KB
-rw-r--r--
2025-09-04 09:37
tcp.h
11.65
KB
-rw-r--r--
2025-09-04 09:37
tcp_metrics.h
1.94
KB
-rw-r--r--
2025-09-04 09:37
tdx-guest.h
1.27
KB
-rw-r--r--
2025-09-04 09:37
tee.h
13.09
KB
-rw-r--r--
2025-09-04 09:37
termios.h
172
B
-rw-r--r--
2025-09-04 09:37
thermal.h
3.23
KB
-rw-r--r--
2025-09-04 09:37
time.h
1.71
KB
-rw-r--r--
2025-09-04 09:37
time_types.h
1.24
KB
-rw-r--r--
2025-09-04 09:37
timerfd.h
936
B
-rw-r--r--
2025-09-04 09:37
times.h
278
B
-rw-r--r--
2025-09-04 09:37
timex.h
7.63
KB
-rw-r--r--
2025-09-04 09:37
tiocl.h
1.69
KB
-rw-r--r--
2025-09-04 09:37
tipc.h
8.62
KB
-rw-r--r--
2025-09-04 09:37
tipc_config.h
14.52
KB
-rw-r--r--
2025-09-04 09:37
tipc_netlink.h
9.17
KB
-rw-r--r--
2025-09-04 09:37
tipc_sockets_diag.h
468
B
-rw-r--r--
2025-09-04 09:37
tls.h
7.06
KB
-rw-r--r--
2025-09-04 09:37
toshiba.h
1.88
KB
-rw-r--r--
2025-09-04 09:37
tps6594_pfsm.h
1.13
KB
-rw-r--r--
2025-09-04 09:37
tty.h
1.55
KB
-rw-r--r--
2025-09-04 09:37
tty_flags.h
4.4
KB
-rw-r--r--
2025-09-04 09:37
types.h
1.6
KB
-rw-r--r--
2025-09-04 09:37
udf_fs_i.h
697
B
-rw-r--r--
2025-09-04 09:37
udmabuf.h
643
B
-rw-r--r--
2025-09-04 09:37
udp.h
1.65
KB
-rw-r--r--
2025-09-04 09:37
uhid.h
4.54
KB
-rw-r--r--
2025-09-04 09:37
uinput.h
9.04
KB
-rw-r--r--
2025-09-04 09:37
uio.h
732
B
-rw-r--r--
2025-09-04 09:37
uleds.h
798
B
-rw-r--r--
2025-09-04 09:37
ultrasound.h
4.46
KB
-rw-r--r--
2025-09-04 09:37
um_timetravel.h
3.87
KB
-rw-r--r--
2025-09-04 09:37
un.h
384
B
-rw-r--r--
2025-09-04 09:37
unistd.h
220
B
-rw-r--r--
2025-09-04 09:37
unix_diag.h
1.3
KB
-rw-r--r--
2025-09-04 09:37
usbdevice_fs.h
8.12
KB
-rw-r--r--
2025-09-04 09:37
usbip.h
1.47
KB
-rw-r--r--
2025-09-04 09:37
userfaultfd.h
10.68
KB
-rw-r--r--
2025-09-04 09:37
userio.h
1.48
KB
-rw-r--r--
2025-09-04 09:37
utime.h
223
B
-rw-r--r--
2025-09-04 09:37
utsname.h
669
B
-rw-r--r--
2025-09-04 09:37
uuid.h
28
B
-rw-r--r--
2025-09-04 09:37
uvcvideo.h
2.57
KB
-rw-r--r--
2025-09-04 09:37
v4l2-common.h
2.01
KB
-rw-r--r--
2025-09-04 09:37
v4l2-controls.h
94.59
KB
-rw-r--r--
2025-09-04 09:37
v4l2-dv-timings.h
30.39
KB
-rw-r--r--
2025-09-04 09:37
v4l2-mediabus.h
5.3
KB
-rw-r--r--
2025-09-04 09:37
v4l2-subdev.h
9.76
KB
-rw-r--r--
2025-09-04 09:37
vbox_err.h
7.09
KB
-rw-r--r--
2025-09-04 09:37
vbox_vmmdev_types.h
11.38
KB
-rw-r--r--
2025-09-04 09:37
vboxguest.h
9.15
KB
-rw-r--r--
2025-09-04 09:37
vdpa.h
1.74
KB
-rw-r--r--
2025-09-04 09:37
vduse.h
9.58
KB
-rw-r--r--
2025-09-04 09:37
version.h
374
B
-rw-r--r--
2025-09-04 09:37
veth.h
224
B
-rw-r--r--
2025-09-04 09:37
vfio.h
70.12
KB
-rw-r--r--
2025-09-04 09:37
vfio_ccw.h
1.29
KB
-rw-r--r--
2025-09-04 09:37
vfio_zdev.h
2.48
KB
-rw-r--r--
2025-09-04 09:37
vhost.h
8.24
KB
-rw-r--r--
2025-09-04 09:37
vhost_types.h
4.77
KB
-rw-r--r--
2025-09-04 09:37
videodev2.h
98.83
KB
-rw-r--r--
2025-09-04 09:37
virtio_9p.h
2
KB
-rw-r--r--
2025-09-04 09:37
virtio_balloon.h
5.16
KB
-rw-r--r--
2025-09-04 09:37
virtio_blk.h
9.75
KB
-rw-r--r--
2025-09-04 09:37
virtio_bt.h
910
B
-rw-r--r--
2025-09-04 09:37
virtio_config.h
4.36
KB
-rw-r--r--
2025-09-04 09:37
virtio_console.h
3.08
KB
-rw-r--r--
2025-09-04 09:37
virtio_crypto.h
13.56
KB
-rw-r--r--
2025-09-04 09:37
virtio_fs.h
573
B
-rw-r--r--
2025-09-04 09:37
virtio_gpio.h
1.7
KB
-rw-r--r--
2025-09-04 09:37
virtio_gpu.h
11.28
KB
-rw-r--r--
2025-09-04 09:37
virtio_i2c.h
1.16
KB
-rw-r--r--
2025-09-04 09:37
virtio_ids.h
3.7
KB
-rw-r--r--
2025-09-04 09:37
virtio_input.h
2.46
KB
-rw-r--r--
2025-09-04 09:37
virtio_iommu.h
3.84
KB
-rw-r--r--
2025-09-04 09:37
virtio_mem.h
6.99
KB
-rw-r--r--
2025-09-04 09:37
virtio_mmio.h
4.85
KB
-rw-r--r--
2025-09-04 09:37
virtio_net.h
14.72
KB
-rw-r--r--
2025-09-04 09:37
virtio_pci.h
7.3
KB
-rw-r--r--
2025-09-04 09:37
virtio_pcidev.h
2.33
KB
-rw-r--r--
2025-09-04 09:37
virtio_pmem.h
641
B
-rw-r--r--
2025-09-04 09:37
virtio_ring.h
8.52
KB
-rw-r--r--
2025-09-04 09:37
virtio_rng.h
265
B
-rw-r--r--
2025-09-04 09:37
virtio_scmi.h
637
B
-rw-r--r--
2025-09-04 09:37
virtio_scsi.h
5.94
KB
-rw-r--r--
2025-09-04 09:37
virtio_snd.h
12.86
KB
-rw-r--r--
2025-09-04 09:37
virtio_types.h
2.1
KB
-rw-r--r--
2025-09-04 09:37
virtio_vsock.h
3.27
KB
-rw-r--r--
2025-09-04 09:37
vm_sockets.h
7.18
KB
-rw-r--r--
2025-09-04 09:37
vm_sockets_diag.h
963
B
-rw-r--r--
2025-09-04 09:37
vmcore.h
455
B
-rw-r--r--
2025-09-04 09:37
vsockmon.h
1.84
KB
-rw-r--r--
2025-09-04 09:37
vt.h
2.99
KB
-rw-r--r--
2025-09-04 09:37
vtpm_proxy.h
1.68
KB
-rw-r--r--
2025-09-04 09:37
wait.h
682
B
-rw-r--r--
2025-09-04 09:37
watch_queue.h
3.41
KB
-rw-r--r--
2025-09-04 09:37
watchdog.h
2.28
KB
-rw-r--r--
2025-09-04 09:37
wireguard.h
7.57
KB
-rw-r--r--
2025-09-04 09:37
wireless.h
41.7
KB
-rw-r--r--
2025-09-04 09:37
wmi.h
1.72
KB
-rw-r--r--
2025-09-04 09:37
wwan.h
295
B
-rw-r--r--
2025-09-04 09:37
x25.h
3.48
KB
-rw-r--r--
2025-09-04 09:37
xattr.h
2.95
KB
-rw-r--r--
2025-09-04 09:37
xdp_diag.h
1.43
KB
-rw-r--r--
2025-09-04 09:37
xfrm.h
12.33
KB
-rw-r--r--
2025-09-04 09:37
xilinx-v4l2-controls.h
2.91
KB
-rw-r--r--
2025-09-04 09:37
zorro.h
3.22
KB
-rw-r--r--
2025-09-04 09:37
zorro_ids.h
29.26
KB
-rw-r--r--
2025-09-04 09:37
Save
Rename
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ /* Copyright (c) 2021-2022, NVIDIA CORPORATION & AFFILIATES. */ #ifndef _IOMMUFD_H #define _IOMMUFD_H #include <linux/ioctl.h> #include <linux/types.h> #define IOMMUFD_TYPE (';') /** * DOC: General ioctl format * * The ioctl interface follows a general format to allow for extensibility. Each * ioctl is passed in a structure pointer as the argument providing the size of * the structure in the first u32. The kernel checks that any structure space * beyond what it understands is 0. This allows userspace to use the backward * compatible portion while consistently using the newer, larger, structures. * * ioctls use a standard meaning for common errnos: * * - ENOTTY: The IOCTL number itself is not supported at all * - E2BIG: The IOCTL number is supported, but the provided structure has * non-zero in a part the kernel does not understand. * - EOPNOTSUPP: The IOCTL number is supported, and the structure is * understood, however a known field has a value the kernel does not * understand or support. * - EINVAL: Everything about the IOCTL was understood, but a field is not * correct. * - ENOENT: An ID or IOVA provided does not exist. * - ENOMEM: Out of memory. * - EOVERFLOW: Mathematics overflowed. * * As well as additional errnos, within specific ioctls. */ enum { IOMMUFD_CMD_BASE = 0x80, IOMMUFD_CMD_DESTROY = IOMMUFD_CMD_BASE, IOMMUFD_CMD_IOAS_ALLOC = 0x81, IOMMUFD_CMD_IOAS_ALLOW_IOVAS = 0x82, IOMMUFD_CMD_IOAS_COPY = 0x83, IOMMUFD_CMD_IOAS_IOVA_RANGES = 0x84, IOMMUFD_CMD_IOAS_MAP = 0x85, IOMMUFD_CMD_IOAS_UNMAP = 0x86, IOMMUFD_CMD_OPTION = 0x87, IOMMUFD_CMD_VFIO_IOAS = 0x88, IOMMUFD_CMD_HWPT_ALLOC = 0x89, IOMMUFD_CMD_GET_HW_INFO = 0x8a, IOMMUFD_CMD_HWPT_SET_DIRTY_TRACKING = 0x8b, IOMMUFD_CMD_HWPT_GET_DIRTY_BITMAP = 0x8c, IOMMUFD_CMD_HWPT_INVALIDATE = 0x8d, IOMMUFD_CMD_FAULT_QUEUE_ALLOC = 0x8e, }; /** * struct iommu_destroy - ioctl(IOMMU_DESTROY) * @size: sizeof(struct iommu_destroy) * @id: iommufd object ID to destroy. Can be any destroyable object type. * * Destroy any object held within iommufd. */ struct iommu_destroy { __u32 size; __u32 id; }; #define IOMMU_DESTROY _IO(IOMMUFD_TYPE, IOMMUFD_CMD_DESTROY) /** * struct iommu_ioas_alloc - ioctl(IOMMU_IOAS_ALLOC) * @size: sizeof(struct iommu_ioas_alloc) * @flags: Must be 0 * @out_ioas_id: Output IOAS ID for the allocated object * * Allocate an IO Address Space (IOAS) which holds an IO Virtual Address (IOVA) * to memory mapping. */ struct iommu_ioas_alloc { __u32 size; __u32 flags; __u32 out_ioas_id; }; #define IOMMU_IOAS_ALLOC _IO(IOMMUFD_TYPE, IOMMUFD_CMD_IOAS_ALLOC) /** * struct iommu_iova_range - ioctl(IOMMU_IOVA_RANGE) * @start: First IOVA * @last: Inclusive last IOVA * * An interval in IOVA space. */ struct iommu_iova_range { __aligned_u64 start; __aligned_u64 last; }; /** * struct iommu_ioas_iova_ranges - ioctl(IOMMU_IOAS_IOVA_RANGES) * @size: sizeof(struct iommu_ioas_iova_ranges) * @ioas_id: IOAS ID to read ranges from * @num_iovas: Input/Output total number of ranges in the IOAS * @__reserved: Must be 0 * @allowed_iovas: Pointer to the output array of struct iommu_iova_range * @out_iova_alignment: Minimum alignment required for mapping IOVA * * Query an IOAS for ranges of allowed IOVAs. Mapping IOVA outside these ranges * is not allowed. num_iovas will be set to the total number of iovas and * the allowed_iovas[] will be filled in as space permits. * * The allowed ranges are dependent on the HW path the DMA operation takes, and * can change during the lifetime of the IOAS. A fresh empty IOAS will have a * full range, and each attached device will narrow the ranges based on that * device's HW restrictions. Detaching a device can widen the ranges. Userspace * should query ranges after every attach/detach to know what IOVAs are valid * for mapping. * * On input num_iovas is the length of the allowed_iovas array. On output it is * the total number of iovas filled in. The ioctl will return -EMSGSIZE and set * num_iovas to the required value if num_iovas is too small. In this case the * caller should allocate a larger output array and re-issue the ioctl. * * out_iova_alignment returns the minimum IOVA alignment that can be given * to IOMMU_IOAS_MAP/COPY. IOVA's must satisfy:: * * starting_iova % out_iova_alignment == 0 * (starting_iova + length) % out_iova_alignment == 0 * * out_iova_alignment can be 1 indicating any IOVA is allowed. It cannot * be higher than the system PAGE_SIZE. */ struct iommu_ioas_iova_ranges { __u32 size; __u32 ioas_id; __u32 num_iovas; __u32 __reserved; __aligned_u64 allowed_iovas; __aligned_u64 out_iova_alignment; }; #define IOMMU_IOAS_IOVA_RANGES _IO(IOMMUFD_TYPE, IOMMUFD_CMD_IOAS_IOVA_RANGES) /** * struct iommu_ioas_allow_iovas - ioctl(IOMMU_IOAS_ALLOW_IOVAS) * @size: sizeof(struct iommu_ioas_allow_iovas) * @ioas_id: IOAS ID to allow IOVAs from * @num_iovas: Input/Output total number of ranges in the IOAS * @__reserved: Must be 0 * @allowed_iovas: Pointer to array of struct iommu_iova_range * * Ensure a range of IOVAs are always available for allocation. If this call * succeeds then IOMMU_IOAS_IOVA_RANGES will never return a list of IOVA ranges * that are narrower than the ranges provided here. This call will fail if * IOMMU_IOAS_IOVA_RANGES is currently narrower than the given ranges. * * When an IOAS is first created the IOVA_RANGES will be maximally sized, and as * devices are attached the IOVA will narrow based on the device restrictions. * When an allowed range is specified any narrowing will be refused, ie device * attachment can fail if the device requires limiting within the allowed range. * * Automatic IOVA allocation is also impacted by this call. MAP will only * allocate within the allowed IOVAs if they are present. * * This call replaces the entire allowed list with the given list. */ struct iommu_ioas_allow_iovas { __u32 size; __u32 ioas_id; __u32 num_iovas; __u32 __reserved; __aligned_u64 allowed_iovas; }; #define IOMMU_IOAS_ALLOW_IOVAS _IO(IOMMUFD_TYPE, IOMMUFD_CMD_IOAS_ALLOW_IOVAS) /** * enum iommufd_ioas_map_flags - Flags for map and copy * @IOMMU_IOAS_MAP_FIXED_IOVA: If clear the kernel will compute an appropriate * IOVA to place the mapping at * @IOMMU_IOAS_MAP_WRITEABLE: DMA is allowed to write to this mapping * @IOMMU_IOAS_MAP_READABLE: DMA is allowed to read from this mapping */ enum iommufd_ioas_map_flags { IOMMU_IOAS_MAP_FIXED_IOVA = 1 << 0, IOMMU_IOAS_MAP_WRITEABLE = 1 << 1, IOMMU_IOAS_MAP_READABLE = 1 << 2, }; /** * struct iommu_ioas_map - ioctl(IOMMU_IOAS_MAP) * @size: sizeof(struct iommu_ioas_map) * @flags: Combination of enum iommufd_ioas_map_flags * @ioas_id: IOAS ID to change the mapping of * @__reserved: Must be 0 * @user_va: Userspace pointer to start mapping from * @length: Number of bytes to map * @iova: IOVA the mapping was placed at. If IOMMU_IOAS_MAP_FIXED_IOVA is set * then this must be provided as input. * * Set an IOVA mapping from a user pointer. If FIXED_IOVA is specified then the * mapping will be established at iova, otherwise a suitable location based on * the reserved and allowed lists will be automatically selected and returned in * iova. * * If IOMMU_IOAS_MAP_FIXED_IOVA is specified then the iova range must currently * be unused, existing IOVA cannot be replaced. */ struct iommu_ioas_map { __u32 size; __u32 flags; __u32 ioas_id; __u32 __reserved; __aligned_u64 user_va; __aligned_u64 length; __aligned_u64 iova; }; #define IOMMU_IOAS_MAP _IO(IOMMUFD_TYPE, IOMMUFD_CMD_IOAS_MAP) /** * struct iommu_ioas_copy - ioctl(IOMMU_IOAS_COPY) * @size: sizeof(struct iommu_ioas_copy) * @flags: Combination of enum iommufd_ioas_map_flags * @dst_ioas_id: IOAS ID to change the mapping of * @src_ioas_id: IOAS ID to copy from * @length: Number of bytes to copy and map * @dst_iova: IOVA the mapping was placed at. If IOMMU_IOAS_MAP_FIXED_IOVA is * set then this must be provided as input. * @src_iova: IOVA to start the copy * * Copy an already existing mapping from src_ioas_id and establish it in * dst_ioas_id. The src iova/length must exactly match a range used with * IOMMU_IOAS_MAP. * * This may be used to efficiently clone a subset of an IOAS to another, or as a * kind of 'cache' to speed up mapping. Copy has an efficiency advantage over * establishing equivalent new mappings, as internal resources are shared, and * the kernel will pin the user memory only once. */ struct iommu_ioas_copy { __u32 size; __u32 flags; __u32 dst_ioas_id; __u32 src_ioas_id; __aligned_u64 length; __aligned_u64 dst_iova; __aligned_u64 src_iova; }; #define IOMMU_IOAS_COPY _IO(IOMMUFD_TYPE, IOMMUFD_CMD_IOAS_COPY) /** * struct iommu_ioas_unmap - ioctl(IOMMU_IOAS_UNMAP) * @size: sizeof(struct iommu_ioas_unmap) * @ioas_id: IOAS ID to change the mapping of * @iova: IOVA to start the unmapping at * @length: Number of bytes to unmap, and return back the bytes unmapped * * Unmap an IOVA range. The iova/length must be a superset of a previously * mapped range used with IOMMU_IOAS_MAP or IOMMU_IOAS_COPY. Splitting or * truncating ranges is not allowed. The values 0 to U64_MAX will unmap * everything. */ struct iommu_ioas_unmap { __u32 size; __u32 ioas_id; __aligned_u64 iova; __aligned_u64 length; }; #define IOMMU_IOAS_UNMAP _IO(IOMMUFD_TYPE, IOMMUFD_CMD_IOAS_UNMAP) /** * enum iommufd_option - ioctl(IOMMU_OPTION_RLIMIT_MODE) and * ioctl(IOMMU_OPTION_HUGE_PAGES) * @IOMMU_OPTION_RLIMIT_MODE: * Change how RLIMIT_MEMLOCK accounting works. The caller must have privilege * to invoke this. Value 0 (default) is user based accouting, 1 uses process * based accounting. Global option, object_id must be 0 * @IOMMU_OPTION_HUGE_PAGES: * Value 1 (default) allows contiguous pages to be combined when generating * iommu mappings. Value 0 disables combining, everything is mapped to * PAGE_SIZE. This can be useful for benchmarking. This is a per-IOAS * option, the object_id must be the IOAS ID. */ enum iommufd_option { IOMMU_OPTION_RLIMIT_MODE = 0, IOMMU_OPTION_HUGE_PAGES = 1, }; /** * enum iommufd_option_ops - ioctl(IOMMU_OPTION_OP_SET) and * ioctl(IOMMU_OPTION_OP_GET) * @IOMMU_OPTION_OP_SET: Set the option's value * @IOMMU_OPTION_OP_GET: Get the option's value */ enum iommufd_option_ops { IOMMU_OPTION_OP_SET = 0, IOMMU_OPTION_OP_GET = 1, }; /** * struct iommu_option - iommu option multiplexer * @size: sizeof(struct iommu_option) * @option_id: One of enum iommufd_option * @op: One of enum iommufd_option_ops * @__reserved: Must be 0 * @object_id: ID of the object if required * @val64: Option value to set or value returned on get * * Change a simple option value. This multiplexor allows controlling options * on objects. IOMMU_OPTION_OP_SET will load an option and IOMMU_OPTION_OP_GET * will return the current value. */ struct iommu_option { __u32 size; __u32 option_id; __u16 op; __u16 __reserved; __u32 object_id; __aligned_u64 val64; }; #define IOMMU_OPTION _IO(IOMMUFD_TYPE, IOMMUFD_CMD_OPTION) /** * enum iommufd_vfio_ioas_op - IOMMU_VFIO_IOAS_* ioctls * @IOMMU_VFIO_IOAS_GET: Get the current compatibility IOAS * @IOMMU_VFIO_IOAS_SET: Change the current compatibility IOAS * @IOMMU_VFIO_IOAS_CLEAR: Disable VFIO compatibility */ enum iommufd_vfio_ioas_op { IOMMU_VFIO_IOAS_GET = 0, IOMMU_VFIO_IOAS_SET = 1, IOMMU_VFIO_IOAS_CLEAR = 2, }; /** * struct iommu_vfio_ioas - ioctl(IOMMU_VFIO_IOAS) * @size: sizeof(struct iommu_vfio_ioas) * @ioas_id: For IOMMU_VFIO_IOAS_SET the input IOAS ID to set * For IOMMU_VFIO_IOAS_GET will output the IOAS ID * @op: One of enum iommufd_vfio_ioas_op * @__reserved: Must be 0 * * The VFIO compatibility support uses a single ioas because VFIO APIs do not * support the ID field. Set or Get the IOAS that VFIO compatibility will use. * When VFIO_GROUP_SET_CONTAINER is used on an iommufd it will get the * compatibility ioas, either by taking what is already set, or auto creating * one. From then on VFIO will continue to use that ioas and is not effected by * this ioctl. SET or CLEAR does not destroy any auto-created IOAS. */ struct iommu_vfio_ioas { __u32 size; __u32 ioas_id; __u16 op; __u16 __reserved; }; #define IOMMU_VFIO_IOAS _IO(IOMMUFD_TYPE, IOMMUFD_CMD_VFIO_IOAS) /** * enum iommufd_hwpt_alloc_flags - Flags for HWPT allocation * @IOMMU_HWPT_ALLOC_NEST_PARENT: If set, allocate a HWPT that can serve as * the parent HWPT in a nesting configuration. * @IOMMU_HWPT_ALLOC_DIRTY_TRACKING: Dirty tracking support for device IOMMU is * enforced on device attachment * @IOMMU_HWPT_FAULT_ID_VALID: The fault_id field of hwpt allocation data is * valid. */ enum iommufd_hwpt_alloc_flags { IOMMU_HWPT_ALLOC_NEST_PARENT = 1 << 0, IOMMU_HWPT_ALLOC_DIRTY_TRACKING = 1 << 1, IOMMU_HWPT_FAULT_ID_VALID = 1 << 2, }; /** * enum iommu_hwpt_vtd_s1_flags - Intel VT-d stage-1 page table * entry attributes * @IOMMU_VTD_S1_SRE: Supervisor request * @IOMMU_VTD_S1_EAFE: Extended access enable * @IOMMU_VTD_S1_WPE: Write protect enable */ enum iommu_hwpt_vtd_s1_flags { IOMMU_VTD_S1_SRE = 1 << 0, IOMMU_VTD_S1_EAFE = 1 << 1, IOMMU_VTD_S1_WPE = 1 << 2, }; /** * struct iommu_hwpt_vtd_s1 - Intel VT-d stage-1 page table * info (IOMMU_HWPT_DATA_VTD_S1) * @flags: Combination of enum iommu_hwpt_vtd_s1_flags * @pgtbl_addr: The base address of the stage-1 page table. * @addr_width: The address width of the stage-1 page table * @__reserved: Must be 0 */ struct iommu_hwpt_vtd_s1 { __aligned_u64 flags; __aligned_u64 pgtbl_addr; __u32 addr_width; __u32 __reserved; }; /** * enum iommu_hwpt_data_type - IOMMU HWPT Data Type * @IOMMU_HWPT_DATA_NONE: no data * @IOMMU_HWPT_DATA_VTD_S1: Intel VT-d stage-1 page table */ enum iommu_hwpt_data_type { IOMMU_HWPT_DATA_NONE = 0, IOMMU_HWPT_DATA_VTD_S1 = 1, }; /** * struct iommu_hwpt_alloc - ioctl(IOMMU_HWPT_ALLOC) * @size: sizeof(struct iommu_hwpt_alloc) * @flags: Combination of enum iommufd_hwpt_alloc_flags * @dev_id: The device to allocate this HWPT for * @pt_id: The IOAS or HWPT to connect this HWPT to * @out_hwpt_id: The ID of the new HWPT * @__reserved: Must be 0 * @data_type: One of enum iommu_hwpt_data_type * @data_len: Length of the type specific data * @data_uptr: User pointer to the type specific data * @fault_id: The ID of IOMMUFD_FAULT object. Valid only if flags field of * IOMMU_HWPT_FAULT_ID_VALID is set. * @__reserved2: Padding to 64-bit alignment. Must be 0. * * Explicitly allocate a hardware page table object. This is the same object * type that is returned by iommufd_device_attach() and represents the * underlying iommu driver's iommu_domain kernel object. * * A kernel-managed HWPT will be created with the mappings from the given * IOAS via the @pt_id. The @data_type for this allocation must be set to * IOMMU_HWPT_DATA_NONE. The HWPT can be allocated as a parent HWPT for a * nesting configuration by passing IOMMU_HWPT_ALLOC_NEST_PARENT via @flags. * * A user-managed nested HWPT will be created from a given parent HWPT via * @pt_id, in which the parent HWPT must be allocated previously via the * same ioctl from a given IOAS (@pt_id). In this case, the @data_type * must be set to a pre-defined type corresponding to an I/O page table * type supported by the underlying IOMMU hardware. * * If the @data_type is set to IOMMU_HWPT_DATA_NONE, @data_len and * @data_uptr should be zero. Otherwise, both @data_len and @data_uptr * must be given. */ struct iommu_hwpt_alloc { __u32 size; __u32 flags; __u32 dev_id; __u32 pt_id; __u32 out_hwpt_id; __u32 __reserved; __u32 data_type; __u32 data_len; __aligned_u64 data_uptr; __u32 fault_id; __u32 __reserved2; }; #define IOMMU_HWPT_ALLOC _IO(IOMMUFD_TYPE, IOMMUFD_CMD_HWPT_ALLOC) /** * enum iommu_hw_info_vtd_flags - Flags for VT-d hw_info * @IOMMU_HW_INFO_VTD_ERRATA_772415_SPR17: If set, disallow read-only mappings * on a nested_parent domain. * https://www.intel.com/content/www/us/en/content-details/772415/content-details.html */ enum iommu_hw_info_vtd_flags { IOMMU_HW_INFO_VTD_ERRATA_772415_SPR17 = 1 << 0, }; /** * struct iommu_hw_info_vtd - Intel VT-d hardware information * * @flags: Combination of enum iommu_hw_info_vtd_flags * @__reserved: Must be 0 * * @cap_reg: Value of Intel VT-d capability register defined in VT-d spec * section 11.4.2 Capability Register. * @ecap_reg: Value of Intel VT-d capability register defined in VT-d spec * section 11.4.3 Extended Capability Register. * * User needs to understand the Intel VT-d specification to decode the * register value. */ struct iommu_hw_info_vtd { __u32 flags; __u32 __reserved; __aligned_u64 cap_reg; __aligned_u64 ecap_reg; }; /** * enum iommu_hw_info_type - IOMMU Hardware Info Types * @IOMMU_HW_INFO_TYPE_NONE: Used by the drivers that do not report hardware * info * @IOMMU_HW_INFO_TYPE_INTEL_VTD: Intel VT-d iommu info type */ enum iommu_hw_info_type { IOMMU_HW_INFO_TYPE_NONE = 0, IOMMU_HW_INFO_TYPE_INTEL_VTD = 1, }; /** * enum iommufd_hw_capabilities * @IOMMU_HW_CAP_DIRTY_TRACKING: IOMMU hardware support for dirty tracking * If available, it means the following APIs * are supported: * * IOMMU_HWPT_GET_DIRTY_BITMAP * IOMMU_HWPT_SET_DIRTY_TRACKING * */ enum iommufd_hw_capabilities { IOMMU_HW_CAP_DIRTY_TRACKING = 1 << 0, }; /** * struct iommu_hw_info - ioctl(IOMMU_GET_HW_INFO) * @size: sizeof(struct iommu_hw_info) * @flags: Must be 0 * @dev_id: The device bound to the iommufd * @data_len: Input the length of a user buffer in bytes. Output the length of * data that kernel supports * @data_uptr: User pointer to a user-space buffer used by the kernel to fill * the iommu type specific hardware information data * @out_data_type: Output the iommu hardware info type as defined in the enum * iommu_hw_info_type. * @out_capabilities: Output the generic iommu capability info type as defined * in the enum iommu_hw_capabilities. * @__reserved: Must be 0 * * Query an iommu type specific hardware information data from an iommu behind * a given device that has been bound to iommufd. This hardware info data will * be used to sync capabilities between the virtual iommu and the physical * iommu, e.g. a nested translation setup needs to check the hardware info, so * a guest stage-1 page table can be compatible with the physical iommu. * * To capture an iommu type specific hardware information data, @data_uptr and * its length @data_len must be provided. Trailing bytes will be zeroed if the * user buffer is larger than the data that kernel has. Otherwise, kernel only * fills the buffer using the given length in @data_len. If the ioctl succeeds, * @data_len will be updated to the length that kernel actually supports, * @out_data_type will be filled to decode the data filled in the buffer * pointed by @data_uptr. Input @data_len == zero is allowed. */ struct iommu_hw_info { __u32 size; __u32 flags; __u32 dev_id; __u32 data_len; __aligned_u64 data_uptr; __u32 out_data_type; __u32 __reserved; __aligned_u64 out_capabilities; }; #define IOMMU_GET_HW_INFO _IO(IOMMUFD_TYPE, IOMMUFD_CMD_GET_HW_INFO) /* * enum iommufd_hwpt_set_dirty_tracking_flags - Flags for steering dirty * tracking * @IOMMU_HWPT_DIRTY_TRACKING_ENABLE: Enable dirty tracking */ enum iommufd_hwpt_set_dirty_tracking_flags { IOMMU_HWPT_DIRTY_TRACKING_ENABLE = 1, }; /** * struct iommu_hwpt_set_dirty_tracking - ioctl(IOMMU_HWPT_SET_DIRTY_TRACKING) * @size: sizeof(struct iommu_hwpt_set_dirty_tracking) * @flags: Combination of enum iommufd_hwpt_set_dirty_tracking_flags * @hwpt_id: HW pagetable ID that represents the IOMMU domain * @__reserved: Must be 0 * * Toggle dirty tracking on an HW pagetable. */ struct iommu_hwpt_set_dirty_tracking { __u32 size; __u32 flags; __u32 hwpt_id; __u32 __reserved; }; #define IOMMU_HWPT_SET_DIRTY_TRACKING _IO(IOMMUFD_TYPE, \ IOMMUFD_CMD_HWPT_SET_DIRTY_TRACKING) /** * enum iommufd_hwpt_get_dirty_bitmap_flags - Flags for getting dirty bits * @IOMMU_HWPT_GET_DIRTY_BITMAP_NO_CLEAR: Just read the PTEs without clearing * any dirty bits metadata. This flag * can be passed in the expectation * where the next operation is an unmap * of the same IOVA range. * */ enum iommufd_hwpt_get_dirty_bitmap_flags { IOMMU_HWPT_GET_DIRTY_BITMAP_NO_CLEAR = 1, }; /** * struct iommu_hwpt_get_dirty_bitmap - ioctl(IOMMU_HWPT_GET_DIRTY_BITMAP) * @size: sizeof(struct iommu_hwpt_get_dirty_bitmap) * @hwpt_id: HW pagetable ID that represents the IOMMU domain * @flags: Combination of enum iommufd_hwpt_get_dirty_bitmap_flags * @__reserved: Must be 0 * @iova: base IOVA of the bitmap first bit * @length: IOVA range size * @page_size: page size granularity of each bit in the bitmap * @data: bitmap where to set the dirty bits. The bitmap bits each * represent a page_size which you deviate from an arbitrary iova. * * Checking a given IOVA is dirty: * * data[(iova / page_size) / 64] & (1ULL << ((iova / page_size) % 64)) * * Walk the IOMMU pagetables for a given IOVA range to return a bitmap * with the dirty IOVAs. In doing so it will also by default clear any * dirty bit metadata set in the IOPTE. */ struct iommu_hwpt_get_dirty_bitmap { __u32 size; __u32 hwpt_id; __u32 flags; __u32 __reserved; __aligned_u64 iova; __aligned_u64 length; __aligned_u64 page_size; __aligned_u64 data; }; #define IOMMU_HWPT_GET_DIRTY_BITMAP _IO(IOMMUFD_TYPE, \ IOMMUFD_CMD_HWPT_GET_DIRTY_BITMAP) /** * enum iommu_hwpt_invalidate_data_type - IOMMU HWPT Cache Invalidation * Data Type * @IOMMU_HWPT_INVALIDATE_DATA_VTD_S1: Invalidation data for VTD_S1 */ enum iommu_hwpt_invalidate_data_type { IOMMU_HWPT_INVALIDATE_DATA_VTD_S1 = 0, }; /** * enum iommu_hwpt_vtd_s1_invalidate_flags - Flags for Intel VT-d * stage-1 cache invalidation * @IOMMU_VTD_INV_FLAGS_LEAF: Indicates whether the invalidation applies * to all-levels page structure cache or just * the leaf PTE cache. */ enum iommu_hwpt_vtd_s1_invalidate_flags { IOMMU_VTD_INV_FLAGS_LEAF = 1 << 0, }; /** * struct iommu_hwpt_vtd_s1_invalidate - Intel VT-d cache invalidation * (IOMMU_HWPT_INVALIDATE_DATA_VTD_S1) * @addr: The start address of the range to be invalidated. It needs to * be 4KB aligned. * @npages: Number of contiguous 4K pages to be invalidated. * @flags: Combination of enum iommu_hwpt_vtd_s1_invalidate_flags * @__reserved: Must be 0 * * The Intel VT-d specific invalidation data for user-managed stage-1 cache * invalidation in nested translation. Userspace uses this structure to * tell the impacted cache scope after modifying the stage-1 page table. * * Invalidating all the caches related to the page table by setting @addr * to be 0 and @npages to be U64_MAX. * * The device TLB will be invalidated automatically if ATS is enabled. */ struct iommu_hwpt_vtd_s1_invalidate { __aligned_u64 addr; __aligned_u64 npages; __u32 flags; __u32 __reserved; }; /** * struct iommu_hwpt_invalidate - ioctl(IOMMU_HWPT_INVALIDATE) * @size: sizeof(struct iommu_hwpt_invalidate) * @hwpt_id: ID of a nested HWPT for cache invalidation * @data_uptr: User pointer to an array of driver-specific cache invalidation * data. * @data_type: One of enum iommu_hwpt_invalidate_data_type, defining the data * type of all the entries in the invalidation request array. It * should be a type supported by the hwpt pointed by @hwpt_id. * @entry_len: Length (in bytes) of a request entry in the request array * @entry_num: Input the number of cache invalidation requests in the array. * Output the number of requests successfully handled by kernel. * @__reserved: Must be 0. * * Invalidate the iommu cache for user-managed page table. Modifications on a * user-managed page table should be followed by this operation to sync cache. * Each ioctl can support one or more cache invalidation requests in the array * that has a total size of @entry_len * @entry_num. * * An empty invalidation request array by setting @entry_num==0 is allowed, and * @entry_len and @data_uptr would be ignored in this case. This can be used to * check if the given @data_type is supported or not by kernel. */ struct iommu_hwpt_invalidate { __u32 size; __u32 hwpt_id; __aligned_u64 data_uptr; __u32 data_type; __u32 entry_len; __u32 entry_num; __u32 __reserved; }; #define IOMMU_HWPT_INVALIDATE _IO(IOMMUFD_TYPE, IOMMUFD_CMD_HWPT_INVALIDATE) /** * enum iommu_hwpt_pgfault_flags - flags for struct iommu_hwpt_pgfault * @IOMMU_PGFAULT_FLAGS_PASID_VALID: The pasid field of the fault data is * valid. * @IOMMU_PGFAULT_FLAGS_LAST_PAGE: It's the last fault of a fault group. */ enum iommu_hwpt_pgfault_flags { IOMMU_PGFAULT_FLAGS_PASID_VALID = (1 << 0), IOMMU_PGFAULT_FLAGS_LAST_PAGE = (1 << 1), }; /** * enum iommu_hwpt_pgfault_perm - perm bits for struct iommu_hwpt_pgfault * @IOMMU_PGFAULT_PERM_READ: request for read permission * @IOMMU_PGFAULT_PERM_WRITE: request for write permission * @IOMMU_PGFAULT_PERM_EXEC: (PCIE 10.4.1) request with a PASID that has the * Execute Requested bit set in PASID TLP Prefix. * @IOMMU_PGFAULT_PERM_PRIV: (PCIE 10.4.1) request with a PASID that has the * Privileged Mode Requested bit set in PASID TLP * Prefix. */ enum iommu_hwpt_pgfault_perm { IOMMU_PGFAULT_PERM_READ = (1 << 0), IOMMU_PGFAULT_PERM_WRITE = (1 << 1), IOMMU_PGFAULT_PERM_EXEC = (1 << 2), IOMMU_PGFAULT_PERM_PRIV = (1 << 3), }; /** * struct iommu_hwpt_pgfault - iommu page fault data * @flags: Combination of enum iommu_hwpt_pgfault_flags * @dev_id: id of the originated device * @pasid: Process Address Space ID * @grpid: Page Request Group Index * @perm: Combination of enum iommu_hwpt_pgfault_perm * @__reserved: Must be 0. * @addr: Fault address * @length: a hint of how much data the requestor is expecting to fetch. For * example, if the PRI initiator knows it is going to do a 10MB * transfer, it could fill in 10MB and the OS could pre-fault in * 10MB of IOVA. It's default to 0 if there's no such hint. * @cookie: kernel-managed cookie identifying a group of fault messages. The * cookie number encoded in the last page fault of the group should * be echoed back in the response message. */ struct iommu_hwpt_pgfault { __u32 flags; __u32 dev_id; __u32 pasid; __u32 grpid; __u32 perm; __u32 __reserved; __aligned_u64 addr; __u32 length; __u32 cookie; }; /** * enum iommufd_page_response_code - Return status of fault handlers * @IOMMUFD_PAGE_RESP_SUCCESS: Fault has been handled and the page tables * populated, retry the access. This is the * "Success" defined in PCI 10.4.2.1. * @IOMMUFD_PAGE_RESP_INVALID: Could not handle this fault, don't retry the * access. This is the "Invalid Request" in PCI * 10.4.2.1. */ enum iommufd_page_response_code { IOMMUFD_PAGE_RESP_SUCCESS = 0, IOMMUFD_PAGE_RESP_INVALID = 1, }; /** * struct iommu_hwpt_page_response - IOMMU page fault response * @cookie: The kernel-managed cookie reported in the fault message. * @code: One of response code in enum iommufd_page_response_code. */ struct iommu_hwpt_page_response { __u32 cookie; __u32 code; }; /** * struct iommu_fault_alloc - ioctl(IOMMU_FAULT_QUEUE_ALLOC) * @size: sizeof(struct iommu_fault_alloc) * @flags: Must be 0 * @out_fault_id: The ID of the new FAULT * @out_fault_fd: The fd of the new FAULT * * Explicitly allocate a fault handling object. */ struct iommu_fault_alloc { __u32 size; __u32 flags; __u32 out_fault_id; __u32 out_fault_fd; }; #define IOMMU_FAULT_QUEUE_ALLOC _IO(IOMMUFD_TYPE, IOMMUFD_CMD_FAULT_QUEUE_ALLOC) #endif