diff mbox series

mm, page_alloc: really disable DEBUG_PAGEALLOC with hibernation

Message ID 20210519152804.27063-1-krzysztof.kozlowski@canonical.com (mailing list archive)
State New, archived
Headers show
Series mm, page_alloc: really disable DEBUG_PAGEALLOC with hibernation | expand

Commit Message

Krzysztof Kozlowski May 19, 2021, 3:28 p.m. UTC
The documentation of DEBUG_PAGEALLOC states that it cannot be used with
hibernation, however the Kconfig entry would allow it if
ARCH_SUPPORTS_DEBUG_PAGEALLOC && !PPC && !SPARC.

Fixes: ee3b4290aec0 ("generic debug pagealloc: build fix")
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
---
 mm/Kconfig.debug | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

David Hildenbrand May 19, 2021, 3:30 p.m. UTC | #1
On 19.05.21 17:28, Krzysztof Kozlowski wrote:
> The documentation of DEBUG_PAGEALLOC states that it cannot be used with
> hibernation, however the Kconfig entry would allow it if
> ARCH_SUPPORTS_DEBUG_PAGEALLOC && !PPC && !SPARC.
> 
> Fixes: ee3b4290aec0 ("generic debug pagealloc: build fix")
> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
> ---
>   mm/Kconfig.debug | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/mm/Kconfig.debug b/mm/Kconfig.debug
> index 1e73717802f8..0ace5b2a9d04 100644
> --- a/mm/Kconfig.debug
> +++ b/mm/Kconfig.debug
> @@ -11,7 +11,7 @@ config PAGE_EXTENSION
>   config DEBUG_PAGEALLOC
>   	bool "Debug page memory allocations"
>   	depends on DEBUG_KERNEL
> -	depends on !HIBERNATION || ARCH_SUPPORTS_DEBUG_PAGEALLOC && !PPC && !SPARC
> +	depends on !HIBERNATION && ARCH_SUPPORTS_DEBUG_PAGEALLOC && !PPC && !SPARC
>   	select PAGE_POISONING if !ARCH_SUPPORTS_DEBUG_PAGEALLOC
>   	help
>   	  Unmap pages from the kernel linear mapping after free_pages().
> 

I remember this should be working now, as we temporarily map the pages 
in the direct map when hibernating?
Vlastimil Babka May 19, 2021, 3:38 p.m. UTC | #2
On 5/19/21 5:28 PM, Krzysztof Kozlowski wrote:
> The documentation of DEBUG_PAGEALLOC states that it cannot be used with
> hibernation, however the Kconfig entry would allow it if
> ARCH_SUPPORTS_DEBUG_PAGEALLOC && !PPC && !SPARC.
> 
> Fixes: ee3b4290aec0 ("generic debug pagealloc: build fix")
> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>

Hmm the documentation seems wrong, as going through history it was indeed in
conflict only on PPC and SPARC.

> ---
>  mm/Kconfig.debug | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/mm/Kconfig.debug b/mm/Kconfig.debug
> index 1e73717802f8..0ace5b2a9d04 100644
> --- a/mm/Kconfig.debug
> +++ b/mm/Kconfig.debug
> @@ -11,7 +11,7 @@ config PAGE_EXTENSION
>  config DEBUG_PAGEALLOC
>  	bool "Debug page memory allocations"
>  	depends on DEBUG_KERNEL
> -	depends on !HIBERNATION || ARCH_SUPPORTS_DEBUG_PAGEALLOC && !PPC && !SPARC
> +	depends on !HIBERNATION && ARCH_SUPPORTS_DEBUG_PAGEALLOC && !PPC && !SPARC
>  	select PAGE_POISONING if !ARCH_SUPPORTS_DEBUG_PAGEALLOC
>  	help
>  	  Unmap pages from the kernel linear mapping after free_pages().
>
Krzysztof Kozlowski May 19, 2021, 3:42 p.m. UTC | #3
On 19/05/2021 11:30, David Hildenbrand wrote:
> On 19.05.21 17:28, Krzysztof Kozlowski wrote:
>> The documentation of DEBUG_PAGEALLOC states that it cannot be used with
>> hibernation, however the Kconfig entry would allow it if
>> ARCH_SUPPORTS_DEBUG_PAGEALLOC && !PPC && !SPARC.
>>
>> Fixes: ee3b4290aec0 ("generic debug pagealloc: build fix")
>> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
>> ---
>>   mm/Kconfig.debug | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/mm/Kconfig.debug b/mm/Kconfig.debug
>> index 1e73717802f8..0ace5b2a9d04 100644
>> --- a/mm/Kconfig.debug
>> +++ b/mm/Kconfig.debug
>> @@ -11,7 +11,7 @@ config PAGE_EXTENSION
>>   config DEBUG_PAGEALLOC
>>   	bool "Debug page memory allocations"
>>   	depends on DEBUG_KERNEL
>> -	depends on !HIBERNATION || ARCH_SUPPORTS_DEBUG_PAGEALLOC && !PPC && !SPARC
>> +	depends on !HIBERNATION && ARCH_SUPPORTS_DEBUG_PAGEALLOC && !PPC && !SPARC
>>   	select PAGE_POISONING if !ARCH_SUPPORTS_DEBUG_PAGEALLOC
>>   	help
>>   	  Unmap pages from the kernel linear mapping after free_pages().
>>
> 
> I remember this should be working now, as we temporarily map the pages 
> in the direct map when hibernating?

Let me actually test it on x86_64...


