Linux localhost 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64
Apache/2.4.41 (Ubuntu)
: 23.92.16.63 | : 172.71.203.60
Cant Read [ /etc/named.conf ]
8.1.5
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
/
usr /
src /
linux-headers-5.4.0-198 /
include /
linux /
[ HOME SHELL ]
Name
Size
Permission
Action
amba
[ DIR ]
drwxr-xr-x
avf
[ DIR ]
drwxr-xr-x
bcma
[ DIR ]
drwxr-xr-x
byteorder
[ DIR ]
drwxr-xr-x
can
[ DIR ]
drwxr-xr-x
ceph
[ DIR ]
drwxr-xr-x
clk
[ DIR ]
drwxr-xr-x
crush
[ DIR ]
drwxr-xr-x
decompress
[ DIR ]
drwxr-xr-x
dma
[ DIR ]
drwxr-xr-x
dsa
[ DIR ]
drwxr-xr-x
extcon
[ DIR ]
drwxr-xr-x
firmware
[ DIR ]
drwxr-xr-x
fpga
[ DIR ]
drwxr-xr-x
fsl
[ DIR ]
drwxr-xr-x
gpio
[ DIR ]
drwxr-xr-x
greybus
[ DIR ]
drwxr-xr-x
hsi
[ DIR ]
drwxr-xr-x
i3c
[ DIR ]
drwxr-xr-x
iio
[ DIR ]
drwxr-xr-x
input
[ DIR ]
drwxr-xr-x
irqchip
[ DIR ]
drwxr-xr-x
isdn
[ DIR ]
drwxr-xr-x
lockd
[ DIR ]
drwxr-xr-x
mailbox
[ DIR ]
drwxr-xr-x
mdio
[ DIR ]
drwxr-xr-x
mfd
[ DIR ]
drwxr-xr-x
mlx4
[ DIR ]
drwxr-xr-x
mlx5
[ DIR ]
drwxr-xr-x
mmc
[ DIR ]
drwxr-xr-x
mtd
[ DIR ]
drwxr-xr-x
mux
[ 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
perf
[ DIR ]
drwxr-xr-x
phy
[ DIR ]
drwxr-xr-x
pinctrl
[ DIR ]
drwxr-xr-x
platform_data
[ DIR ]
drwxr-xr-x
power
[ DIR ]
drwxr-xr-x
qed
[ DIR ]
drwxr-xr-x
raid
[ DIR ]
drwxr-xr-x
regulator
[ DIR ]
drwxr-xr-x
remoteproc
[ DIR ]
drwxr-xr-x
reset
[ DIR ]
drwxr-xr-x
rpmsg
[ DIR ]
drwxr-xr-x
rtc
[ DIR ]
drwxr-xr-x
sched
[ DIR ]
drwxr-xr-x
soc
[ DIR ]
drwxr-xr-x
soundwire
[ DIR ]
drwxr-xr-x
spi
[ DIR ]
drwxr-xr-x
ssb
[ DIR ]
drwxr-xr-x
sunrpc
[ DIR ]
drwxr-xr-x
ulpi
[ DIR ]
drwxr-xr-x
unaligned
[ DIR ]
drwxr-xr-x
usb
[ DIR ]
drwxr-xr-x
wimax
[ DIR ]
drwxr-xr-x
8250_pci.h
1.01
KB
-rw-r--r--
a.out.h
354
B
-rw-r--r--
acct.h
2.49
KB
-rw-r--r--
acpi.h
37.08
KB
-rw-r--r--
acpi_dma.h
3.08
KB
-rw-r--r--
acpi_iort.h
2.22
KB
-rw-r--r--
acpi_pmtmr.h
674
B
-rw-r--r--
adb.h
1.79
KB
-rw-r--r--
adfs_fs.h
574
B
-rw-r--r--
adxl.h
310
B
-rw-r--r--
aer.h
1.73
KB
-rw-r--r--
agp_backend.h
3.45
KB
-rw-r--r--
agpgart.h
3.82
KB
-rw-r--r--
ahci-remap.h
607
B
-rw-r--r--
ahci_platform.h
1.54
KB
-rw-r--r--
aio.h
651
B
-rw-r--r--
alarmtimer.h
1.83
KB
-rw-r--r--
alcor_pci.h
8.8
KB
-rw-r--r--
altera_jtaguart.h
379
B
-rw-r--r--
altera_uart.h
397
B
-rw-r--r--
amd-iommu.h
6.45
KB
-rw-r--r--
anon_inodes.h
494
B
-rw-r--r--
apm-emulation.h
1.56
KB
-rw-r--r--
apm_bios.h
2.25
KB
-rw-r--r--
apple-gmux.h
918
B
-rw-r--r--
apple_bl.h
498
B
-rw-r--r--
arch_topology.h
1.64
KB
-rw-r--r--
arm-cci.h
1.36
KB
-rw-r--r--
arm-smccc.h
12.39
KB
-rw-r--r--
arm_sdei.h
2.59
KB
-rw-r--r--
armada-37xx-rwtm-mailbox.h
432
B
-rw-r--r--
ascii85.h
532
B
-rw-r--r--
asn1.h
1.79
KB
-rw-r--r--
asn1_ber_bytecode.h
2.52
KB
-rw-r--r--
asn1_decoder.h
468
B
-rw-r--r--
assoc_array.h
2.88
KB
-rw-r--r--
assoc_array_priv.h
5.3
KB
-rw-r--r--
async.h
4.32
KB
-rw-r--r--
async_tx.h
6.21
KB
-rw-r--r--
ata.h
32.95
KB
-rw-r--r--
ata_platform.h
749
B
-rw-r--r--
atalk.h
4.48
KB
-rw-r--r--
ath9k_platform.h
1.44
KB
-rw-r--r--
atm.h
287
B
-rw-r--r--
atm_suni.h
253
B
-rw-r--r--
atm_tcp.h
511
B
-rw-r--r--
atmdev.h
10.21
KB
-rw-r--r--
atmel-mci.h
1.4
KB
-rw-r--r--
atmel-ssc.h
9.74
KB
-rw-r--r--
atmel_pdc.h
1.26
KB
-rw-r--r--
atomic-fallback.h
52.3
KB
-rw-r--r--
atomic.h
2.2
KB
-rw-r--r--
attribute_container.h
2.47
KB
-rw-r--r--
audit.h
18.23
KB
-rw-r--r--
auto_dev-ioctl.h
296
B
-rw-r--r--
auto_fs.h
278
B
-rw-r--r--
auxvec.h
304
B
-rw-r--r--
average.h
2.42
KB
-rw-r--r--
b1pcmcia.h
666
B
-rw-r--r--
backing-dev-defs.h
9.33
KB
-rw-r--r--
backing-dev.h
13.92
KB
-rw-r--r--
backlight.h
6.37
KB
-rw-r--r--
badblocks.h
2.14
KB
-rw-r--r--
balloon_compaction.h
6.59
KB
-rw-r--r--
bcd.h
559
B
-rw-r--r--
bch.h
2
KB
-rw-r--r--
bcm47xx_nvram.h
1.01
KB
-rw-r--r--
bcm47xx_sprom.h
386
B
-rw-r--r--
bcm47xx_wdt.h
555
B
-rw-r--r--
bcm963xx_nvram.h
2.96
KB
-rw-r--r--
bcm963xx_tag.h
3.6
KB
-rw-r--r--
binfmts.h
5.15
KB
-rw-r--r--
bio.h
20.71
KB
-rw-r--r--
bit_spinlock.h
2.3
KB
-rw-r--r--
bitfield.h
4.89
KB
-rw-r--r--
bitmap.h
18.41
KB
-rw-r--r--
bitops.h
6.99
KB
-rw-r--r--
bitrev.h
2.53
KB
-rw-r--r--
bits.h
883
B
-rw-r--r--
blk-cgroup.h
25.69
KB
-rw-r--r--
blk-mq-pci.h
269
B
-rw-r--r--
blk-mq-rdma.h
273
B
-rw-r--r--
blk-mq-virtio.h
293
B
-rw-r--r--
blk-mq.h
11.4
KB
-rw-r--r--
blk-pm.h
717
B
-rw-r--r--
blk_types.h
13.13
KB
-rw-r--r--
blkdev.h
52.41
KB
-rw-r--r--
blkpg.h
436
B
-rw-r--r--
blktrace_api.h
3.87
KB
-rw-r--r--
blockgroup_lock.h
810
B
-rw-r--r--
bma150.h
1.26
KB
-rw-r--r--
bottom_half.h
803
B
-rw-r--r--
bpf-cgroup.h
13.81
KB
-rw-r--r--
bpf.h
36.68
KB
-rw-r--r--
bpf_lirc.h
698
B
-rw-r--r--
bpf_trace.h
166
B
-rw-r--r--
bpf_types.h
3.15
KB
-rw-r--r--
bpf_verifier.h
15.18
KB
-rw-r--r--
bpfilter.h
728
B
-rw-r--r--
brcmphy.h
10.8
KB
-rw-r--r--
bsearch.h
275
B
-rw-r--r--
bsg-lib.h
1.7
KB
-rw-r--r--
bsg.h
1012
B
-rw-r--r--
btf.h
2.32
KB
-rw-r--r--
btree-128.h
2.67
KB
-rw-r--r--
btree-type.h
3.9
KB
-rw-r--r--
btree.h
6.83
KB
-rw-r--r--
btrfs.h
145
B
-rw-r--r--
buffer_head.h
14.4
KB
-rw-r--r--
bug.h
1.92
KB
-rw-r--r--
build-salt.h
375
B
-rw-r--r--
build_bug.h
2.86
KB
-rw-r--r--
bvec.h
4.72
KB
-rw-r--r--
c2port.h
1.35
KB
-rw-r--r--
cache.h
2.13
KB
-rw-r--r--
cacheinfo.h
3.32
KB
-rw-r--r--
capability.h
7.79
KB
-rw-r--r--
cb710.h
5.36
KB
-rw-r--r--
cciss_ioctl.h
1.03
KB
-rw-r--r--
ccp.h
18.12
KB
-rw-r--r--
cdev.h
845
B
-rw-r--r--
cdrom.h
8.78
KB
-rw-r--r--
cfag12864b.h
1.46
KB
-rw-r--r--
cgroup-defs.h
26.87
KB
-rw-r--r--
cgroup.h
28.89
KB
-rw-r--r--
cgroup_rdma.h
1.18
KB
-rw-r--r--
cgroup_subsys.h
1.17
KB
-rw-r--r--
circ_buf.h
1.09
KB
-rw-r--r--
cleancache.h
3.89
KB
-rw-r--r--
clk-provider.h
40.26
KB
-rw-r--r--
clk.h
31.76
KB
-rw-r--r--
clkdev.h
1.52
KB
-rw-r--r--
clock_cooling.h
1.65
KB
-rw-r--r--
clockchips.h
7.27
KB
-rw-r--r--
clocksource.h
8.56
KB
-rw-r--r--
cm4000_cs.h
199
B
-rw-r--r--
cma.h
1.18
KB
-rw-r--r--
cmdline-parser.h
1.21
KB
-rw-r--r--
cn_proc.h
1.85
KB
-rw-r--r--
cnt32_to_63.h
3.46
KB
-rw-r--r--
coda.h
2.16
KB
-rw-r--r--
compaction.h
7.33
KB
-rw-r--r--
compat.h
31.51
KB
-rw-r--r--
compiler-clang.h
1.35
KB
-rw-r--r--
compiler-gcc.h
4.9
KB
-rw-r--r--
compiler-intel.h
949
B
-rw-r--r--
compiler.h
13.4
KB
-rw-r--r--
compiler_attributes.h
11.49
KB
-rw-r--r--
compiler_types.h
7.44
KB
-rw-r--r--
completion.h
4.05
KB
-rw-r--r--
component.h
4.07
KB
-rw-r--r--
configfs.h
8.56
KB
-rw-r--r--
connector.h
3.8
KB
-rw-r--r--
console.h
7.45
KB
-rw-r--r--
console_struct.h
6.79
KB
-rw-r--r--
consolemap.h
1.04
KB
-rw-r--r--
const.h
157
B
-rw-r--r--
container.h
610
B
-rw-r--r--
context_tracking.h
4.43
KB
-rw-r--r--
context_tracking_state.h
1.39
KB
-rw-r--r--
cordic.h
2.08
KB
-rw-r--r--
coredump.h
797
B
-rw-r--r--
coresight-pmu.h
989
B
-rw-r--r--
coresight-stm.h
152
B
-rw-r--r--
coresight.h
10.2
KB
-rw-r--r--
count_zeros.h
1.42
KB
-rw-r--r--
counter.h
16.86
KB
-rw-r--r--
counter_enum.h
1.43
KB
-rw-r--r--
cper.h
15.64
KB
-rw-r--r--
cpu.h
7.63
KB
-rw-r--r--
cpu_cooling.h
1.72
KB
-rw-r--r--
cpu_pm.h
2.38
KB
-rw-r--r--
cpu_rmap.h
1.68
KB
-rw-r--r--
cpufeature.h
1.71
KB
-rw-r--r--
cpufreq.h
30.02
KB
-rw-r--r--
cpuhotplug.h
12.32
KB
-rw-r--r--
cpuidle.h
9.81
KB
-rw-r--r--
cpuidle_haltpoll.h
312
B
-rw-r--r--
cpumask.h
26.36
KB
-rw-r--r--
cpuset.h
7.29
KB
-rw-r--r--
crash_core.h
3.06
KB
-rw-r--r--
crash_dump.h
4.02
KB
-rw-r--r--
crc-ccitt.h
609
B
-rw-r--r--
crc-itu-t.h
531
B
-rw-r--r--
crc-t10dif.h
453
B
-rw-r--r--
crc16.h
540
B
-rw-r--r--
crc32.h
2.83
KB
-rw-r--r--
crc32c.h
331
B
-rw-r--r--
crc32poly.h
610
B
-rw-r--r--
crc4.h
192
B
-rw-r--r--
crc64.h
280
B
-rw-r--r--
crc7.h
316
B
-rw-r--r--
crc8.h
3.65
KB
-rw-r--r--
cred.h
12.34
KB
-rw-r--r--
crypto.h
63.01
KB
-rw-r--r--
cryptohash.h
319
B
-rw-r--r--
cs5535.h
6.13
KB
-rw-r--r--
ctype.h
1.75
KB
-rw-r--r--
cuda.h
613
B
-rw-r--r--
cyclades.h
10.36
KB
-rw-r--r--
davinci_emac.h
1.05
KB
-rw-r--r--
dax.h
7.21
KB
-rw-r--r--
dca.h
1.88
KB
-rw-r--r--
dcache.h
18.32
KB
-rw-r--r--
dccp.h
10.73
KB
-rw-r--r--
dcookies.h
1.3
KB
-rw-r--r--
debug_locks.h
1.54
KB
-rw-r--r--
debugfs.h
11.28
KB
-rw-r--r--
debugobjects.h
3.89
KB
-rw-r--r--
delay.h
1.88
KB
-rw-r--r--
delayacct.h
5.26
KB
-rw-r--r--
delayed_call.h
709
B
-rw-r--r--
devcoredump.h
2.21
KB
-rw-r--r--
devfreq-event.h
5.82
KB
-rw-r--r--
devfreq.h
13.06
KB
-rw-r--r--
devfreq_cooling.h
3.54
KB
-rw-r--r--
device-mapper.h
17.4
KB
-rw-r--r--
device.h
67.82
KB
-rw-r--r--
device_cgroup.h
1.86
KB
-rw-r--r--
devpts_fs.h
1.13
KB
-rw-r--r--
digsig.h
1.19
KB
-rw-r--r--
dim.h
8.81
KB
-rw-r--r--
dio.h
10.97
KB
-rw-r--r--
dirent.h
216
B
-rw-r--r--
dlm.h
5.86
KB
-rw-r--r--
dlm_plock.h
532
B
-rw-r--r--
dm-bufio.h
4.51
KB
-rw-r--r--
dm-dirty-log.h
3.94
KB
-rw-r--r--
dm-io.h
1.93
KB
-rw-r--r--
dm-kcopyd.h
2.89
KB
-rw-r--r--
dm-region-hash.h
3.11
KB
-rw-r--r--
dm9000.h
987
B
-rw-r--r--
dma-buf.h
14.57
KB
-rw-r--r--
dma-contiguous.h
4.73
KB
-rw-r--r--
dma-debug.h
4.18
KB
-rw-r--r--
dma-direct.h
2.69
KB
-rw-r--r--
dma-direction.h
220
B
-rw-r--r--
dma-fence-array.h
2.14
KB
-rw-r--r--
dma-fence-chain.h
2.04
KB
-rw-r--r--
dma-fence.h
19.71
KB
-rw-r--r--
dma-iommu.h
1.94
KB
-rw-r--r--
dma-mapping.h
29.05
KB
-rw-r--r--
dma-noncoherent.h
3.36
KB
-rw-r--r--
dma-resv.h
9.16
KB
-rw-r--r--
dmaengine.h
45.86
KB
-rw-r--r--
dmapool.h
1.79
KB
-rw-r--r--
dmar.h
7.5
KB
-rw-r--r--
dmi.h
4.07
KB
-rw-r--r--
dnotify.h
1.02
KB
-rw-r--r--
dns_resolver.h
1.36
KB
-rw-r--r--
dqblk_qtree.h
2.19
KB
-rw-r--r--
dqblk_v1.h
327
B
-rw-r--r--
dqblk_v2.h
406
B
-rw-r--r--
drbd.h
10.07
KB
-rw-r--r--
drbd_genl.h
21.49
KB
-rw-r--r--
drbd_genl_api.h
1.77
KB
-rw-r--r--
drbd_limits.h
7.82
KB
-rw-r--r--
ds2782_battery.h
158
B
-rw-r--r--
dtlk.h
3.5
KB
-rw-r--r--
dw_apb_timer.h
1.56
KB
-rw-r--r--
dynamic_debug.h
6.06
KB
-rw-r--r--
dynamic_queue_limits.h
3.7
KB
-rw-r--r--
earlycpio.h
359
B
-rw-r--r--
ecryptfs.h
3.82
KB
-rw-r--r--
edac.h
20.33
KB
-rw-r--r--
edd.h
1.05
KB
-rw-r--r--
eeprom_93cx6.h
2.31
KB
-rw-r--r--
eeprom_93xx46.h
879
B
-rw-r--r--
efi-bgrt.h
644
B
-rw-r--r--
efi.h
53.96
KB
-rw-r--r--
efs_vh.h
1.55
KB
-rw-r--r--
eisa.h
2.96
KB
-rw-r--r--
elevator.h
5.37
KB
-rw-r--r--
elf-fdpic.h
1.98
KB
-rw-r--r--
elf-randomize.h
583
B
-rw-r--r--
elf.h
1.53
KB
-rw-r--r--
elfcore-compat.h
1.23
KB
-rw-r--r--
elfcore.h
2.52
KB
-rw-r--r--
elfnote.h
3.54
KB
-rw-r--r--
enclosure.h
4.02
KB
-rw-r--r--
energy_model.h
6.47
KB
-rw-r--r--
err.h
1.55
KB
-rw-r--r--
errno.h
1.39
KB
-rw-r--r--
error-injection.h
607
B
-rw-r--r--
errqueue.h
524
B
-rw-r--r--
errseq.h
382
B
-rw-r--r--
etherdevice.h
16.97
KB
-rw-r--r--
ethtool.h
17.89
KB
-rw-r--r--
eventfd.h
2.12
KB
-rw-r--r--
eventpoll.h
1.95
KB
-rw-r--r--
evm.h
2.65
KB
-rw-r--r--
export.h
6.16
KB
-rw-r--r--
exportfs.h
7.46
KB
-rw-r--r--
ext2_fs.h
967
B
-rw-r--r--
extable.h
1.06
KB
-rw-r--r--
extcon-provider.h
3.92
KB
-rw-r--r--
extcon.h
10.18
KB
-rw-r--r--
f2fs_fs.h
18.66
KB
-rw-r--r--
f75375s.h
541
B
-rw-r--r--
falloc.h
792
B
-rw-r--r--
fanotify.h
2.66
KB
-rw-r--r--
fault-inject.h
1.93
KB
-rw-r--r--
fb.h
27.82
KB
-rw-r--r--
fbcon.h
2.09
KB
-rw-r--r--
fcdevice.h
774
B
-rw-r--r--
fcntl.h
1.29
KB
-rw-r--r--
fd.h
490
B
-rw-r--r--
fddidevice.h
833
B
-rw-r--r--
fdtable.h
3.34
KB
-rw-r--r--
fec.h
463
B
-rw-r--r--
file.h
2.24
KB
-rw-r--r--
filter.h
33.79
KB
-rw-r--r--
fips.h
303
B
-rw-r--r--
firewire.h
13.4
KB
-rw-r--r--
firmware-map.h
959
B
-rw-r--r--
firmware.h
2.66
KB
-rw-r--r--
fixp-arith.h
3.76
KB
-rw-r--r--
flat.h
2.57
KB
-rw-r--r--
flex_proportions.h
2.81
KB
-rw-r--r--
font.h
1.6
KB
-rw-r--r--
frame.h
1.12
KB
-rw-r--r--
freezer.h
8.67
KB
-rw-r--r--
frontswap.h
3.05
KB
-rw-r--r--
fs.h
118.32
KB
-rw-r--r--
fs_context.h
7.8
KB
-rw-r--r--
fs_enet_pd.h
3.38
KB
-rw-r--r--
fs_parser.h
4.6
KB
-rw-r--r--
fs_pin.h
539
B
-rw-r--r--
fs_stack.h
811
B
-rw-r--r--
fs_struct.h
1.03
KB
-rw-r--r--
fs_types.h
2.02
KB
-rw-r--r--
fs_uart_pd.h
1.49
KB
-rw-r--r--
fscache-cache.h
18.6
KB
-rw-r--r--
fscache.h
28.68
KB
-rw-r--r--
fscrypt.h
25.72
KB
-rw-r--r--
fsi-occ.h
681
B
-rw-r--r--
fsi-sbefifo.h
629
B
-rw-r--r--
fsi.h
2.26
KB
-rw-r--r--
fsl-diu-fb.h
3.87
KB
-rw-r--r--
fsl_devices.h
4.16
KB
-rw-r--r--
fsl_hypervisor.h
2.76
KB
-rw-r--r--
fsl_ifc.h
24.48
KB
-rw-r--r--
fsldma.h
202
B
-rw-r--r--
fsnotify.h
9.45
KB
-rw-r--r--
fsnotify_backend.h
20.3
KB
-rw-r--r--
fsverity.h
5.97
KB
-rw-r--r--
ftrace.h
30.13
KB
-rw-r--r--
ftrace_irq.h
823
B
-rw-r--r--
futex.h
2.44
KB
-rw-r--r--
fwnode.h
4.42
KB
-rw-r--r--
gameport.h
5.42
KB
-rw-r--r--
gcd.h
193
B
-rw-r--r--
genalloc.h
7.67
KB
-rw-r--r--
generic-radix-tree.h
6.36
KB
-rw-r--r--
genetlink.h
1.35
KB
-rw-r--r--
genhd.h
24.04
KB
-rw-r--r--
genl_magic_func.h
11.59
KB
-rw-r--r--
genl_magic_struct.h
7.66
KB
-rw-r--r--
getcpu.h
641
B
-rw-r--r--
gfp.h
23.94
KB
-rw-r--r--
glob.h
256
B
-rw-r--r--
gnss.h
1.56
KB
-rw-r--r--
goldfish.h
738
B
-rw-r--r--
gpio-pxa.h
571
B
-rw-r--r--
gpio.h
5.35
KB
-rw-r--r--
gpio_keys.h
1.74
KB
-rw-r--r--
greybus.h
4.14
KB
-rw-r--r--
hardirq.h
1.95
KB
-rw-r--r--
hash.h
3
KB
-rw-r--r--
hashtable.h
6.63
KB
-rw-r--r--
hdlc.h
3.19
KB
-rw-r--r--
hdlcdrv.h
6.32
KB
-rw-r--r--
hdmi.h
12.26
KB
-rw-r--r--
hid-debug.h
1.42
KB
-rw-r--r--
hid-roccat.h
484
B
-rw-r--r--
hid-sensor-hub.h
8.64
KB
-rw-r--r--
hid-sensor-ids.h
6.67
KB
-rw-r--r--
hid.h
36.89
KB
-rw-r--r--
hiddev.h
1.42
KB
-rw-r--r--
hidraw.h
1.12
KB
-rw-r--r--
highmem.h
6.77
KB
-rw-r--r--
highuid.h
3.12
KB
-rw-r--r--
hil.h
18.42
KB
-rw-r--r--
hil_mlc.h
5.13
KB
-rw-r--r--
hippidevice.h
1.03
KB
-rw-r--r--
hmm.h
14.21
KB
-rw-r--r--
host1x.h
8.22
KB
-rw-r--r--
hp_sdc.h
14.02
KB
-rw-r--r--
hpet.h
2.55
KB
-rw-r--r--
hrtimer.h
15.93
KB
-rw-r--r--
hrtimer_defs.h
660
B
-rw-r--r--
htcpld.h
617
B
-rw-r--r--
huge_mm.h
12.06
KB
-rw-r--r--
hugetlb.h
19.64
KB
-rw-r--r--
hugetlb_cgroup.h
2.93
KB
-rw-r--r--
hugetlb_inline.h
374
B
-rw-r--r--
hw_breakpoint.h
4.1
KB
-rw-r--r--
hw_random.h
2.12
KB
-rw-r--r--
hwmon-sysfs.h
2.77
KB
-rw-r--r--
hwmon-vid.h
862
B
-rw-r--r--
hwmon.h
13.31
KB
-rw-r--r--
hwspinlock.h
15.64
KB
-rw-r--r--
hyperv.h
42.44
KB
-rw-r--r--
hypervisor.h
608
B
-rw-r--r--
i2c-algo-bit.h
1.4
KB
-rw-r--r--
i2c-algo-pca.h
2.89
KB
-rw-r--r--
i2c-algo-pcf.h
1.21
KB
-rw-r--r--
i2c-dev.h
371
B
-rw-r--r--
i2c-mux.h
1.63
KB
-rw-r--r--
i2c-pxa.h
438
B
-rw-r--r--
i2c-smbus.h
1.29
KB
-rw-r--r--
i2c.h
36.51
KB
-rw-r--r--
i8042.h
1.99
KB
-rw-r--r--
i8253.h
809
B
-rw-r--r--
icmp.h
652
B
-rw-r--r--
icmpv6.h
2.5
KB
-rw-r--r--
ide.h
46.21
KB
-rw-r--r--
idle_inject.h
832
B
-rw-r--r--
idr.h
9.39
KB
-rw-r--r--
ieee80211.h
107.09
KB
-rw-r--r--
ieee802154.h
11.12
KB
-rw-r--r--
if_arp.h
1.81
KB
-rw-r--r--
if_bridge.h
3.72
KB
-rw-r--r--
if_eql.h
1.07
KB
-rw-r--r--
if_ether.h
1.26
KB
-rw-r--r--
if_fddi.h
3.24
KB
-rw-r--r--
if_frad.h
2.66
KB
-rw-r--r--
if_link.h
592
B
-rw-r--r--
if_ltalk.h
188
B
-rw-r--r--
if_macvlan.h
2.67
KB
-rw-r--r--
if_phonet.h
319
B
-rw-r--r--
if_pppol2tp.h
516
B
-rw-r--r--
if_pppox.h
2.84
KB
-rw-r--r--
if_rmnet.h
1.14
KB
-rw-r--r--
if_tap.h
2.21
KB
-rw-r--r--
if_team.h
7.94
KB
-rw-r--r--
if_tun.h
1.29
KB
-rw-r--r--
if_tunnel.h
409
B
-rw-r--r--
if_vlan.h
20.73
KB
-rw-r--r--
igmp.h
4.44
KB
-rw-r--r--
ihex.h
2.16
KB
-rw-r--r--
ima.h
3.51
KB
-rw-r--r--
imx-media.h
605
B
-rw-r--r--
in.h
2.29
KB
-rw-r--r--
in6.h
1.63
KB
-rw-r--r--
indirect_call_wrapper.h
1.53
KB
-rw-r--r--
inet.h
2.64
KB
-rw-r--r--
inet_diag.h
2.42
KB
-rw-r--r--
inetdevice.h
8.65
KB
-rw-r--r--
init.h
9.55
KB
-rw-r--r--
init_ohci1394_dma.h
196
B
-rw-r--r--
init_task.h
1.37
KB
-rw-r--r--
initrd.h
836
B
-rw-r--r--
inotify.h
713
B
-rw-r--r--
input-polldev.h
2.03
KB
-rw-r--r--
input.h
19.37
KB
-rw-r--r--
integrity.h
1.13
KB
-rw-r--r--
intel-iommu.h
22.91
KB
-rw-r--r--
intel-ish-client-if.h
3.73
KB
-rw-r--r--
intel-pti.h
1.18
KB
-rw-r--r--
intel-svm.h
4.57
KB
-rw-r--r--
intel_rapl.h
4.12
KB
-rw-r--r--
intel_th.h
2.44
KB
-rw-r--r--
interconnect-provider.h
4.09
KB
-rw-r--r--
interconnect.h
1.68
KB
-rw-r--r--
interrupt.h
22.65
KB
-rw-r--r--
interval_tree.h
831
B
-rw-r--r--
interval_tree_generic.h
6.7
KB
-rw-r--r--
io-64-nonatomic-hi-lo.h
2.4
KB
-rw-r--r--
io-64-nonatomic-lo-hi.h
2.4
KB
-rw-r--r--
io-mapping.h
3.77
KB
-rw-r--r--
io-pgtable.h
7.85
KB
-rw-r--r--
io.h
5.3
KB
-rw-r--r--
ioc3.h
3.14
KB
-rw-r--r--
iocontext.h
4.76
KB
-rw-r--r--
iomap.h
7.18
KB
-rw-r--r--
iommu-helper.h
1.07
KB
-rw-r--r--
iommu.h
31.06
KB
-rw-r--r--
iopoll.h
5.32
KB
-rw-r--r--
ioport.h
11.41
KB
-rw-r--r--
ioprio.h
2.41
KB
-rw-r--r--
iova.h
7.09
KB
-rw-r--r--
ip.h
1
KB
-rw-r--r--
ipack.h
8.69
KB
-rw-r--r--
ipc.h
613
B
-rw-r--r--
ipc_namespace.h
4.96
KB
-rw-r--r--
ipmi-fru.h
3.61
KB
-rw-r--r--
ipmi.h
10.85
KB
-rw-r--r--
ipmi_smi.h
7.98
KB
-rw-r--r--
ipv6.h
9.11
KB
-rw-r--r--
ipv6_route.h
372
B
-rw-r--r--
irq.h
40.32
KB
-rw-r--r--
irq_cpustat.h
845
B
-rw-r--r--
irq_poll.h
575
B
-rw-r--r--
irq_sim.h
985
B
-rw-r--r--
irq_work.h
1.34
KB
-rw-r--r--
irqbypass.h
3.45
KB
-rw-r--r--
irqchip.h
1.54
KB
-rw-r--r--
irqdesc.h
8.21
KB
-rw-r--r--
irqdomain.h
19.84
KB
-rw-r--r--
irqflags.h
5.09
KB
-rw-r--r--
irqhandler.h
362
B
-rw-r--r--
irqnr.h
856
B
-rw-r--r--
irqreturn.h
503
B
-rw-r--r--
isa.h
2.12
KB
-rw-r--r--
isapnp.h
3.14
KB
-rw-r--r--
iscsi_boot_sysfs.h
3.71
KB
-rw-r--r--
iscsi_ibft.h
917
B
-rw-r--r--
isicom.h
1.49
KB
-rw-r--r--
iversion.h
12.12
KB
-rw-r--r--
jbd2.h
46.81
KB
-rw-r--r--
jhash.h
4.62
KB
-rw-r--r--
jiffies.h
15.67
KB
-rw-r--r--
journal-head.h
2.87
KB
-rw-r--r--
joystick.h
437
B
-rw-r--r--
jump_label.h
14.94
KB
-rw-r--r--
jump_label_ratelimit.h
2.77
KB
-rw-r--r--
jz4740-adc.h
1023
B
-rw-r--r--
jz4780-nemc.h
976
B
-rw-r--r--
kallsyms.h
4.27
KB
-rw-r--r--
kasan-checks.h
1.18
KB
-rw-r--r--
kasan.h
5.66
KB
-rw-r--r--
kbd_diacr.h
198
B
-rw-r--r--
kbd_kern.h
3.84
KB
-rw-r--r--
kbuild.h
380
B
-rw-r--r--
kconfig.h
2.42
KB
-rw-r--r--
kcore.h
941
B
-rw-r--r--
kcov.h
1.13
KB
-rw-r--r--
kdb.h
7.3
KB
-rw-r--r--
kdebug.h
487
B
-rw-r--r--
kdev_t.h
1.8
KB
-rw-r--r--
kern_levels.h
1.57
KB
-rw-r--r--
kernel-page-flags.h
505
B
-rw-r--r--
kernel.h
34.31
KB
-rw-r--r--
kernel_stat.h
2.5
KB
-rw-r--r--
kernelcapi.h
4.45
KB
-rw-r--r--
kernfs.h
17.47
KB
-rw-r--r--
kexec.h
11.65
KB
-rw-r--r--
key-type.h
6.45
KB
-rw-r--r--
key.h
15.4
KB
-rw-r--r--
keyboard.h
665
B
-rw-r--r--
keyctl.h
1.25
KB
-rw-r--r--
kfifo.h
24.19
KB
-rw-r--r--
kgdb.h
10.88
KB
-rw-r--r--
khugepaged.h
2.65
KB
-rw-r--r--
klist.h
1.88
KB
-rw-r--r--
kmemleak.h
3.27
KB
-rw-r--r--
kmod.h
1.02
KB
-rw-r--r--
kmsg_dump.h
2.85
KB
-rw-r--r--
kobj_map.h
545
B
-rw-r--r--
kobject.h
7.69
KB
-rw-r--r--
kobject_ns.h
1.89
KB
-rw-r--r--
kprobes.h
13.32
KB
-rw-r--r--
kref.h
3.08
KB
-rw-r--r--
ks0108.h
960
B
-rw-r--r--
ks8842.h
632
B
-rw-r--r--
ks8851_mll.h
472
B
-rw-r--r--
ksm.h
2.69
KB
-rw-r--r--
kthread.h
6.69
KB
-rw-r--r--
ktime.h
6.71
KB
-rw-r--r--
kvm_host.h
41.15
KB
-rw-r--r--
kvm_irqfd.h
1.99
KB
-rw-r--r--
kvm_para.h
402
B
-rw-r--r--
kvm_types.h
1.05
KB
-rw-r--r--
l2tp.h
261
B
-rw-r--r--
lantiq.h
365
B
-rw-r--r--
lapb.h
1.71
KB
-rw-r--r--
latencytop.h
1.18
KB
-rw-r--r--
lcd.h
3.78
KB
-rw-r--r--
lcm.h
275
B
-rw-r--r--
led-class-flash.h
5.61
KB
-rw-r--r--
led-lm3530.h
3.7
KB
-rw-r--r--
leds-bd2802.h
493
B
-rw-r--r--
leds-lp3944.h
950
B
-rw-r--r--
leds-lp3952.h
2.35
KB
-rw-r--r--
leds-pca9532.h
866
B
-rw-r--r--
leds-regulator.h
1.14
KB
-rw-r--r--
leds-tca6507.h
433
B
-rw-r--r--
leds-ti-lmu-common.h
1.12
KB
-rw-r--r--
leds.h
18.11
KB
-rw-r--r--
leds_pwm.h
407
B
-rw-r--r--
libata.h
65.1
KB
-rw-r--r--
libfdt.h
202
B
-rw-r--r--
libfdt_env.h
491
B
-rw-r--r--
libgcc.h
463
B
-rw-r--r--
libnvdimm.h
9.53
KB
-rw-r--r--
libps2.h
1.89
KB
-rw-r--r--
license.h
374
B
-rw-r--r--
lightnvm.h
14.88
KB
-rw-r--r--
limits.h
1.05
KB
-rw-r--r--
linkage.h
9.11
KB
-rw-r--r--
linkmode.h
1.95
KB
-rw-r--r--
linux_logo.h
1.91
KB
-rw-r--r--
lis3lv02d.h
5
KB
-rw-r--r--
list.h
26.9
KB
-rw-r--r--
list_bl.h
4.79
KB
-rw-r--r--
list_lru.h
7.29
KB
-rw-r--r--
list_nulls.h
3.47
KB
-rw-r--r--
list_sort.h
307
B
-rw-r--r--
livepatch.h
7.43
KB
-rw-r--r--
llc.h
749
B
-rw-r--r--
llist.h
8.56
KB
-rw-r--r--
lockdep.h
20.23
KB
-rw-r--r--
lockref.h
1.5
KB
-rw-r--r--
log2.h
6.19
KB
-rw-r--r--
logic_pio.h
3.24
KB
-rw-r--r--
lp.h
2.76
KB
-rw-r--r--
lru_cache.h
11.82
KB
-rw-r--r--
lsm_audit.h
2.73
KB
-rw-r--r--
lsm_hooks.h
93.79
KB
-rw-r--r--
lz4.h
26.44
KB
-rw-r--r--
lzo.h
1.55
KB
-rw-r--r--
mISDNdsp.h
1.19
KB
-rw-r--r--
mISDNhw.h
5.39
KB
-rw-r--r--
mISDNif.h
14.91
KB
-rw-r--r--
mailbox_client.h
1.71
KB
-rw-r--r--
mailbox_controller.h
5.7
KB
-rw-r--r--
maple.h
2.71
KB
-rw-r--r--
marvell_phy.h
1.41
KB
-rw-r--r--
math64.h
6.86
KB
-rw-r--r--
max17040_battery.h
328
B
-rw-r--r--
mbcache.h
2.16
KB
-rw-r--r--
mbus.h
3.09
KB
-rw-r--r--
mc146818rtc.h
4.57
KB
-rw-r--r--
mc6821.h
1.18
KB
-rw-r--r--
mcb.h
3.71
KB
-rw-r--r--
mdev.h
5.21
KB
-rw-r--r--
mdio-bitbang.h
1.12
KB
-rw-r--r--
mdio-gpio.h
177
B
-rw-r--r--
mdio-mux.h
1021
B
-rw-r--r--
mdio.h
10.86
KB
-rw-r--r--
mei_cl_bus.h
3.43
KB
-rw-r--r--
mem_encrypt.h
885
B
-rw-r--r--
memblock.h
18.46
KB
-rw-r--r--
memcontrol.h
36.66
KB
-rw-r--r--
memfd.h
365
B
-rw-r--r--
memory.h
4.74
KB
-rw-r--r--
memory_hotplug.h
10.96
KB
-rw-r--r--
mempolicy.h
7.44
KB
-rw-r--r--
mempool.h
3.35
KB
-rw-r--r--
memremap.h
5.36
KB
-rw-r--r--
memstick.h
9.6
KB
-rw-r--r--
mic_bus.h
2.7
KB
-rw-r--r--
micrel_phy.h
1.28
KB
-rw-r--r--
microchipphy.h
2.65
KB
-rw-r--r--
migrate.h
5.96
KB
-rw-r--r--
migrate_mode.h
758
B
-rw-r--r--
mii.h
14.04
KB
-rw-r--r--
miscdevice.h
2.81
KB
-rw-r--r--
mm-arch-hooks.h
533
B
-rw-r--r--
mm.h
92.34
KB
-rw-r--r--
mm_inline.h
3.37
KB
-rw-r--r--
mm_types.h
23.61
KB
-rw-r--r--
mm_types_task.h
2.5
KB
-rw-r--r--
mman.h
3.28
KB
-rw-r--r--
mmap_lock.h
1.06
KB
-rw-r--r--
mmdebug.h
2.32
KB
-rw-r--r--
mmiotrace.h
3.05
KB
-rw-r--r--
mmu_context.h
378
B
-rw-r--r--
mmu_notifier.h
19.84
KB
-rw-r--r--
mmzone.h
41.85
KB
-rw-r--r--
mnt_namespace.h
617
B
-rw-r--r--
mod_devicetable.h
21.91
KB
-rw-r--r--
module.h
24.34
KB
-rw-r--r--
module_signature.h
1.22
KB
-rw-r--r--
moduleloader.h
2.87
KB
-rw-r--r--
moduleparam.h
19.53
KB
-rw-r--r--
mount.h
3.64
KB
-rw-r--r--
moxtet.h
2.37
KB
-rw-r--r--
mpage.h
761
B
-rw-r--r--
mpi.h
2.51
KB
-rw-r--r--
mpls.h
394
B
-rw-r--r--
mpls_iptunnel.h
178
B
-rw-r--r--
mroute.h
1.95
KB
-rw-r--r--
mroute6.h
2.39
KB
-rw-r--r--
mroute_base.h
12.03
KB
-rw-r--r--
msdos_fs.h
273
B
-rw-r--r--
msg.h
395
B
-rw-r--r--
msi.h
12.84
KB
-rw-r--r--
mutex.h
6.55
KB
-rw-r--r--
mv643xx.h
51.27
KB
-rw-r--r--
mv643xx_eth.h
1.95
KB
-rw-r--r--
mv643xx_i2c.h
335
B
-rw-r--r--
mvebu-pmsu.h
520
B
-rw-r--r--
mxm-wmi.h
399
B
-rw-r--r--
n_r3964.h
4.06
KB
-rw-r--r--
namei.h
3.34
KB
-rw-r--r--
nd.h
5.52
KB
-rw-r--r--
ndctl.h
674
B
-rw-r--r--
net.h
11.75
KB
-rw-r--r--
netdev_features.h
9.7
KB
-rw-r--r--
netdevice.h
152.29
KB
-rw-r--r--
netfilter.h
13.36
KB
-rw-r--r--
netfilter_bridge.h
2.08
KB
-rw-r--r--
netfilter_defs.h
242
B
-rw-r--r--
netfilter_ingress.h
1.44
KB
-rw-r--r--
netfilter_ipv4.h
1.05
KB
-rw-r--r--
netfilter_ipv6.h
5.85
KB
-rw-r--r--
netlink.h
7.19
KB
-rw-r--r--
netpoll.h
2.69
KB
-rw-r--r--
nfs.h
1.31
KB
-rw-r--r--
nfs3.h
260
B
-rw-r--r--
nfs4.h
17.86
KB
-rw-r--r--
nfs_fs.h
17.2
KB
-rw-r--r--
nfs_fs_i.h
308
B
-rw-r--r--
nfs_fs_sb.h
9.54
KB
-rw-r--r--
nfs_iostat.h
4.18
KB
-rw-r--r--
nfs_page.h
6.38
KB
-rw-r--r--
nfs_xdr.h
40.17
KB
-rw-r--r--
nfsacl.h
1.15
KB
-rw-r--r--
nl802154.h
3.85
KB
-rw-r--r--
nls.h
3.09
KB
-rw-r--r--
nmi.h
6.86
KB
-rw-r--r--
node.h
4.69
KB
-rw-r--r--
nodemask.h
17.1
KB
-rw-r--r--
nospec.h
2.21
KB
-rw-r--r--
notifier.h
8.21
KB
-rw-r--r--
ns_common.h
235
B
-rw-r--r--
nsc_gpio.h
1.42
KB
-rw-r--r--
nsproxy.h
2.48
KB
-rw-r--r--
ntb.h
52.43
KB
-rw-r--r--
ntb_transport.h
3.8
KB
-rw-r--r--
nubus.h
5.54
KB
-rw-r--r--
numa.h
292
B
-rw-r--r--
nvme-fc-driver.h
37.18
KB
-rw-r--r--
nvme-fc.h
9.69
KB
-rw-r--r--
nvme-rdma.h
2.04
KB
-rw-r--r--
nvme-tcp.h
4.42
KB
-rw-r--r--
nvme.h
33.32
KB
-rw-r--r--
nvmem-consumer.h
5.8
KB
-rw-r--r--
nvmem-provider.h
3.88
KB
-rw-r--r--
nvram.h
3.47
KB
-rw-r--r--
objagg.h
1.99
KB
-rw-r--r--
of.h
42.38
KB
-rw-r--r--
of_address.h
4.47
KB
-rw-r--r--
of_clk.h
795
B
-rw-r--r--
of_device.h
2.99
KB
-rw-r--r--
of_dma.h
2.3
KB
-rw-r--r--
of_fdt.h
3.69
KB
-rw-r--r--
of_gpio.h
3.96
KB
-rw-r--r--
of_graph.h
3.41
KB
-rw-r--r--
of_iommu.h
821
B
-rw-r--r--
of_irq.h
3.62
KB
-rw-r--r--
of_mdio.h
2.98
KB
-rw-r--r--
of_net.h
720
B
-rw-r--r--
of_pci.h
935
B
-rw-r--r--
of_pdt.h
1.14
KB
-rw-r--r--
of_platform.h
3.88
KB
-rw-r--r--
of_reserved_mem.h
2.15
KB
-rw-r--r--
oid_registry.h
4.44
KB
-rw-r--r--
olpc-ec.h
1.95
KB
-rw-r--r--
omap-dma.h
10.47
KB
-rw-r--r--
omap-gpmc.h
2.73
KB
-rw-r--r--
omap-iommu.h
880
B
-rw-r--r--
omap-mailbox.h
689
B
-rw-r--r--
omapfb.h
576
B
-rw-r--r--
once.h
2.79
KB
-rw-r--r--
oom.h
3.26
KB
-rw-r--r--
openvswitch.h
403
B
-rw-r--r--
oprofile.h
6.1
KB
-rw-r--r--
osq_lock.h
1.04
KB
-rw-r--r--
overflow.h
9.58
KB
-rw-r--r--
packing.h
1.78
KB
-rw-r--r--
padata.h
6.35
KB
-rw-r--r--
page-flags-layout.h
3.28
KB
-rw-r--r--
page-flags.h
27.15
KB
-rw-r--r--
page-isolation.h
1.65
KB
-rw-r--r--
page_counter.h
1.94
KB
-rw-r--r--
page_ext.h
1.68
KB
-rw-r--r--
page_idle.h
2.62
KB
-rw-r--r--
page_owner.h
2.29
KB
-rw-r--r--
page_ref.h
4.99
KB
-rw-r--r--
pageblock-flags.h
2.72
KB
-rw-r--r--
pagemap.h
18.76
KB
-rw-r--r--
pagevec.h
2.34
KB
-rw-r--r--
pagewalk.h
2.39
KB
-rw-r--r--
parman.h
2.87
KB
-rw-r--r--
parport.h
17.84
KB
-rw-r--r--
parport_pc.h
6.56
KB
-rw-r--r--
parser.h
1.04
KB
-rw-r--r--
pata_arasan_cf_data.h
1.22
KB
-rw-r--r--
patchkey.h
757
B
-rw-r--r--
path.h
572
B
-rw-r--r--
pch_dma.h
408
B
-rw-r--r--
pci-acpi.h
3.48
KB
-rw-r--r--
pci-ats.h
1.52
KB
-rw-r--r--
pci-dma-compat.h
3.66
KB
-rw-r--r--
pci-ecam.h
2.19
KB
-rw-r--r--
pci-ep-cfs.h
951
B
-rw-r--r--
pci-epc.h
6.93
KB
-rw-r--r--
pci-epf.h
4.75
KB
-rw-r--r--
pci-p2pdma.h
3.95
KB
-rw-r--r--
pci.h
86.3
KB
-rw-r--r--
pci_hotplug.h
4.25
KB
-rw-r--r--
pci_ids.h
121.42
KB
-rw-r--r--
pda_power.h
1005
B
-rw-r--r--
pe.h
15.05
KB
-rw-r--r--
percpu-defs.h
18.12
KB
-rw-r--r--
percpu-refcount.h
10.46
KB
-rw-r--r--
percpu-rwsem.h
3.93
KB
-rw-r--r--
percpu.h
4.65
KB
-rw-r--r--
percpu_counter.h
4.27
KB
-rw-r--r--
perf_event.h
42.54
KB
-rw-r--r--
perf_regs.h
1.13
KB
-rw-r--r--
personality.h
393
B
-rw-r--r--
pfn.h
666
B
-rw-r--r--
pfn_t.h
3.21
KB
-rw-r--r--
phonet.h
537
B
-rw-r--r--
phy.h
40.59
KB
-rw-r--r--
phy_fixed.h
1.77
KB
-rw-r--r--
phy_led_triggers.h
1.01
KB
-rw-r--r--
phylink.h
10.47
KB
-rw-r--r--
pid.h
5.85
KB
-rw-r--r--
pid_namespace.h
2.33
KB
-rw-r--r--
pim.h
2.67
KB
-rw-r--r--
pipe_fs_i.h
6.17
KB
-rw-r--r--
pkeys.h
1016
B
-rw-r--r--
pktcdvd.h
5.87
KB
-rw-r--r--
pl320-ipc.h
209
B
-rw-r--r--
pl353-smc.h
739
B
-rw-r--r--
platform_device.h
13.05
KB
-rw-r--r--
plist.h
8.66
KB
-rw-r--r--
pm-trace.h
940
B
-rw-r--r--
pm.h
33.27
KB
-rw-r--r--
pm2301_charger.h
1.09
KB
-rw-r--r--
pm_clock.h
2.45
KB
-rw-r--r--
pm_domain.h
11.74
KB
-rw-r--r--
pm_opp.h
11.41
KB
-rw-r--r--
pm_qos.h
9.83
KB
-rw-r--r--
pm_runtime.h
9.56
KB
-rw-r--r--
pm_wakeirq.h
1.48
KB
-rw-r--r--
pm_wakeup.h
5.74
KB
-rw-r--r--
pmbus.h
970
B
-rw-r--r--
pmu.h
2.44
KB
-rw-r--r--
pnfs_osd_xdr.h
9.27
KB
-rw-r--r--
pnp.h
14.89
KB
-rw-r--r--
poison.h
2.56
KB
-rw-r--r--
poll.h
4.01
KB
-rw-r--r--
posix-clock.h
3.91
KB
-rw-r--r--
posix-timers.h
6.31
KB
-rw-r--r--
posix_acl.h
3.09
KB
-rw-r--r--
posix_acl_xattr.h
1.58
KB
-rw-r--r--
power_supply.h
16.06
KB
-rw-r--r--
powercap.h
12.04
KB
-rw-r--r--
ppp-comp.h
2.95
KB
-rw-r--r--
ppp_channel.h
2.87
KB
-rw-r--r--
ppp_defs.h
305
B
-rw-r--r--
pps-gpio.h
395
B
-rw-r--r--
pps_kernel.h
2.9
KB
-rw-r--r--
pr.h
566
B
-rw-r--r--
prandom.h
3.38
KB
-rw-r--r--
preempt.h
10
KB
-rw-r--r--
prefetch.h
1.7
KB
-rw-r--r--
prime_numbers.h
1.35
KB
-rw-r--r--
printk.h
15.92
KB
-rw-r--r--
proc_fs.h
6.58
KB
-rw-r--r--
proc_ns.h
2.6
KB
-rw-r--r--
processor.h
1.84
KB
-rw-r--r--
profile.h
2.68
KB
-rw-r--r--
projid.h
2.22
KB
-rw-r--r--
property.h
14.29
KB
-rw-r--r--
psci.h
1.48
KB
-rw-r--r--
pseudo_fs.h
355
B
-rw-r--r--
psi.h
1.53
KB
-rw-r--r--
psi_types.h
3.53
KB
-rw-r--r--
psp-sev.h
17.04
KB
-rw-r--r--
pstore.h
7.28
KB
-rw-r--r--
pstore_ram.h
3.81
KB
-rw-r--r--
pti.h
240
B
-rw-r--r--
ptp_classify.h
2.33
KB
-rw-r--r--
ptp_clock_kernel.h
9.01
KB
-rw-r--r--
ptr_ring.h
16.27
KB
-rw-r--r--
ptrace.h
14.65
KB
-rw-r--r--
purgatory.h
589
B
-rw-r--r--
pvclock_gtod.h
548
B
-rw-r--r--
pwm.h
16.08
KB
-rw-r--r--
pwm_backlight.h
802
B
-rw-r--r--
pxa168_eth.h
728
B
-rw-r--r--
pxa2xx_ssp.h
9.85
KB
-rw-r--r--
qcom-geni-se.h
12.21
KB
-rw-r--r--
qcom_scm.h
4.09
KB
-rw-r--r--
qnx6_fs.h
3.27
KB
-rw-r--r--
quota.h
18.7
KB
-rw-r--r--
quotaops.h
10.37
KB
-rw-r--r--
radix-tree.h
15.61
KB
-rw-r--r--
raid_class.h
2
KB
-rw-r--r--
ramfs.h
659
B
-rw-r--r--
random.h
3.98
KB
-rw-r--r--
range.h
651
B
-rw-r--r--
ras.h
1.18
KB
-rw-r--r--
ratelimit.h
2.81
KB
-rw-r--r--
rational.h
639
B
-rw-r--r--
rbtree.h
5.09
KB
-rw-r--r--
rbtree_augmented.h
9.6
KB
-rw-r--r--
rbtree_latch.h
6.64
KB
-rw-r--r--
rcu_node_tree.h
3.7
KB
-rw-r--r--
rcu_segcblist.h
2.77
KB
-rw-r--r--
rcu_sync.h
1.46
KB
-rw-r--r--
rculist.h
25.42
KB
-rw-r--r--
rculist_bl.h
4.36
KB
-rw-r--r--
rculist_nulls.h
6.17
KB
-rw-r--r--
rcupdate.h
34.54
KB
-rw-r--r--
rcupdate_wait.h
897
B
-rw-r--r--
rcutiny.h
2.58
KB
-rw-r--r--
rcutree.h
1.93
KB
-rw-r--r--
rcuwait.h
1.23
KB
-rw-r--r--
reboot-mode.h
600
B
-rw-r--r--
reboot.h
2.11
KB
-rw-r--r--
reciprocal_div.h
3.28
KB
-rw-r--r--
refcount.h
10.3
KB
-rw-r--r--
regmap.h
52.3
KB
-rw-r--r--
regset.h
14.92
KB
-rw-r--r--
relay.h
8.84
KB
-rw-r--r--
remoteproc.h
22.07
KB
-rw-r--r--
reset-controller.h
3.03
KB
-rw-r--r--
reset.h
15.74
KB
-rw-r--r--
resource.h
339
B
-rw-r--r--
resource_ext.h
1.83
KB
-rw-r--r--
restart_block.h
1.09
KB
-rw-r--r--
rfkill.h
9.86
KB
-rw-r--r--
rhashtable-types.h
3.45
KB
-rw-r--r--
rhashtable.h
37.82
KB
-rw-r--r--
ring_buffer.h
7.27
KB
-rw-r--r--
rio.h
19.02
KB
-rw-r--r--
rio_drv.h
14.5
KB
-rw-r--r--
rio_ids.h
1.08
KB
-rw-r--r--
rio_regs.h
19.07
KB
-rw-r--r--
rmap.h
9.08
KB
-rw-r--r--
rmi.h
12.02
KB
-rw-r--r--
rndis.h
16.86
KB
-rw-r--r--
rodata_test.h
394
B
-rw-r--r--
root_dev.h
619
B
-rw-r--r--
rpmsg.h
7.3
KB
-rw-r--r--
rslib.h
3.67
KB
-rw-r--r--
rtc.h
9
KB
-rw-r--r--
rtmutex.h
3.47
KB
-rw-r--r--
rtnetlink.h
4.46
KB
-rw-r--r--
rtsx_common.h
890
B
-rw-r--r--
rtsx_pci.h
39.6
KB
-rw-r--r--
rtsx_usb.h
15.38
KB
-rw-r--r--
rwlock.h
4.35
KB
-rw-r--r--
rwlock_api_smp.h
7.67
KB
-rw-r--r--
rwlock_types.h
1.12
KB
-rw-r--r--
rwsem.h
6.4
KB
-rw-r--r--
s3c_adc_battery.h
971
B
-rw-r--r--
sbitmap.h
16.52
KB
-rw-r--r--
scatterlist.h
16.16
KB
-rw-r--r--
scc.h
2.84
KB
-rw-r--r--
sched.h
55.47
KB
-rw-r--r--
sched_clock.h
520
B
-rw-r--r--
scif.h
58.87
KB
-rw-r--r--
scmi_protocol.h
10.44
KB
-rw-r--r--
scpi_protocol.h
2.04
KB
-rw-r--r--
screen_info.h
191
B
-rw-r--r--
sctp.h
21.99
KB
-rw-r--r--
scx200.h
1.82
KB
-rw-r--r--
scx200_gpio.h
2.38
KB
-rw-r--r--
sdb.h
4.17
KB
-rw-r--r--
sdla.h
6.69
KB
-rw-r--r--
seccomp.h
2.94
KB
-rw-r--r--
securebits.h
239
B
-rw-r--r--
security.h
51.54
KB
-rw-r--r--
sed-opal.h
1.62
KB
-rw-r--r--
seg6.h
121
B
-rw-r--r--
seg6_genl.h
136
B
-rw-r--r--
seg6_hmac.h
136
B
-rw-r--r--
seg6_iptunnel.h
148
B
-rw-r--r--
seg6_local.h
100
B
-rw-r--r--
selection.h
1.74
KB
-rw-r--r--
sem.h
599
B
-rw-r--r--
semaphore.h
1.35
KB
-rw-r--r--
seq_buf.h
3.15
KB
-rw-r--r--
seq_file.h
7.43
KB
-rw-r--r--
seq_file_net.h
730
B
-rw-r--r--
seqlock.h
16.46
KB
-rw-r--r--
seqno-fence.h
3.57
KB
-rw-r--r--
serdev.h
9.45
KB
-rw-r--r--
serial.h
630
B
-rw-r--r--
serial_8250.h
6
KB
-rw-r--r--
serial_bcm63xx.h
4.73
KB
-rw-r--r--
serial_core.h
19.48
KB
-rw-r--r--
serial_max3100.h
1.19
KB
-rw-r--r--
serial_pnx8xxx.h
1.96
KB
-rw-r--r--
serial_s3c.h
8.58
KB
-rw-r--r--
serial_sci.h
1.6
KB
-rw-r--r--
serio.h
4.28
KB
-rw-r--r--
set_memory.h
1.24
KB
-rw-r--r--
sfi.h
5.75
KB
-rw-r--r--
sfi_acpi.h
3.39
KB
-rw-r--r--
sfp.h
14.11
KB
-rw-r--r--
sh_clk.h
5.96
KB
-rw-r--r--
sh_dma.h
3.47
KB
-rw-r--r--
sh_eth.h
369
B
-rw-r--r--
sh_intc.h
3.59
KB
-rw-r--r--
sh_timer.h
172
B
-rw-r--r--
shdma-base.h
4.27
KB
-rw-r--r--
shm.h
968
B
-rw-r--r--
shmem_fs.h
5.15
KB
-rw-r--r--
shrinker.h
3.21
KB
-rw-r--r--
signal.h
12.94
KB
-rw-r--r--
signal_types.h
1.21
KB
-rw-r--r--
signalfd.h
817
B
-rw-r--r--
siox.h
2.26
KB
-rw-r--r--
siphash.h
5.59
KB
-rw-r--r--
sirfsoc_dma.h
162
B
-rw-r--r--
sizes.h
1.16
KB
-rw-r--r--
skb_array.h
5.18
KB
-rw-r--r--
skbuff.h
129.45
KB
-rw-r--r--
skmsg.h
11.45
KB
-rw-r--r--
slab.h
21.09
KB
-rw-r--r--
slab_def.h
2.88
KB
-rw-r--r--
slimbus.h
6.93
KB
-rw-r--r--
slub_def.h
5.56
KB
-rw-r--r--
sm501-regs.h
11.62
KB
-rw-r--r--
sm501.h
4.02
KB
-rw-r--r--
smc911x.h
294
B
-rw-r--r--
smc91x.h
1.57
KB
-rw-r--r--
smp.h
5.98
KB
-rw-r--r--
smpboot.h
1.68
KB
-rw-r--r--
smsc911x.h
1.63
KB
-rw-r--r--
smscphy.h
1.25
KB
-rw-r--r--
sock_diag.h
2.16
KB
-rw-r--r--
socket.h
13.61
KB
-rw-r--r--
sonet.h
469
B
-rw-r--r--
sony-laptop.h
1.41
KB
-rw-r--r--
sonypi.h
1.71
KB
-rw-r--r--
sort.h
420
B
-rw-r--r--
sound.h
685
B
-rw-r--r--
soundcard.h
1.59
KB
-rw-r--r--
spinlock.h
13.44
KB
-rw-r--r--
spinlock_api_smp.h
5.4
KB
-rw-r--r--
spinlock_api_up.h
3.31
KB
-rw-r--r--
spinlock_types.h
1.99
KB
-rw-r--r--
spinlock_types_up.h
726
B
-rw-r--r--
spinlock_up.h
2.16
KB
-rw-r--r--
splice.h
3.01
KB
-rw-r--r--
spmi.h
5.55
KB
-rw-r--r--
sram.h
844
B
-rw-r--r--
srcu.h
6.57
KB
-rw-r--r--
srcutiny.h
2.59
KB
-rw-r--r--
srcutree.h
4.87
KB
-rw-r--r--
ssbi.h
726
B
-rw-r--r--
stackdepot.h
539
B
-rw-r--r--
stackleak.h
909
B
-rw-r--r--
stackprotector.h
321
B
-rw-r--r--
stacktrace.h
3.42
KB
-rw-r--r--
start_kernel.h
415
B
-rw-r--r--
stat.h
1.18
KB
-rw-r--r--
statfs.h
1.4
KB
-rw-r--r--
static_key.h
30
B
-rw-r--r--
stddef.h
1.24
KB
-rw-r--r--
stm.h
4.35
KB
-rw-r--r--
stmmac.h
4.79
KB
-rw-r--r--
stmp3xxx_rtc_wdt.h
331
B
-rw-r--r--
stmp_device.h
412
B
-rw-r--r--
stop_machine.h
4.74
KB
-rw-r--r--
string.h
16.59
KB
-rw-r--r--
string_helpers.h
2.53
KB
-rw-r--r--
stringhash.h
2.65
KB
-rw-r--r--
stringify.h
341
B
-rw-r--r--
sungem_phy.h
3.94
KB
-rw-r--r--
sunserialcore.h
1.08
KB
-rw-r--r--
sunxi-rsb.h
2.89
KB
-rw-r--r--
superhyway.h
2.81
KB
-rw-r--r--
suspend.h
20.62
KB
-rw-r--r--
svga.h
3.75
KB
-rw-r--r--
sw842.h
328
B
-rw-r--r--
swab.h
569
B
-rw-r--r--
swait.h
10.04
KB
-rw-r--r--
swap.h
21.37
KB
-rw-r--r--
swap_cgroup.h
971
B
-rw-r--r--
swap_slots.h
840
B
-rw-r--r--
swapfile.h
556
B
-rw-r--r--
swapops.h
8.56
KB
-rw-r--r--
swiotlb.h
3
KB
-rw-r--r--
switchtec.h
8.33
KB
-rw-r--r--
sxgbe_platform.h
1.2
KB
-rw-r--r--
sync_core.h
581
B
-rw-r--r--
sync_file.h
1.57
KB
-rw-r--r--
synclink.h
989
B
-rw-r--r--
sys.h
960
B
-rw-r--r--
sys_soc.h
1.21
KB
-rw-r--r--
syscalls.h
55.6
KB
-rw-r--r--
syscore_ops.h
633
B
-rw-r--r--
sysctl.h
7.78
KB
-rw-r--r--
sysfs.h
17.13
KB
-rw-r--r--
syslog.h
1.24
KB
-rw-r--r--
sysrq.h
1.79
KB
-rw-r--r--
sysv_fs.h
9.03
KB
-rw-r--r--
t10-pi.h
1.5
KB
-rw-r--r--
task_io_accounting.h
1.13
KB
-rw-r--r--
task_io_accounting_ops.h
2.55
KB
-rw-r--r--
task_work.h
617
B
-rw-r--r--
taskstats_kern.h
957
B
-rw-r--r--
tboot.h
3.38
KB
-rw-r--r--
tc.h
3.45
KB
-rw-r--r--
tca6416_keypad.h
701
B
-rw-r--r--
tcp.h
16.11
KB
-rw-r--r--
tee_drv.h
18.2
KB
-rw-r--r--
textsearch.h
4.73
KB
-rw-r--r--
textsearch_fsm.h
1.19
KB
-rw-r--r--
tfrc.h
1.68
KB
-rw-r--r--
thermal.h
19.34
KB
-rw-r--r--
thread_info.h
4.44
KB
-rw-r--r--
threads.h
1.28
KB
-rw-r--r--
thunderbolt.h
19.24
KB
-rw-r--r--
ti-emif-sram.h
5.15
KB
-rw-r--r--
ti_wilink_st.h
13.46
KB
-rw-r--r--
tick.h
9.41
KB
-rw-r--r--
tifm.h
4.66
KB
-rw-r--r--
timb_dma.h
1.17
KB
-rw-r--r--
timb_gpio.h
717
B
-rw-r--r--
time.h
3.75
KB
-rw-r--r--
time32.h
5.76
KB
-rw-r--r--
time64.h
4.6
KB
-rw-r--r--
timecounter.h
4.14
KB
-rw-r--r--
timekeeper_internal.h
5.33
KB
-rw-r--r--
timekeeping.h
7.18
KB
-rw-r--r--
timekeeping32.h
920
B
-rw-r--r--
timer.h
7.54
KB
-rw-r--r--
timerfd.h
508
B
-rw-r--r--
timeriomem-rng.h
432
B
-rw-r--r--
timerqueue.h
1.4
KB
-rw-r--r--
timex.h
6.7
KB
-rw-r--r--
tnum.h
2.95
KB
-rw-r--r--
topology.h
5.55
KB
-rw-r--r--
torture.h
3.21
KB
-rw-r--r--
toshiba.h
460
B
-rw-r--r--
tpm.h
5.48
KB
-rw-r--r--
tpm_command.h
847
B
-rw-r--r--
tpm_eventlog.h
6.53
KB
-rw-r--r--
trace.h
964
B
-rw-r--r--
trace_clock.h
667
B
-rw-r--r--
trace_events.h
20.56
KB
-rw-r--r--
trace_seq.h
3.74
KB
-rw-r--r--
tracefs.h
1.05
KB
-rw-r--r--
tracehook.h
7.25
KB
-rw-r--r--
tracepoint-defs.h
1.03
KB
-rw-r--r--
tracepoint.h
17.97
KB
-rw-r--r--
transport_class.h
2.51
KB
-rw-r--r--
ts-nbus.h
532
B
-rw-r--r--
tsacct_kern.h
1.2
KB
-rw-r--r--
tty.h
28.04
KB
-rw-r--r--
tty_driver.h
15.61
KB
-rw-r--r--
tty_flip.h
1.62
KB
-rw-r--r--
tty_ldisc.h
7.96
KB
-rw-r--r--
typecheck.h
624
B
-rw-r--r--
types.h
5.41
KB
-rw-r--r--
u64_stats_sync.h
5.17
KB
-rw-r--r--
uaccess.h
13.08
KB
-rw-r--r--
ucb1400.h
4.12
KB
-rw-r--r--
ucs2_string.h
662
B
-rw-r--r--
udp.h
4.22
KB
-rw-r--r--
uidgid.h
4.07
KB
-rw-r--r--
uio.h
8.55
KB
-rw-r--r--
uio_driver.h
4.1
KB
-rw-r--r--
umh.h
2.26
KB
-rw-r--r--
unicode.h
946
B
-rw-r--r--
units.h
2.18
KB
-rw-r--r--
uprobes.h
6
KB
-rw-r--r--
usb.h
77.19
KB
-rw-r--r--
usb_usual.h
3.58
KB
-rw-r--r--
usbdevice_fs.h
2.18
KB
-rw-r--r--
user-return-notifier.h
1.18
KB
-rw-r--r--
user.h
22
B
-rw-r--r--
user_namespace.h
4.65
KB
-rw-r--r--
userfaultfd_k.h
3.69
KB
-rw-r--r--
util_macros.h
1.17
KB
-rw-r--r--
uts.h
388
B
-rw-r--r--
utsname.h
1.79
KB
-rw-r--r--
uuid.h
1.99
KB
-rw-r--r--
vbox_utils.h
1.69
KB
-rw-r--r--
verification.h
1.75
KB
-rw-r--r--
vermagic.h
1.13
KB
-rw-r--r--
vexpress.h
1.06
KB
-rw-r--r--
vfio.h
6.29
KB
-rw-r--r--
vfs.h
116
B
-rw-r--r--
vga_switcheroo.h
8.62
KB
-rw-r--r--
vgaarb.h
5.24
KB
-rw-r--r--
via-core.h
6.6
KB
-rw-r--r--
via-gpio.h
310
B
-rw-r--r--
via.h
932
B
-rw-r--r--
via_i2c.h
844
B
-rw-r--r--
videodev2.h
2.68
KB
-rw-r--r--
virtio.h
6.79
KB
-rw-r--r--
virtio_byteorder.h
1.46
KB
-rw-r--r--
virtio_caif.h
492
B
-rw-r--r--
virtio_config.h
13.39
KB
-rw-r--r--
virtio_console.h
1.93
KB
-rw-r--r--
virtio_net.h
5.49
KB
-rw-r--r--
virtio_ring.h
2.96
KB
-rw-r--r--
virtio_vsock.h
5.06
KB
-rw-r--r--
visorbus.h
12.23
KB
-rw-r--r--
vlynq.h
3.22
KB
-rw-r--r--
vm_event_item.h
2.96
KB
-rw-r--r--
vm_sockets.h
287
B
-rw-r--r--
vmacache.h
722
B
-rw-r--r--
vmalloc.h
7.21
KB
-rw-r--r--
vme.h
5.66
KB
-rw-r--r--
vmpressure.h
1.69
KB
-rw-r--r--
vmstat.h
10.51
KB
-rw-r--r--
vmw_vmci_api.h
2.78
KB
-rw-r--r--
vmw_vmci_defs.h
27.47
KB
-rw-r--r--
vringh.h
7.11
KB
-rw-r--r--
vt.h
611
B
-rw-r--r--
vt_buffer.h
1.49
KB
-rw-r--r--
vt_kern.h
6.04
KB
-rw-r--r--
vtime.h
3.57
KB
-rw-r--r--
w1-gpio.h
493
B
-rw-r--r--
w1.h
8.88
KB
-rw-r--r--
wait.h
41.35
KB
-rw-r--r--
wait_bit.h
11.2
KB
-rw-r--r--
watchdog.h
7.73
KB
-rw-r--r--
win_minmax.h
832
B
-rw-r--r--
wireless.h
1.4
KB
-rw-r--r--
wkup_m3_ipc.h
1.75
KB
-rw-r--r--
wl12xx.h
810
B
-rw-r--r--
wm97xx.h
10.61
KB
-rw-r--r--
wmi.h
1.56
KB
-rw-r--r--
workqueue.h
21.03
KB
-rw-r--r--
writeback.h
13.02
KB
-rw-r--r--
ww_mutex.h
12.78
KB
-rw-r--r--
xarray.h
54.24
KB
-rw-r--r--
xattr.h
3.49
KB
-rw-r--r--
xxhash.h
8.27
KB
-rw-r--r--
xz.h
11.16
KB
-rw-r--r--
yam.h
2.18
KB
-rw-r--r--
z2_battery.h
318
B
-rw-r--r--
zbud.h
740
B
-rw-r--r--
zconf.h
1.73
KB
-rw-r--r--
zlib.h
28.11
KB
-rw-r--r--
zorro.h
3.94
KB
-rw-r--r--
zpool.h
3.11
KB
-rw-r--r--
zsmalloc.h
1.63
KB
-rw-r--r--
zstd.h
48.64
KB
-rw-r--r--
zutil.h
2.73
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : hyperv.h
/* SPDX-License-Identifier: GPL-2.0-only */ /* * * Copyright (c) 2011, Microsoft Corporation. * * Authors: * Haiyang Zhang <haiyangz@microsoft.com> * Hank Janssen <hjanssen@microsoft.com> * K. Y. Srinivasan <kys@microsoft.com> */ #ifndef _HYPERV_H #define _HYPERV_H #include <uapi/linux/hyperv.h> #include <linux/types.h> #include <linux/scatterlist.h> #include <linux/list.h> #include <linux/timer.h> #include <linux/completion.h> #include <linux/device.h> #include <linux/mod_devicetable.h> #include <linux/interrupt.h> #include <linux/reciprocal_div.h> #define MAX_PAGE_BUFFER_COUNT 32 #define MAX_MULTIPAGE_BUFFER_COUNT 32 /* 128K */ #pragma pack(push, 1) /* Single-page buffer */ struct hv_page_buffer { u32 len; u32 offset; u64 pfn; }; /* Multiple-page buffer */ struct hv_multipage_buffer { /* Length and Offset determines the # of pfns in the array */ u32 len; u32 offset; u64 pfn_array[MAX_MULTIPAGE_BUFFER_COUNT]; }; /* * Multiple-page buffer array; the pfn array is variable size: * The number of entries in the PFN array is determined by * "len" and "offset". */ struct hv_mpb_array { /* Length and Offset determines the # of pfns in the array */ u32 len; u32 offset; u64 pfn_array[]; }; /* 0x18 includes the proprietary packet header */ #define MAX_PAGE_BUFFER_PACKET (0x18 + \ (sizeof(struct hv_page_buffer) * \ MAX_PAGE_BUFFER_COUNT)) #define MAX_MULTIPAGE_BUFFER_PACKET (0x18 + \ sizeof(struct hv_multipage_buffer)) #pragma pack(pop) struct hv_ring_buffer { /* Offset in bytes from the start of ring data below */ u32 write_index; /* Offset in bytes from the start of ring data below */ u32 read_index; u32 interrupt_mask; /* * WS2012/Win8 and later versions of Hyper-V implement interrupt * driven flow management. The feature bit feat_pending_send_sz * is set by the host on the host->guest ring buffer, and by the * guest on the guest->host ring buffer. * * The meaning of the feature bit is a bit complex in that it has * semantics that apply to both ring buffers. If the guest sets * the feature bit in the guest->host ring buffer, the guest is * telling the host that: * 1) It will set the pending_send_sz field in the guest->host ring * buffer when it is waiting for space to become available, and * 2) It will read the pending_send_sz field in the host->guest * ring buffer and interrupt the host when it frees enough space * * Similarly, if the host sets the feature bit in the host->guest * ring buffer, the host is telling the guest that: * 1) It will set the pending_send_sz field in the host->guest ring * buffer when it is waiting for space to become available, and * 2) It will read the pending_send_sz field in the guest->host * ring buffer and interrupt the guest when it frees enough space * * If either the guest or host does not set the feature bit that it * owns, that guest or host must do polling if it encounters a full * ring buffer, and not signal the other end with an interrupt. */ u32 pending_send_sz; u32 reserved1[12]; union { struct { u32 feat_pending_send_sz:1; }; u32 value; } feature_bits; /* Pad it to PAGE_SIZE so that data starts on page boundary */ u8 reserved2[4028]; /* * Ring data starts here + RingDataStartOffset * !!! DO NOT place any fields below this !!! */ u8 buffer[0]; } __packed; struct hv_ring_buffer_info { struct hv_ring_buffer *ring_buffer; u32 ring_size; /* Include the shared header */ struct reciprocal_value ring_size_div10_reciprocal; spinlock_t ring_lock; u32 ring_datasize; /* < ring_size */ u32 priv_read_index; /* * The ring buffer mutex lock. This lock prevents the ring buffer from * being freed while the ring buffer is being accessed. */ struct mutex ring_buffer_mutex; }; static inline u32 hv_get_bytes_to_read(const struct hv_ring_buffer_info *rbi) { u32 read_loc, write_loc, dsize, read; dsize = rbi->ring_datasize; read_loc = rbi->ring_buffer->read_index; write_loc = READ_ONCE(rbi->ring_buffer->write_index); read = write_loc >= read_loc ? (write_loc - read_loc) : (dsize - read_loc) + write_loc; return read; } static inline u32 hv_get_bytes_to_write(const struct hv_ring_buffer_info *rbi) { u32 read_loc, write_loc, dsize, write; dsize = rbi->ring_datasize; read_loc = READ_ONCE(rbi->ring_buffer->read_index); write_loc = rbi->ring_buffer->write_index; write = write_loc >= read_loc ? dsize - (write_loc - read_loc) : read_loc - write_loc; return write; } static inline u32 hv_get_avail_to_write_percent( const struct hv_ring_buffer_info *rbi) { u32 avail_write = hv_get_bytes_to_write(rbi); return reciprocal_divide( (avail_write << 3) + (avail_write << 1), rbi->ring_size_div10_reciprocal); } /* * VMBUS version is 32 bit entity broken up into * two 16 bit quantities: major_number. minor_number. * * 0 . 13 (Windows Server 2008) * 1 . 1 (Windows 7) * 2 . 4 (Windows 8) * 3 . 0 (Windows 8 R2) * 4 . 0 (Windows 10) * 5 . 0 (Newer Windows 10) */ #define VERSION_WS2008 ((0 << 16) | (13)) #define VERSION_WIN7 ((1 << 16) | (1)) #define VERSION_WIN8 ((2 << 16) | (4)) #define VERSION_WIN8_1 ((3 << 16) | (0)) #define VERSION_WIN10 ((4 << 16) | (0)) #define VERSION_WIN10_V5 ((5 << 16) | (0)) #define VERSION_INVAL -1 #define VERSION_CURRENT VERSION_WIN10_V5 /* Make maximum size of pipe payload of 16K */ #define MAX_PIPE_DATA_PAYLOAD (sizeof(u8) * 16384) /* Define PipeMode values. */ #define VMBUS_PIPE_TYPE_BYTE 0x00000000 #define VMBUS_PIPE_TYPE_MESSAGE 0x00000004 /* The size of the user defined data buffer for non-pipe offers. */ #define MAX_USER_DEFINED_BYTES 120 /* The size of the user defined data buffer for pipe offers. */ #define MAX_PIPE_USER_DEFINED_BYTES 116 /* * At the center of the Channel Management library is the Channel Offer. This * struct contains the fundamental information about an offer. */ struct vmbus_channel_offer { guid_t if_type; guid_t if_instance; /* * These two fields are not currently used. */ u64 reserved1; u64 reserved2; u16 chn_flags; u16 mmio_megabytes; /* in bytes * 1024 * 1024 */ union { /* Non-pipes: The user has MAX_USER_DEFINED_BYTES bytes. */ struct { unsigned char user_def[MAX_USER_DEFINED_BYTES]; } std; /* * Pipes: * The following sructure is an integrated pipe protocol, which * is implemented on top of standard user-defined data. Pipe * clients have MAX_PIPE_USER_DEFINED_BYTES left for their own * use. */ struct { u32 pipe_mode; unsigned char user_def[MAX_PIPE_USER_DEFINED_BYTES]; } pipe; } u; /* * The sub_channel_index is defined in Win8: a value of zero means a * primary channel and a value of non-zero means a sub-channel. * * Before Win8, the field is reserved, meaning it's always zero. */ u16 sub_channel_index; u16 reserved3; } __packed; /* Server Flags */ #define VMBUS_CHANNEL_ENUMERATE_DEVICE_INTERFACE 1 #define VMBUS_CHANNEL_SERVER_SUPPORTS_TRANSFER_PAGES 2 #define VMBUS_CHANNEL_SERVER_SUPPORTS_GPADLS 4 #define VMBUS_CHANNEL_NAMED_PIPE_MODE 0x10 #define VMBUS_CHANNEL_LOOPBACK_OFFER 0x100 #define VMBUS_CHANNEL_PARENT_OFFER 0x200 #define VMBUS_CHANNEL_REQUEST_MONITORED_NOTIFICATION 0x400 #define VMBUS_CHANNEL_TLNPI_PROVIDER_OFFER 0x2000 struct vmpacket_descriptor { u16 type; u16 offset8; u16 len8; u16 flags; u64 trans_id; } __packed; struct vmpacket_header { u32 prev_pkt_start_offset; struct vmpacket_descriptor descriptor; } __packed; struct vmtransfer_page_range { u32 byte_count; u32 byte_offset; } __packed; struct vmtransfer_page_packet_header { struct vmpacket_descriptor d; u16 xfer_pageset_id; u8 sender_owns_set; u8 reserved; u32 range_cnt; struct vmtransfer_page_range ranges[]; } __packed; struct vmgpadl_packet_header { struct vmpacket_descriptor d; u32 gpadl; u32 reserved; } __packed; struct vmadd_remove_transfer_page_set { struct vmpacket_descriptor d; u32 gpadl; u16 xfer_pageset_id; u16 reserved; } __packed; /* * This structure defines a range in guest physical space that can be made to * look virtually contiguous. */ struct gpa_range { u32 byte_count; u32 byte_offset; u64 pfn_array[0]; }; /* * This is the format for an Establish Gpadl packet, which contains a handle by * which this GPADL will be known and a set of GPA ranges associated with it. * This can be converted to a MDL by the guest OS. If there are multiple GPA * ranges, then the resulting MDL will be "chained," representing multiple VA * ranges. */ struct vmestablish_gpadl { struct vmpacket_descriptor d; u32 gpadl; u32 range_cnt; struct gpa_range range[1]; } __packed; /* * This is the format for a Teardown Gpadl packet, which indicates that the * GPADL handle in the Establish Gpadl packet will never be referenced again. */ struct vmteardown_gpadl { struct vmpacket_descriptor d; u32 gpadl; u32 reserved; /* for alignment to a 8-byte boundary */ } __packed; /* * This is the format for a GPA-Direct packet, which contains a set of GPA * ranges, in addition to commands and/or data. */ struct vmdata_gpa_direct { struct vmpacket_descriptor d; u32 reserved; u32 range_cnt; struct gpa_range range[1]; } __packed; /* This is the format for a Additional Data Packet. */ struct vmadditional_data { struct vmpacket_descriptor d; u64 total_bytes; u32 offset; u32 byte_cnt; unsigned char data[1]; } __packed; union vmpacket_largest_possible_header { struct vmpacket_descriptor simple_hdr; struct vmtransfer_page_packet_header xfer_page_hdr; struct vmgpadl_packet_header gpadl_hdr; struct vmadd_remove_transfer_page_set add_rm_xfer_page_hdr; struct vmestablish_gpadl establish_gpadl_hdr; struct vmteardown_gpadl teardown_gpadl_hdr; struct vmdata_gpa_direct data_gpa_direct_hdr; }; #define VMPACKET_DATA_START_ADDRESS(__packet) \ (void *)(((unsigned char *)__packet) + \ ((struct vmpacket_descriptor)__packet)->offset8 * 8) #define VMPACKET_DATA_LENGTH(__packet) \ ((((struct vmpacket_descriptor)__packet)->len8 - \ ((struct vmpacket_descriptor)__packet)->offset8) * 8) #define VMPACKET_TRANSFER_MODE(__packet) \ (((struct IMPACT)__packet)->type) enum vmbus_packet_type { VM_PKT_INVALID = 0x0, VM_PKT_SYNCH = 0x1, VM_PKT_ADD_XFER_PAGESET = 0x2, VM_PKT_RM_XFER_PAGESET = 0x3, VM_PKT_ESTABLISH_GPADL = 0x4, VM_PKT_TEARDOWN_GPADL = 0x5, VM_PKT_DATA_INBAND = 0x6, VM_PKT_DATA_USING_XFER_PAGES = 0x7, VM_PKT_DATA_USING_GPADL = 0x8, VM_PKT_DATA_USING_GPA_DIRECT = 0x9, VM_PKT_CANCEL_REQUEST = 0xa, VM_PKT_COMP = 0xb, VM_PKT_DATA_USING_ADDITIONAL_PKT = 0xc, VM_PKT_ADDITIONAL_DATA = 0xd }; #define VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED 1 /* Version 1 messages */ enum vmbus_channel_message_type { CHANNELMSG_INVALID = 0, CHANNELMSG_OFFERCHANNEL = 1, CHANNELMSG_RESCIND_CHANNELOFFER = 2, CHANNELMSG_REQUESTOFFERS = 3, CHANNELMSG_ALLOFFERS_DELIVERED = 4, CHANNELMSG_OPENCHANNEL = 5, CHANNELMSG_OPENCHANNEL_RESULT = 6, CHANNELMSG_CLOSECHANNEL = 7, CHANNELMSG_GPADL_HEADER = 8, CHANNELMSG_GPADL_BODY = 9, CHANNELMSG_GPADL_CREATED = 10, CHANNELMSG_GPADL_TEARDOWN = 11, CHANNELMSG_GPADL_TORNDOWN = 12, CHANNELMSG_RELID_RELEASED = 13, CHANNELMSG_INITIATE_CONTACT = 14, CHANNELMSG_VERSION_RESPONSE = 15, CHANNELMSG_UNLOAD = 16, CHANNELMSG_UNLOAD_RESPONSE = 17, CHANNELMSG_18 = 18, CHANNELMSG_19 = 19, CHANNELMSG_20 = 20, CHANNELMSG_TL_CONNECT_REQUEST = 21, CHANNELMSG_22 = 22, CHANNELMSG_TL_CONNECT_RESULT = 23, CHANNELMSG_COUNT }; /* Hyper-V supports about 2048 channels, and the RELIDs start with 1. */ #define INVALID_RELID U32_MAX struct vmbus_channel_message_header { enum vmbus_channel_message_type msgtype; u32 padding; } __packed; /* Query VMBus Version parameters */ struct vmbus_channel_query_vmbus_version { struct vmbus_channel_message_header header; u32 version; } __packed; /* VMBus Version Supported parameters */ struct vmbus_channel_version_supported { struct vmbus_channel_message_header header; u8 version_supported; } __packed; /* Offer Channel parameters */ struct vmbus_channel_offer_channel { struct vmbus_channel_message_header header; struct vmbus_channel_offer offer; u32 child_relid; u8 monitorid; /* * win7 and beyond splits this field into a bit field. */ u8 monitor_allocated:1; u8 reserved:7; /* * These are new fields added in win7 and later. * Do not access these fields without checking the * negotiated protocol. * * If "is_dedicated_interrupt" is set, we must not set the * associated bit in the channel bitmap while sending the * interrupt to the host. * * connection_id is to be used in signaling the host. */ u16 is_dedicated_interrupt:1; u16 reserved1:15; u32 connection_id; } __packed; /* Rescind Offer parameters */ struct vmbus_channel_rescind_offer { struct vmbus_channel_message_header header; u32 child_relid; } __packed; static inline u32 hv_ringbuffer_pending_size(const struct hv_ring_buffer_info *rbi) { return rbi->ring_buffer->pending_send_sz; } /* * Request Offer -- no parameters, SynIC message contains the partition ID * Set Snoop -- no parameters, SynIC message contains the partition ID * Clear Snoop -- no parameters, SynIC message contains the partition ID * All Offers Delivered -- no parameters, SynIC message contains the partition * ID * Flush Client -- no parameters, SynIC message contains the partition ID */ /* Open Channel parameters */ struct vmbus_channel_open_channel { struct vmbus_channel_message_header header; /* Identifies the specific VMBus channel that is being opened. */ u32 child_relid; /* ID making a particular open request at a channel offer unique. */ u32 openid; /* GPADL for the channel's ring buffer. */ u32 ringbuffer_gpadlhandle; /* * Starting with win8, this field will be used to specify * the target virtual processor on which to deliver the interrupt for * the host to guest communication. * Prior to win8, incoming channel interrupts would only * be delivered on cpu 0. Setting this value to 0 would * preserve the earlier behavior. */ u32 target_vp; /* * The upstream ring buffer begins at offset zero in the memory * described by RingBufferGpadlHandle. The downstream ring buffer * follows it at this offset (in pages). */ u32 downstream_ringbuffer_pageoffset; /* User-specific data to be passed along to the server endpoint. */ unsigned char userdata[MAX_USER_DEFINED_BYTES]; } __packed; /* Open Channel Result parameters */ struct vmbus_channel_open_result { struct vmbus_channel_message_header header; u32 child_relid; u32 openid; u32 status; } __packed; /* Close channel parameters; */ struct vmbus_channel_close_channel { struct vmbus_channel_message_header header; u32 child_relid; } __packed; /* Channel Message GPADL */ #define GPADL_TYPE_RING_BUFFER 1 #define GPADL_TYPE_SERVER_SAVE_AREA 2 #define GPADL_TYPE_TRANSACTION 8 /* * The number of PFNs in a GPADL message is defined by the number of * pages that would be spanned by ByteCount and ByteOffset. If the * implied number of PFNs won't fit in this packet, there will be a * follow-up packet that contains more. */ struct vmbus_channel_gpadl_header { struct vmbus_channel_message_header header; u32 child_relid; u32 gpadl; u16 range_buflen; u16 rangecount; struct gpa_range range[0]; } __packed; /* This is the followup packet that contains more PFNs. */ struct vmbus_channel_gpadl_body { struct vmbus_channel_message_header header; u32 msgnumber; u32 gpadl; u64 pfn[0]; } __packed; struct vmbus_channel_gpadl_created { struct vmbus_channel_message_header header; u32 child_relid; u32 gpadl; u32 creation_status; } __packed; struct vmbus_channel_gpadl_teardown { struct vmbus_channel_message_header header; u32 child_relid; u32 gpadl; } __packed; struct vmbus_channel_gpadl_torndown { struct vmbus_channel_message_header header; u32 gpadl; } __packed; struct vmbus_channel_relid_released { struct vmbus_channel_message_header header; u32 child_relid; } __packed; struct vmbus_channel_initiate_contact { struct vmbus_channel_message_header header; u32 vmbus_version_requested; u32 target_vcpu; /* The VCPU the host should respond to */ union { u64 interrupt_page; struct { u8 msg_sint; u8 padding1[3]; u32 padding2; }; }; u64 monitor_page1; u64 monitor_page2; } __packed; /* Hyper-V socket: guest's connect()-ing to host */ struct vmbus_channel_tl_connect_request { struct vmbus_channel_message_header header; guid_t guest_endpoint_id; guid_t host_service_id; } __packed; struct vmbus_channel_version_response { struct vmbus_channel_message_header header; u8 version_supported; u8 connection_state; u16 padding; /* * On new hosts that support VMBus protocol 5.0, we must use * VMBUS_MESSAGE_CONNECTION_ID_4 for the Initiate Contact Message, * and for subsequent messages, we must use the Message Connection ID * field in the host-returned Version Response Message. * * On old hosts, we should always use VMBUS_MESSAGE_CONNECTION_ID (1). */ u32 msg_conn_id; } __packed; enum vmbus_channel_state { CHANNEL_OFFER_STATE, CHANNEL_OPENING_STATE, CHANNEL_OPEN_STATE, CHANNEL_OPENED_STATE, }; /* * Represents each channel msg on the vmbus connection This is a * variable-size data structure depending on the msg type itself */ struct vmbus_channel_msginfo { /* Bookkeeping stuff */ struct list_head msglistentry; /* So far, this is only used to handle gpadl body message */ struct list_head submsglist; /* Synchronize the request/response if needed */ struct completion waitevent; struct vmbus_channel *waiting_channel; union { struct vmbus_channel_version_supported version_supported; struct vmbus_channel_open_result open_result; struct vmbus_channel_gpadl_torndown gpadl_torndown; struct vmbus_channel_gpadl_created gpadl_created; struct vmbus_channel_version_response version_response; } response; u32 msgsize; /* * The channel message that goes out on the "wire". * It will contain at minimum the VMBUS_CHANNEL_MESSAGE_HEADER header */ unsigned char msg[0]; }; struct vmbus_close_msg { struct vmbus_channel_msginfo info; struct vmbus_channel_close_channel msg; }; /* Define connection identifier type. */ union hv_connection_id { u32 asu32; struct { u32 id:24; u32 reserved:8; } u; }; enum hv_numa_policy { HV_BALANCED = 0, HV_LOCALIZED, }; enum vmbus_device_type { HV_IDE = 0, HV_SCSI, HV_FC, HV_NIC, HV_ND, HV_PCIE, HV_FB, HV_KBD, HV_MOUSE, HV_KVP, HV_TS, HV_HB, HV_SHUTDOWN, HV_FCOPY, HV_BACKUP, HV_DM, HV_UNKNOWN, }; struct vmbus_device { u16 dev_type; guid_t guid; bool perf_device; }; struct vmbus_channel { struct list_head listentry; struct hv_device *device_obj; enum vmbus_channel_state state; struct vmbus_channel_offer_channel offermsg; /* * These are based on the OfferMsg.MonitorId. * Save it here for easy access. */ u8 monitor_grp; u8 monitor_bit; bool rescind; /* got rescind msg */ struct completion rescind_event; u32 ringbuffer_gpadlhandle; /* Allocated memory for ring buffer */ struct page *ringbuffer_page; u32 ringbuffer_pagecount; u32 ringbuffer_send_offset; struct hv_ring_buffer_info outbound; /* send to parent */ struct hv_ring_buffer_info inbound; /* receive from parent */ struct vmbus_close_msg close_msg; /* Statistics */ u64 interrupts; /* Host to Guest interrupts */ u64 sig_events; /* Guest to Host events */ /* * Guest to host interrupts caused by the outbound ring buffer changing * from empty to not empty. */ u64 intr_out_empty; /* * Indicates that a full outbound ring buffer was encountered. The flag * is set to true when a full outbound ring buffer is encountered and * set to false when a write to the outbound ring buffer is completed. */ bool out_full_flag; /* Channel callback's invoked in softirq context */ struct tasklet_struct callback_event; void (*onchannel_callback)(void *context); void *channel_callback_context; /* * A channel can be marked for one of three modes of reading: * BATCHED - callback called from taslket and should read * channel until empty. Interrupts from the host * are masked while read is in process (default). * DIRECT - callback called from tasklet (softirq). * ISR - callback called in interrupt context and must * invoke its own deferred processing. * Host interrupts are disabled and must be re-enabled * when ring is empty. */ enum hv_callback_mode { HV_CALL_BATCHED, HV_CALL_DIRECT, HV_CALL_ISR } callback_mode; bool is_dedicated_interrupt; u64 sig_event; /* * Starting with win8, this field will be used to specify * the target virtual processor on which to deliver the interrupt for * the host to guest communication. * Prior to win8, incoming channel interrupts would only * be delivered on cpu 0. Setting this value to 0 would * preserve the earlier behavior. */ u32 target_vp; /* The corresponding CPUID in the guest */ u32 target_cpu; /* * State to manage the CPU affiliation of channels. */ struct cpumask alloced_cpus_in_node; int numa_node; /* * Support for sub-channels. For high performance devices, * it will be useful to have multiple sub-channels to support * a scalable communication infrastructure with the host. * The support for sub-channels is implemented as an extention * to the current infrastructure. * The initial offer is considered the primary channel and this * offer message will indicate if the host supports sub-channels. * The guest is free to ask for sub-channels to be offerred and can * open these sub-channels as a normal "primary" channel. However, * all sub-channels will have the same type and instance guids as the * primary channel. Requests sent on a given channel will result in a * response on the same channel. */ /* * Sub-channel creation callback. This callback will be called in * process context when a sub-channel offer is received from the host. * The guest can open the sub-channel in the context of this callback. */ void (*sc_creation_callback)(struct vmbus_channel *new_sc); /* * Channel rescind callback. Some channels (the hvsock ones), need to * register a callback which is invoked in vmbus_onoffer_rescind(). */ void (*chn_rescind_callback)(struct vmbus_channel *channel); /* * The spinlock to protect the structure. It is being used to protect * test-and-set access to various attributes of the structure as well * as all sc_list operations. */ spinlock_t lock; /* * All Sub-channels of a primary channel are linked here. */ struct list_head sc_list; /* * The primary channel this sub-channel belongs to. * This will be NULL for the primary channel. */ struct vmbus_channel *primary_channel; /* * Support per-channel state for use by vmbus drivers. */ void *per_channel_state; /* * To support per-cpu lookup mapping of relid to channel, * link up channels based on their CPU affinity. */ struct list_head percpu_list; /* * Defer freeing channel until after all cpu's have * gone through grace period. */ struct rcu_head rcu; /* * For sysfs per-channel properties. */ struct kobject kobj; /* * For performance critical channels (storage, networking * etc,), Hyper-V has a mechanism to enhance the throughput * at the expense of latency: * When the host is to be signaled, we just set a bit in a shared page * and this bit will be inspected by the hypervisor within a certain * window and if the bit is set, the host will be signaled. The window * of time is the monitor latency - currently around 100 usecs. This * mechanism improves throughput by: * * A) Making the host more efficient - each time it wakes up, * potentially it will process morev number of packets. The * monitor latency allows a batch to build up. * B) By deferring the hypercall to signal, we will also minimize * the interrupts. * * Clearly, these optimizations improve throughput at the expense of * latency. Furthermore, since the channel is shared for both * control and data messages, control messages currently suffer * unnecessary latency adversley impacting performance and boot * time. To fix this issue, permit tagging the channel as being * in "low latency" mode. In this mode, we will bypass the monitor * mechanism. */ bool low_latency; /* * NUMA distribution policy: * We support two policies: * 1) Balanced: Here all performance critical channels are * distributed evenly amongst all the NUMA nodes. * This policy will be the default policy. * 2) Localized: All channels of a given instance of a * performance critical service will be assigned CPUs * within a selected NUMA node. */ enum hv_numa_policy affinity_policy; bool probe_done; /* * We must offload the handling of the primary/sub channels * from the single-threaded vmbus_connection.work_queue to * two different workqueue, otherwise we can block * vmbus_connection.work_queue and hang: see vmbus_process_offer(). */ struct work_struct add_channel_work; /* * Guest to host interrupts caused by the inbound ring buffer changing * from full to not full while a packet is waiting. */ u64 intr_in_full; /* * The total number of write operations that encountered a full * outbound ring buffer. */ u64 out_full_total; /* * The number of write operations that were the first to encounter a * full outbound ring buffer. */ u64 out_full_first; }; static inline bool is_hvsock_channel(const struct vmbus_channel *c) { return !!(c->offermsg.offer.chn_flags & VMBUS_CHANNEL_TLNPI_PROVIDER_OFFER); } static inline bool is_sub_channel(const struct vmbus_channel *c) { return c->offermsg.offer.sub_channel_index != 0; } static inline void set_channel_affinity_state(struct vmbus_channel *c, enum hv_numa_policy policy) { c->affinity_policy = policy; } static inline void set_channel_read_mode(struct vmbus_channel *c, enum hv_callback_mode mode) { c->callback_mode = mode; } static inline void set_per_channel_state(struct vmbus_channel *c, void *s) { c->per_channel_state = s; } static inline void *get_per_channel_state(struct vmbus_channel *c) { return c->per_channel_state; } static inline void set_channel_pending_send_size(struct vmbus_channel *c, u32 size) { unsigned long flags; if (size) { spin_lock_irqsave(&c->outbound.ring_lock, flags); ++c->out_full_total; if (!c->out_full_flag) { ++c->out_full_first; c->out_full_flag = true; } spin_unlock_irqrestore(&c->outbound.ring_lock, flags); } else { c->out_full_flag = false; } c->outbound.ring_buffer->pending_send_sz = size; } static inline void set_low_latency_mode(struct vmbus_channel *c) { c->low_latency = true; } static inline void clear_low_latency_mode(struct vmbus_channel *c) { c->low_latency = false; } void vmbus_onmessage(void *context); int vmbus_request_offers(void); /* * APIs for managing sub-channels. */ void vmbus_set_sc_create_callback(struct vmbus_channel *primary_channel, void (*sc_cr_cb)(struct vmbus_channel *new_sc)); void vmbus_set_chn_rescind_callback(struct vmbus_channel *channel, void (*chn_rescind_cb)(struct vmbus_channel *)); /* * Check if sub-channels have already been offerred. This API will be useful * when the driver is unloaded after establishing sub-channels. In this case, * when the driver is re-loaded, the driver would have to check if the * subchannels have already been established before attempting to request * the creation of sub-channels. * This function returns TRUE to indicate that subchannels have already been * created. * This function should be invoked after setting the callback function for * sub-channel creation. */ bool vmbus_are_subchannels_present(struct vmbus_channel *primary); /* The format must be the same as struct vmdata_gpa_direct */ struct vmbus_channel_packet_page_buffer { u16 type; u16 dataoffset8; u16 length8; u16 flags; u64 transactionid; u32 reserved; u32 rangecount; struct hv_page_buffer range[MAX_PAGE_BUFFER_COUNT]; } __packed; /* The format must be the same as struct vmdata_gpa_direct */ struct vmbus_channel_packet_multipage_buffer { u16 type; u16 dataoffset8; u16 length8; u16 flags; u64 transactionid; u32 reserved; u32 rangecount; /* Always 1 in this case */ struct hv_multipage_buffer range; } __packed; /* The format must be the same as struct vmdata_gpa_direct */ struct vmbus_packet_mpb_array { u16 type; u16 dataoffset8; u16 length8; u16 flags; u64 transactionid; u32 reserved; u32 rangecount; /* Always 1 in this case */ struct hv_mpb_array range; } __packed; int vmbus_alloc_ring(struct vmbus_channel *channel, u32 send_size, u32 recv_size); void vmbus_free_ring(struct vmbus_channel *channel); int vmbus_connect_ring(struct vmbus_channel *channel, void (*onchannel_callback)(void *context), void *context); int vmbus_disconnect_ring(struct vmbus_channel *channel); extern int vmbus_open(struct vmbus_channel *channel, u32 send_ringbuffersize, u32 recv_ringbuffersize, void *userdata, u32 userdatalen, void (*onchannel_callback)(void *context), void *context); extern void vmbus_close(struct vmbus_channel *channel); extern int vmbus_sendpacket(struct vmbus_channel *channel, void *buffer, u32 bufferLen, u64 requestid, enum vmbus_packet_type type, u32 flags); extern int vmbus_sendpacket_pagebuffer(struct vmbus_channel *channel, struct hv_page_buffer pagebuffers[], u32 pagecount, void *buffer, u32 bufferlen, u64 requestid); extern int vmbus_sendpacket_mpb_desc(struct vmbus_channel *channel, struct vmbus_packet_mpb_array *mpb, u32 desc_size, void *buffer, u32 bufferlen, u64 requestid); extern int vmbus_establish_gpadl(struct vmbus_channel *channel, void *kbuffer, u32 size, u32 *gpadl_handle); extern int vmbus_teardown_gpadl(struct vmbus_channel *channel, u32 gpadl_handle); void vmbus_reset_channel_cb(struct vmbus_channel *channel); extern int vmbus_recvpacket(struct vmbus_channel *channel, void *buffer, u32 bufferlen, u32 *buffer_actual_len, u64 *requestid); extern int vmbus_recvpacket_raw(struct vmbus_channel *channel, void *buffer, u32 bufferlen, u32 *buffer_actual_len, u64 *requestid); extern void vmbus_ontimer(unsigned long data); /* Base driver object */ struct hv_driver { const char *name; /* * A hvsock offer, which has a VMBUS_CHANNEL_TLNPI_PROVIDER_OFFER * channel flag, actually doesn't mean a synthetic device because the * offer's if_type/if_instance can change for every new hvsock * connection. * * However, to facilitate the notification of new-offer/rescind-offer * from vmbus driver to hvsock driver, we can handle hvsock offer as * a special vmbus device, and hence we need the below flag to * indicate if the driver is the hvsock driver or not: we need to * specially treat the hvosck offer & driver in vmbus_match(). */ bool hvsock; /* the device type supported by this driver */ guid_t dev_type; const struct hv_vmbus_device_id *id_table; struct device_driver driver; /* dynamic device GUID's */ struct { spinlock_t lock; struct list_head list; } dynids; int (*probe)(struct hv_device *, const struct hv_vmbus_device_id *); int (*remove)(struct hv_device *); void (*shutdown)(struct hv_device *); int (*suspend)(struct hv_device *); int (*resume)(struct hv_device *); }; /* Base device object */ struct hv_device { /* the device type id of this device */ guid_t dev_type; /* the device instance id of this device */ guid_t dev_instance; u16 vendor_id; u16 device_id; struct device device; char *driver_override; /* Driver name to force a match */ struct vmbus_channel *channel; struct kset *channels_kset; }; static inline struct hv_device *device_to_hv_device(struct device *d) { return container_of(d, struct hv_device, device); } static inline struct hv_driver *drv_to_hv_drv(struct device_driver *d) { return container_of(d, struct hv_driver, driver); } static inline void hv_set_drvdata(struct hv_device *dev, void *data) { dev_set_drvdata(&dev->device, data); } static inline void *hv_get_drvdata(struct hv_device *dev) { return dev_get_drvdata(&dev->device); } struct hv_ring_buffer_debug_info { u32 current_interrupt_mask; u32 current_read_index; u32 current_write_index; u32 bytes_avail_toread; u32 bytes_avail_towrite; }; int hv_ringbuffer_get_debuginfo(struct hv_ring_buffer_info *ring_info, struct hv_ring_buffer_debug_info *debug_info); /* Vmbus interface */ #define vmbus_driver_register(driver) \ __vmbus_driver_register(driver, THIS_MODULE, KBUILD_MODNAME) int __must_check __vmbus_driver_register(struct hv_driver *hv_driver, struct module *owner, const char *mod_name); void vmbus_driver_unregister(struct hv_driver *hv_driver); void vmbus_hvsock_device_unregister(struct vmbus_channel *channel); int vmbus_allocate_mmio(struct resource **new, struct hv_device *device_obj, resource_size_t min, resource_size_t max, resource_size_t size, resource_size_t align, bool fb_overlap_ok); void vmbus_free_mmio(resource_size_t start, resource_size_t size); /* * GUID definitions of various offer types - services offered to the guest. */ /* * Network GUID * {f8615163-df3e-46c5-913f-f2d2f965ed0e} */ #define HV_NIC_GUID \ .guid = GUID_INIT(0xf8615163, 0xdf3e, 0x46c5, 0x91, 0x3f, \ 0xf2, 0xd2, 0xf9, 0x65, 0xed, 0x0e) /* * IDE GUID * {32412632-86cb-44a2-9b5c-50d1417354f5} */ #define HV_IDE_GUID \ .guid = GUID_INIT(0x32412632, 0x86cb, 0x44a2, 0x9b, 0x5c, \ 0x50, 0xd1, 0x41, 0x73, 0x54, 0xf5) /* * SCSI GUID * {ba6163d9-04a1-4d29-b605-72e2ffb1dc7f} */ #define HV_SCSI_GUID \ .guid = GUID_INIT(0xba6163d9, 0x04a1, 0x4d29, 0xb6, 0x05, \ 0x72, 0xe2, 0xff, 0xb1, 0xdc, 0x7f) /* * Shutdown GUID * {0e0b6031-5213-4934-818b-38d90ced39db} */ #define HV_SHUTDOWN_GUID \ .guid = GUID_INIT(0x0e0b6031, 0x5213, 0x4934, 0x81, 0x8b, \ 0x38, 0xd9, 0x0c, 0xed, 0x39, 0xdb) /* * Time Synch GUID * {9527E630-D0AE-497b-ADCE-E80AB0175CAF} */ #define HV_TS_GUID \ .guid = GUID_INIT(0x9527e630, 0xd0ae, 0x497b, 0xad, 0xce, \ 0xe8, 0x0a, 0xb0, 0x17, 0x5c, 0xaf) /* * Heartbeat GUID * {57164f39-9115-4e78-ab55-382f3bd5422d} */ #define HV_HEART_BEAT_GUID \ .guid = GUID_INIT(0x57164f39, 0x9115, 0x4e78, 0xab, 0x55, \ 0x38, 0x2f, 0x3b, 0xd5, 0x42, 0x2d) /* * KVP GUID * {a9a0f4e7-5a45-4d96-b827-8a841e8c03e6} */ #define HV_KVP_GUID \ .guid = GUID_INIT(0xa9a0f4e7, 0x5a45, 0x4d96, 0xb8, 0x27, \ 0x8a, 0x84, 0x1e, 0x8c, 0x03, 0xe6) /* * Dynamic memory GUID * {525074dc-8985-46e2-8057-a307dc18a502} */ #define HV_DM_GUID \ .guid = GUID_INIT(0x525074dc, 0x8985, 0x46e2, 0x80, 0x57, \ 0xa3, 0x07, 0xdc, 0x18, 0xa5, 0x02) /* * Mouse GUID * {cfa8b69e-5b4a-4cc0-b98b-8ba1a1f3f95a} */ #define HV_MOUSE_GUID \ .guid = GUID_INIT(0xcfa8b69e, 0x5b4a, 0x4cc0, 0xb9, 0x8b, \ 0x8b, 0xa1, 0xa1, 0xf3, 0xf9, 0x5a) /* * Keyboard GUID * {f912ad6d-2b17-48ea-bd65-f927a61c7684} */ #define HV_KBD_GUID \ .guid = GUID_INIT(0xf912ad6d, 0x2b17, 0x48ea, 0xbd, 0x65, \ 0xf9, 0x27, 0xa6, 0x1c, 0x76, 0x84) /* * VSS (Backup/Restore) GUID */ #define HV_VSS_GUID \ .guid = GUID_INIT(0x35fa2e29, 0xea23, 0x4236, 0x96, 0xae, \ 0x3a, 0x6e, 0xba, 0xcb, 0xa4, 0x40) /* * Synthetic Video GUID * {DA0A7802-E377-4aac-8E77-0558EB1073F8} */ #define HV_SYNTHVID_GUID \ .guid = GUID_INIT(0xda0a7802, 0xe377, 0x4aac, 0x8e, 0x77, \ 0x05, 0x58, 0xeb, 0x10, 0x73, 0xf8) /* * Synthetic FC GUID * {2f9bcc4a-0069-4af3-b76b-6fd0be528cda} */ #define HV_SYNTHFC_GUID \ .guid = GUID_INIT(0x2f9bcc4a, 0x0069, 0x4af3, 0xb7, 0x6b, \ 0x6f, 0xd0, 0xbe, 0x52, 0x8c, 0xda) /* * Guest File Copy Service * {34D14BE3-DEE4-41c8-9AE7-6B174977C192} */ #define HV_FCOPY_GUID \ .guid = GUID_INIT(0x34d14be3, 0xdee4, 0x41c8, 0x9a, 0xe7, \ 0x6b, 0x17, 0x49, 0x77, 0xc1, 0x92) /* * NetworkDirect. This is the guest RDMA service. * {8c2eaf3d-32a7-4b09-ab99-bd1f1c86b501} */ #define HV_ND_GUID \ .guid = GUID_INIT(0x8c2eaf3d, 0x32a7, 0x4b09, 0xab, 0x99, \ 0xbd, 0x1f, 0x1c, 0x86, 0xb5, 0x01) /* * PCI Express Pass Through * {44C4F61D-4444-4400-9D52-802E27EDE19F} */ #define HV_PCIE_GUID \ .guid = GUID_INIT(0x44c4f61d, 0x4444, 0x4400, 0x9d, 0x52, \ 0x80, 0x2e, 0x27, 0xed, 0xe1, 0x9f) /* * Linux doesn't support the 3 devices: the first two are for * Automatic Virtual Machine Activation, and the third is for * Remote Desktop Virtualization. * {f8e65716-3cb3-4a06-9a60-1889c5cccab5} * {3375baf4-9e15-4b30-b765-67acb10d607b} * {276aacf4-ac15-426c-98dd-7521ad3f01fe} */ #define HV_AVMA1_GUID \ .guid = GUID_INIT(0xf8e65716, 0x3cb3, 0x4a06, 0x9a, 0x60, \ 0x18, 0x89, 0xc5, 0xcc, 0xca, 0xb5) #define HV_AVMA2_GUID \ .guid = GUID_INIT(0x3375baf4, 0x9e15, 0x4b30, 0xb7, 0x65, \ 0x67, 0xac, 0xb1, 0x0d, 0x60, 0x7b) #define HV_RDV_GUID \ .guid = GUID_INIT(0x276aacf4, 0xac15, 0x426c, 0x98, 0xdd, \ 0x75, 0x21, 0xad, 0x3f, 0x01, 0xfe) /* * Common header for Hyper-V ICs */ #define ICMSGTYPE_NEGOTIATE 0 #define ICMSGTYPE_HEARTBEAT 1 #define ICMSGTYPE_KVPEXCHANGE 2 #define ICMSGTYPE_SHUTDOWN 3 #define ICMSGTYPE_TIMESYNC 4 #define ICMSGTYPE_VSS 5 #define ICMSGHDRFLAG_TRANSACTION 1 #define ICMSGHDRFLAG_REQUEST 2 #define ICMSGHDRFLAG_RESPONSE 4 /* * While we want to handle util services as regular devices, * there is only one instance of each of these services; so * we statically allocate the service specific state. */ struct hv_util_service { u8 *recv_buffer; void *channel; void (*util_cb)(void *); int (*util_init)(struct hv_util_service *); void (*util_deinit)(void); }; struct vmbuspipe_hdr { u32 flags; u32 msgsize; } __packed; struct ic_version { u16 major; u16 minor; } __packed; struct icmsg_hdr { struct ic_version icverframe; u16 icmsgtype; struct ic_version icvermsg; u16 icmsgsize; u32 status; u8 ictransaction_id; u8 icflags; u8 reserved[2]; } __packed; struct icmsg_negotiate { u16 icframe_vercnt; u16 icmsg_vercnt; u32 reserved; struct ic_version icversion_data[1]; /* any size array */ } __packed; struct shutdown_msg_data { u32 reason_code; u32 timeout_seconds; u32 flags; u8 display_message[2048]; } __packed; struct heartbeat_msg_data { u64 seq_num; u32 reserved[8]; } __packed; /* Time Sync IC defs */ #define ICTIMESYNCFLAG_PROBE 0 #define ICTIMESYNCFLAG_SYNC 1 #define ICTIMESYNCFLAG_SAMPLE 2 #ifdef __x86_64__ #define WLTIMEDELTA 116444736000000000L /* in 100ns unit */ #else #define WLTIMEDELTA 116444736000000000LL #endif struct ictimesync_data { u64 parenttime; u64 childtime; u64 roundtriptime; u8 flags; } __packed; struct ictimesync_ref_data { u64 parenttime; u64 vmreferencetime; u8 flags; char leapflags; char stratum; u8 reserved[3]; } __packed; struct hyperv_service_callback { u8 msg_type; char *log_msg; guid_t data; struct vmbus_channel *channel; void (*callback)(void *context); }; #define MAX_SRV_VER 0x7ffffff extern bool vmbus_prep_negotiate_resp(struct icmsg_hdr *icmsghdrp, u8 *buf, const int *fw_version, int fw_vercnt, const int *srv_version, int srv_vercnt, int *nego_fw_version, int *nego_srv_version); void hv_process_channel_removal(struct vmbus_channel *channel); void vmbus_setevent(struct vmbus_channel *channel); /* * Negotiated version with the Host. */ extern __u32 vmbus_proto_version; int vmbus_send_tl_connect_request(const guid_t *shv_guest_servie_id, const guid_t *shv_host_servie_id); void vmbus_set_event(struct vmbus_channel *channel); /* Get the start of the ring buffer. */ static inline void * hv_get_ring_buffer(const struct hv_ring_buffer_info *ring_info) { return ring_info->ring_buffer->buffer; } /* * Mask off host interrupt callback notifications */ static inline void hv_begin_read(struct hv_ring_buffer_info *rbi) { rbi->ring_buffer->interrupt_mask = 1; /* make sure mask update is not reordered */ virt_mb(); } /* * Re-enable host callback and return number of outstanding bytes */ static inline u32 hv_end_read(struct hv_ring_buffer_info *rbi) { rbi->ring_buffer->interrupt_mask = 0; /* make sure mask update is not reordered */ virt_mb(); /* * Now check to see if the ring buffer is still empty. * If it is not, we raced and we need to process new * incoming messages. */ return hv_get_bytes_to_read(rbi); } /* * An API to support in-place processing of incoming VMBUS packets. */ /* Get data payload associated with descriptor */ static inline void *hv_pkt_data(const struct vmpacket_descriptor *desc) { return (void *)((unsigned long)desc + (desc->offset8 << 3)); } /* Get data size associated with descriptor */ static inline u32 hv_pkt_datalen(const struct vmpacket_descriptor *desc) { return (desc->len8 << 3) - (desc->offset8 << 3); } struct vmpacket_descriptor * hv_pkt_iter_first(struct vmbus_channel *channel); struct vmpacket_descriptor * __hv_pkt_iter_next(struct vmbus_channel *channel, const struct vmpacket_descriptor *pkt); void hv_pkt_iter_close(struct vmbus_channel *channel); /* * Get next packet descriptor from iterator * If at end of list, return NULL and update host. */ static inline struct vmpacket_descriptor * hv_pkt_iter_next(struct vmbus_channel *channel, const struct vmpacket_descriptor *pkt) { struct vmpacket_descriptor *nxt; nxt = __hv_pkt_iter_next(channel, pkt); if (!nxt) hv_pkt_iter_close(channel); return nxt; } #define foreach_vmbus_pkt(pkt, channel) \ for (pkt = hv_pkt_iter_first(channel); pkt; \ pkt = hv_pkt_iter_next(channel, pkt)) /* * Interface for passing data between SR-IOV PF and VF drivers. The VF driver * sends requests to read and write blocks. Each block must be 128 bytes or * smaller. Optionally, the VF driver can register a callback function which * will be invoked when the host says that one or more of the first 64 block * IDs is "invalid" which means that the VF driver should reread them. */ #define HV_CONFIG_BLOCK_SIZE_MAX 128 int hyperv_read_cfg_blk(struct pci_dev *dev, void *buf, unsigned int buf_len, unsigned int block_id, unsigned int *bytes_returned); int hyperv_write_cfg_blk(struct pci_dev *dev, void *buf, unsigned int len, unsigned int block_id); int hyperv_reg_block_invalidate(struct pci_dev *dev, void *context, void (*block_invalidate)(void *context, u64 block_mask)); struct hyperv_pci_block_ops { int (*read_block)(struct pci_dev *dev, void *buf, unsigned int buf_len, unsigned int block_id, unsigned int *bytes_returned); int (*write_block)(struct pci_dev *dev, void *buf, unsigned int len, unsigned int block_id); int (*reg_blk_invalidate)(struct pci_dev *dev, void *context, void (*block_invalidate)(void *context, u64 block_mask)); }; extern struct hyperv_pci_block_ops hvpci_block_ops; #endif /* _HYPERV_H */
Close