Skip to content

Commit a1709c7

Browse files
jfroysmira
authored andcommitted
feat: enable module unloading and memory hotplug (for NVIDIA UVM)
This patch enables module unloading. This will be needed by machined to unload kernel modules when the machine config is changed. Module unloading is also required by NVIDIA driver containers. These containers are managed by the NVIDIA GPU Operator and will load and unload the nvidia kernel modules as part of their lifecycle. This patch enables memory hotplug and a few other settings (e.g. `DEVICE_MEMORY`) to support NVIDIA unified virtual memory (UVM) and the NVIDIA GPU Operator. Memory hotplug is required to provide `/sys/devices/system/memory`. In particular, driver containers use `/sys/devices/system/memory/auto_online_blocks` to manage NVIDIA UVM. Signed-off-by: Jean-Francois Roy <[email protected]>
1 parent 2c5785b commit a1709c7

File tree

2 files changed

+49
-5
lines changed

2 files changed

+49
-5
lines changed

kernel/build/config-amd64

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -447,6 +447,7 @@ CONFIG_X86_64_ACPI_NUMA=y
447447
CONFIG_NODES_SHIFT=6
448448
CONFIG_ARCH_SPARSEMEM_ENABLE=y
449449
CONFIG_ARCH_SPARSEMEM_DEFAULT=y
450+
# CONFIG_ARCH_MEMORY_PROBE is not set
450451
CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
451452
# CONFIG_X86_PMEM_LEGACY is not set
452453
CONFIG_X86_CHECK_BIOS_CORRUPTION=y
@@ -494,7 +495,7 @@ CONFIG_X86_NEED_RELOCS=y
494495
CONFIG_PHYSICAL_ALIGN=0x200000
495496
CONFIG_DYNAMIC_MEMORY_LAYOUT=y
496497
CONFIG_RANDOMIZE_MEMORY=y
497-
CONFIG_RANDOMIZE_MEMORY_PHYSICAL_PADDING=0x0
498+
CONFIG_RANDOMIZE_MEMORY_PHYSICAL_PADDING=0x1
498499
CONFIG_ADDRESS_MASKING=y
499500
CONFIG_HOTPLUG_CPU=y
500501
# CONFIG_COMPAT_VDSO is not set
@@ -587,6 +588,7 @@ CONFIG_ACPI_TABLE_UPGRADE=y
587588
# CONFIG_ACPI_DEBUG is not set
588589
# CONFIG_ACPI_PCI_SLOT is not set
589590
CONFIG_ACPI_CONTAINER=y
591+
CONFIG_ACPI_HOTPLUG_MEMORY=y
590592
CONFIG_ACPI_HOTPLUG_IOAPIC=y
591593
# CONFIG_ACPI_SBS is not set
592594
# CONFIG_ACPI_HED is not set
@@ -887,7 +889,9 @@ CONFIG_MODULE_SIG_FORMAT=y
887889
CONFIG_MODULES=y
888890
# CONFIG_MODULE_DEBUG is not set
889891
# CONFIG_MODULE_FORCE_LOAD is not set
890-
# CONFIG_MODULE_UNLOAD is not set
892+
CONFIG_MODULE_UNLOAD=y
893+
# CONFIG_MODULE_FORCE_UNLOAD is not set
894+
# CONFIG_MODULE_UNLOAD_TAINT_TRACKING is not set
891895
CONFIG_MODVERSIONS=y
892896
CONFIG_ASM_MODVERSIONS=y
893897
CONFIG_MODULE_SRCVERSION_ALL=y
@@ -1030,9 +1034,16 @@ CONFIG_SPARSEMEM_VMEMMAP=y
10301034
CONFIG_ARCH_WANT_OPTIMIZE_DAX_VMEMMAP=y
10311035
CONFIG_ARCH_WANT_OPTIMIZE_HUGETLB_VMEMMAP=y
10321036
CONFIG_HAVE_FAST_GUP=y
1037+
CONFIG_NUMA_KEEP_MEMINFO=y
1038+
CONFIG_MEMORY_ISOLATION=y
10331039
CONFIG_EXCLUSIVE_SYSTEM_RAM=y
1040+
CONFIG_HAVE_BOOTMEM_INFO_NODE=y
10341041
CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
1035-
# CONFIG_MEMORY_HOTPLUG is not set
1042+
CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
1043+
CONFIG_MEMORY_HOTPLUG=y
1044+
CONFIG_MEMORY_HOTPLUG_DEFAULT_ONLINE=y
1045+
CONFIG_MEMORY_HOTREMOVE=y
1046+
CONFIG_MHP_MEMMAP_ON_MEMORY=y
10361047
CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y
10371048
CONFIG_SPLIT_PTLOCK_CPUS=4
10381049
CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y
@@ -1042,8 +1053,10 @@ CONFIG_COMPACTION=y
10421053
CONFIG_COMPACT_UNEVICTABLE_DEFAULT=1
10431054
CONFIG_PAGE_REPORTING=y
10441055
CONFIG_MIGRATION=y
1056+
CONFIG_DEVICE_MIGRATION=y
10451057
CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION=y
10461058
CONFIG_ARCH_ENABLE_THP_MIGRATION=y
1059+
CONFIG_CONTIG_ALLOC=y
10471060
CONFIG_PCP_BATCH_SCALE_MAX=5
10481061
CONFIG_PHYS_ADDR_T_64BIT=y
10491062
CONFIG_MMU_NOTIFIER=y
@@ -1072,7 +1085,10 @@ CONFIG_ARCH_HAS_PTE_DEVMAP=y
10721085
CONFIG_ARCH_HAS_ZONE_DMA_SET=y
10731086
CONFIG_ZONE_DMA=y
10741087
CONFIG_ZONE_DMA32=y
1088+
CONFIG_ZONE_DEVICE=y
10751089
CONFIG_HMM_MIRROR=y
1090+
CONFIG_GET_FREE_REGION=y
1091+
CONFIG_DEVICE_PRIVATE=y
10761092
CONFIG_VMAP_PFN=y
10771093
CONFIG_ARCH_USES_HIGH_VMA_FLAGS=y
10781094
CONFIG_ARCH_HAS_PKEYS=y
@@ -1860,6 +1876,7 @@ CONFIG_PCI_LOCKLESS_CONFIG=y
18601876
CONFIG_PCI_IOV=y
18611877
CONFIG_PCI_PRI=y
18621878
CONFIG_PCI_PASID=y
1879+
# CONFIG_PCI_P2PDMA is not set
18631880
CONFIG_PCI_LABEL=y
18641881
CONFIG_PCI_HYPERV=y
18651882
# CONFIG_PCIE_BUS_TUNE_OFF is not set
@@ -4185,6 +4202,7 @@ CONFIG_DRM_AMD_DC_FP=y
41854202
# end of Display Engine Configuration
41864203

