Files
nv-kernel-display-driver/kernel-open/conftest.sh
svcmobrel-release cfdc1a1644 Updating prebuilts and/or headers
d13779dbbab1c776db15f462cd46b29f2c0f8c7c - Makefile
7d577fdb9594ae572ff38fdda682a4796ab832ca - COPYING
5728867ce2e96b63b29367be6aa1c0e47bcafc8f - SECURITY.md
6b73bf6a534ddc0f64e8ba88739381c3b7fb4b5c - nv-compiler.sh
ac7f91dfb6c5c469d2d8196c6baebe46ede5aee0 - CHANGELOG.md
fb30136834a37c3b273df8352db5bcc1f46b3d7d - README.md
ec5f1eb408e0b650158e0310fb1ddd8e9b323a6f - CONTRIBUTING.md
af3ee56442f16029cb9b13537477c384226b22fc - CODE_OF_CONDUCT.md
e3d628e13e13e8f4b886c88d8b22adfbf3217a54 - kernel-open/Kbuild
4f4410c3c8db46e5a98d7a35f7d909a49de6cb43 - kernel-open/Makefile
3f1d791899ab2db1d55cc73ec56fc11c9bef67cb - kernel-open/conftest.sh
0b1508742a1c5a04b6c3a4be1b48b506f4180848 - kernel-open/dkms.conf
19a5da412ce1557b721b8550a4a80196f6162ba6 - kernel-open/common/inc/os_dsi_panel_props.h
4750735d6f3b334499c81d499a06a654a052713d - kernel-open/common/inc/nv-caps.h
60ef64c0f15526ae2d786e5cec07f28570f0663b - kernel-open/common/inc/conftest.h
880e45b68b19fdb91ac94991f0e6d7fc3b406b1f - kernel-open/common/inc/nv-pci-types.h
03257213e55fff1c07c75c6dcf69afa920372822 - kernel-open/common/inc/nvtypes.h
c45b2faf17ca2a205c56daa11e3cb9d864be2238 - kernel-open/common/inc/nv-modeset-interface.h
e42d91cd7e6c17796fa89a172146950261f45d42 - kernel-open/common/inc/nv-lock.h
b249abc0a7d0c9889008e98cb2f8515a9d310b85 - kernel-open/common/inc/nvgputypes.h
e4a4f57abb8769d204468b2f5000c81f5ea7c92f - kernel-open/common/inc/nv-procfs.h
fc319569799d54944cd09b0e170e29d67b33072d - kernel-open/common/inc/nv.h
751abf80513898b35a6449725e27724b1e23ac50 - kernel-open/common/inc/nvmisc.h
e1144f5bd643d24f67b7577c16c687294cb50d39 - kernel-open/common/inc/rm-gpu-ops.h
3f7b20e27e6576ee1f2f0557d269697a0b8af7ec - kernel-open/common/inc/nv-firmware-registry.h
5fd1da24ae8263c43dc5dada4702564b6f0ca3d9 - kernel-open/common/inc/dce_rm_client_ipc.h
1c49c1642d44ec347f82ff0aa06d0fca6213bad2 - kernel-open/common/inc/nvimpshared.h
befb2c0bf0a31b61be5469575ce3c73a9204f4e9 - kernel-open/common/inc/nv_stdarg.h
0e70d16576584082ee4c7f3ff9944f3bd107b1c1 - kernel-open/common/inc/cpuopsys.h
d7ab0ee225361daacd280ff98848851933a10a98 - kernel-open/common/inc/nv-list-helpers.h
b02c378ac0521c380fc2403f0520949f785b1db6 - kernel-open/common/inc/nv-dmabuf.h
689d6be9302d488000e57a329373feeb14e93798 - kernel-open/common/inc/nv-procfs-utils.h
b417d06ed1845f5ed69181d8eb9de6b6a87fa973 - kernel-open/common/inc/nv-firmware.h
d5253e7e4abd3ad8d72375260aa80037adcd8973 - kernel-open/common/inc/nv_dpy_id.h
a69cfed9725a8ade97036a1cb795e9144be1836d - kernel-open/common/inc/nv-platform.h
b986bc6591ba17a74ad81ec4c93347564c6d5165 - kernel-open/common/inc/nvkms-format.h
fa267c903e9c449e62dbb6945906400d43417eff - kernel-open/common/inc/nvlimits.h
143051f69a53db0e7c5d2f846a9c14d666e264b4 - kernel-open/common/inc/nv-kref.h
3603c631c6cf784ec862e4e45f05939d98679002 - kernel-open/common/inc/nv-kthread-q.h
b4c5d759f035b540648117b1bff6b1701476a398 - kernel-open/common/inc/nvCpuUuid.h
a0c57e8ffbe1ae12de70e56b740737dae5394a18 - kernel-open/common/inc/nv-linux.h
4a8b7f3cc65fa530670f510796bef51cf8c4bb6b - kernel-open/common/inc/nv-register-module.h
5cf4b517c9bd8f14593c1a6450078a774a39dd08 - kernel-open/common/inc/nv-hypervisor.h
b7f5d125ca0cbd4631012894b635a58cfc9f8e06 - kernel-open/common/inc/nv-pgprot.h
4a97d807a225d792544578f8112c9a3f90cc38f6 - kernel-open/common/inc/nvstatuscodes.h
7b2e2e6ff278acddc6980b330f68e374f38e0a6c - kernel-open/common/inc/nv-timer.h
d25291d32caef187daf3589ce4976e4fa6bec70d - kernel-open/common/inc/nv-time.h
906329ae5773732896e6fe94948f7674d0b04c17 - kernel-open/common/inc/os_gpio.h
57937fb42f6fb312f7c3cf63aa399e43bad13c8c - kernel-open/common/inc/nv-proto.h
507d35d1d4c5ba94ef975f75e16c63244d6cd650 - kernel-open/common/inc/nv-ioctl.h
3665b1e35c52be6b971ab5117ce614109e110b7d - kernel-open/common/inc/nv-mm.h
4856fe869a5f3141e5d7f7d1b0a6affad94cbc31 - kernel-open/common/inc/nv-pci.h
95bf694a98ba78d5a19e66463b8adda631e6ce4c - kernel-open/common/inc/nvstatus.h
b15c5fe5d969414640a2cb374b707c230e7597e4 - kernel-open/common/inc/nv-hash.h
61a60660761e90aa622af2fda482d69473ab40d4 - kernel-open/common/inc/nvkms-kapi.h
f428218ee6f5d0289602495a1cfb287db4fb0823 - kernel-open/common/inc/nv_uvm_interface.h
1e7eec6561b04d2d21c3515987aaa116e9401c1f - kernel-open/common/inc/nv-kernel-interface-api.h
b3d26ddf643e0bd98847ee56b930c14d06cadf89 - kernel-open/common/inc/nvkms-api-types.h
c9120c6a33932c7514608601f82ea85d2386b84f - kernel-open/common/inc/os-interface.h
ceac0fe7333f3a67b8fb63de42ab567dd905949f - kernel-open/common/inc/nv-ioctl-numa.h
995d8447f8539bd736cc09d62983ae8ebc7e3436 - kernel-open/common/inc/nv_common_utils.h
c75bfc368c6ce3fc2c1a0c5062834e90d822b365 - kernel-open/common/inc/nv-memdbg.h
1d17329caf26cdf931122b3c3b7edf4932f43c38 - kernel-open/common/inc/nv-msi.h
3b12d770f8592b94a8c7774c372e80ad08c5774c - kernel-open/common/inc/nvi2c.h
e20882a9b14f2bf887e7465d3f238e5ac17bc2f5 - kernel-open/common/inc/nv_speculation_barrier.h
1d8b347e4b92c340a0e9eac77e0f63b9fb4ae977 - kernel-open/common/inc/nv-ioctl-numbers.h
891192c9aabdb45fb4a798cc24cd89d205972d3f - kernel-open/common/inc/nv_uvm_types.h
b642fb649ce2ba17f37c8aa73f61b38f99a74986 - kernel-open/common/inc/nv-retpoline.h
3a26838c4edd3525daa68ac6fc7b06842dc6fc07 - kernel-open/common/inc/nv-gpu-info.h
cda75171ca7d8bf920aab6d56ef9aadec16fd15d - kernel-open/common/inc/os/nv_memory_type.h
e0a37b715684ae0f434327e4ce1b5832caf7ea4e - kernel-open/nvidia/nv-nano-timer.c
1a98a2aaf386cd3d03b4b5513d6a511c60f71c2c - kernel-open/nvidia/nv-reg.h
363185059b03b6756b434c6ba9a2ebd79a888cf0 - kernel-open/nvidia/nv-imp.c
b8d361216db85fe897cbced2a9600507b7708c61 - kernel-open/nvidia/libspdm_hkdf_sha.c
64f1c96761f6d9e7e02ab049dd0c810196568036 - kernel-open/nvidia/nv-pat.c
946fb049ca50c9bb39897eca4b8443278043eea2 - kernel-open/nvidia/nv-vm.c
4e5a330fa40dab218821976ac1b530c649d48994 - kernel-open/nvidia/libspdm_ecc.c
94c406f36836c3396b0ca08b4ff71496666b9c43 - kernel-open/nvidia/os-usermap.c
7ac10bc4b3b1c5a261388c3f5f9ce0e9b35d7b44 - kernel-open/nvidia/nv-usermap.c
7af675f85642229b7e7de05dcadd622550fe7ad7 - kernel-open/nvidia/nv-vtophys.c
d11ab03a617b29efcf00f85e24ebce60f91cf82c - kernel-open/nvidia/nv-backlight.c
ef8fd76c55625aeaa71c9b789c4cf519ef6116b2 - kernel-open/nvidia/libspdm_hkdf.c
cf90d9ea3abced81d182ab3c4161e1b5d3ad280d - kernel-open/nvidia/nv-rsync.h
6710f4603a9d3e14bcaefdf415b1cfff9ec9b7ec - kernel-open/nvidia/libspdm_aead.c
d68af9144d3d487308e73d0a52f4474f8047d6ca - kernel-open/nvidia/nv-gpio.c
fc22bea3040ae178492cb9c7a62f1d0012b1c113 - kernel-open/nvidia/nv-procfs.c
aa6cf0ed774330e4afe4eaa55b3463ed31a2f7ae - kernel-open/nvidia/nv.c
6047676c00c8396d7c9f5192b873377a42bb8988 - kernel-open/nvidia/nv-dsi-parse-panel-props.c
9104dc5f36a825aaf1208b54b167965625d4a433 - kernel-open/nvidia/nv_uvm_interface.c
fbae5663e3c278d8206d07ec6446ca4c2781795f - kernel-open/nvidia/nv-ibmnpu.h
ab04c42e0e8e7f48f1a7074885278bbb6006d65f - kernel-open/nvidia/nv-bpmp.c
01d4701e8302e345275f1ec60b9718e645b5663c - kernel-open/nvidia/libspdm_x509.c
e5cd40b060a69cf71220c910e9428d7f261892f7 - kernel-open/nvidia/internal_crypt_lib.h
dc39c4ee87f4dc5f5ccc179a98e07ddb82bb8bce - kernel-open/nvidia/nv-modeset-interface.c
70a9117dce7471a07178d9456b146a033d6b544b - kernel-open/nvidia/nv-dma.c
0a3ad5cdacfe156b02f53c0087bdc0ec9509cd6a - kernel-open/nvidia/nv-ipc-soc.c
06e7ec77cd21c43f900984553a4960064753e444 - kernel-open/nvidia/nv-platform-pm.c
04596e9a57955df30de2f21122aa7e38f3c8825a - kernel-open/nvidia/os-mlock.c
646e6b03521587cc1a02617afd697183e5d1a83a - kernel-open/nvidia/nv-kthread-q.c
94344ec0af21bd9c7c7ab912f7bd3a8668a3e0aa - kernel-open/nvidia/os-pci.c
6e669fe32e4b69dcdbc9739dc8a45fb800547d53 - kernel-open/nvidia/nv-p2p.c
d9221522e02e18b037b8929fbc075dc3c1e58654 - kernel-open/nvidia/nv-pci-table.c
e8daae4e6106429378673988293aaa1fcd80f0eb - kernel-open/nvidia/nv-pci.c
57a06cab892f111b0fb1ebe182c0c688560e750e - kernel-open/nvidia/nvspdm_cryptlib_extensions.h
8c9fd9590d7e3ad333ae03d5f22b72ffbdbe6e70 - kernel-open/nvidia/nv-dmabuf.c
6d4fbea733fdcd92fc6a8a5884e8bb359f9e8abd - kernel-open/nvidia/rmp2pdefines.h
b71bf4426322ab59e78e2a1500509a5f4b2b71ab - kernel-open/nvidia/nv-pat.h
bb4b87fbfa85a21af5b3ed26cc8ff5cbaae78266 - kernel-open/nvidia/os-interface.c
ce537a7d786bd11a4429bf7c59836d5373a66f61 - kernel-open/nvidia/nv-i2c.c
8bedc7374d7a43250e49fb09139c511b489d45e3 - kernel-open/nvidia/nv-pci-table.h
c7f1aaa6a5f3a3cdf1e5f80adf40b3c9f185fb94 - kernel-open/nvidia/nv-report-err.c
3b27e4eaa97bd6fa71f1a075b50af69b1ec16454 - kernel-open/nvidia/libspdm_ec.c
dd9e367cba9e0672c998ec6d570be38084a365ab - kernel-open/nvidia/libspdm_rand.c
37654472e65659be229b5e35c6f25c0724929511 - kernel-open/nvidia/nv-frontend.c
8f87a475c202458948025d1521968677fc11dd50 - kernel-open/nvidia/nv-msi.c
45cdfeaf7b31b7891b19840f17a996b382806f1c - kernel-open/nvidia/nv-platform.c
dd819a875c584bc469082fcf519779ea00b1d952 - kernel-open/nvidia/libspdm_aead_aes_gcm.c
69f203ad21e643f7b7c85e7e86bd4b674a3536de - kernel-open/nvidia/nv-acpi.c
cf98395acb4430a7c105218f7a4b5f7e810b39cf - kernel-open/nvidia/os-registry.c
4eee7319202366822e17d29ecec9f662c075e7ac - kernel-open/nvidia/nv-rsync.c
980556d84bc56e819955b9338a43a9d970dba11d - kernel-open/nvidia/nv_gpu_ops.h
642c3a7d10b263ab9a63073f83ad843566927b58 - kernel-open/nvidia/libspdm_hmac_sha.c
86443277db67b64c70260e5668bb4140bc90165c - kernel-open/nvidia/nv-clk.c
4c64885083621f5f313a7dee72e14eee8abed2a0 - kernel-open/nvidia/nvidia-sources.Kbuild
2fab5ae911554508e6e7a3b25824e8b2c27e85c2 - kernel-open/nvidia/nv-ibmnpu.c
9883eb32e5d4377c3dce1c7cb54d0e05c05e128b - kernel-open/nvidia/nv-mmap.c
68d781e929d103e6fa55fa92b5d4f933fbfb6526 - kernel-open/nvidia/nv-report-err.h
95ae148b016e4111122c2d9f8f004b53e78998f3 - kernel-open/nvidia/nv-memdbg.c
4de56ccb102fd148feaaa08002db0a5ea129a61a - kernel-open/nvidia/nvidia.Kbuild
6060392eec4e707ac61ebca3995b6a966eba7fc1 - kernel-open/nvidia/nv-p2p.h
7b1bd10726481626dd51f4eebb693794561c20f6 - kernel-open/nvidia/nv-host1x.c
11778961efc78ef488be5387fa3de0c1b761c0d9 - kernel-open/nvidia/libspdm_sha.c
02b1936dd9a9e30141245209d79b8304b7f12eb9 - kernel-open/nvidia/nv-cray.c
2f6e4c6ee6f809097c8b07a7b698e8614bf25e57 - kernel-open/nvidia/nv-caps.c
9b701fe42a0e87d62c58b15c553086a608e89f7b - kernel-open/nvidia/nv-frontend.h
d2ce61cd7fc2c0d384f9caa40e98bdeb032bab86 - kernel-open/nvidia/libspdm_shash.c
fa178a7209f56008e67b553a2c5ad1b2dd383aac - kernel-open/nvidia/hal/library/cryptlib/cryptlib_rng.h
34de62da6f880ba8022299c77eddbb11d7fc68d2 - kernel-open/nvidia/hal/library/cryptlib/cryptlib_hash.h
95b97f5a3ddcf73ed5d7fa0be9e27aec776d7c13 - kernel-open/nvidia/hal/library/cryptlib/cryptlib_rsa.h
cf94004b7b5729982806f7d6ef7cc6db53e3de56 - kernel-open/nvidia/hal/library/cryptlib/cryptlib_aead.h
9a6e164ec60c2feb1eb8782e3028afbffe420927 - kernel-open/nvidia/hal/library/cryptlib/cryptlib_mac.h
92ab7c0bf545029c4c1d9a0ab68b53eedc655f9c - kernel-open/nvidia/hal/library/cryptlib/cryptlib_ec.h
d007df1d642e836595331598ca0313084922f3ee - kernel-open/nvidia/hal/library/cryptlib/cryptlib_sm2.h
c276be3eb63bb451edfe9ed13859c251530743e6 - kernel-open/nvidia/hal/library/cryptlib/cryptlib_ecd.h
5b79fbc90502b1ba8d1f9966fc7b9a6fd7ef07b4 - kernel-open/nvidia/hal/library/cryptlib/cryptlib_cert.h
0dcb1fd3982e6307b07c917cb453cddbcd1d2f43 - kernel-open/nvidia/hal/library/cryptlib/cryptlib_dh.h
7ff12b437215b77c920a845943e4101dcde289c4 - kernel-open/nvidia/hal/library/cryptlib/cryptlib_hkdf.h
d5ddc354e191d6178625b0df8e8b34e8c3e4c474 - kernel-open/nvidia/library/spdm_lib_config.h
19b5d633f4560d545f622ada0dd352d5aa02c651 - kernel-open/nvidia/library/cryptlib.h
7398ff33b24fa58315cc40776bc3451e090aa437 - kernel-open/nvidia/internal/libspdm_lib_config.h
44b9140286d2917ff7896b98f02d2d87bce58ee2 - kernel-open/nvidia-drm/nvidia-drm-crtc.h
7c1eb7d5d928bb5677634cedde4a234266d4344d - kernel-open/nvidia-drm/nvidia-drm-linux.c
8b2063f0cc2e328f4f986c2ce556cfb626c89810 - kernel-open/nvidia-drm/nvidia-drm-utils.c
6d65ea9f067e09831a8196022bfe00a145bec270 - kernel-open/nvidia-drm/nvidia-drm-gem-dma-buf.h
f454b9ae53a2c308d6909d197c2b9a6543f7d8c3 - kernel-open/nvidia-drm/nvidia-drm-gem-nvkms-memory.c
e1895532cf6ec0edc4b73eb169b33b8477151364 - kernel-open/nvidia-drm/nvidia-drm-modeset.c
23586447526d9ffedd7878b6cf5ba00139fadb5e - kernel-open/nvidia-drm/nvidia-drm-gem-user-memory.h
99642b76e9a84b5a1d2e2f4a8c7fb7bcd77a44fd - kernel-open/nvidia-drm/nvidia-drm.h
66b33e4ac9abe09835635f6776c1222deefad741 - kernel-open/nvidia-drm/nvidia-drm-fb.h
2eba218d75f3802d7bab34d0dd6320f872b2d604 - kernel-open/nvidia-drm/nvidia-drm-gem-nvkms-memory.h
c52acdbc07f16aa78570d9e6a7f62e493264fde1 - kernel-open/nvidia-drm/nvidia-drm-helper.c
ae6efc1bbec8a5e948b7244f4801f0b4b398f203 - kernel-open/nvidia-drm/nvidia-drm.c
86666530006fc4446d7e3bbe175ce9d3350d8d81 - kernel-open/nvidia-drm/nvidia-drm-ioctl.h
511ea7cd9e7778c6adc028ae13377c1a8856b72a - kernel-open/nvidia-drm/nvidia-drm-format.c
aedc8183ac255b270f74899cf9fd1c974fdbf00b - kernel-open/nvidia-drm/nvidia-drm-drv.h
3a1e3e14eeda27330da9fb54f798556994b8953e - kernel-open/nvidia-drm/nvidia-drm-connector.h
646e6b03521587cc1a02617afd697183e5d1a83a - kernel-open/nvidia-drm/nv-kthread-q.c
d9221522e02e18b037b8929fbc075dc3c1e58654 - kernel-open/nvidia-drm/nv-pci-table.c
eb98761cdc99141ad937966e5533c57189db376a - kernel-open/nvidia-drm/nvidia-drm-fence.h
6dfbbc39799b6578fb1f16357e8e29c14dcf455a - kernel-open/nvidia-drm/nvidia-drm-encoder.h
2529ef49fee3a01717aaabea530d94017d5c31cc - kernel-open/nvidia-drm/nvidia-drm-helper.h
2a48c9643c836a1b0a0c133afa9439b4f5ce0feb - kernel-open/nvidia-drm/nvidia-drm-os-interface.h
b83e4c3ba825a75233eaedb0ac33feed74a53ab7 - kernel-open/nvidia-drm/nvidia-drm-gem-user-memory.c
21c629706f242599f6a81380155dd00bb0d994e7 - kernel-open/nvidia-drm/nvidia-drm-drv.c
203295380efca7e422746805437b05ce22505424 - kernel-open/nvidia-drm/nvidia-drm-gem.c
cd987993109f7c020e296bf397905190a866d4ff - kernel-open/nvidia-drm/nvidia-drm-encoder.c
8bedc7374d7a43250e49fb09139c511b489d45e3 - kernel-open/nvidia-drm/nv-pci-table.h
9df641d3a2ee920c4fc68bfe19e8a11b085af03b - kernel-open/nvidia-drm/nvidia-drm-conftest.h
ec550cba2bebff2c5054b6e12fc43d81e37ade48 - kernel-open/nvidia-drm/nvidia-dma-fence-helper.h
e362c64aa67b47becdbf5c8ba2a245e135adeedf - kernel-open/nvidia-drm/nvidia-drm-gem-dma-buf.c
492a1b0b02dcd2d60f05ac670daeeddcaa4b0da5 - kernel-open/nvidia-drm/nvidia-dma-resv-helper.h
05d56aa5e69b2332dba36ed15703865533976681 - kernel-open/nvidia-drm/nvidia-drm-connector.c
97b6c56b1407de976898e0a8b5a8f38a5211f8bb - kernel-open/nvidia-drm/nvidia-drm-format.h
62b38738a83f67d0ea336cfadff1db5a5eaa8521 - kernel-open/nvidia-drm/nvidia-drm-priv.h
deb00fa4d1de972d93d8e72355d81ba87044c86f - kernel-open/nvidia-drm/nvidia-drm-fence.c
8a8b431f45bd0fe477759c1527d792cb9a1fa3f5 - kernel-open/nvidia-drm/nvidia-drm-gem.h
1b7c0e4bc236101b930a9a95a622c0031c56978d - kernel-open/nvidia-drm/nvidia-drm-modeset.h
fa3bcbf2d4b25dc6e2337bcd9d04b0c1413be3da - kernel-open/nvidia-drm/nvidia-drm.Kbuild
40b5613d1fbbe6b74bff67a5d07974ad321f75f0 - kernel-open/nvidia-drm/nvidia-drm-utils.h
8da06bd922850e840c94ed380e3b92c63aecbf70 - kernel-open/nvidia-drm/nvidia-drm-fb.c
71560a9be3b3c2cd1c85f5d781524aadb6869eed - kernel-open/nvidia-drm/nvidia-drm-crtc.c
372ea4c8e7bbc0bdeb899e6f163c8f20c663ad22 - kernel-open/nvidia-modeset/nvidia-modeset-os-interface.h
e02497b93f0f13d8e1624ff2effe417ec63bc2b0 - kernel-open/nvidia-modeset/nvidia-modeset-linux.c
0a0650835e8835d32418891a2fd25031f5d8770e - kernel-open/nvidia-modeset/nvkms.h
646e6b03521587cc1a02617afd697183e5d1a83a - kernel-open/nvidia-modeset/nv-kthread-q.c
180e72402720a8cc52eb3c0354723a5db3a3bcd3 - kernel-open/nvidia-modeset/nvidia-modeset.Kbuild
2ea1436104463c5e3d177e8574c3b4298976d37e - kernel-open/nvidia-modeset/nvkms-ioctl.h
36f9753dbbef7dd5610312d5b14bffac1a93cee4 - nouveau/nouveau_firmware_layout.ods
7ad4bb8aebd57a9be26329a611b14c5a70ccf2b7 - nouveau/extract-firmware-nouveau.py
e7a5fa74517ecd7f617860f01c5523bc5acd6432 - src/common/sdk/nvidia/inc/rs_access.h
edf1f7d1457b015aa92c12f74f9ffa1e2f86a821 - src/common/sdk/nvidia/inc/nvtypes.h
7c03663f5e12754572e6efcbe09f51ec2c5f6502 - src/common/sdk/nvidia/inc/g_finn_rm_api.h
b249abc0a7d0c9889008e98cb2f8515a9d310b85 - src/common/sdk/nvidia/inc/nvgputypes.h
78a4b6b19a38de41527ef8b290754deca5906817 - src/common/sdk/nvidia/inc/nvcd.h
751abf80513898b35a6449725e27724b1e23ac50 - src/common/sdk/nvidia/inc/nvmisc.h
b5dedeada189123f1965650827bf8a8193383a92 - src/common/sdk/nvidia/inc/nvimpshared.h
befb2c0bf0a31b61be5469575ce3c73a9204f4e9 - src/common/sdk/nvidia/inc/nv_stdarg.h
f5a682339a89d2b119b43e5b9263dd67346ed3bc - src/common/sdk/nvidia/inc/cpuopsys.h
b3de92f4edb1fcc856fd62b74359c9cd447519a8 - src/common/sdk/nvidia/inc/nverror.h
fa267c903e9c449e62dbb6945906400d43417eff - src/common/sdk/nvidia/inc/nvlimits.h
5cf4b517c9bd8f14593c1a6450078a774a39dd08 - src/common/sdk/nvidia/inc/nv-hypervisor.h
4a97d807a225d792544578f8112c9a3f90cc38f6 - src/common/sdk/nvidia/inc/nvstatuscodes.h
95bf694a98ba78d5a19e66463b8adda631e6ce4c - src/common/sdk/nvidia/inc/nvstatus.h
a506a41b8dcf657fb39a740ffc1dfd83835d6c89 - src/common/sdk/nvidia/inc/nvcfg_sdk.h
1e7eec6561b04d2d21c3515987aaa116e9401c1f - src/common/sdk/nvidia/inc/nv-kernel-interface-api.h
af0bc90b3ad4767de53b8ff91e246fdab0146e8b - src/common/sdk/nvidia/inc/nvsecurityinfo.h
5cec5038e1f4a395a08b765c8361a9560f3312b7 - src/common/sdk/nvidia/inc/nvdisptypes.h
c8b96af9d498f87cb9acde064648f9e84d789055 - src/common/sdk/nvidia/inc/nv_vgpu_types.h
3b12d770f8592b94a8c7774c372e80ad08c5774c - src/common/sdk/nvidia/inc/nvi2c.h
56cca793dd7bcbc4a3681677a822fc9f7a11a091 - src/common/sdk/nvidia/inc/nvos.h
9bca638f5832d831880f090c583fac6fc8cf6ee6 - src/common/sdk/nvidia/inc/dpringbuffertypes.h
7de14a0c3cc8460a9c41e1ee32fda5409c5b9988 - src/common/sdk/nvidia/inc/mmu_fmt_types.h
95b0de4e76d9cc1bf49ef953fc00aa47e238ccd2 - src/common/sdk/nvidia/inc/nvfixedtypes.h
41a588413e1b13f0f3eec6647ffc7023dfaf651f - src/common/sdk/nvidia/inc/alloc/alloc_channel.h
a7c7899429766c092ee3ecf5f672b75bef55216c - src/common/sdk/nvidia/inc/class/cl9271.h
cef74c734fc7d2f32ff74095c59212d9e1d4cafc - src/common/sdk/nvidia/inc/class/cl84a0.h
9f8a45cb986e3ad2bd4a8900469fe5f8b0c9463a - src/common/sdk/nvidia/inc/class/cl9870.h
e6818f1728a66a70080e87dac15a6f92dd875b4e - src/common/sdk/nvidia/inc/class/cl927d.h
89d4eeb421fc2be3b9717e333e9ff67bfffa24e8 - src/common/sdk/nvidia/inc/class/cl2080.h
866977d299eac812b41eb702a517e27bdc56e875 - src/common/sdk/nvidia/inc/class/clc37a.h
d301edef2d1dd42382670e5a6ceef0d8caf67d28 - src/common/sdk/nvidia/inc/class/cl90cd.h
95d99f0805c8451f0f221483b3618e4dbd1e1dd8 - src/common/sdk/nvidia/inc/class/cl90f1.h
99a34eee22f584d5dfb49c3018a8cb9a7b1035ed - src/common/sdk/nvidia/inc/class/cl5070_notification.h
b29ba657f62f8d8d28a8bdd2976ef3ac8aa6075f - src/common/sdk/nvidia/inc/class/cl0073.h
2f87e87bcf9f38017ad84417d332a6aa7022c88f - src/common/sdk/nvidia/inc/class/cl9471.h
ddbffcce44afa7c07924fd64a608f7f3fe608ccc - src/common/sdk/nvidia/inc/class/cl0071.h
74c75472658eea77d031bf3979dd7fe695b4293f - src/common/sdk/nvidia/inc/class/cl0092_callback.h
a75d43f7b84d4cb39f8a2be35c12b2d2735f0ad9 - src/common/sdk/nvidia/inc/class/cl0000.h
c2d8bb02052e80cd0d11695e734f5e05ab7faeb5 - src/common/sdk/nvidia/inc/class/cl907dswspare.h
7c7406d40a09372dcae2aaf3fcad225c3dd2cf3f - src/common/sdk/nvidia/inc/class/cl9010_callback.h
8b75d2586151302d181f59d314b6b3f9f80b8986 - src/common/sdk/nvidia/inc/class/clc573.h
593384ce8938ceeec46c782d6869eda3c7b8c274 - src/common/sdk/nvidia/inc/class/cl900e.h
dec74b9cf8062f1a0a8bbeca58b4f98722fd94b0 - src/common/sdk/nvidia/inc/class/cl0076.h
053e3c0de24348d3f7e7fe9cbd1743f46be7a978 - src/common/sdk/nvidia/inc/class/cl0004.h
78259dc2a70da76ef222ac2dc460fe3caa32457a - src/common/sdk/nvidia/inc/class/clc37e.h
b7a5b31a8c3606aa98ba823e37e21520b55ba95c - src/common/sdk/nvidia/inc/class/cl402c.h
13f8e49349460ef0480b74a7043d0591cf3eb68f - src/common/sdk/nvidia/inc/class/clc57b.h
c2600834921f8a6aad6a0404076fa76f9bc1c04d - src/common/sdk/nvidia/inc/class/clc37b.h
513c505274565fa25c5a80f88a7d361ffbcb08c3 - src/common/sdk/nvidia/inc/class/cl0005.h
f968cd35ce1d1d8e3bc2f669025e6b1042b35354 - src/common/sdk/nvidia/inc/class/cl00de.h
0d8975eec1e3222694e98eb69ddb2c01accf1ba6 - src/common/sdk/nvidia/inc/class/cl0000_notification.h
941a031920c0b3bb16473a6a3d4ba8c52c1259d7 - src/common/sdk/nvidia/inc/class/cl917e.h
cb610aaae807d182b4a2ee46b9b43ebfa4a49a08 - src/common/sdk/nvidia/inc/class/clc57e.h
9e1d2f90d77e23f1d2163a8f8d8d747058e21947 - src/common/sdk/nvidia/inc/class/cl9010.h
5f4e91808d6289265c73f07072eb9cd028e87428 - src/common/sdk/nvidia/inc/class/clc370_notification.h
36c6162356ac39346c8900b1e0074e4b614d4b5a - src/common/sdk/nvidia/inc/class/clc370.h
5df0ce4eb733554e963eb3c7938396f58f2dd4d5 - src/common/sdk/nvidia/inc/class/cl2081.h
2e3d5c71793820d90973d547d8afdf41ff989f89 - src/common/sdk/nvidia/inc/class/clc67a.h
fb5ef3d6734a2ee6baba7981cdf6419d013cee85 - src/common/sdk/nvidia/inc/class/clc671.h
e63ed2e1ff3fe2a5b29cfc334d3da611db2aadf6 - src/common/sdk/nvidia/inc/class/clc37dcrcnotif.h
31ac68401e642baf44effb681d42374f42cf86b1 - src/common/sdk/nvidia/inc/class/cl00c3.h
95ca0b08eed54d1c6dd76fdf9cf4715007df1b20 - src/common/sdk/nvidia/inc/class/cl0020.h
9797f4758d534181eeaa6bc88d576de43ba56045 - src/common/sdk/nvidia/inc/class/clc574.h
78efa8d42f828c89cd2a62b8c3931ebd0b0a6476 - src/common/sdk/nvidia/inc/class/clc771.h
eac86d7180236683b86f980f89ec7ebfe6c85791 - src/common/sdk/nvidia/inc/class/cl957d.h
f3f33f70ec85c983acec8862ccaabf5b186de2bb - src/common/sdk/nvidia/inc/class/cl9270.h
60d0c7923699599a5a4732decfbcb89e1d77b69e - src/common/sdk/nvidia/inc/class/cl9770.h
e0c9a155f829c158c02c21b49c083168f8b00cbe - src/common/sdk/nvidia/inc/class/clc37dswspare.h
e1bfd0c78f397e7c924c9521f87da8286bebe3f1 - src/common/sdk/nvidia/inc/class/cl84a0_deprecated.h
bae36cac0a8d83003ded2305409192995d264d04 - src/common/sdk/nvidia/inc/class/cl0001.h
992b395855033b4a1fa7536d0de6ab2d071a5f82 - src/common/sdk/nvidia/inc/class/clc77d.h
05605d914edda157385e430ccdbeb3fcd8ad3c36 - src/common/sdk/nvidia/inc/class/cl9171.h
a23967cf3b15eefe0cc37fef5d03dfc716770d85 - src/common/sdk/nvidia/inc/class/clc372sw.h
02ff42b6686954e4571b8a318575372239db623b - src/common/sdk/nvidia/inc/class/cl30f1_notification.h
ef173136a93cdd2e02ec82d7db05dc223b93c0e1 - src/common/sdk/nvidia/inc/class/clc770.h
a3e011723b5863277a453bfcfb59ce967cee0673 - src/common/sdk/nvidia/inc/class/clc670.h
02906b5ba8aab0736a38fd1f6d7b4f6026a5185b - src/common/sdk/nvidia/inc/class/clc57esw.h
326dbbeb275b4fc29f6a7e2e42b32736474fec04 - src/common/sdk/nvidia/inc/class/cl9571.h
9b2d08d7a37beea802642f807d40413c7f9a8212 - src/common/sdk/nvidia/inc/class/clc37d.h
bd9f406625e6c0cce816a5ddfb9078723e7f7fb5 - src/common/sdk/nvidia/inc/class/clb0b5sw.h
ab27db8414f1400a3f4d9011e83ac49628b4fe91 - src/common/sdk/nvidia/inc/class/cl987d.h
2614a83d383b540f23ef721ec49af1dfde629098 - src/common/sdk/nvidia/inc/class/cl0080.h
9db39be032023bff165cd9d36bee2466617015a5 - src/common/sdk/nvidia/inc/class/cl0002.h
5556b1c2e267d1fda7dee49abec983e5e4a93bff - src/common/sdk/nvidia/inc/class/cl2080_notification.h
e72a7871d872b2eb823cc67c0a7d4cafb3d0ca18 - src/common/sdk/nvidia/inc/class/cl90ec.h
11b19cb8d722146044ad5a12ae96c13ed5b122b6 - src/common/sdk/nvidia/inc/class/cl917b.h
b685769b5f3fed613227498866d06cc3c1caca28 - src/common/sdk/nvidia/inc/class/cl2082.h
204feb997ba42deab327d570e5f12235d5160f00 - src/common/sdk/nvidia/inc/class/clc57a.h
15d1f928a9b3f36065e377e29367577ae92ab065 - src/common/sdk/nvidia/inc/class/cl0080_notification.h
16f9950a48c4e670b939a89724b547c5be9938bf - src/common/sdk/nvidia/inc/class/clc570.h
060722ac6a529a379375bb399785cbf2380db4fd - src/common/sdk/nvidia/inc/class/clc373.h
b71d1f698a3e3c4ac9db1f5824db983cf136981a - src/common/sdk/nvidia/inc/class/cl9170.h
a9503a5558b08071f35b11df9a917310947c378b - src/common/sdk/nvidia/inc/class/cl00da.h
c61f8348c2978eef0a07191aaf92bd73e935f7bd - src/common/sdk/nvidia/inc/class/clc67e.h
4a6444c347825e06bdd62401120553469f79c188 - src/common/sdk/nvidia/inc/class/cl917dcrcnotif.h
026f66c4cc7baad36f1af740ae885dae58498e07 - src/common/sdk/nvidia/inc/class/clc371.h
ff47d8a4b4bdb3b9cd04ddb7666005ac7fcf2231 - src/common/sdk/nvidia/inc/class/cl003e.h
0285aed652c6aedd392092cdf2c7b28fde13a263 - src/common/sdk/nvidia/inc/class/cl00fc.h
1efc9d4aa038f208cd19533f6188ac3a629bf31a - src/common/sdk/nvidia/inc/class/cl917a.h
38265d86eb7c771d2d3fc5102d53e6a170a7f560 - src/common/sdk/nvidia/inc/class/cl0041.h
2d76476dba432ffc1292d2d5dd2a84ff3a359568 - src/common/sdk/nvidia/inc/class/cl0092.h
022e8405220e482f83629dd482efee81cc49f665 - src/common/sdk/nvidia/inc/class/clc77f.h
fe7484d17bc643ad61faabee5419ddc81cf9bfd6 - src/common/sdk/nvidia/inc/class/cl9570.h
bb79bbd1b0a37283802bc59f184abe0f9ced08a5 - src/common/sdk/nvidia/inc/class/cl0040.h
127f78d2bb92ef3f74effd00c2c67cf7db5382fe - src/common/sdk/nvidia/inc/class/clc67d.h
b1133e9abe15cf7b22c04d9627afa2027e781b81 - src/common/sdk/nvidia/inc/class/cl917c.h
a26ddc6c62faac1ecd5c5f43499aab32c70f32cb - src/common/sdk/nvidia/inc/class/clc67b.h
c40fd87fa6293d483b5bf510e2e331143ded9fa4 - src/common/sdk/nvidia/inc/class/cl9470.h
20894d974d1f8f993c290463f1c97c71fd2e40b1 - src/common/sdk/nvidia/inc/class/cl30f1.h
04ab1761d913030cb7485149ecd365f2f9c0f7da - src/common/sdk/nvidia/inc/class/cl0005_notification.h
da8d312d2fdc6012e354df4fa71ed62ae4aac369 - src/common/sdk/nvidia/inc/class/cl927c.h
158c98c8721d558ab64a025e6fdd04ce7a16ba9e - src/common/sdk/nvidia/inc/class/cl947d.h
5416c871e8d50a4e76cbad446030dbedbe1644fd - src/common/sdk/nvidia/inc/class/cl00f2.h
d90649c6a6c491bf086958426b56c697222e10bc - src/common/sdk/nvidia/inc/class/cl00fe.h
dd4f75c438d19c27e52f25b36fc8ded1ce02133c - src/common/sdk/nvidia/inc/class/cl917cswspare.h
435a34753d445eb9711c7132d70bd26df2b8bdab - src/common/sdk/nvidia/inc/class/cl917d.h
31939808cd46382b1c63bc1e0bd4af953302773f - src/common/sdk/nvidia/inc/class/cl977d.h
83427e3172c64c3b9ef393205ccc3b961ec65190 - src/common/sdk/nvidia/inc/class/cl5070.h
28867d69a6ceac83da53a11a5e1ef87d9476f0be - src/common/sdk/nvidia/inc/class/clc57d.h
f5760f5054538f4ecf04d94fb1582a80a930bc29 - src/common/sdk/nvidia/inc/class/clc673.h
4fc2133935b8e560c9a1048bc0b1f1c2f0a4464c - src/common/sdk/nvidia/inc/class/cl00c1.h
6db83e33cb3432f34d4b55c3de222eaf793a90f0 - src/common/sdk/nvidia/inc/class/cl00b1.h
5b573deb4d68ccb67d9cccc11b28203c5db3d2f7 - src/common/sdk/nvidia/inc/ctrl/ctrl0002.h
625af1df5c9453bd35a9e873ee5c77e73d5fd195 - src/common/sdk/nvidia/inc/ctrl/ctrl90ec.h
ade4a731f59c7cd16b4a60d318a19147b9918bb9 - src/common/sdk/nvidia/inc/ctrl/ctrl0004.h
90843f8173a341deb7f1466cd69a17114c6b9e4f - src/common/sdk/nvidia/inc/ctrl/ctrl90f1.h
fcdf7b331c3f7744d296918e68d44dfb114b9461 - src/common/sdk/nvidia/inc/ctrl/ctrl00fe.h
4fc1dd23cbfdb4ce49f1722f6e282cd21f33b7f5 - src/common/sdk/nvidia/inc/ctrl/ctrla06f.h
360ed7fefcd6f8f4370b3cf88d43a9f8eec1e86d - src/common/sdk/nvidia/inc/ctrl/ctrl00da.h
f64c19679dc9a20e62ef86d01878a006b505ed93 - src/common/sdk/nvidia/inc/ctrl/ctrl906f.h
a75a0a693d5742c8aecd788dc204a69863cfaf39 - src/common/sdk/nvidia/inc/ctrl/ctrl00de.h
8607fdd8ecaa5140bac6643a3f715610ed391d67 - src/common/sdk/nvidia/inc/ctrl/ctrlxxxx.h
b35f86170f27005bc714b37edc96dffb97691bd4 - src/common/sdk/nvidia/inc/ctrl/ctrla081.h
b4cecb527cdc3ba4e68ca0031ac2179756108cb0 - src/common/sdk/nvidia/inc/ctrl/ctrl003e.h
72164895b0055a1942e1190a05d5090753af95a1 - src/common/sdk/nvidia/inc/ctrl/ctrl30f1.h
7433f9674e36f120671d6e1802f2cdbcaadc58c3 - src/common/sdk/nvidia/inc/ctrl/ctrl2080.h
0edffddbe7764b268f724abc4ac84924767d1bf2 - src/common/sdk/nvidia/inc/ctrl/ctrl0041.h
c8b2e0e64bb3cf3c562dee5fa7913035f82d8247 - src/common/sdk/nvidia/inc/ctrl/ctrl402c.h
352825959d98fe9b47a474cfdd154d380c80d24e - src/common/sdk/nvidia/inc/ctrl/ctrl90cd.h
1cd4acc266f26dba813ac8802dba4e7ab381f753 - src/common/sdk/nvidia/inc/ctrl/ctrl0080.h
3fcf5dbb82508d88a040981a7ab21eac1466bb2b - src/common/sdk/nvidia/inc/ctrl/ctrl0073.h
bfee287b190fd698735c5660592741ba5c25a8ea - src/common/sdk/nvidia/inc/ctrl/ctrl0020.h
175ad4d300fa40b960d07fee059b51c6b8639f01 - src/common/sdk/nvidia/inc/ctrl/ctrlb06f.h
ebf415ac7d55643fa24493f27b69a843ea05f6c7 - src/common/sdk/nvidia/inc/ctrl/ctrl0000/ctrl0000client.h
5782a19aeaf9695c13940cf4532e41523a8460e3 - src/common/sdk/nvidia/inc/ctrl/ctrl0000/ctrl0000base.h
c341344b0879c5e9c7ba9ac0005eb28b347eaa63 - src/common/sdk/nvidia/inc/ctrl/ctrl0000/ctrl0000system.h
1cef17e1833c002d968a2255726a4f785e4e66e7 - src/common/sdk/nvidia/inc/ctrl/ctrl0000/ctrl0000unix.h
4e7733c378eb6f7924e43ff111017ae0e433800d - src/common/sdk/nvidia/inc/ctrl/ctrl0000/ctrl0000vgpu.h
899e3bc9a551ca0b181d1c8dd7ef8d779a66ecc4 - src/common/sdk/nvidia/inc/ctrl/ctrl0000/ctrl0000gpu.h
d08ef822e97ee56984618d52ed3ed55ee395eadb - src/common/sdk/nvidia/inc/ctrl/ctrl0000/ctrl0000gsync.h
668e6d37c0a556a70ae003569fe237b1024d6e6b - src/common/sdk/nvidia/inc/ctrl/ctrl0000/ctrl0000nvd.h
6bc78fd963e407de843598786bdbcd1653005328 - src/common/sdk/nvidia/inc/ctrl/ctrl0000/ctrl0000diag.h
a33a1c1173962183793d84276e46c61d27ca867e - src/common/sdk/nvidia/inc/ctrl/ctrl0000/ctrl0000gpuacct.h
1b594c39d1439c3d1ecc24c4325b2ea8c2724548 - src/common/sdk/nvidia/inc/ctrl/ctrl0000/ctrl0000syncgpuboost.h
0146d2b3ecec8760e76dacd8ce6bb75c343c6cac - src/common/sdk/nvidia/inc/ctrl/ctrl0000/ctrl0000proc.h
dd49db523d761d6f14e3890549cd8186c25f1d62 - src/common/sdk/nvidia/inc/ctrl/ctrl0000/ctrl0000event.h
4f0ccb0667bd3e3070e40f3f83bede7849bc78e4 - src/common/sdk/nvidia/inc/ctrl/ctrl0080/ctrl0080nvjpg.h
12f1e560480dafde75646fb41aa349d9d729ca7d - src/common/sdk/nvidia/inc/ctrl/ctrl0080/ctrl0080host.h
28b06c8f8152dce2b2e684a4ba84acd25a8b8c26 - src/common/sdk/nvidia/inc/ctrl/ctrl0080/ctrl0080base.h
12f1d3bb13c72fb1b52b62cf2a21f1b15619c06d - src/common/sdk/nvidia/inc/ctrl/ctrl0080/ctrl0080dma.h
8e85550f24771c87138a973cd8cd714e419a14e8 - src/common/sdk/nvidia/inc/ctrl/ctrl0080/ctrl0080gpu.h
e0c551dc47bc06f8dff5884affdeb05eb118609f - src/common/sdk/nvidia/inc/ctrl/ctrl0080/ctrl0080bif.h
7edd8cdb8061ec137bc29d0dbbfbb5d169c0fd35 - src/common/sdk/nvidia/inc/ctrl/ctrl0080/ctrl0080perf.h
ccba5f12df1bce4b4235eed5a1c7a0cd2612c2ce - src/common/sdk/nvidia/inc/ctrl/ctrl0080/ctrl0080internal.h
a3328cf6633f9b04258eff05ce30e66cc6930310 - src/common/sdk/nvidia/inc/ctrl/ctrl0080/ctrl0080cipher.h
a427892e601a4ca4f88cc5778ff78895324f3728 - src/common/sdk/nvidia/inc/ctrl/ctrl0080/ctrl0080unix.h
92ff82d1045933baa79958a9f6efd451b0123e95 - src/common/sdk/nvidia/inc/ctrl/ctrl0080/ctrl0080bsp.h
ec7b09fe14c31c175e0abfcfa85dee20d57d02b4 - src/common/sdk/nvidia/inc/ctrl/ctrl0080/ctrl0080clk.h
68bdc682ee42784c09409cd581bb991f7fc1bf41 - src/common/sdk/nvidia/inc/ctrl/ctrl0080/ctrl0080msenc.h
e238d87a94267f62141c413d0c44f03f27204b33 - src/common/sdk/nvidia/inc/ctrl/ctrl0080/ctrl0080fifo.h
6fb840928970cf39919f2f415932bcc3e0764b25 - src/common/sdk/nvidia/inc/ctrl/ctrl0080/ctrl0080gr.h
ea6d95de011af0039b1adc209733e524bc583c92 - src/common/sdk/nvidia/inc/ctrl/ctrl0080/ctrl0080fb.h
c74ac448c3382d92e662804b56e73edd748e2678 - src/common/sdk/nvidia/inc/ctrl/ctrl83de/ctrl83debase.h
33716a49ba4f7fcc0faa889d535e370a14edd582 - src/common/sdk/nvidia/inc/ctrl/ctrl83de/ctrl83dedebug.h
1066e2e0a0633b0dd1b9114f31079c30178a5ac8 - src/common/sdk/nvidia/inc/ctrl/ctrlc372/ctrlc372chnc.h
3f747a4fc98291329e0245a971248cf2c28a1b60 - src/common/sdk/nvidia/inc/ctrl/ctrlc372/ctrlc372base.h
9279520e7dec45516d5339d82d35eb60b88f7300 - src/common/sdk/nvidia/inc/ctrl/ctrl208f/ctrl208fbase.h
67a911b3177b75243e2fceef821ebcfd3668235e - src/common/sdk/nvidia/inc/ctrl/ctrl208f/ctrl208fgpu.h
f9db227bd1cefe92e4f35b52cafcb15266630582 - src/common/sdk/nvidia/inc/ctrl/ctrl0073/ctrl0073stereo.h
d2992c1a9aac5b1b5cfefcca72e9a2401190158c - src/common/sdk/nvidia/inc/ctrl/ctrl0073/ctrl0073common.h
456707a5de78815fc6a33f2da7e2a2a45ccc4884 - src/common/sdk/nvidia/inc/ctrl/ctrl0073/ctrl0073internal.h
abed22b35137e2d40399eb4ed01724aa789cb635 - src/common/sdk/nvidia/inc/ctrl/ctrl0073/ctrl0073event.h
505860d3cd6f7d5144f97195b9fb32dd5b8f74aa - src/common/sdk/nvidia/inc/ctrl/ctrl0073/ctrl0073dp.h
f32b4e3e8efc0b39538df2b141e3e8845eed553c - src/common/sdk/nvidia/inc/ctrl/ctrl0073/ctrl0073specific.h
8e807c3771f3d37885d4066d95ec71c05234b5ec - src/common/sdk/nvidia/inc/ctrl/ctrl0073/ctrl0073system.h
52f251090780737f14eb993150f3ae73be303921 - src/common/sdk/nvidia/inc/ctrl/ctrl0073/ctrl0073dpu.h
77eb4fab61225663a3f49b868c983d5d532ca184 - src/common/sdk/nvidia/inc/ctrl/ctrl0073/ctrl0073svp.h
6ca26c7149455e43f32e8b83b74f4a34a24a2d29 - src/common/sdk/nvidia/inc/ctrl/ctrl0073/ctrl0073base.h
31534360d235be6dfdf4c1cf3854ce1e97be8fe2 - src/common/sdk/nvidia/inc/ctrl/ctrl0073/ctrl0073dfp.h
022feef64678b2f71ab70dc67d5d604054990957 - src/common/sdk/nvidia/inc/ctrl/ctrl0073/ctrl0073psr.h
2a00952f0f3988c5425fec957a19d926ae75ba28 - src/common/sdk/nvidia/inc/ctrl/ctrlc370/ctrlc370verif.h
a8384da236fdd365d15d26daeb7db1c117ce1072 - src/common/sdk/nvidia/inc/ctrl/ctrlc370/ctrlc370base.h
0710ae87ce40008bea9181310b755ed74c397bfe - src/common/sdk/nvidia/inc/ctrl/ctrlc370/ctrlc370event.h
5f70c2eb6a144bc4d7ca8be63fa46391909e8201 - src/common/sdk/nvidia/inc/ctrl/ctrlc370/ctrlc370rg.h
6975ff971c7ed1ac1a429896a3be1d95353fa4bd - src/common/sdk/nvidia/inc/ctrl/ctrlc370/ctrlc370chnc.h
e919b586a0e44cfe96b819deeab2c21c6af34f55 - src/common/sdk/nvidia/inc/ctrl/ctrla06f/ctrla06finternal.h
cebcfa209648731e86af526834717b19d5b24159 - src/common/sdk/nvidia/inc/ctrl/ctrla06f/ctrla06fevent.h
83d495dfe528167aa8ddbf45091051a89bd1a262 - src/common/sdk/nvidia/inc/ctrl/ctrla06f/ctrla06fbase.h
ce19b7278c6720b3bee62bcaa763ebb322d91957 - src/common/sdk/nvidia/inc/ctrl/ctrla06f/ctrla06fgpfifo.h
0acaf597e0fc8f59a99b1772b7370395513492ed - src/common/sdk/nvidia/inc/ctrl/ctrl5070/ctrl5070event.h
ce4e42c8e73047ae03f835f9d3655dda1eb44452 - src/common/sdk/nvidia/inc/ctrl/ctrl5070/ctrl5070base.h
e3fb93f0ff3469ec76cecdc6f0bf1c296551a2b1 - src/common/sdk/nvidia/inc/ctrl/ctrl5070/ctrl5070impoverrides.h
a138379dd76c468072f1862b8fc6ae79ee876b4e - src/common/sdk/nvidia/inc/ctrl/ctrl5070/ctrl5070common.h
53134475c1fd9c228a2c607051b34c28a5a80b03 - src/common/sdk/nvidia/inc/ctrl/ctrl5070/ctrl5070seq.h
3ab2fc007f2c76ddc89caf14c4db0ab530515d4a - src/common/sdk/nvidia/inc/ctrl/ctrl5070/ctrl5070verif.h
50f2ef0c01ab81077bd0e313d9ff168faae91670 - src/common/sdk/nvidia/inc/ctrl/ctrl5070/ctrl5070rg.h
5f4b08b9ee7853eb33269ef7b415050eac2d702a - src/common/sdk/nvidia/inc/ctrl/ctrl5070/ctrl5070or.h
fa763827e4359b2deb6307ef742474f8f6f960dd - src/common/sdk/nvidia/inc/ctrl/ctrl5070/ctrl5070chnc.h
e8d883de767aa995a374d8da56b5c9da8787cb1d - src/common/sdk/nvidia/inc/ctrl/ctrl5070/ctrl5070system.h
c1e506bd4bb6ad792c802961a9e03b371abb6919 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080flcn.h
cfa32c37f373eeef53aedc3f4dffff1634c122e8 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080gpumon.h
18ed4b62c824c252abdd89a6616e3cc325ffa7fa - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080dmabuf.h
ecd312fabb249a25655e151cee3615c5ab61ffa7 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080pmgr.h
c30b5995d353e68623b32fea398f461351e3b8f1 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080lpwr.h
aa0f685b94bdae99a58aa1a45735b0593a2e6f5a - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080vfe.h
aa86ffd04a55436ecacbedb1626f6187bbddedf7 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080perf_cf.h
a002a436f77b9544041a259405dddba90301df01 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080grmgr.h
1990d0c4fa84c6d078282d4d7d0624ccb0325ce7 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080unix.h
86737d12192b2e7dc878bbeb8e57a41dcc1a655e - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080fb.h
8b622186edb156e980d02bd59a71c01923d1aa23 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080tmr.h
4f31fe752e050953a0f87d04063dc152bba261fe - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080clk.h
920f69f6d8386a107160da834545f71172cc2f0f - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080boardobj.h
55cee85b56cb6ed5d017bab55c40cc8799789c8b - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080nvd.h
27341c2b0ad4eb10044fdf9fc2377024b4c63297 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080bios.h
b8e8c5ccab01d7997d1fd5579a690cb3279a8ab3 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080base.h
b2eecbca32d87b939858bf0b22f93c06b49b3a04 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080i2c.h
3db5bcbcae4063f2356ec76924b4bcc1d0df1a05 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080ecc.h
6c467ece3508071c2b3a296afffedd592726f8de - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080bus.h
22b8cc6c4677e664904659c726425a62aa24124e - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080fifo.h
4fa54b01cd70c3ca3b5cac93bade62dd09641b97 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080vgpumgrinternal.h
96f72ec608cd198be995f3acd9c04afe7c7e6dc8 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080volt.h
359c6b06f2712a527d1ef08465179c14a8b4a751 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080acr.h
4c2af959d06536294d62b2366a6ba61ca744bd50 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080dma.h
d5cdbcd10e049e8daf48feb5347f070d4ef85f8b - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080spdm.h
898fa08818b657c27b456d952e7a4e09d8d197ee - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080illum.h
6627bf1716c0e06e870c083d264753d6a0abb439 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080ce.h
5013ec94fa6311100818efb422b013ed77cffe82 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080gpu.h
0cd5e883dfafb74ce2ec9bccca6e688a27e6cfa9 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080perf_cf_pwr_model.h
07f82ae90cde3c6e2e6c5af135c40e01660c39a3 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080boardobjgrpclasses.h
48691dd2c8d93fbd162e207cdb5d27ea30741d36 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080gsp.h
01a6a431e8aeffeec97755009b4e9575bdf0de7b - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080mc.h
ae428e2b33fd058eeaffbbd4fbcd42178345883c - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080nvlink.h
66aa4e08f838e1f87e4babacb42d3d59cb6837ff - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080pmu.h
74f1abf45a2a0f60c82e4825b9abfa6c57cab648 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080power.h
cfe695da65835f26c82399db0e44a56c7162c180 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080pmumon.h
d4ba227a522423503e5044c774dbcca692c48247 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080rc.h
97bb79e74b25134fa02a60d310b3e81170df6fd6 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080clkavfs.h
fed713e236b4fbc1e71dcf6747182ebea5836318 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080event.h
bf976b3c428ccb9cb80d2f84f80b2c33d96e6ce1 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080perf.h
347efee37fa9404ce1933f01a7aa8a43b229db44 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080thermal.h
5ac6c9a299256935259eaf94323ae58995a97ad7 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080gpio.h
e4441458a7914414a2092f36a9f93389ed65154a - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080fuse.h
d411633fdeae66035e8c018ec8f6f25a9d5dd462 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080gr.h
496c7a1a0c283b25a637a996995d3987c9045346 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080internal.h
5c7b955ef5e6f6ca9c0944e8a2b2c4a1ae760e04 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080spi.h
93a9fa93eb3d1099991e4682b6228124220ca293 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080fla.h
e8d117ea0d596ed6415324bd136de337f1a36ff1 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080fan.h
42dc8204c0f6da47c5f741344032fc02702cfac5 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080ucodefuzzer.h
59254e4bdc475b70cfd0b445ef496f27c20faab0 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080cipher.h
59340a74f26b92f689fe99f8303775c87a4bbd58 - src/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080hshub.h
2476f128437c0520204e13a4ddd2239ff3f40c21 - src/common/unix/common/inc/nv-float.h
881cbcc7ed39ea9198279136205dbe40142be35e - src/common/unix/common/inc/nv_assert.h
1c947cfc8a133b00727104684764e5bb900c9d28 - src/common/unix/common/inc/nv_mode_timings.h
d5253e7e4abd3ad8d72375260aa80037adcd8973 - src/common/unix/common/inc/nv_dpy_id.h
995d8447f8539bd736cc09d62983ae8ebc7e3436 - src/common/unix/common/inc/nv_common_utils.h
edded9ca3d455444372fe6c497b2d61bd0cc3f96 - src/common/unix/common/utils/nv_memory_tracker.c
bda08c8398f68ffc2866ebc390dc63a09a16b0b9 - src/common/unix/common/utils/unix_rm_handle.c
26f2a36442266c5d2664d509ecfd31094a83e152 - src/common/unix/common/utils/nv_vasprintf.c
e903bbbecf4fb3085aaccca0628f0a0e4aba3e58 - src/common/unix/common/utils/nv_mode_timings_utils.c
667b361db93e35d12d979c47e4d7a68be9aa93b6 - src/common/unix/common/utils/interface/nv_mode_timings_utils.h
07c675d22c4f0f4be6647b65b6487e2d6927c347 - src/common/unix/common/utils/interface/nv_memory_tracker.h
8d9c4d69394b23d689a4aa6727eb3da1d383765a - src/common/unix/common/utils/interface/unix_rm_handle.h
9e008270f277e243f9167ab50401602378a2a6e8 - src/common/unix/common/utils/interface/nv_vasprintf.h
e1fbb040ea9d3c773ed07deb9ef5d63c8c8cab7a - src/common/inc/nvSha1.h
8f0d91e1a8f0d3474fb91dc3e6234e55d2c79fcc - src/common/inc/rmosxfac.h
56f837b06862884abb82686948cafc024f210126 - src/common/inc/nvlog_defs.h
ebccc5c2af2863509e957fe98b01d9a14d8b0367 - src/common/inc/nv_list.h
714db3678cd564170ec05022de6c37686da9df23 - src/common/inc/pex.h
4df0a4ae78271bb5b295288798d5be7866242adc - src/common/inc/nvctassert.h
6fa5359ffe91b624548c226b6139f241771a9289 - src/common/inc/jt.h
87bb66c50d1301edb50140e9896e1f67aaaa7175 - src/common/inc/nvVer.h
d9c0905f374db0b9cc164ce42eab457d1ba28c53 - src/common/inc/nvop.h
b4c5d759f035b540648117b1bff6b1701476a398 - src/common/inc/nvCpuUuid.h
4282574b39d1bcaf394b63aca8769bb52462b89b - src/common/inc/nvBinSegment.h
8c41b32c479f0de04df38798c56fd180514736fc - src/common/inc/nvBldVer.h
62e510fa46465f69e9c55fabf1c8124bee3091c4 - src/common/inc/nvHdmiFrlCommon.h
a346380cebac17412b4efc0aef2fad27c33b8fb5 - src/common/inc/nvlog_inc2.h
e670ffdd499c13e5025aceae5541426ab2ab0925 - src/common/inc/gps.h
963aebc9ec7bcb9c445eee419f72289b21680cdd - src/common/inc/hdmi_spec.h
5257e84f2048b01258c78cec70987f158f6b0c44 - src/common/inc/nvlog_inc.h
b58ed1b4372a5c84d5f3755b7090b196179a2729 - src/common/inc/nv_speculation_barrier.h
d877f4b99ae7d18cc5c78b85e89c0a7e3f3e8418 - src/common/inc/nvPNPVendorIds.h
6e212afa22e8348eedf1b15bd4bd7f7fd698c3b2 - src/common/inc/nvUnixVersion.h
1fc95a17ddb619570063f6707d6a395684bfa884 - src/common/inc/displayport/dpcd20.h
90998aac8685a403fdec9ff875f7436373d76f71 - src/common/inc/displayport/dpcd14.h
669268ea1660e9e5b876f90da003599ba01356bb - src/common/inc/displayport/displayport.h
ee0105d1113ce6330939c7e8d597d899daae662e - src/common/inc/displayport/dpcd.h
bbcecae47807b4578baa460da4147328140ecfcd - src/common/inc/swref/published/nv_ref.h
1efbc285d851a4430776a945d8c250b6a7019ab5 - src/common/inc/swref/published/nv_arch.h
38edc89fd4148b5b013b9e07081ba1e9b34516ac - src/common/inc/swref/published/turing/tu102/kind_macros.h
86a59440492fd6f869aef3509f0e64a492b4550d - src/common/inc/swref/published/turing/tu102/dev_mmu.h
1ea0c3d6ea0c79c01accc7b25d15b421ab49a55d - src/common/inc/swref/published/disp/v04_02/dev_disp.h
3cddaacf90bbbefedf500e6af7eaefb0f007813c - src/common/inc/swref/published/disp/v03_00/dev_disp.h
64c123c90018c5ee122b02b02cbccfcd5ec32cab - src/common/inc/swref/published/t23x/t234/dev_fuse.h
4de33a60116ce3fa3f440db105561eddc21ce375 - src/common/shared/nvstatus/nvstatus.c
750ecc85242882a9e428d5a5cf1a64f418d59c5f - src/common/displayport/inc/dp_object.h
a6ff1a7aee138f6771c5b0bbedb593a2641e1114 - src/common/displayport/inc/dp_messages.h
80380945c76c58648756446435d615f74630f2da - src/common/displayport/inc/dp_timeout.h
cdb1e7797c250b0a7c0449e2df5ce71e42b83432 - src/common/displayport/inc/dp_merger.h
070b4f6216f19feebb6a67cbb9c3eb22dc60cf74 - src/common/displayport/inc/dp_buffer.h
02b65d96a7a345eaa87042faf6dd94052235009c - src/common/displayport/inc/dp_messageheader.h
78595e6262d5ab0e6232392dc0852feaf83c7585 - src/common/displayport/inc/dp_auxbus.h
e27519c72e533a69f7433638a1d292fb9df8772e - src/common/displayport/inc/dp_crc.h
325818d0a4d1b15447923e2ed92c938d293dc079 - src/common/displayport/inc/dp_hostimp.h
29ee5f4ef6670f06e96c07b36c11e3bad8bee6aa - src/common/displayport/inc/dp_address.h
f9149d441628fb2ad4fa630f74b9ca43ce710ba7 - src/common/displayport/inc/dp_groupimpl.h
8d8a5f0160922b6630fa796789c5d59cce94d9e0 - src/common/displayport/inc/dp_configcaps.h
570d78b90c470b48d47592a76404c190a0480023 - src/common/displayport/inc/dp_evoadapter.h
01f1dd58ed5bb12503fa45be7a6657cde0a857e2 - src/common/displayport/inc/dp_guid.h
cca426d571c6b01f7953180e2e550e55c629f0f4 - src/common/displayport/inc/dp_auxretry.h
11487c992494f502d1c48ff00982998504336800 - src/common/displayport/inc/dp_internal.h
f6e1b0850f5ed0f23f263d4104523d9290bb8669 - src/common/displayport/inc/dp_vrr.h
2f134665b274bb223c3f74e0ec5c6a0392fa6387 - src/common/displayport/inc/dp_discovery.h
07d22f84e6a386dad251761278a828dab64b6dd5 - src/common/displayport/inc/dp_bitstream.h
6617a20b016f0cd3278e37617d093b900a6b6afd - src/common/displayport/inc/dp_mainlink.h
96f8faea51e03cb6dd421e8c2b0a80d5a6ba8b93 - src/common/displayport/inc/dp_deviceimpl.h
eb9cdbb0a907926b1afd2a551ec19830f06ae205 - src/common/displayport/inc/dp_splitter.h
5bd3706ceea585df76a75dda7f9581b91ee8f998 - src/common/displayport/inc/dp_tracing.h
4a098c4d09dedc33b86748d5fe9a30d097675e9f - src/common/displayport/inc/dp_list.h
7b7d9a137027fbbedfc041465987fa4ed4198ce4 - src/common/displayport/inc/dp_edid.h
379d3933c90eaf9c35a0bad2bd6af960a321465f - src/common/displayport/inc/dp_wardatabase.h
800e4cb73c649c3c5ad56a8116a8de66aedd487c - src/common/displayport/inc/dp_auxdefs.h
e2075486b392d6b231f2f133922ac096ca4bc095 - src/common/displayport/inc/dp_ringbuffer.h
2c60a5ee5d2a248e51a0ea740395f377d2e51e25 - src/common/displayport/inc/dp_regkeydatabase.h
cd9d3f57a9212166eba32b25cebc866a8d5bc026 - src/common/displayport/inc/dp_qse.h
72711e7f688ee25510fca0e7eef6a4a99bb0aff3 - src/common/displayport/inc/dp_linkconfig.h
e02e5621eaea52a2266a86dcd587f4714680caf4 - src/common/displayport/inc/dp_linkedlist.h
2067e2ca3b86014c3e6dfc51d6574d87ae12d907 - src/common/displayport/inc/dp_timer.h
5a0d4df6d025eb24ae8af408416378d1e9e2f17a - src/common/displayport/inc/dp_connectorimpl.h
4a445c98d9541a53f77af2ffa154501793c01fe4 - src/common/displayport/inc/dp_connector.h
660ba146cf1242947eac3e2ded50ef4387ca8f35 - src/common/displayport/inc/dp_messagecodings.h
df11366a5bcfb641025f12cddf9b5e8c2ed008de - src/common/displayport/inc/dp_watermark.h
d2b00a849a81f6c6092e3b2c4e7ed20fcee62b39 - src/common/displayport/inc/dptestutil/dp_testmessage.h
70b155b0da07a92ede884a9cec715f67e6b5c3e8 - src/common/displayport/src/dp_list.cpp
37eabb1ab51cb38660eb24e294c63c8320750b96 - src/common/displayport/src/dp_sst_edid.cpp
fea946e5320e7de8e9229bca8d4a6a14b9e8db59 - src/common/displayport/src/dp_crc.cpp
d199166ebfe00628b9c4894a97c3bb9f09d355e5 - src/common/displayport/src/dp_messagecodings.cpp
aa2e56f6c66bf91c2b4a6030de2d29480f69710e - src/common/displayport/src/dp_wardatabase.cpp
de264916d0e3e873a4c624f237ea228469d0a980 - src/common/displayport/src/dp_watermark.cpp
e874ffeaeb6deec57605bf91eaa2af116a9762bd - src/common/displayport/src/dp_bitstream.cpp
6b2384144feb749a974ca794ff74031e13ed6610 - src/common/displayport/src/dp_evoadapter.cpp
56ee9318a7b51a04baa1d25d7d9a798c733dc1bc - src/common/displayport/src/dp_vrr.cpp
d991afdb694634e9df756184b5951739fc3fd0ab - src/common/displayport/src/dp_auxretry.cpp
554e6b7dadbb68ac0f3d2e368ca3fd90832ea254 - src/common/displayport/src/dp_discovery.cpp
45da2aabdaf6b5b2bf17a3deeb045feed1545415 - src/common/displayport/src/dp_messages.cpp
719d2ddbfb8555636496cb5dd74ee6776059db92 - src/common/displayport/src/dp_timer.cpp
1923346b4f1209a8ceaf30d240f1b05717149be4 - src/common/displayport/src/dp_deviceimpl.cpp
98cec6b663cf630c789e9823675cbb4948e1ba5e - src/common/displayport/src/dp_edid.cpp
9fc1b9ae59805ea96879de1960149398bfe8dccd - src/common/displayport/src/dp_groupimpl.cpp
e10ed809c1ddb7e67f0d7caf88802f291c8567ef - src/common/displayport/src/dp_qse.cpp
4803cde0fffcf89fed46d6deaeba5c96c669a908 - src/common/displayport/src/dp_messageheader.cpp
9f31213ab8037d7bb18c96a67d2630d61546544a - src/common/displayport/src/dp_mst_edid.cpp
f56f92e32710b0342805b785d34ba1a9f2a54ed3 - src/common/displayport/src/dp_guid.cpp
656cf635f5268df416d746378d25e773bde24758 - src/common/displayport/src/dp_connectorimpl.cpp
f83b3c17e9f26651f12c8835a682abdd66aed3a2 - src/common/displayport/src/dp_splitter.cpp
1543bbaba8f3e149239cf44be3c0d080c624d5ba - src/common/displayport/src/dp_buffer.cpp
fa4f4869d3d63c0180f30ae3736600a6627284c6 - src/common/displayport/src/dp_merger.cpp
b18924b1d50232b92223355f608fcca1b6d7ff46 - src/common/displayport/src/dp_configcaps.cpp
a0b68fce10eb0b95518cfd291e2d282872225295 - src/common/displayport/src/dptestutil/dp_testmessage.cpp
54c516f23671ec703a4e000f700c16dce640367a - src/common/modeset/timing/nvt_dmt.c
890d8c2898a3277b0fed360301c2dc2688724f47 - src/common/modeset/timing/nvt_util.c
cc04c12ebe4e2f7e31d0619ddd16db0c46b9db9e - src/common/modeset/timing/nvtiming.h
80063c05e3961073d23f76822bc9b55be533a6ee - src/common/modeset/timing/nvt_edid.c
446e1044fcc8f7711111fca6a49d2776dba6e24c - src/common/modeset/timing/nvt_edidext_displayid.c
aad5d6f2b238b9582a63ba1e467da13d86ee4ded - src/common/modeset/timing/dpsdp.h
5b1ce39d595dfb88141f698e73b0a64d26e9b31d - src/common/modeset/timing/nvt_dsc_pps.c
f75b1d98895bdccda0db2d8dd8feba53b88180c5 - src/common/modeset/timing/displayid.h
1997adbf2f6f5be7eb6c7a88e6660391a85d891b - src/common/modeset/timing/nvt_gtf.c
04693ced0777456f6b7005f19a4b7c39a6d20ee6 - src/common/modeset/timing/nvtiming_pvt.h
58b68f1272b069bb7819cbe86fd9e19d8acd0571 - src/common/modeset/timing/edid.h
849309f12f14d685acf548f9eed35fadea10c4e7 - src/common/modeset/timing/nvt_edidext_displayid20.c
974f52eb92bda6186510c71a2b6ae25cb0514141 - src/common/modeset/timing/nvt_dsc_pps.h
2868a1ecc76e5dd57535929890b922028522f4b5 - src/common/modeset/timing/nvt_edidext_861.c
28d7b753825d5f4a9402aff14488c125453e95c5 - src/common/modeset/timing/nvt_tv.c
cb1923187030de8ad82780663eb7151b68c3b735 - src/common/modeset/timing/displayid20.h
49df9034c1634d0a9588e5588efa832a71750a37 - src/common/modeset/timing/nvt_cvt.c
783bd7a92ca178ca396b15e8027561c8b61c09a3 - src/common/modeset/timing/nvt_displayid20.c
443c0a4b17a0019e4de3032c93c5cac258529f01 - src/common/modeset/hdmipacket/nvhdmipkt_internal.h
60ee78d72d4d6b03932b7111508784538f35381a - src/common/modeset/hdmipacket/nvhdmipkt.c
1babb2c7f11b95fd69bcbc9dcffeefea29d61118 - src/common/modeset/hdmipacket/nvhdmipkt_C671.c
9fbe6313ee438f301ac75f5ca2228e27b785c4f4 - src/common/modeset/hdmipacket/nvhdmipkt_0073.c
bb634bc2517a2653be2534602ab0f4712e0b1363 - src/common/modeset/hdmipacket/nvhdmipkt_9171.c
54a1b5e5aaf0848a72befc896ed12f1de433ad4f - src/common/modeset/hdmipacket/nvhdmipkt_9471.c
a1f52f0f78eec1d98b30b0f08bc1c5e88ae3d396 - src/common/modeset/hdmipacket/nvhdmipkt.h
9be7b7be94a35d1d9a04f269ff560dbbb7860a2a - src/common/modeset/hdmipacket/nvhdmipkt_9571.c
381e1b8aeaa8bd586c51db1f9b37d3634285c16a - src/common/modeset/hdmipacket/nvhdmipkt_class.h
5e12a290fc91202e4ba9e823b6d8457594ed72d3 - src/common/modeset/hdmipacket/nvhdmi_frlInterface.h
67db549636b67a32d646fb7fc6c8db2f13689ecc - src/common/modeset/hdmipacket/nvhdmipkt_9271.c
e6d500269128cbd93790fe68fbcad5ba45c2ba7d - src/common/modeset/hdmipacket/nvhdmipkt_C371.c
f2b434ed8bdd7624143654b7b3953d8c92e5a8e2 - src/common/modeset/hdmipacket/nvhdmipkt_common.h
33a5c7cd8cf4ecb7d9a76c9b623372949b538fc8 - src/common/softfloat/nvidia/nv-softfloat.h
be9407a273620c0ba619b53ed72d59d52620c3e4 - src/common/softfloat/nvidia/platform.h
f6d98979ab2d1e2b0d664333104130af6abbcad5 - src/common/softfloat/source/f64_to_i64_r_minMag.c
21a6232d93734b01692689258a3fdfbbf4ff089d - src/common/softfloat/source/s_roundToUI32.c
29321080baa7eab86947ac825561fdcff54a0e43 - src/common/softfloat/source/i32_to_f32.c
dafa667ee5dd52c97fc0c3b7144f6b619406c225 - src/common/softfloat/source/s_mulAddF64.c
108eec2abf1cddb397ce9f652465c2e52f7c143b - src/common/softfloat/source/f64_roundToInt.c
513a7d1c3053fc119efcd8ae1bcc9652edc45315 - src/common/softfloat/source/f32_lt.c
d19ff7dfece53875f2d6c6f7dd9e7772f7b0b7ec - src/common/softfloat/source/f32_to_i64_r_minMag.c
2db07bbb8242bc55a24ef483af6d648db0660de0 - src/common/softfloat/source/f32_add.c
c951c9dffa123e4f77ed235eca49ef9b67f9f3d2 - src/common/softfloat/source/s_subMagsF64.c
5c1026617c588bcf5f1e59230bd5bb900600b9ac - src/common/softfloat/source/f64_mul.c
5c4ee32cc78efc718aaa60ec31d0b00b1bee3c2c - src/common/softfloat/source/f64_to_ui64_r_minMag.c
6fa7493285fe2f7fdc0ac056a6367e90327905c2 - src/common/softfloat/source/f32_sub.c
da3b3f94a817909a3dc93ca5fa7675805c7979e0 - src/common/softfloat/source/f64_isSignalingNaN.c
d701741d8d6a92bb890e53deda1b795f5787f465 - src/common/softfloat/source/f64_le.c
baa7af4eea226140c26ffe6ab02a863d07f729fb - src/common/softfloat/source/f64_eq_signaling.c
2e5c29d842a8ebc5fbf987068dc9394cee609cc7 - src/common/softfloat/source/f32_to_ui64.c
054b23a974fc8d0bab232be433c4e516e6c1250a - src/common/softfloat/source/f64_lt_quiet.c
dde685423af544e5359efdb51b4bf9457c67fa3b - src/common/softfloat/source/f32_sqrt.c
fb062ecbe62a1f5878fd47f0c61490f2bde279dd - src/common/softfloat/source/s_roundToI32.c
8e58f0258218475616ff4e6317516d40ad475626 - src/common/softfloat/source/f32_lt_quiet.c
ab19c6b50c40b8089cb915226d4553d1aa902b0e - src/common/softfloat/source/f64_to_i32_r_minMag.c
86fdc2472526375539216461732d1db6a9f85b55 - src/common/softfloat/source/s_roundPackToF32.c
9266c83f3e50093cc45d7be6ab993a0e72af1685 - src/common/softfloat/source/s_roundPackToF64.c
2e0fec421f4defd293cf55c5f3af7d91f4b7d2cc - src/common/softfloat/source/ui64_to_f32.c
68843a93e1f46195243ef1164f611b759cf19d17 - src/common/softfloat/source/f32_le_quiet.c
00ab2120f71117161d4f6daaa9b90a3036a99841 - src/common/softfloat/source/f32_to_ui32.c
d0f8f08c225b60d88b6358d344404ba9df3038ec - src/common/softfloat/source/s_normSubnormalF32Sig.c
0108fe6f0d394ad72083aff9bb58507f97a0b669 - src/common/softfloat/source/ui32_to_f64.c
7bc81f5bc894118c08bfd52b59e010bc068ed762 - src/common/softfloat/source/ui32_to_f32.c
0adfa7e174cdb488bb22b06642e14e7fc6f49c67 - src/common/softfloat/source/s_roundToI64.c
c3ce12c227d25bc0de48fbcf914fc208e2448741 - src/common/softfloat/source/f64_sub.c
b9fd15957f7ae5effeccb5d8adaa7434b43f44e1 - src/common/softfloat/source/s_roundToUI64.c
29396b7c23941024a59d5ea06698d2fbc7e1a6ca - src/common/softfloat/source/f64_to_i64.c
ae25eea499b3ea5bdd96c905fd0542da11083048 - src/common/softfloat/source/s_normRoundPackToF64.c
b22876b0695f58ee56143c9f461f1dde32fefbf3 - src/common/softfloat/source/f64_to_ui64.c
b8c5ccc1e511637d8b2ba2657de4937b80c01c07 - src/common/softfloat/source/f32_le.c
1ff879eca2a273293b5cd6048419b2d2d8063b93 - src/common/softfloat/source/f64_mulAdd.c
0e9694d551848d88531f5461a9b3b91611652e9a - src/common/softfloat/source/f64_to_ui32_r_minMag.c
5a5e0d9f1ee7e8c0d1d4f9fbcf6eba330a5f1792 - src/common/softfloat/source/f32_isSignalingNaN.c
bc992c88f3de09e3a82447cf06dbde7c6604f7f8 - src/common/softfloat/source/f64_to_f32.c
1a86a6948bf6768bd23a19f1f05d40968c1d2b15 - src/common/softfloat/source/f64_rem.c
50daf9186bc5d0180d1453c957164b136d5ffc89 - src/common/softfloat/source/f64_eq.c
09cb0cdb90eb23b53cd9c1a76ba26021084710d1 - src/common/softfloat/source/s_addMagsF32.c
9f4d355d85fbe998e243fe4c7bbf8ad23062b6e2 - src/common/softfloat/source/i64_to_f64.c
fd40a71c7ebf9d632a384fadf9487cfef4f3ea98 - src/common/softfloat/source/s_shiftRightJam128.c
aaf6ccb77a1a89fa055a0fb63513297b35e2e54b - src/common/softfloat/source/f64_le_quiet.c
38bd00e9c4d2f1354c611404cca6209a6c417669 - src/common/softfloat/source/s_countLeadingZeros64.c
d9a86343e6cc75714f65f690082dd4b0ba724be9 - src/common/softfloat/source/s_roundPackToF16.c
0bf499c0e3a54186fa32b38b310cc9d98ccdcfe3 - src/common/softfloat/source/f32_eq.c
d4b26dc407a891e9ff5324853f1845a99c5d5cd2 - src/common/softfloat/source/f32_to_i32.c
296c40b0589536cb9af3231ad3dcd7f2baaa6887 - src/common/softfloat/source/f64_lt.c
0d8e42636a3409a647291fdb388001c2b11bba07 - src/common/softfloat/source/f32_to_f16.c
ec1a797b11f6e846928a4a49a8756f288bda1dfa - src/common/softfloat/source/i32_to_f64.c
729e790328168c64d65a1355e990274c249bbb3a - src/common/softfloat/source/f32_to_i32_r_minMag.c
9a5b93459ace2da23964da98617d6b18006fab86 - src/common/softfloat/source/s_countLeadingZeros8.c
84b0a01ba2a667eb28b166d45bd91352ead83e69 - src/common/softfloat/source/i64_to_f32.c
4b37be398b3e73ae59245f03b2ba2394fc902b4d - src/common/softfloat/source/s_normSubnormalF64Sig.c
6f83fa864007e8227ae09bb36a7fdc18832d4445 - src/common/softfloat/source/f32_mul.c
daeb408588738b3eb4c8b092d7f92ac597cf1fc6 - src/common/softfloat/source/f32_rem.c
a94c8c2bd74633027e52e96f41d24714d8081eb4 - src/common/softfloat/source/s_approxRecipSqrt_1Ks.c
69dc4cc63b2a9873a6eb636ee7cb704cbd502001 - src/common/softfloat/source/f64_to_ui32.c
50b3147f8413f0595a4c3d6e6eeab84c1ffecada - src/common/softfloat/source/s_normRoundPackToF32.c
bbc70102b30f152a560eb98e7a1a4b11b9ede85e - src/common/softfloat/source/f64_sqrt.c
760fd7c257a1f915b61a1089b2acb143c18a082e - src/common/softfloat/source/s_addMagsF64.c
ebb4f674b6213fec29761fc4e05c1e3ddeda6d17 - src/common/softfloat/source/f32_mulAdd.c
4445b1fbbd507144f038fd939311ff95bc2cf5f1 - src/common/softfloat/source/ui64_to_f64.c
871cb1a4037d7b4e73cb20ad18390736eea7ae36 - src/common/softfloat/source/f32_to_ui64_r_minMag.c
ce37cdce572a3b02d42120e81c4969b39d1a67b6 - src/common/softfloat/source/f64_to_i32.c
c29536f617d71fe30accac44b2f1df61c98a97dc - src/common/softfloat/source/f64_div.c
54cbeb5872a86e822bda852ec15d3dcdad4511ce - src/common/softfloat/source/f64_add.c
e7890082ce426d88b4ec93893da32e306478c0d1 - src/common/softfloat/source/s_approxRecipSqrt32_1.c
824383b03952c611154bea0a862da2b9e2a43827 - src/common/softfloat/source/s_subMagsF32.c
00c612847b3bd227a006a4a2697df85866b80315 - src/common/softfloat/source/s_mulAddF32.c
7c8e5ab3f9bf6b2764ce5fffe80b2674be566a12 - src/common/softfloat/source/softfloat_state.c
e4930e155580a0f5aa7f3694a6205bc9aebfe7aa - src/common/softfloat/source/f32_to_f64.c
1484fc96d7731695bda674e99947280a86990997 - src/common/softfloat/source/f32_to_i64.c
2960704c290f29aae36b8fe006884d5c4abcabb4 - src/common/softfloat/source/f32_div.c
23b76c1d0be64e27a6f7e2ea7b8919f1a45a8e7c - src/common/softfloat/source/f32_to_ui32_r_minMag.c
fe06512577e642b09196d46430d038d027491e9f - src/common/softfloat/source/f32_eq_signaling.c
5e6f9e120a17cc73297a35e4d57e4b9cbce01780 - src/common/softfloat/source/s_mul64To128.c
e0ad81cfb5d2c0e74dc4ece9518ca15ffc77beaf - src/common/softfloat/source/f32_roundToInt.c
d8b0c55a49c4fa0b040541db6d5ff634d7d103e7 - src/common/softfloat/source/8086-SSE/s_propagateNaNF64UI.c
a6d5c83f6a0542b33ac9c23ac65ef69002cfff9d - src/common/softfloat/source/8086-SSE/s_propagateNaNF32UI.c
86cda6550cb02bbf595d1667573e4be83702a95e - src/common/softfloat/source/8086-SSE/specialize.h
3d0dbc0a672d039a6346e1c21ddf87ffc9181978 - src/common/softfloat/source/8086-SSE/s_f32UIToCommonNaN.c
d152bc457b655725185bdff42b36bb96d6e6715e - src/common/softfloat/source/8086-SSE/s_commonNaNToF16UI.c
1dd1b424087d9c872684df0c1b4063b077992d5f - src/common/softfloat/source/8086-SSE/s_f64UIToCommonNaN.c
252c816378fddab616b1f2a61e9fedd549224483 - src/common/softfloat/source/8086-SSE/s_commonNaNToF64UI.c
21a11759ed2afd746a47c4d78b67640c2d052165 - src/common/softfloat/source/8086-SSE/s_commonNaNToF32UI.c
0cbae7a5abc336331d460cbd3640d2cda02af434 - src/common/softfloat/source/8086-SSE/softfloat_raiseFlags.c
4cd1d6cfca3936a39aab9bc0eb622f5c7c848be1 - src/common/softfloat/source/include/softfloat_types.h
1ded4df85ff5fa904fa54c27d681265425be1658 - src/common/softfloat/source/include/primitiveTypes.h
9645e179cf888bcd0e3836e8126b204b4b42b315 - src/common/softfloat/source/include/softfloat.h
de09949a0ca5cd2a84b882b5b5c874d01d3ae11a - src/common/softfloat/source/include/primitives.h
f36c896cfa01f1de9f9420189319e4e00c7fc52a - src/common/softfloat/source/include/internals.h
a71d2c98bc2dc5445436cd96ac5c7e6a57efcf84 - src/nvidia/Makefile
c5f16fdf43ca3d2845d120c219d1da11257072b0 - src/nvidia/nv-kernel.ld
1a98a2aaf386cd3d03b4b5513d6a511c60f71c2c - src/nvidia/arch/nvalloc/unix/include/nv-reg.h
4750735d6f3b334499c81d499a06a654a052713d - src/nvidia/arch/nvalloc/unix/include/nv-caps.h
3c61881e9730a8a1686e422358cdfff59616b670 - src/nvidia/arch/nvalloc/unix/include/nv_escape.h
2d644a3f78bcda50e813b25156e9df07ec6da7b8 - src/nvidia/arch/nvalloc/unix/include/nv.h
e69045379ed58dc0110d16d17eb39a6f600f0d1d - src/nvidia/arch/nvalloc/unix/include/nv-ioctl-lockless-diag.h
ae7d5cb2c57beeea12724e09d957e233a71c12a1 - src/nvidia/arch/nvalloc/unix/include/nv-priv.h
507d35d1d4c5ba94ef975f75e16c63244d6cd650 - src/nvidia/arch/nvalloc/unix/include/nv-ioctl.h
1e89b4a52a5cdc6cac511ff148c7448d53cf5d5c - src/nvidia/arch/nvalloc/unix/include/os_custom.h
499e72dad20bcc283ee307471f8539b315211da4 - src/nvidia/arch/nvalloc/unix/include/nv-unix-nvos-params-wrappers.h
5f2a30347378f2ed028c9fb7c8abea9b6032141c - src/nvidia/arch/nvalloc/unix/include/osapi.h
c9120c6a33932c7514608601f82ea85d2386b84f - src/nvidia/arch/nvalloc/unix/include/os-interface.h
ddfedb3b81feb09ea9daadf1a7f63f6309ee6e3b - src/nvidia/arch/nvalloc/unix/include/rmobjexportimport.h
9c7b09c55aabbd670c860bdaf8ec9e8ff254b5e9 - src/nvidia/arch/nvalloc/unix/include/nv-kernel-rmapi-ops.h
1d8b347e4b92c340a0e9eac77e0f63b9fb4ae977 - src/nvidia/arch/nvalloc/unix/include/nv-ioctl-numbers.h
3a26838c4edd3525daa68ac6fc7b06842dc6fc07 - src/nvidia/arch/nvalloc/unix/include/nv-gpu-info.h
7188b83b28051b40cda60f05cacfa12b94ade4dc - src/nvidia/arch/nvalloc/unix/include/osfuncs.h
8f725a01c2a29658580936a87bdd33308030a332 - src/nvidia/arch/nvalloc/unix/src/os.c
63edc719390a814eb70290e709634d133ad198cc - src/nvidia/arch/nvalloc/unix/src/osmemdesc.c
11c6d988bccbdf49ac241d77e6363c7843a0191f - src/nvidia/arch/nvalloc/unix/src/power-management-tegra.c
6ca29f3d6b38fb5d05ff222cd1b79ade811a74b2 - src/nvidia/arch/nvalloc/unix/src/osunix.c
7ce04b5b6d90c9a433af667c8644b8e328af9968 - src/nvidia/arch/nvalloc/unix/src/unix_console.c
b5b409625fde1b640e4e93276e35248f0fccfa4c - src/nvidia/arch/nvalloc/unix/src/gcc_helper.c
16e1482d8a9287bc2fd3da28dd62066e4e3ff92b - src/nvidia/arch/nvalloc/unix/src/exports-stubs.c
15920addb99f39201a7a7cc9c4e7a9e22c13d118 - src/nvidia/arch/nvalloc/unix/src/osinit.c
b7f20cd0a65957e5f5639cb561ca14893ee024cb - src/nvidia/arch/nvalloc/unix/src/osapi.c
eccfc4f261fd8531254eb2961120073aac9847db - src/nvidia/arch/nvalloc/unix/src/rmobjexportimport.c
690927567b5344c8030e2c52d91f824bb94e956c - src/nvidia/arch/nvalloc/unix/src/registry.c
a28937330829b4f27a9da5e2c3776ceb293b6085 - src/nvidia/arch/nvalloc/unix/src/os-hypervisor-stubs.c
69d2719c759456a22ccc4de470e5d15cf0c3d26c - src/nvidia/arch/nvalloc/unix/src/escape.c
d1089d8ee0ffcdbf73a42d7c4edb90769aa79d8c - src/nvidia/arch/nvalloc/common/inc/nvrangetypes.h
b417d06ed1845f5ed69181d8eb9de6b6a87fa973 - src/nvidia/arch/nvalloc/common/inc/nv-firmware.h
e181d568b36f4d6e717d6d26c7bbe4b4ed968f4f - src/nvidia/generated/g_gpu_mgmt_api_nvoc.c
73a37ad59b9b13b61eb944748b6c2ba3cad7b630 - src/nvidia/generated/g_traceable_nvoc.h
eefa27872e4acde78a18211b8ab51bc5436b6cfe - src/nvidia/generated/g_nv_debug_dump_nvoc.h
47bed9b41213c837c4ca08aaaefe079b84dfd52f - src/nvidia/generated/g_client_nvoc.c
0a6b27d74e5e4ba872d77bfd369ddb5772abd8f8 - src/nvidia/generated/g_event_buffer_nvoc.h
653b72892f7c3ce7fd3e28690863ef89826b5314 - src/nvidia/generated/g_context_dma_nvoc.c
6771b718fe182d524864f55fa23f145012205d5b - src/nvidia/generated/g_objtmr_nvoc.h
bc3759a264528b7ab329e6813cdf37aeedf86279 - src/nvidia/generated/g_allclasses.h
33932ed2752329a63bcafd88f00e69203c3621c0 - src/nvidia/generated/g_gpu_mgr_nvoc.h
2239839c8a780a87e786439a49ab63e25d25001a - src/nvidia/generated/g_rmconfig_util.h
17c69e14076324c230bbe68b55141089c1f4d10e - src/nvidia/generated/g_os_desc_mem_nvoc.h
47f006ce959471f8ecd2a7b05d83d854610a521b - src/nvidia/generated/g_system_mem_nvoc.c
906af83650985c58b63fe3e1f24b75b5ac62d90d - src/nvidia/generated/g_gpu_nvoc.c
b459db8ccf299f7bda0fa9fa18ef1e3aeb2996eb - src/nvidia/generated/g_gpu_user_shared_data_nvoc.c
8db5b2345278ce409562ca35754447d353dd54d7 - src/nvidia/generated/g_rs_resource_nvoc.h
170a42c047d0085873a48db0d83d59feb8dc327f - src/nvidia/generated/g_binary_api_nvoc.c
a1bfb789c1e23bac2b7a31255b7d738e40a290f2 - src/nvidia/generated/g_mem_nvoc.h
fc7f913eab7ef26b877606e0593928784c3121ec - src/nvidia/generated/g_device_nvoc.c
d960a819d29d7e968eaab0e7a29897426b7ba646 - src/nvidia/generated/g_io_vaspace_nvoc.h
4931d4e65a7efb4c60f03ff13841e1740d4fbcae - src/nvidia/generated/g_rpc-structures.h
b9f25e208f5ea6f566dbd9cbcaaa30cd0786c31b - src/nvidia/generated/g_client_nvoc.h
9b0d4695e84ec959790dd553944cb44685c5c251 - src/nvidia/generated/g_event_nvoc.h
10645f82dd031d0aa6f4a3dfc039ef776f2fdee9 - src/nvidia/generated/g_hal_nvoc.h
a4213261e7f2ae0014f7056c33ab04bacf07c9de - src/nvidia/generated/g_resource_fwd_decls_nvoc.h
693cd3e7b93e9377634800ff2b3669939ba10603 - src/nvidia/generated/g_kernel_head_nvoc.h
d0a43a5d4941392b3c6c1b5a0d156edc26559ded - src/nvidia/generated/g_disp_inst_mem_nvoc.c
3c7d16d75ef53c09d7076c55976e71fd17a3f483 - src/nvidia/generated/g_subdevice_nvoc.h
d2a8f1901d17c711f0f40dc32289ede7d9b440c7 - src/nvidia/generated/rmconfig.h
57431742e2f1bbefc9142db49a84f4e8264e4673 - src/nvidia/generated/g_mem_list_nvoc.h
f9bdef39159a8475626a0edcbc3a53505a0ff80a - src/nvidia/generated/g_os_hal.h
b0f47afbc6aefce339db95801f48823989abad8a - src/nvidia/generated/g_mem_desc_nvoc.h
61cb019a28b25479d65022226623be2d20f32429 - src/nvidia/generated/g_nv_name_released.h
1ca8ad4d9216aef1df145358c48e7ca533927e25 - src/nvidia/generated/g_objtmr_nvoc.c
97bab26b95f21f4618fd023284b20dd4d5a76ad4 - src/nvidia/generated/g_disp_capabilities_nvoc.h
12cb2f4228fe81762587413c7f346f3d271d9b6b - src/nvidia/generated/g_eng_state_nvoc.h
2cac1d138a8bcf99e70068f50698f6cdd3dc57dd - src/nvidia/generated/g_syncpoint_mem_nvoc.c
14336cd31573538728e0bf17941681b9d91d2b12 - src/nvidia/generated/g_gpu_access_nvoc.c
14450b18d002d4e1786d4630ef4f1994c07ef188 - src/nvidia/generated/g_odb.h
d47bc1508583e02dc8234efce85fb7803dbd3d97 - src/nvidia/generated/g_hypervisor_nvoc.h
85580813dbcf78bf4aeecf5e55054447396dcfe3 - src/nvidia/generated/g_gpu_db_nvoc.c
a42b32adb0533fafb2de6b127c7e1939029cdeb5 - src/nvidia/generated/g_system_nvoc.c
8f1b0c4a6b75280b5155aef8490c95237bbf6f97 - src/nvidia/generated/g_gpu_group_nvoc.h
42fac2ccb00006825e7d42a6b23264870365ace6 - src/nvidia/generated/g_gpu_user_shared_data_nvoc.h
631ac1d7bfa00f66e699937b8cabc0cbbc26d151 - src/nvidia/generated/g_rs_server_nvoc.c
0b2233e5cb68257231dd94310559bc09635c8279 - src/nvidia/generated/g_generic_engine_nvoc.c
c2eae693c1b8d8502db368048f3b1c45d0576dc5 - src/nvidia/generated/g_chips2halspec_nvoc.h
0097015ef25011bee849966ef5248d206ab0f816 - src/nvidia/generated/g_gpu_resource_nvoc.h
b18ed7a5d71571b57266995f0d30317814e8bd6e - src/nvidia/generated/g_gpu_access_nvoc.h
81f915ae199df67c1884bfc18f3d23f20941af6a - src/nvidia/generated/g_dce_client_nvoc.c
436c2b21a6d67fed4167b749fd79b85e073d9512 - src/nvidia/generated/g_rpc-message-header.h
dad5def7d6c24268ac1e1a75038cbf33900745ff - src/nvidia/generated/g_binary_api_nvoc.h
35889e5f6bdc996fa95c76d05e7b8902328d450b - src/nvidia/generated/g_rs_client_nvoc.h
92c99fd64caa9f78664ed1fd54313ee82e2cf9c7 - src/nvidia/generated/g_disp_channel_nvoc.h
d3b89f97bb0f4c5c0ca44e74040aab24c70ae06f - src/nvidia/generated/g_generic_engine_nvoc.h
f1e98f21f75eaba821fe16f2410921a4fd7c54ee - src/nvidia/generated/g_mem_mgr_nvoc.h
803eb8b520597468e3dc99ecd29ffc1027dfe4be - src/nvidia/generated/g_context_dma_nvoc.h
7f89931ecb53fb0b88da1be5489fe50e3d7897c3 - src/nvidia/generated/g_resserv_nvoc.h
549314acf103e21a4cab113114f719626202a19f - src/nvidia/generated/g_tmr_nvoc.c
9b8e6b29a48ff022dda092cc8139dbe5ac6dedd8 - src/nvidia/generated/g_rs_client_nvoc.c
6742231d4f59cc03ed822b80fb3995d1821de488 - src/nvidia/generated/g_standard_mem_nvoc.c
0e15fddc0426c42f3d22e5cb5609b5193adb7145 - src/nvidia/generated/g_standard_mem_nvoc.h
24fe74bdc3aa966907752a24a7d6bff2c74abd4f - src/nvidia/generated/g_console_mem_nvoc.h
4f3ff51033e4ef9491e8b345ffea36dfb5122055 - src/nvidia/generated/g_chips2halspec_nvoc.c
5a46be3060122eca672dc3bf11bdb6e68700b5e4 - src/nvidia/generated/g_gpu_halspec_nvoc.h
e4ccb216aafed837a37fca90284b0a0413b3080d - src/nvidia/generated/g_kernel_head_nvoc.c
c010d93fd293ec399a0cd05662a177e7251c7b1e - src/nvidia/generated/g_event_nvoc.c
1268ee54592c8ae1078b72bfaff882549efbcd3c - src/nvidia/generated/g_disp_capabilities_nvoc.c
dc922421b0f41b7b8f0219caa623c099fc3f083d - src/nvidia/generated/g_ioaccess_nvoc.h
a44899c21c77899b3b8deb7b2613b16841bbf397 - src/nvidia/generated/g_gpu_mgr_nvoc.c
431796f7485743a0848883a204676424b4a3b65f - src/nvidia/generated/g_hal.h
97ce053e6b047ecd0803a7571d061516de9d95ff - src/nvidia/generated/g_hal_mgr_nvoc.c
1d66bab50a7d39faa2b0fec469a4512d2c7610d5 - src/nvidia/generated/g_rmconfig_util.c
bfb7c703aa0e55ed5df9310a233861e43ef5c828 - src/nvidia/generated/g_prereq_tracker_nvoc.h
ecb4db5b676f0541c851ba9454577812e1a07023 - src/nvidia/generated/g_object_nvoc.c
b5d4219786bd77483ce70a770caac52db51566cc - src/nvidia/generated/g_ioaccess_nvoc.c
61d09dd789fc4159344cec4c02ff9db13cd246eb - src/nvidia/generated/g_hal_mgr_nvoc.h
dbf11a9f931cfac248c3e6006bedeadb3d062670 - src/nvidia/generated/g_gpu_group_nvoc.c
155b6249c4fd472218cef640fa0a665cec10bfa4 - src/nvidia/generated/g_disp_sf_user_nvoc.h
cf2a81f40855ceb13b0dc18fb1ee790ba939bfb2 - src/nvidia/generated/g_event_buffer_nvoc.c
e70cc806acae6fc1c3f4ffc283ded8351f3482c4 - src/nvidia/generated/g_hda_codec_api_nvoc.c
19d73b04597bca6d3a7dd82d327e6cbf4a591a65 - src/nvidia/generated/g_eng_state_nvoc.c
a044b01f708a5690f1796579904539791e24d5a3 - src/nvidia/generated/g_hda_codec_api_nvoc.h
8a76494ebc5809ed30c31a9afa2a46bf2463e6e5 - src/nvidia/generated/g_dce_client_nvoc.h
9b4cf69383d0a7b7492b2fa28983cfe4d88c3263 - src/nvidia/generated/g_vaspace_nvoc.h
262192e794cba0bb120cbfe75ee037e868e34ef3 - src/nvidia/generated/g_subdevice_nvoc.c
93f9738c0e8aa715592306ddf023adf6b548dcc4 - src/nvidia/generated/g_nvh_state.h
6aea089965620df057ab6b900496590ca26772b2 - src/nvidia/generated/g_virt_mem_mgr_nvoc.c
fcb89aff81d5e2b0a4a39069356ee4644bf53b2b - src/nvidia/generated/g_os_nvoc.c
3b0e038829647cfe0d8807579db33416a420d1d2 - src/nvidia/generated/g_chips2halspec.h
b378d336af4d5cb4b1fb13b85042fad1fe02f4cc - src/nvidia/generated/g_journal_nvoc.h
eb95c379eec668bfd697bcd4977d4f18da0b56bb - src/nvidia/generated/g_device_nvoc.h
8e8c58d6e99de01acf926026506ab91499109dd4 - src/nvidia/generated/g_gpu_nvoc.h
734ea4782083e4a7b940722577dc75177446eed1 - src/nvidia/generated/g_io_vaspace_nvoc.c
bdb198b18c700dc396f73191a8e696d106a1f716 - src/nvidia/generated/g_resource_nvoc.h
7c698deeb69b4e92af3c7c4e6fc6274b75dab05c - src/nvidia/generated/g_disp_channel_nvoc.c
31270057a91fcd2dc7dbf1abed9e3f67d8db1787 - src/nvidia/generated/g_rmconfig_private.h
44bcd3503d90703a33a7bb9c75b41111d092c5f8 - src/nvidia/generated/g_client_resource_nvoc.c
574adefb17ee3e2a7d85262f8ce4d8b4bc4367b4 - src/nvidia/generated/g_gpu_halspec_nvoc.c
c1652e6cc404f23660ee440b61c6d0b9149ff593 - src/nvidia/generated/g_gpu_resource_nvoc.c
aac0c7df733e179f2a5906ab66b302a5bee82cbe - src/nvidia/generated/g_gpu_db_nvoc.h
09597f23d6a5440258656be81e7e6709390128f8 - src/nvidia/generated/g_hal_private.h
00757a3a6c876b01e3232b301a120131f194acd5 - src/nvidia/generated/g_sdk-structures.h
b35821f54f7ec965edd25a60e58d7639cd19df19 - src/nvidia/generated/g_hal_archimpl.h
f5ad33480e2b73c6ff2bfd586e027f19318a597c - src/nvidia/generated/g_disp_console_mem_nvoc.h
af86a67a1c33acc193efa6dba8bc46ebe5dbb5eb - src/nvidia/generated/g_gpu_class_list.c
c5021789fed61a37794ade5a3632a8eb37c0c27f - src/nvidia/generated/g_kern_disp_nvoc.h
8b5821085e5aabc00408e7a90e78b2471de6797e - src/nvidia/generated/g_os_nvoc.h
87c14e1c1a8f37f139f6a99efaf7752d6db48db5 - src/nvidia/generated/g_kern_disp_nvoc.c
a97bf85ce6681aae086e0415aecaebf0208bfebb - src/nvidia/generated/g_tmr_nvoc.h
d44164b90bdf5ed4a2ce9a5d13f680b8a997a5cb - src/nvidia/generated/g_disp_objs_nvoc.h
3b08d4bb1612bb193cd2f26229b119cc43284879 - src/nvidia/generated/g_rs_server_nvoc.h
ddc0ac4e1d8b8aef15e147f1f85f8df37c196763 - src/nvidia/generated/g_hal_register.h
aac848bd48955659eb5e07fcac70e6fe3c3a137a - src/nvidia/generated/g_hal_nvoc.c
b3b3ee6b514249e553187dc14a98f74bdd9fa6c6 - src/nvidia/generated/g_virt_mem_mgr_nvoc.h
16c7821c01a4e728d66a25ca6eb824ce85ff908e - src/nvidia/generated/g_rs_resource_nvoc.c
5c65c680b77a501fd98460c4ce8fecd7ed95be14 - src/nvidia/generated/g_mem_mgr_nvoc.c
4a99aba1b2a7bd0d5fb8ef6de414e14858d068ba - src/nvidia/generated/g_console_mem_nvoc.c
142a5e1b07a3bbe2952b27f4a65a133f5a100dc3 - src/nvidia/generated/g_prereq_tracker_nvoc.c
c8d6ddc934e0c4ae3fd2d2dc81d0d1a91c8b8d52 - src/nvidia/generated/g_disp_inst_mem_nvoc.h
76b1f545e3712a2f8e7c31b101acd9dd682c52f8 - src/nvidia/generated/g_traceable_nvoc.c
c0750d49486dcf1718083d5deaef16c718b9a909 - src/nvidia/generated/g_eng_desc_nvoc.h
ad695d35b837b970b8f50a280d400ffed5067c0f - src/nvidia/generated/g_os_desc_mem_nvoc.c
b114f65bcee6bda607f4549827ccb298f7449c03 - src/nvidia/generated/g_disp_objs_nvoc.c
b0089bee11caa0d8994b39eaecfb42ca3507de37 - src/nvidia/generated/g_syncpoint_mem_nvoc.h
b30dc7b4114007f7649e18a7be2d829a3752447a - src/nvidia/generated/g_mem_nvoc.c
06094e14a41e58c8a687bc8b64197a73c0c2b61a - src/nvidia/generated/g_system_nvoc.h
125b688444f16d9cb3902a9f79959c05c12397e3 - src/nvidia/generated/g_disp_sf_user_nvoc.c
67df2bc381609f290f173ea73f3e8125ac073888 - src/nvidia/generated/g_gpu_mgmt_api_nvoc.h
71185f1534d3c53954c271566b610045aef3ed98 - src/nvidia/generated/g_system_mem_nvoc.h
47ced25e3252d402b9a5c30115705d16651ab460 - src/nvidia/generated/g_object_nvoc.h
a4d3356c085ac066331092ca8abc714eae503abc - src/nvidia/generated/g_disp_console_mem_nvoc.c
493a547850d9e7cdf74350de0e42aef2f66869a9 - src/nvidia/generated/g_client_resource_nvoc.h
e41a55d75416e6d9978d2cf788553acdb9336afd - src/nvidia/generated/g_resource_nvoc.c
ac3965eea078f1998c3a3041f14212578682e599 - src/nvidia/generated/g_vaspace_nvoc.c
3b1586e0aebb66d31190be64b1109232ee3467bf - src/nvidia/generated/g_ref_count_nvoc.h
fff3ebc8527b34f8c463daad4d20ee5e33321344 - src/nvidia/inc/lib/ref_count.h
ec26741397ebd68078e8b5e34da3b3c889681b70 - src/nvidia/inc/lib/base_utils.h
f8d9eb5f6a6883de962b63b4b7de35c01b20182f - src/nvidia/inc/lib/protobuf/prb.h
601edb7333b87349d791d430f1cac84fb6fbb919 - src/nvidia/inc/lib/zlib/inflate.h
083667047714a008219fa41b3a7deb9803bbe48a - src/nvidia/inc/libraries/poolalloc.h
8dd7f2d9956278ed036bbc288bff4dde86a9b509 - src/nvidia/inc/libraries/eventbufferproducer.h
1b28bd0ee2e560ca2854a73a3ee5fb1cf713d013 - src/nvidia/inc/libraries/nvoc/utility.h
3919368b5b4cdd72d7da49801232048b5e786845 - src/nvidia/inc/libraries/nvoc/prelude.h
e35ff9733ea7fbffe0641399ccb0fd92a492e30d - src/nvidia/inc/libraries/nvoc/runtime.h
85b30b26f790b55f5370bbe9bb07349c62353841 - src/nvidia/inc/libraries/nvoc/object.h
664ff0e10e893923b70425fa49c9c48ed0735573 - src/nvidia/inc/libraries/nvoc/rtti.h
56b8bae7756ed36d0831f76f95033f74eaab01db - src/nvidia/inc/libraries/prereq_tracker/prereq_tracker.h
a5e6f98ac5fb53fd26ee429c65b73fa1a4715631 - src/nvidia/inc/libraries/ioaccess/ioaccess.h
c314121149d3b28e58a62e2ccf81bf6904d1e4bc - src/nvidia/inc/libraries/utils/nvmacro.h
d0458cdc61eb650d57429f9ae58e60a62ab93025 - src/nvidia/inc/libraries/utils/nvrange.h
1aabd992631089ec24621835e046ddf2e2fd4232 - src/nvidia/inc/libraries/utils/nvbitvector.h
9aa5870d052a45c2489a6ea1a4f2e30fbc52d6be - src/nvidia/inc/libraries/utils/nv_enum.h
d229861edca62007af83b86aa7fc1c77e957aa6f - src/nvidia/inc/libraries/utils/nvprintf.h
77db350059fa3326500af4269f09e1f02c1ab07b - src/nvidia/inc/libraries/utils/nvassert.h
9f76ab27650b137566bf49202857c3195674d44a - src/nvidia/inc/libraries/containers/map.h
63a8244e13f9217461f624ab46281716ef42b20f - src/nvidia/inc/libraries/containers/ringbuf.h
5f116730f8b7a46e9875850e9b6ffb2a908ad6c2 - src/nvidia/inc/libraries/containers/btree.h
fc211c8276ebcee194080140b5f3c30fba3dfe49 - src/nvidia/inc/libraries/containers/queue.h
67ecfa8adcb2b5bb5eb8e425bc5889390fd77ca8 - src/nvidia/inc/libraries/containers/list.h
1dacc1c1efc757c12e4c64eac171474a798b86fd - src/nvidia/inc/libraries/containers/eheap_old.h
4c8c52993d4a99f7552cd10e8c1fc8aea0330a4a - src/nvidia/inc/libraries/containers/vector.h
a23790cded20fe2347c19083f2b7430aeb26ab27 - src/nvidia/inc/libraries/containers/type_safety.h
5cabf8b70c3bb188022db16f6ff96bcae7d7fe21 - src/nvidia/inc/libraries/containers/multimap.h
f97ea1dce9d593ecc599df510c98054db2b2d1a2 - src/nvidia/inc/libraries/nvlog/nvlog_printf.h
2eb9b0121765c0a3e1085f41a3d47c89e7d5dcb0 - src/nvidia/inc/libraries/nvlog/nvlog.h
d2c035e67e295b8f33f0fc52d9c30e43c5d7c2ba - src/nvidia/inc/libraries/nvlog/internal/nvlog_printf_internal.h
7f623508b3f3631ce89dad6d8762f593b1ac0d71 - src/nvidia/inc/libraries/tls/tls.h
87a130551593551380ac3e408f8044cc0423c01a - src/nvidia/inc/libraries/nvport/nvport.h
2487ffc1eb1e50b27ba07e0581da543d80bdaa72 - src/nvidia/inc/libraries/nvport/safe.h
199df020beb31a865f19ceec20f8f758e757c39a - src/nvidia/inc/libraries/nvport/debug.h
147d47ef4bd860394d1d8ae82c68d97887e2898b - src/nvidia/inc/libraries/nvport/core.h
6d698ca4fc5e48c525f214a57e1de0cc4aa9e36b - src/nvidia/inc/libraries/nvport/thread.h
6065fa9a525d80f9b61acb19e476066823df0700 - src/nvidia/inc/libraries/nvport/sync.h
a1d93b6ec8ff01a3c2651e772a826ee11a7781d7 - src/nvidia/inc/libraries/nvport/util.h
fb5a011275328b7c1edc55abc62e604462b37673 - src/nvidia/inc/libraries/nvport/atomic.h
0fe8c0bd2791b105baf7cad7a90797ed9f743115 - src/nvidia/inc/libraries/nvport/memory.h
f31ed19d0588861b8c2b1489dd4e70d430110db5 - src/nvidia/inc/libraries/nvport/crypto.h
4e25b80a74aad3f6403d7c34cd55f0ed58824888 - src/nvidia/inc/libraries/nvport/cpu.h
7d8efe42c402cbbdd1710ef1f7498bf3e883a743 - src/nvidia/inc/libraries/nvport/string.h
23afbd04f4e4b3301edcfdec003c8e936d898e38 - src/nvidia/inc/libraries/nvport/inline/debug_unix_kernel_os.h
9596b274389ea56acff6ca81db8201f41f2dd39d - src/nvidia/inc/libraries/nvport/inline/atomic_clang.h
a8c9b83169aceb5f97d9f7a411db449496dc18f6 - src/nvidia/inc/libraries/nvport/inline/util_generic.h
bbece45965ffbc85fbd383a8a7c30890c6074b21 - src/nvidia/inc/libraries/nvport/inline/util_gcc_clang.h
254e86ee0c1d5c0ad652bc1f3182b46f6d5c0f3b - src/nvidia/inc/libraries/nvport/inline/memory_tracking.h
1d6a239ed6c8dab1397f056a81ff456141ec7f9c - src/nvidia/inc/libraries/nvport/inline/util_valist.h
f267235fd8690e1b1d7485d3a815841607683671 - src/nvidia/inc/libraries/nvport/inline/safe_generic.h
645734ed505a4d977490e54b26cdf49657e20506 - src/nvidia/inc/libraries/nvport/inline/sync_tracking.h
ba267abed142db81efe7807b53c26ab4345da286 - src/nvidia/inc/libraries/nvport/inline/atomic_gcc.h
2dec1c73507f66736674d203cc4a00813ccb11bc - src/nvidia/inc/libraries/resserv/rs_domain.h
290f84ec0b699931373eea3cd84437faf578e4a3 - src/nvidia/inc/libraries/resserv/resserv.h
3e431d72308a8b5fc423901a09079904a644b96e - src/nvidia/inc/libraries/resserv/rs_server.h
98fa7e07b6b41d1ba4ace1de93b7d7ddfd1d7c20 - src/nvidia/inc/libraries/resserv/rs_resource.h
1d04abec9438189995cb2a675f4e35a79599aae4 - src/nvidia/inc/libraries/resserv/rs_client.h
cd033fe116a41285a979e629a2ee7b11ec99369f - src/nvidia/inc/libraries/resserv/rs_access_rights.h
df174d6b4f718ef699ca6f38c16aaeffa111ad3c - src/nvidia/inc/libraries/resserv/rs_access_map.h
5fd1da24ae8263c43dc5dada4702564b6f0ca3d9 - src/nvidia/inc/os/dce_rm_client_ipc.h
c6efd51b8b8447829a0867cd7fb7a5a5a2fb1e3d - src/nvidia/inc/kernel/diagnostics/traceable.h
fd780f85cb1cd0fd3914fa31d1bd4933437b791d - src/nvidia/inc/kernel/diagnostics/tracer.h
7e75b5d99376fba058b31996d49449f8fe62d3f0 - src/nvidia/inc/kernel/diagnostics/profiler.h
7615ac3a83d0ad23b2160ff8ad90bec9eb1f3c6c - src/nvidia/inc/kernel/diagnostics/journal.h
b259f23312abe56d34a8f0da36ef549ef60ba5b0 - src/nvidia/inc/kernel/diagnostics/nv_debug_dump.h
3a28bf1692efb34d2161907c3781401951cc2d4f - src/nvidia/inc/kernel/diagnostics/journal_structs.h
8ef620afdf720259cead00d20fae73d31e59c2f7 - src/nvidia/inc/kernel/virtualization/hypervisor/hypervisor.h
f60f647bcf307f7639bccb99cb0244c7314115a1 - src/nvidia/inc/kernel/os/os_stub.h
408c0340350b813c3cba17fd36171075e156df72 - src/nvidia/inc/kernel/os/os.h
c8496199cd808ed4c79d8e149961e721ad96714e - src/nvidia/inc/kernel/os/capability.h
cda75171ca7d8bf920aab6d56ef9aadec16fd15d - src/nvidia/inc/kernel/os/nv_memory_type.h
497492340cea19a93b62da69ca2000b811c8f5d6 - src/nvidia/inc/kernel/rmapi/event_buffer.h
1399c6dc08b96577bb778e66730e7f4bcf8e7256 - src/nvidia/inc/kernel/rmapi/rmapi.h
b4bae9ea958b4d014908459e08c93319784c47dd - src/nvidia/inc/kernel/rmapi/event.h
99a27d87c7f1487f8df5781d284c2e9a83525892 - src/nvidia/inc/kernel/rmapi/binary_api.h
61e3704cd51161c9804cb168d5ce4553b7311973 - src/nvidia/inc/kernel/rmapi/resource.h
2baec15f4c68a9c59dd107a0db288e39914e6737 - src/nvidia/inc/kernel/rmapi/client.h
ac9288d75555180c1d5dd6dd7e0e11fb57a967f2 - src/nvidia/inc/kernel/rmapi/exports.h
7646fc9f1d17b29747b457655d65f7cae80ccc33 - src/nvidia/inc/kernel/rmapi/control.h
7e1200e609082316ed4bc2d0d925e15396b695a5 - src/nvidia/inc/kernel/rmapi/mapping_list.h
4453fe6463e3155063f2bdbf36f44697606a80a5 - src/nvidia/inc/kernel/rmapi/client_resource.h
aab23ad58777406fa75b55778adc747f17c1afdb - src/nvidia/inc/kernel/rmapi/rs_utils.h
6f0f62525d2b966a24adaaabf19e79e6efc4e572 - src/nvidia/inc/kernel/rmapi/rmapi_utils.h
a92dbf2870fe0df245ea8967f2f6a68f5075ecaf - src/nvidia/inc/kernel/rmapi/resource_fwd_decls.h
2724476b61b1790f1b7c293cc86e8a268125e11c - src/nvidia/inc/kernel/rmapi/param_copy.h
2b23f2dbd8f3f63a17a1b63ebb40a2fd7fd8801a - src/nvidia/inc/kernel/rmapi/alloc_size.h
5e9928552086947b10092792db4a8c4c57a84adf - src/nvidia/inc/kernel/platform/acpi_common.h
3e11362627f9ad55e7d657da7929562230220591 - src/nvidia/inc/kernel/platform/sli/sli.h
93f40859dc710fd965a643da1d176790cc8886d5 - src/nvidia/inc/kernel/core/locks.h
bdc4ab675c6f6c4bd77c3aaf08aa5c865b186802 - src/nvidia/inc/kernel/core/hal.h
42596ff1ef62df0b439e8a1e73c71b495dcf311a - src/nvidia/inc/kernel/core/printf.h
457c02092adfc1587d6e3cd866e28c567acbc43a - src/nvidia/inc/kernel/core/info_block.h
bffae4da6a1f9b7dc7c879587fd674b49b46dac1 - src/nvidia/inc/kernel/core/core.h
37f267155ddfc3db38f110dbb0397f0463d055ff - src/nvidia/inc/kernel/core/strict.h
b00302aec7e4f4e3b89a2f699f8b1f18fc17b1ba - src/nvidia/inc/kernel/core/hal_mgr.h
2b41b4346b7d07ca8d505574ea0f9aad6910dd69 - src/nvidia/inc/kernel/core/prelude.h
ce992cb08e286a88c491ee8e64019ad5f8493d1b - src/nvidia/inc/kernel/core/thread_state.h
b5859c7862fb3eeb266f7213845885789801194a - src/nvidia/inc/kernel/core/system.h
ce3302c1890e2f7990434f7335cb619b12dee854 - src/nvidia/inc/kernel/gpu/gpu_resource_desc.h
7010ff346c27b6453c091f5577672b8b1821808d - src/nvidia/inc/kernel/gpu/gpu_access.h
10ba0b9d4c67c8027b391073dab8dc4388f32fd7 - src/nvidia/inc/kernel/gpu/nvbitmask.h
ac5842e58bf82bb8f0b738695f9b459709f03b92 - src/nvidia/inc/kernel/gpu/gpu_shared_data_map.h
1938fd2511213c8003864d879cf1c41ae1169a5f - src/nvidia/inc/kernel/gpu/gpu_uuid.h
bf894a769c46d5d173e3875cd9667bb3fe82feb9 - src/nvidia/inc/kernel/gpu/gpu_timeout.h
f17b704f2489ffedcc057d4a6da77c42ece42923 - src/nvidia/inc/kernel/gpu/gpu_resource.h
28d0d82b58ef13662e8896d3bbc42d340836294e - src/nvidia/inc/kernel/gpu/gpu_user_shared_data.h
6b27c9edf93f29a31787d9acaaefb2cefc31e7d4 - src/nvidia/inc/kernel/gpu/gpu_device_mapping.h
426c6ab6cecc3b1ba540b01309d1603301a86db1 - src/nvidia/inc/kernel/gpu/eng_desc.h
ce5439e2066933d7d1045b7813ef0195b55e78fc - src/nvidia/inc/kernel/gpu/gpu_engine_type.h
c33ab6494c9423c327707fce2bcb771328984a3c - src/nvidia/inc/kernel/gpu/gpu_halspec.h
57a4a0d006588395c0b8b6d447acd7b4a9eeeb30 - src/nvidia/inc/kernel/gpu/kern_gpu_power.h
0d29e997f13d314ea320898ffb40b7a3a58898e2 - src/nvidia/inc/kernel/gpu/gpu_child_list.h
0e8353854e837f0ef0fbf0d5ff5d7a25aa1eef7c - src/nvidia/inc/kernel/gpu/eng_state.h
76b24227c65570898c19e16bf35b2cad143f3d05 - src/nvidia/inc/kernel/gpu/gpu.h
a9c2b16261b46eb0f86fc611b8b3b5118e2b4e59 - src/nvidia/inc/kernel/gpu/gpu_acpi_data.h
f2947fefcaf0611cd80c2c88ce3fdea70953c1ed - src/nvidia/inc/kernel/gpu/gpu_child_class_defs.h
efc50bb2ff6ccf1b7715fd413ca680034920758e - src/nvidia/inc/kernel/gpu/subdevice/generic_engine.h
24d01769b39a6dd62574a95fad64443b05872151 - src/nvidia/inc/kernel/gpu/subdevice/subdevice.h
576216219d27aa887beeccefc22bcead4d1234d7 - src/nvidia/inc/kernel/gpu/disp/kern_disp.h
277a2719f8c063037c6a9ed55ade2b1cb17f48ae - src/nvidia/inc/kernel/gpu/disp/disp_capabilities.h
51a209575d3e3fe8feb7269ece7df0846e18ca2a - src/nvidia/inc/kernel/gpu/disp/kern_disp_type.h
61711ed293ee6974a6ed9a8a3732ae5fedcdc666 - src/nvidia/inc/kernel/gpu/disp/kern_disp_max.h
be7da8d1106ee14ff808d86abffb86794299b2df - src/nvidia/inc/kernel/gpu/disp/disp_objs.h
74bc902cd00b17da3a1dfa7fd3ebc058de439b76 - src/nvidia/inc/kernel/gpu/disp/disp_channel.h
b39826404d84e0850aa3385691d8dde6e30d70d4 - src/nvidia/inc/kernel/gpu/disp/disp_sf_user.h
f758ea5f9cbd23a678290ef0b8d98d470e3499e0 - src/nvidia/inc/kernel/gpu/disp/vblank_callback/vblank.h
9a33a37c6cea9bad513aa14c942c689f28f7c0d8 - src/nvidia/inc/kernel/gpu/disp/head/kernel_head.h
5179f01acf7e9e251552dc17c0dcd84f7d341d82 - src/nvidia/inc/kernel/gpu/disp/inst_mem/disp_inst_mem.h
57388b52df54a785b2d7118774df5433603adb24 - src/nvidia/inc/kernel/gpu/disp/console_mem/disp_console_mem.h
70c31f5c6997542d0a4693b4ad7a6539cc3ec421 - src/nvidia/inc/kernel/gpu/gsp/message_queue.h
7b7cf3b6459711065d1b849bf5acaea10b6400ca - src/nvidia/inc/kernel/gpu/intr/intr_common.h
1e3bebe46b7f2f542eedace554a4156b3afb51f1 - src/nvidia/inc/kernel/gpu/audio/hda_codec_api.h
97d0a067e89251672f191788abe81cf26dcb335f - src/nvidia/inc/kernel/gpu/device/device.h
889ba18a43cc2b5c5e970a90ddcb770ce873b785 - src/nvidia/inc/kernel/gpu/mem_mgr/mem_desc.h
6756126ddd616d6393037bebf371fceacaf3a9f1 - src/nvidia/inc/kernel/gpu/mem_mgr/context_dma.h
e4c67260b5cb693d695ad3d8aa96aaed45688322 - src/nvidia/inc/kernel/gpu/mem_mgr/virt_mem_allocator_common.h
20416f7239833dcaa743bbf988702610e9251289 - src/nvidia/inc/kernel/gpu/mem_mgr/mem_mgr.h
983bf02af93d39384c8b3ef0306193b63d8e82d9 - src/nvidia/inc/kernel/gpu/mem_mgr/mem_utils.h
c2957c7f40cc454ba12fd954397fcea5d95ccae5 - src/nvidia/inc/kernel/gpu/mem_mgr/rm_page_size.h
9cef17543abaa167299c57e8f043cb4b975cf640 - src/nvidia/inc/kernel/gpu/mem_mgr/heap_base.h
ce4e0f7177f46f4fc507a68b635e5395a3f7dde6 - src/nvidia/inc/kernel/gpu/dce_client/dce_client.h
2c48d7335bdb0b7ea88b78216c0aeab2e11e00c1 - src/nvidia/inc/kernel/gpu_mgr/gpu_mgmt_api.h
5b151d0d97b83c9fb76b76c476947f9e15e774ad - src/nvidia/inc/kernel/gpu_mgr/gpu_mgr.h
e188d9f2d042ffe029b96d8fbb16c79a0fc0fb01 - src/nvidia/inc/kernel/gpu_mgr/gpu_db.h
ea32018e3464bb1ac792e39227badf482fa2dc67 - src/nvidia/inc/kernel/gpu_mgr/gpu_group.h
02d6a37ef1bb057604cb98a905fa02429f200c96 - src/nvidia/inc/kernel/mem_mgr/mem.h
a5f49a031db4171228a27482d091283e84632ace - src/nvidia/inc/kernel/mem_mgr/system_mem.h
d15991bc770c5ab41fe746995294c5213efa056b - src/nvidia/inc/kernel/mem_mgr/io_vaspace.h
5ae08b2077506cbc41e40e1b3672e615ce9d910f - src/nvidia/inc/kernel/mem_mgr/vaspace.h
0ce5d6370c086d2944b2e8d31ff72a510d98dc8f - src/nvidia/inc/kernel/mem_mgr/virt_mem_mgr.h
7ea2f63fba8468fb30c9d2fa014a99dfbb440518 - src/nvidia/inc/kernel/mem_mgr/console_mem.h
4c386104eaead66c66df11258c3f1182b46e96ee - src/nvidia/inc/kernel/mem_mgr/syncpoint_mem.h
1a08e83fd6f0a072d6887c60c529e29211bcd007 - src/nvidia/inc/kernel/mem_mgr/os_desc_mem.h
2d4afabd63699feec3aea5e89601db009fc51a08 - src/nvidia/inc/kernel/mem_mgr/standard_mem.h
6f9edcff7ad34c4e85ec7c0b8d79c175009d438c - src/nvidia/kernel/inc/objrpc.h
253baf641e4e29ede6a49129c2dd1415b7e5d9bd - src/nvidia/kernel/inc/nvpcf.h
1feab39692ea8796ac7675f4780dfd51e6e16326 - src/nvidia/kernel/inc/objtmr.h
0cff83f4fdcc8d025cd68e0a12faaeead09fa03b - src/nvidia/kernel/inc/tmr.h
961ed81de50e67eadf163a3a8008ce1fde1d880c - src/nvidia/kernel/inc/vgpu/rpc_hal_stubs.h
6006a612fcd546de794676da19fc431ddd0410e5 - src/nvidia/kernel/inc/vgpu/rpc.h
b5f3932b9f6e7223e8c755155b60be98fd0a21df - src/nvidia/kernel/inc/vgpu/rpc_global_enums.h
3477a139633890d3fdd2e5e02044e1a293566e3d - src/nvidia/kernel/inc/vgpu/rpc_headers.h
31deee778df2651d3d21b4d9c8ab180b8dc1ff14 - src/nvidia/kernel/inc/vgpu/rpc_vgpu.h
24928c8b4e8b238f1921a1699f3af59bcff994ed - src/nvidia/src/lib/base_utils.c
a6134d6f5f3e3b0b4c274eb3b2d0a146644c842b - src/nvidia/src/lib/zlib/inflate.c
4cfe1ebd2ad6968ed513025aed61ecf2127aa683 - src/nvidia/src/libraries/nvoc/src/runtime.c
d3e5f13be70c8e458401ec9bdad007dfadedcc11 - src/nvidia/src/libraries/nvbitvector/nvbitvector.c
0e7a9b9c697f260438ca5fda8527b0f4edc2de13 - src/nvidia/src/libraries/prereq_tracker/prereq_tracker.c
619f9f6df576ad20d32c30fd9a69733dc5c19da8 - src/nvidia/src/libraries/eventbuffer/eventbufferproducer.c
ee7ea17829dfbbf9e6cd8d6c6fb2ada086b5d36e - src/nvidia/src/libraries/ioaccess/ioaccess.c
cf48c6335eb7ff27cd7cae0faad77dd98669ad95 - src/nvidia/src/libraries/utils/nvassert.c
864bd314450490b687a652335a44fb407835152c - src/nvidia/src/libraries/containers/ringbuf.c
c8f4cf70923179b7c2aaa6bd6b3eedc195655abe - src/nvidia/src/libraries/containers/vector.c
8991136ccb86f511f60254955ac3d86072b071f2 - src/nvidia/src/libraries/containers/map.c
6553a1c368e9d9709fb89b5e43524757f786c58b - src/nvidia/src/libraries/containers/queue.c
23c328fc27ad0317efe6ccd2da71cfd9db9da236 - src/nvidia/src/libraries/containers/multimap.c
5940d69147d1376b03cd96fa69796360b279ae97 - src/nvidia/src/libraries/containers/list.c
9c80df385a47834da4f92dc11053ca40a37a7fe7 - src/nvidia/src/libraries/containers/btree/btree.c
ea3254ebd278d9efb7dd348e52370d780c23cd94 - src/nvidia/src/libraries/containers/eheap/eheap_old.c
cccb1fedee02a240692688090e00ac1e289dec9e - src/nvidia/src/libraries/tls/tls.c
a045a19d750d48387640ab659bb30f724c34b8c8 - src/nvidia/src/libraries/nvport/util/util_unix_kernel_os.c
d047abe66dd8a459c15224cc056fc6f2176b0c6a - src/nvidia/src/libraries/nvport/util/util_gcc_clang.c
f0c486c1ad0f7d9516b13a02d52b4d857d8865b1 - src/nvidia/src/libraries/nvport/util/util_compiler_switch.c
9b69fbf3efea6ba58f9ba7cb0189c9264c994657 - src/nvidia/src/libraries/nvport/sync/sync_common.h
eb8b5fcab51c47f58a37958ddb38ff90991bcbbe - src/nvidia/src/libraries/nvport/sync/sync_unix_kernel_os.c
b2ae1406c94779f575d3e2233a7ab248ac10e74f - src/nvidia/src/libraries/nvport/sync/inc/sync_unix_kernel_os_def.h
3e3ab114d56dfcecc2886d8f9cdb8f365c5093c7 - src/nvidia/src/libraries/nvport/memory/memory_tracking.c
c5a16e5bb7d304ffe5e83d7b27226cbecdbc7ce1 - src/nvidia/src/libraries/nvport/memory/memory_unix_kernel_os.c
caff00b37e7f58fde886abcc2737c08526fa089e - src/nvidia/src/libraries/nvport/memory/memory_generic.h
8f41e7127a65102f0035c03536c701b7ecdaa909 - src/nvidia/src/libraries/nvport/string/string_generic.c
b387005657f81538fab5962d4aabbc5dc681aa1b - src/nvidia/src/libraries/nvport/core/core.c
702c73446bba35f88249cfe609ac0ca39dbd80ff - src/nvidia/src/libraries/nvport/crypto/crypto_random_xorshift.c
9ca28a5af5663dec54b4cd35f48a8a3d8e52e25f - src/nvidia/src/libraries/nvport/cpu/cpu_common.c
a305654bafc883ad28a134a04e83bbd409e0fc06 - src/nvidia/src/libraries/nvport/cpu/cpu_common.h
099c17e5931d5d881d8248ec68041fa0bbc2a9bc - src/nvidia/src/libraries/nvport/thread/thread_unix_kernel_os.c
1f2e9d09e658474b36d0b0ecd9380d0d2bcc86b2 - src/nvidia/src/libraries/resserv/src/rs_domain.c
f55556cd2392f55f2609ef69fca1caf2dd348e3f - src/nvidia/src/libraries/resserv/src/rs_server.c
dac54d97b38ad722198ec918668f175dc5122e4e - src/nvidia/src/libraries/resserv/src/rs_access_map.c
310a8d3442285113f4ba672ba7fcc7f2aa295c6a - src/nvidia/src/libraries/resserv/src/rs_client.c
522da5465e5596d48cf6393c329811f3c708be19 - src/nvidia/src/libraries/resserv/src/rs_resource.c
0c9581aa68a77cb9977a7fbcfd2077ccb618206e - src/nvidia/src/libraries/resserv/src/rs_access_rights.c
8192d2364dc63171b51f6ced5b1726125f1a8ff6 - src/nvidia/src/kernel/diagnostics/nvlog.c
b3a29311cc22e2dae686f8ed2df6bc828aa826cf - src/nvidia/src/kernel/diagnostics/profiler.c
fc39cb6ac6e9d73bd1ab98890e6b253217d6cc90 - src/nvidia/src/kernel/diagnostics/nvlog_printf.c
1fad27934185df50c1d91b5536d0df437618382f - src/nvidia/src/kernel/os/os_init.c
c8c4af5a28740f1e66ff4e6e9c47fc6c981ce46b - src/nvidia/src/kernel/os/os_timer.c
0e0c1b862bdba245297ffd4f725001fa2439cddf - src/nvidia/src/kernel/os/os_sanity.c
0f10f992879cdea2a2e3d5f19589ad66b518a872 - src/nvidia/src/kernel/os/os_stubs.c
b4dc306ae4d4f8850571e2fbbed0114d63f1ba93 - src/nvidia/src/kernel/rmapi/entry_points.c
bac6ef63d11e87f9a4af3318d5be6860f861a0b9 - src/nvidia/src/kernel/rmapi/rpc_common.c
96f763eef08f1954d3f07639053db2cde2a01e39 - src/nvidia/src/kernel/rmapi/rmapi.c
ac6a5b3adf15eac4a7bd9ae24981f6f5fc727097 - src/nvidia/src/kernel/rmapi/deprecated_context.h
0bded8ce6e3e81de589c4e6fbb611085c705dfcd - src/nvidia/src/kernel/rmapi/event_notification.c
7a4e3a3369efd50c9d80eaa73c48852edd6e6966 - src/nvidia/src/kernel/rmapi/rs_utils.c
a2ad052692006f70e97fd3d186f19c7ddfe80c4c - src/nvidia/src/kernel/rmapi/deprecated_context.c
9b1453ed00d80034a0d2e3e918d31dbe939177b0 - src/nvidia/src/kernel/rmapi/rmapi_utils.c
8cc578a1e5f534e911ba4b49b58352ef9ea57772 - src/nvidia/src/kernel/rmapi/client.c
c59a08852553b5843beec8138caa8e2141d3d759 - src/nvidia/src/kernel/rmapi/resource_desc_flags.h
25ac4188ba55b098321700828a9386a8a6e9f80b - src/nvidia/src/kernel/rmapi/event_buffer.c
7fdf8e379fd2a5eeae0981bf7328163379279c29 - src/nvidia/src/kernel/rmapi/rmapi_stubs.c
79a130d1e1e10881ea1e5f5d8dfcb84ceb53b0f2 - src/nvidia/src/kernel/rmapi/client_resource.c
b28d140f1bfe0aac770127e8391400d44d5582e3 - src/nvidia/src/kernel/rmapi/rmapi_finn.c
682977753c878ccee6279e539cf11bee2b548752 - src/nvidia/src/kernel/rmapi/resource_desc.c
bb67ea7ef87ff0148473ebf1165e3afd59d63b20 - src/nvidia/src/kernel/rmapi/sharing.c
3b53d6b8ef183702327b4bc3a96aa06f67475ddc - src/nvidia/src/kernel/rmapi/param_copy.c
996a104e06ba0a173eba0099f2c02ff0b085e23d - src/nvidia/src/kernel/rmapi/resource_list.h
d964061679e6f3da0e6e6c3b8e0eb93eb31fd3dc - src/nvidia/src/kernel/rmapi/resource.c
19d3213dc7471e7a7d4ff379494f724869638d28 - src/nvidia/src/kernel/rmapi/mapping_cpu.c
f04faaeeeda2d799207fd7e0877a2bb6d5363c13 - src/nvidia/src/kernel/rmapi/mapping.c
a418377318e121a2b2f83f3961da74f09a2123d0 - src/nvidia/src/kernel/rmapi/event.c
5166298f09865066535a3e04c111354ceaefbcbc - src/nvidia/src/kernel/rmapi/control.c
2aa207714971c97d9486c1ed48a3123e40b6c4ff - src/nvidia/src/kernel/rmapi/rmapi_cache.c
cb6835f318c0d871d72185e0ac410d03d788654a - src/nvidia/src/kernel/rmapi/binary_api.c
b001f31a373973b7a4568c411e261aa8f7487441 - src/nvidia/src/kernel/rmapi/alloc_free.c
d6b3b8ac45ede7530028848749820d2cbe0f5d55 - src/nvidia/src/kernel/rmapi/resource_desc.h
c4eeb6d566366ab2b9532f109632d4e14539332c - src/nvidia/src/kernel/rmapi/entry_points.h
fb2a191dc60c1232c198b1ff9a302883302ca526 - src/nvidia/src/kernel/rmapi/resource_list_required_includes.h
afbf166f49a964873a13e19b787cae33813f9de5 - src/nvidia/src/kernel/core/hal_mgr.c
df7ac5873dc42eafc335a1ddba095fbc8cd1d708 - src/nvidia/src/kernel/core/locks_common.c
61691e21cdabc8919d7b41142c97f510db9c0cc6 - src/nvidia/src/kernel/core/locks_minimal.c
db40522057f29afe6624e33468879e5e9813f07c - src/nvidia/src/kernel/core/system.c
8adbda67510ec9fab31edd681c51ddfb7b190d7d - src/nvidia/src/kernel/core/thread_state.c
afa03f17393b28b9fc791bf09c4d35833447808d - src/nvidia/src/kernel/core/hal/hal.c
c38181e1361a59e3252ae446a0e8761363db35e7 - src/nvidia/src/kernel/core/hal/hals_all.c
8eac3ea49f9a53063f7106211e5236372d87bdaf - src/nvidia/src/kernel/core/hal/info_block.c
cf85f6ecacf40fa649de2c443595e2313fa364d6 - src/nvidia/src/kernel/gpu/device.c
bfcdb98c6541f95c3a37aaa25e9ca51ec2a0b9c1 - src/nvidia/src/kernel/gpu/eng_state.c
1653c7b99cfc86db6692d9d8d6de19f1b24b9071 - src/nvidia/src/kernel/gpu/gpu_uuid.c
04405af0ee123eb4491b8333aa4018950ea65935 - src/nvidia/src/kernel/gpu/gpu.c
ceb3639a86578b9d823a00a9a6553f278acb558f - src/nvidia/src/kernel/gpu/gpu_resource.c
bca16e8ff1697e953a54a3a3de4273f5584ac0df - src/nvidia/src/kernel/gpu/device_ctrl.c
493e90398cb78a3f24d2f271bbedebd8c682d7c1 - src/nvidia/src/kernel/gpu/gpu_gspclient.c
6fa4ba2da905692cd39ec09054f2bd6621aa2a7a - src/nvidia/src/kernel/gpu/gpu_resource_desc.c
4e1be780ac696a61f056933e5550040a2d42c6bd - src/nvidia/src/kernel/gpu/gpu_device_mapping.c
3229e9f5d2779147d337e9c6a7b6f518079f1709 - src/nvidia/src/kernel/gpu/gpu_timeout.c
c2228fbf8366e197aec9bb75ad2c01b267aedeb7 - src/nvidia/src/kernel/gpu/gpu_user_shared_data.c
207b32d1423f3666feeedb85d38fa7a924c1f7a9 - src/nvidia/src/kernel/gpu/device_share.c
a4225e0074c1aee00d082f69231d1d8e7d812347 - src/nvidia/src/kernel/gpu/gpu_access.c
29458992dabff6c2550e0202b11dc47cd7f66cd5 - src/nvidia/src/kernel/gpu/gpu_engine_type.c
89543f7085fbc2ca01b5a8baae33b5de921c79e9 - src/nvidia/src/kernel/gpu/gpu_t234d_kernel.c
cb9af9dcd3931eb62bfdb4872c4e3001ff9def26 - src/nvidia/src/kernel/gpu/gpu_rmapi.c
ba49fc89b1a453aca3a79f51d3250c7c0a667327 - src/nvidia/src/kernel/gpu/subdevice/subdevice.c
c9ec73f6e2f2e87371b97ec47a65c3874dd4949a - src/nvidia/src/kernel/gpu/subdevice/subdevice_ctrl_gpu_kernel.c
086e9a51757c3989dfe0bf89ca6c0b9c7734104a - src/nvidia/src/kernel/gpu/subdevice/generic_engine.c
3d0b8b3dabe8aab7884f1ddec7ef4f9715de31ad - src/nvidia/src/kernel/gpu/subdevice/subdevice_ctrl_event_kernel.c
d852ad5a6af96e173832833379ae9d38baaed47f - src/nvidia/src/kernel/gpu/subdevice/subdevice_ctrl_timer_kernel.c
611098328a114b66c6dcea4a8ea710887db006c4 - src/nvidia/src/kernel/gpu/arch/t23x/kern_gpu_t234d.c
ceb516c8064e1df2d18897f98f5c8ea58e907973 - src/nvidia/src/kernel/gpu/disp/disp_capabilities.c
8ce824bfdb06f08567a29ee5e175106c32611182 - src/nvidia/src/kernel/gpu/disp/disp_channel.c
c3d94d9a49e1c0dffd8987d9b007a9cef91be561 - src/nvidia/src/kernel/gpu/disp/disp_object_kern_ctrl_minimal.c
6437dd659a38c62cd81fb59f229bd94e59f37e71 - src/nvidia/src/kernel/gpu/disp/disp_sf_user.c
e5ae629f9b7d4346624da085edde80fda18c679d - src/nvidia/src/kernel/gpu/disp/kern_disp.c
681499b2c86582cd110ede079d757c5797c4b458 - src/nvidia/src/kernel/gpu/disp/disp_common_kern_ctrl_minimal.c
1533c870f3e6521f180eb967f7144a62a727d125 - src/nvidia/src/kernel/gpu/disp/disp_objs.c
0156d5407cf877b8f5c79823d3c83ead54b6385c - src/nvidia/src/kernel/gpu/disp/head/kernel_head.c
8a418dce9fbeb99d5d6e175ed8c88811866f3450 - src/nvidia/src/kernel/gpu/disp/arch/v04/kern_disp_0402.c
e7f143390807f3f4d4bf6586068378a9f5a75d57 - src/nvidia/src/kernel/gpu/disp/arch/v03/kern_disp_0300.c
84fdcdf90d9a656a572774fb8330f7a1fa9f59e2 - src/nvidia/src/kernel/gpu/disp/inst_mem/disp_inst_mem.c
629566bf98be863b12e6dc6aab53d8f5ea13988c - src/nvidia/src/kernel/gpu/disp/inst_mem/arch/v03/disp_inst_mem_0300.c
d9ecaa221da6120a6149292cc1ab9ff50caca3fa - src/nvidia/src/kernel/gpu/disp/console_mem/disp_console_mem.c
cffbdcaacd4fd5be809fc81bd76a384920781391 - src/nvidia/src/kernel/gpu/timer/timer.c
17e9f2af953c3cf96d0eee9cfea3aad6e540c3cf - src/nvidia/src/kernel/gpu/timer/timer_ostimer.c
1f4d15f959df38f4f6ea48c7b10fc859c6e04b12 - src/nvidia/src/kernel/gpu/audio/hda_codec_api.c
c6e78a54a1b8d4ca6fe4b01d83e3199ea41606d7 - src/nvidia/src/kernel/gpu/mem_mgr/context_dma.c
f30ae0e8e1e32d0adb7e52b8995c277637b6bc2a - src/nvidia/src/kernel/gpu/mem_mgr/mem_utils.c
3c463773f2f970b1764edb231d349164fe4341fc - src/nvidia/src/kernel/gpu/mem_mgr/mem_desc.c
2bb921b462c4b50d1f42b39b4728374c7433c8cb - src/nvidia/src/kernel/gpu/mem_mgr/arch/turing/mem_mgr_tu102_base.c
cc1249dcc4c4530c59f0aa314dbcd8f7a69be009 - src/nvidia/src/kernel/gpu/dce_client/dce_client_rpc.c
7f9874d9af6b937dac888a3ebb55a82c2a5de71b - src/nvidia/src/kernel/gpu/dce_client/dce_client.c
d5d8ff429d3bda7103bafcb2dca94678efc8ddd8 - src/nvidia/src/kernel/gpu_mgr/gpu_group.c
719d890f8160efe57e4c3267db65885ebb66cd03 - src/nvidia/src/kernel/gpu_mgr/gpu_db.c
37d1e3dd86e6409b8e461f90386e013194c9e4d1 - src/nvidia/src/kernel/gpu_mgr/gpu_mgmt_api.c
36b3993cc05598590bc6356bab5ea7c0a2efd2f0 - src/nvidia/src/kernel/gpu_mgr/gpu_mgr.c
ed8316b9cbfe13336af1f8e4cd0b492a21af44b9 - src/nvidia/src/kernel/mem_mgr/syncpoint_mem.c
e75d8a0eb4c22e11ececd24a43ad034bb76f12ce - src/nvidia/src/kernel/mem_mgr/standard_mem.c
c53834dec3041617296e4d124647b363455e1264 - src/nvidia/src/kernel/mem_mgr/console_mem.c
38b2ed45dc7d7d7172f6d0fd2be31b43e49e41d5 - src/nvidia/src/kernel/mem_mgr/virt_mem_mgr.c
a14b8d9a6e029d8a5c571283b520645a562b5c2c - src/nvidia/src/kernel/mem_mgr/vaspace.c
5b9048e62581a3fbb0227d1a46c4ee8d8397bf5b - src/nvidia/src/kernel/mem_mgr/mem_mgr_internal.h
630200d06b6588d7fa8c5b1ea16146e8281163d7 - src/nvidia/src/kernel/mem_mgr/io_vaspace.c
223b7541c7904067914a01e4aa3e589fd1690cb6 - src/nvidia/src/kernel/mem_mgr/system_mem.c
623dad3ec0172ed7b3818caece0db5687d587ff3 - src/nvidia/src/kernel/mem_mgr/os_desc_mem.c
3080c8404e554eba5eac3f6482ed6094d25ccdef - src/nvidia/src/kernel/mem_mgr/mem.c
75d3a4e35230b114a2a233be8235f19220d953a4 - src/nvidia/interface/nvrm_registry.h
3f7b20e27e6576ee1f2f0557d269697a0b8af7ec - src/nvidia/interface/nv-firmware-registry.h
d02ee5bb3f19dffd8b5c30dc852cea243bcdf399 - src/nvidia/interface/acpidsmguids.h
60c7cafce7bd5240e8409e3c5b71214262347efc - src/nvidia/interface/acpigenfuncs.h
bff92c9767308a13df1d0858d5f9c82af155679a - src/nvidia/interface/nvacpitypes.h
f7b69924dbdf53be6cd184583145726aa65d3acd - src/nvidia/interface/deprecated/rmapi_deprecated_utils.c
7dec210405c35d200be24bd1c0c81fcc6c3f93bf - src/nvidia/interface/deprecated/rmapi_deprecated.h
d81ef382635d0c4de47dfa3d709e0702f371ceb7 - src/nvidia/interface/rmapi/src/g_finn_rm_api.c
80545889e3c9967fd0ae12a65005be31bac354f2 - src/nvidia-modeset/Makefile
7e1249c1d187aec5891eabe5bacae2189d33dc55 - src/nvidia-modeset/lib/nvkms-sync.c
c3ab6005d7083e90145cac66addf815c4f93d9a0 - src/nvidia-modeset/lib/nvkms-format.c
b8854261256a801af52d1201081afa9c17486a96 - src/nvidia-modeset/include/nvkms-3dvision.h
ebafc51b2b274cd1818e471850a5efa9618eb17d - src/nvidia-modeset/include/nvkms-prealloc.h
712798f7ead59ecab66551630967fe54472f2f9f - src/nvidia-modeset/include/nvkms-flip-workarea.h
fa829f1cd3b73f194f39879c48962b703f640b65 - src/nvidia-modeset/include/nvkms-vrr.h
49af4a8fa95d0e595deacadbca5360f097722e7f - src/nvidia-modeset/include/nvkms-evo1.h
496b94af536dd912866a05f7b2da53050b50c2f5 - src/nvidia-modeset/include/nvkms-prealloc-types.h
c1c7047929aafc849a924c7fa9f8bc206b8e7524 - src/nvidia-modeset/include/g_nvkms-evo-states.h
412d8028a548e67e9ef85cb7d3f88385e70c56f9 - src/nvidia-modeset/include/nvkms-console-restore.h
fa8dbffe58d345634ab1ea8743ed29c9ec169f36 - src/nvidia-modeset/include/nvkms-dpy.h
81fcc817dfb8ae1f98b63d2c1acacc303fedb554 - src/nvidia-modeset/include/nvkms-dpy-override.h
a79cfb74026085b0aa612c0ae6789083e196bbc2 - src/nvidia-modeset/include/nvkms-evo-states.h
70d9251f331bbf28f5c5bbdf939ebad94db9362d - src/nvidia-modeset/include/nvkms-softfloat.h
6e3681d5caa36312804c91630eaaf510eda897d2 - src/nvidia-modeset/include/nvkms-dma.h
eb5248c4b0b51e7aecd2de87e496253b3b235c70 - src/nvidia-modeset/include/nvkms-utils-flip.h
377dd4a29b2ea5937a9b8fc3fba0c9e4ef92992e - src/nvidia-modeset/include/nvkms-cursor.h
7347dc4c3d89053efaac4e7c64fb35cfdeaf305a - src/nvidia-modeset/include/nvkms-rm.h
0449c65467d54097b65d60eec670450b126b07c1 - src/nvidia-modeset/include/nvkms-modeset.h
be6e0e97c1e7ffc0daa2f14ef7b05b9f9c11dc16 - src/nvidia-modeset/include/nvkms-attributes.h
07ac47b52b1b42c143501c4a95a88a3f86f5be03 - src/nvidia-modeset/include/nvkms-hdmi.h
6b21a68e254becdd2641bc456f194f54c23abe51 - src/nvidia-modeset/include/nvkms-framelock.h
c90e4393f568d96bc98cb52a93bfc3fdea10658d - src/nvidia-modeset/include/nvkms-modeset-workarea.h
ae03509966df56d98fa72b7528ab43ec2b258381 - src/nvidia-modeset/include/nvkms-utils.h
f5f3b11c78a8b0eef40c09e1751615a47f516edb - src/nvidia-modeset/include/nvkms-hal.h
d05ef9a837f2927fe387e7d157ea76c7ef567807 - src/nvidia-modeset/include/nvkms-lut.h
2b720811867a06d24b22f03d098fe6d9fea423a0 - src/nvidia-modeset/include/nvkms-private.h
6fa4708e4f6dfe63f149a1c70fa84bf9df01026a - src/nvidia-modeset/include/nvkms-evo.h
4a94381bd8c24b09193577d3f05d6d61f178e1cf - src/nvidia-modeset/include/nvkms-ctxdma.h
11bae7c491bbb0ba4cad94b645d47c384191fa5c - src/nvidia-modeset/include/nvkms-flip.h
00d2f2fa1f7c96757f67b9ca3ff1c2699a493bd0 - src/nvidia-modeset/include/nvkms-modeset-types.h
4f85782f39355e10576f21bee44a942c9317664c - src/nvidia-modeset/include/nvkms-event.h
35fa1444c57f7adbbddddc612237f3ad38cdd78f - src/nvidia-modeset/include/nvkms-rmapi.h
118d0ea84ff81de16fbdc2c7daf249ee5c82ed6e - src/nvidia-modeset/include/nvkms-modepool.h
fd0c300efa7a76783847cfc809242d304fe4435c - src/nvidia-modeset/include/nvkms-types.h
4a33d410f090fd4f4dfc9a6de285f8e8fb1c9ced - src/nvidia-modeset/include/nvkms-surface.h
b0d407b0413453ec71481f84cc448d090b90d609 - src/nvidia-modeset/include/nvkms-evo3.h
8c7e0e15c1038fe518e98d8f86fafb250b10a1d2 - src/nvidia-modeset/include/nvkms-stereo.h
cdf54b0d423f94f04d6f33b672c131125c13d260 - src/nvidia-modeset/include/nvkms-hw-flip.h
c386632dbdc0e89019d5618f132dbcb3dff4dafb - src/nvidia-modeset/include/dp/nvdp-device.h
4625828efd425e1b29835ab91fcc3d2d85e92389 - src/nvidia-modeset/include/dp/nvdp-connector-event-sink.h
a8fbb7a071c0e7b326f384fed7547e7b6ec81c3e - src/nvidia-modeset/include/dp/nvdp-timer.h
ae43c46687d16b93189047d9eeed933a67e5571f - src/nvidia-modeset/include/dp/nvdp-connector.h
727bd77cfbc9ac4989c2ab7eec171ceb516510aa - src/nvidia-modeset/kapi/include/nvkms-kapi-notifiers.h
d77e520819f0fa8a775542f493af03f9f2aafc47 - src/nvidia-modeset/kapi/include/nvkms-kapi-internal.h
ff51857b54672bd80d740213e9b20f35bcdeed89 - src/nvidia-modeset/kapi/src/nvkms-kapi.c
01d943d6edb0c647c2b8dbc44460948665b03e7a - src/nvidia-modeset/kapi/src/nvkms-kapi-notifiers.c
ce42ceac4c4cf9d249d66ab57ae2f435cd9623fc - src/nvidia-modeset/kapi/src/nvkms-kapi-sync.c
80c2c9a2a05beb0202239db8b0dd7080ff21c194 - src/nvidia-modeset/kapi/interface/nvkms-kapi-private.h
61a60660761e90aa622af2fda482d69473ab40d4 - src/nvidia-modeset/kapi/interface/nvkms-kapi.h
26144f7b6e9358a5418735c5c357c964047b52ca - src/nvidia-modeset/src/nvkms-modeset.c
5f559582336ab0e252f25039d43b114a6630758c - src/nvidia-modeset/src/nvkms-evo.c
7262999494048226f8a94492899609fbecd729d8 - src/nvidia-modeset/src/nvkms-hw-flip.c
6a35b80a6995777dc9500cac9659e6f0f0c12d23 - src/nvidia-modeset/src/nvkms-cursor3.c
7326c2e84f81abbe6d8df0ce2632a83682fbd5dc - src/nvidia-modeset/src/nvkms-rm.c
30ad7839985dea46e6b6d43499210a3056da51ad - src/nvidia-modeset/src/nvkms-utils-flip.c
2ff0dded5029b1284268ee9358f576828d073285 - src/nvidia-modeset/src/nvkms-evo3.c
0343d2f40978b0780b0dae54b22f366f723ff08e - src/nvidia-modeset/src/nvkms-flip.c
3e723edf2a0a2f4f93032feb4aeaaf7fd0acddfa - src/nvidia-modeset/src/g_nvkms-evo-states.c
761c8540278a1ffb9fe4aa0adb1b4ee95524787a - src/nvidia-modeset/src/nvkms-hal.c
9e4d3e3505a84d8634a2ef2307628a8fe551a4c3 - src/nvidia-modeset/src/nvkms-surface.c
bd2e4a6102432d4ac1faf92b5d3db29e9e3cfafc - src/nvidia-modeset/src/nvkms-utils.c
6d41c9f84cc9ce2d16812e94a3fba055b3fc7308 - src/nvidia-modeset/src/nvkms-conf.c
9a8746ee4a4e772b8ac13f06dc0de8a250fdb4c7 - src/nvidia-modeset/src/nvkms-ctxdma.c
e7a717712eb5f710df2c735013f27b0c03ae276c - src/nvidia-modeset/src/nvkms-hdmi.c
2fa9d9b3cbeeb9406f2dd51a4f4a5d53844a31c9 - src/nvidia-modeset/src/nvkms-dpy.c
f92ae2b0ba77cf14cbe966a0c66fe6ca02a7e73e - src/nvidia-modeset/src/nvkms.c
dff88ceaf95239b51b60af915f92e389bb844425 - src/nvidia-modeset/src/nvkms-cursor.c
2b304663f2a005b5ccdecfafb69a3407f2feeb18 - src/nvidia-modeset/src/nvkms-evo2.c
94e9c19b7b6a5e56fd46b0885e7dd6fe698fe2df - src/nvidia-modeset/src/nvkms-prealloc.c
795ddaec1aa05d152eedd28a3bc82ca49e44a72f - src/nvidia-modeset/src/nvkms-attributes.c
65b02b48caff2a9100b8c5614f91d42fb20da9c0 - src/nvidia-modeset/src/nvkms-dpy-override.c
9fea40b7b55d6ebf3f73b5d469751c873ffbe7c0 - src/nvidia-modeset/src/nvkms-dma.c
7e16c9cc7e4a9a8329347133663f29aaa4ec7446 - src/nvidia-modeset/src/nvkms-event.c
2fabe1c14116a2b07f24d01710394ee84a6e3914 - src/nvidia-modeset/src/nvkms-3dvision.c
3261fd9a1eb14f7f3fb0917757b1e2704d4abbd2 - src/nvidia-modeset/src/nvkms-hw-states.c
c799d52bdc792efc377fb5cd307b0eb445c44d6a - src/nvidia-modeset/src/nvkms-cursor2.c
03fb499633c485e0559da79500d4e66ea50e8d8f - src/nvidia-modeset/src/nvkms-framelock.c
df59641109db4529eed62cf156b1815a3e67ba05 - src/nvidia-modeset/src/nvkms-vrr.c
05ca4acdfeb9b99eccc7e222846fc688473322ae - src/nvidia-modeset/src/nvkms-rmapi-dgpu.c
f754a27436fd1e1fa103de6110224c21ad7ea9f4 - src/nvidia-modeset/src/nvkms-pow.c
f4a02d5b6cb1fa5d461514b21e13002ad9cfa1a4 - src/nvidia-modeset/src/nvkms-evo1.c
3b4843e97ce186b05df6b6f19b463818d769bfcb - src/nvidia-modeset/src/nvkms-console-restore.c
933829ff39c6d1fe41bd82a5af177f5059b4b69e - src/nvidia-modeset/src/nvkms-modepool.c
403e6dbff0a607c2aecf3204c56633bd7b612ae2 - src/nvidia-modeset/src/nvkms-stereo.c
93ab81a362c4ba29ed817dd14fbd75f2b36b62b8 - src/nvidia-modeset/src/nvkms-lut.c
f96cd982b4c05351faa31d04ac30d6fa7c866bcb - src/nvidia-modeset/src/dp/nvdp-timer.cpp
6b985fc50b5040ce1a81418bed73a60edb5d3289 - src/nvidia-modeset/src/dp/nvdp-timer.hpp
a90b2c295271631b4c3abe6afb8dfd92d6b429c8 - src/nvidia-modeset/src/dp/nvdp-connector.cpp
535ce9f743903eb83a341eef1be812f4e4b50887 - src/nvidia-modeset/src/dp/nvdp-evo-interface.cpp
c19775aebdaaaee3500378d47af6ff0b8eb486b8 - src/nvidia-modeset/src/dp/nvdp-device.cpp
98046832ecc2cad21e727fecf2b9626dd212d95c - src/nvidia-modeset/src/dp/nvdp-connector-event-sink.cpp
51af3c1ee6b74ee0c9add3fb7d50cbc502980789 - src/nvidia-modeset/src/dp/nvdp-evo-interface.hpp
110ac212ee8832c3fa3c4f45d6d33eed0301e992 - src/nvidia-modeset/src/dp/nvdp-host.cpp
69fed95ab3954dd5cb26590d02cd8ba09cdff1ac - src/nvidia-modeset/src/dp/nvdp-connector-event-sink.hpp
372ea4c8e7bbc0bdeb899e6f163c8f20c663ad22 - src/nvidia-modeset/os-interface/include/nvidia-modeset-os-interface.h
0a0650835e8835d32418891a2fd25031f5d8770e - src/nvidia-modeset/os-interface/include/nvkms.h
beebcd654ab4db41c38a2d2e9c1575415a0ed815 - src/nvidia-modeset/interface/nvkms-api.h
b986bc6591ba17a74ad81ec4c93347564c6d5165 - src/nvidia-modeset/interface/nvkms-format.h
2ea1436104463c5e3d177e8574c3b4298976d37e - src/nvidia-modeset/interface/nvkms-ioctl.h
b3d26ddf643e0bd98847ee56b930c14d06cadf89 - src/nvidia-modeset/interface/nvkms-api-types.h
8e3e74d2b3f45381e7b0012d930cf451cbd1728f - src/nvidia-modeset/interface/nvkms-sync.h

Change-Id: If2e947a678b595d8cdb013af3156cf2bc72d3002
2025-12-11 16:13:59 -08:00

7154 lines
258 KiB
Bash

#!/bin/sh
PATH="${PATH}:/bin:/sbin:/usr/bin"
# make sure we are in the directory containing this script
SCRIPTDIR=`dirname $0`
cd $SCRIPTDIR
CC="$1"
ARCH=$2
SOURCES=$3
HEADERS=$SOURCES/include
OUTPUT=$4
XEN_PRESENT=1
PREEMPT_RT_PRESENT=0
# VGX_BUILD parameter defined only for VGX builds (vGPU Host driver)
# VGX_KVM_BUILD parameter defined only vGPU builds on KVM hypervisor
# GRID_BUILD parameter defined only for GRID builds (GRID Guest driver)
# GRID_BUILD_CSP parameter defined only for GRID CSP builds (GRID Guest driver for CSPs)
test_xen() {
#
# Determine if the target kernel is a Xen kernel. It used to be
# sufficient to check for CONFIG_XEN, but the introduction of
# modular para-virtualization (CONFIG_PARAVIRT, etc.) and
# Xen guest support, it is no longer possible to determine the
# target environment at build time. Therefore, if both
# CONFIG_XEN and CONFIG_PARAVIRT are present, text_xen() treats
# the kernel as a stand-alone kernel.
#
if ! test_configuration_option CONFIG_XEN ||
test_configuration_option CONFIG_PARAVIRT; then
XEN_PRESENT=0
fi
}
append_conftest() {
#
# Echo data from stdin: this is a transitional function to make it easier
# to port conftests from drivers with parallel conftest generation to
# older driver versions
#
while read LINE; do
echo ${LINE}
done
}
test_header_presence() {
#
# Determine if the given header file (which may or may not be
# present) is provided by the target kernel.
#
# Input:
# $1: relative file path
#
# This routine creates an upper case, underscore version of each of the
# relative file paths, and uses that as the token to either define or
# undefine in a C header file. For example, linux/fence.h becomes
# NV_LINUX_FENCE_H_PRESENT, and that is either defined or undefined, in the
# output (which goes to stdout, just like the rest of this file).
TEST_CFLAGS="-E -M $CFLAGS"
file="$1"
file_define=NV_`echo $file | tr '/.\-a-z' '___A-Z'`_PRESENT
CODE="#include <$file>"
if echo "$CODE" | $CC $TEST_CFLAGS - > /dev/null 2>&1; then
echo "#define $file_define"
else
# If preprocessing failed, it could have been because the header
# file under test is not present, or because it is present but
# depends upon the inclusion of other header files. Attempting
# preprocessing again with -MG will ignore a missing header file
# but will still fail if the header file is present.
if echo "$CODE" | $CC $TEST_CFLAGS -MG - > /dev/null 2>&1; then
echo "#undef $file_define"
else
echo "#define $file_define"
fi
fi
}
build_cflags() {
ISYSTEM=`$CC -print-file-name=include 2> /dev/null`
BASE_CFLAGS="-O2 -D__KERNEL__ \
-DKBUILD_BASENAME=\"#conftest$$\" -DKBUILD_MODNAME=\"#conftest$$\" \
-nostdinc -isystem $ISYSTEM \
-Wno-implicit-function-declaration -Wno-strict-prototypes"
if [ "$OUTPUT" != "$SOURCES" ]; then
OUTPUT_CFLAGS="-I$OUTPUT/include2 -I$OUTPUT/include"
if [ -f "$OUTPUT/include/generated/autoconf.h" ]; then
AUTOCONF_FILE="$OUTPUT/include/generated/autoconf.h"
else
AUTOCONF_FILE="$OUTPUT/include/linux/autoconf.h"
fi
else
if [ -f "$HEADERS/generated/autoconf.h" ]; then
AUTOCONF_FILE="$HEADERS/generated/autoconf.h"
else
AUTOCONF_FILE="$HEADERS/linux/autoconf.h"
fi
fi
test_xen
if [ "$XEN_PRESENT" != "0" ]; then
MACH_CFLAGS="-I$HEADERS/asm/mach-xen"
fi
KERNEL_ARCH="$ARCH"
if [ "$ARCH" = "i386" -o "$ARCH" = "x86_64" ]; then
if [ -d "$SOURCES/arch/x86" ]; then
KERNEL_ARCH="x86"
fi
fi
SOURCE_HEADERS="$HEADERS"
SOURCE_ARCH_HEADERS="$SOURCES/arch/$KERNEL_ARCH/include"
OUTPUT_HEADERS="$OUTPUT/include"
OUTPUT_ARCH_HEADERS="$OUTPUT/arch/$KERNEL_ARCH/include"
# Look for mach- directories on this arch, and add it to the list of
# includes if that platform is enabled in the configuration file, which
# may have a definition like this:
# #define CONFIG_ARCH_<MACHUPPERCASE> 1
for _mach_dir in `ls -1d $SOURCES/arch/$KERNEL_ARCH/mach-* 2>/dev/null`; do
_mach=`echo $_mach_dir | \
sed -e "s,$SOURCES/arch/$KERNEL_ARCH/mach-,," | \
tr 'a-z' 'A-Z'`
grep "CONFIG_ARCH_$_mach \+1" $AUTOCONF_FILE > /dev/null 2>&1
if [ $? -eq 0 ]; then
MACH_CFLAGS="$MACH_CFLAGS -I$_mach_dir/include"
fi
done
if [ "$ARCH" = "arm" ]; then
MACH_CFLAGS="$MACH_CFLAGS -D__LINUX_ARM_ARCH__=7"
fi
# Add the mach-default includes (only found on x86/older kernels)
MACH_CFLAGS="$MACH_CFLAGS -I$SOURCE_HEADERS/asm-$KERNEL_ARCH/mach-default"
MACH_CFLAGS="$MACH_CFLAGS -I$SOURCE_ARCH_HEADERS/asm/mach-default"
CFLAGS="$BASE_CFLAGS $MACH_CFLAGS $OUTPUT_CFLAGS -include $AUTOCONF_FILE"
CFLAGS="$CFLAGS -I$SOURCE_HEADERS"
CFLAGS="$CFLAGS -I$SOURCE_HEADERS/uapi"
CFLAGS="$CFLAGS -I$SOURCE_HEADERS/xen"
CFLAGS="$CFLAGS -I$OUTPUT_HEADERS/generated/uapi"
CFLAGS="$CFLAGS -I$SOURCE_ARCH_HEADERS"
CFLAGS="$CFLAGS -I$SOURCE_ARCH_HEADERS/uapi"
CFLAGS="$CFLAGS -I$OUTPUT_ARCH_HEADERS/generated"
CFLAGS="$CFLAGS -I$OUTPUT_ARCH_HEADERS/generated/uapi"
if [ -n "$BUILD_PARAMS" ]; then
CFLAGS="$CFLAGS -D$BUILD_PARAMS"
fi
# Check if gcc supports asm goto and set CC_HAVE_ASM_GOTO if it does.
# Older kernels perform this check and set this flag in Kbuild, and since
# conftest.sh runs outside of Kbuild it ends up building without this flag.
# Starting with commit e9666d10a5677a494260d60d1fa0b73cc7646eb3 this test
# is done within Kconfig, and the preprocessor flag is no longer needed.
GCC_GOTO_SH="$SOURCES/build/gcc-goto.sh"
if [ -f "$GCC_GOTO_SH" ]; then
# Newer versions of gcc-goto.sh don't print anything on success, but
# this is okay, since it's no longer necessary to set CC_HAVE_ASM_GOTO
# based on the output of those versions of gcc-goto.sh.
if [ `/bin/sh "$GCC_GOTO_SH" "$CC"` = "y" ]; then
CFLAGS="$CFLAGS -DCC_HAVE_ASM_GOTO"
fi
fi
#
# If CONFIG_HAVE_FENTRY is enabled and gcc supports -mfentry flags then set
# CC_USING_FENTRY and add -mfentry into cflags.
#
# linux/ftrace.h file indirectly gets included into the conftest source and
# fails to get compiled, because conftest.sh runs outside of Kbuild it ends
# up building without -mfentry and CC_USING_FENTRY flags.
#
grep "CONFIG_HAVE_FENTRY \+1" $AUTOCONF_FILE > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo "" > conftest$$.c
$CC -mfentry -c -x c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
rm -f conftest$$.o
CFLAGS="$CFLAGS -mfentry -DCC_USING_FENTRY"
fi
fi
}
CONFTEST_PREAMBLE="#include \"conftest/headers.h\"
#if defined(NV_LINUX_KCONFIG_H_PRESENT)
#include <linux/kconfig.h>
#endif
#if defined(NV_GENERATED_AUTOCONF_H_PRESENT)
#include <generated/autoconf.h>
#else
#include <linux/autoconf.h>
#endif
#if defined(CONFIG_XEN) && \
defined(CONFIG_XEN_INTERFACE_VERSION) && !defined(__XEN_INTERFACE_VERSION__)
#define __XEN_INTERFACE_VERSION__ CONFIG_XEN_INTERFACE_VERSION
#endif
#if defined(CONFIG_KASAN) && defined(CONFIG_ARM64)
#if defined(CONFIG_KASAN_SW_TAGS)
#define KASAN_SHADOW_SCALE_SHIFT 4
#else
#define KASAN_SHADOW_SCALE_SHIFT 3
#endif
#endif"
test_configuration_option() {
#
# Check to see if the given configuration option is defined
#
get_configuration_option $1 >/dev/null 2>&1
return $?
}
set_configuration() {
#
# Set a specific configuration option. This function is called to always
# enable a configuration, in order to verify whether the test code for that
# configuration is no longer required and the corresponding
# conditionally-compiled code in the driver can be removed.
#
DEF="$1"
if [ "$3" = "" ]
then
VAL=""
CAT="$2"
else
VAL="$2"
CAT="$3"
fi
echo "#define ${DEF} ${VAL}" | append_conftest "${CAT}"
}
unset_configuration() {
#
# Un-set a specific configuration option. This function is called to
# always disable a configuration, in order to verify whether the test
# code for that configuration is no longer required and the corresponding
# conditionally-compiled code in the driver can be removed.
#
DEF="$1"
CAT="$2"
echo "#undef ${DEF}" | append_conftest "${CAT}"
}
compile_check_conftest() {
#
# Compile the current conftest C file and check+output the result
#
CODE="$1"
DEF="$2"
VAL="$3"
CAT="$4"
echo "$CONFTEST_PREAMBLE
$CODE" > conftest$$.c
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
rm -f conftest$$.o
if [ "${CAT}" = "functions" ]; then
#
# The logic for "functions" compilation tests is inverted compared to
# other compilation steps: if the function is present, the code
# snippet will fail to compile because the function call won't match
# the prototype. If the function is not present, the code snippet
# will produce an object file with the function as an unresolved
# symbol.
#
echo "#undef ${DEF}" | append_conftest "${CAT}"
else
echo "#define ${DEF} ${VAL}" | append_conftest "${CAT}"
fi
return
else
if [ "${CAT}" = "functions" ]; then
echo "#define ${DEF} ${VAL}" | append_conftest "${CAT}"
else
echo "#undef ${DEF}" | append_conftest "${CAT}"
fi
return
fi
}
export_symbol_present_conftest() {
#
# Check Module.symvers to see whether the given symbol is present.
#
SYMBOL="$1"
TAB=' '
if grep -e "${TAB}${SYMBOL}${TAB}.*${TAB}EXPORT_SYMBOL.*\$" \
"$OUTPUT/Module.symvers" >/dev/null 2>&1; then
echo "#define NV_IS_EXPORT_SYMBOL_PRESENT_$SYMBOL 1" |
append_conftest "symbols"
else
# May be a false negative if Module.symvers is absent or incomplete,
# or if the Module.symvers format changes.
echo "#define NV_IS_EXPORT_SYMBOL_PRESENT_$SYMBOL 0" |
append_conftest "symbols"
fi
}
export_symbol_gpl_conftest() {
#
# Check Module.symvers to see whether the given symbol is present and its
# export type is GPL-only (including deprecated GPL-only symbols).
#
SYMBOL="$1"
TAB=' '
if grep -e "${TAB}${SYMBOL}${TAB}.*${TAB}EXPORT_\(UNUSED_\)*SYMBOL_GPL\$" \
"$OUTPUT/Module.symvers" >/dev/null 2>&1; then
echo "#define NV_IS_EXPORT_SYMBOL_GPL_$SYMBOL 1" |
append_conftest "symbols"
else
# May be a false negative if Module.symvers is absent or incomplete,
# or if the Module.symvers format changes.
echo "#define NV_IS_EXPORT_SYMBOL_GPL_$SYMBOL 0" |
append_conftest "symbols"
fi
}
get_configuration_option() {
#
# Print the value of given configuration option, if defined
#
RET=1
OPTION=$1
OLD_FILE="linux/autoconf.h"
NEW_FILE="generated/autoconf.h"
FILE=""
if [ -f $HEADERS/$NEW_FILE -o -f $OUTPUT/include/$NEW_FILE ]; then
FILE=$NEW_FILE
elif [ -f $HEADERS/$OLD_FILE -o -f $OUTPUT/include/$OLD_FILE ]; then
FILE=$OLD_FILE
fi
if [ -n "$FILE" ]; then
#
# We are looking at a configured source tree; verify
# that its configuration includes the given option
# via a compile check, and print the option's value.
#
if [ -f $HEADERS/$FILE ]; then
INCLUDE_DIRECTORY=$HEADERS
elif [ -f $OUTPUT/include/$FILE ]; then
INCLUDE_DIRECTORY=$OUTPUT/include
else
return 1
fi
echo "#include <$FILE>
#ifndef $OPTION
#error $OPTION not defined!
#endif
$OPTION
" > conftest$$.c
$CC -E -P -I$INCLUDE_DIRECTORY -o conftest$$ conftest$$.c > /dev/null 2>&1
if [ -e conftest$$ ]; then
tr -d '\r\n\t ' < conftest$$
RET=$?
fi
rm -f conftest$$.c conftest$$
else
CONFIG=$OUTPUT/.config
if [ -f $CONFIG ] && grep "^$OPTION=" $CONFIG; then
grep "^$OPTION=" $CONFIG | cut -f 2- -d "="
RET=$?
fi
fi
return $RET
}
check_for_ib_peer_memory_symbols() {
kernel_dir="$1"
module_symvers="${kernel_dir}/Module.symvers"
sym_ib_register="ib_register_peer_memory_client"
sym_ib_unregister="ib_unregister_peer_memory_client"
tab=' '
# Return 0 for true(no errors), 1 for false
if [ ! -f "${module_symvers}" ]; then
return 1
fi
if grep -e "${tab}${sym_ib_register}${tab}.*${tab}EXPORT_SYMBOL.*\$" \
"${module_symvers}" > /dev/null 2>&1 &&
grep -e "${tab}${sym_ib_unregister}${tab}.*${tab}EXPORT_SYMBOL.*\$" \
"${module_symvers}" > /dev/null 2>&1; then
return 0
else
return 1
fi
}
compile_test() {
case "$1" in
set_memory_uc)
#
# Determine if the set_memory_uc() function is present.
# It does not exist on all architectures.
#
CODE="
#include <linux/types.h>
#if defined(NV_ASM_SET_MEMORY_H_PRESENT)
#if defined(NV_ASM_PGTABLE_TYPES_H_PRESENT)
#include <asm/pgtable_types.h>
#endif
#if defined(NV_ASM_PAGE_H_PRESENT)
#include <asm/page.h>
#endif
#include <asm/set_memory.h>
#else
#include <asm/cacheflush.h>
#endif
void conftest_set_memory_uc(void) {
set_memory_uc();
}"
compile_check_conftest "$CODE" "NV_SET_MEMORY_UC_PRESENT" "" "functions"
;;
set_memory_array_uc)
#
# Determine if the set_memory_array_uc() function is present.
# It does not exist on all architectures.
#
CODE="
#include <linux/types.h>
#if defined(NV_ASM_SET_MEMORY_H_PRESENT)
#if defined(NV_ASM_PGTABLE_TYPES_H_PRESENT)
#include <asm/pgtable_types.h>
#endif
#if defined(NV_ASM_PAGE_H_PRESENT)
#include <asm/page.h>
#endif
#include <asm/set_memory.h>
#else
#include <asm/cacheflush.h>
#endif
void conftest_set_memory_array_uc(void) {
set_memory_array_uc();
}"
compile_check_conftest "$CODE" "NV_SET_MEMORY_ARRAY_UC_PRESENT" "" "functions"
;;
sysfs_slab_unlink)
#
# Determine if the sysfs_slab_unlink() function is present.
#
# This test is useful to check for the presence a fix for the deferred
# kmem_cache destroy feature (see nvbug: 2543505).
#
# Added by commit d50d82faa0c9 ("slub: fix failure when we delete and
# create a slab cache") in 4.18 (2018-06-27).
#
CODE="
#include <linux/slab.h>
void conftest_sysfs_slab_unlink(void) {
sysfs_slab_unlink();
}"
compile_check_conftest "$CODE" "NV_SYSFS_SLAB_UNLINK_PRESENT" "" "functions"
;;
list_is_first)
#
# Determine if the list_is_first() function is present.
#
# Added by commit 70b44595eafe ("mm, compaction: use free lists
# to quickly locate a migration source") in 5.1 (2019-03-05)
#
CODE="
#include <linux/list.h>
void conftest_list_is_first(void) {
list_is_first();
}"
compile_check_conftest "$CODE" "NV_LIST_IS_FIRST_PRESENT" "" "functions"
;;
set_pages_uc)
#
# Determine if the set_pages_uc() function is present.
# It does not exist on all architectures.
#
CODE="
#include <linux/types.h>
#if defined(NV_ASM_SET_MEMORY_H_PRESENT)
#if defined(NV_ASM_PGTABLE_TYPES_H_PRESENT)
#include <asm/pgtable_types.h>
#endif
#if defined(NV_ASM_PAGE_H_PRESENT)
#include <asm/page.h>
#endif
#include <asm/set_memory.h>
#else
#include <asm/cacheflush.h>
#endif
void conftest_set_pages_uc(void) {
set_pages_uc();
}"
compile_check_conftest "$CODE" "NV_SET_PAGES_UC_PRESENT" "" "functions"
;;
set_pages_array_uc)
#
# Determine if the set_pages_array_uc() function is present.
# It does not exist on all architectures.
#
# set_pages_array_uc() was added by commit
# 0f3507555f6fa4acbc85a646d6e8766230db38fc ("x86, CPA: Add
# set_pages_arrayuc and set_pages_array_wb") in v2.6.30-rc1 (Thu Mar
# 19 14:51:15 2009)
#
CODE="
#include <linux/types.h>
#if defined(NV_ASM_SET_MEMORY_H_PRESENT)
#if defined(NV_ASM_PGTABLE_TYPES_H_PRESENT)
#include <asm/pgtable_types.h>
#endif
#if defined(NV_ASM_PAGE_H_PRESENT)
#include <asm/page.h>
#endif
#include <asm/set_memory.h>
#else
#include <asm/cacheflush.h>
#endif
void conftest_set_pages_array_uc(void) {
set_pages_array_uc();
}"
compile_check_conftest "$CODE" "NV_SET_PAGES_ARRAY_UC_PRESENT" "" "functions"
;;
flush_cache_all)
#
# Determine if flush_cache_all() function is present
#
# flush_cache_all() was removed by commit id
# 68234df4ea79 ("arm64: kill flush_cache_all()") in 4.2 (2015-04-20)
# for aarch64
#
CODE="
#include <asm/cacheflush.h>
int conftest_flush_cache_all(void) {
return flush_cache_all();
}"
compile_check_conftest "$CODE" "NV_FLUSH_CACHE_ALL_PRESENT" "" "functions"
;;
pci_get_domain_bus_and_slot)
#
# Determine if the pci_get_domain_bus_and_slot() function
# is present.
#
# Added by commit 3c299dc22635 ("PCI: add
# pci_get_domain_bus_and_slot function") in 2.6.33 but aarch64
# support was added by commit d1e6dc91b532
# ("arm64: Add architectural support for PCI") in 3.18-rc1
#
CODE="
#include <linux/pci.h>
void conftest_pci_get_domain_bus_and_slot(void) {
pci_get_domain_bus_and_slot();
}"
compile_check_conftest "$CODE" "NV_PCI_GET_DOMAIN_BUS_AND_SLOT_PRESENT" "" "functions"
;;
pci_bus_address)
#
# Determine if the pci_bus_address() function is
# present.
#
# Added by commit 06cf56e497c8 ("PCI: Add pci_bus_address() to
# get bus address of a BAR") in v3.14
#
CODE="
#include <linux/pci.h>
void conftest_pci_bus_address(void) {
pci_bus_address();
}"
compile_check_conftest "$CODE" "NV_PCI_BUS_ADDRESS_PRESENT" "" "functions"
;;
hash__remap_4k_pfn)
#
# Determine if the hash__remap_4k_pfn() function is
# present.
#
# Added by commit 6cc1a0ee4ce2 ("powerpc/mm/radix: Add radix
# callback for pmd accessors") in v4.7 (committed 2016-04-29).
# Present only in arch/powerpc
#
CODE="
#if defined(NV_ASM_BOOK3S_64_HASH_64K_H_PRESENT)
#include <linux/mm.h>
#include <asm/book3s/64/hash-64k.h>
#endif
void conftest_hash__remap_4k_pfn(void) {
hash__remap_4k_pfn();
}"
compile_check_conftest "$CODE" "NV_HASH__REMAP_4K_PFN_PRESENT" "" "functions"
;;
register_cpu_notifier)
#
# Determine if register_cpu_notifier() is present
#
# Removed by commit 530e9b76ae8f ("cpu/hotplug: Remove obsolete
# cpu hotplug register/unregister functions") in v4.10
# (2016-12-21)
#
CODE="
#include <linux/cpu.h>
void conftest_register_cpu_notifier(void) {
register_cpu_notifier();
}"
compile_check_conftest "$CODE" "NV_REGISTER_CPU_NOTIFIER_PRESENT" "" "functions"
;;
cpuhp_setup_state)
#
# Determine if cpuhp_setup_state() is present
#
# Added by commit 5b7aa87e0482 ("cpu/hotplug: Implement
# setup/removal interface") in v4.6 (commited 2016-02-26)
#
# It is used as a replacement for register_cpu_notifier
CODE="
#include <linux/cpu.h>
void conftest_cpuhp_setup_state(void) {
cpuhp_setup_state();
}"
compile_check_conftest "$CODE" "NV_CPUHP_SETUP_STATE_PRESENT" "" "functions"
;;
ioremap_cache)
#
# Determine if the ioremap_cache() function is present.
# It does not exist on all architectures.
#
CODE="
#include <asm/io.h>
void conftest_ioremap_cache(void) {
ioremap_cache();
}"
compile_check_conftest "$CODE" "NV_IOREMAP_CACHE_PRESENT" "" "functions"
;;
ioremap_wc)
#
# Determine if the ioremap_wc() function is present.
# It does not exist on all architectures.
#
CODE="
#include <asm/io.h>
void conftest_ioremap_wc(void) {
ioremap_wc();
}"
compile_check_conftest "$CODE" "NV_IOREMAP_WC_PRESENT" "" "functions"
;;
ioremap_driver_hardened)
#
# Determine if the ioremap_driver_hardened() function is present.
# It does not exist on all architectures.
# TODO: Update the commit ID once the API is upstreamed.
#
CODE="
#include <asm/io.h>
void conftest_ioremap_driver_hardened(void) {
ioremap_driver_hardened();
}"
compile_check_conftest "$CODE" "NV_IOREMAP_DRIVER_HARDENED_PRESENT" "" "functions"
;;
ioremap_driver_hardened_wc)
#
# Determine if the ioremap_driver_hardened_wc() function is present.
# It does not exist on all architectures.
# TODO: Update the commit ID once the API is upstreamed.
#
CODE="
#include <asm/io.h>
void conftest_ioremap_driver_hardened_wc(void) {
ioremap_driver_hardened_wc();
}"
compile_check_conftest "$CODE" "NV_IOREMAP_DRIVER_HARDENED_WC_PRESENT" "" "functions"
;;
ioremap_cache_shared)
#
# Determine if the ioremap_cache_shared() function is present.
# It does not exist on all architectures.
# TODO: Update the commit ID once the API is upstreamed.
#
CODE="
#include <asm/io.h>
void conftest_ioremap_cache_shared(void) {
ioremap_cache_shared();
}"
compile_check_conftest "$CODE" "NV_IOREMAP_CACHE_SHARED_PRESENT" "" "functions"
;;
dom0_kernel_present)
# Add config parameter if running on DOM0.
if [ -n "$VGX_BUILD" ]; then
echo "#define NV_DOM0_KERNEL_PRESENT" | append_conftest "generic"
else
echo "#undef NV_DOM0_KERNEL_PRESENT" | append_conftest "generic"
fi
return
;;
nvidia_vgpu_kvm_build)
# Add config parameter if running on KVM host.
if [ -n "$VGX_KVM_BUILD" ]; then
echo "#define NV_VGPU_KVM_BUILD" | append_conftest "generic"
else
echo "#undef NV_VGPU_KVM_BUILD" | append_conftest "generic"
fi
return
;;
vfio_register_notifier)
#
# Check number of arguments required.
#
# New parameters added by commit 22195cbd3451 ("vfio:
# vfio_register_notifier: classify iommu notifier") in v4.10
#
echo "$CONFTEST_PREAMBLE
#include <linux/vfio.h>
int conftest_vfio_register_notifier(void) {
return vfio_register_notifier((struct device *) NULL, (struct notifier_block *) NULL);
}" > conftest$$.c
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
echo "#define NV_VFIO_NOTIFIER_ARGUMENT_COUNT 2" | append_conftest "functions"
rm -f conftest$$.o
return
else
echo "#define NV_VFIO_NOTIFIER_ARGUMENT_COUNT 4" | append_conftest "functions"
return
fi
;;
vfio_info_add_capability_has_cap_type_id_arg)
#
# Check if vfio_info_add_capability() has cap_type_id parameter.
#
# Removed by commit dda01f787df9 ("vfio: Simplify capability
# helper") in v4.16 (2017-12-12)
#
CODE="
#include <linux/vfio.h>
int vfio_info_add_capability(struct vfio_info_cap *caps,
int cap_type_id,
void *cap_type) {
return 0;
}"
compile_check_conftest "$CODE" "NV_VFIO_INFO_ADD_CAPABILITY_HAS_CAP_TYPE_ID_ARGS" "" "types"
;;
nvidia_grid_build)
if [ -n "$GRID_BUILD" ]; then
echo "#define NV_GRID_BUILD" | append_conftest "generic"
else
echo "#undef NV_GRID_BUILD" | append_conftest "generic"
fi
return
;;
nvidia_grid_csp_build)
if [ -n "$GRID_BUILD_CSP" ]; then
echo "#define NV_GRID_BUILD_CSP $GRID_BUILD_CSP" | append_conftest "generic"
else
echo "#undef NV_GRID_BUILD_CSP" | append_conftest "generic"
fi
return
;;
vm_fault_has_address)
#
# Determine if the 'vm_fault' structure has an 'address', or a
# 'virtual_address' field. The .virtual_address field was
# effectively renamed to .address:
#
# 'address' added by commit 82b0f8c39a38 ("mm: join
# struct fault_env and vm_fault") in v4.10 (2016-12-14)
#
# 'virtual_address' removed by commit 1a29d85eb0f1 ("mm: use
# vmf->address instead of of vmf->virtual_address") in v4.10
# (2016-12-14)
#
CODE="
#include <linux/mm.h>
int conftest_vm_fault_has_address(void) {
return offsetof(struct vm_fault, address);
}"
compile_check_conftest "$CODE" "NV_VM_FAULT_HAS_ADDRESS" "" "types"
;;
kmem_cache_has_kobj_remove_work)
#
# Determine if the 'kmem_cache' structure has 'kobj_remove_work'.
#
# 'kobj_remove_work' was added by commit 3b7b314053d02 ("slub: make
# sysfs file removal asynchronous") in v4.12 (2017-06-23). This
# commit introduced a race between kmem_cache destroy and create
# which we need to workaround in our driver (see nvbug: 2543505).
# Also see comment for sysfs_slab_unlink conftest.
#
CODE="
#include <linux/mm.h>
#include <linux/slab.h>
#include <linux/slub_def.h>
int conftest_kmem_cache_has_kobj_remove_work(void) {
return offsetof(struct kmem_cache, kobj_remove_work);
}"
compile_check_conftest "$CODE" "NV_KMEM_CACHE_HAS_KOBJ_REMOVE_WORK" "" "types"
;;
mdev_uuid)
#
# Determine if mdev_uuid() function is present or not
#
# Added by commit 99e3123e3d72 ("vfio-mdev: Make mdev_device
# private and abstract interfaces") in v4.10
#
CODE="
#include <linux/pci.h>
#include <linux/mdev.h>
void conftest_mdev_uuid() {
mdev_uuid();
}"
compile_check_conftest "$CODE" "NV_MDEV_UUID_PRESENT" "" "functions"
#
# Determine if mdev_uuid() returns 'const guid_t *'.
#
# mdev_uuid() function prototype updated to return 'const guid_t *'
# by commit 278bca7f318e ("vfio-mdev: Switch to use new generic UUID
# API") in v5.1 (2019-01-10).
#
CODE="
#include <linux/pci.h>
#include <linux/mdev.h>
const guid_t *conftest_mdev_uuid_return_guid_ptr(struct mdev_device *mdev) {
return mdev_uuid(mdev);
}"
compile_check_conftest "$CODE" "NV_MDEV_UUID_RETURN_GUID_PTR" "" "types"
;;
mdev_dev)
#
# Determine if mdev_dev() function is present or not
#
# Added by commit 99e3123e3d72 ("vfio-mdev: Make mdev_device
# private and abstract interfaces") in v4.10
#
CODE="
#include <linux/pci.h>
#include <linux/mdev.h>
void conftest_mdev_dev() {
mdev_dev();
}"
compile_check_conftest "$CODE" "NV_MDEV_DEV_PRESENT" "" "functions"
;;
mdev_get_type_group_id)
#
# Determine if mdev_get_type_group_id() function is present or not
#
# Added by commit 15fcc44be0c7a ("vfio/mdev: Add
# mdev/mtype_get_type_group_id()") in v5.13
#
CODE="
#include <linux/pci.h>
#include <linux/mdev.h>
void conftest_mdev_get_type_group_id() {
mdev_get_type_group_id();
}"
compile_check_conftest "$CODE" "NV_MDEV_GET_TYPE_GROUP_ID_PRESENT" "" "functions"
;;
vfio_device_mig_state)
#
# Determine if vfio_device_mig_state enum is present or not
#
# Added by commit 115dcec65f61d ("vfio: Define device
# migration protocol v2") in v5.18
#
CODE="
#include <linux/pci.h>
#include <linux/vfio.h>
enum vfio_device_mig_state device_state;
"
compile_check_conftest "$CODE" "NV_VFIO_DEVICE_MIG_STATE_PRESENT" "" "types"
;;
vfio_migration_ops)
#
# Determine if vfio_migration_ops struct is present or not
#
# Added by commit 6e97eba8ad874 ("vfio: Split migration ops
# from main device ops") in v6.0
#
CODE="
#include <linux/pci.h>
#include <linux/vfio.h>
struct vfio_migration_ops mig_ops;
"
compile_check_conftest "$CODE" "NV_VFIO_MIGRATION_OPS_PRESENT" "" "types"
;;
vfio_precopy_info)
#
# Determine if vfio_precopy_info struct is present or not
#
# Added by commit 4db52602a6074 ("vfio: Extend the device migration
# protocol with PRE_COPY" in v6.2
#
CODE="
#include <linux/vfio.h>
struct vfio_precopy_info precopy_info;
"
compile_check_conftest "$CODE" "NV_VFIO_PRECOPY_INFO_PRESENT" "" "types"
;;
vfio_log_ops)
#
# Determine if vfio_log_ops struct is present or not
#
# Added by commit 80c4b92a2dc48 ("vfio: Introduce the DMA
# logging feature support") in v6.1
#
CODE="
#include <linux/pci.h>
#include <linux/vfio.h>
struct vfio_log_ops log_ops;
"
compile_check_conftest "$CODE" "NV_VFIO_LOG_OPS_PRESENT" "" "types"
;;
vfio_migration_ops_has_migration_get_data_size)
#
# Determine if vfio_migration_ops struct has .migration_get_data_size field.
#
# Added by commit in 4e016f969529f ("vfio: Add an option to get migration
# data size") in v6.2 kernel.
#
CODE="
#include <linux/pci.h>
#include <linux/vfio.h>
int conftest_mdev_vfio_migration_ops_has_migration_get_data_size(void) {
return offsetof(struct vfio_migration_ops, migration_get_data_size);
}"
compile_check_conftest "$CODE" "NV_VFIO_MIGRATION_OPS_HAS_MIGRATION_GET_DATA_SIZE" "" "types"
;;
mdev_parent_ops)
#
# Determine if the struct mdev_parent_ops type is present.
#
# Added by commit 42930553a7c1 ("vfio-mdev: de-polute the
# namespace, rename parent_device & parent_ops") in v4.10
#
CODE="
#include <linux/pci.h>
#include <linux/mdev.h>
struct mdev_parent_ops conftest_mdev_parent_ops;
"
compile_check_conftest "$CODE" "NV_MDEV_PARENT_OPS_STRUCT_PRESENT" "" "types"
;;
mdev_parent)
#
# Determine if the struct mdev_parent type is present.
#
# Added by commit 89345d5177aa ("vfio/mdev: embedd struct mdev_parent in
# the parent data structure") in v6.1
#
CODE="
#include <linux/pci.h>
#include <linux/mdev.h>
struct mdev_parent conftest_mdev_parent;
"
compile_check_conftest "$CODE" "NV_MDEV_PARENT_STRUCT_PRESENT" "" "types"
;;
mdev_parent_dev)
#
# Determine if mdev_parent_dev() function is present or not
#
# Added by commit 9372e6feaafb ("vfio-mdev: Make mdev_parent
# private") in v4.10
#
CODE="
#include <linux/pci.h>
#include <linux/mdev.h>
void conftest_mdev_parent_dev() {
mdev_parent_dev();
}"
compile_check_conftest "$CODE" "NV_MDEV_PARENT_DEV_PRESENT" "" "functions"
;;
vfio_free_device)
#
# Determine if vfio_free_device() function is present or not
#
# Removed by commit 913447d06f03 ("vfio: Remove vfio_free_device")
# in v6.2
#
CODE="
#include <linux/pci.h>
#include <linux/vfio.h>
void conftest_vfio_free_device() {
vfio_free_device();
}"
compile_check_conftest "$CODE" "NV_VFIO_FREE_DEVICE_PRESENT" "" "functions"
;;
mdev_from_dev)
#
# Determine if mdev_from_dev() function is present or not.
#
# Added by commit 99e3123e3d72 ("vfio-mdev: Make mdev_device
# private and abstract interfaces") in v4.10 (2016-12-30)
#
CODE="
#include <linux/pci.h>
#include <linux/mdev.h>
void conftest_mdev_from_dev() {
mdev_from_dev();
}"
compile_check_conftest "$CODE" "NV_MDEV_FROM_DEV_PRESENT" "" "functions"
;;
mdev_set_iommu_device)
#
# Determine if mdev_set_iommu_device() function is present or not.
#
# Added by commit 8ac13175cbe9 ("vfio/mdev: Add iommu related member
# in mdev_device) in v5.1 (2019-04-12)
#
CODE="
#include <linux/pci.h>
#include <linux/mdev.h>
void conftest_mdev_set_iommu_device() {
mdev_set_iommu_device();
}"
compile_check_conftest "$CODE" "NV_MDEV_SET_IOMMU_DEVICE_PRESENT" "" "functions"
;;
mdev_parent_ops_has_open_device)
# Determine if 'mdev_parent_ops' structure has a 'open_device'
# field.
#
# Added by commit 2fd585f4ed9d ("vfio: Provide better generic support
# for open/release vfio_device_ops") in 5.15 (2021-08-05)
#
CODE="
#include <linux/pci.h>
#include <linux/mdev.h>
int conftest_mdev_parent_ops_has_open_device(void) {
return offsetof(struct mdev_parent_ops, open_device);
}"
compile_check_conftest "$CODE" "NV_MDEV_PARENT_OPS_HAS_OPEN_DEVICE" "" "types"
;;
mdev_parent_ops_has_device_driver)
#
# Determine if 'mdev_parent_ops' structure has 'device_driver' field.
#
# Added by commit 88a21f265ce5 ("vfio/mdev: Allow the mdev_parent_ops
# to specify the device driver to bind) in v5.14 (2021-06-17)
#
CODE="
#include <linux/pci.h>
#include <linux/mdev.h>
int conftest_mdev_parent_ops_has_device_driver(void) {
return offsetof(struct mdev_parent_ops, device_driver);
}"
compile_check_conftest "$CODE" "NV_MDEV_PARENT_OPS_HAS_DEVICE_DRIVER" "" "types"
;;
mdev_driver_has_supported_type_groups)
#
# Determine if 'mdev_driver' structure has 'supported_type_groups' field.
#
# Added by commit 6b42f491e17c ("vfio/mdev: Remove mdev_parent_ops)
# in v5.19 (2022-04-11)
#
CODE="
#include <linux/pci.h>
#include <linux/mdev.h>
int conftest_mdev_driver_has_supported_type_groups(void) {
return offsetof(struct mdev_driver, supported_type_groups);
}"
compile_check_conftest "$CODE" "NV_MDEV_DRIVER_HAS_SUPPORTED_TYPE_GROUPS" "" "types"
;;
vfio_device_ops_has_dma_unmap)
#
# Determine if 'vfio_device_ops' struct has 'dma_unmap' field.
#
# Added by commit ce4b4657ff18 ("vfio: Replace the DMA unmapping
# notifier with a callback") in v6.0
#
CODE="
#include <linux/pci.h>
#include <linux/vfio.h>
int conftest_vfio_device_ops_has_dma_unmap(void) {
return offsetof(struct vfio_device_ops, dma_unmap);
}"
compile_check_conftest "$CODE" "NV_VFIO_DEVICE_OPS_HAS_DMA_UNMAP" "" "types"
;;
pci_irq_vector_helpers)
#
# Determine if pci_alloc_irq_vectors(), pci_free_irq_vectors()
# functions are present or not.
#
# Added by commit aff171641d181ea573 (PCI: Provide sensible IRQ
# vector alloc/free routines) (2016-07-12)
#
CODE="
#include <linux/pci.h>
#include <linux/msi.h>
void conftest_pci_irq_vector_helpers() {
pci_alloc_irq_vectors();
pci_free_irq_vectors ();
}"
compile_check_conftest "$CODE" "NV_PCI_IRQ_VECTOR_HELPERS_PRESENT" "" "functions"
;;
vfio_device_gfx_plane_info)
#
# determine if the 'struct vfio_device_gfx_plane_info' type is present.
#
# Added by commit e20eaa2382e7 ("vfio: ABI for mdev display
# dma-buf operation") in v4.16 (2017-11-23)
#
CODE="
#include <linux/vfio.h>
struct vfio_device_gfx_plane_info info;"
compile_check_conftest "$CODE" "NV_VFIO_DEVICE_GFX_PLANE_INFO_PRESENT" "" "types"
;;
vfio_device_migration_has_start_pfn)
#
# Determine if the 'vfio_device_migration_info' structure has
# a 'start_pfn' field.
#
# This member was present in proposed interface for vGPU Migration
# ("[PATCH v3 0/5] Add migration support for VFIO device ")
# https://lists.gnu.org/archive/html/qemu-devel/2019-02/msg05176.html
# which is not present in upstreamed commit a8a24f3f6e38 (vfio: UAPI
# for migration interface for device state) in v5.8 (2020-05-29)
#
CODE="
#include <linux/vfio.h>
int conftest_vfio_device_migration_has_start_pfn(void) {
return offsetof(struct vfio_device_migration_info, start_pfn);
}"
compile_check_conftest "$CODE" "NV_VFIO_DEVICE_MIGRATION_HAS_START_PFN" "" "types"
;;
vfio_uninit_group_dev)
#
# Determine if vfio_uninit_group_dev() function is present or not.
#
# Added by commit ae03c3771b8c (vfio: Introduce a vfio_uninit_group_dev()
# API call) in v5.15
#
CODE="
#include <linux/vfio.h>
void conftest_vfio_uninit_group_dev() {
vfio_uninit_group_dev();
}"
compile_check_conftest "$CODE" "NV_VFIO_UNINIT_GROUP_DEV_PRESENT" "" "functions"
;;
vfio_pci_core_available)
# Determine if VFIO_PCI_CORE is available
#
# Added by commit 7fa005caa35e ("vfio/pci: Introduce
# vfio_pci_core.ko") in v5.16 (2021-08-26)
#
CODE="
#if defined(NV_LINUX_VFIO_PCI_CORE_H_PRESENT)
#include <linux/vfio_pci_core.h>
#endif
#if !defined(CONFIG_VFIO_PCI_CORE) && !defined(CONFIG_VFIO_PCI_CORE_MODULE)
#error VFIO_PCI_CORE not enabled
#endif
void conftest_vfio_pci_core_available(void) {
struct vfio_pci_core_device dev;
}"
compile_check_conftest "$CODE" "NV_VFIO_PCI_CORE_PRESENT" "" "generic"
;;
mdev_available)
# Determine if MDEV is available
#
# Added by commit 7b96953bc640 ("vfio: Mediated device Core driver")
# in v4.10
#
CODE="
#if defined(NV_LINUX_MDEV_H_PRESENT)
#include <linux/pci.h>
#include <linux/mdev.h>
#endif
#if !defined(CONFIG_VFIO_MDEV) && !defined(CONFIG_VFIO_MDEV_MODULE)
#error MDEV not enabled
#endif
void conftest_mdev_available(void) {
struct mdev_device *mdev;
}"
compile_check_conftest "$CODE" "NV_MDEV_PRESENT" "" "generic"
;;
vfio_alloc_device)
#
# Determine if vfio_alloc_device() function is present or not.
#
# Added by commit cb9ff3f3b84c (vfio: Add helpers for unifying vfio_device
# life cycle) in v6.1
#
CODE="
#include <linux/vfio.h>
void conftest_vfio_alloc_device() {
vfio_alloc_device();
}"
compile_check_conftest "$CODE" "NV_VFIO_ALLOC_DEVICE_PRESENT" "" "functions"
;;
vfio_register_emulated_iommu_dev)
#
# Determine if vfio_register_emulated_iommu_dev() function is present or not.
#
# Added by commit c68ea0d00ad8 (vfio: simplify iommu group allocation
# for mediated devices) in v5.16
#
CODE="
#include <linux/vfio.h>
void conftest_vfio_register_emulated_iommu_dev() {
vfio_register_emulated_iommu_dev();
}"
compile_check_conftest "$CODE" "NV_VFIO_REGISTER_EMULATED_IOMMU_DEV_PRESENT" "" "functions"
;;
drm_available)
# Determine if the DRM subsystem is usable
CODE="
#if defined(NV_DRM_DRMP_H_PRESENT)
#include <drm/drmP.h>
#endif
#if defined(NV_DRM_DRM_DRV_H_PRESENT)
#include <drm/drm_drv.h>
#endif
#if !defined(CONFIG_DRM) && !defined(CONFIG_DRM_MODULE)
#error DRM not enabled
#endif
void conftest_drm_available(void) {
struct drm_driver drv;
/* 2013-10-02 1bb72532ac260a2d3982b40bdd4c936d779d0d16 */
(void)drm_dev_alloc;
/* 2013-10-02 c22f0ace1926da399d9a16dfaf09174c1b03594c */
(void)drm_dev_register;
/* 2013-10-02 c3a49737ef7db0bdd4fcf6cf0b7140a883e32b2a */
(void)drm_dev_unregister;
}"
compile_check_conftest "$CODE" "NV_DRM_AVAILABLE" "" "generic"
;;
drm_dev_unref)
#
# Determine if drm_dev_unref() is present.
# If it isn't, we use drm_dev_free() instead.
#
# drm_dev_free was added by commit 0dc8fe5985e0 ("drm: introduce
# drm_dev_free() to fix error paths") in v3.13 (2013-10-02)
#
# Renamed to drm_dev_unref by commit 099d1c290e2e
# ("drm: provide device-refcount") in v3.15 (2014-01-29)
#
CODE="
#if defined(NV_DRM_DRMP_H_PRESENT)
#include <drm/drmP.h>
#endif
void conftest_drm_dev_unref(void) {
drm_dev_unref();
}"
compile_check_conftest "$CODE" "NV_DRM_DEV_UNREF_PRESENT" "" "functions"
;;
drm_sysfs_connector_property_event)
#
# Determine if drm_sysfs_connector_property_event() is present.
#
# Commit 0cf8d292ba5e ("drm/sysfs: rename drm_sysfs_connector_status_event()")
# renamed drm_sysfs_connector_status_event() to
# drm_sysfs_connector_property_event() in Linux v6.5.
#
CODE="
#include <drm/drm_sysfs.h>
void conftest_drm_sysfs_connector_property_event(void) {
drm_sysfs_connector_property_event();
}"
compile_check_conftest "$CODE" "NV_DRM_SYSFS_CONNECTOR_PROPERTY_EVENT_PRESENT" "" "functions"
;;
pde_data)
#
# Determine if the pde_data() function is present.
#
# The commit c28198889c15 removed the function
# 'PDE_DATA()', and replaced it with 'pde_data()'
# ("proc: remove PDE_DATA() completely") in v5.17-rc1.
#
CODE="
#include <linux/proc_fs.h>
void conftest_pde_data(void) {
pde_data();
}"
compile_check_conftest "$CODE" "NV_PDE_DATA_LOWER_CASE_PRESENT" "" "functions"
;;
get_num_physpages)
#
# Determine if the get_num_physpages() function is
# present.
#
# Added by commit 7ee3d4e8cd56 ("mm: introduce helper function
# mem_init_print_info() to simplify mem_init()") in v3.11
#
CODE="
#include <linux/mm.h>
void conftest_get_num_physpages(void) {
get_num_physpages(NULL);
}"
compile_check_conftest "$CODE" "NV_GET_NUM_PHYSPAGES_PRESENT" "" "functions"
;;
backing_dev_info)
#
# Determine if the 'address_space' structure has
# a 'backing_dev_info' field.
#
# Removed by commit b83ae6d42143 ("fs: remove
# mapping->backing_dev_info") in v4.0
#
CODE="
#include <linux/fs.h>
int conftest_backing_dev_info(void) {
return offsetof(struct address_space, backing_dev_info);
}"
compile_check_conftest "$CODE" "NV_ADDRESS_SPACE_HAS_BACKING_DEV_INFO" "" "types"
;;
xen_ioemu_inject_msi)
# Determine if the xen_ioemu_inject_msi() function is present.
CODE="
#if defined(NV_XEN_IOEMU_H_PRESENT)
#include <linux/kernel.h>
#include <xen/interface/xen.h>
#include <xen/hvm.h>
#include <xen/ioemu.h>
#endif
void conftest_xen_ioemu_inject_msi(void) {
xen_ioemu_inject_msi();
}"
compile_check_conftest "$CODE" "NV_XEN_IOEMU_INJECT_MSI" "" "functions"
;;
phys_to_dma)
#
# Determine if the phys_to_dma function is present.
# It does not exist on all architectures.
#
CODE="
#include <linux/dma-mapping.h>
void conftest_phys_to_dma(void) {
phys_to_dma();
}"
compile_check_conftest "$CODE" "NV_PHYS_TO_DMA_PRESENT" "" "functions"
;;
dma_attr_macros)
#
# Determine if the NV_DMA_ATTR_SKIP_CPU_SYNC_PRESENT macro present.
# It does not exist on all architectures.
#
CODE="
#include <linux/dma-mapping.h>
void conftest_dma_attr_macros(void) {
int ret;
ret = DMA_ATTR_SKIP_CPU_SYNC();
}"
compile_check_conftest "$CODE" "NV_DMA_ATTR_SKIP_CPU_SYNC_PRESENT" "" "functions"
;;
dma_map_page_attrs)
#
# Determine if the dma_map_page_attrs function is present.
# It does not exist on all architectures.
#
CODE="
#include <linux/dma-mapping.h>
void conftest_dma_map_page_attrs(void) {
dma_map_page_attrs();
}"
compile_check_conftest "$CODE" "NV_DMA_MAP_PAGE_ATTRS_PRESENT" "" "functions"
;;
dma_ops)
#
# Determine if the 'dma_ops' structure is present.
# It does not exist on all architectures.
#
CODE="
#include <linux/dma-mapping.h>
void conftest_dma_ops(void) {
(void)dma_ops;
}"
compile_check_conftest "$CODE" "NV_DMA_OPS_PRESENT" "" "symbols"
;;
swiotlb_dma_ops)
#
# Determine if the 'swiotlb_dma_ops' structure is present.
# It does not exist on all architectures.
#
CODE="
#include <linux/dma-mapping.h>
void conftest_dma_ops(void) {
(void)swiotlb_dma_ops;
}"
compile_check_conftest "$CODE" "NV_SWIOTLB_DMA_OPS_PRESENT" "" "symbols"
;;
get_dma_ops)
#
# Determine if the get_dma_ops() function is present.
#
# The structure was made available to all architectures by commit
# e1c7e324539a ("dma-mapping: always provide the dma_map_ops
# based implementation") in v4.5
#
# Commit 0a0f0d8be76d ("dma-mapping: split <linux/dma-mapping.h>")
# in v5.10-rc1 (2020-09-22), moved get_dma_ops() function
# prototype from <linux/dma-mapping.h> to <linux/dma-map-ops.h>.
#
CODE="
#if defined(NV_LINUX_DMA_MAP_OPS_H_PRESENT)
#include <linux/dma-map-ops.h>
#else
#include <linux/dma-mapping.h>
#endif
void conftest_get_dma_ops(void) {
get_dma_ops();
}"
compile_check_conftest "$CODE" "NV_GET_DMA_OPS_PRESENT" "" "functions"
;;
noncoherent_swiotlb_dma_ops)
#
# Determine if the 'noncoherent_swiotlb_dma_ops' symbol is present.
# This API only exists on ARM64.
#
# Added by commit 7363590d2c46 ("arm64: Implement coherent DMA API
# based on swiotlb") in v3.15
#
# Removed by commit 9d3bfbb4df58 ("arm64: Combine coherent and
# non-coherent swiotlb dma_ops") in v4.0
#
CODE="
#include <linux/dma-mapping.h>
void conftest_noncoherent_swiotlb_dma_ops(void) {
(void)noncoherent_swiotlb_dma_ops;
}"
compile_check_conftest "$CODE" "NV_NONCOHERENT_SWIOTLB_DMA_OPS_PRESENT" "" "symbols"
;;
dma_map_resource)
#
# Determine if the dma_map_resource() function is present.
#
# Added by commit 6f3d87968f9c ("dma-mapping: add
# dma_{map,unmap}_resource") in v4.9 (2016-08-10)
#
CODE="
#include <linux/dma-mapping.h>
void conftest_dma_map_resource(void) {
dma_map_resource();
}"
compile_check_conftest "$CODE" "NV_DMA_MAP_RESOURCE_PRESENT" "" "functions"
;;
write_cr4)
#
# Determine if the write_cr4() function is present.
#
CODE="
#include <asm/processor.h>
void conftest_write_cr4(void) {
write_cr4();
}"
compile_check_conftest "$CODE" "NV_WRITE_CR4_PRESENT" "" "functions"
;;
nvhost_dma_fence_unpack)
#
# Determine if the nvhost_dma_fence_unpack function is present.
# This is only present in NVIDIA Tegra downstream kernels.
#
CODE="
#if defined(NV_LINUX_NVHOST_H_PRESENT)
#include <linux/nvhost.h>
#endif
void conftest_nvhost_dma_fence_unpack(void) {
nvhost_dma_fence_unpack();
}"
compile_check_conftest "$CODE" "NV_NVHOST_DMA_FENCE_UNPACK_PRESENT" "" "functions"
;;
of_find_node_by_phandle)
#
# Determine if the of_find_node_by_phandle function is present.
#
# Support for kernels without CONFIG_OF defined added by commit
# ce16b9d23561 ("of: define of_find_node_by_phandle for
# !CONFIG_OF") in v4.2
#
# Test if linux/of.h header file inclusion is successful or not and
# define/undefine NV_LINUX_OF_H_USABLE depending upon status of inclusion.
#
echo "$CONFTEST_PREAMBLE
#include <linux/of.h>
" > conftest$$.c
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
rm -f conftest$$.o
echo "#define NV_LINUX_OF_H_USABLE" | append_conftest "generic"
CODE="
#include <linux/of.h>
void conftest_of_find_node_by_phandle() {
of_find_node_by_phandle();
}"
compile_check_conftest "$CODE" "NV_OF_FIND_NODE_BY_PHANDLE_PRESENT" "" "functions"
else
echo "#undef NV_LINUX_OF_H_USABLE" | append_conftest "generic"
echo "#undef NV_OF_FIND_NODE_BY_PHANDLE_PRESENT" | append_conftest "functions"
fi
;;
of_node_to_nid)
#
# Determine if of_node_to_nid is present
#
# Dummy implementation added by commit 559e2b7ee7a1
# ("of: Provide default of_node_to_nid() implementation.") in v2.6.36
#
# Real implementation added by commit 298535c00a2c
# ("of, numa: Add NUMA of binding implementation.") in v4.7
#
# Test if linux/of.h header file inclusion is successful or not and
# define/undefine NV_LINUX_OF_H_USABLE depending upon status of inclusion.
#
echo "$CONFTEST_PREAMBLE
#include <linux/of.h>
" > conftest$$.c
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
rm -f conftest$$.o
echo "#define NV_LINUX_OF_H_USABLE" | append_conftest "generic"
CODE="
#include <linux/version.h>
#include <linux/utsname.h>
#include <linux/of.h>
void conftest_of_node_to_nid() {
of_node_to_nid();
}"
compile_check_conftest "$CODE" "NV_OF_NODE_TO_NID_PRESENT" "" "functions"
else
echo "#undef NV_LINUX_OF_H_USABLE" | append_conftest "generic"
echo "#undef NV_OF_NODE_TO_NID_PRESENT" | append_conftest "functions"
fi
;;
pnv_pci_get_npu_dev)
#
# Determine if the pnv_pci_get_npu_dev function is present.
#
# Added by commit 5d2aa710e697 ("powerpc/powernv: Add support
# for Nvlink NPUs") in v4.5
#
CODE="
#include <linux/pci.h>
void conftest_pnv_pci_get_npu_dev() {
pnv_pci_get_npu_dev();
}"
compile_check_conftest "$CODE" "NV_PNV_PCI_GET_NPU_DEV_PRESENT" "" "functions"
;;
kernel_write_has_pointer_pos_arg)
#
# Determine the pos argument type, which was changed by
# commit e13ec939e96b1 (fs: fix kernel_write prototype) on
# 9/1/2017.
#
echo "$CONFTEST_PREAMBLE
#include <linux/fs.h>
ssize_t kernel_write(struct file *file, const void *buf,
size_t count, loff_t *pos)
{
return 0;
}" > conftest$$.c;
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
echo "#define NV_KERNEL_WRITE_HAS_POINTER_POS_ARG" | append_conftest "function"
rm -f conftest$$.o
else
echo "#undef NV_KERNEL_WRITE_HAS_POINTER_POS_ARG" | append_conftest "function"
fi
;;
kernel_read_has_pointer_pos_arg)
#
# Determine the pos argument type, which was changed by
# commit bdd1d2d3d251c (fs: fix kernel_read prototype) on
# 9/1/2017.
#
echo "$CONFTEST_PREAMBLE
#include <linux/fs.h>
ssize_t kernel_read(struct file *file, void *buf, size_t count,
loff_t *pos)
{
return 0;
}" > conftest$$.c;
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
echo "#define NV_KERNEL_READ_HAS_POINTER_POS_ARG" | append_conftest "function"
rm -f conftest$$.o
else
echo "#undef NV_KERNEL_READ_HAS_POINTER_POS_ARG" | append_conftest "function"
fi
;;
vm_insert_pfn_prot)
#
# Determine if vm_insert_pfn_prot function is present
#
# Added by commit 1745cbc5d0de ("mm: Add vm_insert_pfn_prot()") in
# v3.16.59
#
# Removed by commit f5e6d1d5f8f3 ("mm: introduce
# vmf_insert_pfn_prot()") in v4.20.
#
CODE="
#include <linux/mm.h>
void conftest_vm_insert_pfn_prot() {
vm_insert_pfn_prot();
}"
compile_check_conftest "$CODE" "NV_VM_INSERT_PFN_PROT_PRESENT" "" "functions"
;;
vmf_insert_pfn_prot)
#
# Determine if vmf_insert_pfn_prot function is present
#
# Added by commit f5e6d1d5f8f3 ("mm: introduce
# vmf_insert_pfn_prot()") in v4.20.
#
CODE="
#include <linux/mm.h>
void conftest_vmf_insert_pfn_prot() {
vmf_insert_pfn_prot();
}"
compile_check_conftest "$CODE" "NV_VMF_INSERT_PFN_PROT_PRESENT" "" "functions"
;;
drm_atomic_available)
#
# Determine if the DRM atomic modesetting subsystem is usable
#
# Added by commit 036ef5733ba4
# ("drm/atomic: Allow drivers to subclass drm_atomic_state, v3") in
# v4.2 (2018-05-18).
#
# Make conftest more robust by adding test for
# drm_atomic_set_mode_prop_for_crtc(), this function added by
# commit 955f3c334f0f ("drm/atomic: Add MODE_ID property") in v4.2
# (2015-05-25). If the DRM atomic modesetting subsystem is
# back ported to Linux kernel older than v4.2, then commit
# 955f3c334f0f must be back ported in order to get NVIDIA-DRM KMS
# support.
# Commit 72fdb40c1a4b ("drm: extract drm_atomic_uapi.c") in v4.20
# (2018-09-05), moved drm_atomic_set_mode_prop_for_crtc() function
# prototype from drm/drm_atomic.h to drm/drm_atomic_uapi.h.
#
echo "$CONFTEST_PREAMBLE
#if defined(NV_DRM_DRMP_H_PRESENT)
#include <drm/drmP.h>
#endif
#include <drm/drm_atomic.h>
#if !defined(CONFIG_DRM) && !defined(CONFIG_DRM_MODULE)
#error DRM not enabled
#endif
void conftest_drm_atomic_modeset_available(void) {
size_t a;
a = offsetof(struct drm_mode_config_funcs, atomic_state_alloc);
}" > conftest$$.c;
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
rm -f conftest$$.o
echo "$CONFTEST_PREAMBLE
#if defined(NV_DRM_DRMP_H_PRESENT)
#include <drm/drmP.h>
#endif
#include <drm/drm_atomic.h>
#if defined(NV_DRM_DRM_ATOMIC_UAPI_H_PRESENT)
#include <drm/drm_atomic_uapi.h>
#endif
void conftest_drm_atomic_set_mode_prop_for_crtc(void) {
drm_atomic_set_mode_prop_for_crtc();
}" > conftest$$.c;
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
rm -f conftest$$.o
echo "#undef NV_DRM_ATOMIC_MODESET_AVAILABLE" | append_conftest "generic"
else
echo "#define NV_DRM_ATOMIC_MODESET_AVAILABLE" | append_conftest "generic"
fi
else
echo "#undef NV_DRM_ATOMIC_MODESET_AVAILABLE" | append_conftest "generic"
fi
;;
drm_bus_present)
#
# Determine if the 'struct drm_bus' type is present.
#
# Added by commit 8410ea3b95d1 ("drm: rework PCI/platform driver
# interface.") in v2.6.39 (2010-12-15)
#
# Removed by commit c5786fe5f1c5 ("drm: Goody bye, drm_bus!")
# in v3.18 (2014-08-29)
#
CODE="
#if defined(NV_DRM_DRMP_H_PRESENT)
#include <drm/drmP.h>
#endif
void conftest_drm_bus_present(void) {
struct drm_bus bus;
}"
compile_check_conftest "$CODE" "NV_DRM_BUS_PRESENT" "" "types"
;;
drm_bus_has_bus_type)
#
# Determine if the 'drm_bus' structure has a 'bus_type' field.
#
# Added by commit 8410ea3b95d1 ("drm: rework PCI/platform driver
# interface.") in v2.6.39 (2010-12-15)
#
# Removed by commit 42b21049fc26 ("drm: kill drm_bus->bus_type")
# in v3.16 (2013-11-03)
#
CODE="
#if defined(NV_DRM_DRMP_H_PRESENT)
#include <drm/drmP.h>
#endif
int conftest_drm_bus_has_bus_type(void) {
return offsetof(struct drm_bus, bus_type);
}"
compile_check_conftest "$CODE" "NV_DRM_BUS_HAS_BUS_TYPE" "" "types"
;;
drm_bus_has_get_irq)
#
# Determine if the 'drm_bus' structure has a 'get_irq' field.
#
# Added by commit 8410ea3b95d1 ("drm: rework PCI/platform
# driver interface.") in v2.6.39 (2010-12-15)
#
# Removed by commit b2a21aa25a39 ("drm: remove bus->get_irq
# implementations") in v3.16 (2013-11-03)
#
CODE="
#if defined(NV_DRM_DRMP_H_PRESENT)
#include <drm/drmP.h>
#endif
int conftest_drm_bus_has_get_irq(void) {
return offsetof(struct drm_bus, get_irq);
}"
compile_check_conftest "$CODE" "NV_DRM_BUS_HAS_GET_IRQ" "" "types"
;;
drm_bus_has_get_name)
#
# Determine if the 'drm_bus' structure has a 'get_name' field.
#
# Added by commit 8410ea3b95d1 ("drm: rework PCI/platform driver
# interface.") in v2.6.39 (2010-12-15)
#
# removed by commit 9de1b51f1fae ("drm: remove drm_bus->get_name")
# in v3.16 (2013-11-03)
#
CODE="
#if defined(NV_DRM_DRMP_H_PRESENT)
#include <drm/drmP.h>
#endif
int conftest_drm_bus_has_get_name(void) {
return offsetof(struct drm_bus, get_name);
}"
compile_check_conftest "$CODE" "NV_DRM_BUS_HAS_GET_NAME" "" "types"
;;
drm_driver_has_device_list)
#
# Determine if the 'drm_driver' structure has a 'device_list' field.
#
# Renamed from device_list to legacy_device_list by commit
# b3f2333de8e8 ("drm: restrict the device list for shadow
# attached drivers") in v3.14 (2013-12-11)
#
CODE="
#if defined(NV_DRM_DRMP_H_PRESENT)
#include <drm/drmP.h>
#endif
#if defined(NV_DRM_DRM_DRV_H_PRESENT)
#include <drm/drm_drv.h>
#endif
int conftest_drm_driver_has_device_list(void) {
return offsetof(struct drm_driver, device_list);
}"
compile_check_conftest "$CODE" "NV_DRM_DRIVER_HAS_DEVICE_LIST" "" "types"
;;
drm_driver_has_legacy_dev_list)
#
# Determine if the 'drm_driver' structure has a 'legacy_dev_list' field.
#
# Renamed from device_list to legacy_device_list by commit
# b3f2333de8e8 ("drm: restrict the device list for shadow
# attached drivers") in v3.14 (2013-12-11)
#
# The commit 57bb1ee60340 ("drm: Compile out legacy chunks from
# struct drm_device") compiles out the legacy chunks like
# drm_driver::legacy_dev_list.
#
CODE="
#if defined(NV_DRM_DRMP_H_PRESENT)
#include <drm/drmP.h>
#endif
#if defined(NV_DRM_DRM_DRV_H_PRESENT)
#include <drm/drm_drv.h>
#endif
int conftest_drm_driver_has_legacy_dev_list(void) {
return offsetof(struct drm_driver, legacy_dev_list);
}"
compile_check_conftest "$CODE" "NV_DRM_DRIVER_HAS_LEGACY_DEV_LIST" "" "types"
;;
jiffies_to_timespec)
#
# Determine if jiffies_to_timespec() is present
#
# removed by commit 751addac78b6
# ("y2038: remove obsolete jiffies conversion functions")
# in v5.6-rc1 (2019-12-13).
CODE="
#include <linux/jiffies.h>
void conftest_jiffies_to_timespec(void){
jiffies_to_timespec();
}"
compile_check_conftest "$CODE" "NV_JIFFIES_TO_TIMESPEC_PRESENT" "" "functions"
;;
drm_init_function_args)
#
# Determine if these functions:
# drm_universal_plane_init()
# drm_crtc_init_with_planes()
# drm_encoder_init()
# have a 'name' argument, which was added by these commits:
# drm_universal_plane_init: 2015-12-09 b0b3b7951114315d65398c27648705ca1c322faa
# drm_crtc_init_with_planes: 2015-12-09 f98828769c8838f526703ef180b3088a714af2f9
# drm_encoder_init: 2015-12-09 13a3d91f17a5f7ed2acd275d18b6acfdb131fb15
#
# Additionally determine whether drm_universal_plane_init() has a
# 'format_modifiers' argument, which was added by:
# 2017-07-23 e6fc3b68558e4c6d8d160b5daf2511b99afa8814
#
CODE="
#if defined(NV_DRM_DRMP_H_PRESENT)
#include <drm/drmP.h>
#endif
#if defined(NV_DRM_DRM_CRTC_H_PRESENT)
#include <drm/drm_crtc.h>
#endif
int conftest_drm_crtc_init_with_planes_has_name_arg(void) {
return
drm_crtc_init_with_planes(
NULL, /* struct drm_device *dev */
NULL, /* struct drm_crtc *crtc */
NULL, /* struct drm_plane *primary */
NULL, /* struct drm_plane *cursor */
NULL, /* const struct drm_crtc_funcs *funcs */
NULL); /* const char *name */
}"
compile_check_conftest "$CODE" "NV_DRM_CRTC_INIT_WITH_PLANES_HAS_NAME_ARG" "" "types"
CODE="
#if defined(NV_DRM_DRMP_H_PRESENT)
#include <drm/drmP.h>
#endif
#if defined(NV_DRM_DRM_ENCODER_H_PRESENT)
#include <drm/drm_encoder.h>
#endif
int conftest_drm_encoder_init_has_name_arg(void) {
return
drm_encoder_init(
NULL, /* struct drm_device *dev */
NULL, /* struct drm_encoder *encoder */
NULL, /* const struct drm_encoder_funcs *funcs */
DRM_MODE_ENCODER_NONE, /* int encoder_type */
NULL); /* const char *name */
}"
compile_check_conftest "$CODE" "NV_DRM_ENCODER_INIT_HAS_NAME_ARG" "" "types"
echo "$CONFTEST_PREAMBLE
#if defined(NV_DRM_DRMP_H_PRESENT)
#include <drm/drmP.h>
#endif
#if defined(NV_DRM_DRM_PLANE_H_PRESENT)
#include <drm/drm_plane.h>
#endif
int conftest_drm_universal_plane_init_has_format_modifiers_arg(void) {
return
drm_universal_plane_init(
NULL, /* struct drm_device *dev */
NULL, /* struct drm_plane *plane */
0, /* unsigned long possible_crtcs */
NULL, /* const struct drm_plane_funcs *funcs */
NULL, /* const uint32_t *formats */
0, /* unsigned int format_count */
NULL, /* const uint64_t *format_modifiers */
DRM_PLANE_TYPE_PRIMARY,
NULL); /* const char *name */
}" > conftest$$.c
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
rm -f conftest$$.o
echo "#define NV_DRM_UNIVERSAL_PLANE_INIT_HAS_FORMAT_MODIFIERS_ARG" | append_conftest "types"
echo "#define NV_DRM_UNIVERSAL_PLANE_INIT_HAS_NAME_ARG" | append_conftest "types"
else
echo "#undef NV_DRM_UNIVERSAL_PLANE_INIT_HAS_FORMAT_MODIFIERS_ARG" | append_conftest "types"
CODE="
#if defined(NV_DRM_DRMP_H_PRESENT)
#include <drm/drmP.h>
#endif
#if defined(NV_DRM_DRM_PLANE_H_PRESENT)
#include <drm/drm_plane.h>
#endif
int conftest_drm_universal_plane_init_has_name_arg(void) {
return
drm_universal_plane_init(
NULL, /* struct drm_device *dev */
NULL, /* struct drm_plane *plane */
0, /* unsigned long possible_crtcs */
NULL, /* const struct drm_plane_funcs *funcs */
NULL, /* const uint32_t *formats */
0, /* unsigned int format_count */
DRM_PLANE_TYPE_PRIMARY,
NULL); /* const char *name */
}"
compile_check_conftest "$CODE" "NV_DRM_UNIVERSAL_PLANE_INIT_HAS_NAME_ARG" "" "types"
fi
;;
drm_driver_has_set_busid)
#
# Determine if the drm_driver structure has a 'set_busid' callback
# field.
#
# Added by commit 915b4d11b8b9 ("drm: add driver->set_busid()
# callback") in v3.18 (2014-08-29)
#
CODE="
#if defined(NV_DRM_DRMP_H_PRESENT)
#include <drm/drmP.h>
#endif
int conftest_drm_driver_has_set_busid(void) {
return offsetof(struct drm_driver, set_busid);
}"
compile_check_conftest "$CODE" "NV_DRM_DRIVER_HAS_SET_BUSID" "" "types"
;;
drm_driver_has_gem_prime_res_obj)
#
# Determine if the drm_driver structure has a 'gem_prime_res_obj'
# callback field.
#
# Added by commit 3aac4502fd3f ("dma-buf: use reservation
# objects") in v3.17 (2014-07-01).
#
# Removed by commit 51c98747113e (drm/prime: Ditch
# gem_prime_res_obj hook) in v5.4.
#
CODE="
#if defined(NV_DRM_DRMP_H_PRESENT)
#include <drm/drmP.h>
#endif
int conftest_drm_driver_has_gem_prime_res_obj(void) {
return offsetof(struct drm_driver, gem_prime_res_obj);
}"
compile_check_conftest "$CODE" "NV_DRM_DRIVER_HAS_GEM_PRIME_RES_OBJ" "" "types"
;;
drm_crtc_state_has_connectors_changed)
#
# Determine if the crtc_state has a 'connectors_changed' field.
#
# Added by commit fc596660dd4e ("drm/atomic: add
# connectors_changed to separate it from mode_changed, v2")
# in v4.3 (2015-07-21)
#
CODE="
#include <drm/drm_crtc.h>
void conftest_drm_crtc_state_has_connectors_changed(void) {
struct drm_crtc_state foo;
(void)foo.connectors_changed;
}"
compile_check_conftest "$CODE" "NV_DRM_CRTC_STATE_HAS_CONNECTORS_CHANGED" "" "types"
;;
drm_reinit_primary_mode_group)
#
# Determine if the function drm_reinit_primary_mode_group() is
# present.
#
# Added by commit 2390cd11bfbe ("drm/crtc: add interface to
# reinitialise the legacy mode group") in v3.17 (2014-06-05)
#
# Removed by commit 3fdefa399e46 ("drm: gc now dead
# mode_group code") in v4.3 (2015-07-09)
#
CODE="
#if defined(NV_DRM_DRM_CRTC_H_PRESENT)
#include <drm/drm_crtc.h>
#endif
void conftest_drm_reinit_primary_mode_group(void) {
drm_reinit_primary_mode_group();
}"
compile_check_conftest "$CODE" "NV_DRM_REINIT_PRIMARY_MODE_GROUP_PRESENT" "" "functions"
;;
drm_helper_crtc_enable_color_mgmt)
#
# Determine if the function drm_helper_crtc_enable_color_mgmt() is
# present.
#
# Added by commit 5488dc16fde7 ("drm: introduce pipe color
# correction properties") in v4.6 (2016-03-08).
#
# Removed by commit f8ed34ac7b45 ("drm: drm_helper_crtc_enable_color_mgmt()
# => drm_crtc_enable_color_mgmt()") in v4.8-rc1 (2016-06-07).
#
CODE="
#include <drm/drm_crtc_helper.h>
void conftest_drm_helper_crtc_enable_color_mgmt(void) {
drm_helper_crtc_enable_color_mgmt();
}"
compile_check_conftest "$CODE" "NV_DRM_HELPER_CRTC_ENABLE_COLOR_MGMT_PRESENT" "" "functions"
;;
drm_crtc_enable_color_mgmt)
#
# Determine if the function drm_crtc_enable_color_mgmt() is
# present.
#
# Added by commit f8ed34ac7b45 ("drm: drm_helper_crtc_enable_color_mgmt()
# => drm_crtc_enable_color_mgmt()") in v4.8-rc1 (2016-06-07), replacing
# drm_helper_crtc_enable_color_mgmt().
#
# Moved to drm_color_mgmt.[ch] by commit f1e2f66ce2d9 ("drm: Extract
# drm_color_mgmt.[hc]") in v4.9-rc1 (2016-09-22)
#
CODE="
#if defined(NV_DRM_DRM_CRTC_H_PRESENT)
#include <drm/drm_crtc.h>
#endif
#if defined(NV_DRM_DRM_COLOR_MGMT_H_PRESENT)
#include <drm/drm_color_mgmt.h>
#endif
void conftest_drm_crtc_enable_color_mgmt(void) {
drm_crtc_enable_color_mgmt();
}"
compile_check_conftest "$CODE" "NV_DRM_CRTC_ENABLE_COLOR_MGMT_PRESENT" "" "functions"
;;
drm_atomic_helper_legacy_gamma_set)
#
# Determine if the function drm_atomic_helper_legacy_gamma_set() is
# present.
#
# Added by commit 5488dc16fde7 ("drm: introduce pipe color
# correction properties") in v4.6 (2016-03-08)
#
# Accidentally moved to drm_atomic_state_helper.[ch] by commit
# 9ef8a9dc4b21 ("drm: Extract drm_atomic_state_helper.[ch]")
# and moved back to drm_atomic_helper.[ch] by commit 1d8224e790c7
# ("drm: Fix up drm_atomic_state_helper.[hc] extraction") in
# v5.0-rc1
#
# Removed by commit 6ca2ab8086af ("drm: automatic legacy gamma
# support") in v5.12 (2020-12-15)
#
CODE="
#if defined(NV_DRM_DRM_ATOMIC_HELPER_H_PRESENT)
#include <drm/drm_atomic_helper.h>
#endif
#if defined(NV_DRM_DRM_ATOMIC_STATE_HELPER_H_PRESENT)
#include <drm/drm_atomic_state_helper.h>
#endif
void conftest_drm_atomic_helper_legacy_gamma_set(void) {
drm_atomic_helper_legacy_gamma_set();
}"
compile_check_conftest "$CODE" "NV_DRM_ATOMIC_HELPER_LEGACY_GAMMA_SET_PRESENT" "" "functions"
;;
wait_on_bit_lock_argument_count)
#
# Determine how many arguments wait_on_bit_lock takes.
#
# Changed by commit 743162013d40 ("sched: Remove proliferation
# of wait_on_bit() action functions") in v3.17 (2014-07-07)
#
echo "$CONFTEST_PREAMBLE
#include <linux/wait.h>
void conftest_wait_on_bit_lock(void) {
wait_on_bit_lock(NULL, 0, 0);
}" > conftest$$.c
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
rm -f conftest$$.o
echo "#define NV_WAIT_ON_BIT_LOCK_ARGUMENT_COUNT 3" | append_conftest "functions"
return
fi
echo "$CONFTEST_PREAMBLE
#include <linux/wait.h>
void conftest_wait_on_bit_lock(void) {
wait_on_bit_lock(NULL, 0, NULL, 0);
}" > conftest$$.c
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
rm -f conftest$$.o
echo "#define NV_WAIT_ON_BIT_LOCK_ARGUMENT_COUNT 4" | append_conftest "functions"
return
fi
echo "#error wait_on_bit_lock() conftest failed!" | append_conftest "functions"
;;
pci_stop_and_remove_bus_device)
#
# Determine if the pci_stop_and_remove_bus_device() function is present.
#
# Added by commit 210647af897a ("PCI: Rename pci_remove_bus_device
# to pci_stop_and_remove_bus_device") in v3.4 (2012-02-25) but
# aarch64 support was added by commit d1e6dc91b532
# ("arm64: Add architectural support for PCI") in v3.18-rc1.
#
CODE="
#include <linux/types.h>
#include <linux/pci.h>
void conftest_pci_stop_and_remove_bus_device() {
pci_stop_and_remove_bus_device();
}"
compile_check_conftest "$CODE" "NV_PCI_STOP_AND_REMOVE_BUS_DEVICE_PRESENT" "" "functions"
;;
drm_helper_mode_fill_fb_struct | drm_helper_mode_fill_fb_struct_has_const_mode_cmd_arg)
#
# Determine if the drm_helper_mode_fill_fb_struct function takes
# 'dev' argument.
#
# The drm_helper_mode_fill_fb_struct() has been updated to
# take 'dev' parameter by commit a3f913ca9892 ("drm: Pass 'dev'
# to drm_helper_mode_fill_fb_struct()") in v4.11 (2016-12-14)
#
echo "$CONFTEST_PREAMBLE
#include <drm/drm_crtc_helper.h>
void drm_helper_mode_fill_fb_struct(struct drm_device *dev,
struct drm_framebuffer *fb,
const struct drm_mode_fb_cmd2 *mode_cmd)
{
return;
}" > conftest$$.c;
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
echo "#define NV_DRM_HELPER_MODE_FILL_FB_STRUCT_HAS_DEV_ARG" | append_conftest "function"
echo "#define NV_DRM_HELPER_MODE_FILL_FB_STRUCT_HAS_CONST_MODE_CMD_ARG" | append_conftest "function"
rm -f conftest$$.o
else
echo "#undef NV_DRM_HELPER_MODE_FILL_FB_STRUCT_HAS_DEV_ARG" | append_conftest "function"
#
# Determine if the drm_mode_fb_cmd2 pointer argument is const in
# drm_mode_config_funcs::fb_create and drm_helper_mode_fill_fb_struct().
#
# The drm_mode_fb_cmd2 pointer through this call chain was made
# const by commit 1eb83451ba55 ("drm: Pass the user drm_mode_fb_cmd2
# as const to .fb_create()") in v4.5 (2015-11-11)
#
echo "$CONFTEST_PREAMBLE
#include <drm/drm_crtc_helper.h>
void drm_helper_mode_fill_fb_struct(struct drm_framebuffer *fb,
const struct drm_mode_fb_cmd2 *mode_cmd)
{
return;
}" > conftest$$.c;
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
echo "#define NV_DRM_HELPER_MODE_FILL_FB_STRUCT_HAS_CONST_MODE_CMD_ARG" | append_conftest "function"
rm -f conftest$$.o
else
echo "#undef NV_DRM_HELPER_MODE_FILL_FB_STRUCT_HAS_CONST_MODE_CMD_ARG" | append_conftest "function"
fi
fi
;;
mm_context_t)
#
# Determine if the 'mm_context_t' data type is present
# and if it has an 'id' member.
# It does not exist on all architectures.
#
echo "$CONFTEST_PREAMBLE
#include <linux/mm.h>
int conftest_mm_context_t(void) {
return offsetof(mm_context_t, id);
}" > conftest$$.c
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
echo "#define NV_MM_CONTEXT_T_HAS_ID" | append_conftest "types"
rm -f conftest$$.o
return
else
echo "#undef NV_MM_CONTEXT_T_HAS_ID" | append_conftest "types"
return
fi
;;
pci_dev_has_ats_enabled)
#
# Determine if the 'pci_dev' data type has a 'ats_enabled' member.
#
# Added by commit d544d75ac96aa ("PCI: Embed ATS info directly
# into struct pci_dev") in v4.3-rc1 (2015-08-14)
#
CODE="
#include <linux/pci.h>
int conftest_pci_dev_ats_enabled_t(void) {
return ((struct pci_dev *)0)->ats_enabled;
}"
compile_check_conftest "$CODE" "NV_PCI_DEV_HAS_ATS_ENABLED" "" "types"
;;
get_user_pages)
#
# Conftest for get_user_pages()
#
# Use long type for get_user_pages and unsigned long for nr_pages
# by commit 28a35716d317 ("mm: use long type for page counts
# in mm_populate() and get_user_pages()") in v3.9 (2013-02-22)
#
# Removed struct task_struct *tsk & struct mm_struct *mm from
# get_user_pages by commit cde70140fed8 ("mm/gup: Overload
# get_user_pages() functions") in v4.6 (2016-02-12)
#
# Replaced get_user_pages6 with get_user_pages by commit
# c12d2da56d0e ("mm/gup: Remove the macro overload API migration
# helpers from the get_user*() APIs") in v4.6 (2016-04-04)
#
# Replaced write and force parameters with gup_flags by
# commit 768ae309a961 ("mm: replace get_user_pages() write/force
# parameters with gup_flags") in v4.9 (2016-10-13)
#
# Removed vmas parameter from get_user_pages() by commit 7bbf9c8c99
# ("mm/gup: remove unused vmas parameter from get_user_pages()")
# in linux-next, expected in v6.5-rc1
#
# linux-4.4.168 cherry-picked commit 768ae309a961 without
# c12d2da56d0e which is covered in Conftest #3.
#
#
# This function sets the NV_GET_USER_PAGES_* macros as per the below
# passing conftest's
#
set_get_user_pages_defines () {
if [ "$1" = "NV_GET_USER_PAGES_HAS_ARGS_WRITE_FORCE_VMAS" ]; then
echo "#define NV_GET_USER_PAGES_HAS_ARGS_WRITE_FORCE_VMAS" | append_conftest "functions"
else
echo "#undef NV_GET_USER_PAGES_HAS_ARGS_WRITE_FORCE_VMAS" | append_conftest "functions"
fi
if [ "$1" = "NV_GET_USER_PAGES_HAS_ARGS_TSK_WRITE_FORCE_VMAS" ]; then
echo "#define NV_GET_USER_PAGES_HAS_ARGS_TSK_WRITE_FORCE_VMAS" | append_conftest "functions"
else
echo "#undef NV_GET_USER_PAGES_HAS_ARGS_TSK_WRITE_FORCE_VMAS" | append_conftest "functions"
fi
if [ "$1" = "NV_GET_USER_PAGES_HAS_ARGS_TSK_FLAGS_VMAS" ]; then
echo "#define NV_GET_USER_PAGES_HAS_ARGS_TSK_FLAGS_VMAS" | append_conftest "functions"
else
echo "#undef NV_GET_USER_PAGES_HAS_ARGS_TSK_FLAGS_VMAS" | append_conftest "functions"
fi
if [ "$1" = "NV_GET_USER_PAGES_HAS_ARGS_FLAGS_VMAS" ]; then
echo "#define NV_GET_USER_PAGES_HAS_ARGS_FLAGS_VMAS" | append_conftest "functions"
else
echo "#undef NV_GET_USER_PAGES_HAS_ARGS_FLAGS_VMAS" | append_conftest "functions"
fi
if [ "$1" = "NV_GET_USER_PAGES_HAS_ARGS_FLAGS" ]; then
echo "#define NV_GET_USER_PAGES_HAS_ARGS_FLAGS" | append_conftest "functions"
else
echo "#undef NV_GET_USER_PAGES_HAS_ARGS_FLAGS" | append_conftest "functions"
fi
}
# Conftest #1: Check if get_user_pages accepts 6 arguments.
# Return if true.
# Fall through to conftest #2 on failure.
echo "$CONFTEST_PREAMBLE
#include <linux/mm.h>
long get_user_pages(unsigned long start,
unsigned long nr_pages,
int write,
int force,
struct page **pages,
struct vm_area_struct **vmas) {
return 0;
}" > conftest$$.c
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
set_get_user_pages_defines "NV_GET_USER_PAGES_HAS_ARGS_WRITE_FORCE_VMAS"
rm -f conftest$$.o
return
fi
# Conftest #2: Check if get_user_pages has gup_flags instead of
# write and force parameters. And that gup doesn't accept a
# task_struct and mm_struct as its first arguments. get_user_pages
# has vm_area_struct as its last argument.
# Return if available.
# Fall through to conftest #3 on failure.
echo "$CONFTEST_PREAMBLE
#include <linux/mm.h>
long get_user_pages(unsigned long start,
unsigned long nr_pages,
unsigned int gup_flags,
struct page **pages,
struct vm_area_struct **vmas) {
return 0;
}" > conftest$$.c
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
set_get_user_pages_defines "NV_GET_USER_PAGES_HAS_ARGS_FLAGS_VMAS"
rm -f conftest$$.o
return
fi
# Conftest #3: Check if get_user_pages has gup_flags instead of
# write and force parameters. The gup has task_struct and
# mm_struct as its first arguments. get_user_pages
# has vm_area_struct as its last argument.
# Return if available.
# Fall through to conftest #4 on failure.
echo "$CONFTEST_PREAMBLE
#include <linux/mm.h>
long get_user_pages(struct task_struct *tsk,
struct mm_struct *mm,
unsigned long start,
unsigned long nr_pages,
unsigned int gup_flags,
struct page **pages,
struct vm_area_struct **vmas) {
return 0;
}" > conftest$$.c
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
set_get_user_pages_defines "NV_GET_USER_PAGES_HAS_ARGS_TSK_FLAGS_VMAS"
rm -f conftest$$.o
return
fi
# Conftest #4: gup doesn't accept a task_struct and mm_struct as
# its first arguments. check if get_user_pages() does not take
# vmas argument.
# Fall through to default case otherwise.
echo "$CONFTEST_PREAMBLE
#include <linux/mm.h>
long get_user_pages(unsigned long start,
unsigned long nr_pages,
unsigned int gup_flags,
struct page **pages) {
return 0;
}" > conftest$$.c
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
set_get_user_pages_defines "NV_GET_USER_PAGES_HAS_ARGS_FLAGS"
rm -f conftest$$.o
return
fi
set_get_user_pages_defines "NV_GET_USER_PAGES_HAS_ARGS_TSK_WRITE_FORCE_VMAS"
return
;;
get_user_pages_remote)
#
# Determine if the function get_user_pages_remote() is
# present and has write/force/locked/tsk parameters.
#
# get_user_pages_remote() was added by commit 1e9877902dc7
# ("mm/gup: Introduce get_user_pages_remote()") in v4.6 (2016-02-12)
#
# get_user_pages[_remote]() write/force parameters
# replaced with gup_flags by commits 768ae309a961 ("mm: replace
# get_user_pages() write/force parameters with gup_flags") and
# commit 9beae1ea8930 ("mm: replace get_user_pages_remote()
# write/force parameters with gup_flags") in v4.9 (2016-10-13)
#
# get_user_pages_remote() added 'locked' parameter by
# commit 5b56d49fc31d ("mm: add locked parameter to
# get_user_pages_remote()") in v4.10 (2016-12-14)
#
# get_user_pages_remote() removed 'tsk' parameter by
# commit 64019a2e467a ("mm/gup: remove task_struct pointer for
# all gup code") in v5.9-rc1 (2020-08-11).
#
# Removed vmas parameter from get_user_pages_remote() by commit
# a4bde14d549 ("mm/gup: remove vmas parameter from get_user_pages_remote()")
# in linux-next, expected in v6.5-rc1
#
#
# This function sets the NV_GET_USER_PAGES_REMOTE_* macros as per
# the below passing conftest's
#
set_get_user_pages_remote_defines () {
if [ "$1" = "" ]; then
echo "#undef NV_GET_USER_PAGES_REMOTE_PRESENT" | append_conftest "functions"
else
echo "#define NV_GET_USER_PAGES_REMOTE_PRESENT" | append_conftest "functions"
fi
if [ "$1" = "NV_GET_USER_PAGES_REMOTE_HAS_ARGS_TSK_WRITE_FORCE_VMAS" ]; then
echo "#define NV_GET_USER_PAGES_REMOTE_HAS_ARGS_TSK_WRITE_FORCE_VMAS" | append_conftest "functions"
else
echo "#undef NV_GET_USER_PAGES_REMOTE_HAS_ARGS_TSK_WRITE_FORCE_VMAS" | append_conftest "functions"
fi
if [ "$1" = "NV_GET_USER_PAGES_REMOTE_HAS_ARGS_TSK_FLAGS_VMAS" ]; then
echo "#define NV_GET_USER_PAGES_REMOTE_HAS_ARGS_TSK_FLAGS_VMAS" | append_conftest "functions"
else
echo "#undef NV_GET_USER_PAGES_REMOTE_HAS_ARGS_TSK_FLAGS_VMAS" | append_conftest "functions"
fi
if [ "$1" = "NV_GET_USER_PAGES_REMOTE_HAS_ARGS_TSK_FLAGS_LOCKED_VMAS" ]; then
echo "#define NV_GET_USER_PAGES_REMOTE_HAS_ARGS_TSK_FLAGS_LOCKED_VMAS" | append_conftest "functions"
else
echo "#undef NV_GET_USER_PAGES_REMOTE_HAS_ARGS_TSK_FLAGS_LOCKED_VMAS" | append_conftest "functions"
fi
if [ "$1" = "NV_GET_USER_PAGES_REMOTE_HAS_ARGS_FLAGS_LOCKED_VMAS" ]; then
echo "#define NV_GET_USER_PAGES_REMOTE_HAS_ARGS_FLAGS_LOCKED_VMAS" | append_conftest "functions"
else
echo "#undef NV_GET_USER_PAGES_REMOTE_HAS_ARGS_FLAGS_LOCKED_VMAS" | append_conftest "functions"
fi
if [ "$1" = "NV_GET_USER_PAGES_REMOTE_HAS_ARGS_FLAGS_LOCKED" ]; then
echo "#define NV_GET_USER_PAGES_REMOTE_HAS_ARGS_FLAGS_LOCKED" | append_conftest "functions"
else
echo "#undef NV_GET_USER_PAGES_REMOTE_HAS_ARGS_FLAGS_LOCKED" | append_conftest "functions"
fi
}
# conftest #1: check if get_user_pages_remote() is available
# return if not available.
# Fall through to conftest #2 if it is present
echo "$CONFTEST_PREAMBLE
#include <linux/mm.h>
void conftest_get_user_pages_remote(void) {
get_user_pages_remote();
}" > conftest$$.c
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
set_get_user_pages_remote_defines ""
rm -f conftest$$.o
return
fi
#
# conftest #2: check if get_user_pages_remote() has write, force
# and vmas arguments. Return if these arguments are present
# Fall through to conftest #3 if these args are absent.
#
echo "$CONFTEST_PREAMBLE
#include <linux/mm.h>
long get_user_pages_remote(struct task_struct *tsk,
struct mm_struct *mm,
unsigned long start,
unsigned long nr_pages,
int write,
int force,
struct page **pages,
struct vm_area_struct **vmas) {
return 0;
}" > conftest$$.c
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
set_get_user_pages_remote_defines "NV_GET_USER_PAGES_REMOTE_HAS_ARGS_TSK_WRITE_FORCE_VMAS"
rm -f conftest$$.o
return
fi
#
# conftest #3: check if get_user_pages_remote() has gpu_flags and
# vmas arguments. Return if these arguments are present
# Fall through to conftest #4 if these args are absent.
#
echo "$CONFTEST_PREAMBLE
#include <linux/mm.h>
long get_user_pages_remote(struct task_struct *tsk,
struct mm_struct *mm,
unsigned long start,
unsigned long nr_pages,
unsigned int gpu_flags,
struct page **pages,
struct vm_area_struct **vmas) {
return 0;
}" > conftest$$.c
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
set_get_user_pages_remote_defines "NV_GET_USER_PAGES_REMOTE_HAS_ARGS_TSK_FLAGS_VMAS"
rm -f conftest$$.o
return
fi
#
# conftest #4: check if get_user_pages_remote() has locked and
# vmas argument
# Return if these arguments are present. Fall through to conftest #5
# if these args are absent.
#
echo "$CONFTEST_PREAMBLE
#include <linux/mm.h>
long get_user_pages_remote(struct task_struct *tsk,
struct mm_struct *mm,
unsigned long start,
unsigned long nr_pages,
unsigned int gup_flags,
struct page **pages,
struct vm_area_struct **vmas,
int *locked) {
return 0;
}" > conftest$$.c
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
set_get_user_pages_remote_defines "NV_GET_USER_PAGES_REMOTE_HAS_ARGS_TSK_FLAGS_LOCKED_VMAS"
rm -f conftest$$.o
return
fi
#
# conftest #5: check if get_user_pages_remote() does not take
# tsk argument.
#
echo "$CONFTEST_PREAMBLE
#include <linux/mm.h>
long get_user_pages_remote(struct mm_struct *mm,
unsigned long start,
unsigned long nr_pages,
unsigned int gup_flags,
struct page **pages,
struct vm_area_struct **vmas,
int *locked) {
return 0;
}" > conftest$$.c
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
set_get_user_pages_remote_defines "NV_GET_USER_PAGES_REMOTE_HAS_ARGS_FLAGS_LOCKED_VMAS"
rm -f conftest$$.o
fi
#
# conftest #6: check if get_user_pages_remote() does not take
# vmas argument.
#
echo "$CONFTEST_PREAMBLE
#include <linux/mm.h>
long get_user_pages_remote(struct mm_struct *mm,
unsigned long start,
unsigned long nr_pages,
unsigned int gup_flags,
struct page **pages,
int *locked) {
return 0;
}" > conftest$$.c
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
set_get_user_pages_remote_defines "NV_GET_USER_PAGES_REMOTE_HAS_ARGS_FLAGS_LOCKED"
rm -f conftest$$.o
fi
;;
pin_user_pages)
#
# Determine if the function pin_user_pages() is present.
# Presence of pin_user_pages() also implies the presence of
# unpin-user_page(). Both were added in the v5.6-rc1
#
# pin_user_pages() was added by commit eddb1c228f7951d399240
# ("mm/gup: introduce pin_user_pages*() and FOLL_PIN") in
# v5.6-rc1 (2020-01-30)
#
# Removed vmas parameter from pin_user_pages() by commit
# 40896a02751("mm/gup: remove vmas parameter from pin_user_pages()")
# in linux-next, expected in v6.5-rc1
set_pin_user_pages_defines () {
if [ "$1" = "" ]; then
echo "#undef NV_PIN_USER_PAGES_PRESENT" | append_conftest "functions"
else
echo "#define NV_PIN_USER_PAGES_PRESENT" | append_conftest "functions"
fi
if [ "$1" = "NV_PIN_USER_PAGES_HAS_ARGS_VMAS" ]; then
echo "#define NV_PIN_USER_PAGES_HAS_ARGS_VMAS" | append_conftest "functions"
else
echo "#undef NV_PIN_USER_PAGES_HAS_ARGS_VMAS" | append_conftest "functions"
fi
}
# conftest #1: check if pin_user_pages() is available
# return if not available.
# Fall through to conftest #2 if it is present
#
echo "$CONFTEST_PREAMBLE
#include <linux/mm.h>
void conftest_pin_user_pages(void) {
pin_user_pages();
}" > conftest$$.c
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
set_pin_user_pages_defines ""
rm -f conftest$$.o
return
fi
# conftest #2: Check if pin_user_pages() has vmas argument
echo "$CONFTEST_PREAMBLE
#include <linux/mm.h>
long pin_user_pages(unsigned long start,
unsigned long nr_pages,
unsigned int gup_flags,
struct page **pages,
struct vm_area_struct **vmas) {
return 0;
}" > conftest$$.c
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
set_pin_user_pages_defines "NV_PIN_USER_PAGES_HAS_ARGS_VMAS"
rm -f conftest$$.o
else
set_pin_user_pages_defines "NV_PIN_USER_PAGES_PRESENT"
fi
;;
pin_user_pages_remote)
# Determine if the function pin_user_pages_remote() is present
#
# pin_user_pages_remote() was added by commit eddb1c228f7951d399240
# ("mm/gup: introduce pin_user_pages*() and FOLL_PIN")
# in v5.6 (2020-01-30)
# pin_user_pages_remote() removed 'tsk' parameter by
# commit 64019a2e467a ("mm/gup: remove task_struct pointer for
# all gup code") in v5.9-rc1 (2020-08-11).
#
# Removed unused vmas parameter from pin_user_pages_remote() by
# commit 83bcc2e132 ("mm/gup: remove unused vmas parameter from
# pin_user_pages_remote()") in linux-next, expected in v6.5-rc1
#
# This function sets the NV_PIN_USER_PAGES_REMOTE_* macros as per
# the below passing conftest's
#
set_pin_user_pages_remote_defines () {
if [ "$1" = "" ]; then
echo "#undef NV_PIN_USER_PAGES_REMOTE_PRESENT" | append_conftest "functions"
else
echo "#define NV_PIN_USER_PAGES_REMOTE_PRESENT" | append_conftest "functions"
fi
if [ "$1" = "NV_PIN_USER_PAGES_REMOTE_HAS_ARGS_TSK_VMAS" ]; then
echo "#define NV_PIN_USER_PAGES_REMOTE_HAS_ARGS_TSK_VMAS" | append_conftest "functions"
else
echo "#undef NV_PIN_USER_PAGES_REMOTE_HAS_ARGS_TSK_VMAS" | append_conftest "functions"
fi
if [ "$1" = "NV_PIN_USER_PAGES_REMOTE_HAS_ARGS_VMAS" ]; then
echo "#define NV_PIN_USER_PAGES_REMOTE_HAS_ARGS_VMAS" | append_conftest "functions"
else
echo "#undef NV_PIN_USER_PAGES_REMOTE_HAS_ARGS_VMAS" | append_conftest "functions"
fi
}
# conftest #1: check if pin_user_pages_remote() is available
# return if not available.
# Fall through to conftest #2 if it is present
#
echo "$CONFTEST_PREAMBLE
#include <linux/mm.h>
void conftest_pin_user_pages_remote(void) {
pin_user_pages_remote();
}" > conftest$$.c
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
set_pin_user_pages_remote_defines ""
rm -f conftest$$.o
return
fi
# conftest #2: Check if pin_user_pages_remote() has tsk and
# vmas argument
# Return if these arguments are present else fall through to
# conftest #3
echo "$CONFTEST_PREAMBLE
#include <linux/mm.h>
long pin_user_pages_remote(struct task_struct *tsk,
struct mm_struct *mm,
unsigned long start,
unsigned long nr_pages,
unsigned int gup_flags,
struct page **pages,
struct vm_area_struct **vmas,
int *locked) {
return 0;
}" > conftest$$.c
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
set_pin_user_pages_remote_defines "NV_PIN_USER_PAGES_REMOTE_HAS_ARGS_TSK_VMAS"
rm -f conftest$$.o
return
fi
# conftest #3: Check if pin_user_pages_remote() has vmas argument
echo "$CONFTEST_PREAMBLE
#include <linux/mm.h>
long pin_user_pages_remote(struct mm_struct *mm,
unsigned long start,
unsigned long nr_pages,
unsigned int gup_flags,
struct page **pages,
struct vm_area_struct **vmas,
int *locked) {
return 0;
}" > conftest$$.c
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
set_pin_user_pages_remote_defines "NV_PIN_USER_PAGES_REMOTE_HAS_ARGS_VMAS"
rm -f conftest$$.o
else
set_pin_user_pages_remote_defines "NV_PIN_USER_PAGES_REMOTE_PRESENT"
fi
;;
vfio_pin_pages_has_vfio_device_arg)
#
# Determine if vfio_pin_pages() kABI accepts "struct vfio_device *"
# argument instead of "struct device *"
#
# Replaced "struct device *" with "struct vfio_device *" by commit
# 8e432bb015b6c ("vfio/mdev: Pass in a struct vfio_device * to
# vfio_pin/unpin_pages()") in v5.19
#
echo "$CONFTEST_PREAMBLE
#include <linux/pci.h>
#include <linux/vfio.h>
int vfio_pin_pages(struct vfio_device *device,
unsigned long *user_pfn,
int npage,
int prot,
unsigned long *phys_pfn) {
return 0;
}" > conftest$$.c
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
echo "#define NV_VFIO_PIN_PAGES_HAS_VFIO_DEVICE_ARG" | append_conftest "functions"
rm -f conftest$$.o
else
echo "#undef NV_VFIO_PIN_PAGES_HAS_VFIO_DEVICE_ARG" | append_conftest "functions"
fi
;;
vfio_pin_pages_has_pages_arg)
#
# Determine if vfio_pin_pages() kABI accepts "struct pages **:
# argument instead of "unsigned long *phys_pfn"
#
# Replaced "unsigned long *phys_pfn" with "struct pages **pages"
# in commit 34a255e676159 ("vfio: Replace phys_pfn with pages for
# vfio_pin_pages()") in v6.0.
#
echo "$CONFTEST_PREAMBLE
#include <linux/pci.h>
#include <linux/vfio.h>
int vfio_pin_pages(struct vfio_device *device,
dma_addr_t iova,
int npage,
int prot,
struct page **pages) {
return 0;
}" > conftest$$.c
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
echo "#define NV_VFIO_PIN_PAGES_HAS_PAGES_ARG" | append_conftest "functions"
rm -f conftest$$.o
else
echo "#undef NV_VFIO_PIN_PAGES_HAS_PAGES_ARG" | append_conftest "functions"
fi
;;
enable_apicv)
#
# Determine if enable_apicv boolean is exported by kernel.
#
# Added by commit fdf513e37a3bd ("KVM: x86: Use common 'enable_apicv'
# variable for both APICv and AVIC")
#
CODE="
$CONFTEST_PREAMBLE
#include <asm/kvm_host.h>
bool is_enable_apicv_present() {
return enable_apicv;
}"
compile_check_conftest "$CODE" "NV_ENABLE_APICV_PRESENT" "" "types"
;;
pci_driver_has_driver_managed_dma)
#
# Determine if "struct pci_driver" has .driver_managed_dma member.
#
# Added by commit 512881eacfa7 ("bus: platform,amba,fsl-mc,PCI:
# Add device DMA ownership management") in v5.19
#
CODE="
#include <linux/pci.h>
int conftest_pci_driver_has_driver_managed_dma(void) {
return offsetof(struct pci_driver, driver_managed_dma);
}"
compile_check_conftest "$CODE" "NV_PCI_DRIVER_HAS_DRIVER_MANAGED_DMA" "" "types"
;;
radix_tree_empty)
#
# Determine if the function radix_tree_empty() is present.
#
# Added by commit e9256efcc8e3 ("radix-tree: introduce
# radix_tree_empty") in v4.7 (2016-05-20)
#
CODE="
#include <linux/radix-tree.h>
int conftest_radix_tree_empty(void) {
radix_tree_empty();
}"
compile_check_conftest "$CODE" "NV_RADIX_TREE_EMPTY_PRESENT" "" "functions"
;;
drm_gem_object_lookup)
#
# Determine the number of arguments of drm_gem_object_lookup().
#
# First argument of type drm_device removed by commit
# a8ad0bd84f98 ("drm: Remove unused drm_device from
# drm_gem_object_lookup()") in v4.7 (2016-05-09)
#
echo "$CONFTEST_PREAMBLE
#if defined(NV_DRM_DRMP_H_PRESENT)
#include <drm/drmP.h>
#endif
#if defined(NV_DRM_DRM_GEM_H_PRESENT)
#include <drm/drm_gem.h>
#endif
void conftest_drm_gem_object_lookup(void) {
drm_gem_object_lookup(NULL, NULL, 0);
}" > conftest$$.c
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
echo "#define NV_DRM_GEM_OBJECT_LOOKUP_ARGUMENT_COUNT 3" | append_conftest "functions"
rm -f conftest$$.o
return
else
echo "#define NV_DRM_GEM_OBJECT_LOOKUP_ARGUMENT_COUNT 2" | append_conftest "functions"
fi
;;
drm_master_drop_has_from_release_arg)
#
# Determine if drm_driver::master_drop() has 'from_release' argument.
#
# Last argument 'bool from_release' has been removed by commit
# d6ed682eba54 ("drm: Refactor drop/set master code a bit")
# in v4.8 (2016-06-21)
#
CODE="
#if defined(NV_DRM_DRMP_H_PRESENT)
#include <drm/drmP.h>
#endif
void conftest_drm_master_drop_has_from_release_arg(struct drm_driver *drv) {
drv->master_drop(NULL, NULL, false);
}"
compile_check_conftest "$CODE" "NV_DRM_MASTER_DROP_HAS_FROM_RELEASE_ARG" "" "types"
;;
drm_master_has_leases)
#
# Determine if drm_master has 'leases', 'lessor', 'lessee_idr' fields.
# Also checks for struct drm_mode_revoke_lease.
#
# Added by commits 2ed077e467ee ("drm: Add drm_object lease infrastructure [v5]")
# and 62884cd386b8 ("drm: Add four ioctls for managing drm mode object leases [v7]")
# in v4.15 (2017-10-24)
#
CODE="
#if defined(NV_DRM_DRMP_H_PRESENT)
#include <drm/drmP.h>
#endif
#if defined(NV_DRM_DRM_AUTH_H_PRESENT)
#include <drm/drm_auth.h>
#endif
#include <uapi/drm/drm_mode.h>
int conftest_drm_master_leases(void) {
return offsetof(struct drm_master, leases);
}
int conftest_drm_master_lessor(void) {
return offsetof(struct drm_master, lessor);
}
int conftest_drm_master_lessee_idr(void) {
return offsetof(struct drm_master, lessee_idr);
}
int conftest_drm_mode_revoke_lease(void) {
return offsetof(struct drm_mode_revoke_lease, lessee_id);
}"
compile_check_conftest "$CODE" "NV_DRM_MASTER_HAS_LEASES" "" "types"
;;
drm_file_get_master)
#
# Determine if function drm_file_get_master() is present.
#
# Added by commit 56f0729a510f ("drm: protect drm_master pointers in drm_lease.c")
# in v5.15 (2021-07-20)
#
CODE="
#if defined(NV_DRM_DRMP_H_PRESENT)
#include <drm/drmP.h>
#endif
#if defined(NV_DRM_DRM_AUTH_H_PRESENT)
#include <drm/drm_auth.h>
#endif
void conftest_drm_file_get_master(void) {
drm_file_get_master();
}"
compile_check_conftest "$CODE" "NV_DRM_FILE_GET_MASTER_PRESENT" "" "functions"
;;
drm_connector_lookup)
#
# Determine if function drm_connector_lookup() is present.
#
# Added by commit b164d31f50b2 ("drm/modes: add connector reference
# counting. (v2)") in v4.7 (2016-05-04), when it replaced
# drm_connector_find().
#
# It was originally added in drm_crtc.h, then moved to
# drm_connector.h by commit 522171951761
# ("drm: Extract drm_connector.[hc]") in v4.9 (2016-08-12)
#
CODE="
#if defined(NV_DRM_DRM_CRTC_H_PRESENT)
#include <drm/drm_crtc.h>
#endif
#if defined(NV_DRM_DRM_CONNECTOR_H_PRESENT)
#include <drm/drm_connector.h>
#endif
void conftest_drm_connector_lookup(void) {
drm_connector_lookup();
}"
compile_check_conftest "$CODE" "NV_DRM_CONNECTOR_LOOKUP_PRESENT" "" "functions"
;;
drm_connector_put)
#
# Determine if function drm_connector_put() is present.
#
# Added by commit ad09360750af ("drm: Introduce
# drm_connector_{get,put}()") in v4.12 (2017-02-28),
# when it replaced drm_connector_unreference() that
# was added with NV_DRM_CONNECTOR_LOOKUP_PRESENT.
#
CODE="
#if defined(NV_DRM_DRM_CONNECTOR_H_PRESENT)
#include <drm/drm_connector.h>
#endif
void conftest_drm_connector_put(void) {
drm_connector_put();
}"
compile_check_conftest "$CODE" "NV_DRM_CONNECTOR_PUT_PRESENT" "" "functions"
;;
drm_modeset_lock_all_end)
#
# Determine the number of arguments of the
# DRM_MODESET_LOCK_ALL_END() macro.
#
# DRM_MODESET_LOCK_ALL_END() is added with two arguments by commit
# b7ea04d299c7 (drm: drm: Add DRM_MODESET_LOCK_BEGIN/END helpers)
# in v5.0 (2018-11-29). The definition and prototype is changed to
# also take the third argument drm_device, by commit 77ef38574beb
# (drm/modeset-lock: Take the modeset BKL for legacy drivers)
# in v5.9 (2020-08-17).
#
DRM_MODESET_3_COMPILED=0
DRM_MODESET_2_COMPILED=0
DRM_MODESET_INCLUDES="
#if defined(NV_DRM_DRM_DEVICE_H_PRESENT)
#include <drm/drm_device.h>
#endif
#if defined(NV_DRM_DRM_DRV_H_PRESENT)
#include <drm/drm_drv.h>
#endif
#if defined(NV_DRM_DRM_MODESET_LOCK_H_PRESENT)
#include <drm/drm_modeset_lock.h>
#endif"
echo "$CONFTEST_PREAMBLE
$DRM_MODESET_INCLUDES
void conftest_drm_modeset_lock_all_end(
struct drm_device *dev,
struct drm_modeset_acquire_ctx ctx,
int ret) {
DRM_MODESET_LOCK_ALL_BEGIN(dev, ctx, 0, ret);
DRM_MODESET_LOCK_ALL_END(dev, ctx, ret);
}" > conftest$$.c
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
DRM_MODESET_3_COMPILED=1
rm -f conftest$$.o
fi
echo "$CONFTEST_PREAMBLE
$DRM_MODESET_INCLUDES
void conftest_drm_modeset_lock_all_end(
struct drm_device *dev,
struct drm_modeset_acquire_ctx ctx,
int ret) {
DRM_MODESET_LOCK_ALL_BEGIN(dev, ctx, 0, ret);
DRM_MODESET_LOCK_ALL_END(ctx, ret);
}" > conftest$$.c
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
DRM_MODESET_2_COMPILED=1
rm -f conftest$$.o
fi
# If the macro is undefined, both code snippets will still compile,
# so we need to check both and make sure only one compiles successfully.
if [ "$DRM_MODESET_3_COMPILED" = "1" ] &&
[ "$DRM_MODESET_2_COMPILED" = "0" ]; then
echo "#define NV_DRM_MODESET_LOCK_ALL_END_ARGUMENT_COUNT 3" | append_conftest "functions"
elif [ "$DRM_MODESET_3_COMPILED" = "0" ] &&
[ "$DRM_MODESET_2_COMPILED" = "1" ]; then
echo "#define NV_DRM_MODESET_LOCK_ALL_END_ARGUMENT_COUNT 2" | append_conftest "functions"
else
echo "#define NV_DRM_MODESET_LOCK_ALL_END_ARGUMENT_COUNT 0" | append_conftest "functions"
fi
;;
drm_atomic_state_ref_counting)
#
# Determine if functions drm_atomic_state_get/put() are
# present.
#
# Added by commit 0853695c3ba4 ("drm: Add reference counting to
# drm_atomic_state") in v4.10 (2016-10-14)
#
CODE="
#if defined(NV_DRM_DRM_ATOMIC_H_PRESENT)
#include <drm/drm_atomic.h>
#endif
void conftest_drm_atomic_state_get(void) {
drm_atomic_state_get();
}"
compile_check_conftest "$CODE" "NV_DRM_ATOMIC_STATE_REF_COUNTING_PRESENT" "" "functions"
;;
vm_ops_fault_removed_vma_arg)
#
# Determine if vma.vm_ops.fault takes (vma, vmf), or just (vmf)
# args. Acronym key:
# vma: struct vm_area_struct
# vm_ops: struct vm_operations_struct
# vmf: struct vm_fault
#
# The redundant vma arg was removed from BOTH vma.vm_ops.fault and
# vma.vm_ops.page_mkwrite by commit 11bac8000449 ("mm, fs: reduce
# fault, page_mkwrite, and pfn_mkwrite to take only vmf") in
# v4.11 (2017-02-24)
#
CODE="
#include <linux/mm.h>
void conftest_vm_ops_fault_removed_vma_arg(void) {
struct vm_operations_struct vm_ops;
struct vm_fault *vmf;
(void)vm_ops.fault(vmf);
}"
compile_check_conftest "$CODE" "NV_VM_OPS_FAULT_REMOVED_VMA_ARG" "" "types"
;;
pnv_npu2_init_context)
#
# Determine if the pnv_npu2_init_context() function is
# present and the signature of its callback.
#
# Added by commit 1ab66d1fbada ("powerpc/powernv: Introduce
# address translation services for Nvlink2") in v4.12
# (2017-04-03).
#
echo "$CONFTEST_PREAMBLE
#if defined(NV_ASM_POWERNV_H_PRESENT)
#include <linux/pci.h>
#include <asm/powernv.h>
#endif
void conftest_pnv_npu2_init_context(void) {
pnv_npu2_init_context();
}" > conftest$$.c
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
echo "#undef NV_PNV_NPU2_INIT_CONTEXT_PRESENT" | append_conftest "functions"
echo "#undef NV_PNV_NPU2_INIT_CONTEXT_CALLBACK_RETURNS_VOID" | append_conftest "functions"
rm -f conftest$$.o
return
fi
echo "#define NV_PNV_NPU2_INIT_CONTEXT_PRESENT" | append_conftest "functions"
# Check the callback signature
echo "$CONFTEST_PREAMBLE
#if defined(NV_ASM_POWERNV_H_PRESENT)
#include <linux/pci.h>
#include <asm/powernv.h>
#endif
struct npu_context *pnv_npu2_init_context(struct pci_dev *gpdev,
unsigned long flags,
void (*cb)(struct npu_context *, void *),
void *priv) {
return NULL;
}" > conftest$$.c
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
echo "#define NV_PNV_NPU2_INIT_CONTEXT_CALLBACK_RETURNS_VOID" | append_conftest "functions"
rm -f conftest$$.o
return
fi
echo "#undef NV_PNV_NPU2_INIT_CONTEXT_CALLBACK_RETURNS_VOID" | append_conftest "functions"
;;
of_get_ibm_chip_id)
#
# Determine if the of_get_ibm_chip_id() function is present.
#
# Added by commit b130e7c04f11 ("powerpc: export
# of_get_ibm_chip_id function") in v4.2 (2015-05-07)
#
CODE="
#include <linux/version.h>
#if defined(NV_ASM_PROM_H_PRESENT)
#include <asm/prom.h>
#endif
void conftest_of_get_ibm_chip_id(void) {
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0)
of_get_ibm_chip_id();
#endif
}"
compile_check_conftest "$CODE" "NV_OF_GET_IBM_CHIP_ID_PRESENT" "" "functions"
;;
drm_driver_unload_has_int_return_type)
#
# Determine if drm_driver::unload() returns integer value
#
# Changed to void by commit 11b3c20bdd15 ("drm: Change the return
# type of the unload hook to void") in v4.11 (2017-01-06)
#
CODE="
#if defined(NV_DRM_DRMP_H_PRESENT)
#include <drm/drmP.h>
#endif
int conftest_drm_driver_unload_has_int_return_type(struct drm_driver *drv) {
return drv->unload(NULL /* dev */);
}"
compile_check_conftest "$CODE" "NV_DRM_DRIVER_UNLOAD_HAS_INT_RETURN_TYPE" "" "types"
;;
is_export_symbol_present_*)
export_symbol_present_conftest $(echo $1 | cut -f5- -d_)
;;
is_export_symbol_gpl_*)
export_symbol_gpl_conftest $(echo $1 | cut -f5- -d_)
;;
drm_atomic_helper_crtc_destroy_state_has_crtc_arg)
#
# Determine if __drm_atomic_helper_crtc_destroy_state() has 'crtc'
# argument.
#
# 'crtc' argument removed by commit ec2dc6a0fe38 ("drm: Drop crtc
# argument from __drm_atomic_helper_crtc_destroy_state") in v4.7
# (2016-05-09)
#
CODE="
#if defined(NV_DRM_DRM_ATOMIC_HELPER_H_PRESENT)
#include <drm/drm_atomic_helper.h>
#endif
void conftest_drm_atomic_helper_crtc_destroy_state_has_crtc_arg(void) {
__drm_atomic_helper_crtc_destroy_state(NULL, NULL);
}"
compile_check_conftest "$CODE" "NV_DRM_ATOMIC_HELPER_CRTC_DESTROY_STATE_HAS_CRTC_ARG" "" "types"
;;
drm_atomic_helper_plane_destroy_state_has_plane_arg)
#
# Determine if __drm_atomic_helper_plane_destroy_state has
# 'plane' argument.
#
# 'plane' argument removed by commit 2f701695fd3a (drm: Drop plane
# argument from __drm_atomic_helper_plane_destroy_state") in v4.7
# (2016-05-09)
#
CODE="
#if defined(NV_DRM_DRM_ATOMIC_HELPER_H_PRESENT)
#include <drm/drm_atomic_helper.h>
#endif
void conftest_drm_atomic_helper_plane_destroy_state_has_plane_arg(void) {
__drm_atomic_helper_plane_destroy_state(NULL, NULL);
}"
compile_check_conftest "$CODE" "NV_DRM_ATOMIC_HELPER_PLANE_DESTROY_STATE_HAS_PLANE_ARG" "" "types"
;;
drm_atomic_helper_connector_dpms)
#
# Determine if the function drm_atomic_helper_connector_dpms() is present.
#
# Removed by commit 7d902c05b480 ("drm: Nuke
# drm_atomic_helper_connector_dpms") in v4.14 (2017-07-25)
#
CODE="
#if defined(NV_DRM_DRM_ATOMIC_HELPER_H_PRESENT)
#include <drm/drm_atomic_helper.h>
#endif
void conftest_drm_atomic_helper_connector_dpms(void) {
drm_atomic_helper_connector_dpms();
}"
compile_check_conftest "$CODE" "NV_DRM_ATOMIC_HELPER_CONNECTOR_DPMS_PRESENT" "" "functions"
;;
get_backlight_device_by_name)
#
# Determine if the get_backlight_device_by_name() function is present
#
CODE="
#include <linux/backlight.h>
int conftest_get_backlight_device_by_name(void) {
return get_backlight_device_by_name();
}"
compile_check_conftest "$CODE" "NV_GET_BACKLIGHT_DEVICE_BY_NAME_PRESENT" "" "functions"
;;
timer_setup)
#
# Determine if the function timer_setup() is present.
#
# Added by commit 686fef928bba ("timer: Prepare to change timer
# callback argument type") in v4.14 (2017-09-28)
#
CODE="
#include <linux/timer.h>
int conftest_timer_setup(void) {
return timer_setup();
}"
compile_check_conftest "$CODE" "NV_TIMER_SETUP_PRESENT" "" "functions"
;;
radix_tree_replace_slot)
#
# Determine if the radix_tree_replace_slot() function is
# present and how many arguments it takes.
#
# root parameter added to radix_tree_replace_slot (but the symbol
# was not exported) by commit 6d75f366b924 ("lib: radix-tree:
# check accounting of existing slot replacement users") in v4.10
# (2016-12-12)
#
# radix_tree_replace_slot symbol export added by commit
# 10257d719686 ("EXPORT_SYMBOL radix_tree_replace_slot") in v4.11
# (2017-01-11)
#
CODE="
#include <linux/radix-tree.h>
#include <linux/version.h>
void conftest_radix_tree_replace_slot(void) {
#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)) || (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0))
radix_tree_replace_slot();
#endif
}"
compile_check_conftest "$CODE" "NV_RADIX_TREE_REPLACE_SLOT_PRESENT" "" "functions"
echo "$CONFTEST_PREAMBLE
#include <linux/radix-tree.h>
void conftest_radix_tree_replace_slot(void) {
radix_tree_replace_slot(NULL, NULL);
}" > conftest$$.c
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
rm -f conftest$$.o
echo "#define NV_RADIX_TREE_REPLACE_SLOT_ARGUMENT_COUNT 2" | append_conftest "functions"
return
fi
echo "$CONFTEST_PREAMBLE
#include <linux/radix-tree.h>
void conftest_radix_tree_replace_slot(void) {
radix_tree_replace_slot(NULL, NULL, NULL);
}" > conftest$$.c
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
rm -f conftest$$.o
echo "#define NV_RADIX_TREE_REPLACE_SLOT_ARGUMENT_COUNT 3" | append_conftest "functions"
return
else
echo "#error radix_tree_replace_slot() conftest failed!" | append_conftest "functions"
fi
;;
cpumask_of_node)
#
# Determine whether cpumask_of_node is available.
#
# ARM support for cpumask_of_node() lagged until commit 1a2db300348b
# ("arm64, numa: Add NUMA support for arm64 platforms.") in v4.7
# (2016-04-08)
#
CODE="
#include <asm/topology.h>
void conftest_cpumask_of_node(void) {
(void)cpumask_of_node();
}"
compile_check_conftest "$CODE" "NV_CPUMASK_OF_NODE_PRESENT" "" "functions"
;;
drm_mode_object_find_has_file_priv_arg)
#
# Determine if drm_mode_object_find() has 'file_priv' arguments.
#
# Updated to take 'file_priv' argument by commit 418da17214ac
# ("drm: Pass struct drm_file * to __drm_mode_object_find [v2]")
# in v4.15 (2017-03-14)
#
CODE="
#include <drm/drm_mode_object.h>
void conftest_drm_mode_object_find_has_file_priv_arg(
struct drm_device *dev,
struct drm_file *file_priv,
uint32_t id,
uint32_t type) {
(void)drm_mode_object_find(dev, file_priv, id, type);
}"
compile_check_conftest "$CODE" "NV_DRM_MODE_OBJECT_FIND_HAS_FILE_PRIV_ARG" | append_conftest "types"
;;
pci_enable_msix_range)
#
# Determine if the pci_enable_msix_range() function is present.
#
# Added by commit 302a2523c277 ("PCI/MSI: Add
# pci_enable_msi_range() and pci_enable_msix_range()") in v3.14
# (2013-12-30)
#
CODE="
#include <linux/pci.h>
void conftest_pci_enable_msix_range(void) {
pci_enable_msix_range();
}"
compile_check_conftest "$CODE" "NV_PCI_ENABLE_MSIX_RANGE_PRESENT" "" "functions"
;;
dma_buf_owner)
#
# Determine if the dma_buf struct has an owner member.
#
# Added by commit 9abdffe286c1 ("dma-buf: add ref counting for
# module as exporter") in v4.2 (2015-05-05)
#
CODE="
#include <linux/dma-buf.h>
int conftest_dma_buf_owner(void) {
return offsetof(struct dma_buf, owner);
}"
compile_check_conftest "$CODE" "NV_DMA_BUF_OWNER_PRESENT" "" "types"
;;
dma_buf_export_args)
#
# Determine argument count for dma_buf_export().
#
# 4 arguments added by commit d15bd7ee445d
# ("dma-buf: Introduce dma buffer sharing mechanism")
# in v3.3 (2011-12-26)
#
# Additional argument added by commit 3aac4502fd3f
# ("dma-buf: use reservation objects") in v3.17 (2014-07-01).
#
# Parameters wrapped in a single struct dma_buf_export_info by commit:
# d8fbe341beb6("dma-buf: cleanup dma_buf_export() to make it easily extensible")
# in v4.1 (2015-01-23).
#
echo "$CONFTEST_PREAMBLE
#include <linux/dma-buf.h>
struct dma_buf* conftest_dma_buf_export(void) {
return dma_buf_export(NULL);
}" > conftest$$.c
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
rm -f conftest$$.o
echo "#define NV_DMA_BUF_EXPORT_ARGUMENT_COUNT 1" | append_conftest "functions"
return
fi
echo "$CONFTEST_PREAMBLE
#include <linux/dma-buf.h>
struct dma_buf* conftest_dma_buf_export(void) {
return dma_buf_export(NULL, NULL, 0, 0);
}" > conftest$$.c
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
rm -f conftest$$.o
echo "#define NV_DMA_BUF_EXPORT_ARGUMENT_COUNT 4" | append_conftest "functions"
return
fi
echo "$CONFTEST_PREAMBLE
#include <linux/dma-buf.h>
struct dma_buf* conftest_dma_buf_export(void) {
return dma_buf_export(NULL, NULL, 0, 0, NULL);
}" > conftest$$.c
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
rm -f conftest$$.o
echo "#define NV_DMA_BUF_EXPORT_ARGUMENT_COUNT 5" | append_conftest "functions"
return
fi
echo "#error dma_buf_export() conftest failed!" | append_conftest "functions"
;;
dma_buf_ops_has_kmap)
#
# Determine if .kmap exists in dma_buf_ops.
# In some kernels, this is a mandatory callback.
#
# Added by commit fc13020e086b
# ("dma-buf: add support for kernel cpu access") in v3.4 (2012-03-20)
#
echo "$CONFTEST_PREAMBLE
#include <linux/dma-buf.h>
int conftest_dma_buf_ops_has_kmap(void) {
return offsetof(struct dma_buf_ops, kmap);
}
int conftest_dma_buf_ops_has_kunmap(void) {
return offsetof(struct dma_buf_ops, kunmap);
}" > conftest$$.c
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
echo "#define NV_DMA_BUF_OPS_HAS_KMAP" | append_conftest "types"
rm -f conftest$$.o
return
else
echo "#undef NV_DMA_BUF_OPS_HAS_KMAP" | append_conftest "types"
return
fi
;;
dma_buf_ops_has_kmap_atomic)
#
# Determine if .kmap_atomic exists in dma_buf_ops.
# In some kernels, this is a mandatory callback.
#
# Added by commit fc13020e086b
# ("dma-buf: add support for kernel cpu access")in v3.4 (2012-03-20)
#
echo "$CONFTEST_PREAMBLE
#include <linux/dma-buf.h>
int conftest_dma_buf_ops_has_kmap_atomic(void) {
return offsetof(struct dma_buf_ops, kmap_atomic);
}
int conftest_dma_buf_ops_has_kunmap_atomic(void) {
return offsetof(struct dma_buf_ops, kunmap_atomic);
}" > conftest$$.c
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
echo "#define NV_DMA_BUF_OPS_HAS_KMAP_ATOMIC" | append_conftest "types"
rm -f conftest$$.o
return
else
echo "#undef NV_DMA_BUF_OPS_HAS_KMAP_ATOMIC" | append_conftest "types"
return
fi
;;
dma_buf_ops_has_map)
#
# Determine if .map exists in dma_buf_ops.
# In some kernels, this is a mandatory callback.
#
# Added by commit f9b67f0014cb
# ("dma-buf: Rename dma-ops to prevent conflict with kunmap_atomic macro")
# in v4.12 (2017-04-19)
#
# Removed as a mandatory callback by commit f82aab2d521e
# ("dma-buf: Remove requirement for ops->map() from dma_buf_export")
# in v4.20 (2018-08-07)
#
# Completely removed from dma-buf by commit 4337ebbbbda3
# ("dma-buf: Remove kernel map/unmap hooks") in v5.6 (2019-11-18)
#
echo "$CONFTEST_PREAMBLE
#include <linux/dma-buf.h>
int conftest_dma_buf_ops_has_map(void) {
return offsetof(struct dma_buf_ops, map);
}
int conftest_dma_buf_ops_has_unmap(void) {
return offsetof(struct dma_buf_ops, unmap);
}" > conftest$$.c
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
echo "#define NV_DMA_BUF_OPS_HAS_MAP" | append_conftest "types"
rm -f conftest$$.o
return
else
echo "#undef NV_DMA_BUF_OPS_HAS_MAP" | append_conftest "types"
return
fi
;;
dma_buf_ops_has_map_atomic)
#
# Determine if map_atomic/unmap_atomic exists in dma_buf_ops.
# In some kernels, this is a mandatory callback.
#
# Added by commit f9b67f0014cb
# ("dma-buf: Rename dma-ops to prevent conflict with kunmap_atomic macro")
# in v4.12 (2017-04-19)
#
# Removed by commit f664a5269542
# ("dma-buf: remove kmap_atomic interface") in v4.19 (2018-05-28)
#
echo "$CONFTEST_PREAMBLE
#include <linux/dma-buf.h>
int conftest_dma_buf_ops_has_map_atomic(void) {
return offsetof(struct dma_buf_ops, map_atomic);
}
int conftest_dma_buf_ops_has_unmap_atomic(void) {
return offsetof(struct dma_buf_ops, unmap_atomic);
}" > conftest$$.c
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
echo "#define NV_DMA_BUF_OPS_HAS_MAP_ATOMIC" | append_conftest "types"
rm -f conftest$$.o
return
else
echo "#undef NV_DMA_BUF_OPS_HAS_MAP_ATOMIC" | append_conftest "types"
return
fi
;;
dma_buf_has_dynamic_attachment)
#
# Determine if the function dma_buf_attachment_is_dynamic()
# is present.
#
# Added by commit: 15fd552d186c
# ("dma-buf: change DMA-buf locking convention v3") in v5.5 (2018-07-03)
#
echo "$CONFTEST_PREAMBLE
#include <linux/dma-buf.h>
bool conftest_dma_buf_attachment_is_dynamic(void) {
return dma_buf_attachment_is_dynamic(NULL);
}" > conftest$$.c
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
echo "#define NV_DMA_BUF_HAS_DYNAMIC_ATTACHMENT" | append_conftest "functions"
rm -f conftest$$.o
return
else
echo "#undef NV_DMA_BUF_HAS_DYNAMIC_ATTACHMENT" | append_conftest "functions"
return
fi
;;
dma_buf_attachment_has_peer2peer)
#
# Determine if peer2peer is present in struct dma_buf_attachment.
# peer2peer being true indicates that a dma-buf importer is able
# to handle peer resources not backed by struct page.
#
# Added by commit: 09606b5446c2
# ("dma-buf: add peer2peer flag") in v5.8 (2018-03-22)
#
echo "$CONFTEST_PREAMBLE
#include <linux/dma-buf.h>
int conftest_dma_buf_peer2peer(void) {
return offsetof(struct dma_buf_attachment, peer2peer);
}" > conftest$$.c
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
echo "#define NV_DMA_BUF_ATTACHMENT_HAS_PEER2PEER" | append_conftest "types"
rm -f conftest$$.o
return
else
echo "#undef NV_DMA_BUF_ATTACHMENT_HAS_PEER2PEER" | append_conftest "types"
return
fi
;;
drm_connector_funcs_have_mode_in_name)
#
# Determine if _mode_ is present in connector function names. We
# only test drm_mode_connector_attach_encoder() and assume the
# other functions are changed in sync.
#
# drm_mode_connector_attach_encoder() was renamed to
# drm_connector_attach_encoder() by commit cde4c44d8769 ("drm:
# drop _mode_ from drm_mode_connector_attach_encoder") in v4.19
# (2018-07-09)
#
# drm_mode_connector_update_edid_property() was renamed by commit
# c555f02371c3 ("drm: drop _mode_ from update_edit_property()")
# in v4.19 (2018-07-09).
#
# The other DRM functions were renamed by commit 97e14fbeb53f
# ("drm: drop _mode_ from remaining connector functions") in v4.19
# (2018-07-09)
#
# Note that drm_connector.h by introduced by commit 522171951761
# ("drm: Extract drm_connector.[hc]") in v4.9 (2016-08-12)
#
# Note: up to 4.9 function was provided by drm_crtc.h by commit
# f453ba046074 in 2.6.29 (2008-12-29)
#
CODE="
#if defined(NV_DRM_DRM_CONNECTOR_H_PRESENT)
#include <drm/drm_connector.h>
#endif
#if defined(NV_DRM_DRM_CRTC_H_PRESENT)
#include <drm/drm_crtc.h>
#endif
void conftest_drm_connector_funcs_have_mode_in_name(void) {
drm_mode_connector_attach_encoder();
}"
compile_check_conftest "$CODE" "NV_DRM_CONNECTOR_FUNCS_HAVE_MODE_IN_NAME" "" "functions"
;;
drm_connector_has_vrr_capable_property)
#
# Determine if drm_connector_attach_vrr_capable_property and
# drm_connector_set_vrr_capable_property is present
#
# Added by commit ba1b0f6c73d4ea1390f0d5381f715ffa20c75f09 ("drm:
# Add vrr_capable property to the drm connector") in v5.0-rc1
# (2018-11-28)
#
CODE="
#if defined(NV_DRM_DRM_CONNECTOR_H_PRESENT)
#include <drm/drm_connector.h>
#endif
void conftest_drm_connector_has_vrr_capable_property(void) {
drm_connector_attach_vrr_capable_property();
}"
compile_check_conftest "$CODE" "NV_DRM_CONNECTOR_HAS_VRR_CAPABLE_PROPERTY" "" "functions"
;;
vm_fault_t)
#
# Determine if vm_fault_t is present
#
# Added by commit 1c8f422059ae5da07db7406ab916203f9417e396 ("mm:
# change return type to vm_fault_t") in v4.17 (2018-04-05)
#
CODE="
#include <linux/mm.h>
vm_fault_t conftest_vm_fault_t;
"
compile_check_conftest "$CODE" "NV_VM_FAULT_T_IS_PRESENT" "" "types"
;;
vmf_insert_pfn)
#
# Determine if the function vmf_insert_pfn() is
# present.
#
# Added by commit 1c8f422059ae5da07db7406ab916203f9417e396 ("mm:
# change return type to vm_fault_t") in v4.17 (2018-04-05)
#
CODE="
#include <linux/mm.h>
void conftest_vmf_insert_pfn(void) {
vmf_insert_pfn();
}"
compile_check_conftest "$CODE" "NV_VMF_INSERT_PFN_PRESENT" "" "functions"
;;
drm_framebuffer_get)
#
# Determine if the function drm_framebuffer_get() is present.
#
# Added by commit a4a69da06bc1 ("drm: Introduce
# drm_framebuffer_{get,put}()") in v4.12 (2017-02-28).
#
CODE="
#if defined(NV_DRM_DRMP_H_PRESENT)
#include <drm/drmP.h>
#endif
#if defined(NV_DRM_DRM_FRAMEBUFFER_H_PRESENT)
#include <drm/drm_framebuffer.h>
#endif
void conftest_drm_framebuffer_get(void) {
drm_framebuffer_get();
}"
compile_check_conftest "$CODE" "NV_DRM_FRAMEBUFFER_GET_PRESENT" "" "functions"
;;
drm_gem_object_get)
#
# Determine if the function drm_gem_object_get() is present.
#
# Added by commit e6b62714e87c ("drm: Introduce
# drm_gem_object_{get,put}()") in v4.12 (2017-02-28).
#
CODE="
#if defined(NV_DRM_DRMP_H_PRESENT)
#include <drm/drmP.h>
#endif
#if defined(NV_DRM_DRM_GEM_H_PRESENT)
#include <drm/drm_gem.h>
#endif
void conftest_drm_gem_object_get(void) {
drm_gem_object_get();
}"
compile_check_conftest "$CODE" "NV_DRM_GEM_OBJECT_GET_PRESENT" "" "functions"
;;
drm_dev_put)
#
# Determine if the function drm_dev_put() is present.
#
# Added by commit 9a96f55034e4 ("drm: introduce drm_dev_{get/put}
# functions") in v4.15 (2017-09-26).
#
CODE="
#if defined(NV_DRM_DRMP_H_PRESENT)
#include <drm/drmP.h>
#endif
#if defined(NV_DRM_DRM_DRV_H_PRESENT)
#include <drm/drm_drv.h>
#endif
void conftest_drm_dev_put(void) {
drm_dev_put();
}"
compile_check_conftest "$CODE" "NV_DRM_DEV_PUT_PRESENT" "" "functions"
;;
drm_connector_list_iter)
#
# Determine if the drm_connector_list_iter struct is present.
#
# Added by commit 613051dac40da1751ab269572766d3348d45a197 ("drm:
# locking&new iterators for connector_list") in v4.11 (2016-12-14).
#
CODE="
#include <drm/drm_connector.h>
int conftest_drm_connector_list_iter(void) {
struct drm_connector_list_iter conn_iter;
}"
compile_check_conftest "$CODE" "NV_DRM_CONNECTOR_LIST_ITER_PRESENT" "" "types"
#
# Determine if the function drm_connector_list_iter_get() is
# renamed to drm_connector_list_iter_begin().
#
# Renamed by b982dab1e66d2b998e80a97acb6eaf56518988d3 (drm: Rename
# connector list iterator API) in v4.12 (2017-02-28).
#
CODE="
#if defined(NV_DRM_DRM_CONNECTOR_H_PRESENT)
#include <drm/drm_connector.h>
#endif
void conftest_drm_connector_list_iter_begin(void) {
drm_connector_list_iter_begin();
}"
compile_check_conftest "$CODE" "NV_DRM_CONNECTOR_LIST_ITER_BEGIN_PRESENT" "" "functions"
;;
drm_atomic_helper_swap_state_has_stall_arg)
#
# Determine if drm_atomic_helper_swap_state() has 'stall' argument.
#
# drm_atomic_helper_swap_state() function prototype updated to take
# 'state' and 'stall' arguments by commit
# 5e84c2690b805caeff3b4c6c9564c7b8de54742d (drm/atomic-helper:
# Massage swap_state signature somewhat)
# in v4.8 (2016-06-10).
#
CODE="
#include <drm/drm_atomic_helper.h>
void conftest_drm_atomic_helper_swap_state_has_stall_arg(
struct drm_atomic_state *state,
bool stall) {
(void)drm_atomic_helper_swap_state(state, stall);
}"
compile_check_conftest "$CODE" "NV_DRM_ATOMIC_HELPER_SWAP_STATE_HAS_STALL_ARG" | append_conftest "types"
#
# Determine if drm_atomic_helper_swap_state() returns int.
#
# drm_atomic_helper_swap_state() function prototype
# updated to return int by commit
# c066d2310ae9bbc695c06e9237f6ea741ec35e43 (drm/atomic: Change
# drm_atomic_helper_swap_state to return an error.) in v4.14
# (2017-07-11).
#
CODE="
#include <drm/drm_atomic_helper.h>
int conftest_drm_atomic_helper_swap_state_return_int(
struct drm_atomic_state *state,
bool stall) {
return drm_atomic_helper_swap_state(state, stall);
}"
compile_check_conftest "$CODE" "NV_DRM_ATOMIC_HELPER_SWAP_STATE_RETURN_INT" | append_conftest "types"
;;
pm_runtime_available)
#
# Determine if struct dev_pm_info has the 'usage_count' field.
#
# This was added to the kernel in commit 5e928f77a09a0 in v2.6.32
# (2008-08-18), but originally were dependent on CONFIG_PM_RUNTIME,
# which was folded into the more generic CONFIG_PM in commit
# d30d819dc8310 in v3.19 (2014-11-27).
# Rather than attempt to select the appropriate CONFIG option,
# simply check if this member is present.
#
CODE="
#include <linux/pm.h>
void pm_runtime_conftest(void) {
struct dev_pm_info dpmi;
atomic_set(&dpmi.usage_count, 1);
}"
compile_check_conftest "$CODE" "NV_PM_RUNTIME_AVAILABLE" "" "generic"
;;
dma_direct_map_resource)
#
# Determine whether dma_is_direct() exists.
#
# dma_is_direct() was added by commit 356da6d0cde3 ("dma-mapping:
# bypass indirect calls for dma-direct") in 5.1 (2018-12-06).
#
# If dma_is_direct() does exist, then we assume that
# dma_direct_map_resource() exists. Both functions were added
# as part of the same patchset.
#
# The presence of dma_is_direct() and dma_direct_map_resource()
# means that dma_direct can perform DMA mappings itself.
#
CODE="
#include <linux/dma-mapping.h>
void conftest_dma_is_direct(void) {
dma_is_direct();
}"
compile_check_conftest "$CODE" "NV_DMA_IS_DIRECT_PRESENT" "" "functions"
;;
tegra_get_platform)
#
# Determine if tegra_get_platform() function is present
#
CODE="
#if defined NV_SOC_TEGRA_CHIP_ID_H_PRESENT
#include <soc/tegra/chip-id.h>
#elif defined(NV_SOC_TEGRA_FUSE_H_PRESENT)
#include <soc/tegra/fuse.h>
#endif
void conftest_tegra_get_platform(void) {
tegra_get_platform(0);
}
"
compile_check_conftest "$CODE" "NV_TEGRA_GET_PLATFORM_PRESENT" "" "functions"
;;
tegra_bpmp_send_receive)
#
# Determine if tegra_bpmp_send_receive() function is present
#
CODE="
#if defined NV_SOC_TEGRA_TEGRA_BPMP_H_PRESENT
#include <soc/tegra/tegra_bpmp.h>
#endif
int conftest_tegra_bpmp_send_receive(
int mrq,
void *ob_data,
int ob_sz,
void *ib_data,
int ib_sz) {
return tegra_bpmp_send_receive(mrq, ob_data, ob_sz, ib_data, ib_sz);
}
"
compile_check_conftest "$CODE" "NV_TEGRA_BPMP_SEND_RECEIVE" "" "functions"
;;
cmd_uphy_display_port_init)
#
# Determine if CMD_UPHY_DISPLAY_PORT_INIT enum present in bpmp-abi header
# This enum is used only in Tegra down-stream kernel.
#
CODE="
#include <stdint.h>
#include <soc/tegra/bpmp-abi.h>
int conftest_cmd_uphy_display_port_init(void) {
return CMD_UPHY_DISPLAY_PORT_INIT;
}
"
compile_check_conftest "$CODE" "NV_CMD_UPHY_DISPLAY_PORT_INIT_PRESENT" "" "generic"
;;
cmd_uphy_display_port_off)
#
# Determine if CMD_UPHY_DISPLAY_PORT_OFF enum present in bpmp-abi header
# This enum is used only in Tegra down-stream kernel.
#
CODE="
#include <stdint.h>
#include <soc/tegra/bpmp-abi.h>
int conftest_cmd_uphy_display_port_off(void) {
return CMD_UPHY_DISPLAY_PORT_OFF;
}
"
compile_check_conftest "$CODE" "NV_CMD_UPHY_DISPLAY_PORT_OFF_PRESENT" "" "generic"
;;
drm_alpha_blending_available)
#
# Determine if the DRM subsystem supports alpha blending
#
# This conftest using "generic" rather than "functions" because
# with the logic of "functions" the presence of
# *either*_alpha_property or _blend_mode_property would be enough
# to cause NV_DRM_ALPHA_BLENDING_AVAILABLE to be defined.
#
CODE="
#if defined(NV_DRM_DRM_BLEND_H_PRESENT)
#include <drm/drm_blend.h>
#endif
void conftest_drm_alpha_blending_available(void) {
/* 2018-04-11 ae0e28265e216dad11d4cbde42fc15e92919af78 */
(void)drm_plane_create_alpha_property;
/* 2018-08-23 a5ec8332d4280500544e316f76c04a7adc02ce03 */
(void)drm_plane_create_blend_mode_property;
}"
compile_check_conftest "$CODE" "NV_DRM_ALPHA_BLENDING_AVAILABLE" "" "generic"
;;
drm_rotation_available)
#
# Determine if the DRM subsystem supports rotation.
#
# drm_plane_create_rotation_property() was added on 2016-09-26 by
# d138dd3c0c70979215f3184cf36f95875e37932e (drm: Add support for
# optional per-plane rotation property) in linux kernel. Presence
# of it is sufficient to say that DRM subsystem support rotation.
#
CODE="
#if defined(NV_DRM_DRM_BLEND_H_PRESENT)
#include <drm/drm_blend.h>
#endif
void conftest_drm_rotation_available(void) {
drm_plane_create_rotation_property();
}"
compile_check_conftest "$CODE" "NV_DRM_ROTATION_AVAILABLE" "" "functions"
;;
drm_driver_prime_flag_present)
#
# Determine whether driver feature flag DRIVER_PRIME is present.
#
# The DRIVER_PRIME flag was added by commit 3248877ea179 (drm:
# base prime/dma-buf support (v5)) in v3.4 (2011-11-25) and is
# removed by commit 0424fdaf883a (drm/prime: Actually remove
# DRIVER_PRIME everywhere) on 2019-06-17.
#
# DRIVER_PRIME definition moved from drmP.h to drm_drv.h by
# commit 85e634bce01a (drm: Extract drm_drv.h) in v4.10
# (2016-11-14).
#
# DRIVER_PRIME define is changed to enum value by commit
# 0e2a933b02c9 (drm: Switch DRIVER_ flags to an enum) in v5.1
# (2019-01-29).
#
CODE="
#if defined(NV_DRM_DRMP_H_PRESENT)
#include <drm/drmP.h>
#endif
#if defined(NV_DRM_DRM_DRV_H_PRESENT)
#include <drm/drm_drv.h>
#endif
unsigned int drm_driver_prime_flag_present_conftest(void) {
return DRIVER_PRIME;
}"
compile_check_conftest "$CODE" "NV_DRM_DRIVER_PRIME_FLAG_PRESENT" "" "types"
;;
drm_connector_for_each_possible_encoder)
#
# Determine the number of arguments of the
# drm_connector_for_each_possible_encoder() macro.
#
# drm_connector_for_each_possible_encoder() is added by commit
# 83aefbb887b5 (drm: Add drm_connector_for_each_possible_encoder())
# in v4.19. The definition and prorotype is changed to take only
# two arguments connector and encoder, by commit 62afb4ad425a
# (drm/connector: Allow max possible encoders to attach to a
# connector) in v5.5rc1.
#
echo "$CONFTEST_PREAMBLE
#if defined(NV_DRM_DRMP_H_PRESENT)
#include <drm/drmP.h>
#endif
#if defined(NV_DRM_DRM_CONNECTOR_H_PRESENT)
#include <drm/drm_connector.h>
#endif
void conftest_drm_connector_for_each_possible_encoder(
struct drm_connector *connector,
struct drm_encoder *encoder,
int i) {
drm_connector_for_each_possible_encoder(connector, encoder, i) {
}
}" > conftest$$.c
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
echo "#define NV_DRM_CONNECTOR_FOR_EACH_POSSIBLE_ENCODER_ARGUMENT_COUNT 3" | append_conftest "functions"
rm -f conftest$$.o
return
else
echo "#define NV_DRM_CONNECTOR_FOR_EACH_POSSIBLE_ENCODER_ARGUMENT_COUNT 2" | append_conftest "functions"
fi
;;
mmu_notifier_ops_invalidate_range)
#
# Determine if the mmu_notifier_ops struct has the
# 'invalidate_range' member.
#
# struct mmu_notifier_ops.invalidate_range was added by commit
# 0f0a327fa12cd55de5e7f8c05a70ac3d047f405e ("mmu_notifier: add the
# callback for mmu_notifier_invalidate_range()") in v3.19
# (2014-11-13).
CODE="
#include <linux/mmu_notifier.h>
int conftest_mmu_notifier_ops_invalidate_range(void) {
return offsetof(struct mmu_notifier_ops, invalidate_range);
}"
compile_check_conftest "$CODE" "NV_MMU_NOTIFIER_OPS_HAS_INVALIDATE_RANGE" "" "types"
;;
drm_format_num_planes)
#
# Determine if drm_format_num_planes() function is present.
#
# The drm_format_num_planes() function was added by commit
# d0d110e09629 drm: Add drm_format_num_planes() utility function in
# v3.3 (2011-12-20). Prototype was moved from drm_crtc.h to
# drm_fourcc.h by commit ae4df11a0f53 (drm: Move format-related
# helpers to drm_fourcc.c) in v4.8 (2016-06-09).
# drm_format_num_planes() has been removed by commit 05c452c115bf
# (drm: Remove users of drm_format_num_planes) removed v5.3
# (2019-05-16).
#
CODE="
#if defined(NV_DRM_DRM_CRTC_H_PRESENT)
#include <drm/drm_crtc.h>
#endif
#if defined(NV_DRM_DRM_FOURCC_H_PRESENT)
#include <drm/drm_fourcc.h>
#endif
void conftest_drm_format_num_planes(void) {
drm_format_num_planes();
}
"
compile_check_conftest "$CODE" "NV_DRM_FORMAT_NUM_PLANES_PRESENT" "" "functions"
;;
drm_gem_object_has_resv)
#
# Determine if the 'drm_gem_object' structure has a 'resv' field.
#
# A 'resv' filed in the 'drm_gem_object' structure, is added by
# commit 1ba627148ef5 (drm: Add reservation_object to
# drm_gem_object) in v5.2.
#
CODE="$CONFTEST_PREAMBLE
#if defined(NV_DRM_DRM_GEM_H_PRESENT)
#include <drm/drm_gem.h>
#endif
int conftest_drm_gem_object_has_resv(void) {
return offsetof(struct drm_gem_object, resv);
}"
compile_check_conftest "$CODE" "NV_DRM_GEM_OBJECT_HAS_RESV" "" "types"
;;
proc_ops)
#
# Determine if the 'struct proc_ops' type is present.
#
# Added by commit d56c0d45f0e2 ("proc: decouple proc from VFS with
# "struct proc_ops"") in 5.6-rc1
#
CODE="
#include <linux/proc_fs.h>
struct proc_ops p_ops;
"
compile_check_conftest "$CODE" "NV_PROC_OPS_PRESENT" "" "types"
;;
drm_crtc_state_has_async_flip)
#
# Determine if the 'drm_crtc_state' structure has a 'async_flip'
# field.
#
# Commit 4d85f45c73a2 (drm/atomic: Rename crtc_state->pageflip_flags
# to async_flip) replaced 'pageflip_flags' by 'async_flip' in v5.4.
#
CODE="
#if defined(NV_DRM_DRM_CRTC_H_PRESENT)
#include <drm/drm_crtc.h>
#endif
int conftest_drm_crtc_state_has_async_flip(void) {
return offsetof(struct drm_crtc_state, async_flip);
}"
compile_check_conftest "$CODE" "NV_DRM_CRTC_STATE_HAS_ASYNC_FLIP" "" "types"
;;
drm_crtc_state_has_pageflip_flags)
#
# Determine if the 'drm_crtc_state' structure has a
# 'pageflip_flags' field.
#
# 'pageflip_flags' added by commit 6cbe5c466d73 (drm/atomic: Save
# flip flags in drm_crtc_state) in v4.12. Commit 4d85f45c73a2
# (drm/atomic: Rename crtc_state->pageflip_flags to async_flip)
# replaced 'pageflip_flags' by 'async_flip' in v5.4.
#
CODE="
#if defined(NV_DRM_DRM_CRTC_H_PRESENT)
#include <drm/drm_crtc.h>
#endif
int conftest_drm_crtc_state_has_pageflip_flags(void) {
return offsetof(struct drm_crtc_state, pageflip_flags);
}"
compile_check_conftest "$CODE" "NV_DRM_CRTC_STATE_HAS_PAGEFLIP_FLAGS" "" "types"
;;
drm_crtc_state_has_vrr_enabled)
#
# Determine if 'drm_crtc_state' structure has a
# 'vrr_enabled' field.
#
# Added by commit 1398958cfd8d331342d657d37151791dd7256b40 ("drm:
# Add vrr_enabled property to drm CRTC") in v5.0-rc1 (2018-11-28)
#
CODE="
#if defined(NV_DRM_DRM_CRTC_H_PRESENT)
#include <drm/drm_crtc.h>
#endif
int conftest_drm_crtc_state_has_vrr_enabled(void) {
return offsetof(struct drm_crtc_state, vrr_enabled);
}"
compile_check_conftest "$CODE" "NV_DRM_CRTC_STATE_HAS_VRR_ENABLED" "" "types"
;;
ktime_get_raw_ts64)
#
# Determine if ktime_get_raw_ts64() is present
#
# Added by commit fb7fcc96a86cf ("timekeeping: Standardize on
# ktime_get_*() naming") in 4.18 (2018-04-27)
#
CODE="
#include <linux/ktime.h>
void conftest_ktime_get_raw_ts64(void){
ktime_get_raw_ts64();
}"
compile_check_conftest "$CODE" "NV_KTIME_GET_RAW_TS64_PRESENT" "" "functions"
;;
ktime_get_real_ts64)
#
# Determine if ktime_get_real_ts64() is present
#
# Added by commit d6d29896c665d ("timekeeping: Provide timespec64
# based interfaces") in 3.17 (2014-07-16)
#
CODE="
#include <linux/ktime.h>
void conftest_ktime_get_real_ts64(void){
ktime_get_real_ts64();
}"
compile_check_conftest "$CODE" "NV_KTIME_GET_REAL_TS64_PRESENT" "" "functions"
;;
drm_format_modifiers_present)
#
# Determine whether the base DRM format modifier support is present.
#
# This will show up in a few places:
#
# -Definition of the format modifier constructor macro, which
# we can use to reconstruct our bleeding-edge format modifiers
# when the local kernel headers don't include them.
#
# -The first set of format modifier vendor macros, including the
# poorly named "NV" vendor, which was later renamed "NVIDIA".
#
# -the "modifier[]" member of the AddFB2 ioctl's parameter
# structure.
#
# All these were added by commit e3eb3250d84e (drm: add support for
# tiled/compressed/etc modifier in addfb2) in 4.1-rc1 (2015-02-05).
CODE="
#include <drm/drm_mode.h>
#include <drm/drm_fourcc.h>
int conftest_fourcc_fb_modifiers(void) {
u64 my_fake_mod = fourcc_mod_code(INTEL, 0);
(void)my_fake_mod;
return offsetof(struct drm_mode_fb_cmd2, modifier);
}"
compile_check_conftest "$CODE" "NV_DRM_FORMAT_MODIFIERS_PRESENT" "" "types"
;;
timespec64)
#
# Determine if struct timespec64 is present
# Added by commit 361a3bf00582 ("time64: Add time64.h header and
# define struct timespec64") in 3.17 (2014-07-16)
#
CODE="
#include <linux/time.h>
struct timespec64 ts64;
"
compile_check_conftest "$CODE" "NV_TIMESPEC64_PRESENT" "" "types"
;;
vmalloc_has_pgprot_t_arg)
#
# Determine if __vmalloc has the 'pgprot' argument.
#
# The third argument to __vmalloc, page protection
# 'pgprot_t prot', was removed by commit 88dca4ca5a93
# (mm: remove the pgprot argument to __vmalloc)
# in v5.8-rc1 (2020-06-01).
CODE="
#include <linux/vmalloc.h>
void conftest_vmalloc_has_pgprot_t_arg(void) {
pgprot_t prot;
(void)__vmalloc(0, 0, prot);
}"
compile_check_conftest "$CODE" "NV_VMALLOC_HAS_PGPROT_T_ARG" "" "types"
;;
mm_has_mmap_lock)
#
# Determine if the 'mm_struct' structure has a 'mmap_lock' field.
#
# Kernel commit da1c55f1b272 ("mmap locking API: rename mmap_sem
# to mmap_lock") replaced the field 'mmap_sem' by 'mmap_lock'
# in v5.8-rc1 (2020-06-08).
CODE="
#include <linux/mm_types.h>
int conftest_mm_has_mmap_lock(void) {
return offsetof(struct mm_struct, mmap_lock);
}"
compile_check_conftest "$CODE" "NV_MM_HAS_MMAP_LOCK" "" "types"
;;
full_name_hash)
#
# Determine how many arguments full_name_hash takes.
#
# Changed by commit 8387ff2577e ("vfs: make the string hashes salt
# the hash") in v4.8 (2016-06-10)
#
echo "$CONFTEST_PREAMBLE
#include <linux/stringhash.h>
void conftest_full_name_hash(void) {
full_name_hash(NULL, NULL, 0);
}" > conftest$$.c
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
rm -f conftest$$.o
echo "#define NV_FULL_NAME_HASH_ARGUMENT_COUNT 3" | append_conftest "functions"
else
echo "#define NV_FULL_NAME_HASH_ARGUMENT_COUNT 2" | append_conftest "functions"
fi
;;
drm_vma_offset_exact_lookup_locked)
#
# Determine if the drm_vma_offset_exact_lookup_locked() function
# is present.
#
# Added by commit 2225cfe46bcc ("drm/gem: Use kref_get_unless_zero
# for the weak mmap references") in v4.4
#
CODE="
#include <drm/drm_vma_manager.h>
void conftest_drm_vma_offset_exact_lookup_locked(void) {
drm_vma_offset_exact_lookup_locked();
}"
compile_check_conftest "$CODE" "NV_DRM_VMA_OFFSET_EXACT_LOOKUP_LOCKED_PRESENT" "" "functions"
;;
drm_vma_node_is_allowed_has_tag_arg)
#
# Determine if drm_vma_node_is_allowed() has 'tag' arguments of
# 'struct drm_file *' type.
#
# Updated to take 'tag' argument by commit d9a1f0b4eb60 ("drm: use
# drm_file to tag vm-bos") in v4.9
#
CODE="
#include <drm/drm_vma_manager.h>
bool drm_vma_node_is_allowed(struct drm_vma_offset_node *node,
struct drm_file *tag) {
return true;
}"
compile_check_conftest "$CODE" "NV_DRM_VMA_NODE_IS_ALLOWED_HAS_TAG_ARG" | append_conftest "types"
;;
drm_vma_offset_node_has_readonly)
#
# Determine if the 'drm_vma_offset_node' structure has a 'readonly'
# field.
#
# Added by commit 3e977ac6179b ("drm/i915: Prevent writing into a
# read-only object via a GGTT mmap") in v4.19.
#
CODE="
#include <drm/drm_vma_manager.h>
int conftest_drm_vma_offset_node_has_readonly(void) {
return offsetof(struct drm_vma_offset_node, readonly);
}"
compile_check_conftest "$CODE" "NV_DRM_VMA_OFFSET_NODE_HAS_READONLY" "" "types"
;;
pci_enable_atomic_ops_to_root)
# pci_enable_atomic_ops_to_root was added by
# commit 430a23689dea ("PCI: Add pci_enable_atomic_ops_to_root()")
# in v4.16-rc1 (2018-01-05)
#
CODE="
#include <linux/pci.h>
void conftest_pci_enable_atomic_ops_to_root(void) {
pci_enable_atomic_ops_to_root();
}"
compile_check_conftest "$CODE" "NV_PCI_ENABLE_ATOMIC_OPS_TO_ROOT_PRESENT" "" "functions"
;;
kvmalloc)
#
# Determine if kvmalloc() is present
#
# Added by commit a7c3e901a46ff54c016d040847eda598a9e3e653 ("mm:
# introduce kv[mz]alloc helpers") in v4.12 (2017-05-08).
#
CODE="
#include <linux/mm.h>
void conftest_kvmalloc(void){
kvmalloc();
}"
compile_check_conftest "$CODE" "NV_KVMALLOC_PRESENT" "" "functions"
;;
drm_gem_object_put_unlocked)
#
# Determine if the function drm_gem_object_put_unlocked() is present.
#
# In v5.9-rc1, commit 2f4dd13d4bb8 ("drm/gem: add
# drm_gem_object_put helper") removes drm_gem_object_put_unlocked()
# function and replace its definition by transient macro. Commit
# ab15d56e27be ("drm: remove transient
# drm_gem_object_put_unlocked()") finally removes
# drm_gem_object_put_unlocked() macro.
#
CODE="
#if defined(NV_DRM_DRMP_H_PRESENT)
#include <drm/drmP.h>
#endif
#if defined(NV_DRM_DRM_GEM_H_PRESENT)
#include <drm/drm_gem.h>
#endif
void conftest_drm_gem_object_put_unlocked(void) {
drm_gem_object_put_unlocked();
}"
compile_check_conftest "$CODE" "NV_DRM_GEM_OBJECT_PUT_UNLOCK_PRESENT" "" "functions"
;;
drm_display_mode_has_vrefresh)
#
# Determine if the 'drm_display_mode' structure has a 'vrefresh'
# field.
#
# Removed by commit 0425662fdf05 ("drm: Nuke mode->vrefresh") in
# v5.9-rc1.
#
CODE="
#include <drm/drm_modes.h>
int conftest_drm_display_mode_has_vrefresh(void) {
return offsetof(struct drm_display_mode, vrefresh);
}"
compile_check_conftest "$CODE" "NV_DRM_DISPLAY_MODE_HAS_VREFRESH" "types"
;;
drm_driver_master_set_has_int_return_type)
#
# Determine if drm_driver::master_set() returns integer value
#
# Changed to void by commit 907f53200f98 ("drm: vmwgfx: remove
# drm_driver::master_set() return type") in v5.9-rc1.
#
CODE="
#if defined(NV_DRM_DRMP_H_PRESENT)
#include <drm/drmP.h>
#endif
#if defined(NV_DRM_DRM_DRV_H_PRESENT)
#include <drm/drm_drv.h>
#endif
int conftest_drm_driver_master_set_has_int_return_type(struct drm_driver *drv,
struct drm_device *dev, struct drm_file *file_priv, bool from_open) {
return drv->master_set(dev, file_priv, from_open);
}"
compile_check_conftest "$CODE" "NV_DRM_DRIVER_SET_MASTER_HAS_INT_RETURN_TYPE" "" "types"
;;
drm_driver_has_gem_free_object)
#
# Determine if the 'drm_driver' structure has a 'gem_free_object'
# function pointer.
#
# drm_driver::gem_free_object is removed by commit 1a9458aeb8eb
# ("drm: remove drm_driver::gem_free_object") in v5.9-rc1.
#
CODE="
#if defined(NV_DRM_DRMP_H_PRESENT)
#include <drm/drmP.h>
#endif
#if defined(NV_DRM_DRM_DRV_H_PRESENT)
#include <drm/drm_drv.h>
#endif
int conftest_drm_driver_has_gem_free_object(void) {
return offsetof(struct drm_driver, gem_free_object);
}"
compile_check_conftest "$CODE" "NV_DRM_DRIVER_HAS_GEM_FREE_OBJECT" "" "types"
;;
vga_tryget)
#
# Determine if vga_tryget() is present
#
# vga_tryget() was removed by commit f369bc3f9096 ("vgaarb: mark
# vga_tryget static") in v5.9-rc1 (2020-08-01).
#
CODE="
#include <linux/vgaarb.h>
void conftest_vga_tryget(void) {
vga_tryget();
}"
compile_check_conftest "$CODE" "NV_VGA_TRYGET_PRESENT" "" "functions"
;;
pci_channel_state)
#
# Determine if pci_channel_state enum type is present.
#
# pci_channel_state was removed by commit 16d79cd4e23b ("PCI: Use
# 'pci_channel_state_t' instead of 'enum pci_channel_state'") in
# v5.9-rc1 (2020-07-02).
#
CODE="
#include <linux/pci.h>
enum pci_channel_state state;
"
compile_check_conftest "$CODE" "NV_PCI_CHANNEL_STATE_PRESENT" "" "types"
;;
cc_platform_has)
#
# Determine if 'cc_platform_has()' is present.
#
# Added by commit aa5a461171f9 ("x86/sev: Add an x86 version of
# cc_platform_has()") in v5.15.3 (2021-10-04)
CODE="
#if defined(NV_LINUX_CC_PLATFORM_H_PRESENT)
#include <linux/cc_platform.h>
#endif
void conftest_cc_platfrom_has(void) {
cc_platform_has();
}"
compile_check_conftest "$CODE" "NV_CC_PLATFORM_PRESENT" "" "functions"
;;
drm_prime_pages_to_sg_has_drm_device_arg)
#
# Determine if drm_prime_pages_to_sg() has 'dev' argument.
#
# drm_prime_pages_to_sg() is updated to take 'dev' argument by commit
# 707d561f77b5 ("drm: allow limiting the scatter list size.").
#
CODE="
#if defined(NV_DRM_DRMP_H_PRESENT)
#include <drm/drmP.h>
#endif
#if defined(NV_DRM_DRM_PRIME_H_PRESENT)
#include <drm/drm_prime.h>
#endif
struct sg_table *drm_prime_pages_to_sg(struct drm_device *dev,
struct page **pages,
unsigned int nr_pages) {
return 0;
}"
compile_check_conftest "$CODE" "NV_DRM_PRIME_PAGES_TO_SG_HAS_DRM_DEVICE_ARG" "" "types"
;;
drm_driver_has_gem_prime_callbacks)
#
# Determine if drm_driver structure has the GEM and PRIME callback
# function pointers.
#
# The GEM and PRIME callback are removed from drm_driver
# structure, by commit d693def4fd1c ("drm: Remove obsolete GEM and
# PRIME callbacks from struct drm_driver").
#
CODE="
#if defined(NV_DRM_DRMP_H_PRESENT)
#include <drm/drmP.h>
#endif
#if defined(NV_DRM_DRM_DRV_H_PRESENT)
#include <drm/drm_drv.h>
#endif
void conftest_drm_driver_has_gem_and_prime_callbacks(void) {
struct drm_driver drv;
drv.gem_prime_pin = 0;
drv.gem_prime_get_sg_table = 0;
drv.gem_prime_vmap = 0;
drv.gem_prime_vunmap = 0;
drv.gem_vm_ops = 0;
}"
compile_check_conftest "$CODE" "NV_DRM_DRIVER_HAS_GEM_PRIME_CALLBACKS" "" "types"
;;
drm_crtc_atomic_check_has_atomic_state_arg)
#
# Determine if drm_crtc_helper_funcs::atomic_check takes 'state'
# argument of 'struct drm_atomic_state' type.
#
# The commit 29b77ad7b9ca ("drm/atomic: Pass the full state to CRTC
# atomic_check") passed the full atomic state to
# drm_crtc_helper_funcs::atomic_check()
#
# To test the signature of drm_crtc_helper_funcs::atomic_check(),
# declare a function prototype with typeof ::atomic_check(), and then
# define the corresponding function implementation with the expected
# signature. Successful compilation indicates that ::atomic_check()
# has the expected signature.
#
echo "$CONFTEST_PREAMBLE
#include <drm/drm_modeset_helper_vtables.h>
static const struct drm_crtc_helper_funcs *funcs;
typeof(*funcs->atomic_check) conftest_drm_crtc_atomic_check_has_atomic_state_arg;
int conftest_drm_crtc_atomic_check_has_atomic_state_arg(
struct drm_crtc *crtc, struct drm_atomic_state *state) {
return 0;
}" > conftest$$.c
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
rm -f conftest$$.o
echo "#define NV_DRM_CRTC_ATOMIC_CHECK_HAS_ATOMIC_STATE_ARG" | append_conftest "types"
else
echo "#undef NV_DRM_CRTC_ATOMIC_CHECK_HAS_ATOMIC_STATE_ARG" | append_conftest "types"
fi
;;
drm_gem_object_vmap_has_map_arg)
#
# Determine if drm_gem_object_funcs::vmap takes 'map'
# argument of 'struct dma_buf_map' type.
#
# The commit 49a3f51dfeee ("drm/gem: Use struct dma_buf_map in GEM
# vmap ops and convert GEM backends") update
# drm_gem_object_funcs::vmap to take 'map' argument.
#
CODE="
#include <drm/drm_gem.h>
int conftest_drm_gem_object_vmap_has_map_arg(
struct drm_gem_object *obj, struct dma_buf_map *map) {
return obj->funcs->vmap(obj, map);
}"
compile_check_conftest "$CODE" "NV_DRM_GEM_OBJECT_VMAP_HAS_MAP_ARG" "" "types"
;;
seq_read_iter)
#
# Determine if seq_read_iter() is present
#
# seq_read_iter() was added by commit d4d50710a8b4 ("seq_file:
# add seq_read_iter") in v5.10-rc1 (2020-11-04).
#
CODE="
#include <linux/seq_file.h>
void conftest_seq_read_iter(void) {
seq_read_iter();
}"
compile_check_conftest "$CODE" "NV_SEQ_READ_ITER_PRESENT" "" "functions"
;;
pci_class_multimedia_hd_audio)
#
# Determine if 'PCI_CLASS_MULTIMEDIA_HD_AUDIO' macro is present
# in <linux/pci_ids.h>.
#
# The commit 07f4f97d7b4b ("vga_switcheroo: Use device link for HDA
# controller") has moved 'PCI_CLASS_MULTIMEDIA_HD_AUDIO' macro from
# <sound/hdaudio.h> to <linux/pci_ids.h> in v4.17-rc1 (2018-03-03).
#
CODE="
#include <linux/pci_ids.h>
unsigned int conftest_pci_class_multimedia_hd_audio(void) {
return PCI_CLASS_MULTIMEDIA_HD_AUDIO;
}"
compile_check_conftest "$CODE" "NV_PCI_CLASS_MULTIMEDIA_HD_AUDIO_PRESENT" "" "generic"
;;
follow_pfn)
#
# Determine if follow_pfn() is present.
#
# follow_pfn() was added by commit 3b6748e2dd69
# ("mm: introduce follow_pfn()") in v2.6.31-rc1, and removed
# by commit 233eb0bf3b94 ("mm: remove follow_pfn")
# from linux-next 233eb0bf3b94.
#
CODE="
#include <linux/mm.h>
void conftest_follow_pfn(void) {
follow_pfn();
}"
compile_check_conftest "$CODE" "NV_FOLLOW_PFN_PRESENT" "" "functions"
;;
drm_plane_atomic_check_has_atomic_state_arg)
#
# Determine if drm_plane_helper_funcs::atomic_check takes 'state'
# argument of 'struct drm_atomic_state' type.
#
# The commit 7c11b99a8e58 ("drm/atomic: Pass the full state to
# planes atomic_check") passed the full atomic state to
# drm_plane_helper_funcs::atomic_check()
#
# To test the signature of drm_plane_helper_funcs::atomic_check(),
# declare a function prototype with typeof ::atomic_check(), and then
# define the corresponding function implementation with the expected
# signature. Successful compilation indicates that ::atomic_check()
# has the expected signature.
#
echo "$CONFTEST_PREAMBLE
#include <drm/drm_modeset_helper_vtables.h>
static const struct drm_plane_helper_funcs *funcs;
typeof(*funcs->atomic_check) conftest_drm_plane_atomic_check_has_atomic_state_arg;
int conftest_drm_plane_atomic_check_has_atomic_state_arg(
struct drm_plane *plane, struct drm_atomic_state *state) {
return 0;
}" > conftest$$.c
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
rm -f conftest$$.o
echo "#define NV_DRM_PLANE_ATOMIC_CHECK_HAS_ATOMIC_STATE_ARG" | append_conftest "types"
else
echo "#undef NV_DRM_PLANE_ATOMIC_CHECK_HAS_ATOMIC_STATE_ARG" | append_conftest "types"
fi
;;
ib_peer_memory_symbols)
#
# Determine if the following symbols exist in Module.symvers:
# 1. ib_register_peer_memory_client
# 2. ib_unregister_peer_memory_client
# The conftest first checks in the kernel's own Module.symvers in
# the regular path. If the symbols are not found there, it's possible
# that MOFED is installed and check for these symbols in MOFED's
# Module.symvers whose path is different from the kernel's symvers.
#
# Note: KERNELRELEASE and ARCH are defined by Kbuild and automatically
# passed down to conftest.sh as env vars.
MLNX_OFED_KERNEL_DIR=/usr/src/ofa_kernel
VAR_DKMS_SOURCES_DIR=$(test -d /var/lib/dkms/mlnx-ofed-kernel &&
ls -d /var/lib/dkms/mlnx-ofed-kernel/*/build 2>/dev/null)
if check_for_ib_peer_memory_symbols "$OUTPUT" || \
check_for_ib_peer_memory_symbols "$MLNX_OFED_KERNEL_DIR/$ARCH/$KERNELRELEASE" || \
check_for_ib_peer_memory_symbols "$MLNX_OFED_KERNEL_DIR/$KERNELRELEASE" || \
check_for_ib_peer_memory_symbols "$MLNX_OFED_KERNEL_DIR/default" || \
check_for_ib_peer_memory_symbols "$VAR_DKMS_SOURCES_DIR"; then
echo "#define NV_MLNX_IB_PEER_MEM_SYMBOLS_PRESENT" | append_conftest "symbols"
else
echo "#undef NV_MLNX_IB_PEER_MEM_SYMBOLS_PRESENT" | append_conftest "symbols"
fi
;;
add_memory_driver_managed)
#
# Determine if the add_memory_driver_managed function is present
#
# Added by commit 7b7b27214bba ("mm/memory_hotplug: introduce
# add_memory_driver_managed()") in v5.8-rc1 (2020-06-05)
#
CODE="
#include <linux/memory_hotplug.h>
void conftest_add_memory_driver_managed() {
add_memory_driver_managed();
}"
compile_check_conftest "$CODE" "NV_ADD_MEMORY_DRIVER_MANAGED_PRESENT" "" "functions"
;;
add_memory_driver_managed_has_mhp_flags_arg)
#
# Check if add_memory_driver_managed() has mhp_flags arg.
#
# Added by commit b6117199787c ("mm/memory_hotplug: prepare passing flags to
# add_memory() and friends") in v5.10-rc1 (2020-10-16)
#
CODE="
#include <linux/memory_hotplug.h>
int add_memory_driver_managed(int nid, u64 start, u64 size,
const char *resource_name,
mhp_t mhp_flags) {
return 0;
}"
compile_check_conftest "$CODE" "NV_ADD_MEMORY_DRIVER_MANAGED_HAS_MHP_FLAGS_ARG" "" "types"
;;
remove_memory_has_nid_arg)
#
# Check if remove_memory() has nid parameter.
#
# Removed by commit e1c158e4956612e7 ("mm/memory_hotplug: remove nid
# parameter from remove_memory() and friends") in v5.15-rc1 (2021-09-09)
#
CODE="
#include <linux/memory_hotplug.h>
int remove_memory(int nid, u64 start, u64 size) {
return 0;
}"
compile_check_conftest "$CODE" "NV_REMOVE_MEMORY_HAS_NID_ARG" "" "types"
;;
offline_and_remove_memory)
#
# Determine if the offline_and_remove_memory function is present.
#
# Added by commit 08b3acd7a68fc179 ("mm/memory_hotplug: Introduce
# offline_and_remove_memory()") in v5.8-rc1 (2020-06-05)
#
CODE="
#include <linux/memory_hotplug.h>
void conftest_offline_and_remove_memory() {
offline_and_remove_memory();
}"
compile_check_conftest "$CODE" "NV_OFFLINE_AND_REMOVE_MEMORY_PRESENT" "" "functions"
;;
device_property_read_u64)
#
# Determine if the device_property_read_u64 function is present
#
# Added by commit b31384fa5de37a1 ("Driver core: Unified device
# properties interface for platform firmware") in v3.19-rc1 (2014-11-05)
#
CODE="
#include <linux/acpi.h>
void conftest_device_property_read_u64() {
device_property_read_u64();
}"
compile_check_conftest "$CODE" "NV_DEVICE_PROPERTY_READ_U64_PRESENT" "" "functions"
;;
of_property_count_elems_of_size)
#
# Determine if of_property_count_elems_of_size is present
#
# Added by commit 1df09bcof (" Move OF property and graph API from
# base.c to property.c"
#
# Test if linux/of.h header file inclusion is successful or not,
# depending on that check, for of_property_count_elems_of_size
# presence
#
echo "$CONFTEST_PREAMBLE
#include <linux/of.h>
" > conftest$$.c
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
rm -f conftest$$.o
CODE="
#include <linux/of.h>
void conftest_of_property_count_elems_of_size() {
of_property_count_elems_of_size();
}"
compile_check_conftest "$CODE" "NV_OF_PROPERTY_COUNT_ELEMS_OF_SIZE_PRESENT" "" "functions"
else
echo "#undef NV_OF_PROPERTY_COUNT_ELEMS_OF_SIZE_PRESENT" | append_conftest "functions"
fi
;;
of_property_for_each_u32_has_internal_args)
#
# Determine if the internal arguments for the macro
# of_property_for_each_u32() are present.
#
# Commit 9722c3b66e21 ("of: remove internal arguments from
# of_property_for_each_u32()") removes two arguments from
# of_property_for_each_u32() which are used internally within
# the macro and so do not need to be passed. This change was
# made for Linux v6.11.
#
CODE="
#include <linux/of.h>
void conftest_of_property_for_each_u32(struct device_node *np,
char *propname) {
struct property *iparam1;
const __be32 *iparam2;
u32 val;
of_property_for_each_u32(np, propname, iparam1, iparam2, val);
}"
compile_check_conftest "$CODE" "NV_OF_PROPERTY_FOR_EACH_U32_HAS_INTERNAL_ARGS" "" "types"
;;
of_property_read_variable_u8_array)
#
# Determine if of_property_read_variable_u8_array is present
#
# Added by commit 1df09bcof (" Move OF property and graph API from
# base.c to property.c"
#
# Test if linux/of.h header file inclusion is successful or not,
# depending on that, check for of_property_read_variable_u8_array
# presence
#
echo "$CONFTEST_PREAMBLE
#include <linux/of.h>
" > conftest$$.c
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
rm -f conftest$$.o
CODE="
#include <linux/of.h>
void conftest_of_property_read_variable_u8_array() {
of_property_read_variable_u8_array();
}"
compile_check_conftest "$CODE" "NV_OF_PROPERTY_READ_VARIABLE_U8_ARRAY_PRESENT" "" "functions"
else
echo "#undef NV_OF_PROPERTY_READ_VARIABLE_U8_ARRAY_PRESENT" | append_conftest "functions"
fi
;;
of_property_read_variable_u32_array)
#
# Determine if of_property_read_variable_u32_array is present
#
# Added by commit 1df09bcof (" Move OF property and graph API from
# base.c to property.c"
#
# Test if linux/of.h header file inclusion is successful or not,
# depending on that, check for of_property_read_variable_u32_array
# presence
#
echo "$CONFTEST_PREAMBLE
#include <linux/of.h>
" > conftest$$.c
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
rm -f conftest$$.o
CODE="
#include <linux/of.h>
void conftest_of_property_read_variable_u32_array() {
of_property_read_variable_u32_array();
}"
compile_check_conftest "$CODE" "NV_OF_PROPERTY_READ_VARIABLE_U32_ARRAY_PRESENT" "" "functions"
else
echo "#undef NV_OF_PROPERTY_READ_VARIABLE_U32_ARRAY_PRESENT" | append_conftest "functions"
fi
;;
devm_of_platform_populate)
#
# Determine if devm_of_platform_populate() function is present
#
# Added by commit 38b0b21of (add devm_ functions for populate and
# depopulate")
#
CODE="
#if defined(NV_LINUX_OF_PLATFORM_H_PRESENT)
#include <linux/of_platform.h>
#endif
void conftest_devm_of_platform_populate(void)
{
devm_of_platform_populate(NULL, NULL);
}
"
compile_check_conftest "$CODE" "NV_DEVM_OF_PLATFORM_POPULATE_PRESENT" "" "functions"
;;
of_dma_configure)
#
# Determine if of_dma_configure() function is present
#
# Added by commit 591c1eeof ("configure the platform device
# dma parameters")
#
CODE="
#if defined(NV_LINUX_OF_DEVICE_H_PRESENT)
#include <linux/of_device.h>
#endif
void conftest_of_dma_configure(void)
{
of_dma_configure();
}
"
compile_check_conftest "$CODE" "NV_OF_DMA_CONFIGURE_PRESENT" "" "functions"
;;
icc_get)
#
# Determine if icc_get() function is present
#
# Added by commit 11f1cec ("interconnect: Add generic on-chip
# interconnect API")
#
CODE="
#if defined(NV_LINUX_INTERCONNECT_H_PRESENT)
#include <linux/interconnect.h>
#endif
void conftest_icc_get(void)
{
icc_get();
}
"
compile_check_conftest "$CODE" "NV_ICC_GET_PRESENT" "" "functions"
;;
devm_of_icc_get)
#
# Determine if devm_of_icc_get() function is present
#
# Added by commit e145d9a ("interconnect: Add devm_of_icc_get() as
# exported API for user interconnect API")
#
CODE="
#if defined(NV_LINUX_INTERCONNECT_H_PRESENT)
#include <linux/interconnect.h>
#endif
void conftest_devm_of_icc_get(void)
{
devm_of_icc_get();
}
"
compile_check_conftest "$CODE" "NV_DEVM_ICC_GET_PRESENT" "" "functions"
;;
icc_set_bw)
#
# Determine if icc_set_bw() function is present
#
# Added by commit 11f1cec ("interconnect: Add generic on-chip
# interconnect API")
#
CODE="
#if defined(NV_LINUX_INTERCONNECT_H_PRESENT)
#include <linux/interconnect.h>
#endif
void conftest_icc_set_bw(void)
{
icc_set_bw();
}
"
compile_check_conftest "$CODE" "NV_ICC_SET_BW_PRESENT" "" "functions"
;;
icc_put)
#
# Determine if icc_put() function is present
#
# Added by commit 11f1cec ("interconnect: Add generic on-chip
# interconnect API")
#
CODE="
#if defined(NV_LINUX_INTERCONNECT_H_PRESENT)
#include <linux/interconnect.h>
#endif
void conftest_icc_put(void)
{
icc_put();
}
"
compile_check_conftest "$CODE" "NV_ICC_PUT_PRESENT" "" "functions"
;;
i2c_new_client_device)
#
# Determine if i2c_new_client_device() function is present
#
# Added by commit 390fd04i2c ("remove deprecated i2c_new_device API")
#
CODE="
#include <linux/i2c.h>
void conftest_i2c_new_client_device(void)
{
i2c_new_client_device();
}
"
compile_check_conftest "$CODE" "NV_I2C_NEW_CLIENT_DEVICE_PRESENT" "" "functions"
;;
i2c_unregister_device)
#
# Determine if i2c_unregister_device() function is present
#
# Added by commit 9c1600ei2c ("Add i2c_board_info and i2c_new_device()")
#
CODE="
#include <linux/i2c.h>
void conftest_i2c_unregister_device(void)
{
i2c_unregister_device();
}
"
compile_check_conftest "$CODE" "NV_I2C_UNREGISTER_DEVICE_PRESENT" "" "functions"
;;
of_get_named_gpio)
#
# Determine if of_get_named_gpio() function is present
#
# Added by commit a6b0919 ("of/gpio: Add new method for getting gpios
# under different property names")
#
CODE="
#if defined(NV_LINUX_OF_GPIO_H_PRESENT)
#include <linux/of_gpio.h>
#endif
void conftest_of_get_named_gpio(void)
{
of_get_named_gpio();
}
"
compile_check_conftest "$CODE" "NV_OF_GET_NAME_GPIO_PRESENT" "" "functions"
;;
devm_gpio_request_one)
#
# Determine if devm_gpio_request_one() function is present
#
# Added by commit 09d71ff (gpiolib: Implement devm_gpio_request_one()")
#
CODE="
#if defined(NV_LINUX_GPIO_H_PRESENT)
#include <linux/gpio.h>
#endif
void conftest_devm_gpio_request_one(void)
{
devm_gpio_request_one();
}
"
compile_check_conftest "$CODE" "NV_DEVM_GPIO_REQUEST_ONE_PRESENT" "" "functions"
;;
gpio_direction_input)
#
# Determine if gpio_direction_input() function is present
#
# Added by commit c7caf86 (gpio: remove gpio_ensure_requested()")
#
CODE="
#if defined(NV_LINUX_GPIO_H_PRESENT)
#include <linux/gpio.h>
#endif
void conftest_gpio_direction_input(void)
{
gpio_direction_input();
}
"
compile_check_conftest "$CODE" "NV_GPIO_DIRECTION_INPUT_PRESENT" "" "functions"
;;
gpio_direction_output)
#
# Determine if gpio_direction_output() function is present
#
# Added by commit c7caf86 (gpio: remove gpio_ensure_requested()")
#
CODE="
#if defined(NV_LINUX_GPIO_H_PRESENT)
#include <linux/gpio.h>
#endif
void conftest_gpio_direction_output(void)
{
gpio_direction_output();
}
"
compile_check_conftest "$CODE" "NV_GPIO_DIRECTION_OUTPUT_PRESENT" "" "functions"
;;
gpio_get_value)
#
# Determine if gpio_get_value() function is present
#
# Added by commit 7563bbf ("gpiolib/arches: Centralise bolierplate
# asm/gpio.h")
#
CODE="
#if defined(NV_LINUX_GPIO_H_PRESENT)
#include <linux/gpio.h>
#endif
void conftest_gpio_get_value(void)
{
gpio_get_value();
}
"
compile_check_conftest "$CODE" "NV_GPIO_GET_VALUE_PRESENT" "" "functions"
;;
gpio_set_value)
#
# Determine if gpio_set_value() function is present
#
# Added by commit 7563bbf ("gpiolib/arches: Centralise bolierplate
# asm/gpio.h")
#
CODE="
#if defined(NV_LINUX_GPIO_H_PRESENT)
#include <linux/gpio.h>
#endif
void conftest_gpio_set_value(void)
{
gpio_set_value();
}
"
compile_check_conftest "$CODE" "NV_GPIO_SET_VALUE_PRESENT" "" "functions"
;;
gpio_to_irq)
#
# Determine if gpio_to_irq() function is present
#
# Added by commit 7563bbf ("gpiolib/arches: Centralise bolierplate
# asm/gpio.h")
#
CODE="
#if defined(NV_LINUX_GPIO_H_PRESENT)
#include <linux/gpio.h>
#endif
void conftest_gpio_to_irq(void)
{
gpio_to_irq();
}
"
compile_check_conftest "$CODE" "NV_GPIO_TO_IRQ_PRESENT" "" "functions"
;;
migrate_vma_setup)
#
# Determine if migrate_vma_setup() function is present
#
# migrate_vma_setup() function was added by commit
# a7d1f22bb74f32cf3cd93f52776007e161f1a738 ("mm: turn migrate_vma
# upside down) in v5.4.
# (2019-08-20).
CODE="
#include <linux/migrate.h>
int conftest_migrate_vma_setup(void) {
migrate_vma_setup();
}"
compile_check_conftest "$CODE" "NV_MIGRATE_VMA_SETUP_PRESENT" "" "functions"
;;
migrate_vma_added_flags)
#
# Determine if migrate_vma structure has flags
#
# flags were added to struct migrate_vma by commit
# 5143192cd410c4fc83be09a2e73423765aee072b ("mm/migrate: add a flags
# parameter to_migrate_vma) in v5.9.
# (2020-07-28).
CODE="
#include <linux/migrate.h>
int conftest_migrate_vma_added_flags(void) {
return offsetof(struct migrate_vma, flags);
}"
compile_check_conftest "$CODE" "NV_MIGRATE_VMA_FLAGS_PRESENT" "" "types"
;;
drm_device_has_pdev)
#
# Determine if the 'drm_device' structure has a 'pdev' field.
#
# Removed by commit b347e04452ff ("drm: Remove pdev field from
# struct drm_device") in v5.14-rc1.
#
CODE="
#if defined(NV_DRM_DRMP_H_PRESENT)
#include <drm/drmP.h>
#endif
#if defined(NV_DRM_DRM_DEVICE_H_PRESENT)
#include <drm/drm_device.h>
#endif
int conftest_drm_device_has_pdev(void) {
return offsetof(struct drm_device, pdev);
}"
compile_check_conftest "$CODE" "NV_DRM_DEVICE_HAS_PDEV" "" "types"
;;
make_device_exclusive_range)
#
# Determine if the make_device_exclusive_range() function is present
#
# make_device_exclusive_range() function was added by commit
# b756a3b5e7ead ("mm: device exclusive memory access") in v5.14
# (2021-06-30).
CODE="
#include <linux/rmap.h>
int conftest_make_device_exclusive_range(void) {
make_device_exclusive_range();
}"
compile_check_conftest "$CODE" "NV_MAKE_DEVICE_EXCLUSIVE_RANGE_PRESENT" "" "functions"
;;
migrate_device_range)
#
# Determine if the migrate_device_range() function is present
#
# migrate_device_range() function was added by commit
# e778406b40dbb ("mm/migrate_device.c: add migrate_device_range()")
# in v6.1 (2022-09-28).
CODE="
#include <linux/migrate.h>
int conftest_migrate_device_range(void) {
migrate_device_range();
}"
compile_check_conftest "$CODE" "NV_MIGRATE_DEVICE_RANGE_PRESENT" "" "functions"
;;
ioasid_get)
#
# Determine if ioasid_get() function is present
#
# ioasid_get() function was added by commit
# cb4789b0d19ff231ce9f73376a023341300aed96 (iommu/ioasid: Add ioasidreferences) in v5.11.
# (2020-11-23).
CODE="
#if defined(NV_LINUX_IOASID_H_PRESENT)
#include <linux/ioasid.h>
#endif
void conftest_ioasid_get(void) {
ioasid_get();
}"
compile_check_conftest "$CODE" "NV_IOASID_GET_PRESENT" "" "functions"
;;
mm_pasid_set)
#
# Determine if mm_pasid_set() function is present
#
# mm_pasid_set() function was added by commit
# 701fac40384f07197b106136012804c3cae0b3de (iommu/sva: Assign a
# PASID to mm on PASID allocation and free it on mm exit) in v5.18.
# (2022-02-15).
CODE="
#if defined(NV_LINUX_SCHED_MM_H_PRESENT)
#include <linux/sched/mm.h>
#endif
void conftest_mm_pasid_set(void) {
mm_pasid_set();
}"
compile_check_conftest "$CODE" "NV_MM_PASID_SET_PRESENT" "" "functions"
;;
drm_mode_config_has_allow_fb_modifiers)
#
# Determine if the 'drm_mode_config' structure has
# an 'allow_fb_modifiers' field.
#
# an 'allow_fb_modifiers' field in the 'drm_mode_config' structure,
# is added by commit e3eb3250d84e ("drm: add support for
# tiled/compressed/etc modifier in addfb2") in v4.1, and removed by
# commit 3d082157a242 ("drm: remove allow_fb_modifiers") in v5.18-rc1.
#
# The 'struct drm_mode_config' definition, is moved to
# drm_mode_config.h file by commit 28575f165d36 ("drm: Extract
# drm_mode_config.[hc]") in v4.10.
#
CODE="$CONFTEST_PREAMBLE
#if defined(NV_DRM_DRM_MODE_CONFIG_H_PRESENT)
#include <drm/drm_mode_config.h>
#else
#include <drm/drm_crtc.h>
#endif
int conftest_drm_mode_config_has_allow_fb_modifiers(void) {
return offsetof(struct drm_mode_config, allow_fb_modifiers);
}"
compile_check_conftest "$CODE" "NV_DRM_MODE_CONFIG_HAS_ALLOW_FB_MODIFIERS" "" "types"
;;
dma_set_mask_and_coherent)
#
# Determine if dma_set_mask_and_coherent function is present.
# Added by commit 4aa806b771d1 ("DMA-API: provide a helper to set both DMA
# and coherent DMA masks") in v3.13 (2013-06-26).
#
CODE="
#include <linux/dma-mapping.h>
void conftest_dma_set_mask_and_coherent(void) {
dma_set_mask_and_coherent();
}"
compile_check_conftest "$CODE" "NV_DMA_SET_MASK_AND_COHERENT_PRESENT" "" "functions"
;;
drm_has_hdr_output_metadata)
#
# Determine if drm_mode.h has 'hdr_output_metadata' structure.
#
# struct hdr_output_metadata was added by commit fbb5d0353c62d
# ("drm: Add HDR source metadata property") in 5.1.0-rc5
# (2019-05-16)
#
CODE="
#include <drm/drm_mode.h>
void conftest_drm_has_hdr_output_metadata(void) {
struct hdr_output_metadata foo;
(void)foo;
}"
compile_check_conftest "$CODE" "NV_DRM_HAS_HDR_OUTPUT_METADATA" "" "types"
;;
uts_release)
#
# print the kernel's UTS_RELEASE string.
#
echo "#include <generated/utsrelease.h>
UTS_RELEASE" > conftest$$.c
$CC $CFLAGS -E -P conftest$$.c
rm -f conftest$$.c
;;
platform_irq_count)
#
# Determine if the platform_irq_count() function is present
#
# platform_irq_count was added by commit
# 4b83555d5098e73cf2c5ca7f86c17ca0ba3b968e ("driver-core: platform: Add platform_irq_count()")
# in 4.5-rc1 (2016-01-07)
#
CODE="
#include <linux/platform_device.h>
int conftest_platform_irq_count(void) {
return platform_irq_count();
}"
compile_check_conftest "$CODE" "NV_PLATFORM_IRQ_COUNT_PRESENT" "" "functions"
;;
devm_clk_bulk_get_all)
#
# Determine if devm_clk_bulk_get_all() function is present
#
# Added by commit f08c2e286 ("clk: add managed version of clk_bulk_get_all")
#
CODE="
#if defined(NV_LINUX_CLK_H_PRESENT)
#include <linux/clk.h>
#endif
void conftest_devm_clk_bulk_get_all(void)
{
devm_clk_bulk_get_all();
}
"
compile_check_conftest "$CODE" "NV_DEVM_CLK_BULK_GET_ALL_PRESENT" "" "functions"
;;
mmget_not_zero)
#
# Determine if mmget_not_zero() function is present
#
# mmget_not_zero() function was added by commit
# d2005e3f41d4f9299e2df6a967c8beb5086967a9 ("userfaultfd: don't pin
# the user memory in userfaultfd_file_create()") in v4.7
# (2016-05-20) in linux/sched.h but then moved to linux/sched/mm.h
# by commit 68e21be2916b359fd8afb536c1911dc014cfd03e
# ("sched/headers: Move task->mm handling methods to
# <linux/sched/mm.h>") in v4.11 (2017-02-01).
CODE="
#if defined(NV_LINUX_SCHED_MM_H_PRESENT)
#include <linux/sched/mm.h>
#elif defined(NV_LINUX_SCHED_H_PRESENT)
#include <linux/sched.h>
#endif
void conftest_mmget_not_zero(void) {
mmget_not_zero();
}"
compile_check_conftest "$CODE" "NV_MMGET_NOT_ZERO_PRESENT" "" "functions"
;;
mmgrab)
#
# Determine if mmgrab() function is present
#
# mmgrab() function was added by commit
# f1f1007644ffc8051a4c11427d58b1967ae7b75a ("mm: add new
# mmgrab() helper") in v4.11 (2017-02-01). See comment for
# mmget_not_zero for a description of how the headers have
# changed.
CODE="
#if defined(NV_LINUX_SCHED_MM_H_PRESENT)
#include <linux/sched/mm.h>
#elif defined(NV_LINUX_SCHED_H_PRESENT)
#include <linux/sched.h>
#endif
void conftest_mmgrab(void) {
mmgrab();
}"
compile_check_conftest "$CODE" "NV_MMGRAB_PRESENT" "" "functions"
;;
dma_resv_add_fence)
#
# Determine if the dma_resv_add_fence() function is present.
#
# dma_resv_add_excl_fence() and dma_resv_add_shared_fence() were
# removed and replaced with dma_resv_add_fence() by commit
# 73511edf8b19 ("dma-buf: specify usage while adding fences to
# dma_resv obj v7") in v5.19-rc1 (2021-11-09).
#
CODE="
#if defined(NV_LINUX_DMA_RESV_H_PRESENT)
#include <linux/dma-resv.h>
#endif
void conftest_dma_resv_add_fence(void) {
dma_resv_add_fence();
}"
compile_check_conftest "$CODE" "NV_DMA_RESV_ADD_FENCE_PRESENT" "" "functions"
;;
dma_resv_reserve_fences)
#
# Determine if the dma_resv_reserve_fences() function is present.
#
# dma_resv_reserve_shared() was removed and replaced with
# dma_resv_reserve_fences() by commit c8d4c18bfbc4
# ("dma-buf/drivers: make reserving a shared slot mandatory v4") in
# v5.19-rc1 (2021-11-16).
#
CODE="
#if defined(NV_LINUX_DMA_RESV_H_PRESENT)
#include <linux/dma-resv.h>
#endif
void conftest_dma_resv_reserve_fences(void) {
dma_resv_reserve_fences();
}"
compile_check_conftest "$CODE" "NV_DMA_RESV_RESERVE_FENCES_PRESENT" "" "functions"
;;
reservation_object_reserve_shared_has_num_fences_arg)
#
# Determine if reservation_object_reserve_shared() has 'num_fences'
# argument.
#
# reservation_object_reserve_shared() function prototype was updated
# to take 'num_fences' argument by commit ca05359f1e64 ("dma-buf:
# allow reserving more than one shared fence slot") in v4.21-rc1
# (2018-12-14).
#
CODE="
#include <linux/reservation.h>
void conftest_reservation_object_reserve_shared_has_num_fences_arg(
struct reservation_object *obj,
unsigned int num_fences) {
(void) reservation_object_reserve_shared(obj, num_fences);
}"
compile_check_conftest "$CODE" "NV_RESERVATION_OBJECT_RESERVE_SHARED_HAS_NUM_FENCES_ARG" "" "types"
;;
get_task_ioprio)
#
# Determine if the __get_task_ioprio() function is present.
#
# __get_task_ioprio was added by commit 893e5d32d583
# ("block: Generalize get_current_ioprio() for any task") in
# v6.0-rc1 (2022-06-23).
#
CODE="
#include <linux/ioprio.h>
void conftest_get_task_ioprio(void) {
__get_task_ioprio();
}"
compile_check_conftest "$CODE" "NV_GET_TASK_IOPRIO_PRESENT" "" "functions"
;;
num_registered_fb)
#
# Determine if 'num_registered_fb' variable is present.
#
# 'num_registered_fb' was removed by commit 5727dcfd8486
# ("fbdev: Make registered_fb[] private to fbmem.c") in
# v6.1-rc1 (2022-07-25).
#
CODE="
#include <linux/fb.h>
int conftest_num_registered_fb(void) {
return num_registered_fb;
}"
compile_check_conftest "$CODE" "NV_NUM_REGISTERED_FB_PRESENT" "" "types"
;;
acpi_video_backlight_use_native)
#
# Determine if acpi_video_backlight_use_native() function is present
#
# acpi_video_backlight_use_native was added by commit 2600bfa3df99
# (ACPI: video: Add acpi_video_backlight_use_native() helper) for
# v6.0 (2022-08-17). Note: the include directive for <linux/types.h>
# in this conftest is necessary in order to support kernels between
# commit 0b9f7d93ca61 ("ACPI / i915: ignore firmware requests for
# backlight change") for v3.16 (2014-07-07) and commit 3bd6bce369f5
# ("ACPI / video: Port to new backlight interface selection API")
# for v4.2 (2015-07-16). Kernels within this range use the 'bool'
# type and the related 'false' value in <acpi/video.h> without first
# including the definitions of that type and value.
#
CODE="
#include <linux/types.h>
#include <acpi/video.h>
void conftest_acpi_video_backglight_use_native(void) {
acpi_video_backlight_use_native(0);
}"
compile_check_conftest "$CODE" "NV_ACPI_VIDEO_BACKLIGHT_USE_NATIVE" "" "functions"
;;
vm_fault_to_errno)
#
# Determine if the vm_fault_to_errno() function is present.
#
# vm_fault_to_errno() was added by commit 9a291a7c94281 (mm/hugetlb:
# report -EHWPOISON not -EFAULT when FOLL_HWPOISON is specified) in
# v4.12 (2017-06-02).
#
CODE="
#include <linux/mm_types.h>
void conftest_vm_fault_to_errno(void) {
vm_fault_to_errno();
}"
compile_check_conftest "$CODE" "NV_VM_FAULT_TO_ERRNO_PRESENT" "" "functions"
;;
handle_mm_fault_has_mm_arg)
#
# Determine if handle_mm_fault() has mm argument.
#
# mm argument was removed from handle_mm_fault() by commit
# dcddffd41d3f1d3bdcc1dce3f1cd142779b6d4c1 (07/26/2016) ("mm: do not
# pass mm_struct into handle_mm_fault") in v4.8.
#
# To test if handle_mm_fault() has mm argument, define a function
# with the expected signature and then define the corresponding
# function implementation with the expected signature. Successful
# compilation indicates that handle_mm_fault has the mm argument.
#
CODE="
#include <linux/mm.h>
#include <linux/mm_types.h>
typeof(handle_mm_fault) conftest_handle_mm_fault_has_mm_arg;
int conftest_handle_mm_fault_has_mm_arg(struct mm_struct *mm,
struct vm_area_struct *vma,
unsigned long address,
unsigned int flags) {
return 0;
}"
compile_check_conftest "$CODE" "NV_HANDLE_MM_FAULT_HAS_MM_ARG" "" "types"
;;
handle_mm_fault_has_pt_regs_arg)
#
# Determine if handle_mm_fault() has pt_regs argument.
#
# pt_regs argument was added to handle_mm_fault by commit
# bce617edecada007aee8610fbe2c14d10b8de2f6 (08/12/2020) ("mm: do
# page fault accounting in handle_mm_fault") in v5.9.
#
# To test if handle_mm_fault() has pt_regs argument, define a
# function with the expected signature and then define the
# corresponding function implementation with the expected signature.
# Successful compilation indicates that handle_mm_fault has the
# pt_regs argument.
#
CODE="
#include <linux/mm.h>
#include <linux/mm_types.h>
typeof(handle_mm_fault) conftest_handle_mm_fault_has_pt_regs_arg;
vm_fault_t conftest_handle_mm_fault_has_pt_regs_arg(struct vm_area_struct *vma,
unsigned long address,
unsigned int flags,
struct pt_regs *regs) {
return 0;
}"
compile_check_conftest "$CODE" "NV_HANDLE_MM_FAULT_HAS_PT_REGS_ARG" "" "types"
;;
pci_rebar_get_possible_sizes)
#
# Determine if the pci_rebar_get_possible_sizes() function is present.
#
# Added by commit 8fbdbb66f8c10 ("PCI: Add resizable BAR infrastructure
# ") in v5.12
#
CODE="
#include <linux/pci.h>
void conftest_pci_rebar_get_possible_sizes(void) {
pci_rebar_get_possible_sizes();
}"
compile_check_conftest "$CODE" "NV_PCI_REBAR_GET_POSSIBLE_SIZES_PRESENT" "" "functions"
;;
wait_for_random_bytes)
#
# Determine if the wait_for_random_bytes() function is present.
#
# Added by commit e297a783e4156 ("random: add wait_for_random_bytes
# API") in v4.13
#
CODE="
#include <linux/random.h>
int conftest_wait_for_random_bytes(void) {
return wait_for_random_bytes(0);
}"
compile_check_conftest "$CODE" "NV_WAIT_FOR_RANDOM_BYTES_PRESENT" "" "functions"
;;
drm_connector_has_override_edid)
#
# Determine if 'struct drm_connector' has an 'override_edid' member.
#
# Removed by commit 90b575f52c6ab ("drm/edid: detach debugfs EDID
# override from EDID property update") in v6.2-rc1 (2022-10-24).
#
CODE="
#if defined(NV_DRM_DRM_CRTC_H_PRESENT)
#include <drm/drm_crtc.h>
#endif
#if defined(NV_DRM_DRM_CONNECTOR_H_PRESENT)
#include <drm/drm_connector.h>
#endif
int conftest_drm_connector_has_override_edid(void) {
return offsetof(struct drm_connector, override_edid);
}"
compile_check_conftest "$CODE" "NV_DRM_CONNECTOR_HAS_OVERRIDE_EDID" "" "types"
;;
iommu_sva_bind_device_has_drvdata_arg)
#
# Check if iommu_sva_bind_device() has drvdata parameter.
#
# drvdata argument was removed by commit
# 942fd5435dccb273f90176b046ae6bbba60cfbd8 ("iommu: Remove
# SVM_FLAG_SUPERVISOR_MODE support") in v6.2 (2022-10-31)
#
CODE="
#include <linux/iommu.h>
#include <linux/mm_types.h>
#include <linux/device.h>
void conftest_iommu_sva_bind_device_has_drvdata_arg(struct device *dev,
struct mm_struct *mm,
void *drvdata) {
(void) iommu_sva_bind_device(dev, mm, drvdata);
}"
compile_check_conftest "$CODE" "NV_IOMMU_SVA_BIND_DEVICE_HAS_DRVDATA_ARG" "" "types"
;;
vm_area_struct_has_const_vm_flags)
#
# Determine if the 'vm_area_struct' structure has
# const 'vm_flags'.
#
# A union of '__vm_flags' and 'const vm_flags' was added
# by commit bc292ab00f6c ("mm: introduce vma->vm_flags
# wrapper functions") from v6.3-rc1 (2023-02-09) in the
# linux kernel tree.
#
CODE="
#include <linux/mm_types.h>
int conftest_vm_area_struct_has_const_vm_flags(void) {
return offsetof(struct vm_area_struct, __vm_flags);
}"
compile_check_conftest "$CODE" "NV_VM_AREA_STRUCT_HAS_CONST_VM_FLAGS" "" "types"
;;
drm_driver_has_dumb_destroy)
#
# Determine if the 'drm_driver' structure has a 'dumb_destroy'
# function pointer.
#
# Removed by commit 96a7b60f6ddb2 ("drm: remove dumb_destroy
# callback") in v6.4-rc1 (2023-01-26).
#
CODE="
#if defined(NV_DRM_DRMP_H_PRESENT)
#include <drm/drmP.h>
#endif
#if defined(NV_DRM_DRM_DRV_H_PRESENT)
#include <drm/drm_drv.h>
#endif
int conftest_drm_driver_has_dumb_destroy(void) {
return offsetof(struct drm_driver, dumb_destroy);
}"
compile_check_conftest "$CODE" "NV_DRM_DRIVER_HAS_DUMB_DESTROY" "" "types"
;;
memory_failure_has_trapno_arg)
#
# Check if memory_failure() has trapno parameter.
#
# trapno argument was removed by commit
# 83b57531c58f4173d1c0d0b2c0bc88c853c32ea5 ("mm/memory_failure:
# Remove unused trapno from memory_failure") in v4.15.0 (2017-7-9)
#
CODE="
#include <linux/mm.h>
void conftest_memory_failure_has_trapno_arg(unsigned long pfn,
int trapno,
int flags) {
(void) memory_failure(pfn, trapno, flags);
}"
compile_check_conftest "$CODE" "NV_MEMORY_FAILURE_HAS_TRAPNO_ARG" "" "types"
;;
memory_failure_mf_sw_simulated_defined)
#
# Check if memory_failure() flag MF_SW_SIMULATED is defined.
#
# MF_SW_SIMULATED was added by commit
# 67f22ba7750f940bcd7e1b12720896c505c2d63f ("mm/hwpoison:
# fix unpoison_memory()") in v5.19.0-rc2 (2022-6-16)
#
CODE="
#include <linux/mm.h>
int conftest_memory_failure_mf_sw_simulated_defined(void) {
return MF_SW_SIMULATED;
}"
compile_check_conftest "$CODE" "NV_MEMORY_FAILURE_MF_SW_SIMULATED_DEFINED" "" "types"
;;
drm_unlocked_ioctl_flag_present)
# Determine if DRM_UNLOCKED IOCTL flag is present.
#
# DRM_UNLOCKED was removed by commit 2798ffcc1d6a ("drm: Remove
# locking for legacy ioctls and DRM_UNLOCKED") in Linux
# next-20231208.
#
# DRM_UNLOCKED definition was moved from drmP.h to drm_ioctl.h by
# commit 2640981f3600 ("drm: document drm_ioctl.[hc]") in v4.12.
CODE="
#if defined(NV_DRM_DRM_IOCTL_H_PRESENT)
#include <drm/drm_ioctl.h>
#endif
#if defined(NV_DRM_DRMP_H_PRESENT)
#include <drm/drmP.h>
#endif
int flags = DRM_UNLOCKED;"
compile_check_conftest "$CODE" "NV_DRM_UNLOCKED_IOCTL_FLAG_PRESENT" "" "types"
;;
sync_file_get_fence)
#
# Determine if sync_file_get_fence() function is present
#
# sync_file_get_fence was added by commit
# 972526a4093243fdaf77dd7c6f8b11fba5b15864 ("dma-buf/sync_file: add
# sync_file_get_fence()") in v4.9-rc1 (2016-08-05)
#
CODE="
#if defined(NV_LINUX_SYNC_FILE_H_PRESENT)
#include <linux/sync_file.h>
#endif
void conftest_sync_file_get_fence(void)
{
sync_file_get_fence();
}"
compile_check_conftest "$CODE" "NV_SYNC_FILE_GET_FENCE_PRESENT" "" "functions"
;;
dma_fence_set_error)
#
# Determine if dma_fence_set_error() function is present
#
# dma_fence_set_error was added by commit
# a009e975da5c7d42a7f5eaadc54946eb5f76c9af ("dma-fence: Introduce
# drm_fence_set_error() helper") in v4.11-rc1 (2017-01-04)
#
CODE="
#if defined(NV_LINUX_DMA_FENCE_H_PRESENT)
#include <linux/dma-fence.h>
#endif
void conftest_dma_fence_set_error(void)
{
dma_fence_set_error();
}"
compile_check_conftest "$CODE" "NV_DMA_FENCE_SET_ERROR_PRESENT" "" "functions"
;;
fence_ops_use_64bit_seqno)
#
# Determine if dma_fence_ops has the use_64bit_seqno member
#
# 64-bit fence seqno support was actually added by commit
# b312d8ca3a7cebe19941d969a51f2b7f899b81e2 ("dma-buf: make fence
# sequence numbers 64 bit v2") in v5.1-rc1 (2018-11-14), but this
# field to explicitly declare support for it didn't get added until
# commit 5e498abf14858945f1249d9cc4ff1e8715a307e3 ("dma-buf:
# explicitely note that dma-fence-chains use 64bit seqno") in
# v5.2-rc1 (2019-04-15). Since it is currently trivial to work
# around the lack of native 64-bit seqno in our driver, we'll use
# the work-around path for kernels prior to 5.2 to avoid further
# ifdefing of the code.
#
CODE="
#if defined(NV_LINUX_DMA_FENCE_H_PRESENT)
#include <linux/dma-fence.h>
#endif
int conftest_fence_ops(void)
{
return offsetof(struct dma_fence_ops, use_64bit_seqno);
}"
compile_check_conftest "$CODE" "NV_DMA_FENCE_OPS_HAS_USE_64BIT_SEQNO" "" "types"
;;
drm_fbdev_generic_setup)
#
# Determine whether drm_fbdev_generic_setup is present.
#
# drm_fbdev_generic_setup was added by commit 9060d7f49376
# ("drm/fb-helper: Finish the generic fbdev emulation") in v4.19-rc1
# (2018-07-03)
#
CODE="
#include <drm/drm_fb_helper.h>
#if defined(NV_DRM_DRM_FBDEV_GENERIC_H_PRESENT)
#include <drm/drm_fbdev_generic.h>
#endif
void conftest_drm_fbdev_generic_setup(void) {
drm_fbdev_generic_setup();
}"
compile_check_conftest "$CODE" "NV_DRM_FBDEV_GENERIC_SETUP_PRESENT" "" "functions"
;;
drm_output_poll_changed)
#
# Determine whether drm_mode_config_funcs.output_poll_changed
# callback is present
#
# Removed by commit 446d0f4849b1 ("drm: Remove struct
# drm_mode_config_funcs.output_poll_changed") in v6.12. Hotplug
# event support is handled through the fbdev emulation interface
# going forward.
#
CODE="
#if defined(NV_DRM_DRM_MODE_CONFIG_H_PRESENT)
#include <drm/drm_mode_config.h>
#else
#include <drm/drm_crtc.h>
#endif
int conftest_drm_output_poll_changed_available(void) {
return offsetof(struct drm_mode_config_funcs, output_poll_changed);
}"
compile_check_conftest "$CODE" "NV_DRM_OUTPUT_POLL_CHANGED_PRESENT" "" "types"
;;
drm_aperture_remove_conflicting_pci_framebuffers)
#
# Determine whether drm_aperture_remove_conflicting_pci_framebuffers is present.
#
# drm_fbdev_generic_setup was added in commit 2916059147ea
# ("drm/aperture: Add infrastructure for aperture ownership) in
# v5.14-rc1 (2021-04-12)
#
CODE="
#if defined(NV_DRM_DRM_APERTURE_H_PRESENT)
#include <drm/drm_aperture.h>
#endif
void conftest_drm_aperture_remove_conflicting_pci_framebuffers(void) {
drm_aperture_remove_conflicting_pci_framebuffers();
}"
compile_check_conftest "$CODE" "NV_DRM_APERTURE_REMOVE_CONFLICTING_PCI_FRAMEBUFFERS_PRESENT" "" "functions"
;;
drm_aperture_remove_conflicting_pci_framebuffers_has_driver_arg)
#
# Determine whether drm_aperture_remove_conflicting_pci_framebuffers
# takes a struct drm_driver * as its second argument.
#
# Prior to commit 97c9bfe3f6605d41eb8f1206e6e0f62b31ba15d6, the
# second argument was a char * pointer to the driver's name.
#
# To test if drm_aperture_remove_conflicting_pci_framebuffers() has
# a req_driver argument, define a function with the expected
# signature and then define the corresponding function
# implementation with the expected signature. Successful compilation
# indicates that this function has the expected signature.
#
# This change occurred in commit 97c9bfe3f660 ("drm/aperture: Pass
# DRM driver structure instead of driver name") in v5.15
# (2021-06-29).
#
CODE="
#if defined(NV_DRM_DRM_DRV_H_PRESENT)
#include <drm/drm_drv.h>
#endif
#if defined(NV_DRM_DRM_APERTURE_H_PRESENT)
#include <drm/drm_aperture.h>
#endif
typeof(drm_aperture_remove_conflicting_pci_framebuffers) conftest_drm_aperture_remove_conflicting_pci_framebuffers;
int conftest_drm_aperture_remove_conflicting_pci_framebuffers(struct pci_dev *pdev,
const struct drm_driver *req_driver)
{
return 0;
}"
compile_check_conftest "$CODE" "NV_DRM_APERTURE_REMOVE_CONFLICTING_PCI_FRAMEBUFFERS_HAS_DRIVER_ARG" "" "types"
;;
crypto_tfm_ctx_aligned)
# Determine if 'crypto_tfm_ctx_aligned' is defined.
#
# Removed by commit 25c74a39e0f6 ("crypto: hmac - remove unnecessary
# alignment logic") in v6.7.
#
CODE="
#include <crypto/algapi.h>
void conftest_crypto_tfm_ctx_aligned(void) {
(void)crypto_tfm_ctx_aligned();
}"
compile_check_conftest "$CODE" "NV_CRYPTO_TFM_CTX_ALIGNED_PRESENT" "" "functions"
;;
crypto)
#
# Determine if we support various crypto functions.
# This test is not complete and may return false positive.
#
CODE="
#include <crypto/akcipher.h>
#include <crypto/algapi.h>
#include <crypto/ecc_curve.h>
#include <crypto/ecdh.h>
#include <crypto/hash.h>
#include <crypto/internal/ecc.h>
#include <crypto/kpp.h>
#include <crypto/public_key.h>
#include <crypto/sm3.h>
#include <keys/asymmetric-type.h>
#include <linux/crypto.h>
void conftest_crypto(void) {
struct shash_desc sd;
struct crypto_shash cs;
(void)crypto_shash_tfm_digest;
}"
compile_check_conftest "$CODE" "NV_CRYPTO_PRESENT" "" "symbols"
;;
drm_aperture_remove_conflicting_framebuffers)
#
# Determine whether drm_aperture_remove_conflicting_framebuffers is present.
#
# drm_aperture_remove_conflicting_framebuffers was added in commit 2916059147ea
# ("drm/aperture: Add infrastructure for aperture ownership) in
# v5.14-rc1 (2021-04-12)
#
CODE="
#if defined(NV_DRM_DRM_APERTURE_H_PRESENT)
#include <drm/drm_aperture.h>
#endif
void conftest_drm_aperture_remove_conflicting_framebuffers(void) {
drm_aperture_remove_conflicting_framebuffers();
}"
compile_check_conftest "$CODE" "NV_DRM_APERTURE_REMOVE_CONFLICTING_FRAMEBUFFERS_PRESENT" "" "functions"
;;
drm_aperture_remove_conflicting_framebuffers_has_driver_arg)
#
# Determine whether drm_aperture_remove_conflicting_framebuffers
# takes a struct drm_driver * as its fourth argument.
#
# Prior to commit 97c9bfe3f6605d41eb8f1206e6e0f62b31ba15d6, the
# second argument was a char * pointer to the driver's name.
#
# To test if drm_aperture_remove_conflicting_framebuffers() has
# a req_driver argument, define a function with the expected
# signature and then define the corresponding function
# implementation with the expected signature. Successful compilation
# indicates that this function has the expected signature.
#
# This change occurred in commit 97c9bfe3f660 ("drm/aperture: Pass
# DRM driver structure instead of driver name") in v5.15
# (2021-06-29).
#
CODE="
#if defined(NV_DRM_DRM_DRV_H_PRESENT)
#include <drm/drm_drv.h>
#endif
#if defined(NV_DRM_DRM_APERTURE_H_PRESENT)
#include <drm/drm_aperture.h>
#endif
typeof(drm_aperture_remove_conflicting_framebuffers) conftest_drm_aperture_remove_conflicting_framebuffers;
int conftest_drm_aperture_remove_conflicting_framebuffers(resource_size_t base, resource_size_t size,
bool primary, const struct drm_driver *req_driver)
{
return 0;
}"
compile_check_conftest "$CODE" "NV_DRM_APERTURE_REMOVE_CONFLICTING_FRAMEBUFFERS_HAS_DRIVER_ARG" "" "types"
;;
drm_aperture_remove_conflicting_framebuffers_has_no_primary_arg)
#
# Determine whether drm_aperture_remove_conflicting_framebuffers
# has its third argument as a bool.
#
# Prior to commit 62aeaeaa1b267c5149abee6b45967a5df3feed58, the
# third argument was a bool for figuring out whether the legacy vga
# stuff should be nuked, but it's only for pci devices and not
# really needed in this function.
#
# To test if drm_aperture_remove_conflicting_framebuffers() has
# a bool primary argument, define a function with the expected
# signature and then define the corresponding function
# implementation with the expected signature. Successful compilation
# indicates that this function has the expected signature.
#
# This change occurred in commit 62aeaeaa1b26 ("drm/aperture: Remove
# primary argument") in v6.5 (2023-04-16).
#
CODE="
#if defined(NV_DRM_DRM_DRV_H_PRESENT)
#include <drm/drm_drv.h>
#endif
#if defined(NV_DRM_DRM_APERTURE_H_PRESENT)
#include <drm/drm_aperture.h>
#endif
typeof(drm_aperture_remove_conflicting_framebuffers) conftest_drm_aperture_remove_conflicting_framebuffers;
int conftest_drm_aperture_remove_conflicting_framebuffers(resource_size_t base, resource_size_t size,
const struct drm_driver *req_driver)
{
return 0;
}"
compile_check_conftest "$CODE" "NV_DRM_APERTURE_REMOVE_CONFLICTING_FRAMEBUFFERS_HAS_NO_PRIMARY_ARG" "" "types"
;;
platform_driver_struct_remove_returns_void)
#
# Determine if the 'platform_driver' structure 'remove' function
# pointer returns void.
#
# Commit 0edb555a65d1 ("platform: Make platform_driver::remove()
# return void") updated the platform_driver structure 'remove'
# callback to return void instead of int in Linux v6.11-rc1.
#
echo "$CONFTEST_PREAMBLE
#include <linux/platform_device.h>
int conftest_platform_driver_struct_remove_returns_void(struct platform_device *pdev,
struct platform_driver *driver) {
return driver->remove(pdev);
}" > conftest$$.c
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
rm -f conftest$$.o
echo "#undef NV_PLATFORM_DRIVER_STRUCT_REMOVE_RETURNS_VOID" | append_conftest "types"
else
echo "#define NV_PLATFORM_DRIVER_STRUCT_REMOVE_RETURNS_VOID" | append_conftest "types"
fi
;;
drm_mode_create_dp_colorspace_property_has_supported_colorspaces_arg)
# Determine if drm_mode_create_dp_colorspace_property() takes the
# 'supported_colorspaces' argument.
#
# The 'u32 supported_colorspaces' argument was added to
# drm_mode_create_dp_colorspace_property() by linux-next commit
# c265f340eaa8 ("drm/connector: Allow drivers to pass list of
# supported colorspaces").
#
# To test if drm_mode_create_dp_colorspace_property() has the
# 'supported_colorspaces' argument, declare a function prototype
# with typeof drm_mode_create_dp_colorspace_property and then
# define the corresponding function implementation with the
# expected signature. Successful compilation indicates that
# drm_mode_create_dp_colorspace_property() has the
# 'supported_colorspaces' argument.
#
CODE="
#if defined(NV_DRM_DRM_CRTC_H_PRESENT)
#include <drm/drm_crtc.h>
#endif
#if defined(NV_DRM_DRM_CONNECTOR_H_PRESENT)
#include <drm/drm_connector.h>
#endif
typeof(drm_mode_create_dp_colorspace_property) conftest_drm_mode_create_dp_colorspace_property_has_supported_colorspaces_arg;
int conftest_drm_mode_create_dp_colorspace_property_has_supported_colorspaces_arg(struct drm_connector *connector,
u32 supported_colorspaces)
{
return 0;
}"
compile_check_conftest "$CODE" "NV_DRM_MODE_CREATE_DP_COLORSPACE_PROPERTY_HAS_SUPPORTED_COLORSPACES_ARG" "" "types"
;;
# When adding a new conftest entry, please use the correct format for
# specifying the relevant upstream Linux kernel commit.
#
# <function> was added|removed|etc by commit <sha> ("<commit message")
# in <kernel-version> (<commit date>).
*)
# Unknown test name given
echo "Error: unknown conftest '$1' requested" >&2
exit 1
;;
esac
}
case "$5" in
cc_sanity_check)
#
# Check if the selected compiler can create object files
# in the current environment.
#
VERBOSE=$6
echo "int cc_sanity_check(void) {
return 0;
}" > conftest$$.c
$CC -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ ! -f conftest$$.o ]; then
if [ "$VERBOSE" = "full_output" ]; then
echo "";
fi
if [ "$CC" != "cc" ]; then
echo "The C compiler '$CC' does not appear to be able to"
echo "create object files. Please make sure you have "
echo "your Linux distribution's libc development package"
echo "installed and that '$CC' is a valid C compiler";
echo "name."
else
echo "The C compiler '$CC' does not appear to be able to"
echo "create executables. Please make sure you have "
echo "your Linux distribution's gcc and libc development"
echo "packages installed."
fi
if [ "$VERBOSE" = "full_output" ]; then
echo "";
echo "*** Failed CC sanity check. Bailing out! ***";
echo "";
fi
exit 1
else
rm -f conftest$$.o
exit 0
fi
;;
cc_version_check)
#
# Verify that the same compiler major and minor version is
# used for the kernel and kernel module. A mismatch condition is
# not considered fatal, so this conftest returns a success status
# code, even if it fails. Failure of the test can be distinguished
# by testing for empty (success) versus non-empty (failure) output.
#
# Some gcc version strings that have proven problematic for parsing
# in the past:
#
# gcc.real (GCC) 3.3 (Debian)
# gcc-Version 3.3 (Debian)
# gcc (GCC) 3.1.1 20020606 (Debian prerelease)
# version gcc 3.2.3
#
# As of this writing, GCC uses a version number as x.y.z and below
# are the typical version strings seen with various distributions.
# gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-23)
# gcc version 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)
# gcc (GCC) 8.3.1 20190507 (Red Hat 8.3.1-4)
# gcc (GCC) 10.2.1 20200723 (Red Hat 10.2.1-1)
# gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0
# gcc (Ubuntu 7.5.0-3ubuntu1~16.04) 7.5.0
# gcc (Debian 8.3.0-6) 8.3.0
# aarch64-linux-gcc.br_real (Buildroot 2020.08-14-ge5a2a90) 9.3.0, GNU ld (GNU Binutils) 2.33.1
#
# In order to extract GCC version correctly for version strings
# like the last one above, we first check for x.y.z and if that
# fails, we fallback to x.y format.
VERBOSE=$6
kernel_compile_h=$OUTPUT/include/generated/compile.h
if [ ! -f ${kernel_compile_h} ]; then
# The kernel's compile.h file is not present, so there
# isn't a convenient way to identify the compiler version
# used to build the kernel.
IGNORE_CC_MISMATCH=1
fi
if [ -n "$IGNORE_CC_MISMATCH" ]; then
exit 0
fi
kernel_cc_string=`cat ${kernel_compile_h} | \
grep LINUX_COMPILER | cut -f 2 -d '"'`
kernel_cc_version=`echo ${kernel_cc_string} | grep -o '[0-9]\+\.[0-9]\+\.[0-9]\+' | head -n 1`
if [ -z "${kernel_cc_version}" ]; then
kernel_cc_version=`echo ${kernel_cc_string} | grep -o '[0-9]\+\.[0-9]\+' | head -n 1`
fi
kernel_cc_major=`echo ${kernel_cc_version} | cut -d '.' -f 1`
kernel_cc_minor=`echo ${kernel_cc_version} | cut -d '.' -f 2`
echo "
#if (__GNUC__ != ${kernel_cc_major}) || (__GNUC_MINOR__ != ${kernel_cc_minor})
#error \"cc version mismatch\"
#endif
" > conftest$$.c
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
rm -f conftest$$.c
if [ -f conftest$$.o ]; then
rm -f conftest$$.o
exit 0;
else
#
# The gcc version check failed
#
if [ "$VERBOSE" = "full_output" ]; then
echo "";
echo "Warning: Compiler version check failed:";
echo "";
echo "The major and minor number of the compiler used to";
echo "compile the kernel:";
echo "";
echo "${kernel_cc_string}";
echo "";
echo "does not match the compiler used here:";
echo "";
$CC --version
echo "";
echo "It is recommended to set the CC environment variable";
echo "to the compiler that was used to compile the kernel.";
echo ""
echo "To skip the test and silence this warning message, set";
echo "the IGNORE_CC_MISMATCH environment variable to \"1\".";
echo "However, mixing compiler versions between the kernel";
echo "and kernel modules can result in subtle bugs that are";
echo "difficult to diagnose.";
echo "";
echo "*** Failed CC version check. ***";
echo "";
elif [ "$VERBOSE" = "just_msg" ]; then
echo "Warning: The kernel was built with ${kernel_cc_string}, but the" \
"current compiler version is `$CC --version | head -n 1`.";
fi
exit 0;
fi
;;
xen_sanity_check)
#
# Check if the target kernel is a Xen kernel. If so, exit, since
# the RM doesn't currently support Xen.
#
VERBOSE=$6
if [ -n "$IGNORE_XEN_PRESENCE" -o -n "$VGX_BUILD" ]; then
exit 0
fi
test_xen
if [ "$XEN_PRESENT" != "0" ]; then
echo "The kernel you are installing for is a Xen kernel!";
echo "";
echo "The NVIDIA driver does not currently support Xen kernels. If ";
echo "you are using a stock distribution kernel, please install ";
echo "a variant of this kernel without Xen support; if this is a ";
echo "custom kernel, please install a standard Linux kernel. Then ";
echo "try installing the NVIDIA kernel module again.";
echo "";
if [ "$VERBOSE" = "full_output" ]; then
echo "*** Failed Xen sanity check. Bailing out! ***";
echo "";
fi
exit 1
else
exit 0
fi
;;
preempt_rt_sanity_check)
#
# Check if the target kernel has the PREEMPT_RT patch set applied. If
# so, exit, since the RM doesn't support this configuration.
#
VERBOSE=$6
if [ -n "$IGNORE_PREEMPT_RT_PRESENCE" ]; then
exit 0
fi
if test_configuration_option CONFIG_PREEMPT_RT; then
PREEMPT_RT_PRESENT=1
elif test_configuration_option CONFIG_PREEMPT_RT_FULL; then
PREEMPT_RT_PRESENT=1
fi
if [ "$PREEMPT_RT_PRESENT" != "0" ]; then
echo "The kernel you are installing for is a PREEMPT_RT kernel!";
echo "";
echo "The NVIDIA driver does not support real-time kernels. If you ";
echo "are using a stock distribution kernel, please install ";
echo "a variant of this kernel that does not have the PREEMPT_RT ";
echo "patch set applied; if this is a custom kernel, please ";
echo "install a standard Linux kernel. Then try installing the ";
echo "NVIDIA kernel module again.";
echo "";
if [ "$VERBOSE" = "full_output" ]; then
echo "*** Failed PREEMPT_RT sanity check. Bailing out! ***";
echo "";
fi
exit 1
else
exit 0
fi
;;
patch_check)
#
# Check for any "official" patches that may have been applied and
# construct a description table for reporting purposes.
#
PATCHES=""
for PATCH in patch-*.h; do
if [ -f $PATCH ]; then
echo "#include \"$PATCH\""
PATCHES="$PATCHES "`echo $PATCH | sed -s 's/patch-\(.*\)\.h/\1/'`
fi
done
echo "static struct {
const char *short_description;
const char *description;
} __nv_patches[] = {"
for i in $PATCHES; do
echo "{ \"$i\", NV_PATCH_${i}_DESCRIPTION },"
done
echo "{ NULL, NULL } };"
exit 0
;;
compile_tests)
#
# Run a series of compile tests to determine the set of interfaces
# and features available in the target kernel.
#
shift 5
CFLAGS=$1
shift
for i in $*; do compile_test $i; done
exit 0
;;
dom0_sanity_check)
#
# Determine whether running in DOM0.
#
VERBOSE=$6
if [ -n "$VGX_BUILD" ]; then
if [ -f /proc/xen/capabilities ]; then
if [ "`cat /proc/xen/capabilities`" == "control_d" ]; then
exit 0
fi
else
echo "The kernel is not running in DOM0.";
echo "";
if [ "$VERBOSE" = "full_output" ]; then
echo "*** Failed DOM0 sanity check. Bailing out! ***";
echo "";
fi
fi
exit 1
fi
;;
vgpu_kvm_sanity_check)
#
# Determine whether we are running a vGPU on KVM host.
#
VERBOSE=$6
iommu=CONFIG_VFIO_IOMMU_TYPE1
mdev=CONFIG_VFIO_MDEV
kvm=CONFIG_KVM_VFIO
vfio_pci_core=CONFIG_VFIO_PCI_CORE
VFIO_IOMMU_PRESENT=0
VFIO_MDEV_PRESENT=0
KVM_PRESENT=0
VFIO_PCI_CORE_PRESENT=0
if [ -n "$VGX_KVM_BUILD" ]; then
if (test_configuration_option ${iommu} || test_configuration_option ${iommu}_MODULE); then
VFIO_IOMMU_PRESENT=1
fi
if (test_configuration_option ${mdev} || test_configuration_option ${mdev}_MODULE); then
VFIO_MDEV_PRESENT=1
fi
if (test_configuration_option ${kvm} || test_configuration_option ${kvm}_MODULE); then
KVM_PRESENT=1
fi
if (test_configuration_option ${vfio_pci_core} || test_configuration_option ${vfio_pci_core}_MODULE); then
VFIO_PCI_CORE_PRESENT=1
fi
# When this sanity check is run via nvidia-installer, it sets ARCH as aarch64.
# But, when it is run via Kbuild, ARCH is set as arm64
if [ "$ARCH" = "aarch64" ]; then
ARCH="arm64"
fi
if [ "$VFIO_IOMMU_PRESENT" != "0" ] && [ "$KVM_PRESENT" != "0" ] ; then
# On x86_64, vGPU requires MDEV framework to be present.
# On aarch64, vGPU requires vfio-pci-core framework to be present.
if ([ "$ARCH" = "arm64" ] && [ "$VFIO_PCI_CORE_PRESENT" != "0" ]) ||
([ "$ARCH" = "x86_64" ] && [ "$VFIO_MDEV_PRESENT" != "0" ];) then
exit 0
fi
fi
echo "Below CONFIG options are missing on the kernel for installing";
echo "NVIDIA vGPU driver on KVM host";
if [ "$VFIO_IOMMU_PRESENT" = "0" ]; then
echo "CONFIG_VFIO_IOMMU_TYPE1";
fi
if [ "$ARCH" = "arm64" ] && [ "$VFIO_PCI_CORE_PRESENT" = "0" ]; then
echo "CONFIG_VFIO_PCI_CORE";
fi
if [ "$ARCH" = "x86_64" ] && [ "$VFIO_MDEV_PRESENT" = "0" ]; then
echo "CONFIG_VFIO_MDEV";
fi
if [ "$KVM_PRESENT" = "0" ]; then
echo "CONFIG_KVM";
fi
echo "Please install the kernel with above CONFIG options set, then";
echo "try installing again";
echo "";
if [ "$VERBOSE" = "full_output" ]; then
echo "*** Failed vGPU on KVM sanity check. Bailing out! ***";
echo "";
fi
exit 1
else
exit 0
fi
;;
test_configuration_option)
#
# Check to see if the given config option is set.
#
OPTION=$6
test_configuration_option $OPTION
exit $?
;;
get_configuration_option)
#
# Get the value of the given config option.
#
OPTION=$6
get_configuration_option $OPTION
exit $?
;;
guess_module_signing_hash)
#
# Determine the best cryptographic hash to use for module signing,
# to the extent that is possible.
#
HASH=$(get_configuration_option CONFIG_MODULE_SIG_HASH)
if [ $? -eq 0 ] && [ -n "$HASH" ]; then
echo $HASH
exit 0
else
for SHA in 512 384 256 224 1; do
if test_configuration_option CONFIG_MODULE_SIG_SHA$SHA; then
echo sha$SHA
exit 0
fi
done
fi
exit 1
;;
test_kernel_header)
#
# Check for the availability of the given kernel header
#
CFLAGS=$6
test_header_presence "${7}"
exit $?
;;
build_cflags)
#
# Generate CFLAGS for use in the compile tests
#
build_cflags
echo $CFLAGS
exit 0
;;
module_symvers_sanity_check)
#
# Check whether Module.symvers exists and contains at least one
# EXPORT_SYMBOL* symbol from vmlinux
#
if [ -n "$IGNORE_MISSING_MODULE_SYMVERS" ]; then
exit 0
fi
TAB=' '
if [ -f "$OUTPUT/Module.symvers" ] && \
grep -e "^[^${TAB}]*${TAB}[^${TAB}]*${TAB}\+vmlinux" \
"$OUTPUT/Module.symvers" >/dev/null 2>&1; then
exit 0
fi
echo "The Module.symvers file is missing, or does not contain any"
echo "symbols exported from the kernel. This could cause the NVIDIA"
echo "kernel modules to be built against a configuration that does"
echo "not accurately reflect the actual target kernel."
echo "The Module.symvers file check can be disabled by setting the"
echo "environment variable IGNORE_MISSING_MODULE_SYMVERS to 1."
exit 1
;;
esac