golden hour
/usr/include/linux
⬆️ Go Up
Upload
File/Folder
Size
Actions
a.out.h
7.15 KB
Del
OK
acct.h
3.58 KB
Del
OK
adb.h
1.05 KB
Del
OK
adfs_fs.h
873 B
Del
OK
affs_hardblocks.h
1.45 KB
Del
OK
agpgart.h
3.83 KB
Del
OK
aio_abi.h
3.18 KB
Del
OK
apm_bios.h
3.46 KB
Del
OK
arcfb.h
150 B
Del
OK
atalk.h
960 B
Del
OK
atm.h
7.64 KB
Del
OK
atm_eni.h
585 B
Del
OK
atm_he.h
343 B
Del
OK
atm_idt77105.h
892 B
Del
OK
atm_nicstar.h
1.19 KB
Del
OK
atm_tcp.h
1.52 KB
Del
OK
atm_zatm.h
1.57 KB
Del
OK
atmapi.h
889 B
Del
OK
atmarp.h
1.2 KB
Del
OK
atmbr2684.h
3.13 KB
Del
OK
atmclip.h
513 B
Del
OK
atmdev.h
7.44 KB
Del
OK
atmioc.h
1.55 KB
Del
OK
atmlec.h
2.26 KB
Del
OK
atmmpc.h
4.07 KB
Del
OK
atmppp.h
576 B
Del
OK
atmsap.h
4.79 KB
Del
OK
atmsvc.h
1.75 KB
Del
OK
audit.h
17.83 KB
Del
OK
auto_fs.h
2.53 KB
Del
OK
auto_fs4.h
4.23 KB
Del
OK
auxvec.h
1.4 KB
Del
OK
ax25.h
2.7 KB
Del
OK
b1lli.h
1.62 KB
Del
OK
baycom.h
820 B
Del
OK
beancounter.h
2.38 KB
Del
OK
bfs_fs.h
1.79 KB
Del
OK
binfmts.h
565 B
Del
OK
blkpg.h
1.56 KB
Del
OK
blktrace_api.h
4.38 KB
Del
OK
bpqether.h
952 B
Del
OK
bsg.h
2.37 KB
Del
OK
bt-bmc.h
508 B
Del
OK
btrfs.h
25.07 KB
Del
OK
byteorder
-
Del
OK
caif
-
Del
OK
can
-
Del
OK
can.h
5.46 KB
Del
OK
capability.h
10.92 KB
Del
OK
capi.h
2.99 KB
Del
OK
cciss_defs.h
3.14 KB
Del
OK
cciss_ioctl.h
2.63 KB
Del
OK
cdrom.h
28.12 KB
Del
OK
cgroupstats.h
2.1 KB
Del
OK
chio.h
5.16 KB
Del
OK
cm4000_cs.h
1.68 KB
Del
OK
cn_proc.h
3.19 KB
Del
OK
coda.h
17.09 KB
Del
OK
coda_psdev.h
720 B
Del
OK
coff.h
12.12 KB
Del
OK
compat.h
9.63 KB
Del
OK
connector.h
2.14 KB
Del
OK
const.h
673 B
Del
OK
cramfs_fs.h
2.68 KB
Del
OK
cuda.h
842 B
Del
OK
cyclades.h
16.65 KB
Del
OK
cycx_cfm.h
2.86 KB
Del
OK
dcbnl.h
24.19 KB
Del
OK
dccp.h
6.22 KB
Del
OK
devlink.h
7.09 KB
Del
OK
dlm.h
2.43 KB
Del
OK
dlm_device.h
2.42 KB
Del
OK
dlm_netlink.h
1.04 KB
Del
OK
dlm_plock.h
831 B
Del
OK
dlmconstants.h
4.9 KB
Del
OK
dm-ioctl.h
10.55 KB
Del
OK
dm-log-userspace.h
14.82 KB
Del
OK
dn.h
4.42 KB
Del
OK
dqblk_xfs.h
8.72 KB
Del
OK
dvb
-
Del
OK
edd.h
5.41 KB
Del
OK
efs_fs_sb.h
2.11 KB
Del
OK
elf-em.h
1.83 KB
Del
OK
elf-fdpic.h
1.04 KB
Del
OK
elf.h
12.63 KB
Del
OK
elfcore.h
2.86 KB
Del
OK
errno.h
23 B
Del
OK
errqueue.h
1.1 KB
Del
OK
ethtool.h
68.76 KB
Del
OK
eventpoll.h
1.76 KB
Del
OK
fadvise.h
855 B
Del
OK
falloc.h
1.98 KB
Del
OK
fanotify.h
3.52 KB
Del
OK
fb.h
16 KB
Del
OK
fcntl.h
2.16 KB
Del
OK
fd.h
11.31 KB
Del
OK
fdreg.h
5.23 KB
Del
OK
fib_rules.h
1.57 KB
Del
OK
fiemap.h
2.65 KB
Del
OK
filter.h
3.53 KB
Del
OK
firewire-cdev.h
42.86 KB
Del
OK
firewire-constants.h
3.16 KB
Del
OK
flat.h
2.04 KB
Del
OK
fou.h
617 B
Del
OK
fs.h
9.84 KB
Del
OK
fsl_hypervisor.h
7.05 KB
Del
OK
fuse.h
16.22 KB
Del
OK
futex.h
4.81 KB
Del
OK
gameport.h
834 B
Del
OK
gen_stats.h
1.48 KB
Del
OK
genetlink.h
1.85 KB
Del
OK
gfs2_ondisk.h
12 KB
Del
OK
gigaset_dev.h
1.35 KB
Del
OK
hdlc
-
Del
OK
hdlc.h
574 B
Del
OK
hdlcdrv.h
2.78 KB
Del
OK
hdreg.h
22.11 KB
Del
OK
hid.h
1.79 KB
Del
OK
hiddev.h
6.13 KB
Del
OK
hidraw.h
1.41 KB
Del
OK
hpet.h
680 B
Del
OK
hsi
-
Del
OK
hw_breakpoint.h
679 B
Del
OK
hyperv.h
10.22 KB
Del
OK
hysdn_if.h
1.29 KB
Del
OK
i2c-dev.h
2.37 KB
Del
OK
i2c.h
6.61 KB
Del
OK
i2o-dev.h
11.22 KB
Del
OK
i8k.h
1.4 KB
Del
OK
icmp.h
2.82 KB
Del
OK
icmpv6.h
3.82 KB
Del
OK
if.h
9.36 KB
Del
OK
if_addr.h
1.7 KB
Del
OK
if_addrlabel.h
658 B
Del
OK
if_alg.h
816 B
Del
OK
if_arcnet.h
3.63 KB
Del
OK
if_arp.h
6.3 KB
Del
OK
if_bonding.h
4.11 KB
Del
OK
if_bridge.h
6.46 KB
Del
OK
if_cablemodem.h
922 B
Del
OK
if_eql.h
1.26 KB
Del
OK
if_ether.h
7.13 KB
Del
OK
if_fc.h
1.63 KB
Del
OK
if_fddi.h
3.6 KB
Del
OK
if_frad.h
2.89 KB
Del
OK
if_hippi.h
4.07 KB
Del
OK
if_infiniband.h
1.13 KB
Del
OK
if_link.h
19.1 KB
Del
OK
if_ltalk.h
147 B
Del
OK
if_macsec.h
5.42 KB
Del
OK
if_packet.h
7.15 KB
Del
OK
if_phonet.h
361 B
Del
OK
if_plip.h
596 B
Del
OK
if_ppp.h
29 B
Del
OK
if_pppol2tp.h
3.18 KB
Del
OK
if_pppox.h
4.64 KB
Del
OK
if_slip.h
809 B
Del
OK
if_team.h
2.48 KB
Del
OK
if_tun.h
3.77 KB
Del
OK
if_tunnel.h
3 KB
Del
OK
if_vlan.h
1.69 KB
Del
OK
if_x25.h
817 B
Del
OK
ife.h
288 B
Del
OK
igmp.h
2.88 KB
Del
OK
in.h
9.15 KB
Del
OK
in6.h
6.99 KB
Del
OK
in_route.h
873 B
Del
OK
inet_diag.h
3.23 KB
Del
OK
inotify.h
3.09 KB
Del
OK
input.h
32.47 KB
Del
OK
ioctl.h
100 B
Del
OK
ip.h
3.47 KB
Del
OK
ip6_tunnel.h
1.67 KB
Del
OK
ip_vs.h
12.71 KB
Del
OK
ipc.h
1.99 KB
Del
OK
ipmi.h
15.8 KB
Del
OK
ipmi_msgdefs.h
4.37 KB
Del
OK
ipsec.h
884 B
Del
OK
ipv6.h
3.25 KB
Del
OK
ipv6_route.h
1.69 KB
Del
OK
ipx.h
1.79 KB
Del
OK
irda.h
7.31 KB
Del
OK
irqnr.h
104 B
Del
OK
isdn
-
Del
OK
isdn.h
5.58 KB
Del
OK
isdn_divertif.h
1.11 KB
Del
OK
isdn_ppp.h
1.82 KB
Del
OK
isdnif.h
2.25 KB
Del
OK
iso_fs.h
6.29 KB
Del
OK
ivtv.h
2.89 KB
Del
OK
ivtvfb.h
1.12 KB
Del
OK
ixjuser.h
24.53 KB
Del
OK
jffs2.h
6.85 KB
Del
OK
joystick.h
3.5 KB
Del
OK
kd.h
6.04 KB
Del
OK
kdev_t.h
320 B
Del
OK
kernel-page-flags.h
767 B
Del
OK
kernel.h
375 B
Del
OK
kernelcapi.h
956 B
Del
OK
kexec.h
1.92 KB
Del
OK
keyboard.h
12.42 KB
Del
OK
keyctl.h
2.98 KB
Del
OK
kvm.h
33.97 KB
Del
OK
kvm_para.h
819 B
Del
OK
l2tp.h
4.98 KB
Del
OK
libc-compat.h
3.44 KB
Del
OK
limits.h
874 B
Del
OK
llc.h
2.98 KB
Del
OK
loop.h
2.31 KB
Del
OK
lp.h
3.72 KB
Del
OK
lwtunnel.h
839 B
Del
OK
magic.h
2.91 KB
Del
OK
major.h
4.48 KB
Del
OK
map_to_7segment.h
7.02 KB
Del
OK
matroxfb.h
1.37 KB
Del
OK
mdio.h
13.74 KB
Del
OK
media.h
3.5 KB
Del
OK
mei.h
4.62 KB
Del
OK
memfd.h
186 B
Del
OK
mempolicy.h
2.35 KB
Del
OK
meye.h
2.41 KB
Del
OK
mii.h
7.76 KB
Del
OK
minix_fs.h
2.01 KB
Del
OK
mman.h
230 B
Del
OK
mmc
-
Del
OK
mmtimer.h
2.01 KB
Del
OK
mpls.h
1.33 KB
Del
OK
mqueue.h
2.01 KB
Del
OK
mroute.h
4.12 KB
Del
OK
mroute6.h
4.08 KB
Del
OK
msdos_fs.h
6.28 KB
Del
OK
msg.h
2.55 KB
Del
OK
mtio.h
7.92 KB
Del
OK
n_r3964.h
2.29 KB
Del
OK
nbd.h
2.34 KB
Del
OK
ncp.h
4.94 KB
Del
OK
ncp_fs.h
3.27 KB
Del
OK
ncp_mount.h
2.06 KB
Del
OK
ncp_no.h
651 B
Del
OK
ndctl.h
8.79 KB
Del
OK
neighbour.h
4.17 KB
Del
OK
net.h
1.97 KB
Del
OK
net_dropmon.h
1.07 KB
Del
OK
net_namespace.h
609 B
Del
OK
net_tstamp.h
4.06 KB
Del
OK
netconf.h
423 B
Del
OK
netdevice.h
1.46 KB
Del
OK
netfilter
-
Del
OK
netfilter.h
1.56 KB
Del
OK
netfilter_arp
-
Del
OK
netfilter_arp.h
380 B
Del
OK
netfilter_bridge
-
Del
OK
netfilter_bridge.h
768 B
Del
OK
netfilter_decnet.h
1.83 KB
Del
OK
netfilter_ipv4
-
Del
OK
netfilter_ipv4.h
2.02 KB
Del
OK
netfilter_ipv6
-
Del
OK
netfilter_ipv6.h
2.04 KB
Del
OK
netlink.h
6.22 KB
Del
OK
netlink_diag.h
1.33 KB
Del
OK
netrom.h
744 B
Del
OK
nfc.h
7.72 KB
Del
OK
nfs.h
4.31 KB
Del
OK
nfs2.h
1.37 KB
Del
OK
nfs3.h
2.24 KB
Del
OK
nfs4.h
5.95 KB
Del
OK
nfs4_mount.h
1.83 KB
Del
OK
nfs_fs.h
1.51 KB
Del
OK
nfs_idmap.h
2.19 KB
Del
OK
nfs_mount.h
2.32 KB
Del
OK
nfsacl.h
605 B
Del
OK
nfsd
-
Del
OK
nl80211.h
226.29 KB
Del
OK
nubus.h
8.17 KB
Del
OK
nvme_ioctl.h
1.55 KB
Del
OK
nvram.h
469 B
Del
OK
omap3isp.h
20.19 KB
Del
OK
omapfb.h
5.72 KB
Del
OK
oom.h
448 B
Del
OK
openvswitch.h
31.79 KB
Del
OK
packet_diag.h
1.5 KB
Del
OK
param.h
78 B
Del
OK
parport.h
3.56 KB
Del
OK
patchkey.h
829 B
Del
OK
pci.h
1.29 KB
Del
OK
pci_regs.h
49.96 KB
Del
OK
perf_event.h
29.53 KB
Del
OK
personality.h
1.99 KB
Del
OK
pfkeyv2.h
9.91 KB
Del
OK
pg.h
2.23 KB
Del
OK
phantom.h
1.55 KB
Del
OK
phonet.h
4.51 KB
Del
OK
pkt_cls.h
11.51 KB
Del
OK
pkt_sched.h
19.75 KB
Del
OK
pktcdvd.h
2.56 KB
Del
OK
pmu.h
5.13 KB
Del
OK
poll.h
22 B
Del
OK
posix_types.h
1.01 KB
Del
OK
ppdev.h
3.07 KB
Del
OK
ppp-comp.h
2.41 KB
Del
OK
ppp-ioctl.h
5.29 KB
Del
OK
ppp_defs.h
4.93 KB
Del
OK
pps.h
4.06 KB
Del
OK
prctl.h
6.71 KB
Del
OK
psample.h
735 B
Del
OK
ptp_clock.h
4.69 KB
Del
OK
ptrace.h
3.2 KB
Del
OK
qnx4_fs.h
2.21 KB
Del
OK
qnxtypes.h
561 B
Del
OK
quota.h
5.78 KB
Del
OK
radeonfb.h
297 B
Del
OK
raid
-
Del
OK
random.h
1.2 KB
Del
OK
raw.h
302 B
Del
OK
rds.h
7.9 KB
Del
OK
reboot.h
1.25 KB
Del
OK
reiserfs_fs.h
712 B
Del
OK
reiserfs_xattr.h
464 B
Del
OK
resource.h
2.09 KB
Del
OK
rfkill.h
3.5 KB
Del
OK
romfs_fs.h
1.15 KB
Del
OK
rose.h
2.12 KB
Del
OK
route.h
2.21 KB
Del
OK
rtc.h
3.85 KB
Del
OK
rtnetlink.h
16.63 KB
Del
OK
scc.h
4.43 KB
Del
OK
sched.h
2.23 KB
Del
OK
screen_info.h
2.36 KB
Del
OK
sctp.h
29.29 KB
Del
OK
sdla.h
2.71 KB
Del
OK
seccomp.h
1.79 KB
Del
OK
securebits.h
2.58 KB
Del
OK
selinux_netlink.h
1.11 KB
Del
OK
sem.h
2.52 KB
Del
OK
serial.h
3.04 KB
Del
OK
serial_core.h
5.11 KB
Del
OK
serial_reg.h
15.66 KB
Del
OK
serio.h
1.77 KB
Del
OK
shm.h
2.17 KB
Del
OK
signal.h
171 B
Del
OK
signalfd.h
1.07 KB
Del
OK
snmp.h
12.38 KB
Del
OK
sock_diag.h
431 B
Del
OK
socket.h
738 B
Del
OK
sockios.h
5.89 KB
Del
OK
som.h
5.35 KB
Del
OK
sonet.h
2.17 KB
Del
OK
sonypi.h
5.12 KB
Del
OK
sound.h
1.15 KB
Del
OK
soundcard.h
44.96 KB
Del
OK
spi
-
Del
OK
stat.h
1 KB
Del
OK
stddef.h
1 B
Del
OK
string.h
175 B
Del
OK
sunrpc
-
Del
OK
suspend_ioctls.h
1.34 KB
Del
OK
swab.h
6.36 KB
Del
OK
synclink.h
8.71 KB
Del
OK
sysctl.h
25.46 KB
Del
OK
sysinfo.h
986 B
Del
OK
target_core_user.h
3.65 KB
Del
OK
taskstats.h
6.83 KB
Del
OK
tc_act
-
Del
OK
tc_ematch
-
Del
OK
tcp.h
5.93 KB
Del
OK
tcp_metrics.h
1.45 KB
Del
OK
telephony.h
8.84 KB
Del
OK
termios.h
443 B
Del
OK
time.h
1.54 KB
Del
OK
times.h
215 B
Del
OK
timex.h
6.17 KB
Del
OK
tiocl.h
1.63 KB
Del
OK
tipc.h
5.44 KB
Del
OK
tipc_config.h
14.1 KB
Del
OK
toshiba.h
1.24 KB
Del
OK
tty.h
1.33 KB
Del
OK
tty_flags.h
3.66 KB
Del
OK
types.h
1.4 KB
Del
OK
udf_fs_i.h
634 B
Del
OK
udp.h
1.28 KB
Del
OK
uhid.h
2.15 KB
Del
OK
uinput.h
5 KB
Del
OK
uio.h
668 B
Del
OK
ultrasound.h
4.39 KB
Del
OK
un.h
239 B
Del
OK
unistd.h
157 B
Del
OK
unix_diag.h
1.1 KB
Del
OK
usb
-
Del
OK
usbdevice_fs.h
6.56 KB
Del
OK
userfaultfd.h
6.59 KB
Del
OK
utime.h
152 B
Del
OK
utsname.h
606 B
Del
OK
uuid.h
1.5 KB
Del
OK
uvcvideo.h
1.6 KB
Del
OK
v4l2-common.h
2.38 KB
Del
OK
v4l2-controls.h
37.34 KB
Del
OK
v4l2-dv-timings.h
25.75 KB
Del
OK
v4l2-mediabus.h
4.55 KB
Del
OK
v4l2-subdev.h
5.27 KB
Del
OK
version.h
255 B
Del
OK
veth.h
402 B
Del
OK
vfio.h
24.12 KB
Del
OK
vhost.h
7.13 KB
Del
OK
videodev2.h
67.41 KB
Del
OK
virtio_9p.h
1.99 KB
Del
OK
virtio_balloon.h
3.71 KB
Del
OK
virtio_blk.h
5.2 KB
Del
OK
virtio_config.h
3.24 KB
Del
OK
virtio_console.h
2.94 KB
Del
OK
virtio_gpu.h
7.84 KB
Del
OK
virtio_ids.h
2.32 KB
Del
OK
virtio_input.h
2.45 KB
Del
OK
virtio_net.h
9.4 KB
Del
OK
virtio_pci.h
6.63 KB
Del
OK
virtio_ring.h
6.18 KB
Del
OK
virtio_rng.h
265 B
Del
OK
virtio_scsi.h
5.13 KB
Del
OK
virtio_types.h
2.11 KB
Del
OK
virtio_vsock.h
3.01 KB
Del
OK
vm_sockets.h
5.13 KB
Del
OK
vsockmon.h
1.78 KB
Del
OK
vt.h
3.05 KB
Del
OK
vtpm_proxy.h
1.62 KB
Del
OK
vzcalluser.h
4.11 KB
Del
OK
vzctl_netstat.h
2.56 KB
Del
OK
vzctl_venet.h
641 B
Del
OK
vzctl_veth.h
758 B
Del
OK
vziptable_defs.h
3.03 KB
Del
OK
vzlist.h
845 B
Del
OK
wait.h
600 B
Del
OK
wanrouter.h
390 B
Del
OK
watchdog.h
2.22 KB
Del
OK
wimax
-
Del
OK
wimax.h
8.17 KB
Del
OK
wireless.h
41.65 KB
Del
OK
x25.h
3.42 KB
Del
OK
xattr.h
2.53 KB
Del
OK
xfrm.h
11 KB
Del
OK
Edit: vfio.h
/* * VFIO API definition * * Copyright (C) 2012 Red Hat, Inc. All rights reserved. * Author: Alex Williamson <alex.williamson@redhat.com> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ #ifndef VFIO_H #define VFIO_H #include <linux/types.h> #include <linux/ioctl.h> #define VFIO_API_VERSION 0 /* Kernel & User level defines for VFIO IOCTLs. */ /* Extensions */ #define VFIO_TYPE1_IOMMU 1 #define VFIO_SPAPR_TCE_IOMMU 2 #define VFIO_TYPE1v2_IOMMU 3 /* * IOMMU enforces DMA cache coherence (ex. PCIe NoSnoop stripping). This * capability is subject to change as groups are added or removed. */ #define VFIO_DMA_CC_IOMMU 4 /* Check if EEH is supported */ #define VFIO_EEH 5 #define VFIO_SPAPR_TCE_v2_IOMMU 7 /* * The No-IOMMU IOMMU offers no translation or isolation for devices and * supports no ioctls outside of VFIO_CHECK_EXTENSION. Use of VFIO's No-IOMMU * code will taint the host kernel and should be used with extreme caution. */ #define VFIO_NOIOMMU_IOMMU 8 /* * The IOCTL interface is designed for extensibility by embedding the * structure length (argsz) and flags into structures passed between * kernel and userspace. We therefore use the _IO() macro for these * defines to avoid implicitly embedding a size into the ioctl request. * As structure fields are added, argsz will increase to match and flag * bits will be defined to indicate additional fields with valid data. * It's *always* the caller's responsibility to indicate the size of * the structure passed by setting argsz appropriately. */ #define VFIO_TYPE (';') #define VFIO_BASE 100 /* * For extension of INFO ioctls, VFIO makes use of a capability chain * designed after PCI/e capabilities. A flag bit indicates whether * this capability chain is supported and a field defined in the fixed * structure defines the offset of the first capability in the chain. * This field is only valid when the corresponding bit in the flags * bitmap is set. This offset field is relative to the start of the * INFO buffer, as is the next field within each capability header. * The id within the header is a shared address space per INFO ioctl, * while the version field is specific to the capability id. The * contents following the header are specific to the capability id. */ struct vfio_info_cap_header { __u16 id; /* Identifies capability */ __u16 version; /* Version specific to the capability ID */ __u32 next; /* Offset of next capability */ }; /* * Callers of INFO ioctls passing insufficiently sized buffers will see * the capability chain flag bit set, a zero value for the first capability * offset (if available within the provided argsz), and argsz will be * updated to report the necessary buffer size. For compatibility, the * INFO ioctl will not report error in this case, but the capability chain * will not be available. */ /* -------- IOCTLs for VFIO file descriptor (/dev/vfio/vfio) -------- */ /** * VFIO_GET_API_VERSION - _IO(VFIO_TYPE, VFIO_BASE + 0) * * Report the version of the VFIO API. This allows us to bump the entire * API version should we later need to add or change features in incompatible * ways. * Return: VFIO_API_VERSION * Availability: Always */ #define VFIO_GET_API_VERSION _IO(VFIO_TYPE, VFIO_BASE + 0) /** * VFIO_CHECK_EXTENSION - _IOW(VFIO_TYPE, VFIO_BASE + 1, __u32) * * Check whether an extension is supported. * Return: 0 if not supported, 1 (or some other positive integer) if supported. * Availability: Always */ #define VFIO_CHECK_EXTENSION _IO(VFIO_TYPE, VFIO_BASE + 1) /** * VFIO_SET_IOMMU - _IOW(VFIO_TYPE, VFIO_BASE + 2, __s32) * * Set the iommu to the given type. The type must be supported by an * iommu driver as verified by calling CHECK_EXTENSION using the same * type. A group must be set to this file descriptor before this * ioctl is available. The IOMMU interfaces enabled by this call are * specific to the value set. * Return: 0 on success, -errno on failure * Availability: When VFIO group attached */ #define VFIO_SET_IOMMU _IO(VFIO_TYPE, VFIO_BASE + 2) /* -------- IOCTLs for GROUP file descriptors (/dev/vfio/$GROUP) -------- */ /** * VFIO_GROUP_GET_STATUS - _IOR(VFIO_TYPE, VFIO_BASE + 3, * struct vfio_group_status) * * Retrieve information about the group. Fills in provided * struct vfio_group_info. Caller sets argsz. * Return: 0 on succes, -errno on failure. * Availability: Always */ struct vfio_group_status { __u32 argsz; __u32 flags; #define VFIO_GROUP_FLAGS_VIABLE (1 << 0) #define VFIO_GROUP_FLAGS_CONTAINER_SET (1 << 1) }; #define VFIO_GROUP_GET_STATUS _IO(VFIO_TYPE, VFIO_BASE + 3) /** * VFIO_GROUP_SET_CONTAINER - _IOW(VFIO_TYPE, VFIO_BASE + 4, __s32) * * Set the container for the VFIO group to the open VFIO file * descriptor provided. Groups may only belong to a single * container. Containers may, at their discretion, support multiple * groups. Only when a container is set are all of the interfaces * of the VFIO file descriptor and the VFIO group file descriptor * available to the user. * Return: 0 on success, -errno on failure. * Availability: Always */ #define VFIO_GROUP_SET_CONTAINER _IO(VFIO_TYPE, VFIO_BASE + 4) /** * VFIO_GROUP_UNSET_CONTAINER - _IO(VFIO_TYPE, VFIO_BASE + 5) * * Remove the group from the attached container. This is the * opposite of the SET_CONTAINER call and returns the group to * an initial state. All device file descriptors must be released * prior to calling this interface. When removing the last group * from a container, the IOMMU will be disabled and all state lost, * effectively also returning the VFIO file descriptor to an initial * state. * Return: 0 on success, -errno on failure. * Availability: When attached to container */ #define VFIO_GROUP_UNSET_CONTAINER _IO(VFIO_TYPE, VFIO_BASE + 5) /** * VFIO_GROUP_GET_DEVICE_FD - _IOW(VFIO_TYPE, VFIO_BASE + 6, char) * * Return a new file descriptor for the device object described by * the provided string. The string should match a device listed in * the devices subdirectory of the IOMMU group sysfs entry. The * group containing the device must already be added to this context. * Return: new file descriptor on success, -errno on failure. * Availability: When attached to container */ #define VFIO_GROUP_GET_DEVICE_FD _IO(VFIO_TYPE, VFIO_BASE + 6) /* --------------- IOCTLs for DEVICE file descriptors --------------- */ /** * VFIO_DEVICE_GET_INFO - _IOR(VFIO_TYPE, VFIO_BASE + 7, * struct vfio_device_info) * * Retrieve information about the device. Fills in provided * struct vfio_device_info. Caller sets argsz. * Return: 0 on success, -errno on failure. */ struct vfio_device_info { __u32 argsz; __u32 flags; #define VFIO_DEVICE_FLAGS_RESET (1 << 0) /* Device supports reset */ #define VFIO_DEVICE_FLAGS_PCI (1 << 1) /* vfio-pci device */ __u32 num_regions; /* Max region index + 1 */ __u32 num_irqs; /* Max IRQ index + 1 */ }; #define VFIO_DEVICE_GET_INFO _IO(VFIO_TYPE, VFIO_BASE + 7) /* * Vendor driver using Mediated device framework should provide device_api * attribute in supported type attribute groups. Device API string should be one * of the following corresponding to device flags in vfio_device_info structure. */ #define VFIO_DEVICE_API_PCI_STRING "vfio-pci" #define VFIO_DEVICE_API_PLATFORM_STRING "vfio-platform" #define VFIO_DEVICE_API_AMBA_STRING "vfio-amba" /** * VFIO_DEVICE_GET_REGION_INFO - _IOWR(VFIO_TYPE, VFIO_BASE + 8, * struct vfio_region_info) * * Retrieve information about a device region. Caller provides * struct vfio_region_info with index value set. Caller sets argsz. * Implementation of region mapping is bus driver specific. This is * intended to describe MMIO, I/O port, as well as bus specific * regions (ex. PCI config space). Zero sized regions may be used * to describe unimplemented regions (ex. unimplemented PCI BARs). * Return: 0 on success, -errno on failure. */ struct vfio_region_info { __u32 argsz; __u32 flags; #define VFIO_REGION_INFO_FLAG_READ (1 << 0) /* Region supports read */ #define VFIO_REGION_INFO_FLAG_WRITE (1 << 1) /* Region supports write */ #define VFIO_REGION_INFO_FLAG_MMAP (1 << 2) /* Region supports mmap */ #define VFIO_REGION_INFO_FLAG_CAPS (1 << 3) /* Info supports caps */ __u32 index; /* Region index */ __u32 cap_offset; /* Offset within info struct of first cap */ __u64 size; /* Region size (bytes) */ __u64 offset; /* Region offset from start of device fd */ }; #define VFIO_DEVICE_GET_REGION_INFO _IO(VFIO_TYPE, VFIO_BASE + 8) /* * The sparse mmap capability allows finer granularity of specifying areas * within a region with mmap support. When specified, the user should only * mmap the offset ranges specified by the areas array. mmaps outside of the * areas specified may fail (such as the range covering a PCI MSI-X table) or * may result in improper device behavior. * * The structures below define version 1 of this capability. */ #define VFIO_REGION_INFO_CAP_SPARSE_MMAP 1 struct vfio_region_sparse_mmap_area { __u64 offset; /* Offset of mmap'able area within region */ __u64 size; /* Size of mmap'able area */ }; struct vfio_region_info_cap_sparse_mmap { struct vfio_info_cap_header header; __u32 nr_areas; __u32 reserved; struct vfio_region_sparse_mmap_area areas[]; }; /* * The device specific type capability allows regions unique to a specific * device or class of devices to be exposed. This helps solve the problem for * vfio bus drivers of defining which region indexes correspond to which region * on the device, without needing to resort to static indexes, as done by * vfio-pci. For instance, if we were to go back in time, we might remove * VFIO_PCI_VGA_REGION_INDEX and let vfio-pci simply define that all indexes * greater than or equal to VFIO_PCI_NUM_REGIONS are device specific and we'd * make a "VGA" device specific type to describe the VGA access space. This * means that non-VGA devices wouldn't need to waste this index, and thus the * address space associated with it due to implementation of device file * descriptor offsets in vfio-pci. * * The current implementation is now part of the user ABI, so we can't use this * for VGA, but there are other upcoming use cases, such as opregions for Intel * IGD devices and framebuffers for vGPU devices. We missed VGA, but we'll * use this for future additions. * * The structure below defines version 1 of this capability. */ #define VFIO_REGION_INFO_CAP_TYPE 2 struct vfio_region_info_cap_type { struct vfio_info_cap_header header; __u32 type; /* global per bus driver */ __u32 subtype; /* type specific */ }; /** * VFIO_DEVICE_GET_IRQ_INFO - _IOWR(VFIO_TYPE, VFIO_BASE + 9, * struct vfio_irq_info) * * Retrieve information about a device IRQ. Caller provides * struct vfio_irq_info with index value set. Caller sets argsz. * Implementation of IRQ mapping is bus driver specific. Indexes * using multiple IRQs are primarily intended to support MSI-like * interrupt blocks. Zero count irq blocks may be used to describe * unimplemented interrupt types. * * The EVENTFD flag indicates the interrupt index supports eventfd based * signaling. * * The MASKABLE flags indicates the index supports MASK and UNMASK * actions described below. * * AUTOMASKED indicates that after signaling, the interrupt line is * automatically masked by VFIO and the user needs to unmask the line * to receive new interrupts. This is primarily intended to distinguish * level triggered interrupts. * * The NORESIZE flag indicates that the interrupt lines within the index * are setup as a set and new subindexes cannot be enabled without first * disabling the entire index. This is used for interrupts like PCI MSI * and MSI-X where the driver may only use a subset of the available * indexes, but VFIO needs to enable a specific number of vectors * upfront. In the case of MSI-X, where the user can enable MSI-X and * then add and unmask vectors, it's up to userspace to make the decision * whether to allocate the maximum supported number of vectors or tear * down setup and incrementally increase the vectors as each is enabled. */ struct vfio_irq_info { __u32 argsz; __u32 flags; #define VFIO_IRQ_INFO_EVENTFD (1 << 0) #define VFIO_IRQ_INFO_MASKABLE (1 << 1) #define VFIO_IRQ_INFO_AUTOMASKED (1 << 2) #define VFIO_IRQ_INFO_NORESIZE (1 << 3) __u32 index; /* IRQ index */ __u32 count; /* Number of IRQs within this index */ }; #define VFIO_DEVICE_GET_IRQ_INFO _IO(VFIO_TYPE, VFIO_BASE + 9) /** * VFIO_DEVICE_SET_IRQS - _IOW(VFIO_TYPE, VFIO_BASE + 10, struct vfio_irq_set) * * Set signaling, masking, and unmasking of interrupts. Caller provides * struct vfio_irq_set with all fields set. 'start' and 'count' indicate * the range of subindexes being specified. * * The DATA flags specify the type of data provided. If DATA_NONE, the * operation performs the specified action immediately on the specified * interrupt(s). For example, to unmask AUTOMASKED interrupt [0,0]: * flags = (DATA_NONE|ACTION_UNMASK), index = 0, start = 0, count = 1. * * DATA_BOOL allows sparse support for the same on arrays of interrupts. * For example, to mask interrupts [0,1] and [0,3] (but not [0,2]): * flags = (DATA_BOOL|ACTION_MASK), index = 0, start = 1, count = 3, * data = {1,0,1} * * DATA_EVENTFD binds the specified ACTION to the provided __s32 eventfd. * A value of -1 can be used to either de-assign interrupts if already * assigned or skip un-assigned interrupts. For example, to set an eventfd * to be trigger for interrupts [0,0] and [0,2]: * flags = (DATA_EVENTFD|ACTION_TRIGGER), index = 0, start = 0, count = 3, * data = {fd1, -1, fd2} * If index [0,1] is previously set, two count = 1 ioctls calls would be * required to set [0,0] and [0,2] without changing [0,1]. * * Once a signaling mechanism is set, DATA_BOOL or DATA_NONE can be used * with ACTION_TRIGGER to perform kernel level interrupt loopback testing * from userspace (ie. simulate hardware triggering). * * Setting of an event triggering mechanism to userspace for ACTION_TRIGGER * enables the interrupt index for the device. Individual subindex interrupts * can be disabled using the -1 value for DATA_EVENTFD or the index can be * disabled as a whole with: flags = (DATA_NONE|ACTION_TRIGGER), count = 0. * * Note that ACTION_[UN]MASK specify user->kernel signaling (irqfds) while * ACTION_TRIGGER specifies kernel->user signaling. */ struct vfio_irq_set { __u32 argsz; __u32 flags; #define VFIO_IRQ_SET_DATA_NONE (1 << 0) /* Data not present */ #define VFIO_IRQ_SET_DATA_BOOL (1 << 1) /* Data is bool (u8) */ #define VFIO_IRQ_SET_DATA_EVENTFD (1 << 2) /* Data is eventfd (s32) */ #define VFIO_IRQ_SET_ACTION_MASK (1 << 3) /* Mask interrupt */ #define VFIO_IRQ_SET_ACTION_UNMASK (1 << 4) /* Unmask interrupt */ #define VFIO_IRQ_SET_ACTION_TRIGGER (1 << 5) /* Trigger interrupt */ __u32 index; __u32 start; __u32 count; __u8 data[]; }; #define VFIO_DEVICE_SET_IRQS _IO(VFIO_TYPE, VFIO_BASE + 10) #define VFIO_IRQ_SET_DATA_TYPE_MASK (VFIO_IRQ_SET_DATA_NONE | \ VFIO_IRQ_SET_DATA_BOOL | \ VFIO_IRQ_SET_DATA_EVENTFD) #define VFIO_IRQ_SET_ACTION_TYPE_MASK (VFIO_IRQ_SET_ACTION_MASK | \ VFIO_IRQ_SET_ACTION_UNMASK | \ VFIO_IRQ_SET_ACTION_TRIGGER) /** * VFIO_DEVICE_RESET - _IO(VFIO_TYPE, VFIO_BASE + 11) * * Reset a device. */ #define VFIO_DEVICE_RESET _IO(VFIO_TYPE, VFIO_BASE + 11) /* * The VFIO-PCI bus driver makes use of the following fixed region and * IRQ index mapping. Unimplemented regions return a size of zero. * Unimplemented IRQ types return a count of zero. */ enum { VFIO_PCI_BAR0_REGION_INDEX, VFIO_PCI_BAR1_REGION_INDEX, VFIO_PCI_BAR2_REGION_INDEX, VFIO_PCI_BAR3_REGION_INDEX, VFIO_PCI_BAR4_REGION_INDEX, VFIO_PCI_BAR5_REGION_INDEX, VFIO_PCI_ROM_REGION_INDEX, VFIO_PCI_CONFIG_REGION_INDEX, /* * Expose VGA regions defined for PCI base class 03, subclass 00. * This includes I/O port ranges 0x3b0 to 0x3bb and 0x3c0 to 0x3df * as well as the MMIO range 0xa0000 to 0xbffff. Each implemented * range is found at it's identity mapped offset from the region * offset, for example 0x3b0 is region_info.offset + 0x3b0. Areas * between described ranges are unimplemented. */ VFIO_PCI_VGA_REGION_INDEX, VFIO_PCI_NUM_REGIONS = 9 /* Fixed user ABI, region indexes >=9 use */ /* device specific cap to define content. */ }; enum { VFIO_PCI_INTX_IRQ_INDEX, VFIO_PCI_MSI_IRQ_INDEX, VFIO_PCI_MSIX_IRQ_INDEX, VFIO_PCI_ERR_IRQ_INDEX, VFIO_PCI_REQ_IRQ_INDEX, VFIO_PCI_NUM_IRQS }; /** * VFIO_DEVICE_GET_PCI_HOT_RESET_INFO - _IORW(VFIO_TYPE, VFIO_BASE + 12, * struct vfio_pci_hot_reset_info) * * Return: 0 on success, -errno on failure: * -enospc = insufficient buffer, -enodev = unsupported for device. */ struct vfio_pci_dependent_device { __u32 group_id; __u16 segment; __u8 bus; __u8 devfn; /* Use PCI_SLOT/PCI_FUNC */ }; struct vfio_pci_hot_reset_info { __u32 argsz; __u32 flags; __u32 count; struct vfio_pci_dependent_device devices[]; }; #define VFIO_DEVICE_GET_PCI_HOT_RESET_INFO _IO(VFIO_TYPE, VFIO_BASE + 12) /** * VFIO_DEVICE_PCI_HOT_RESET - _IOW(VFIO_TYPE, VFIO_BASE + 13, * struct vfio_pci_hot_reset) * * Return: 0 on success, -errno on failure. */ struct vfio_pci_hot_reset { __u32 argsz; __u32 flags; __u32 count; __s32 group_fds[]; }; #define VFIO_DEVICE_PCI_HOT_RESET _IO(VFIO_TYPE, VFIO_BASE + 13) /* -------- API for Type1 VFIO IOMMU -------- */ /** * VFIO_IOMMU_GET_INFO - _IOR(VFIO_TYPE, VFIO_BASE + 12, struct vfio_iommu_info) * * Retrieve information about the IOMMU object. Fills in provided * struct vfio_iommu_info. Caller sets argsz. * * XXX Should we do these by CHECK_EXTENSION too? */ struct vfio_iommu_type1_info { __u32 argsz; __u32 flags; #define VFIO_IOMMU_INFO_PGSIZES (1 << 0) /* supported page sizes info */ __u64 iova_pgsizes; /* Bitmap of supported page sizes */ }; #define VFIO_IOMMU_GET_INFO _IO(VFIO_TYPE, VFIO_BASE + 12) /** * VFIO_IOMMU_MAP_DMA - _IOW(VFIO_TYPE, VFIO_BASE + 13, struct vfio_dma_map) * * Map process virtual addresses to IO virtual addresses using the * provided struct vfio_dma_map. Caller sets argsz. READ &/ WRITE required. */ struct vfio_iommu_type1_dma_map { __u32 argsz; __u32 flags; #define VFIO_DMA_MAP_FLAG_READ (1 << 0) /* readable from device */ #define VFIO_DMA_MAP_FLAG_WRITE (1 << 1) /* writable from device */ __u64 vaddr; /* Process virtual address */ __u64 iova; /* IO virtual address */ __u64 size; /* Size of mapping (bytes) */ }; #define VFIO_IOMMU_MAP_DMA _IO(VFIO_TYPE, VFIO_BASE + 13) /** * VFIO_IOMMU_UNMAP_DMA - _IOWR(VFIO_TYPE, VFIO_BASE + 14, * struct vfio_dma_unmap) * * Unmap IO virtual addresses using the provided struct vfio_dma_unmap. * Caller sets argsz. The actual unmapped size is returned in the size * field. No guarantee is made to the user that arbitrary unmaps of iova * or size different from those used in the original mapping call will * succeed. */ struct vfio_iommu_type1_dma_unmap { __u32 argsz; __u32 flags; __u64 iova; /* IO virtual address */ __u64 size; /* Size of mapping (bytes) */ }; #define VFIO_IOMMU_UNMAP_DMA _IO(VFIO_TYPE, VFIO_BASE + 14) /* * IOCTLs to enable/disable IOMMU container usage. * No parameters are supported. */ #define VFIO_IOMMU_ENABLE _IO(VFIO_TYPE, VFIO_BASE + 15) #define VFIO_IOMMU_DISABLE _IO(VFIO_TYPE, VFIO_BASE + 16) /* -------- Additional API for SPAPR TCE (Server POWERPC) IOMMU -------- */ /* * The SPAPR TCE DDW info struct provides the information about * the details of Dynamic DMA window capability. * * @pgsizes contains a page size bitmask, 4K/64K/16M are supported. * @max_dynamic_windows_supported tells the maximum number of windows * which the platform can create. * @levels tells the maximum number of levels in multi-level IOMMU tables; * this allows splitting a table into smaller chunks which reduces * the amount of physically contiguous memory required for the table. */ struct vfio_iommu_spapr_tce_ddw_info { __u64 pgsizes; /* Bitmap of supported page sizes */ __u32 max_dynamic_windows_supported; __u32 levels; }; /* * The SPAPR TCE info struct provides the information about the PCI bus * address ranges available for DMA, these values are programmed into * the hardware so the guest has to know that information. * * The DMA 32 bit window start is an absolute PCI bus address. * The IOVA address passed via map/unmap ioctls are absolute PCI bus * addresses too so the window works as a filter rather than an offset * for IOVA addresses. * * Flags supported: * - VFIO_IOMMU_SPAPR_INFO_DDW: informs the userspace that dynamic DMA windows * (DDW) support is present. @ddw is only supported when DDW is present. */ struct vfio_iommu_spapr_tce_info { __u32 argsz; __u32 flags; #define VFIO_IOMMU_SPAPR_INFO_DDW (1 << 0) /* DDW supported */ __u32 dma32_window_start; /* 32 bit window start (bytes) */ __u32 dma32_window_size; /* 32 bit window size (bytes) */ struct vfio_iommu_spapr_tce_ddw_info ddw; }; #define VFIO_IOMMU_SPAPR_TCE_GET_INFO _IO(VFIO_TYPE, VFIO_BASE + 12) /* * EEH PE operation struct provides ways to: * - enable/disable EEH functionality; * - unfreeze IO/DMA for frozen PE; * - read PE state; * - reset PE; * - configure PE. */ struct vfio_eeh_pe_op { __u32 argsz; __u32 flags; __u32 op; }; #define VFIO_EEH_PE_DISABLE 0 /* Disable EEH functionality */ #define VFIO_EEH_PE_ENABLE 1 /* Enable EEH functionality */ #define VFIO_EEH_PE_UNFREEZE_IO 2 /* Enable IO for frozen PE */ #define VFIO_EEH_PE_UNFREEZE_DMA 3 /* Enable DMA for frozen PE */ #define VFIO_EEH_PE_GET_STATE 4 /* PE state retrieval */ #define VFIO_EEH_PE_STATE_NORMAL 0 /* PE in functional state */ #define VFIO_EEH_PE_STATE_RESET 1 /* PE reset in progress */ #define VFIO_EEH_PE_STATE_STOPPED 2 /* Stopped DMA and IO */ #define VFIO_EEH_PE_STATE_STOPPED_DMA 4 /* Stopped DMA only */ #define VFIO_EEH_PE_STATE_UNAVAIL 5 /* State unavailable */ #define VFIO_EEH_PE_RESET_DEACTIVATE 5 /* Deassert PE reset */ #define VFIO_EEH_PE_RESET_HOT 6 /* Assert hot reset */ #define VFIO_EEH_PE_RESET_FUNDAMENTAL 7 /* Assert fundamental reset */ #define VFIO_EEH_PE_CONFIGURE 8 /* PE configuration */ #define VFIO_EEH_PE_OP _IO(VFIO_TYPE, VFIO_BASE + 21) /** * VFIO_IOMMU_SPAPR_REGISTER_MEMORY - _IOW(VFIO_TYPE, VFIO_BASE + 17, struct vfio_iommu_spapr_register_memory) * * Registers user space memory where DMA is allowed. It pins * user pages and does the locked memory accounting so * subsequent VFIO_IOMMU_MAP_DMA/VFIO_IOMMU_UNMAP_DMA calls * get faster. */ struct vfio_iommu_spapr_register_memory { __u32 argsz; __u32 flags; __u64 vaddr; /* Process virtual address */ __u64 size; /* Size of mapping (bytes) */ }; #define VFIO_IOMMU_SPAPR_REGISTER_MEMORY _IO(VFIO_TYPE, VFIO_BASE + 17) /** * VFIO_IOMMU_SPAPR_UNREGISTER_MEMORY - _IOW(VFIO_TYPE, VFIO_BASE + 18, struct vfio_iommu_spapr_register_memory) * * Unregisters user space memory registered with * VFIO_IOMMU_SPAPR_REGISTER_MEMORY. * Uses vfio_iommu_spapr_register_memory for parameters. */ #define VFIO_IOMMU_SPAPR_UNREGISTER_MEMORY _IO(VFIO_TYPE, VFIO_BASE + 18) /** * VFIO_IOMMU_SPAPR_TCE_CREATE - _IOWR(VFIO_TYPE, VFIO_BASE + 19, struct vfio_iommu_spapr_tce_create) * * Creates an additional TCE table and programs it (sets a new DMA window) * to every IOMMU group in the container. It receives page shift, window * size and number of levels in the TCE table being created. * * It allocates and returns an offset on a PCI bus of the new DMA window. */ struct vfio_iommu_spapr_tce_create { __u32 argsz; __u32 flags; /* in */ __u32 page_shift; __u64 window_size; __u32 levels; /* out */ __u64 start_addr; }; #define VFIO_IOMMU_SPAPR_TCE_CREATE _IO(VFIO_TYPE, VFIO_BASE + 19) /** * VFIO_IOMMU_SPAPR_TCE_REMOVE - _IOW(VFIO_TYPE, VFIO_BASE + 20, struct vfio_iommu_spapr_tce_remove) * * Unprograms a TCE table from all groups in the container and destroys it. * It receives a PCI bus offset as a window id. */ struct vfio_iommu_spapr_tce_remove { __u32 argsz; __u32 flags; /* in */ __u64 start_addr; }; #define VFIO_IOMMU_SPAPR_TCE_REMOVE _IO(VFIO_TYPE, VFIO_BASE + 20) /* ***************************************************************** */ #endif /* VFIO_H */
Save