41874204
CONFIG_HSA_AMD=y
4205+
CONFIG_HSA_AMD_SVM=y
41884206
# CONFIG_DRM_NOUVEAU is not set
41894207
CONFIG_DRM_I915=m
41904208
CONFIG_DRM_I915_FORCE_PROBE=""
@@ -5061,6 +5079,7 @@ CONFIG_VIRTIO_MENU=y
50615079
CONFIG_VIRTIO_PCI=m
50625080
CONFIG_VIRTIO_PCI_LEGACY=y
50635081
CONFIG_VIRTIO_BALLOON=m
5082+
# CONFIG_VIRTIO_MEM is not set
50645083
CONFIG_VIRTIO_INPUT=m
50655084
CONFIG_VIRTIO_MMIO=m
50665085
CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y
@@ -5088,6 +5107,8 @@ CONFIG_HYPERV_BALLOON=y
50885107
# Xen driver support
50895108
#
50905109
CONFIG_XEN_BALLOON=y
5110+
CONFIG_XEN_BALLOON_MEMORY_HOTPLUG=y
5111+
CONFIG_XEN_MEMORY_HOTPLUG_LIMIT=512
50915112
CONFIG_XEN_SCRUB_PAGES_DEFAULT=y
50925113
CONFIG_XEN_DEV_EVTCHN=y
50935114
# CONFIG_XEN_BACKEND is not set
@@ -5106,6 +5127,7 @@ CONFIG_XEN_EFI=y
51065127
CONFIG_XEN_AUTO_XLATE=y
51075128
CONFIG_XEN_ACPI=y
51085129
CONFIG_XEN_HAVE_VPMU=y
5130+
CONFIG_XEN_UNPOPULATED_ALLOC=y
51095131
# CONFIG_XEN_VIRTIO is not set
51105132
# end of Xen driver support
51115133

