mirror of
				https://kernel.googlesource.com/pub/scm/linux/kernel/git/stable/linux-stable.git
				synced 2025-11-04 07:44:51 +10:00 
			
		
		
		
	Until now arch_numa was directly translating firmware NUMA information to memblock. Using numa_memblks as an intermediate step has a few advantages: * alignment with more battle tested x86 implementation * availability of NUMA emulation * maintaining node information for not yet populated memory Adjust a few places in numa_memblks to compile with 32-bit phys_addr_t and replace current functionality related to numa_add_memblk() and __node_distance() in arch_numa with the implementation based on numa_memblks and add functions required by numa_emulation. [rppt@kernel.org: fix section mismatch] Link: https://lkml.kernel.org/r/ZrO6cExVz1He_yPn@kernel.org [rppt@kernel.org: PFN_PHYS() translation is unnecessary here] Link: https://lkml.kernel.org/r/Zs2T5wkSYO9MGcab@kernel.org Link: https://lkml.kernel.org/r/20240807064110.1003856-25-rppt@kernel.org Signed-off-by: Mike Rapoport (Microsoft) <rppt@kernel.org> Tested-by: Zi Yan <ziy@nvidia.com> # for x86_64 and arm64 Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> Tested-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> [arm64 + CXL via QEMU] Acked-by: Dan Williams <dan.j.williams@intel.com> Acked-by: David Hildenbrand <david@redhat.com> Cc: Alexander Gordeev <agordeev@linux.ibm.com> Cc: Andreas Larsson <andreas@gaisler.com> Cc: Arnd Bergmann <arnd@arndb.de> Cc: Borislav Petkov <bp@alien8.de> Cc: Catalin Marinas <catalin.marinas@arm.com> Cc: Christophe Leroy <christophe.leroy@csgroup.eu> Cc: Dave Hansen <dave.hansen@linux.intel.com> Cc: Davidlohr Bueso <dave@stgolabs.net> Cc: David S. Miller <davem@davemloft.net> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: Heiko Carstens <hca@linux.ibm.com> Cc: Huacai Chen <chenhuacai@kernel.org> Cc: Ingo Molnar <mingo@redhat.com> Cc: Jiaxun Yang <jiaxun.yang@flygoat.com> Cc: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de> Cc: Jonathan Corbet <corbet@lwn.net> Cc: Michael Ellerman <mpe@ellerman.id.au> Cc: Palmer Dabbelt <palmer@dabbelt.com> Cc: Rafael J. Wysocki <rafael@kernel.org> Cc: Rob Herring (Arm) <robh@kernel.org> Cc: Samuel Holland <samuel.holland@sifive.com> Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Vasily Gorbik <gor@linux.ibm.com> Cc: Will Deacon <will@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
		
			
				
	
	
		
			247 lines
		
	
	
		
			8.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			247 lines
		
	
	
		
			8.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
# SPDX-License-Identifier: GPL-2.0
 | 
						|
menu "Generic Driver Options"
 | 
						|
 | 
						|
config AUXILIARY_BUS
 | 
						|
	bool
 | 
						|
 | 
						|
config UEVENT_HELPER
 | 
						|
	bool "Support for uevent helper"
 | 
						|
	help
 | 
						|
	  The uevent helper program is forked by the kernel for
 | 
						|
	  every uevent.
 | 
						|
	  Before the switch to the netlink-based uevent source, this was
 | 
						|
	  used to hook hotplug scripts into kernel device events. It
 | 
						|
	  usually pointed to a shell script at /sbin/hotplug.
 | 
						|
	  This should not be used today, because usual systems create
 | 
						|
	  many events at bootup or device discovery in a very short time
 | 
						|
	  frame. One forked process per event can create so many processes
 | 
						|
	  that it creates a high system load, or on smaller systems
 | 
						|
	  it is known to create out-of-memory situations during bootup.
 | 
						|
 | 
						|
