Linux ubuntu22 5.15.0-133-generic #144-Ubuntu SMP Fri Feb 7 20:47:38 UTC 2025 x86_64
nginx/1.18.0
: 128.199.27.159 | : 216.73.216.159
Cant Read [ /etc/named.conf ]
8.1.31
www-data
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
README
+ Create Folder
+ Create File
/
snap /
certbot /
4965 /
usr /
include /
linux /
[ HOME SHELL ]
Name
Size
Permission
Action
android
[ DIR ]
drwxr-xr-x
byteorder
[ DIR ]
drwxr-xr-x
caif
[ DIR ]
drwxr-xr-x
can
[ DIR ]
drwxr-xr-x
cifs
[ DIR ]
drwxr-xr-x
dvb
[ DIR ]
drwxr-xr-x
genwqe
[ DIR ]
drwxr-xr-x
hdlc
[ DIR ]
drwxr-xr-x
hsi
[ DIR ]
drwxr-xr-x
iio
[ DIR ]
drwxr-xr-x
isdn
[ DIR ]
drwxr-xr-x
misc
[ DIR ]
drwxr-xr-x
mmc
[ DIR ]
drwxr-xr-x
netfilter
[ DIR ]
drwxr-xr-x
netfilter_arp
[ DIR ]
drwxr-xr-x
netfilter_bridge
[ DIR ]
drwxr-xr-x
netfilter_ipv4
[ DIR ]
drwxr-xr-x
netfilter_ipv6
[ DIR ]
drwxr-xr-x
nfsd
[ DIR ]
drwxr-xr-x
raid
[ DIR ]
drwxr-xr-x
sched
[ DIR ]
drwxr-xr-x
spi
[ DIR ]
drwxr-xr-x
sunrpc
[ DIR ]
drwxr-xr-x
surface_aggregator
[ DIR ]
drwxr-xr-x
tc_act
[ DIR ]
drwxr-xr-x
tc_ematch
[ DIR ]
drwxr-xr-x
usb
[ DIR ]
drwxr-xr-x
a.out.h
6.73
KB
-rw-r--r--
acct.h
3.82
KB
-rw-r--r--
acrn.h
18.51
KB
-rw-r--r--
adb.h
1.11
KB
-rw-r--r--
adfs_fs.h
993
B
-rw-r--r--
affs_hardblocks.h
1.54
KB
-rw-r--r--
agpgart.h
3.86
KB
-rw-r--r--
aio_abi.h
3.32
KB
-rw-r--r--
am437x-vpfe.h
3.59
KB
-rw-r--r--
amt.h
1.71
KB
-rw-r--r--
apm_bios.h
3.6
KB
-rw-r--r--
apparmor.h
3.4
KB
-rw-r--r--
arcfb.h
213
B
-rw-r--r--
arm_sdei.h
2.69
KB
-rw-r--r--
aspeed-lpc-ctrl.h
1.74
KB
-rw-r--r--
aspeed-p2a-ctrl.h
1.86
KB
-rw-r--r--
aspeed-video.h
389
B
-rw-r--r--
atalk.h
1023
B
-rw-r--r--
atm.h
7.7
KB
-rw-r--r--
atm_eni.h
648
B
-rw-r--r--
atm_he.h
406
B
-rw-r--r--
atm_idt77105.h
955
B
-rw-r--r--
atm_nicstar.h
1.25
KB
-rw-r--r--
atm_tcp.h
1.58
KB
-rw-r--r--
atm_zatm.h
1.5
KB
-rw-r--r--
atmapi.h
952
B
-rw-r--r--
atmarp.h
1.27
KB
-rw-r--r--
atmbr2684.h
3.2
KB
-rw-r--r--
atmclip.h
576
B
-rw-r--r--
atmdev.h
7.32
KB
-rw-r--r--
atmioc.h
1.61
KB
-rw-r--r--
atmlec.h
2.33
KB
-rw-r--r--
atmmpc.h
4.13
KB
-rw-r--r--
atmppp.h
639
B
-rw-r--r--
atmsap.h
4.85
KB
-rw-r--r--
atmsvc.h
1.81
KB
-rw-r--r--
audit.h
21.2
KB
-rw-r--r--
auto_dev-ioctl.h
4.87
KB
-rw-r--r--
auto_fs.h
6.28
KB
-rw-r--r--
auto_fs4.h
451
B
-rw-r--r--
auxvec.h
1.68
KB
-rw-r--r--
ax25.h
2.76
KB
-rw-r--r--
batadv_packet.h
21.13
KB
-rw-r--r--
batman_adv.h
16.49
KB
-rw-r--r--
baycom.h
883
B
-rw-r--r--
bcm933xx_hcs.h
419
B
-rw-r--r--
bfs_fs.h
1.86
KB
-rw-r--r--
binfmts.h
776
B
-rw-r--r--
blkpg.h
904
B
-rw-r--r--
blktrace_api.h
4.59
KB
-rw-r--r--
blkzoned.h
6.34
KB
-rw-r--r--
bpf.h
269.04
KB
-rw-r--r--
bpf_common.h
1.33
KB
-rw-r--r--
bpf_perf_event.h
529
B
-rw-r--r--
bpqether.h
981
B
-rw-r--r--
bsg.h
2.44
KB
-rw-r--r--
bt-bmc.h
572
B
-rw-r--r--
btf.h
5.46
KB
-rw-r--r--
btrfs.h
36.28
KB
-rw-r--r--
btrfs_tree.h
34.77
KB
-rw-r--r--
cachefiles.h
1.61
KB
-rw-r--r--
can.h
10.95
KB
-rw-r--r--
capability.h
13.21
KB
-rw-r--r--
capi.h
3.05
KB
-rw-r--r--
cciss_defs.h
3.2
KB
-rw-r--r--
cciss_ioctl.h
2.7
KB
-rw-r--r--
ccs.h
767
B
-rw-r--r--
cdrom.h
28.87
KB
-rw-r--r--
cec-funcs.h
53.14
KB
-rw-r--r--
cec.h
41.17
KB
-rw-r--r--
cfm_bridge.h
1.42
KB
-rw-r--r--
cgroupstats.h
2.06
KB
-rw-r--r--
chio.h
5.16
KB
-rw-r--r--
close_range.h
377
B
-rw-r--r--
cn_proc.h
4.06
KB
-rw-r--r--
coda.h
17.79
KB
-rw-r--r--
coff.h
12.25
KB
-rw-r--r--
comedi.h
54.18
KB
-rw-r--r--
connector.h
2.2
KB
-rw-r--r--
const.h
991
B
-rw-r--r--
coresight-stm.h
747
B
-rw-r--r--
counter.h
4.77
KB
-rw-r--r--
cramfs_fs.h
3.47
KB
-rw-r--r--
cryptouser.h
5.2
KB
-rw-r--r--
cuda.h
905
B
-rw-r--r--
cxl_mem.h
7.8
KB
-rw-r--r--
cyclades.h
969
B
-rw-r--r--
cycx_cfm.h
2.92
KB
-rw-r--r--
dcbnl.h
24.97
KB
-rw-r--r--
dccp.h
6.29
KB
-rw-r--r--
devlink.h
22.17
KB
-rw-r--r--
dlm.h
2.52
KB
-rw-r--r--
dlm_device.h
2.48
KB
-rw-r--r--
dlm_plock.h
916
B
-rw-r--r--
dlmconstants.h
4.97
KB
-rw-r--r--
dm-ioctl.h
11.33
KB
-rw-r--r--
dm-log-userspace.h
14.83
KB
-rw-r--r--
dma-buf.h
7.15
KB
-rw-r--r--
dma-heap.h
1.36
KB
-rw-r--r--
dns_resolver.h
3.86
KB
-rw-r--r--
dpll.h
5.84
KB
-rw-r--r--
dqblk_xfs.h
9.17
KB
-rw-r--r--
dw100.h
357
B
-rw-r--r--
edd.h
5.47
KB
-rw-r--r--
efs_fs_sb.h
2.17
KB
-rw-r--r--
elf-em.h
2.57
KB
-rw-r--r--
elf-fdpic.h
1.58
KB
-rw-r--r--
elf.h
15.13
KB
-rw-r--r--
errno.h
23
B
-rw-r--r--
errqueue.h
1.94
KB
-rw-r--r--
erspan.h
1.03
KB
-rw-r--r--
ethtool.h
86.73
KB
-rw-r--r--
ethtool_netlink.h
26.38
KB
-rw-r--r--
eventfd.h
264
B
-rw-r--r--
eventpoll.h
2.53
KB
-rw-r--r--
ext4.h
4.03
KB
-rw-r--r--
f2fs.h
3.28
KB
-rw-r--r--
fadvise.h
842
B
-rw-r--r--
falloc.h
3.5
KB
-rw-r--r--
fanotify.h
8.17
KB
-rw-r--r--
fb.h
16.09
KB
-rw-r--r--
fcntl.h
4.44
KB
-rw-r--r--
fd.h
11.83
KB
-rw-r--r--
fdreg.h
5.24
KB
-rw-r--r--
fib_rules.h
1.99
KB
-rw-r--r--
fiemap.h
2.71
KB
-rw-r--r--
filter.h
2.16
KB
-rw-r--r--
firewire-cdev.h
49.53
KB
-rw-r--r--
firewire-constants.h
3.16
KB
-rw-r--r--
fou.h
819
B
-rw-r--r--
fpga-dfl.h
8.52
KB
-rw-r--r--
fs.h
13.94
KB
-rw-r--r--
fscrypt.h
6.44
KB
-rw-r--r--
fsi.h
3.02
KB
-rw-r--r--
fsl_hypervisor.h
7.13
KB
-rw-r--r--
fsl_mc.h
734
B
-rw-r--r--
fsmap.h
4.3
KB
-rw-r--r--
fsverity.h
3.11
KB
-rw-r--r--
fuse.h
27.04
KB
-rw-r--r--
futex.h
5.98
KB
-rw-r--r--
gameport.h
897
B
-rw-r--r--
gen_stats.h
1.49
KB
-rw-r--r--
genetlink.h
2.19
KB
-rw-r--r--
gfs2_ondisk.h
14.43
KB
-rw-r--r--
gpio.h
19.46
KB
-rw-r--r--
gsmmux.h
4.4
KB
-rw-r--r--
gtp.h
734
B
-rw-r--r--
handshake.h
1.61
KB
-rw-r--r--
hash_info.h
1.01
KB
-rw-r--r--
hdlc.h
637
B
-rw-r--r--
hdlcdrv.h
2.84
KB
-rw-r--r--
hdreg.h
22.17
KB
-rw-r--r--
hid.h
2.04
KB
-rw-r--r--
hiddev.h
6.2
KB
-rw-r--r--
hidraw.h
1.95
KB
-rw-r--r--
hpet.h
743
B
-rw-r--r--
hsr_netlink.h
1.08
KB
-rw-r--r--
hw_breakpoint.h
605
B
-rw-r--r--
hyperv.h
10.89
KB
-rw-r--r--
i2c-dev.h
1.83
KB
-rw-r--r--
i2c.h
6.73
KB
-rw-r--r--
i2o-dev.h
11.28
KB
-rw-r--r--
i8k.h
1.49
KB
-rw-r--r--
icmp.h
4.67
KB
-rw-r--r--
icmpv6.h
4.17
KB
-rw-r--r--
idxd.h
9.11
KB
-rw-r--r--
if.h
10.67
KB
-rw-r--r--
if_addr.h
2.09
KB
-rw-r--r--
if_addrlabel.h
721
B
-rw-r--r--
if_alg.h
1.56
KB
-rw-r--r--
if_arcnet.h
3.63
KB
-rw-r--r--
if_arp.h
6.43
KB
-rw-r--r--
if_bonding.h
5.02
KB
-rw-r--r--
if_bridge.h
20.18
KB
-rw-r--r--
if_cablemodem.h
986
B
-rw-r--r--
if_eql.h
1.32
KB
-rw-r--r--
if_ether.h
8.56
KB
-rw-r--r--
if_fc.h
1.7
KB
-rw-r--r--
if_fddi.h
4.27
KB
-rw-r--r--
if_hippi.h
4.14
KB
-rw-r--r--
if_infiniband.h
1.22
KB
-rw-r--r--
if_link.h
54.49
KB
-rw-r--r--
if_ltalk.h
210
B
-rw-r--r--
if_macsec.h
6.35
KB
-rw-r--r--
if_packet.h
8.07
KB
-rw-r--r--
if_phonet.h
424
B
-rw-r--r--
if_plip.h
660
B
-rw-r--r--
if_ppp.h
29
B
-rw-r--r--
if_pppol2tp.h
3.23
KB
-rw-r--r--
if_pppox.h
4.76
KB
-rw-r--r--
if_slip.h
872
B
-rw-r--r--
if_team.h
2.54
KB
-rw-r--r--
if_tun.h
4.21
KB
-rw-r--r--
if_tunnel.h
4.79
KB
-rw-r--r--
if_vlan.h
1.79
KB
-rw-r--r--
if_x25.h
881
B
-rw-r--r--
if_xdp.h
4.89
KB
-rw-r--r--
ife.h
351
B
-rw-r--r--
igmp.h
2.99
KB
-rw-r--r--
ila.h
1.22
KB
-rw-r--r--
in.h
10.61
KB
-rw-r--r--
in6.h
7.4
KB
-rw-r--r--
in_route.h
936
B
-rw-r--r--
inet_diag.h
4.9
KB
-rw-r--r--
inotify.h
3.21
KB
-rw-r--r--
input-event-codes.h
29.55
KB
-rw-r--r--
input.h
15.84
KB
-rw-r--r--
io_uring.h
19.26
KB
-rw-r--r--
ioam6.h
2.33
KB
-rw-r--r--
ioam6_genl.h
945
B
-rw-r--r--
ioam6_iptunnel.h
1.26
KB
-rw-r--r--
ioctl.h
163
B
-rw-r--r--
iommu.h
4.79
KB
-rw-r--r--
iommufd.h
24.52
KB
-rw-r--r--
ioprio.h
4.08
KB
-rw-r--r--
ip.h
4.73
KB
-rw-r--r--
ip6_tunnel.h
1.91
KB
-rw-r--r--
ip_vs.h
13.8
KB
-rw-r--r--
ipc.h
2.05
KB
-rw-r--r--
ipmi.h
15.08
KB
-rw-r--r--
ipmi_bmc.h
488
B
-rw-r--r--
ipmi_msgdefs.h
3.35
KB
-rw-r--r--
ipmi_ssif_bmc.h
441
B
-rw-r--r--
ipsec.h
947
B
-rw-r--r--
ipv6.h
4.22
KB
-rw-r--r--
ipv6_route.h
1.86
KB
-rw-r--r--
irqnr.h
104
B
-rw-r--r--
iso_fs.h
6.33
KB
-rw-r--r--
isst_if.h
14.92
KB
-rw-r--r--
ivtv.h
2.95
KB
-rw-r--r--
ivtvfb.h
1.18
KB
-rw-r--r--
jffs2.h
6.65
KB
-rw-r--r--
joystick.h
3.35
KB
-rw-r--r--
kcm.h
822
B
-rw-r--r--
kcmp.h
522
B
-rw-r--r--
kcov.h
1.92
KB
-rw-r--r--
kd.h
6.3
KB
-rw-r--r--
kdev_t.h
383
B
-rw-r--r--
kernel-page-flags.h
900
B
-rw-r--r--
kernel.h
194
B
-rw-r--r--
kernelcapi.h
1019
B
-rw-r--r--
kexec.h
2
KB
-rw-r--r--
keyboard.h
13.14
KB
-rw-r--r--
keyctl.h
5.86
KB
-rw-r--r--
kfd_ioctl.h
52.69
KB
-rw-r--r--
kfd_sysfs.h
5.01
KB
-rw-r--r--
kvm.h
62.15
KB
-rw-r--r--
kvm_para.h
1001
B
-rw-r--r--
l2tp.h
5.61
KB
-rw-r--r--
landlock.h
9.08
KB
-rw-r--r--
libc-compat.h
8.09
KB
-rw-r--r--
limits.h
937
B
-rw-r--r--
lirc.h
8.13
KB
-rw-r--r--
llc.h
3.09
KB
-rw-r--r--
loadpin.h
834
B
-rw-r--r--
loop.h
3.32
KB
-rw-r--r--
lp.h
4.09
KB
-rw-r--r--
lsm.h
2.5
KB
-rw-r--r--
lwtunnel.h
2.31
KB
-rw-r--r--
magic.h
3.77
KB
-rw-r--r--
major.h
4.55
KB
-rw-r--r--
map_to_14segment.h
9.28
KB
-rw-r--r--
map_to_7segment.h
6.45
KB
-rw-r--r--
matroxfb.h
1.43
KB
-rw-r--r--
max2175.h
1.01
KB
-rw-r--r--
mctp.h
1.45
KB
-rw-r--r--
mdio.h
23.54
KB
-rw-r--r--
media-bus-format.h
7.15
KB
-rw-r--r--
media.h
12.46
KB
-rw-r--r--
mei.h
3.39
KB
-rw-r--r--
mei_uuid.h
738
B
-rw-r--r--
membarrier.h
9.34
KB
-rw-r--r--
memfd.h
1.43
KB
-rw-r--r--
mempolicy.h
2.51
KB
-rw-r--r--
mii.h
9.27
KB
-rw-r--r--
minix_fs.h
2.07
KB
-rw-r--r--
mman.h
1.75
KB
-rw-r--r--
mmtimer.h
2.07
KB
-rw-r--r--
module.h
293
B
-rw-r--r--
mount.h
7.75
KB
-rw-r--r--
mpls.h
2.25
KB
-rw-r--r--
mpls_iptunnel.h
761
B
-rw-r--r--
mptcp.h
3.67
KB
-rw-r--r--
mptcp_pm.h
4.3
KB
-rw-r--r--
mqueue.h
2.15
KB
-rw-r--r--
mroute.h
5.78
KB
-rw-r--r--
mroute6.h
4.89
KB
-rw-r--r--
mrp_bridge.h
1.67
KB
-rw-r--r--
msdos_fs.h
6.57
KB
-rw-r--r--
msg.h
3.31
KB
-rw-r--r--
mtio.h
7.98
KB
-rw-r--r--
nbd-netlink.h
2.35
KB
-rw-r--r--
nbd.h
3.53
KB
-rw-r--r--
ncsi.h
4.71
KB
-rw-r--r--
ndctl.h
6.66
KB
-rw-r--r--
neighbour.h
5.96
KB
-rw-r--r--
net.h
2.04
KB
-rw-r--r--
net_dropmon.h
2.85
KB
-rw-r--r--
net_namespace.h
715
B
-rw-r--r--
net_tstamp.h
5.97
KB
-rw-r--r--
netconf.h
614
B
-rw-r--r--
netdev.h
4.23
KB
-rw-r--r--
netdevice.h
2.2
KB
-rw-r--r--
netfilter.h
1.69
KB
-rw-r--r--
netfilter_arp.h
445
B
-rw-r--r--
netfilter_bridge.h
1.14
KB
-rw-r--r--
netfilter_ipv4.h
1.45
KB
-rw-r--r--
netfilter_ipv6.h
1.35
KB
-rw-r--r--
netlink.h
12.1
KB
-rw-r--r--
netlink_diag.h
1.49
KB
-rw-r--r--
netrom.h
807
B
-rw-r--r--
nexthop.h
2.76
KB
-rw-r--r--
nfc.h
10.97
KB
-rw-r--r--
nfs.h
4.39
KB
-rw-r--r--
nfs2.h
1.43
KB
-rw-r--r--
nfs3.h
2.4
KB
-rw-r--r--
nfs4.h
6.39
KB
-rw-r--r--
nfs4_mount.h
1.89
KB
-rw-r--r--
nfs_fs.h
1.62
KB
-rw-r--r--
nfs_idmap.h
2.19
KB
-rw-r--r--
nfs_mount.h
2.09
KB
-rw-r--r--
nfsacl.h
718
B
-rw-r--r--
nfsd_netlink.h
933
B
-rw-r--r--
nilfs2_api.h
7.41
KB
-rw-r--r--
nilfs2_ondisk.h
17.66
KB
-rw-r--r--
nitro_enclaves.h
12.85
KB
-rw-r--r--
nl80211-vnd-intel.h
4.49
KB
-rw-r--r--
nl80211.h
334.96
KB
-rw-r--r--
npcm-video.h
1.19
KB
-rw-r--r--
nsfs.h
639
B
-rw-r--r--
nsm.h
740
B
-rw-r--r--
nubus.h
8
KB
-rw-r--r--
nvme_ioctl.h
2.43
KB
-rw-r--r--
nvram.h
532
B
-rw-r--r--
omap3isp.h
20.45
KB
-rw-r--r--
omapfb.h
5.78
KB
-rw-r--r--
oom.h
511
B
-rw-r--r--
openat2.h
1.42
KB
-rw-r--r--
openvswitch.h
40.05
KB
-rw-r--r--
packet_diag.h
1.63
KB
-rw-r--r--
param.h
141
B
-rw-r--r--
parport.h
3.75
KB
-rw-r--r--
patchkey.h
892
B
-rw-r--r--
pci.h
1.35
KB
-rw-r--r--
pci_regs.h
60.36
KB
-rw-r--r--
pcitest.h
920
B
-rw-r--r--
perf_event.h
42.28
KB
-rw-r--r--
personality.h
2.05
KB
-rw-r--r--
pfkeyv2.h
10.39
KB
-rw-r--r--
pfrut.h
7.8
KB
-rw-r--r--
pg.h
2.34
KB
-rw-r--r--
phantom.h
1.62
KB
-rw-r--r--
phonet.h
4.57
KB
-rw-r--r--
pidfd.h
256
B
-rw-r--r--
pkt_cls.h
18.15
KB
-rw-r--r--
pkt_sched.h
28.66
KB
-rw-r--r--
pktcdvd.h
2.35
KB
-rw-r--r--
pmu.h
5.32
KB
-rw-r--r--
poll.h
22
B
-rw-r--r--
posix_acl.h
1.22
KB
-rw-r--r--
posix_acl_xattr.h
1.09
KB
-rw-r--r--
posix_types.h
1.07
KB
-rw-r--r--
ppdev.h
3.21
KB
-rw-r--r--
ppp-comp.h
2.47
KB
-rw-r--r--
ppp-ioctl.h
5.59
KB
-rw-r--r--
ppp_defs.h
5.43
KB
-rw-r--r--
pps.h
4.62
KB
-rw-r--r--
pr.h
1.59
KB
-rw-r--r--
prctl.h
10.42
KB
-rw-r--r--
psample.h
2.22
KB
-rw-r--r--
psci.h
5.02
KB
-rw-r--r--
psp-dbc.h
5.16
KB
-rw-r--r--
psp-sev.h
4.39
KB
-rw-r--r--
ptp_clock.h
7.46
KB
-rw-r--r--
ptrace.h
5.37
KB
-rw-r--r--
qemu_fw_cfg.h
2.41
KB
-rw-r--r--
qnx4_fs.h
2.27
KB
-rw-r--r--
qnxtypes.h
624
B
-rw-r--r--
qrtr.h
893
B
-rw-r--r--
quota.h
6.16
KB
-rw-r--r--
radeonfb.h
360
B
-rw-r--r--
random.h
1.38
KB
-rw-r--r--
rds.h
10.91
KB
-rw-r--r--
reboot.h
1.31
KB
-rw-r--r--
reiserfs_fs.h
775
B
-rw-r--r--
reiserfs_xattr.h
542
B
-rw-r--r--
remoteproc_cdev.h
1.08
KB
-rw-r--r--
resource.h
2.53
KB
-rw-r--r--
rfkill.h
5.96
KB
-rw-r--r--
rio_cm_cdev.h
3.17
KB
-rw-r--r--
rio_mport_cdev.h
9.11
KB
-rw-r--r--
rkisp1-config.h
33.39
KB
-rw-r--r--
romfs_fs.h
1.21
KB
-rw-r--r--
rose.h
2.18
KB
-rw-r--r--
route.h
2.28
KB
-rw-r--r--
rpl.h
854
B
-rw-r--r--
rpl_iptunnel.h
424
B
-rw-r--r--
rpmsg.h
1.29
KB
-rw-r--r--
rpmsg_types.h
288
B
-rw-r--r--
rseq.h
5.32
KB
-rw-r--r--
rtc.h
5.19
KB
-rw-r--r--
rtnetlink.h
20.85
KB
-rw-r--r--
rxrpc.h
4.81
KB
-rw-r--r--
scc.h
4.52
KB
-rw-r--r--
sched.h
6.12
KB
-rw-r--r--
scif_ioctl.h
6.23
KB
-rw-r--r--
screen_info.h
2.42
KB
-rw-r--r--
sctp.h
35.17
KB
-rw-r--r--
seccomp.h
5.85
KB
-rw-r--r--
securebits.h
2.64
KB
-rw-r--r--
sed-opal.h
5.22
KB
-rw-r--r--
seg6.h
1.14
KB
-rw-r--r--
seg6_genl.h
589
B
-rw-r--r--
seg6_hmac.h
423
B
-rw-r--r--
seg6_iptunnel.h
983
B
-rw-r--r--
seg6_local.h
3.78
KB
-rw-r--r--
selinux_netlink.h
1.17
KB
-rw-r--r--
sem.h
2.98
KB
-rw-r--r--
serial.h
5.12
KB
-rw-r--r--
serial_core.h
4.93
KB
-rw-r--r--
serial_reg.h
15.65
KB
-rw-r--r--
serio.h
2.05
KB
-rw-r--r--
sev-guest.h
2.31
KB
-rw-r--r--
shm.h
3.71
KB
-rw-r--r--
signal.h
388
B
-rw-r--r--
signalfd.h
1.2
KB
-rw-r--r--
smc.h
8.46
KB
-rw-r--r--
smc_diag.h
2.88
KB
-rw-r--r--
smiapp.h
1.03
KB
-rw-r--r--
snmp.h
14.19
KB
-rw-r--r--
sock_diag.h
1.27
KB
-rw-r--r--
socket.h
1.02
KB
-rw-r--r--
sockios.h
6.69
KB
-rw-r--r--
sonet.h
2.24
KB
-rw-r--r--
sonypi.h
5.18
KB
-rw-r--r--
sound.h
1.21
KB
-rw-r--r--
soundcard.h
44.97
KB
-rw-r--r--
stat.h
6.84
KB
-rw-r--r--
stddef.h
1.94
KB
-rw-r--r--
stm.h
1.24
KB
-rw-r--r--
string.h
238
B
-rw-r--r--
suspend_ioctls.h
1.4
KB
-rw-r--r--
swab.h
6.78
KB
-rw-r--r--
switchtec_ioctl.h
5.14
KB
-rw-r--r--
sync_file.h
3.37
KB
-rw-r--r--
synclink.h
8.77
KB
-rw-r--r--
sysctl.h
25.42
KB
-rw-r--r--
sysinfo.h
1.02
KB
-rw-r--r--
target_core_user.h
4.54
KB
-rw-r--r--
taskstats.h
8.13
KB
-rw-r--r--
tcp.h
16.62
KB
-rw-r--r--
tcp_metrics.h
1.51
KB
-rw-r--r--
tdx-guest.h
1.27
KB
-rw-r--r--
tee.h
13.09
KB
-rw-r--r--
termios.h
172
B
-rw-r--r--
thermal.h
3.23
KB
-rw-r--r--
thp7312.h
659
B
-rw-r--r--
time.h
1.71
KB
-rw-r--r--
time_types.h
1.24
KB
-rw-r--r--
timerfd.h
936
B
-rw-r--r--
times.h
278
B
-rw-r--r--
timex.h
7.63
KB
-rw-r--r--
tiocl.h
1.69
KB
-rw-r--r--
tipc.h
8.62
KB
-rw-r--r--
tipc_config.h
14.57
KB
-rw-r--r--
tipc_netlink.h
9.17
KB
-rw-r--r--
tipc_sockets_diag.h
468
B
-rw-r--r--
tls.h
7.06
KB
-rw-r--r--
toshiba.h
1.88
KB
-rw-r--r--
tps6594_pfsm.h
1.13
KB
-rw-r--r--
tty.h
1.74
KB
-rw-r--r--
tty_flags.h
4.4
KB
-rw-r--r--
types.h
1.73
KB
-rw-r--r--
ublk_cmd.h
11.69
KB
-rw-r--r--
udf_fs_i.h
697
B
-rw-r--r--
udmabuf.h
643
B
-rw-r--r--
udp.h
1.65
KB
-rw-r--r--
uhid.h
4.54
KB
-rw-r--r--
uinput.h
9.04
KB
-rw-r--r--
uio.h
732
B
-rw-r--r--
uleds.h
798
B
-rw-r--r--
ultrasound.h
4.46
KB
-rw-r--r--
um_timetravel.h
3.87
KB
-rw-r--r--
un.h
384
B
-rw-r--r--
unistd.h
220
B
-rw-r--r--
unix_diag.h
1.3
KB
-rw-r--r--
usbdevice_fs.h
8.12
KB
-rw-r--r--
usbip.h
1.47
KB
-rw-r--r--
user_events.h
2.29
KB
-rw-r--r--
userfaultfd.h
11.74
KB
-rw-r--r--
userio.h
1.48
KB
-rw-r--r--
utime.h
223
B
-rw-r--r--
utsname.h
669
B
-rw-r--r--
uuid.h
28
B
-rw-r--r--
uvcvideo.h
2.57
KB
-rw-r--r--
v4l2-common.h
2.01
KB
-rw-r--r--
v4l2-controls.h
145.84
KB
-rw-r--r--
v4l2-dv-timings.h
30.39
KB
-rw-r--r--
v4l2-mediabus.h
5.11
KB
-rw-r--r--
v4l2-subdev.h
9.77
KB
-rw-r--r--
vbox_err.h
7.09
KB
-rw-r--r--
vbox_vmmdev_types.h
11.38
KB
-rw-r--r--
vboxguest.h
9.15
KB
-rw-r--r--
vdpa.h
1.74
KB
-rw-r--r--
vduse.h
9.58
KB
-rw-r--r--
version.h
216
B
-rw-r--r--
veth.h
224
B
-rw-r--r--
vfio.h
70.18
KB
-rw-r--r--
vfio_ccw.h
1.29
KB
-rw-r--r--
vfio_zdev.h
2.48
KB
-rw-r--r--
vhost.h
9.74
KB
-rw-r--r--
vhost_types.h
5.14
KB
-rw-r--r--
videodev2.h
98.5
KB
-rw-r--r--
virtio_9p.h
2
KB
-rw-r--r--
virtio_balloon.h
5.16
KB
-rw-r--r--
virtio_blk.h
9.75
KB
-rw-r--r--
virtio_bt.h
910
B
-rw-r--r--
virtio_config.h
4.65
KB
-rw-r--r--
virtio_console.h
3.08
KB
-rw-r--r--
virtio_crypto.h
16.09
KB
-rw-r--r--
virtio_fs.h
573
B
-rw-r--r--
virtio_gpio.h
1.67
KB
-rw-r--r--
virtio_gpu.h
11.19
KB
-rw-r--r--
virtio_i2c.h
1.16
KB
-rw-r--r--
virtio_ids.h
4.2
KB
-rw-r--r--
virtio_input.h
2.46
KB
-rw-r--r--
virtio_iommu.h
3.84
KB
-rw-r--r--
virtio_mem.h
6.99
KB
-rw-r--r--
virtio_mmio.h
4.85
KB
-rw-r--r--
virtio_net.h
15.08
KB
-rw-r--r--
virtio_pci.h
9.41
KB
-rw-r--r--
virtio_pcidev.h
2.39
KB
-rw-r--r--
virtio_pmem.h
882
B
-rw-r--r--
virtio_ring.h
8.52
KB
-rw-r--r--
virtio_rng.h
265
B
-rw-r--r--
virtio_scmi.h
637
B
-rw-r--r--
virtio_scsi.h
5.94
KB
-rw-r--r--
virtio_snd.h
9.09
KB
-rw-r--r--
virtio_types.h
2.1
KB
-rw-r--r--
virtio_vsock.h
3.27
KB
-rw-r--r--
vm_sockets.h
7.18
KB
-rw-r--r--
vm_sockets_diag.h
963
B
-rw-r--r--
vmcore.h
455
B
-rw-r--r--
vsockmon.h
1.84
KB
-rw-r--r--
vt.h
2.99
KB
-rw-r--r--
vtpm_proxy.h
1.68
KB
-rw-r--r--
wait.h
682
B
-rw-r--r--
watch_queue.h
3.41
KB
-rw-r--r--
watchdog.h
2.28
KB
-rw-r--r--
wireguard.h
7.57
KB
-rw-r--r--
wireless.h
41.7
KB
-rw-r--r--
wmi.h
1.72
KB
-rw-r--r--
wwan.h
295
B
-rw-r--r--
x25.h
3.48
KB
-rw-r--r--
xattr.h
2.95
KB
-rw-r--r--
xdp_diag.h
1.43
KB
-rw-r--r--
xfrm.h
12.42
KB
-rw-r--r--
xilinx-v4l2-controls.h
2.91
KB
-rw-r--r--
zorro.h
3.22
KB
-rw-r--r--
zorro_ids.h
29.36
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : iommufd.h
/* 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/types.h> #include <linux/ioctl.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, IOMMUFD_CMD_IOAS_ALLOW_IOVAS, IOMMUFD_CMD_IOAS_COPY, IOMMUFD_CMD_IOAS_IOVA_RANGES, IOMMUFD_CMD_IOAS_MAP, IOMMUFD_CMD_IOAS_UNMAP, IOMMUFD_CMD_OPTION, IOMMUFD_CMD_VFIO_IOAS, IOMMUFD_CMD_HWPT_ALLOC, IOMMUFD_CMD_GET_HW_INFO, IOMMUFD_CMD_HWPT_SET_DIRTY_TRACKING, IOMMUFD_CMD_HWPT_GET_DIRTY_BITMAP, IOMMUFD_CMD_HWPT_INVALIDATE, }; /** * 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 */ enum iommufd_hwpt_alloc_flags { IOMMU_HWPT_ALLOC_NEST_PARENT = 1 << 0, IOMMU_HWPT_ALLOC_DIRTY_TRACKING = 1 << 1, }; /** * 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, IOMMU_HWPT_DATA_VTD_S1, }; /** * 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 * * 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; }; #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, IOMMU_HW_INFO_TYPE_INTEL_VTD, }; /** * 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, }; /** * 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) #endif
Close