@@ -5450,6 +5472,7 @@ CONFIG_BTRFS_FS_POSIX_ACL=y
54505472
# CONFIG_BTRFS_FS_REF_VERIFY is not set
54515473
# CONFIG_NILFS2_FS is not set
54525474
# CONFIG_F2FS_FS is not set
5475+
# CONFIG_FS_DAX is not set
54535476
CONFIG_FS_POSIX_ACL=y
54545477
CONFIG_EXPORTFS=y
54555478
# CONFIG_EXPORTFS_BLOCK_OPS is not set
@@ -6601,6 +6624,7 @@ CONFIG_RUNTIME_TESTING_MENU=y
66016624
# CONFIG_TEST_MEMCAT_P is not set
66026625
# CONFIG_TEST_OBJAGG is not set
66036626
# CONFIG_TEST_MEMINIT is not set
6627+
# CONFIG_TEST_HMM is not set
66046628
# CONFIG_TEST_FREE_PAGES is not set
66056629
# CONFIG_TEST_FPU is not set
66066630
# CONFIG_TEST_CLOCKSOURCE_WATCHDOG is not set

kernel/build/config-arm64

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -687,6 +687,7 @@ CONFIG_ACPI_TABLE_UPGRADE=y
687687
# CONFIG_ACPI_DEBUG is not set
688688
CONFIG_ACPI_PCI_SLOT=y
689689
CONFIG_ACPI_CONTAINER=y
690+
CONFIG_ACPI_HOTPLUG_MEMORY=y
690691
CONFIG_ACPI_HED=y
691692
# CONFIG_ACPI_CUSTOM_METHOD is not set
692693
CONFIG_ACPI_BGRT=y
@@ -870,7 +871,9 @@ CONFIG_MODULE_SIG_FORMAT=y
870871
CONFIG_MODULES=y
871872
# CONFIG_MODULE_DEBUG is not set
872873
# CONFIG_MODULE_FORCE_LOAD is not set
873-
# CONFIG_MODULE_UNLOAD is not set
874+
CONFIG_MODULE_UNLOAD=y
875+
# CONFIG_MODULE_FORCE_UNLOAD is not set
876+
# CONFIG_MODULE_UNLOAD_TAINT_TRACKING is not set
874877
CONFIG_MODVERSIONS=y
875878
CONFIG_ASM_MODVERSIONS=y
876879
CONFIG_MODULE_SRCVERSION_ALL=y
@@ -1062,11 +1065,15 @@ CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
10621065
CONFIG_SPARSEMEM_VMEMMAP=y
10631066
CONFIG_HAVE_FAST_GUP=y
10641067
CONFIG_ARCH_KEEP_MEMBLOCK=y
1068+
CONFIG_NUMA_KEEP_MEMINFO=y
10651069
CONFIG_MEMORY_ISOLATION=y
10661070
CONFIG_EXCLUSIVE_SYSTEM_RAM=y
10671071
CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
10681072
CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
1069-
# CONFIG_MEMORY_HOTPLUG is not set
1073+
CONFIG_MEMORY_HOTPLUG=y
1074+
CONFIG_MEMORY_HOTPLUG_DEFAULT_ONLINE=y
1075+
CONFIG_MEMORY_HOTREMOVE=y
1076+
CONFIG_MHP_MEMMAP_ON_MEMORY=y
10701077
CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y
10711078
CONFIG_SPLIT_PTLOCK_CPUS=4
10721079
CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y
@@ -1076,6 +1083,7 @@ CONFIG_COMPACTION=y
10761083
CONFIG_COMPACT_UNEVICTABLE_DEFAULT=1
10771084
CONFIG_PAGE_REPORTING=y
10781085
CONFIG_MIGRATION=y
1086+
CONFIG_DEVICE_MIGRATION=y
10791087
CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION=y
10801088
CONFIG_ARCH_ENABLE_THP_MIGRATION=y
10811089
CONFIG_CONTIG_ALLOC=y
@@ -1110,6 +1118,9 @@ CONFIG_ARCH_HAS_PTE_DEVMAP=y
11101118
CONFIG_ARCH_HAS_ZONE_DMA_SET=y
11111119
CONFIG_ZONE_DMA=y
11121120
CONFIG_ZONE_DMA32=y
1121+
CONFIG_ZONE_DEVICE=y
1122+
CONFIG_GET_FREE_REGION=y
1123+
CONFIG_DEVICE_PRIVATE=y
11131124
CONFIG_ARCH_USES_HIGH_VMA_FLAGS=y
11141125
CONFIG_ARCH_USES_PG_ARCH_X=y
11151126
CONFIG_VM_EVENT_COUNTERS=y
@@ -1879,6 +1890,7 @@ CONFIG_PCI_BRIDGE_EMUL=y
18791890
CONFIG_PCI_IOV=y
18801891
CONFIG_PCI_PRI=y
18811892
CONFIG_PCI_PASID=y
1893+
# CONFIG_PCI_P2PDMA is not set
18821894
CONFIG_PCI_LABEL=y
18831895
CONFIG_PCI_HYPERV=y
18841896
# CONFIG_PCI_DYNAMIC_OF_NODES is not set
@@ -6462,6 +6474,7 @@ CONFIG_VIRTIO_PCI=y
64626474
CONFIG_VIRTIO_PCI_LEGACY=y
64636475
CONFIG_VIRTIO_PMEM=y
64646476
CONFIG_VIRTIO_BALLOON=y
6477+
# CONFIG_VIRTIO_MEM is not set
64656478
CONFIG_VIRTIO_INPUT=y
64666479
CONFIG_VIRTIO_MMIO=y
64676480
CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y
@@ -6487,6 +6500,7 @@ CONFIG_HYPERV_BALLOON=y
64876500
# Xen driver support
64886501
#
64896502
CONFIG_XEN_BALLOON=y
6503+
CONFIG_XEN_BALLOON_MEMORY_HOTPLUG=y
64906504
CONFIG_XEN_SCRUB_PAGES_DEFAULT=y
64916505
CONFIG_XEN_DEV_EVTCHN=y
64926506
# CONFIG_XEN_BACKEND is not set
@@ -6502,6 +6516,7 @@ CONFIG_SWIOTLB_XEN=y
65026516
CONFIG_XEN_PRIVCMD=y
65036517
CONFIG_XEN_EFI=y
65046518
CONFIG_XEN_AUTO_XLATE=y
6519+
CONFIG_XEN_UNPOPULATED_ALLOC=y
65056520
# CONFIG_XEN_VIRTIO is not set
65066521
# end of Xen driver support
65076522