config UEVENT_HELPER_PATH
 | 
						|
	string "path to uevent helper"
 | 
						|
	depends on UEVENT_HELPER
 | 
						|
	default ""
 | 
						|
	help
 | 
						|
	  To disable user space helper program execution at by default
 | 
						|
	  specify an empty string here. This setting can still be altered
 | 
						|
	  via /proc/sys/kernel/hotplug or via /sys/kernel/uevent_helper
 | 
						|
	  later at runtime.
 | 
						|
 | 
						|
config DEVTMPFS
 | 
						|
	bool "Maintain a devtmpfs filesystem to mount at /dev"
 | 
						|
	help
 | 
						|
	  This creates a tmpfs/ramfs filesystem instance early at bootup.
 | 
						|
	  In this filesystem, the kernel driver core maintains device
 | 
						|
	  nodes with their default names and permissions for all
 | 
						|
	  registered devices with an assigned major/minor number.
 | 
						|
	  Userspace can modify the filesystem content as needed, add
 | 
						|
	  symlinks, and apply needed permissions.
 | 
						|
	  It provides a fully functional /dev directory, where usually
 | 
						|
	  udev runs on top, managing permissions and adding meaningful
 | 
						|
	  symlinks.
 | 
						|
	  In very limited environments, it may provide a sufficient
 | 
						|
	  functional /dev without any further help. It also allows simple
 | 
						|
	  rescue systems, and reliably handles dynamic major/minor numbers.
 | 
						|
 | 
						|
	  Notice: if CONFIG_TMPFS isn't enabled, the simpler ramfs
 | 
						|
	  file system will be used instead.
 | 
						|
 | 
						|
config DEVTMPFS_MOUNT
 | 
						|
	bool "Automount devtmpfs at /dev, after the kernel mounted the rootfs"
 | 
						|
	depends on DEVTMPFS
 | 
						|
	help
 | 
						|
	  This will instruct the kernel to automatically mount the
 | 
						|
	  devtmpfs filesystem at /dev, directly after the kernel has
 | 
						|
	  mounted the root filesystem. The behavior can be overridden
 | 
						|
	  with the commandline parameter: devtmpfs.mount=0|1.
 | 
						|
	  This option does not affect initramfs based booting, here
 | 
						|
	  the devtmpfs filesystem always needs to be mounted manually
 | 
						|
	  after the rootfs is mounted.
 | 
						|
	  With this option enabled, it allows to bring up a system in
 | 
						|
	  rescue mode with init=/bin/sh, even when the /dev directory
 | 
						|
	  on the rootfs is completely empty.
 | 
						|
 | 
						|
config DEVTMPFS_SAFE
 | 
						|
	bool "Use nosuid,noexec mount options on devtmpfs"
 | 
						|
	depends on DEVTMPFS
 | 
						|
	help
 | 
						|
	  This instructs the kernel to include the MS_NOEXEC and MS_NOSUID mount
 | 
						|
	  flags when mounting devtmpfs.
 | 
						|
 | 
						|
	  Notice: If enabled, things like /dev/mem cannot be mmapped
 | 
						|
	  with the PROT_EXEC flag. This can break, for example, non-KMS
 | 
						|
	  video drivers.
 | 
						|
 | 
						|
config STANDALONE
 | 
						|
	bool "Select only drivers that don't need compile-time external firmware"
 | 
						|
	default y
 | 
						|
	help
 | 
						|
	  Select this option if you don't have magic firmware for drivers that
 | 
						|
	  need it.
 | 
						|
 | 
						|
	  If unsure, say Y.
 | 
						|
 | 
						|
