On 5/28/24 4:54 PM, benja...@sipsolutions.net wrote:
[...]
> diff --git a/arch/um/Kconfig b/arch/um/Kconfig
> index 93a5a8999b07..5d111fc8ccb7 100644
> --- a/arch/um/Kconfig
> +++ b/arch/um/Kconfig
> @@ -208,6 +208,7 @@ config MMAPPER
>  
>  config PGTABLE_LEVELS
>       int
> +     default 4 if 4_LEVEL_PGTABLES
>       default 3 if 3_LEVEL_PGTABLES
>       default 2
>  
[...]
> diff --git a/arch/x86/um/Kconfig b/arch/x86/um/Kconfig
> index 186f13268401..72dc7b0b3a33 100644
> --- a/arch/x86/um/Kconfig
> +++ b/arch/x86/um/Kconfig
> @@ -28,16 +28,34 @@ config X86_64
>       def_bool 64BIT
>       select MODULES_USE_ELF_RELA
>  
> -config 3_LEVEL_PGTABLES
> -     bool "Three-level pagetables" if !64BIT
> -     default 64BIT
> -     help
> -       Three-level pagetables will let UML have more than 4G of physical
> -       memory.  All the memory that can't be mapped directly will be treated
> -       as high memory.
> -
> -       However, this it experimental on 32-bit architectures, so if unsure 
> say
> -       N (on x86-64 it's automatically enabled, instead, as it's safe there).
> +choice
> +     prompt "Pagetable levels" if EXPERT
> +     default 2_LEVEL_PGTABLES if !64BIT
> +     default 4_LEVEL_PGTABLES if 64BIT
> +
> +     config 2_LEVEL_PGTABLES
> +             bool "Three-level pagetables" if !64BIT

Nit: s/Three-level/Two-level/

> +             depends on !64BIT
> +             help
> +               Two-level page table for 32-bit architectures.
> +
> +     config 3_LEVEL_PGTABLES
> +             bool "Three-level pagetables" if 64BIT
> +             help
> +               Three-level pagetables will let UML have more than 4G of 
> physical
> +               memory.  All the memory that can't be mapped directly will be 
> treated
> +               as high memory.
> +
> +               However, this it experimental on 32-bit architectures, so if 
> unsure say
> +               N (on x86-64 it's automatically enabled, instead, as it's 
> safe there).
> +
> +     config 4_LEVEL_PGTABLES
> +             bool "Four-level pagetables" if 64BIT
> +             depends on 64BIT
> +             help
> +               Four-level pagetables, gives a bigger address space which can 
> be
> +               useful for some applications (e.g. ASAN).

On 64bit, it appears that 4_LEVEL_PGTABLES won't be selected by running
"make ARCH=um defconfig", and PGTABLE_LEVELS will be 2.

I got the following search result in "make ARCH=um menuconfig":

  │ Symbol: 4_LEVEL_PGTABLES [=n]
  │ Type  : bool
  │ Defined at arch/x86/um/Kconfig:51
  │   Prompt: Four-level pagetables
  │   Depends on: <choice> && 64BIT [=y]
  │   Location:
  │ (1) -> UML-specific options
  │       -> Pagetable levels (<choice> [=n])
  │         -> Four-level pagetables (4_LEVEL_PGTABLES [=n])

And 4_LEVEL_PGTABLES will be selected if I turn on EXPERT manually.

Regards,
Tiwei

> +endchoice
>  
>  config ARCH_HAS_SC_SIGNALS
>       def_bool !64BIT


Reply via email to