* refs/heads/tmp-925907e: ANDROID: GKI: Remove CONFIG_LOCALVERSION="-mainline" on 6.1 branch ANDROID: gki_defconfig: sample large page_alloc allocations with HW_TAGS KASAN FROMLIST: kasan: allow sampling page_alloc allocations for HW_TAGS ANDROID: fscrypt, blk-crypto: drop HW-wrapped key compatibility check ANDROID: GKI: Enable CONFIG_NF_CONNTRACK_PROCFS ANDROID: mm: arm64: Allow remapping logical mappings as uncached ANDROID: fuse-bpf: Fix crash from assuming iter is kvec ANDROID: fuse-bpf: Add /sys/fs flags for fuse-bpf version ANDROID: fuse-bpf: Make sure to declare functions ANDROID: fuse-bpf v1.1 ANDROID: KVM: arm64: Add helper for pKVM modules addr conversion ANDROID: timer: Add vendor hook for timer calc index ANDROID: KVM: arm64: Fix calculation for number of relocs in .hyp.reloc ANDROID: KVM: arm64: Ignore modules with empty .hyp.text section Revert "ANDROID: KVM: arm64: Make gen-hyprel emit delimiters" ANDROID: KVM: arm64: Resolve hyp module addresses using ELF sections ANDROID: dma-buf: Add vendorhook to allow mmaping more memory than a DMA-BUF holds ANDROID: fips140: add fips140_lab_util program ANDROID: fips140: add kernel crypto module ANDROID: arm64: simd: omit capability check in may_use_simd() ANDROID: arm64: disable LSE when building the FIPS140 module ANDROID: arm64: only permit certain alternatives in the FIPS140 module ANDROID: jump_label: disable jump labels in fips140.ko ANDROID: crypto: define fips_enabled to 1 in fips140.ko ANDROID: crypto: lib/aes - add vendor hooks for AES library routines ANDROID: crypto: lib/sha256 - add vendor hook for sha256() routine ANDROID: kbuild: customize module linker script for fips140 module ANDROID: GKI: Remove usage of __GENKSYMS__ in vendor hooks source ANDROID: iommu: Add vendor hook to alloc_iova() ANDROID: iommu: Add vendor hook to select alloc_iova algorithm ANDROID: iommu: Add a vendor field in iova_domain ANDROID: usb: gadget: f_accessory: update SS/SSP descriptors ANDROID: kbuild: Search external devicetree path when running clean target Revert "ANDROID: KVM: arm64: Coalesce host stage2 entries on ownership reclaim" ANDROID: KVM: arm64: Keep the pKVM private range under 1GiB ANDROID: KVM: arm64: Specify stage-2-protected regions in DT ANDROID: KVM: arm64: Introduce concept of pKVM moveable regions ANDROID: KVM: arm64: Correctly flag MMIO pages as PKVM_PAGE_RESTRICTED_PROT ANDROID: KVM: arm64: Introduce default_host_prot() ANDROID: KVM: arm64: Introduce a hyp panic module notifier ANDROID: KVM: arm64: Expose linear map APIs to pKVM modules ANDROID: scheduler: add vendor-specific wake flag ANDROID: Add a vendor hook that allow a module to modify the wake flag ANDROID: futex: Add vendor hook for wait queue ANDROID: rwsem: Add vendor hook to the rw-semaphore FROMLIST: sched/pelt: Introduce PELT multiplier ANDROID: GKI: Export clocksource_mmio_init ANDROID: update "fscrypt: add support for hardware-wrapped keys" to v7 ANDROID: update "dm: add support for passing through derive_sw_secret" ANDROID: update "block: add basic hardware-wrapped key support" to v7 ANDROID: dm-default-key: update for blk-crypto changes UPSTREAM: blk-crypto: Add a missing include directive UPSTREAM: blk-crypto: move internal only declarations to blk-crypto-internal.h BACKPORT: blk-crypto: add a blk_crypto_config_supported_natively helper BACKPORT: blk-crypto: don't use struct request_queue for public interfaces f2fs: let's avoid panic if extent_tree is not created f2fs: should use a temp extent_info for lookup f2fs: don't mix to use union values in extent_info f2fs: initialize extent_cache parameter f2fs: fix to avoid NULL pointer dereference in f2fs_issue_flush() ANDROID: update the BRANCH constant ANDROID: inline isolate_and_split_free_page ANDROID: mm: compaction: fix isolate_and_split_free_page() redefinition ANDROID: implement wrapper for reverse migration ANDROID: KVM: Remove function_nocfi() leftover in pKVM modules ANDROID: KVM: arm64: Always declare pKVM module loading functions ANDROID: GKI: Source GKI_BUILD_CONFIG_FRAGMENT after setting all variables ANDROID: cpuidle: export cpuidle_driver_state_disabled UPSTREAM: mm/madvise: fix madvise_pageout for private file mappings ANDROID: KVM: arm64: Allow trap handling from pKVM modules ANDROID: KVM: arm64: Notify pKVM modules of PSCI events ANDROID: KVM: arm64: Allow handling illegal aborts from pKVM modules ANDROID: KVM: arm64: Allow SMC handling from pKVM modules fscrypt: add additional documentation for SM4 support fscrypt: remove unused Speck definitions fscrypt: Add SM4 XTS/CTS symmetric algorithm support blk-crypto: Add support for SM4-XTS blk crypto mode blk-crypto: pass a gendisk to blk_crypto_sysfs_{,un}register fscrypt: add comment for fscrypt_valid_enc_modes_v1() blk-crypto: Add a missing include directive blk-crypto: move internal only declarations to blk-crypto-internal.h blk-crypto: add a blk_crypto_config_supported_natively helper blk-crypto: don't use struct request_queue for public interfaces fscrypt: pass super_block to fscrypt_put_master_key_activeref() Linux 6.1.1 KEYS: encrypted: fix key instantiation with user-provided data cifs: fix oops during encryption usb: dwc3: pci: Update PCIe device ID for USB3 controller on CPU sub-system for Raptor Lake usb: typec: ucsi: Resume in separate work igb: Initialize mailbox message for VF reset staging: r8188eu: fix led register settings xhci: Apply XHCI_RESET_TO_DEFAULT quirk to ADL-N ALSA: hda/realtek: fix mute/micmute LEDs for a HP ProBook USB: serial: f81534: fix division by zero on line-speed change USB: serial: f81232: fix division by zero on line-speed change USB: serial: cp210x: add Kamstrup RF sniffer PIDs USB: serial: option: add Quectel EM05-G modem usb: gadget: uvc: Prevent buffer overflow in setup handler udf: Fix extending file within last block udf: Do not bother looking for prealloc extents if i_lenExtents matches i_size udf: Fix preallocation discarding at indirect extent boundary udf: Discard preallocation before extending file with a hole irqchip/ls-extirq: Fix endianness detection mips: ralink: mt7621: do not use kzalloc too early mips: ralink: mt7621: soc queries and tests as functions mips: ralink: mt7621: define MT7621_SYSC_BASE with __iomem PCI: mt7621: Add sentinel to quirks table libbpf: Fix uninitialized warning in btf_dump_dump_type_data x86/vdso: Conditionally export __vdso_sgx_enter_enclave() Revert "ANDROID: GKI: remove CONFIG_CMDLINE_EXTEND from arm64 gki_defconfig" ANDROID: Revert "arm64: Drop support for CMDLINE_EXTEND" ANDROID: of: Support CONFIG_CMDLINE_EXTEND config option FROMGIT: asm-generic/io: Add _RET_IP_ to MMIO trace for more accurate debug info ANDROID: firmware_loader: Add support for customer firmware paths ANDROID: GKI: Enable CONFIG_RT_SOFTIRQ_AWARE_SCHED FROMLIST: trace: Add trace points for tasklet entry/exit FROMLIST: softirq: defer softirq processing to ksoftirqd if CPU is busy with RT FROMLIST: sched: Avoid placing RT threads on cores handling long softirqs FROMLIST: softirq: Add generic accessor to percpu softirq_pending data ANDROID: sched/cpuset: Add vendor hook to change tasks affinity ANDROID: cpuset: Make cpusets restore on hotplug fsverity: simplify fsverity_get_digest() fsverity: stop using PG_error to track error status f2fs: reset wait_ms to default if any of the victims have been selected f2fs: fix some format WARNING in debug.c and sysfs.c f2fs: don't call f2fs_issue_discard_timeout() when discard_cmd_cnt is 0 in f2fs_put_super() f2fs: fix iostat parameter for discard f2fs: Fix spelling mistake in label: free_bio_enrty_cache -> free_bio_entry_cache f2fs: add block_age-based extent cache f2fs: allocate the extent_cache by default f2fs: refactor extent_cache to support for read and more f2fs: remove unnecessary __init_extent_tree f2fs: move internal functions into extent_cache.c f2fs: specify extent cache for read explicitly f2fs: introduce f2fs_is_readonly() for readability f2fs: remove F2FS_SET_FEATURE() and F2FS_CLEAR_FEATURE() macro f2fs: do some cleanup for f2fs module init MAINTAINERS: Add f2fs bug tracker link f2fs: remove the unused flush argument to change_curseg f2fs: open code allocate_segment_by_default f2fs: remove struct segment_allocation default_salloc_ops f2fs: introduce discard_urgent_util sysfs node f2fs: define MIN_DISCARD_GRANULARITY macro f2fs: init discard policy after thread wakeup f2fs: avoid victim selection from previous victim section f2fs: truncate blocks in batch in __complete_revoke_list() f2fs: make __queue_discard_cmd() return void f2fs: fix description about discard_granularity node f2fs: move set_file_temperature into f2fs_new_inode f2fs: fix to enable compress for newly created file if extension matches f2fs: set zstd compress level correctly f2fs: change type for 'sbi->readdir_ra' f2fs: cleanup for 'f2fs_tuning_parameters' function f2fs: fix to alloc_mode changed after remount on a small volume device f2fs: remove submit label in __submit_discard_cmd() f2fs: fix to do sanity check on i_extra_isize in is_alive() f2fs: introduce F2FS_IOC_START_ATOMIC_REPLACE f2fs: fix to set flush_merge opt and show noflush_merge f2fs: initialize locks earlier in f2fs_fill_super() f2fs: optimize iteration over sparse directories f2fs: fix to avoid accessing uninitialized spinlock f2fs: correct i_size change for atomic writes f2fs: add proc entry to show discard_plist info f2fs: allow to read node block after shutdown f2fs: replace ternary operator with max() f2fs: replace gc_urgent_high_remaining with gc_remaining_trials f2fs: add missing bracket in doc f2fs: use sysfs_emit instead of sprintf f2fs: introduce gc_mode sysfs node f2fs: fix to destroy sbi->post_read_wq in error path of f2fs_fill_super() f2fs: fix return val in f2fs_start_ckpt_thread() f2fs: fix the msg data type f2fs: fix the assign logic of iocb f2fs: Fix typo in comments f2fs: introduce max_ordered_discard sysfs node f2fs: allow to set compression for inlined file f2fs: add barrier mount option f2fs: fix normal discard process f2fs: cleanup in f2fs_create_flush_cmd_control() f2fs: fix gc mode when gc_urgent_high_remaining is 1 f2fs: remove batched_trim_sections node f2fs: support fault injection for f2fs_is_valid_blkaddr() f2fs: fix to invalidate dcc->f2fs_issue_discard in error path f2fs: Fix the race condition of resize flag between resizefs f2fs: let's avoid to get cp_rwsem twice by f2fs_evict_inode by d_invalidate f2fs: should put a page when checking the summary info ANDROID: GKI: Update GKI modules protected exports ANDROID: GKI: Add list of protected GKI modules ANDROID: GKI: Only protect exports if KMI symbols are present ANDROID: GKI: Protect exports of protected GKI modules UPSTREAM: crypto: algboss - compile out test-related code when tests disabled UPSTREAM: crypto: kdf - silence noisy self-test UPSTREAM: crypto: kdf - skip self-test when tests disabled UPSTREAM: crypto: api - compile out crypto_boot_test_finished when tests disabled UPSTREAM: crypto: algboss - optimize registration of internal algorithms UPSTREAM: crypto: api - optimize algorithm registration when self-tests disabled ANDROID: KVM: arm64: Add support for non-cacheable mappings ANDROID: KVM: arm64: Don't filter out KVM_FUNC_MMIO_GUARD_MAP hypercalls ANDROID: KVM: arm64: Coalesce host stage2 entries on ownership reclaim ANDROID: KVM: arm64: Move kvm_pte_table to the common header ANDROID: KVM: arm64: Have different callbacks for PTE manipulation ANDROID: KVM: arm64: Move PTE attributes definitions to the common header ANDROID: KVM: arm64: Split stage2_put_pte function ANDROID: KVM: arm64: Pass the pagetable struct as an argument to the freewalker ANDROID: KVM: arm64: Fix link with CONFIG_MODULES=n ANDROID: KVM: arm64: Fix build with CONFIG_MODULES=n ANDROID: KVM: arm64: Block module loading based on cmdline or HVC ANDROID: KVM: arm64: Support unaligned fixmap in the nVHE hyp ANDROID: KVM: arm64: Add support for custom hypercall registration ANDROID: KVM: arm64: Return a token for a pKVM module registration ANDROID: KVM: arm64: Introduce hyp_protect_host_page() ANDROID: KVM: arm64: Add a permission fault handler ANDROID: KVM: arm64: Introduce PKVM_PAGE_RESTRICTED_PROT ANDROID: KVM: arm64: Expose kvm_flush_dcache_to_poc() in module_ops ANDROID: KVM: arm64: Expose hyp fixmap helpers in module_ops ANDROID: KVM: arm64: Expose puts and putx64 in pKVM ABI ANDROID: KVM: arm64: Add serial framework for pKVM ANDROID: KVM: arm64: Expose __pkvm_create_private_mapping to pKVM modules ANDROID: KVM: arm64: Include .note.gnu.property in .hyp.rodata ANDROID: KVM: arm64: Allow loading modules to the pKVM hypervisor ANDROID: KVM: arm64: Refactor nvhe Makefile ANDROID: KVM: arm64: Make gen-hyprel emit delimiters ANDROID: KVM: arm64: Move gen-hyprel into a tool directory ANDROID: KVM: arm64: Add mapping removal interface for nVHE hyp ANDROID: arm64: patching: Add aarch64_addr_write() ANDROID: arm64: patching: Refactor __aarch64_insn_write() ANDROID: KVM: arm64: Use correct pkvm owners type ANDROID: KVM: arm64: s2mpu: S2MPU V9 code ANDROID: KVM: arm64: s2mpu: Add MMIO and defines for V9 S2MPU ANDROID: KVM: arm64: s2mpu: rename versions to match major arch ANDROID: KVM: arm64: s2mpu: Abstract register initialization with version_ops ANDROID: KVM: arm64: s2mpu: Pass driver version during init ANDROID: KVM: arm64: s2mpu: Add SMPT and MPT functions to pgtable abstraction ANDROID: KVM: arm64: s2mpu: Abstract page table ops ANDROID: KVM: arm64: iommu: Support dynamic driver registration in IOMMU layer ANDROID: KVM: arm64: Use 32-bit function ID for PSCI MEM_PROTECT call Revert "ANDROID: virtio_balloon: New module parameter "pkvm"" ANDROID: KVM: arm64: s2mpu: Fix SYNC latency regression ANDROID: KVM: arm64: iommu: Add host_stage2_idmap_complete ANDROID: KVM: arm64: Don't update IOMMUs unnecessarily ANDROID: KVM: arm64: s2mpu: Add SysMMU_SYNC timeout ANDROID: KVM: arm64: s2mpu: Allow r/o access to control regs ANDROID: KVM: arm64: s2mpu: Allow reading MPTC entries ANDROID: KVM: arm64: s2mpu: Allow L1ENTRY_* r/o access ANDROID: KVM: arm64: s2mpu: Refactor DABT handler ANDROID: KVM: arm64: s2mpu: Extract L1ENTRY_* consts ANDROID: KVM: arm64: s2mpu: Initialize MPTs to PROT_RW ANDROID: KVM: arm64: iommu: Optimize snapshot_host_stage2 ANDROID: KVM: arm64: iommu: Fix upper bound of PT walk ANDROID: KVM: arm64: iommu: Add pkvm_iommu_finalize ANDROID: KVM: arm64: iommu: No powered check in DABT handler ANDROID: KVM: arm64: s2mpu: Create SysMMU_SYNC driver ANDROID: KVM: arm64: iommu: Create parent/child relation ANDROID: KVM: arm64: iommu: Run validate() on struct pkvm_iommu ANDROID: KVM: arm64: iommu: Create private mapping last ANDROID: KVM: arm64: iommu: Free memory on registration error ANDROID: KVM: arm64: iommu: Harden __pkvm_iommu_pm_notify ANDROID: KVM: arm64: Remove unused IOMMU hooks, kvm_iommu_ops ANDROID: KVM: arm64: s2mpu: Implement host stage2 idmap callbacks ANDROID: KVM: arm64: s2mpu: Move mpt_update_flags into FMPT ANDROID: KVM: arm64: s2mpu: Replace DABT handler with callback ANDROID: KVM: arm64: s2mpu: Replace SMC handler with PM callbacks ANDROID: KVM: arm64: s2mpu: Add driver initializer ANDROID: KVM: arm64: s2mpu: Remove host_stage2_adjust_mmio_range ANDROID: KVM: arm64: s2mpu: Replace struct s2mpu with pkvm_iommu ANDROID: KVM: arm64: s2mpu: Remove all EL1 code ANDROID: KVM: arm64: s2mpu: Move SFR init to EL2 ANDROID: KVM: arm64: iommu: Snapshot host stage-2 at driver init ANDROID: KVM: arm64: iommu: Host stage-2 idmap callbacks ANDROID: KVM: arm64: iommu: DABT handler callback ANDROID: KVM: arm64: iommu: Suspend/resume callbacks ANDROID: KVM: arm64: iommu: Register device hypcall ANDROID: KVM: arm64: iommu: Avoid mapping devices in host stage-2 ANDROID: KVM: arm64: iommu: Driver initialization hypcall ANDROID: KVM: arm64: Fix host MMIO DABT handler IPA ANDROID: KVM: arm64: Wait on S2MPU.STATUS after invalidation ANDROID: KVM: arm64: Remove kernel-doc in S2MPU driver ANDROID: KVM: arm64: Initialize pkvm_pgtable.mm_ops earlier ANDROID: KVM: arm64: Mark select_iommu_ops static ANDROID: Enable KVM_S2MPU in gki_defconfig ANDROID: KVM: arm64: Unmap S2MPU MMIO registers from host stage-2 ANDROID: KVM: arm64: Implement MMIO handler in S2MPU driver ANDROID: KVM: arm64: Modify S2MPU MPT in 'host_stage2_set_owner' ANDROID: KVM: arm64: Set up S2MPU Memory Protection Table ANDROID: KVM: arm64: Reprogram S2MPUs in 'host_smc_handler' ANDROID: KVM: arm64: Enable S2MPUs in __pkvm_init_stage2_iommu ANDROID: KVM: arm64: Copy S2MPU configuration to hyp ANDROID: KVM: arm64: Implement IRQ handler for S2MPU faults ANDROID: KVM: arm64: Allocate context IDs for valid VIDs ANDROID: KVM: arm64: Read and check S2MPU_VERSION ANDROID: KVM: arm64: Parse S2MPU MMIO region ANDROID: KVM: arm64: Create empty S2MPU driver ANDROID: KVM: arm64: Add 'host_stage2_adjust_mmio_range' to kvm_iommu_ops ANDROID: KVM: arm64: Add 'host_mmio_dabt_handler' to kvm_iommu_ops ANDROID: KVM: arm64: Add 'host_stage2_set_owner' to kvm_iommu_ops ANDROID: KVM: arm64: Add 'host_smc_handler' to kvm_iommu_ops ANDROID: KVM: arm64: Introduce IOMMU driver infrastructure ANDROID: KVM: arm64: Update pKVM hyp state series to v6 ANDROID: KVM: arm64: Add protected_shared_mem statistic ANDROID: KVM: arm64: count KVM s2 mmu usage in nVHE protected mode ANDROID: KVM: arm64: Add protected_hyp_mem VM statistic ANDROID: KVM: arm64: Fix sparse __percpu warning ANDROID: KVM: arm64: Relax SMCCC version check during FF-A proxy init ANDROID: KVM: arm64: Increase size of FF-A buffer BACKPORT: FROMLIST: KVM: arm64: pkvm: Add support for fragmented FF-A descriptors FROMLIST: KVM: arm64: Handle FFA_MEM_LEND calls from the host FROMLIST: KVM: arm64: Handle FFA_MEM_RECLAIM calls from the host FROMLIST: KVM: arm64: Handle FFA_MEM_SHARE calls from the host BACKPORT: FROMLIST: KVM: arm64: Add FF-A helpers to share/unshare memory with secure world FROMLIST: KVM: arm64: Handle FFA_RXTX_MAP and FFA_RXTX_UNMAP calls from the host FROMLIST: KVM: arm64: Allocate pages for hypervisor FF-A mailboxes FROMLIST: KVM: arm64: Handle FFA_FEATURES call from the host BACKPORT: FROMLIST: KVM: arm64: Probe FF-A version and host/hyp partition ID during init FROMLIST: KVM: arm64: Block unsafe FF-A calls from the host FROMLIST: firmware: arm_ffa: Move comment before the field it is documenting FROMLIST: firmware: arm_ffa: Move constants to header file ANDROID: KVM: arm64: Issue CMOs when tearing down shadow pages ANDROID: KVM: arm64: Use PSCI MEM_PROTECT to zap guest pages on reset ANDROID: KVM: arm64: Check IPA range for pvmfw during guest donation ANDROID: KVM: arm64: Use fixmap when poisoning pvmfw pages ANDROID: KVM: arm64: Rename pkvm_clear_pvmfw_pages() ANDROID: KVM: arm64: Rename hyp_zero_page() and make available as helper ANDROID: KVM: arm64: Don't check for hyp_fixmap_map() returning NULL ANDROID: virtio_balloon: Do not clear VIRTIO_F_ACCESS_PLATFORM ANDROID: virtio_balloon: New module parameter "pkvm" ANDROID: KVM: arm64: Introduce kvm_has_memrelinquish_services ANDROID: KVM: arm64: Flush nVHE hyp_vcpu memcache ANDROID: KVM: arm64: Avoid unnecessary unmap walk in MEM_RELINQUISH hypercall ANDROID: KVM: arm64: Strictly check page type in MEM_RELINQUISH hypercall ANDROID: KVM: Include prototype for page_relinquish before definition ANDROID: arm64: ioremap/iounmap use stage-2 granule size ANDROID: arm64: Check if pfn is valid for all ioremap loop iterations ANDROID: arm64: Auto-enroll MMIO guard on protected vms ANDROID: KVM: arm64: Add some documentation for the MMIO guard feature ANDROID: KVM: arm64: Plumb MMIO checking into the fault handling ANDROID: KVM: arm64: pkvm: Wire MMIO guard hypercalls ANDROID: KVM: arm64: pkvm: Add MMIO guard infrastructure ANDROID: KVM: arm64: Introduce KVM_ARCH_FLAG_MMIO_GUARD flag ANDROID: KVM: arm64: Expose topup_hyp_memcache() to the rest of KVM ANDROID: KVM: arm64: Define MMIO guard hypercalls ANDROID: KVM: arm64: FAR_EL2 mask as a define ANDROID: KVM: arm64: Turn kvm_pgtable_stage2_set_owner into kvm_pgtable_stage2_annotate ANDROID: memory relinquish: Fix build dependencies ANDROID: KVM: arm64: Monitor Debug support for non-protected guests ANDROID: KVM: arm64: Factor out code for saving/restoring guest debug regs ANDROID: KVM: arm64: Flush the vcpu iflags for non-protected VMs ANDROID: virtio_balloon: Do not translate reported pages through DMA API ANDROID: KVM: arm64: balloon: Notify hyp before reporting free pages to host ANDROID: KVM: arm64: memory balloon: Notify hyp when ballooning ANDROID: Define mem_relinquish interface for releasing memory to a hypervisor. ANDROID: KVM: arm64: Implement MEM_RELINQUISH SMCCC hypercall ANDROID: KVM: arm64: Turn llist of pinned pages into an rb-tree FROMLIST: KVM: arm64: pkvm: Fixup boot mode to reflect that the kernel resumes from EL1 ANDROID: KVM: arm64: Add .hyp.data section ANDROID: KVM: arm64: relay entropy requests from protected guests directly to secure ANDROID: KVM: arm64: Introduce KVM_CAP_ARM_PROTECTED_VM to set/query PVM firmware ANDROID: KVM: arm64: Reset primary vCPU according to PVM firmware boot protocol ANDROID: KVM: arm64: Copy pvmfw into guest pages during donation from the host ANDROID: KVM: arm64: Clear pvmfw pages on clean host shutdown ANDROID: KVM: arm64: Ignore length of 0 in kvm_flush_dcache_to_poc() ANDROID: KVM: arm64: Unmap PVM firmware from host stage-2 during de-privilege ANDROID: KVM: arm64: Parse reserved-memory node for pkvm guest firmware region ANDROID: Documentation: KVM: Add some documentation for Protected KVM on arm64 ANDROID: BACKPORT: KVM: arm64: Introduce KVM_VM_TYPE_ARM_PROTECTED machine type for PVMs ANDROID: KVM: arm64: Expose memory sharing hypercalls to protected guests ANDROID: KVM: arm64: Reformat/beautify PTP hypercall documentation ANDROID: KVM: arm64: Document the KVM/arm64-specific calls in hypercalls.rst ANDROID: KVM: arm64: Rename firmware pseudo-register documentation file ANDROID: KVM: arm64: Extend memory sharing to allow guest-to-host transitions ANDROID: KVM: arm64: Avoid BBM when changing only s/w bits in Stage-2 PTE ANDROID: KVM: arm64: Support TLB invalidation in guest context ANDROID: KVM: arm64: Inject SIGSEGV on illegal accesses ANDROID: KVM: arm64: Refactor enter_exception64() ANDROID: KVM: arm64: Add is_pkvm_initialized() helper ANDROID: KVM: arm64: Don't expose TLBI hypercalls after de-privilege ANDROID: KVM: arm64: Handle PSCI for protected VMs in EL2 ANDROID: KVM: arm64: Factor out vcpu_reset code for core registers and PSCI ANDROID: KVM: arm64: Move some kvm_psci functions to a shared header ANDROID: KVM: arm64: Move pstate reset values to kvm_arm.h ANDROID: KVM: arm64: Add HVC handling for protected guests at EL2 ANDROID: KVM: arm64: Track the SVE state in the hypervisor vcpu structure ANDROID: KVM: arm64: Initialize hypervisor vm state at EL2 ANDROID: KVM: arm64: Refactor kvm_vcpu_enable_ptrauth() for hyp use ANDROID: KVM: arm64: Do not update virtual timer state for protected VMs ANDROID: KVM: arm64: Move vgic state between host and hypervisor vcpu structures ANDROID: KVM: arm64: Add EL2 entry/exit handlers for pKVM guests ANDROID: KVM: arm64: Donate memory to protected guests ANDROID: KVM: arm64: Force injection of a data abort on NISV MMIO exit ANDROID: KVM: arm64: Advertise GICv3 sysreg interface to protected guests ANDROID: KVM: arm64: Fix initializing traps in protected mode ANDROID: KVM: arm64: Move pkvm_vcpu_init_traps to hyp vcpu init ANDROID: KVM: arm64: Reset sysregs for protected VMs ANDROID: KVM: arm64: Refactor reset_mpidr to extract its computation ANDROID: KVM: arm64: Do not support MTE for protected VMs ANDROID: KVM: arm64: Restrict protected VM capabilities ANDROID: KVM: arm64: Trap debug break and watch from guest ANDROID: KVM: arm64: Check directly whether the vcpu is protected ANDROID: KVM: arm64: Reduce host/hyp vcpu state copying ANDROID: KVM: arm64: Lazy host FP save/restore ANDROID: KVM: arm64: Reintroduce __sve_save_state ANDROID: KVM: arm64: Introduce lazy-ish state sync for non-protected VMs ANDROID: KVM: arm64: Introduce per-EC entry/exit handlers ANDROID: KVM: arm64: Ensure that TLBs and I-cache are private to each vcpu ANDROID: KVM: arm64: Add hyp per_cpu variable to track current physical cpu number ANDROID: KVM: arm64: Skip __kvm_adjust_pc() for protected vcpus ANDROID: KVM: arm64: Add current host and hyp vCPU lookup primitive ANDROID: KVM: arm64: Introduce the pkvm_vcpu_{load,put} hypercalls ANDROID: KVM: arm64: Add the {flush,sync}_hyp_timer_state() primitives ANDROID: KVM: arm64: Introduce predicates to check for protected state ANDROID: KVM: arm64: Add the {flush,sync}_hyp_vgic_state() primitives ANDROID: KVM: arm64: Simplify vgic-v3 hypercalls ANDROID: KVM: arm64: Make vcpu_{read,write}_sys_reg available to HYP code ANDROID: KVM: arm64: Split up nvhe/fixed_config.h ANDROID: KVM: arm64: Extend memory donation to allow host-to-guest transitions ANDROID: KVM: arm64: Handle guest stage-2 page-tables entirely at EL2 ANDROID: KVM: arm64: Disallow dirty logging and RO memslots with pKVM ANDROID: KVM: arm64: Do not allow memslot changes after first VM run under pKVM ANDROID: KVM: arm64: Check for PTE validity when checking for executable/cacheable ANDROID: KVM: arm64: Extend memory sharing to allow host-to-guest transitions ANDROID: KVM: arm64: Provide a hypercall for the host to reclaim guest memory ANDROID: KVM: arm64: Add PC_UPDATE_REQ flags covering all PC updates ANDROID: KVM: arm64: Add vcpu flag copy primitive ANDROID: KVM: arm64: Repurpose a byte of 'order' for flags in 'struct hyp_page' FROMLIST: KVM: arm64: Use the pKVM hyp vCPU structure in handle___kvm_vcpu_run() FROMLIST: KVM: arm64: Don't unnecessarily map host kernel sections at EL2 FROMLIST: KVM: arm64: Explicitly map 'kvm_vgic_global_state' at EL2 FROMLIST: KVM: arm64: Maintain a copy of 'kvm_arm_vmid_bits' at EL2 FROMLIST: KVM: arm64: Unmap 'kvm_arm_hyp_percpu_base' from the host FROMLIST: BACKPORT: KVM: arm64: Return guest memory from EL2 via dedicated teardown memcache FROMLIST: KVM: arm64: Instantiate guest stage-2 page-tables at EL2 FROMLIST: KVM: arm64: Consolidate stage-2 initialisation into a single function FROMLIST: KVM: arm64: Add generic hyp_memcache helpers FROMLIST: KVM: arm64: Provide I-cache invalidation by virtual address at EL2 FROMLIST: KVM: arm64: Initialise hypervisor copies of host symbols unconditionally FROMLIST: KVM: arm64: Add per-cpu fixmap infrastructure at EL2 FROMLIST: KVM: arm64: Instantiate pKVM hypervisor VM and vCPU structures from EL1 FROMLIST: KVM: arm64: Add infrastructure to create and track pKVM instances at EL2 FROMLIST: KVM: arm64: Rename 'host_kvm' to 'host_mmu' FROMLIST: KVM: arm64: Add hyp_spinlock_t static initializer FROMLIST: KVM: arm64: Include asm/kvm_mmu.h in nvhe/mem_protect.h FROMLIST: KVM: arm64: Add helpers to pin memory shared with the hypervisor at EL2 FROMLIST: KVM: arm64: Prevent the donation of no-map pages FROMLIST: KVM: arm64: Implement do_donate() helper for donating memory FROMLIST: KVM: arm64: Unify identifiers used to distinguish host and hypervisor FROMLIST: KVM: arm64: Fix-up hyp stage-1 refcounts for all pages mapped at EL2 FROMLIST: KVM: arm64: Back the hypervisor 'struct hyp_page' array for all memory FROMLIST: KVM: arm64: Allow attaching of non-coalescable pages to a hyp pool FROMLIST: KVM: arm64: Move hyp refcount manipulation helpers to common header file ANDROID: arm64: Register earlycon fixmap with the MMIO guard ANDROID: arm64: Add a helper to retrieve the PTE of a fixmap ANDROID: BACKPORT: arm64: Enroll into KVM's MMIO guard if required ANDROID: BACKPORT: arm64: Implement ioremap/iounmap hooks calling into KVM's MMIO guard ANDROID: mm/vmalloc: Add arch-specific callbacks to track io{remap,unmap} physical pages ANDROID: BACKPORT: arm64: mm: Implement memory encryption API using KVM sharing hypercalls ANDROID: drivers: hv: Include memory encryption header FROMLIST: firmware/smccc: Call arch-specific hook on discovering KVM services ANDROID: GKI: Enable CONFIG_CFI_CLANG Conflicts: drivers/android/vendor_hooks.c include/linux/compaction.h include/trace/hooks/timer.h mm/compaction.c Change-Id: Ie45fe12a1d6b67f4edb8c23ebb4409754b063385 Upstream-Build: ks_qcom-android14-6.1-keystone-qcom-release@9501271 UKQ2.230118.001 Signed-off-by: jianzhou <quic_jianzhou@quicinc.com>#
1180 lines
36 KiB
Plaintext
1180 lines
36 KiB
Plaintext
# SPDX-License-Identifier: GPL-2.0-only
|
|
|
|
menu "Memory Management options"
|
|
|
|
#
|
|
# For some reason microblaze and nios2 hard code SWAP=n. Hopefully we can
|
|
# add proper SWAP support to them, in which case this can be remove.
|
|
#
|
|
config ARCH_NO_SWAP
|
|
bool
|
|
|
|
config ZPOOL
|
|
bool
|
|
|
|
menuconfig SWAP
|
|
bool "Support for paging of anonymous memory (swap)"
|
|
depends on MMU && BLOCK && !ARCH_NO_SWAP
|
|
default y
|
|
help
|
|
This option allows you to choose whether you want to have support
|
|
for so called swap devices or swap files in your kernel that are
|
|
used to provide more virtual memory than the actual RAM present
|
|
in your computer. If unsure say Y.
|
|
|
|
config ZSWAP
|
|
bool "Compressed cache for swap pages"
|
|
depends on SWAP
|
|
select FRONTSWAP
|
|
select CRYPTO
|
|
select ZPOOL
|
|
help
|
|
A lightweight compressed cache for swap pages. It takes
|
|
pages that are in the process of being swapped out and attempts to
|
|
compress them into a dynamically allocated RAM-based memory pool.
|
|
This can result in a significant I/O reduction on swap device and,
|
|
in the case where decompressing from RAM is faster than swap device
|
|
reads, can also improve workload performance.
|
|
|
|
config ZSWAP_DEFAULT_ON
|
|
bool "Enable the compressed cache for swap pages by default"
|
|
depends on ZSWAP
|
|
help
|
|
If selected, the compressed cache for swap pages will be enabled
|
|
at boot, otherwise it will be disabled.
|
|
|
|
The selection made here can be overridden by using the kernel
|
|
command line 'zswap.enabled=' option.
|
|
|
|
choice
|
|
prompt "Default compressor"
|
|
depends on ZSWAP
|
|
default ZSWAP_COMPRESSOR_DEFAULT_LZO
|
|
help
|
|
Selects the default compression algorithm for the compressed cache
|
|
for swap pages.
|
|
|
|
For an overview what kind of performance can be expected from
|
|
a particular compression algorithm please refer to the benchmarks
|
|
available at the following LWN page:
|
|
https://lwn.net/Articles/751795/
|
|
|
|
If in doubt, select 'LZO'.
|
|
|
|
The selection made here can be overridden by using the kernel
|
|
command line 'zswap.compressor=' option.
|
|
|
|
config ZSWAP_COMPRESSOR_DEFAULT_DEFLATE
|
|
bool "Deflate"
|
|
select CRYPTO_DEFLATE
|
|
help
|
|
Use the Deflate algorithm as the default compression algorithm.
|
|
|
|
config ZSWAP_COMPRESSOR_DEFAULT_LZO
|
|
bool "LZO"
|
|
select CRYPTO_LZO
|
|
help
|
|
Use the LZO algorithm as the default compression algorithm.
|
|
|
|
config ZSWAP_COMPRESSOR_DEFAULT_842
|
|
bool "842"
|
|
select CRYPTO_842
|
|
help
|
|
Use the 842 algorithm as the default compression algorithm.
|
|
|
|
config ZSWAP_COMPRESSOR_DEFAULT_LZ4
|
|
bool "LZ4"
|
|
select CRYPTO_LZ4
|
|
help
|
|
Use the LZ4 algorithm as the default compression algorithm.
|
|
|
|
config ZSWAP_COMPRESSOR_DEFAULT_LZ4HC
|
|
bool "LZ4HC"
|
|
select CRYPTO_LZ4HC
|
|
help
|
|
Use the LZ4HC algorithm as the default compression algorithm.
|
|
|
|
config ZSWAP_COMPRESSOR_DEFAULT_ZSTD
|
|
bool "zstd"
|
|
select CRYPTO_ZSTD
|
|
help
|
|
Use the zstd algorithm as the default compression algorithm.
|
|
endchoice
|
|
|
|
config ZSWAP_COMPRESSOR_DEFAULT
|
|
string
|
|
depends on ZSWAP
|
|
default "deflate" if ZSWAP_COMPRESSOR_DEFAULT_DEFLATE
|
|
default "lzo" if ZSWAP_COMPRESSOR_DEFAULT_LZO
|
|
default "842" if ZSWAP_COMPRESSOR_DEFAULT_842
|
|
default "lz4" if ZSWAP_COMPRESSOR_DEFAULT_LZ4
|
|
default "lz4hc" if ZSWAP_COMPRESSOR_DEFAULT_LZ4HC
|
|
default "zstd" if ZSWAP_COMPRESSOR_DEFAULT_ZSTD
|
|
default ""
|
|
|
|
choice
|
|
prompt "Default allocator"
|
|
depends on ZSWAP
|
|
default ZSWAP_ZPOOL_DEFAULT_ZBUD
|
|
help
|
|
Selects the default allocator for the compressed cache for
|
|
swap pages.
|
|
The default is 'zbud' for compatibility, however please do
|
|
read the description of each of the allocators below before
|
|
making a right choice.
|
|
|
|
The selection made here can be overridden by using the kernel
|
|
command line 'zswap.zpool=' option.
|
|
|
|
config ZSWAP_ZPOOL_DEFAULT_ZBUD
|
|
bool "zbud"
|
|
select ZBUD
|
|
help
|
|
Use the zbud allocator as the default allocator.
|
|
|
|
config ZSWAP_ZPOOL_DEFAULT_Z3FOLD
|
|
bool "z3fold"
|
|
select Z3FOLD
|
|
help
|
|
Use the z3fold allocator as the default allocator.
|
|
|
|
config ZSWAP_ZPOOL_DEFAULT_ZSMALLOC
|
|
bool "zsmalloc"
|
|
select ZSMALLOC
|
|
help
|
|
Use the zsmalloc allocator as the default allocator.
|
|
endchoice
|
|
|
|
config ZSWAP_ZPOOL_DEFAULT
|
|
string
|
|
depends on ZSWAP
|
|
default "zbud" if ZSWAP_ZPOOL_DEFAULT_ZBUD
|
|
default "z3fold" if ZSWAP_ZPOOL_DEFAULT_Z3FOLD
|
|
default "zsmalloc" if ZSWAP_ZPOOL_DEFAULT_ZSMALLOC
|
|
default ""
|
|
|
|
config ZBUD
|
|
tristate "2:1 compression allocator (zbud)"
|
|
depends on ZSWAP
|
|
help
|
|
A special purpose allocator for storing compressed pages.
|
|
It is designed to store up to two compressed pages per physical
|
|
page. While this design limits storage density, it has simple and
|
|
deterministic reclaim properties that make it preferable to a higher
|
|
density approach when reclaim will be used.
|
|
|
|
config Z3FOLD
|
|
tristate "3:1 compression allocator (z3fold)"
|
|
depends on ZSWAP
|
|
help
|
|
A special purpose allocator for storing compressed pages.
|
|
It is designed to store up to three compressed pages per physical
|
|
page. It is a ZBUD derivative so the simplicity and determinism are
|
|
still there.
|
|
|
|
config ZSMALLOC
|
|
tristate
|
|
prompt "N:1 compression allocator (zsmalloc)" if ZSWAP
|
|
depends on MMU
|
|
help
|
|
zsmalloc is a slab-based memory allocator designed to store
|
|
pages of various compression levels efficiently. It achieves
|
|
the highest storage density with the least amount of fragmentation.
|
|
|
|
config ZSMALLOC_STAT
|
|
bool "Export zsmalloc statistics"
|
|
depends on ZSMALLOC
|
|
select DEBUG_FS
|
|
help
|
|
This option enables code in the zsmalloc to collect various
|
|
statistics about what's happening in zsmalloc and exports that
|
|
information to userspace via debugfs.
|
|
If unsure, say N.
|
|
|
|
menu "SLAB allocator options"
|
|
|
|
choice
|
|
prompt "Choose SLAB allocator"
|
|
default SLUB
|
|
help
|
|
This option allows to select a slab allocator.
|
|
|
|
config SLAB
|
|
bool "SLAB"
|
|
depends on !PREEMPT_RT
|
|
select HAVE_HARDENED_USERCOPY_ALLOCATOR
|
|
help
|
|
The regular slab allocator that is established and known to work
|
|
well in all environments. It organizes cache hot objects in
|
|
per cpu and per node queues.
|
|
|
|
config SLUB
|
|
bool "SLUB (Unqueued Allocator)"
|
|
select HAVE_HARDENED_USERCOPY_ALLOCATOR
|
|
help
|
|
SLUB is a slab allocator that minimizes cache line usage
|
|
instead of managing queues of cached objects (SLAB approach).
|
|
Per cpu caching is realized using slabs of objects instead
|
|
of queues of objects. SLUB can use memory efficiently
|
|
and has enhanced diagnostics. SLUB is the default choice for
|
|
a slab allocator.
|
|
|
|
config SLOB
|
|
depends on EXPERT
|
|
bool "SLOB (Simple Allocator)"
|
|
depends on !PREEMPT_RT
|
|
help
|
|
SLOB replaces the stock allocator with a drastically simpler
|
|
allocator. SLOB is generally more space efficient but
|
|
does not perform as well on large systems.
|
|
|
|
endchoice
|
|
|
|
config SLAB_MERGE_DEFAULT
|
|
bool "Allow slab caches to be merged"
|
|
default y
|
|
depends on SLAB || SLUB
|
|
help
|
|
For reduced kernel memory fragmentation, slab caches can be
|
|
merged when they share the same size and other characteristics.
|
|
This carries a risk of kernel heap overflows being able to
|
|
overwrite objects from merged caches (and more easily control
|
|
cache layout), which makes such heap attacks easier to exploit
|
|
by attackers. By keeping caches unmerged, these kinds of exploits
|
|
can usually only damage objects in the same cache. To disable
|
|
merging at runtime, "slab_nomerge" can be passed on the kernel
|
|
command line.
|
|
|
|
config SLAB_FREELIST_RANDOM
|
|
bool "Randomize slab freelist"
|
|
depends on SLAB || SLUB
|
|
help
|
|
Randomizes the freelist order used on creating new pages. This
|
|
security feature reduces the predictability of the kernel slab
|
|
allocator against heap overflows.
|
|
|
|
config SLAB_FREELIST_HARDENED
|
|
bool "Harden slab freelist metadata"
|
|
depends on SLAB || SLUB
|
|
help
|
|
Many kernel heap attacks try to target slab cache metadata and
|
|
other infrastructure. This options makes minor performance
|
|
sacrifices to harden the kernel slab allocator against common
|
|
freelist exploit methods. Some slab implementations have more
|
|
sanity-checking than others. This option is most effective with
|
|
CONFIG_SLUB.
|
|
|
|
config SLUB_STATS
|
|
default n
|
|
bool "Enable SLUB performance statistics"
|
|
depends on SLUB && SYSFS
|
|
help
|
|
SLUB statistics are useful to debug SLUBs allocation behavior in
|
|
order find ways to optimize the allocator. This should never be
|
|
enabled for production use since keeping statistics slows down
|
|
the allocator by a few percentage points. The slabinfo command
|
|
supports the determination of the most active slabs to figure
|
|
out which slabs are relevant to a particular load.
|
|
Try running: slabinfo -DA
|
|
|
|
config SLUB_CPU_PARTIAL
|
|
default y
|
|
depends on SLUB && SMP
|
|
bool "SLUB per cpu partial cache"
|
|
help
|
|
Per cpu partial caches accelerate objects allocation and freeing
|
|
that is local to a processor at the price of more indeterminism
|
|
in the latency of the free. On overflow these caches will be cleared
|
|
which requires the taking of locks that may cause latency spikes.
|
|
Typically one would choose no for a realtime system.
|
|
|
|
endmenu # SLAB allocator options
|
|
|
|
config SHUFFLE_PAGE_ALLOCATOR
|
|
bool "Page allocator randomization"
|
|
default SLAB_FREELIST_RANDOM && ACPI_NUMA
|
|
help
|
|
Randomization of the page allocator improves the average
|
|
utilization of a direct-mapped memory-side-cache. See section
|
|
5.2.27 Heterogeneous Memory Attribute Table (HMAT) in the ACPI
|
|
6.2a specification for an example of how a platform advertises
|
|
the presence of a memory-side-cache. There are also incidental
|
|
security benefits as it reduces the predictability of page
|
|
allocations to compliment SLAB_FREELIST_RANDOM, but the
|
|
default granularity of shuffling on the "MAX_ORDER - 1" i.e,
|
|
10th order of pages is selected based on cache utilization
|
|
benefits on x86.
|
|
|
|
While the randomization improves cache utilization it may
|
|
negatively impact workloads on platforms without a cache. For
|
|
this reason, by default, the randomization is enabled only
|
|
after runtime detection of a direct-mapped memory-side-cache.
|
|
Otherwise, the randomization may be force enabled with the
|
|
'page_alloc.shuffle' kernel command line parameter.
|
|
|
|
Say Y if unsure.
|
|
|
|
config COMPAT_BRK
|
|
bool "Disable heap randomization"
|
|
default y
|
|
help
|
|
Randomizing heap placement makes heap exploits harder, but it
|
|
also breaks ancient binaries (including anything libc5 based).
|
|
This option changes the bootup default to heap randomization
|
|
disabled, and can be overridden at runtime by setting
|
|
/proc/sys/kernel/randomize_va_space to 2.
|
|
|
|
On non-ancient distros (post-2000 ones) N is usually a safe choice.
|
|
|
|
config MMAP_ALLOW_UNINITIALIZED
|
|
bool "Allow mmapped anonymous memory to be uninitialized"
|
|
depends on EXPERT && !MMU
|
|
default n
|
|
help
|
|
Normally, and according to the Linux spec, anonymous memory obtained
|
|
from mmap() has its contents cleared before it is passed to
|
|
userspace. Enabling this config option allows you to request that
|
|
mmap() skip that if it is given an MAP_UNINITIALIZED flag, thus
|
|
providing a huge performance boost. If this option is not enabled,
|
|
then the flag will be ignored.
|
|
|
|
This is taken advantage of by uClibc's malloc(), and also by
|
|
ELF-FDPIC binfmt's brk and stack allocator.
|
|
|
|
Because of the obvious security issues, this option should only be
|
|
enabled on embedded devices where you control what is run in
|
|
userspace. Since that isn't generally a problem on no-MMU systems,
|
|
it is normally safe to say Y here.
|
|
|
|
See Documentation/admin-guide/mm/nommu-mmap.rst for more information.
|
|
|
|
config SELECT_MEMORY_MODEL
|
|
def_bool y
|
|
depends on ARCH_SELECT_MEMORY_MODEL
|
|
|
|
choice
|
|
prompt "Memory model"
|
|
depends on SELECT_MEMORY_MODEL
|
|
default SPARSEMEM_MANUAL if ARCH_SPARSEMEM_DEFAULT
|
|
default FLATMEM_MANUAL
|
|
help
|
|
This option allows you to change some of the ways that
|
|
Linux manages its memory internally. Most users will
|
|
only have one option here selected by the architecture
|
|
configuration. This is normal.
|
|
|
|
config FLATMEM_MANUAL
|
|
bool "Flat Memory"
|
|
depends on !ARCH_SPARSEMEM_ENABLE || ARCH_FLATMEM_ENABLE
|
|
help
|
|
This option is best suited for non-NUMA systems with
|
|
flat address space. The FLATMEM is the most efficient
|
|
system in terms of performance and resource consumption
|
|
and it is the best option for smaller systems.
|
|
|
|
For systems that have holes in their physical address
|
|
spaces and for features like NUMA and memory hotplug,
|
|
choose "Sparse Memory".
|
|
|
|
If unsure, choose this option (Flat Memory) over any other.
|
|
|
|
config SPARSEMEM_MANUAL
|
|
bool "Sparse Memory"
|
|
depends on ARCH_SPARSEMEM_ENABLE
|
|
help
|
|
This will be the only option for some systems, including
|
|
memory hot-plug systems. This is normal.
|
|
|
|
This option provides efficient support for systems with
|
|
holes is their physical address space and allows memory
|
|
hot-plug and hot-remove.
|
|
|
|
If unsure, choose "Flat Memory" over this option.
|
|
|
|
endchoice
|
|
|
|
config SPARSEMEM
|
|
def_bool y
|
|
depends on (!SELECT_MEMORY_MODEL && ARCH_SPARSEMEM_ENABLE) || SPARSEMEM_MANUAL
|
|
|
|
config FLATMEM
|
|
def_bool y
|
|
depends on !SPARSEMEM || FLATMEM_MANUAL
|
|
|
|
#
|
|
# SPARSEMEM_EXTREME (which is the default) does some bootmem
|
|
# allocations when sparse_init() is called. If this cannot
|
|
# be done on your architecture, select this option. However,
|
|
# statically allocating the mem_section[] array can potentially
|
|
# consume vast quantities of .bss, so be careful.
|
|
#
|
|
# This option will also potentially produce smaller runtime code
|
|
# with gcc 3.4 and later.
|
|
#
|
|
config SPARSEMEM_STATIC
|
|
bool
|
|
|
|
#
|
|
# Architecture platforms which require a two level mem_section in SPARSEMEM
|
|
# must select this option. This is usually for architecture platforms with
|
|
# an extremely sparse physical address space.
|
|
#
|
|
config SPARSEMEM_EXTREME
|
|
def_bool y
|
|
depends on SPARSEMEM && !SPARSEMEM_STATIC
|
|
|
|
config SPARSEMEM_VMEMMAP_ENABLE
|
|
bool
|
|
|
|
config SPARSEMEM_VMEMMAP
|
|
bool "Sparse Memory virtual memmap"
|
|
depends on SPARSEMEM && SPARSEMEM_VMEMMAP_ENABLE
|
|
default y
|
|
help
|
|
SPARSEMEM_VMEMMAP uses a virtually mapped memmap to optimise
|
|
pfn_to_page and page_to_pfn operations. This is the most
|
|
efficient option when sufficient kernel resources are available.
|
|
|
|
config HAVE_MEMBLOCK_PHYS_MAP
|
|
bool
|
|
|
|
config HAVE_FAST_GUP
|
|
depends on MMU
|
|
bool
|
|
|
|
# Don't discard allocated memory used to track "memory" and "reserved" memblocks
|
|
# after early boot, so it can still be used to test for validity of memory.
|
|
# Also, memblocks are updated with memory hot(un)plug.
|
|
config ARCH_KEEP_MEMBLOCK
|
|
bool
|
|
|
|
# Keep arch NUMA mapping infrastructure post-init.
|
|
config NUMA_KEEP_MEMINFO
|
|
bool
|
|
|
|
config MEMORY_ISOLATION
|
|
bool
|
|
|
|
# IORESOURCE_SYSTEM_RAM regions in the kernel resource tree that are marked
|
|
# IORESOURCE_EXCLUSIVE cannot be mapped to user space, for example, via
|
|
# /dev/mem.
|
|
config EXCLUSIVE_SYSTEM_RAM
|
|
def_bool y
|
|
depends on !DEVMEM || STRICT_DEVMEM
|
|
|
|
#
|
|
# Only be set on architectures that have completely implemented memory hotplug
|
|
# feature. If you are not sure, don't touch it.
|
|
#
|
|
config HAVE_BOOTMEM_INFO_NODE
|
|
def_bool n
|
|
|
|
config ARCH_ENABLE_MEMORY_HOTPLUG
|
|
bool
|
|
|
|
config ARCH_ENABLE_MEMORY_HOTREMOVE
|
|
bool
|
|
|
|
# eventually, we can have this option just 'select SPARSEMEM'
|
|
menuconfig MEMORY_HOTPLUG
|
|
bool "Memory hotplug"
|
|
select MEMORY_ISOLATION
|
|
depends on SPARSEMEM
|
|
depends on ARCH_ENABLE_MEMORY_HOTPLUG
|
|
depends on 64BIT
|
|
select NUMA_KEEP_MEMINFO if NUMA
|
|
|
|
if MEMORY_HOTPLUG
|
|
|
|
config MEMORY_HOTPLUG_DEFAULT_ONLINE
|
|
bool "Online the newly added memory blocks by default"
|
|
depends on MEMORY_HOTPLUG
|
|
help
|
|
This option sets the default policy setting for memory hotplug
|
|
onlining policy (/sys/devices/system/memory/auto_online_blocks) which
|
|
determines what happens to newly added memory regions. Policy setting
|
|
can always be changed at runtime.
|
|
See Documentation/admin-guide/mm/memory-hotplug.rst for more information.
|
|
|
|
Say Y here if you want all hot-plugged memory blocks to appear in
|
|
'online' state by default.
|
|
Say N here if you want the default policy to keep all hot-plugged
|
|
memory blocks in 'offline' state.
|
|
|
|
config MEMORY_HOTREMOVE
|
|
bool "Allow for memory hot remove"
|
|
select HAVE_BOOTMEM_INFO_NODE if (X86_64 || PPC64)
|
|
depends on MEMORY_HOTPLUG && ARCH_ENABLE_MEMORY_HOTREMOVE
|
|
depends on MIGRATION
|
|
|
|
config MHP_MEMMAP_ON_MEMORY
|
|
def_bool y
|
|
depends on MEMORY_HOTPLUG && SPARSEMEM_VMEMMAP
|
|
depends on ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE
|
|
|
|
config MEMORY_HOTPLUG_SUBSECTIONS
|
|
bool "Allow memory to be mapped at a subsection granularity"
|
|
depends on MEMORY_HOTPLUG
|
|
help
|
|
The default functions used for adding memory, add_memory(), only maps
|
|
memory at 128 MB chunks and has a 256 KB overhead in the page table
|
|
space it consumes (assuming the logical mapping is not using block
|
|
mappings). For low memory environments where we don't want to map
|
|
large amounts of memory, we add downstream functions that add and
|
|
remove memory on a subsection-size granularity.
|
|
If unsure, say N.
|
|
|
|
endif # MEMORY_HOTPLUG
|
|
|
|
# Heavily threaded applications may benefit from splitting the mm-wide
|
|
# page_table_lock, so that faults on different parts of the user address
|
|
# space can be handled with less contention: split it at this NR_CPUS.
|
|
# Default to 4 for wider testing, though 8 might be more appropriate.
|
|
# ARM's adjust_pte (unused if VIPT) depends on mm-wide page_table_lock.
|
|
# PA-RISC 7xxx's spinlock_t would enlarge struct page from 32 to 44 bytes.
|
|
# SPARC32 allocates multiple pte tables within a single page, and therefore
|
|
# a per-page lock leads to problems when multiple tables need to be locked
|
|
# at the same time (e.g. copy_page_range()).
|
|
# DEBUG_SPINLOCK and DEBUG_LOCK_ALLOC spinlock_t also enlarge struct page.
|
|
#
|
|
config SPLIT_PTLOCK_CPUS
|
|
int
|
|
default "999999" if !MMU
|
|
default "999999" if ARM && !CPU_CACHE_VIPT
|
|
default "999999" if PARISC && !PA20
|
|
default "999999" if SPARC32
|
|
default "4"
|
|
|
|
config ARCH_ENABLE_SPLIT_PMD_PTLOCK
|
|
bool
|
|
|
|
#
|
|
# support for memory balloon
|
|
config MEMORY_BALLOON
|
|
bool
|
|
|
|
#
|
|
# support for memory relinquish
|
|
config MEMORY_RELINQUISH
|
|
def_bool y
|
|
depends on ARCH_HAS_MEM_RELINQUISH
|
|
depends on MEMORY_BALLOON || PAGE_REPORTING
|
|
|
|
#
|
|
# support for memory balloon compaction
|
|
config BALLOON_COMPACTION
|
|
bool "Allow for balloon memory compaction/migration"
|
|
def_bool y
|
|
depends on COMPACTION && MEMORY_BALLOON
|
|
help
|
|
Memory fragmentation introduced by ballooning might reduce
|
|
significantly the number of 2MB contiguous memory blocks that can be
|
|
used within a guest, thus imposing performance penalties associated
|
|
with the reduced number of transparent huge pages that could be used
|
|
by the guest workload. Allowing the compaction & migration for memory
|
|
pages enlisted as being part of memory balloon devices avoids the
|
|
scenario aforementioned and helps improving memory defragmentation.
|
|
|
|
#
|
|
# support for memory compaction
|
|
config COMPACTION
|
|
bool "Allow for memory compaction"
|
|
def_bool y
|
|
select MIGRATION
|
|
depends on MMU
|
|
help
|
|
Compaction is the only memory management component to form
|
|
high order (larger physically contiguous) memory blocks
|
|
reliably. The page allocator relies on compaction heavily and
|
|
the lack of the feature can lead to unexpected OOM killer
|
|
invocations for high order memory requests. You shouldn't
|
|
disable this option unless there really is a strong reason for
|
|
it and then we would be really interested to hear about that at
|
|
linux-mm@kvack.org.
|
|
|
|
config COMPACT_UNEVICTABLE_DEFAULT
|
|
int
|
|
depends on COMPACTION
|
|
default 0 if PREEMPT_RT
|
|
default 1
|
|
|
|
#
|
|
# support for free page reporting
|
|
config PAGE_REPORTING
|
|
bool "Free page reporting"
|
|
def_bool n
|
|
help
|
|
Free page reporting allows for the incremental acquisition of
|
|
free pages from the buddy allocator for the purpose of reporting
|
|
those pages to another entity, such as a hypervisor, so that the
|
|
memory can be freed within the host for other uses.
|
|
|
|
#
|
|
# support for page migration
|
|
#
|
|
config MIGRATION
|
|
bool "Page migration"
|
|
def_bool y
|
|
depends on (NUMA || ARCH_ENABLE_MEMORY_HOTREMOVE || COMPACTION || CMA) && MMU
|
|
help
|
|
Allows the migration of the physical location of pages of processes
|
|
while the virtual addresses are not changed. This is useful in
|
|
two situations. The first is on NUMA systems to put pages nearer
|
|
to the processors accessing. The second is when allocating huge
|
|
pages as migration can relocate pages to satisfy a huge page
|
|
allocation instead of reclaiming.
|
|
|
|
config DEVICE_MIGRATION
|
|
def_bool MIGRATION && ZONE_DEVICE
|
|
|
|
config ARCH_ENABLE_HUGEPAGE_MIGRATION
|
|
bool
|
|
|
|
config ARCH_ENABLE_THP_MIGRATION
|
|
bool
|
|
|
|
config HUGETLB_PAGE_SIZE_VARIABLE
|
|
def_bool n
|
|
help
|
|
Allows the pageblock_order value to be dynamic instead of just standard
|
|
HUGETLB_PAGE_ORDER when there are multiple HugeTLB page sizes available
|
|
on a platform.
|
|
|
|
Note that the pageblock_order cannot exceed MAX_ORDER - 1 and will be
|
|
clamped down to MAX_ORDER - 1.
|
|
|
|
config CONTIG_ALLOC
|
|
def_bool (MEMORY_ISOLATION && COMPACTION) || CMA
|
|
|
|
config PHYS_ADDR_T_64BIT
|
|
def_bool 64BIT
|
|
|
|
config BOUNCE
|
|
bool "Enable bounce buffers"
|
|
default y
|
|
depends on BLOCK && MMU && HIGHMEM
|
|
help
|
|
Enable bounce buffers for devices that cannot access the full range of
|
|
memory available to the CPU. Enabled by default when HIGHMEM is
|
|
selected, but you may say n to override this.
|
|
|
|
config MMU_NOTIFIER
|
|
bool
|
|
select SRCU
|
|
select INTERVAL_TREE
|
|
|
|
config KSM
|
|
bool "Enable KSM for page merging"
|
|
depends on MMU
|
|
select XXHASH
|
|
help
|
|
Enable Kernel Samepage Merging: KSM periodically scans those areas
|
|
of an application's address space that an app has advised may be
|
|
mergeable. When it finds pages of identical content, it replaces
|
|
the many instances by a single page with that content, so
|
|
saving memory until one or another app needs to modify the content.
|
|
Recommended for use with KVM, or with other duplicative applications.
|
|
See Documentation/mm/ksm.rst for more information: KSM is inactive
|
|
until a program has madvised that an area is MADV_MERGEABLE, and
|
|
root has set /sys/kernel/mm/ksm/run to 1 (if CONFIG_SYSFS is set).
|
|
|
|
config DEFAULT_MMAP_MIN_ADDR
|
|
int "Low address space to protect from user allocation"
|
|
depends on MMU
|
|
default 4096
|
|
help
|
|
This is the portion of low virtual memory which should be protected
|
|
from userspace allocation. Keeping a user from writing to low pages
|
|
can help reduce the impact of kernel NULL pointer bugs.
|
|
|
|
For most ia64, ppc64 and x86 users with lots of address space
|
|
a value of 65536 is reasonable and should cause no problems.
|
|
On arm and other archs it should not be higher than 32768.
|
|
Programs which use vm86 functionality or have some need to map
|
|
this low address space will need CAP_SYS_RAWIO or disable this
|
|
protection by setting the value to 0.
|
|
|
|
This value can be changed after boot using the
|
|
/proc/sys/vm/mmap_min_addr tunable.
|
|
|
|
config ARCH_SUPPORTS_MEMORY_FAILURE
|
|
bool
|
|
|
|
config MEMORY_FAILURE
|
|
depends on MMU
|
|
depends on ARCH_SUPPORTS_MEMORY_FAILURE
|
|
bool "Enable recovery from hardware memory errors"
|
|
select MEMORY_ISOLATION
|
|
select RAS
|
|
help
|
|
Enables code to recover from some memory failures on systems
|
|
with MCA recovery. This allows a system to continue running
|
|
even when some of its memory has uncorrected errors. This requires
|
|
special hardware support and typically ECC memory.
|
|
|
|
config HWPOISON_INJECT
|
|
tristate "HWPoison pages injector"
|
|
depends on MEMORY_FAILURE && DEBUG_KERNEL && PROC_FS
|
|
select PROC_PAGE_MONITOR
|
|
|
|
config NOMMU_INITIAL_TRIM_EXCESS
|
|
int "Turn on mmap() excess space trimming before booting"
|
|
depends on !MMU
|
|
default 1
|
|
help
|
|
The NOMMU mmap() frequently needs to allocate large contiguous chunks
|
|
of memory on which to store mappings, but it can only ask the system
|
|
allocator for chunks in 2^N*PAGE_SIZE amounts - which is frequently
|
|
more than it requires. To deal with this, mmap() is able to trim off
|
|
the excess and return it to the allocator.
|
|
|
|
If trimming is enabled, the excess is trimmed off and returned to the
|
|
system allocator, which can cause extra fragmentation, particularly
|
|
if there are a lot of transient processes.
|
|
|
|
If trimming is disabled, the excess is kept, but not used, which for
|
|
long-term mappings means that the space is wasted.
|
|
|
|
Trimming can be dynamically controlled through a sysctl option
|
|
(/proc/sys/vm/nr_trim_pages) which specifies the minimum number of
|
|
excess pages there must be before trimming should occur, or zero if
|
|
no trimming is to occur.
|
|
|
|
This option specifies the initial value of this option. The default
|
|
of 1 says that all excess pages should be trimmed.
|
|
|
|
See Documentation/admin-guide/mm/nommu-mmap.rst for more information.
|
|
|
|
config ARCH_WANT_GENERAL_HUGETLB
|
|
bool
|
|
|
|
config ARCH_WANTS_THP_SWAP
|
|
def_bool n
|
|
|
|
menuconfig TRANSPARENT_HUGEPAGE
|
|
bool "Transparent Hugepage Support"
|
|
depends on HAVE_ARCH_TRANSPARENT_HUGEPAGE && !PREEMPT_RT
|
|
select COMPACTION
|
|
select XARRAY_MULTI
|
|
help
|
|
Transparent Hugepages allows the kernel to use huge pages and
|
|
huge tlb transparently to the applications whenever possible.
|
|
This feature can improve computing performance to certain
|
|
applications by speeding up page faults during memory
|
|
allocation, by reducing the number of tlb misses and by speeding
|
|
up the pagetable walking.
|
|
|
|
If memory constrained on embedded, you may want to say N.
|
|
|
|
if TRANSPARENT_HUGEPAGE
|
|
|
|
choice
|
|
prompt "Transparent Hugepage Support sysfs defaults"
|
|
depends on TRANSPARENT_HUGEPAGE
|
|
default TRANSPARENT_HUGEPAGE_ALWAYS
|
|
help
|
|
Selects the sysfs defaults for Transparent Hugepage Support.
|
|
|
|
config TRANSPARENT_HUGEPAGE_ALWAYS
|
|
bool "always"
|
|
help
|
|
Enabling Transparent Hugepage always, can increase the
|
|
memory footprint of applications without a guaranteed
|
|
benefit but it will work automatically for all applications.
|
|
|
|
config TRANSPARENT_HUGEPAGE_MADVISE
|
|
bool "madvise"
|
|
help
|
|
Enabling Transparent Hugepage madvise, will only provide a
|
|
performance improvement benefit to the applications using
|
|
madvise(MADV_HUGEPAGE) but it won't risk to increase the
|
|
memory footprint of applications without a guaranteed
|
|
benefit.
|
|
endchoice
|
|
|
|
config THP_SWAP
|
|
def_bool y
|
|
depends on TRANSPARENT_HUGEPAGE && ARCH_WANTS_THP_SWAP && SWAP
|
|
help
|
|
Swap transparent huge pages in one piece, without splitting.
|
|
XXX: For now, swap cluster backing transparent huge page
|
|
will be split after swapout.
|
|
|
|
For selection by architectures with reasonable THP sizes.
|
|
|
|
config READ_ONLY_THP_FOR_FS
|
|
bool "Read-only THP for filesystems (EXPERIMENTAL)"
|
|
depends on TRANSPARENT_HUGEPAGE && SHMEM
|
|
|
|
help
|
|
Allow khugepaged to put read-only file-backed pages in THP.
|
|
|
|
This is marked experimental because it is a new feature. Write
|
|
support of file THPs will be developed in the next few release
|
|
cycles.
|
|
|
|
endif # TRANSPARENT_HUGEPAGE
|
|
|
|
#
|
|
# UP and nommu archs use km based percpu allocator
|
|
#
|
|
config NEED_PER_CPU_KM
|
|
depends on !SMP || !MMU
|
|
bool
|
|
default y
|
|
|
|
config NEED_PER_CPU_EMBED_FIRST_CHUNK
|
|
bool
|
|
|
|
config NEED_PER_CPU_PAGE_FIRST_CHUNK
|
|
bool
|
|
|
|
config USE_PERCPU_NUMA_NODE_ID
|
|
bool
|
|
|
|
config HAVE_SETUP_PER_CPU_AREA
|
|
bool
|
|
|
|
config FRONTSWAP
|
|
bool
|
|
|
|
config CMA
|
|
bool "Contiguous Memory Allocator"
|
|
depends on MMU
|
|
select MIGRATION
|
|
select MEMORY_ISOLATION
|
|
help
|
|
This enables the Contiguous Memory Allocator which allows other
|
|
subsystems to allocate big physically-contiguous blocks of memory.
|
|
CMA reserves a region of memory and allows only movable pages to
|
|
be allocated from it. This way, the kernel can use the memory for
|
|
pagecache and when a subsystem requests for contiguous area, the
|
|
allocated pages are migrated away to serve the contiguous request.
|
|
|
|
If unsure, say "n".
|
|
|
|
config CMA_DEBUG
|
|
bool "CMA debug messages (DEVELOPMENT)"
|
|
depends on DEBUG_KERNEL && CMA
|
|
help
|
|
Turns on debug messages in CMA. This produces KERN_DEBUG
|
|
messages for every CMA call as well as various messages while
|
|
processing calls such as dma_alloc_from_contiguous().
|
|
This option does not affect warning and error messages.
|
|
|
|
config CMA_DEBUGFS
|
|
bool "CMA debugfs interface"
|
|
depends on CMA && DEBUG_FS
|
|
help
|
|
Turns on the DebugFS interface for CMA.
|
|
|
|
config CMA_SYSFS
|
|
bool "CMA information through sysfs interface"
|
|
depends on CMA && SYSFS
|
|
help
|
|
This option exposes some sysfs attributes to get information
|
|
from CMA.
|
|
|
|
config CMA_AREAS
|
|
int "Maximum count of the CMA areas"
|
|
depends on CMA
|
|
default 19 if NUMA
|
|
default 7
|
|
help
|
|
CMA allows to create CMA areas for particular purpose, mainly,
|
|
used as device private area. This parameter sets the maximum
|
|
number of CMA area in the system.
|
|
|
|
If unsure, leave the default value "7" in UMA and "19" in NUMA.
|
|
|
|
config MEM_SOFT_DIRTY
|
|
bool "Track memory changes"
|
|
depends on CHECKPOINT_RESTORE && HAVE_ARCH_SOFT_DIRTY && PROC_FS
|
|
select PROC_PAGE_MONITOR
|
|
help
|
|
This option enables memory changes tracking by introducing a
|
|
soft-dirty bit on pte-s. This bit it set when someone writes
|
|
into a page just as regular dirty bit, but unlike the latter
|
|
it can be cleared by hands.
|
|
|
|
See Documentation/admin-guide/mm/soft-dirty.rst for more details.
|
|
|
|
config GENERIC_EARLY_IOREMAP
|
|
bool
|
|
|
|
config STACK_MAX_DEFAULT_SIZE_MB
|
|
int "Default maximum user stack size for 32-bit processes (MB)"
|
|
default 100
|
|
range 8 2048
|
|
depends on STACK_GROWSUP && (!64BIT || COMPAT)
|
|
help
|
|
This is the maximum stack size in Megabytes in the VM layout of 32-bit
|
|
user processes when the stack grows upwards (currently only on parisc
|
|
arch) when the RLIMIT_STACK hard limit is unlimited.
|
|
|
|
A sane initial value is 100 MB.
|
|
|
|
config DEFERRED_STRUCT_PAGE_INIT
|
|
bool "Defer initialisation of struct pages to kthreads"
|
|
depends on SPARSEMEM
|
|
depends on !NEED_PER_CPU_KM
|
|
depends on 64BIT
|
|
select PADATA
|
|
help
|
|
Ordinarily all struct pages are initialised during early boot in a
|
|
single thread. On very large machines this can take a considerable
|
|
amount of time. If this option is set, large machines will bring up
|
|
a subset of memmap at boot and then initialise the rest in parallel.
|
|
This has a potential performance impact on tasks running early in the
|
|
lifetime of the system until these kthreads finish the
|
|
initialisation.
|
|
|
|
config PAGE_IDLE_FLAG
|
|
bool
|
|
select PAGE_EXTENSION if !64BIT
|
|
help
|
|
This adds PG_idle and PG_young flags to 'struct page'. PTE Accessed
|
|
bit writers can set the state of the bit in the flags so that PTE
|
|
Accessed bit readers may avoid disturbance.
|
|
|
|
config IDLE_PAGE_TRACKING
|
|
bool "Enable idle page tracking"
|
|
depends on SYSFS && MMU
|
|
select PAGE_IDLE_FLAG
|
|
help
|
|
This feature allows to estimate the amount of user pages that have
|
|
not been touched during a given period of time. This information can
|
|
be useful to tune memory cgroup limits and/or for job placement
|
|
within a compute cluster.
|
|
|
|
See Documentation/admin-guide/mm/idle_page_tracking.rst for
|
|
more details.
|
|
|
|
config ARCH_HAS_CACHE_LINE_SIZE
|
|
bool
|
|
|
|
config ARCH_HAS_CURRENT_STACK_POINTER
|
|
bool
|
|
help
|
|
In support of HARDENED_USERCOPY performing stack variable lifetime
|
|
checking, an architecture-agnostic way to find the stack pointer
|
|
is needed. Once an architecture defines an unsigned long global
|
|
register alias named "current_stack_pointer", this config can be
|
|
selected.
|
|
|
|
config ARCH_HAS_PTE_DEVMAP
|
|
bool
|
|
|
|
config ARCH_HAS_ZONE_DMA_SET
|
|
bool
|
|
|
|
config ZONE_DMA
|
|
bool "Support DMA zone" if ARCH_HAS_ZONE_DMA_SET
|
|
default y if ARM64 || X86
|
|
|
|
config ZONE_DMA32
|
|
bool "Support DMA32 zone" if ARCH_HAS_ZONE_DMA_SET
|
|
depends on !X86_32
|
|
default y if ARM64
|
|
|
|
config ZONE_DEVICE
|
|
bool "Device memory (pmem, HMM, etc...) hotplug support"
|
|
depends on MEMORY_HOTPLUG
|
|
depends on MEMORY_HOTREMOVE
|
|
depends on SPARSEMEM_VMEMMAP
|
|
depends on ARCH_HAS_PTE_DEVMAP
|
|
select XARRAY_MULTI
|
|
|
|
help
|
|
Device memory hotplug support allows for establishing pmem,
|
|
or other device driver discovered memory regions, in the
|
|
memmap. This allows pfn_to_page() lookups of otherwise
|
|
"device-physical" addresses which is needed for using a DAX
|
|
mapping in an O_DIRECT operation, among other things.
|
|
|
|
If FS_DAX is enabled, then say Y.
|
|
|
|
#
|
|
# Helpers to mirror range of the CPU page tables of a process into device page
|
|
# tables.
|
|
#
|
|
config HMM_MIRROR
|
|
bool
|
|
depends on MMU
|
|
|
|
config GET_FREE_REGION
|
|
depends on SPARSEMEM
|
|
bool
|
|
|
|
config DEVICE_PRIVATE
|
|
bool "Unaddressable device memory (GPU memory, ...)"
|
|
depends on ZONE_DEVICE
|
|
select GET_FREE_REGION
|
|
|
|
help
|
|
Allows creation of struct pages to represent unaddressable device
|
|
memory; i.e., memory that is only accessible from the device (or
|
|
group of devices). You likely also want to select HMM_MIRROR.
|
|
|
|
config VMAP_PFN
|
|
bool
|
|
|
|
config ARCH_USES_HIGH_VMA_FLAGS
|
|
bool
|
|
config ARCH_HAS_PKEYS
|
|
bool
|
|
|
|
config VM_EVENT_COUNTERS
|
|
default y
|
|
bool "Enable VM event counters for /proc/vmstat" if EXPERT
|
|
help
|
|
VM event counters are needed for event counts to be shown.
|
|
This option allows the disabling of the VM event counters
|
|
on EXPERT systems. /proc/vmstat will only show page counts
|
|
if VM event counters are disabled.
|
|
|
|
config PERCPU_STATS
|
|
bool "Collect percpu memory statistics"
|
|
help
|
|
This feature collects and exposes statistics via debugfs. The
|
|
information includes global and per chunk statistics, which can
|
|
be used to help understand percpu memory usage.
|
|
|
|
config GUP_TEST
|
|
bool "Enable infrastructure for get_user_pages()-related unit tests"
|
|
depends on DEBUG_FS
|
|
help
|
|
Provides /sys/kernel/debug/gup_test, which in turn provides a way
|
|
to make ioctl calls that can launch kernel-based unit tests for
|
|
the get_user_pages*() and pin_user_pages*() family of API calls.
|
|
|
|
These tests include benchmark testing of the _fast variants of
|
|
get_user_pages*() and pin_user_pages*(), as well as smoke tests of
|
|
the non-_fast variants.
|
|
|
|
There is also a sub-test that allows running dump_page() on any
|
|
of up to eight pages (selected by command line args) within the
|
|
range of user-space addresses. These pages are either pinned via
|
|
pin_user_pages*(), or pinned via get_user_pages*(), as specified
|
|
by other command line arguments.
|
|
|
|
See tools/testing/selftests/vm/gup_test.c
|
|
|
|
comment "GUP_TEST needs to have DEBUG_FS enabled"
|
|
depends on !GUP_TEST && !DEBUG_FS
|
|
|
|
config GUP_GET_PTE_LOW_HIGH
|
|
bool
|
|
|
|
config ARCH_HAS_PTE_SPECIAL
|
|
bool
|
|
|
|
#
|
|
# Some architectures require a special hugepage directory format that is
|
|
# required to support multiple hugepage sizes. For example a4fe3ce76
|
|
# "powerpc/mm: Allow more flexible layouts for hugepage pagetables"
|
|
# introduced it on powerpc. This allows for a more flexible hugepage
|
|
# pagetable layouts.
|
|
#
|
|
config ARCH_HAS_HUGEPD
|
|
bool
|
|
|
|
config MAPPING_DIRTY_HELPERS
|
|
bool
|
|
|
|
config KMAP_LOCAL
|
|
bool
|
|
|
|
config KMAP_LOCAL_NON_LINEAR_PTE_ARRAY
|
|
bool
|
|
|
|
# struct io_mapping based helper. Selected by drivers that need them
|
|
config IO_MAPPING
|
|
bool
|
|
|
|
# Some architectures want callbacks for all IO mappings in order to
|
|
# track the physical addresses that get used as devices.
|
|
config ARCH_HAS_IOREMAP_PHYS_HOOKS
|
|
bool
|
|
|
|
config SECRETMEM
|
|
def_bool ARCH_HAS_SET_DIRECT_MAP && !EMBEDDED
|
|
|
|
config ANON_VMA_NAME
|
|
bool "Anonymous VMA name support"
|
|
depends on PROC_FS && ADVISE_SYSCALLS && MMU
|
|
|
|
help
|
|
Allow naming anonymous virtual memory areas.
|
|
|
|
This feature allows assigning names to virtual memory areas. Assigned
|
|
names can be later retrieved from /proc/pid/maps and /proc/pid/smaps
|
|
and help identifying individual anonymous memory areas.
|
|
Assigning a name to anonymous virtual memory area might prevent that
|
|
area from being merged with adjacent virtual memory areas due to the
|
|
difference in their name.
|
|
|
|
config USERFAULTFD
|
|
bool "Enable userfaultfd() system call"
|
|
depends on MMU
|
|
help
|
|
Enable the userfaultfd() system call that allows to intercept and
|
|
handle page faults in userland.
|
|
|
|
config HAVE_ARCH_USERFAULTFD_WP
|
|
bool
|
|
help
|
|
Arch has userfaultfd write protection support
|
|
|
|
config HAVE_ARCH_USERFAULTFD_MINOR
|
|
bool
|
|
help
|
|
Arch has userfaultfd minor fault support
|
|
|
|
config PTE_MARKER
|
|
bool
|
|
|
|
help
|
|
Allows to create marker PTEs for file-backed memory.
|
|
|
|
config PTE_MARKER_UFFD_WP
|
|
bool "Userfaultfd write protection support for shmem/hugetlbfs"
|
|
default y
|
|
depends on HAVE_ARCH_USERFAULTFD_WP
|
|
select PTE_MARKER
|
|
|
|
help
|
|
Allows to create marker PTEs for userfaultfd write protection
|
|
purposes. It is required to enable userfaultfd write protection on
|
|
file-backed memory types like shmem and hugetlbfs.
|
|
|
|
# multi-gen LRU {
|
|
config LRU_GEN
|
|
bool "Multi-Gen LRU"
|
|
depends on MMU
|
|
# make sure folio->flags has enough spare bits
|
|
depends on 64BIT || !SPARSEMEM || SPARSEMEM_VMEMMAP
|
|
help
|
|
A high performance LRU implementation to overcommit memory. See
|
|
Documentation/admin-guide/mm/multigen_lru.rst for details.
|
|
|
|
config LRU_GEN_ENABLED
|
|
bool "Enable by default"
|
|
depends on LRU_GEN
|
|
help
|
|
This option enables the multi-gen LRU by default.
|
|
|
|
config LRU_GEN_STATS
|
|
bool "Full stats for debugging"
|
|
depends on LRU_GEN
|
|
help
|
|
Do not enable this option unless you plan to look at historical stats
|
|
from evicted generations for debugging purpose.
|
|
|
|
This option has a per-memcg and per-node memory overhead.
|
|
# }
|
|
|
|
source "mm/damon/Kconfig"
|
|
|
|
endmenu
|