config PREVENT_FIRMWARE_BUILD
 | 
						|
	bool "Disable drivers features which enable custom firmware building"
 | 
						|
	default y
 | 
						|
	help
 | 
						|
	  Say yes to disable driver features which enable building a custom
 | 
						|
	  driver firmware at kernel build time. These drivers do not use the
 | 
						|
	  kernel firmware API to load firmware (CONFIG_FW_LOADER), instead they
 | 
						|
	  use their own custom loading mechanism. The required firmware is
 | 
						|
	  usually shipped with the driver, building the driver firmware
 | 
						|
	  should only be needed if you have an updated firmware source.
 | 
						|
 | 
						|
	  Firmware should not be being built as part of kernel, these days
 | 
						|
	  you should always prevent this and say Y here. There are only two
 | 
						|
	  old drivers which enable building of its firmware at kernel build
 | 
						|
	  time:
 | 
						|
 | 
						|
	    o CONFIG_WANXL through CONFIG_WANXL_BUILD_FIRMWARE
 | 
						|
	    o CONFIG_SCSI_AIC79XX through CONFIG_AIC79XX_BUILD_FIRMWARE
 | 
						|
 | 
						|
source "drivers/base/firmware_loader/Kconfig"
 | 
						|
 | 
						|
config WANT_DEV_COREDUMP
 | 
						|
	bool
 | 
						|
	help
 | 
						|
	  Drivers should "select" this option if they desire to use the
 | 
						|
	  device coredump mechanism.
 | 
						|
 | 
						|
config ALLOW_DEV_COREDUMP
 | 
						|
	bool "Allow device coredump" if EXPERT
 | 
						|
	default y
 | 
						|
	help
 | 
						|
	  This option controls if the device coredump mechanism is available or
 | 
						|
	  not; if disabled, the mechanism will be omitted even if drivers that
 | 
						|
	  can use it are enabled.
 | 
						|
	  Say 'N' for more sensitive systems or systems that don't want
 | 
						|
	  to ever access the information to not have the code, nor keep any
 | 
						|
	  data.
 | 
						|
 | 
						|
	  If unsure, say Y.
 | 
						|
 | 
						|
config DEV_COREDUMP
 | 
						|
	bool
 | 
						|
	default y if WANT_DEV_COREDUMP
 | 
						|
	depends on ALLOW_DEV_COREDUMP
 | 
						|
 | 
						|
config DEBUG_DRIVER
 | 
						|
	bool "Driver Core verbose debug messages"
 | 
						|
	depends on DEBUG_KERNEL
 | 
						|
	help
 | 
						|
	  Say Y here if you want the Driver core to produce a bunch of
 | 
						|
	  debug messages to the system log. Select this if you are having a
 | 
						|
	  problem with the driver core and want to see more of what is
 | 
						|
	  going on.
 | 
						|
 | 
						|
	  If you are unsure about this, say N here.
 | 
						|
 | 
						|
config DEBUG_DEVRES
 | 
						|
	bool "Managed device resources verbose debug messages"
 | 
						|
	depends on DEBUG_KERNEL
 | 
						|
	help
 | 
						|
	  This option enables kernel parameter devres.log. If set to
 | 
						|
	  non-zero, devres debug messages are printed. Select this if
 | 
						|
	  you are having a problem with devres or want to debug
 | 
						|
	  resource management for a managed device. devres.log can be
 | 
						|
	  switched on and off from sysfs node.
 | 
						|
 | 
						|
	  If you are unsure about this, Say N here.
 | 
						|
 | 
						|
config DEBUG_TEST_DRIVER_REMOVE
 | 
						|
	bool "Test driver remove calls during probe (UNSTABLE)"
 | 
						|
	depends on DEBUG_KERNEL
 | 
						|
	help
 | 
						|
	  Say Y here if you want the Driver core to test driver remove functions
 | 
						|
	  by calling probe, remove, probe. This tests the remove path without
 | 
						|
	  having to unbind the driver or unload the driver module.
 | 
						|
 | 
						|
	  This option is expected to find errors and may render your system
 | 
						|
	  unusable. You should say N here unless you are explicitly looking to
 | 
						|
	  test this functionality.
 | 
						|
 | 
						|