@@ -7988,6 +8003,9 @@ CONFIG_BLK_DEV_PMEM=y
79888003
CONFIG_ND_CLAIM=y
79898004
CONFIG_ND_BTT=y
79908005
CONFIG_BTT=y
8006+
CONFIG_ND_PFN=y
8007+
CONFIG_NVDIMM_PFN=y
8008+
CONFIG_NVDIMM_DAX=y
79918009
CONFIG_OF_PMEM=y
79928010
CONFIG_DAX=y
79938011
# CONFIG_DEV_DAX is not set
@@ -8086,6 +8104,7 @@ CONFIG_BTRFS_FS_POSIX_ACL=y
80868104
# CONFIG_BTRFS_FS_REF_VERIFY is not set
80878105
# CONFIG_NILFS2_FS is not set
80888106
# CONFIG_F2FS_FS is not set
8107+
# CONFIG_FS_DAX is not set
80898108
CONFIG_FS_POSIX_ACL=y
80908109
CONFIG_EXPORTFS=y
80918110
# CONFIG_EXPORTFS_BLOCK_OPS is not set
@@ -9279,6 +9298,7 @@ CONFIG_RUNTIME_TESTING_MENU=y
92799298
# CONFIG_TEST_MEMCAT_P is not set
92809299
# CONFIG_TEST_OBJAGG is not set
92819300
# CONFIG_TEST_MEMINIT is not set
9301+
# CONFIG_TEST_HMM is not set
92829302
# CONFIG_TEST_FREE_PAGES is not set
92839303
CONFIG_ARCH_USE_MEMTEST=y
92849304
# CONFIG_MEMTEST is not set

0 commit comments

Comments
 (0)