Best regards,
Krzysztof
Krzysztof Kozlowski May 19, 2021, 3:43 p.m. UTC | #4
On 19/05/2021 11:38, Vlastimil Babka wrote:
> On 5/19/21 5:28 PM, Krzysztof Kozlowski wrote:
>> The documentation of DEBUG_PAGEALLOC states that it cannot be used with
>> hibernation, however the Kconfig entry would allow it if
>> ARCH_SUPPORTS_DEBUG_PAGEALLOC && !PPC && !SPARC.
>>
>> Fixes: ee3b4290aec0 ("generic debug pagealloc: build fix")
>> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
> 
> Hmm the documentation seems wrong, as going through history it was indeed in
> conflict only on PPC and SPARC.

Indeed, x86 was never marked as a problem, although text/info warning
does not mention specific architectures.
> 


Best regards,
Krzysztof
Vlastimil Babka May 19, 2021, 3:48 p.m. UTC | #5
On 5/19/21 5:30 PM, David Hildenbrand wrote:
> On 19.05.21 17:28, Krzysztof Kozlowski wrote:
>> The documentation of DEBUG_PAGEALLOC states that it cannot be used with
>> hibernation, however the Kconfig entry would allow it if
>> ARCH_SUPPORTS_DEBUG_PAGEALLOC && !PPC && !SPARC.
>>
>> Fixes: ee3b4290aec0 ("generic debug pagealloc: build fix")
>> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
>> ---
>>   mm/Kconfig.debug | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/mm/Kconfig.debug b/mm/Kconfig.debug
>> index 1e73717802f8..0ace5b2a9d04 100644
>> --- a/mm/Kconfig.debug
>> +++ b/mm/Kconfig.debug
>> @@ -11,7 +11,7 @@ config PAGE_EXTENSION
>>   config DEBUG_PAGEALLOC
>>       bool "Debug page memory allocations"
>>       depends on DEBUG_KERNEL
>> -    depends on !HIBERNATION || ARCH_SUPPORTS_DEBUG_PAGEALLOC && !PPC && !SPARC
>> +    depends on !HIBERNATION && ARCH_SUPPORTS_DEBUG_PAGEALLOC && !PPC && !SPARC
>>       select PAGE_POISONING if !ARCH_SUPPORTS_DEBUG_PAGEALLOC
>>       help
>>         Unmap pages from the kernel linear mapping after free_pages().
>>
> 
> I remember this should be working now, as we temporarily map the pages in the
> direct map when hibernating?

Yeah, and if the problem was the page poisoning based implementation/fallback,
that was also fixed.

The current dependencies come from the unification by ee3b4290aec03

The question is if PPC and SPARC still really need to disable hibernation.
Krzysztof Kozlowski May 19, 2021, 5:57 p.m. UTC | #6
On 19/05/2021 11:48, Vlastimil Babka wrote:
> On 5/19/21 5:30 PM, David Hildenbrand wrote:
>> On 19.05.21 17:28, Krzysztof Kozlowski wrote:
>>> The documentation of DEBUG_PAGEALLOC states that it cannot be used with
>>> hibernation, however the Kconfig entry would allow it if
>>> ARCH_SUPPORTS_DEBUG_PAGEALLOC && !PPC && !SPARC.
>>>
>>> Fixes: ee3b4290aec0 ("generic debug pagealloc: build fix")
>>> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
>>> ---
>>>   mm/Kconfig.debug | 2 +-
>>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/mm/Kconfig.debug b/mm/Kconfig.debug
>>> index 1e73717802f8..0ace5b2a9d04 100644
>>> --- a/mm/Kconfig.debug
>>> +++ b/mm/Kconfig.debug
>>> @@ -11,7 +11,7 @@ config PAGE_EXTENSION
>>>   config DEBUG_PAGEALLOC
>>>       bool "Debug page memory allocations"
>>>       depends on DEBUG_KERNEL
>>> -    depends on !HIBERNATION || ARCH_SUPPORTS_DEBUG_PAGEALLOC && !PPC && !SPARC
>>> +    depends on !HIBERNATION && ARCH_SUPPORTS_DEBUG_PAGEALLOC && !PPC && !SPARC
>>>       select PAGE_POISONING if !ARCH_SUPPORTS_DEBUG_PAGEALLOC
>>>       help
>>>         Unmap pages from the kernel linear mapping after free_pages().
>>>
>>
>> I remember this should be working now, as we temporarily map the pages in the
>> direct map when hibernating?
> 
> Yeah, and if the problem was the page poisoning based implementation/fallback,
> that was also fixed.
> 
> The current dependencies come from the unification by ee3b4290aec03
> 
> The question is if PPC and SPARC still really need to disable hibernation.

I tested slightly older kernel (v5.8 with few backports for poison
support with hibernation) and it worked fine on x86_64. For the PPC and
SPARC I don't know.

I can update the Kconfig option description to mention x86_64.


Best regards,
Krzysztof
diff mbox series

Patch

diff --git a/mm/Kconfig.debug b/mm/Kconfig.debug
index 1e73717802f8..0ace5b2a9d04 100644
--- a/mm/Kconfig.debug
+++ b/mm/Kconfig.debug
@@ -11,7 +11,7 @@  config PAGE_EXTENSION
 config DEBUG_PAGEALLOC
 	bool "Debug page memory allocations"
 	depends on DEBUG_KERNEL
-	depends on !HIBERNATION || ARCH_SUPPORTS_DEBUG_PAGEALLOC && !PPC && !SPARC
+	depends on !HIBERNATION && ARCH_SUPPORTS_DEBUG_PAGEALLOC && !PPC && !SPARC
 	select PAGE_POISONING if !ARCH_SUPPORTS_DEBUG_PAGEALLOC
 	help
 	  Unmap pages from the kernel linear mapping after free_pages().