config PM_QOS_KUNIT_TEST
 | 
						|
	bool "KUnit Test for PM QoS features" if !KUNIT_ALL_TESTS
 | 
						|
	depends on KUNIT=y
 | 
						|
	default KUNIT_ALL_TESTS
 | 
						|
 | 
						|
config HMEM_REPORTING
 | 
						|
	bool
 | 
						|
	default n
 | 
						|
	depends on NUMA
 | 
						|
	help
 | 
						|
	  Enable reporting for heterogeneous memory access attributes under
 | 
						|
	  their non-uniform memory nodes.
 | 
						|
 | 
						|
source "drivers/base/test/Kconfig"
 | 
						|
 | 
						|
config SYS_HYPERVISOR
 | 
						|
	bool
 | 
						|
	default n
 | 
						|
 | 
						|
config GENERIC_CPU_DEVICES
 | 
						|
	bool
 | 
						|
	default n
 | 
						|
 | 
						|
config GENERIC_CPU_AUTOPROBE
 | 
						|
	bool
 | 
						|
 | 
						|
config GENERIC_CPU_VULNERABILITIES
 | 
						|
	bool
 | 
						|
 | 
						|
config SOC_BUS
 | 
						|
	bool
 | 
						|
	select GLOB
 | 
						|
 | 
						|
source "drivers/base/regmap/Kconfig"
 | 
						|
 | 
						|
config DMA_SHARED_BUFFER
 | 
						|
	bool
 | 
						|
	default n
 | 
						|
	select IRQ_WORK
 | 
						|
	help
 | 
						|
	  This option enables the framework for buffer-sharing between
 | 
						|
	  multiple drivers. A buffer is associated with a file using driver
 | 
						|
	  APIs extension; the file's descriptor can then be passed on to other
 | 
						|
	  driver.
 | 
						|
 | 
						|
config DMA_FENCE_TRACE
 | 
						|
	bool "Enable verbose DMA_FENCE_TRACE messages"
 | 
						|
	depends on DMA_SHARED_BUFFER
 | 
						|
	help
 | 
						|
	  Enable the DMA_FENCE_TRACE printks. This will add extra
 | 
						|
	  spam to the console log, but will make it easier to diagnose
 | 
						|
	  lockup related problems for dma-buffers shared across multiple
 | 
						|
	  devices.
 | 
						|
 | 
						|
config GENERIC_ARCH_TOPOLOGY
 | 
						|
	bool
 | 
						|
	help
 | 
						|
	  Enable support for architectures common topology code: e.g., parsing
 | 
						|
	  CPU capacity information from DT, usage of such information for
 | 
						|
	  appropriate scaling, sysfs interface for reading capacity values at
 | 
						|
	  runtime.
 | 
						|
 | 
						|
config GENERIC_ARCH_NUMA
 | 
						|
	bool
 | 
						|
	select NUMA_MEMBLKS
 | 
						|
	help
 | 
						|
	  Enable support for generic NUMA implementation. Currently, RISC-V
 | 
						|
	  and ARM64 use it.
 | 
						|
 | 
						|
config FW_DEVLINK_SYNC_STATE_TIMEOUT
 | 
						|
	bool "sync_state() behavior defaults to timeout instead of strict"
 | 
						|
	help
 | 
						|
	  This is build time equivalent of adding kernel command line parameter
 | 
						|
	  "fw_devlink.sync_state=timeout". Give up waiting on consumers and
 | 
						|
	  call sync_state() on any devices that haven't yet received their
 | 
						|
	  sync_state() calls after deferred_probe_timeout has expired or by
 | 
						|
	  late_initcall() if !CONFIG_MODULES. You should almost always want to
 | 
						|
	  select N here unless you have already successfully tested with the
 | 
						|
	  command line option on every system/board your kernel is expected to
 | 
						|
	  work on.
 | 
						|
 | 
						|
endmenu
 |