diff mbox series

powerpc: Restrict ARCH_HIBERNATION_POSSIBLE to supported configurations

Message ID 20231114082046.6018-1-vishalc@linux.ibm.com (mailing list archive)
State Changes Requested
Headers show
Series powerpc: Restrict ARCH_HIBERNATION_POSSIBLE to supported configurations | expand

Checks

Context Check Description
snowpatch_ozlabs/github-powerpc_ppctests success Successfully ran 8 jobs.
snowpatch_ozlabs/github-powerpc_selftests success Successfully ran 8 jobs.
snowpatch_ozlabs/github-powerpc_clang success Successfully ran 6 jobs.
snowpatch_ozlabs/github-powerpc_sparse success Successfully ran 4 jobs.
snowpatch_ozlabs/github-powerpc_kernel_qemu success Successfully ran 23 jobs.

Commit Message

Vishal Chourasia Nov. 14, 2023, 8:20 a.m. UTC
This patch modifies the ARCH_HIBERNATION_POSSIBLE option to ensure that it
correctly depends on these PowerPC configurations being enabled. As a result,
it prevents the HOTPLUG_CPU from being selected when the required dependencies
are not satisfied.

This change aligns the dependency tree with the expected hardware support for
CPU hot-plugging under PowerPC architectures, ensuring that the kernel
configuration steps do not lead to inconsistent states.

Signed-off-by: Vishal Chourasia <vishalc@linux.ibm.com>
---
During the configuration process with 'make randconfig' followed by
'make olddefconfig', we observed a warning indicating an unmet direct
dependency for the HOTPLUG_CPU option. The dependency in question relates to
various PowerPC configurations (PPC_PSERIES, PPC_PMAC, PPC_POWERNV,
FSL_SOC_BOOKE) which were not enabled, yet the HOTPLUG_CPU was being
erroneously selected due to an implicit assumption by the PM_SLEEP_SMP option.
This misalignment in dependencies could potentially lead to inconsistent kernel
configuration states, especially when considering the necessary hardware
support for CPU hot-plugging on PowerPC platforms. The patch aims to correct
this by ensuring that ARCH_HIBERNATION_POSSIBLE is contingent upon the
appropriate PowerPC configurations being active.

steps to reproduce (before applying the patch):

Run 'make pseries_le_defconfig'
Run 'make menuconfig'
Enable hibernation [ Kernel options -> Hibernation (aka 'suspend to disk') ] 
Disable [ Platform support -> IBM PowerNV (Non-Virtualized) platform support ]
Disable [ Platform support -> IBM pSeries & new (POWER5-based) iSeries ]
Enable SMP [ Processor support -> Symmetric multi-processing support ]
Save the config
Run 'make olddefconfig'

 arch/powerpc/Kconfig | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

Comments

Aneesh Kumar K V Nov. 15, 2023, 8:09 a.m. UTC | #1
Vishal Chourasia <vishalc@linux.ibm.com> writes:

> This patch modifies the ARCH_HIBERNATION_POSSIBLE option to ensure that it
> correctly depends on these PowerPC configurations being enabled. As a result,
> it prevents the HOTPLUG_CPU from being selected when the required dependencies
> are not satisfied.
>
> This change aligns the dependency tree with the expected hardware support for
> CPU hot-plugging under PowerPC architectures, ensuring that the kernel
> configuration steps do not lead to inconsistent states.
>
> Signed-off-by: Vishal Chourasia <vishalc@linux.ibm.com>
> ---
> During the configuration process with 'make randconfig' followed by
> 'make olddefconfig', we observed a warning indicating an unmet direct
> dependency for the HOTPLUG_CPU option. The dependency in question relates to
> various PowerPC configurations (PPC_PSERIES, PPC_PMAC, PPC_POWERNV,
> FSL_SOC_BOOKE) which were not enabled, yet the HOTPLUG_CPU was being
> erroneously selected due to an implicit assumption by the PM_SLEEP_SMP option.
> This misalignment in dependencies could potentially lead to inconsistent kernel
> configuration states, especially when considering the necessary hardware
> support for CPU hot-plugging on PowerPC platforms. The patch aims to correct
> this by ensuring that ARCH_HIBERNATION_POSSIBLE is contingent upon the
> appropriate PowerPC configurations being active.
>
> steps to reproduce (before applying the patch):
>
> Run 'make pseries_le_defconfig'
> Run 'make menuconfig'
> Enable hibernation [ Kernel options -> Hibernation (aka 'suspend to disk') ] 
> Disable [ Platform support -> IBM PowerNV (Non-Virtualized) platform support ]
> Disable [ Platform support -> IBM pSeries & new (POWER5-based) iSeries ]
> Enable SMP [ Processor support -> Symmetric multi-processing support ]
> Save the config
> Run 'make olddefconfig'
>
>  arch/powerpc/Kconfig | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
> index 6f105ee4f3cf..bf99ff9869f6 100644
> --- a/arch/powerpc/Kconfig
> +++ b/arch/powerpc/Kconfig
> @@ -380,8 +380,9 @@ config DEFAULT_UIMAGE
>  	  Used to allow a board to specify it wants a uImage built by default
>  
>  config ARCH_HIBERNATION_POSSIBLE
> -	bool
> -	default y
> +	def_bool y
> +	depends on PPC_PSERIES || \
> +		PPC_PMAC || PPC_POWERNV || FSL_SOC_BOOKE
>  
>  config ARCH_SUSPEND_POSSIBLE
>  	def_bool y
>

I am wondering whether it should be switched to using select from
config PPC? 

-aneesh
Vishal Chourasia Nov. 15, 2023, 11:53 a.m. UTC | #2
On 15/11/23 1:39 pm, Aneesh Kumar K.V wrote:
> Vishal Chourasia <vishalc@linux.ibm.com> writes:
>
>> This patch modifies the ARCH_HIBERNATION_POSSIBLE option to ensure that it
>> correctly depends on these PowerPC configurations being enabled. As a result,
>> it prevents the HOTPLUG_CPU from being selected when the required dependencies
>> are not satisfied.
>>
>> This change aligns the dependency tree with the expected hardware support for
>> CPU hot-plugging under PowerPC architectures, ensuring that the kernel
>> configuration steps do not lead to inconsistent states.
>>
>> Signed-off-by: Vishal Chourasia <vishalc@linux.ibm.com>
>> ---
>> During the configuration process with 'make randconfig' followed by
>> 'make olddefconfig', we observed a warning indicating an unmet direct
>> dependency for the HOTPLUG_CPU option. The dependency in question relates to
>> various PowerPC configurations (PPC_PSERIES, PPC_PMAC, PPC_POWERNV,
>> FSL_SOC_BOOKE) which were not enabled, yet the HOTPLUG_CPU was being
>> erroneously selected due to an implicit assumption by the PM_SLEEP_SMP option.
>> This misalignment in dependencies could potentially lead to inconsistent kernel
>> configuration states, especially when considering the necessary hardware
>> support for CPU hot-plugging on PowerPC platforms. The patch aims to correct
>> this by ensuring that ARCH_HIBERNATION_POSSIBLE is contingent upon the
>> appropriate PowerPC configurations being active.
>>
>> steps to reproduce (before applying the patch):
>>
>> Run 'make pseries_le_defconfig'
>> Run 'make menuconfig'
>> Enable hibernation [ Kernel options -> Hibernation (aka 'suspend to disk') ] 
>> Disable [ Platform support -> IBM PowerNV (Non-Virtualized) platform support ]
>> Disable [ Platform support -> IBM pSeries & new (POWER5-based) iSeries ]
>> Enable SMP [ Processor support -> Symmetric multi-processing support ]
>> Save the config
>> Run 'make olddefconfig'
>>
>>  arch/powerpc/Kconfig | 5 +++--
>>  1 file changed, 3 insertions(+), 2 deletions(-)
>>
>> diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
>> index 6f105ee4f3cf..bf99ff9869f6 100644
>> --- a/arch/powerpc/Kconfig
>> +++ b/arch/powerpc/Kconfig
>> @@ -380,8 +380,9 @@ config DEFAULT_UIMAGE
>>  	  Used to allow a board to specify it wants a uImage built by default
>>  
>>  config ARCH_HIBERNATION_POSSIBLE
>> -	bool
>> -	default y
>> +	def_bool y
>> +	depends on PPC_PSERIES || \
>> +		PPC_PMAC || PPC_POWERNV || FSL_SOC_BOOKE
>>  
>>  config ARCH_SUSPEND_POSSIBLE
>>  	def_bool y
>>
> I am wondering whether it should be switched to using select from
> config PPC? 

selecting ARCH_HIBERNATION_POSSIBLE based on value of config PPC
will not guarantee config PPC_PSERIES being set

PPC_PSERIES can be set to N, even when config PPC is set.

grep -A 5 -i "config ppc_pseries" arch/powerpc/platforms/pseries/Kconfig
config PPC_PSERIES
        depends on PPC64 && PPC_BOOK3S
        bool "IBM pSeries & new (POWER5-based) iSeries"
        select HAVE_PCSPKR_PLATFORM
        select MPIC
        select OF_DYNAMIC

>
> -aneesh
Aneesh Kumar K V Nov. 15, 2023, 12:16 p.m. UTC | #3
On 11/15/23 5:23 PM, Vishal Chourasia wrote:
> 
> On 15/11/23 1:39 pm, Aneesh Kumar K.V wrote:
>> Vishal Chourasia <vishalc@linux.ibm.com> writes:
>>
>>> This patch modifies the ARCH_HIBERNATION_POSSIBLE option to ensure that it
>>> correctly depends on these PowerPC configurations being enabled. As a result,
>>> it prevents the HOTPLUG_CPU from being selected when the required dependencies
>>> are not satisfied.
>>>
>>> This change aligns the dependency tree with the expected hardware support for
>>> CPU hot-plugging under PowerPC architectures, ensuring that the kernel
>>> configuration steps do not lead to inconsistent states.
>>>
>>> Signed-off-by: Vishal Chourasia <vishalc@linux.ibm.com>
>>> ---
>>> During the configuration process with 'make randconfig' followed by
>>> 'make olddefconfig', we observed a warning indicating an unmet direct
>>> dependency for the HOTPLUG_CPU option. The dependency in question relates to
>>> various PowerPC configurations (PPC_PSERIES, PPC_PMAC, PPC_POWERNV,
>>> FSL_SOC_BOOKE) which were not enabled, yet the HOTPLUG_CPU was being
>>> erroneously selected due to an implicit assumption by the PM_SLEEP_SMP option.
>>> This misalignment in dependencies could potentially lead to inconsistent kernel
>>> configuration states, especially when considering the necessary hardware
>>> support for CPU hot-plugging on PowerPC platforms. The patch aims to correct
>>> this by ensuring that ARCH_HIBERNATION_POSSIBLE is contingent upon the
>>> appropriate PowerPC configurations being active.
>>>
>>> steps to reproduce (before applying the patch):
>>>
>>> Run 'make pseries_le_defconfig'
>>> Run 'make menuconfig'
>>> Enable hibernation [ Kernel options -> Hibernation (aka 'suspend to disk') ] 
>>> Disable [ Platform support -> IBM PowerNV (Non-Virtualized) platform support ]
>>> Disable [ Platform support -> IBM pSeries & new (POWER5-based) iSeries ]
>>> Enable SMP [ Processor support -> Symmetric multi-processing support ]
>>> Save the config
>>> Run 'make olddefconfig'
>>>
>>>  arch/powerpc/Kconfig | 5 +++--
>>>  1 file changed, 3 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
>>> index 6f105ee4f3cf..bf99ff9869f6 100644
>>> --- a/arch/powerpc/Kconfig
>>> +++ b/arch/powerpc/Kconfig
>>> @@ -380,8 +380,9 @@ config DEFAULT_UIMAGE
>>>  	  Used to allow a board to specify it wants a uImage built by default
>>>  
>>>  config ARCH_HIBERNATION_POSSIBLE
>>> -	bool
>>> -	default y
>>> +	def_bool y
>>> +	depends on PPC_PSERIES || \
>>> +		PPC_PMAC || PPC_POWERNV || FSL_SOC_BOOKE
>>>  
>>>  config ARCH_SUSPEND_POSSIBLE
>>>  	def_bool y
>>>
>> I am wondering whether it should be switched to using select from
>> config PPC? 
> 
> selecting ARCH_HIBERNATION_POSSIBLE based on value of config PPC
> will not guarantee config PPC_PSERIES being set
> 
> PPC_PSERIES can be set to N, even when config PPC is set.
> 
> grep -A 5 -i "config ppc_pseries" arch/powerpc/platforms/pseries/Kconfig
> config PPC_PSERIES
>         depends on PPC64 && PPC_BOOK3S
>         bool "IBM pSeries & new (POWER5-based) iSeries"
>         select HAVE_PCSPKR_PLATFORM
>         select MPIC
>         select OF_DYNAMIC
> 

modified   arch/powerpc/Kconfig
@@ -156,6 +156,7 @@ config PPC
 	select ARCH_HAS_UACCESS_FLUSHCACHE
 	select ARCH_HAS_UBSAN_SANITIZE_ALL
 	select ARCH_HAVE_NMI_SAFE_CMPXCHG
+	select ARCH_HIBERNATION_POSSIBLE	if (PPC_PSERIES || PPC_PMAC || PPC_POWERNV || FSL_SOC_BOOKE)
 	select ARCH_KEEP_MEMBLOCK
 	select ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE	if PPC_RADIX_MMU
 	select ARCH_MIGHT_HAVE_PC_PARPORT


-aneesh
Vishal Chourasia Nov. 16, 2023, 8:43 a.m. UTC | #4
On 15/11/23 5:46 pm, Aneesh Kumar K V wrote:
> On 11/15/23 5:23 PM, Vishal Chourasia wrote:
>> On 15/11/23 1:39 pm, Aneesh Kumar K.V wrote:
>>> Vishal Chourasia <vishalc@linux.ibm.com> writes:
>>>
>>>> This patch modifies the ARCH_HIBERNATION_POSSIBLE option to ensure that it
>>>> correctly depends on these PowerPC configurations being enabled. As a result,
>>>> it prevents the HOTPLUG_CPU from being selected when the required dependencies
>>>> are not satisfied.
>>>>
>>>> This change aligns the dependency tree with the expected hardware support for
>>>> CPU hot-plugging under PowerPC architectures, ensuring that the kernel
>>>> configuration steps do not lead to inconsistent states.
>>>>
>>>> Signed-off-by: Vishal Chourasia <vishalc@linux.ibm.com>
>>>> ---
>>>> During the configuration process with 'make randconfig' followed by
>>>> 'make olddefconfig', we observed a warning indicating an unmet direct
>>>> dependency for the HOTPLUG_CPU option. The dependency in question relates to
>>>> various PowerPC configurations (PPC_PSERIES, PPC_PMAC, PPC_POWERNV,
>>>> FSL_SOC_BOOKE) which were not enabled, yet the HOTPLUG_CPU was being
>>>> erroneously selected due to an implicit assumption by the PM_SLEEP_SMP option.
>>>> This misalignment in dependencies could potentially lead to inconsistent kernel
>>>> configuration states, especially when considering the necessary hardware
>>>> support for CPU hot-plugging on PowerPC platforms. The patch aims to correct
>>>> this by ensuring that ARCH_HIBERNATION_POSSIBLE is contingent upon the
>>>> appropriate PowerPC configurations being active.
>>>>
>>>> steps to reproduce (before applying the patch):
>>>>
>>>> Run 'make pseries_le_defconfig'
>>>> Run 'make menuconfig'
>>>> Enable hibernation [ Kernel options -> Hibernation (aka 'suspend to disk') ] 
>>>> Disable [ Platform support -> IBM PowerNV (Non-Virtualized) platform support ]
>>>> Disable [ Platform support -> IBM pSeries & new (POWER5-based) iSeries ]
>>>> Enable SMP [ Processor support -> Symmetric multi-processing support ]
>>>> Save the config
>>>> Run 'make olddefconfig'
>>>>
>>>>  arch/powerpc/Kconfig | 5 +++--
>>>>  1 file changed, 3 insertions(+), 2 deletions(-)
>>>>
>>>> diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
>>>> index 6f105ee4f3cf..bf99ff9869f6 100644
>>>> --- a/arch/powerpc/Kconfig
>>>> +++ b/arch/powerpc/Kconfig
>>>> @@ -380,8 +380,9 @@ config DEFAULT_UIMAGE
>>>>  	  Used to allow a board to specify it wants a uImage built by default
>>>>  
>>>>  config ARCH_HIBERNATION_POSSIBLE
>>>> -	bool
>>>> -	default y
>>>> +	def_bool y
>>>> +	depends on PPC_PSERIES || \
>>>> +		PPC_PMAC || PPC_POWERNV || FSL_SOC_BOOKE
>>>>  
>>>>  config ARCH_SUSPEND_POSSIBLE
>>>>  	def_bool y
>>>>
>>> I am wondering whether it should be switched to using select from
>>> config PPC? 
>>>
>>> selecting ARCH_HIBERNATION_POSSIBLE based on value of config PPC
>>> will not guarantee config PPC_PSERIES being set
>>>
>>> PPC_PSERIES can be set to N, even when config PPC is set.
I understand what you meant before. Having ARCH_HIBERNATION_POSSIBLE under config PPC makes more sense.
>>> grep -A 5 -i "config ppc_pseries" arch/powerpc/platforms/pseries/Kconfig
>>> config PPC_PSERIES
>>>         depends on PPC64 && PPC_BOOK3S
>>>         bool "IBM pSeries & new (POWER5-based) iSeries"
>>>         select HAVE_PCSPKR_PLATFORM
>>>         select MPIC
>>>         select OF_DYNAMIC
>>>
> modified   arch/powerpc/Kconfig
> @@ -156,6 +156,7 @@ config PPC
>  	select ARCH_HAS_UACCESS_FLUSHCACHE
>  	select ARCH_HAS_UBSAN_SANITIZE_ALL
>  	select ARCH_HAVE_NMI_SAFE_CMPXCHG
> +	select ARCH_HIBERNATION_POSSIBLE	if (PPC_PSERIES || PPC_PMAC || PPC_POWERNV || FSL_SOC_BOOKE)
>  	select ARCH_KEEP_MEMBLOCK
>  	select ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE	if PPC_RADIX_MMU
>  	select ARCH_MIGHT_HAVE_PC_PARPORT

Though, even with these changes I was able to reproduce same warnings. (using steps from above)
It's because one can enable HIBERNATION manually.

As these warnings were observed through make randconfig, there is still a chance that randconfig
may result in a permutation that may produce these warnings again.

>
> -aneesh
Michael Ellerman Nov. 16, 2023, 11:22 p.m. UTC | #5
Vishal Chourasia <vishalc@linux.ibm.com> writes:
> On 15/11/23 5:46 pm, Aneesh Kumar K V wrote:
>> On 11/15/23 5:23 PM, Vishal Chourasia wrote:
>>> On 15/11/23 1:39 pm, Aneesh Kumar K.V wrote:
>>>> Vishal Chourasia <vishalc@linux.ibm.com> writes:
>>>>
>>>>> This patch modifies the ARCH_HIBERNATION_POSSIBLE option to ensure that it
>>>>> correctly depends on these PowerPC configurations being enabled. As a result,
>>>>> it prevents the HOTPLUG_CPU from being selected when the required dependencies
>>>>> are not satisfied.
>>>>>
>>>>> This change aligns the dependency tree with the expected hardware support for
>>>>> CPU hot-plugging under PowerPC architectures, ensuring that the kernel
>>>>> configuration steps do not lead to inconsistent states.
>>>>>
>>>>> Signed-off-by: Vishal Chourasia <vishalc@linux.ibm.com>
>>>>> ---
>>>>> During the configuration process with 'make randconfig' followed by
>>>>> 'make olddefconfig', we observed a warning indicating an unmet direct
>>>>> dependency for the HOTPLUG_CPU option. The dependency in question relates to
>>>>> various PowerPC configurations (PPC_PSERIES, PPC_PMAC, PPC_POWERNV,
>>>>> FSL_SOC_BOOKE) which were not enabled, yet the HOTPLUG_CPU was being
>>>>> erroneously selected due to an implicit assumption by the PM_SLEEP_SMP option.
>>>>> This misalignment in dependencies could potentially lead to inconsistent kernel
>>>>> configuration states, especially when considering the necessary hardware
>>>>> support for CPU hot-plugging on PowerPC platforms. The patch aims to correct
>>>>> this by ensuring that ARCH_HIBERNATION_POSSIBLE is contingent upon the
>>>>> appropriate PowerPC configurations being active.
>>>>>
>>>>> steps to reproduce (before applying the patch):
>>>>>
>>>>> Run 'make pseries_le_defconfig'
>>>>> Run 'make menuconfig'
>>>>> Enable hibernation [ Kernel options -> Hibernation (aka 'suspend to disk') ] 
>>>>> Disable [ Platform support -> IBM PowerNV (Non-Virtualized) platform support ]
>>>>> Disable [ Platform support -> IBM pSeries & new (POWER5-based) iSeries ]
>>>>> Enable SMP [ Processor support -> Symmetric multi-processing support ]
>>>>> Save the config
>>>>> Run 'make olddefconfig'
>>>>>
>>>>>  arch/powerpc/Kconfig | 5 +++--
>>>>>  1 file changed, 3 insertions(+), 2 deletions(-)
>>>>>
>>>>> diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
>>>>> index 6f105ee4f3cf..bf99ff9869f6 100644
>>>>> --- a/arch/powerpc/Kconfig
>>>>> +++ b/arch/powerpc/Kconfig
>>>>> @@ -380,8 +380,9 @@ config DEFAULT_UIMAGE
>>>>>  	  Used to allow a board to specify it wants a uImage built by default
>>>>>  
>>>>>  config ARCH_HIBERNATION_POSSIBLE
>>>>> -	bool
>>>>> -	default y
>>>>> +	def_bool y
>>>>> +	depends on PPC_PSERIES || \
>>>>> +		PPC_PMAC || PPC_POWERNV || FSL_SOC_BOOKE
>>>>>  
>>>>>  config ARCH_SUSPEND_POSSIBLE
>>>>>  	def_bool y
>>>>>
>>>> I am wondering whether it should be switched to using select from
>>>> config PPC? 
>>>>
>>>> selecting ARCH_HIBERNATION_POSSIBLE based on value of config PPC
>>>> will not guarantee config PPC_PSERIES being set
>>>>
>>>> PPC_PSERIES can be set to N, even when config PPC is set.
> I understand what you meant before. Having ARCH_HIBERNATION_POSSIBLE under config PPC makes more sense.
>>>> grep -A 5 -i "config ppc_pseries" arch/powerpc/platforms/pseries/Kconfig
>>>> config PPC_PSERIES
>>>>         depends on PPC64 && PPC_BOOK3S
>>>>         bool "IBM pSeries & new (POWER5-based) iSeries"
>>>>         select HAVE_PCSPKR_PLATFORM
>>>>         select MPIC
>>>>         select OF_DYNAMIC
>>>>
>> modified   arch/powerpc/Kconfig
>> @@ -156,6 +156,7 @@ config PPC
>>  	select ARCH_HAS_UACCESS_FLUSHCACHE
>>  	select ARCH_HAS_UBSAN_SANITIZE_ALL
>>  	select ARCH_HAVE_NMI_SAFE_CMPXCHG
>> +	select ARCH_HIBERNATION_POSSIBLE	if (PPC_PSERIES || PPC_PMAC || PPC_POWERNV || FSL_SOC_BOOKE)
>>  	select ARCH_KEEP_MEMBLOCK
>>  	select ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE	if PPC_RADIX_MMU
>>  	select ARCH_MIGHT_HAVE_PC_PARPORT
>
> Though, even with these changes I was able to reproduce same warnings. (using steps from above)
> It's because one can enable HIBERNATION manually.

But how? You shouldn't be able to enable it manually, it depends on
ARCH_HIBERNATION_POSSIBLE which shouldn't be enabled.

For the above to work you also need to make it default n, eg:

diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index 6f105ee4f3cf..dd2a9b938188 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -380,8 +380,7 @@ config DEFAULT_UIMAGE
          Used to allow a board to specify it wants a uImage built by default

 config ARCH_HIBERNATION_POSSIBLE
-       bool
-       default y
+       def_bool n

 config ARCH_SUSPEND_POSSIBLE
        def_bool y


cheers
Vishal Chourasia Nov. 17, 2023, 8:34 a.m. UTC | #6
On 17/11/23 4:52 am, Michael Ellerman wrote:
> Vishal Chourasia <vishalc@linux.ibm.com> writes:
>> On 15/11/23 5:46 pm, Aneesh Kumar K V wrote:
>>> On 11/15/23 5:23 PM, Vishal Chourasia wrote:
>>>> On 15/11/23 1:39 pm, Aneesh Kumar K.V wrote:
>>>>> Vishal Chourasia <vishalc@linux.ibm.com> writes:
>>>>>
>>>>>> This patch modifies the ARCH_HIBERNATION_POSSIBLE option to ensure that it
>>>>>> correctly depends on these PowerPC configurations being enabled. As a result,
>>>>>> it prevents the HOTPLUG_CPU from being selected when the required dependencies
>>>>>> are not satisfied.
>>>>>>
>>>>>> This change aligns the dependency tree with the expected hardware support for
>>>>>> CPU hot-plugging under PowerPC architectures, ensuring that the kernel
>>>>>> configuration steps do not lead to inconsistent states.
>>>>>>
>>>>>> Signed-off-by: Vishal Chourasia <vishalc@linux.ibm.com>
>>>>>> ---
>>>>>> During the configuration process with 'make randconfig' followed by
>>>>>> 'make olddefconfig', we observed a warning indicating an unmet direct
>>>>>> dependency for the HOTPLUG_CPU option. The dependency in question relates to
>>>>>> various PowerPC configurations (PPC_PSERIES, PPC_PMAC, PPC_POWERNV,
>>>>>> FSL_SOC_BOOKE) which were not enabled, yet the HOTPLUG_CPU was being
>>>>>> erroneously selected due to an implicit assumption by the PM_SLEEP_SMP option.
>>>>>> This misalignment in dependencies could potentially lead to inconsistent kernel
>>>>>> configuration states, especially when considering the necessary hardware
>>>>>> support for CPU hot-plugging on PowerPC platforms. The patch aims to correct
>>>>>> this by ensuring that ARCH_HIBERNATION_POSSIBLE is contingent upon the
>>>>>> appropriate PowerPC configurations being active.
>>>>>>
>>>>>> steps to reproduce (before applying the patch):
>>>>>>
>>>>>> Run 'make pseries_le_defconfig'
>>>>>> Run 'make menuconfig'
>>>>>> Enable hibernation [ Kernel options -> Hibernation (aka 'suspend to disk') ] 
>>>>>> Disable [ Platform support -> IBM PowerNV (Non-Virtualized) platform support ]
>>>>>> Disable [ Platform support -> IBM pSeries & new (POWER5-based) iSeries ]
>>>>>> Enable SMP [ Processor support -> Symmetric multi-processing support ]
>>>>>> Save the config
>>>>>> Run 'make olddefconfig'
>>>>>>
>>>>>>  arch/powerpc/Kconfig | 5 +++--
>>>>>>  1 file changed, 3 insertions(+), 2 deletions(-)
>>>>>>
>>>>>> diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
>>>>>> index 6f105ee4f3cf..bf99ff9869f6 100644
>>>>>> --- a/arch/powerpc/Kconfig
>>>>>> +++ b/arch/powerpc/Kconfig
>>>>>> @@ -380,8 +380,9 @@ config DEFAULT_UIMAGE
>>>>>>  	  Used to allow a board to specify it wants a uImage built by default
>>>>>>  
>>>>>>  config ARCH_HIBERNATION_POSSIBLE
>>>>>> -	bool
>>>>>> -	default y
>>>>>> +	def_bool y
>>>>>> +	depends on PPC_PSERIES || \
>>>>>> +		PPC_PMAC || PPC_POWERNV || FSL_SOC_BOOKE
>>>>>>  
>>>>>>  config ARCH_SUSPEND_POSSIBLE
>>>>>>  	def_bool y
>>>>>>
>>>>> I am wondering whether it should be switched to using select from
>>>>> config PPC? 
>>>>>
>>>>> selecting ARCH_HIBERNATION_POSSIBLE based on value of config PPC
>>>>> will not guarantee config PPC_PSERIES being set
>>>>>
>>>>> PPC_PSERIES can be set to N, even when config PPC is set.
>> I understand what you meant before. Having ARCH_HIBERNATION_POSSIBLE under config PPC makes more sense.
>>>>> grep -A 5 -i "config ppc_pseries" arch/powerpc/platforms/pseries/Kconfig
>>>>> config PPC_PSERIES
>>>>>         depends on PPC64 && PPC_BOOK3S
>>>>>         bool "IBM pSeries & new (POWER5-based) iSeries"
>>>>>         select HAVE_PCSPKR_PLATFORM
>>>>>         select MPIC
>>>>>         select OF_DYNAMIC
>>>>>
>>> modified   arch/powerpc/Kconfig
>>> @@ -156,6 +156,7 @@ config PPC
>>>  	select ARCH_HAS_UACCESS_FLUSHCACHE
>>>  	select ARCH_HAS_UBSAN_SANITIZE_ALL
>>>  	select ARCH_HAVE_NMI_SAFE_CMPXCHG
>>> +	select ARCH_HIBERNATION_POSSIBLE	if (PPC_PSERIES || PPC_PMAC || PPC_POWERNV || FSL_SOC_BOOKE)
>>>  	select ARCH_KEEP_MEMBLOCK
>>>  	select ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE	if PPC_RADIX_MMU
>>>  	select ARCH_MIGHT_HAVE_PC_PARPORT
>> Though, even with these changes I was able to reproduce same warnings. (using steps from above)
>> It's because one can enable HIBERNATION manually.
> But how? You shouldn't be able to enable it manually, it depends on
> ARCH_HIBERNATION_POSSIBLE which shouldn't be enabled.
>
> For the above to work you also need to make it default n, eg:
>
> diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
> index 6f105ee4f3cf..dd2a9b938188 100644
> --- a/arch/powerpc/Kconfig
> +++ b/arch/powerpc/Kconfig
> @@ -380,8 +380,7 @@ config DEFAULT_UIMAGE
>           Used to allow a board to specify it wants a uImage built by default
>
>  config ARCH_HIBERNATION_POSSIBLE
> -       bool
> -       default y
> +       def_bool n
>
>  config ARCH_SUSPEND_POSSIBLE
>         def_bool y
Verified.


Will send out another version.


>
> cheers
Vishal Chourasia Nov. 17, 2023, 10:06 a.m. UTC | #7
On 17/11/23 4:52 am, Michael Ellerman wrote:
> Vishal Chourasia <vishalc@linux.ibm.com> writes:
>> On 15/11/23 5:46 pm, Aneesh Kumar K V wrote:
>>> On 11/15/23 5:23 PM, Vishal Chourasia wrote:
>>>> On 15/11/23 1:39 pm, Aneesh Kumar K.V wrote:
>>>>> Vishal Chourasia <vishalc@linux.ibm.com> writes:
>>>>>
>>>>>> This patch modifies the ARCH_HIBERNATION_POSSIBLE option to ensure that it
>>>>>> correctly depends on these PowerPC configurations being enabled. As a result,
>>>>>> it prevents the HOTPLUG_CPU from being selected when the required dependencies
>>>>>> are not satisfied.
>>>>>>
>>>>>> This change aligns the dependency tree with the expected hardware support for
>>>>>> CPU hot-plugging under PowerPC architectures, ensuring that the kernel
>>>>>> configuration steps do not lead to inconsistent states.
>>>>>>
>>>>>> Signed-off-by: Vishal Chourasia <vishalc@linux.ibm.com>
>>>>>> ---
>>>>>> During the configuration process with 'make randconfig' followed by
>>>>>> 'make olddefconfig', we observed a warning indicating an unmet direct
>>>>>> dependency for the HOTPLUG_CPU option. The dependency in question relates to
>>>>>> various PowerPC configurations (PPC_PSERIES, PPC_PMAC, PPC_POWERNV,
>>>>>> FSL_SOC_BOOKE) which were not enabled, yet the HOTPLUG_CPU was beingDuring the configuration process with 'make randconfig' followed by
>>>>>> 'make olddefconfig', we observed a warning indicating an unmet direct
>>>>>> dependency for the HOTPLUG_CPU option. The dependency in question relates to
>>>>>> various PowerPC configurations (PPC_PSERIES, PPC_PMAC, PPC_POWERNV,
>>>>>> FSL_SOC_BOOKE) which were not enabled, yet the HOTPLUG_CPU was being
>>>>>> erroneously selected due to an implicit assumption by the PM_SLEEP_SMP option.
>>>>>> This misalignment in dependencies could potentially lead to inconsistent kernel
>>>>>> configuration states, especially when considering the necessary hardware
>>>>>> support for CPU hot-plugging on PowerPC platforms. The patch aims to correct
>>>>>> this by ensuring that ARCH_HIBERNATION_POSSIBLE is contingent upon the
>>>>>> appropriate PowerPC configurations being active.
>>>>>>
>>>>>> steps to reproduce (before applying the patch):
>>>>>>
>>>>>> Run 'make pseries_le_defconfig'
>>>>>> Run 'make menuconfig'
>>>>>> Enable hibernation [ Kernel options -> Hibernation (aka 'suspend to disk') ] 
>>>>>> Disable [ Platform support -> IBM PowerNV (Non-Virtualized) platform support ]
>>>>>> Disable [ Platform support -> IBM pSeries & new (POWER5-based) iSeries ]
>>>>>> Enable SMP [ Processor support -> Symmetric multi-processing support ]
>>>>>> Save the config
>>>>>> Run 'make olddefconfig'
>>>>>> erroneously selected due to an implicit assumption by the PM_SLEEP_SMP option.
>>>>>> This misalignment in dependencies could potentially lead to inconsistent kernel
>>>>>> configuration states, especially when considering the necessary hardware
>>>>>> support for CPU hot-plugging on PowerPC platforms. The patch aims to correct
>>>>>> this by ensuring that ARCH_HIBERNATION_POSSIBLE is contingent upon the
>>>>>> appropriate PowerPC configurations being active.
>>>>>>
>>>>>> steps to reproduce (before applying the patch):
>>>>>>
>>>>>> Run 'make pseries_le_defconfig'
>>>>>> Run 'make menuconfig'
>>>>>> Enable hibernation [ Kernel options -> Hibernation (aka 'suspend to disk') ] 
>>>>>> Disable [ Platform support -> IBM PowerNV (Non-Virtualized) platform support ]
>>>>>> Disable [ Platform support -> IBM pSeries & new (POWER5-based) iSeries ]
>>>>>> Enable SMP [ Processor support -> Symmetric multi-processing support ]
>>>>>> Save the config
>>>>>> Run 'make olddefconfig'
>>>>>>
>>>>>>  arch/powerpc/Kconfig | 5 +++--
>>>>>>  1 file changed, 3 insertions(+), 2 deletions(-)
>>>>>>
>>>>>> diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
>>>>>> index 6f105ee4f3cf..bf99ff9869f6 100644
>>>>>> --- a/arch/powerpc/Kconfig
>>>>>> +++ b/arch/powerpc/Kconfig
>>>>>> @@ -380,8 +380,9 @@ config DEFAULT_UIMAGE
>>>>>>  	  Used to allow a board to specify it wants a uImage built by default
>>>>>>  
>>>>>>  config ARCH_HIBERNATION_POSSIBLE
>>>>>> -	bool
>>>>>> -	default y
>>>>>> +	def_bool y
>>>>>> +	depends on PPC_PSERIES || \
>>>>>> +		PPC_PMAC || PPC_POWERNV || FSL_SOC_BOOKE
>>>>>>  
>>>>>>  config ARCH_SUSPEND_POSSIBLE
>>>>>>  	def_bool y
>>>>>>
>>>>> I am wondering whether it should be switched to using select from
>>>>> config PPC? 
>>>>>
>>>>> selecting ARCH_HIBERNATION_POSSIBLE based on value of config PPC
>>>>> will not guarantee config PPC_PSERIES being set
>>>>>
>>>>> PPC_PSERIES can be set to N, even when config PPC is set.
>> I understand what you meant before. Having ARCH_HIBERNATION_POSSIBLE under config PPC makes more sense.
>>>>> grep -A 5 -i "config ppc_pseries" arch/powerpc/platforms/pseries/Kconfig
>>>>> config PPC_PSERIES
>>>>>         depends on PPC64 && PPC_BOOK3S
>>>>>         bool "IBM pSeries & new (POWER5-based) iSeries"
>>>>>         select HAVE_PCSPKR_PLATFORM
>>>>>         select MPIC
>>>>>         select OF_DYNAMIC
>>>>>
>>> modified   arch/powerpc/Kconfig
>>> @@ -156,6 +156,7 @@ config PPC
>>>  	select ARCH_HAS_UACCESS_FLUSHCACHE
>>>  	select ARCH_HAS_UBSAN_SANITIZE_ALL
>>>  	select ARCH_HAVE_NMI_SAFE_CMPXCHG
>>> +	select ARCH_HIBERNATION_POSSIBLE	if (PPC_PSERIES || PPC_PMAC || PPC_POWERNV || FSL_SOC_BOOKE)
>>>  	select ARCH_KEEP_MEMBLOCK
>>>  	select ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE	if PPC_RADIX_MMU
>>>  	select ARCH_MIGHT_HAVE_PC_PARPORT
>> Though, even with these changes I was able to reproduce same warnings. (using steps from above)
>> It's because one can enable HIBERNATION manually.
> But how? You shouldn't be able to enable it manually, it depends on
> ARCH_HIBERNATION_POSSIBLE which shouldn't be enabled.
>
> For the above to work you also need to make it default n, eg:
>
> diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
> index 6f105ee4f3cf..dd2a9b938188 100644
> --- a/arch/powerpc/Kconfig
> +++ b/arch/powerpc/Kconfig
> @@ -380,8 +380,7 @@ config DEFAULT_UIMAGE
>           Used to allow a board to specify it wants a uImage built by default
>
>  config ARCH_HIBERNATION_POSSIBLE
> -       bool
> -       default y
> +       def_bool n
>
>  config ARCH_SUSPEND_POSSIBLE
>         def_bool y

Ran make randconfig bunch of times.

# make KCONFIG_SEED=0x97C94A3C randconfig
make[1]: Entering directory ''
  GEN     Makefile
KCONFIG_SEED=0x97C94A3C

WARNING: unmet direct dependencies detected for HOTPLUG_CPU
  Depends on [n]: SMP [=y] && (PPC_PSERIES [=n] || PPC_PMAC [=n] ||
                                       PPC_POWERNV [=n] || FSL_SOC_BOOKE [=n])
  Selected by [y]:
  - PM_SLEEP_SMP [=y] && SMP [=y] && (ARCH_SUSPEND_POSSIBLE [=y]
                                    || ARCH_HIBERNATION_POSSIBLE [=n]) && PM_SLEEP [=y]
#
# configuration written to .config
#
make[1]: Leaving directory ''

As per my understanding,

"Depends on" clause of the config HOTPLUG_CPU as CPU hotplugging is only
available for SMP systems and is only available for following power platforms
(PPC_PSERIES || PPC_PMAC || PPC_POWERNV  || FSL_SOC_BOOKE)

Also, config HOTPLUG_CPU  is being selected by config PM_SLEEP_SMP
config PM_SLEEP_SMP
        def_bool y
        depends on SMP
        depends on ARCH_SUSPEND_POSSIBLE || ARCH_HIBERNATION_POSSIBLE
        depends on PM_SLEEP
        select HOTPLUG_CPU <----- Here

Power management functionality depends and vary upon arch (and in powerpc case, platforms)
supporting suspend/hibernation

There are some platforms which support suspend and hence ARCH_SUSPEND_POSSIBLE
is set, leading to PM_SLEEP_SMP being set, and ultimately, config HOTPLUG_CPU gets set.
But, CPU hotplug is not supported for such platform and hence the conflict.


>
> cheers
Michael Ellerman Nov. 22, 2023, 5:05 a.m. UTC | #8
Vishal Chourasia <vishalc@linux.ibm.com> writes:
> On 17/11/23 4:52 am, Michael Ellerman wrote:
>> Vishal Chourasia <vishalc@linux.ibm.com> writes:
>>> On 15/11/23 5:46 pm, Aneesh Kumar K V wrote:
>>>> On 11/15/23 5:23 PM, Vishal Chourasia wrote:
>>>>> On 15/11/23 1:39 pm, Aneesh Kumar K.V wrote:
>>>>>> Vishal Chourasia <vishalc@linux.ibm.com> writes:
>>>>>>
>>>>>>> This patch modifies the ARCH_HIBERNATION_POSSIBLE option to ensure that it
>>>>>>> correctly depends on these PowerPC configurations being enabled. As a result,
>>>>>>> it prevents the HOTPLUG_CPU from being selected when the required dependencies
>>>>>>> are not satisfied.
>>>>>>>
>>>>>>> This change aligns the dependency tree with the expected hardware support for
>>>>>>> CPU hot-plugging under PowerPC architectures, ensuring that the kernel
>>>>>>> configuration steps do not lead to inconsistent states.
>>>>>>>
>>>>>>> Signed-off-by: Vishal Chourasia <vishalc@linux.ibm.com>
>>>>>>> ---
>>>>>>> During the configuration process with 'make randconfig' followed by
>>>>>>> 'make olddefconfig', we observed a warning indicating an unmet direct
>>>>>>> dependency for the HOTPLUG_CPU option. The dependency in question relates to
>>>>>>> various PowerPC configurations (PPC_PSERIES, PPC_PMAC, PPC_POWERNV,
>>>>>>> FSL_SOC_BOOKE) which were not enabled, yet the HOTPLUG_CPU was beingDuring the configuration process with 'make randconfig' followed by
>>>>>>> 'make olddefconfig', we observed a warning indicating an unmet direct
>>>>>>> dependency for the HOTPLUG_CPU option. The dependency in question relates to
>>>>>>> various PowerPC configurations (PPC_PSERIES, PPC_PMAC, PPC_POWERNV,
>>>>>>> FSL_SOC_BOOKE) which were not enabled, yet the HOTPLUG_CPU was being
>>>>>>> erroneously selected due to an implicit assumption by the PM_SLEEP_SMP option.
>>>>>>> This misalignment in dependencies could potentially lead to inconsistent kernel
>>>>>>> configuration states, especially when considering the necessary hardware
>>>>>>> support for CPU hot-plugging on PowerPC platforms. The patch aims to correct
>>>>>>> this by ensuring that ARCH_HIBERNATION_POSSIBLE is contingent upon the
>>>>>>> appropriate PowerPC configurations being active.
>>>>>>>
>>>>>>> steps to reproduce (before applying the patch):
>>>>>>>
>>>>>>> Run 'make pseries_le_defconfig'
>>>>>>> Run 'make menuconfig'
>>>>>>> Enable hibernation [ Kernel options -> Hibernation (aka 'suspend to disk') ] 
>>>>>>> Disable [ Platform support -> IBM PowerNV (Non-Virtualized) platform support ]
>>>>>>> Disable [ Platform support -> IBM pSeries & new (POWER5-based) iSeries ]
>>>>>>> Enable SMP [ Processor support -> Symmetric multi-processing support ]
>>>>>>> Save the config
>>>>>>> Run 'make olddefconfig'
>>>>>>> erroneously selected due to an implicit assumption by the PM_SLEEP_SMP option.
>>>>>>> This misalignment in dependencies could potentially lead to inconsistent kernel
>>>>>>> configuration states, especially when considering the necessary hardware
>>>>>>> support for CPU hot-plugging on PowerPC platforms. The patch aims to correct
>>>>>>> this by ensuring that ARCH_HIBERNATION_POSSIBLE is contingent upon the
>>>>>>> appropriate PowerPC configurations being active.
>>>>>>>
>>>>>>> steps to reproduce (before applying the patch):
>>>>>>>
>>>>>>> Run 'make pseries_le_defconfig'
>>>>>>> Run 'make menuconfig'
>>>>>>> Enable hibernation [ Kernel options -> Hibernation (aka 'suspend to disk') ] 
>>>>>>> Disable [ Platform support -> IBM PowerNV (Non-Virtualized) platform support ]
>>>>>>> Disable [ Platform support -> IBM pSeries & new (POWER5-based) iSeries ]
>>>>>>> Enable SMP [ Processor support -> Symmetric multi-processing support ]
>>>>>>> Save the config
>>>>>>> Run 'make olddefconfig'
>>>>>>>
>>>>>>>  arch/powerpc/Kconfig | 5 +++--
>>>>>>>  1 file changed, 3 insertions(+), 2 deletions(-)
>>>>>>>
>>>>>>> diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
>>>>>>> index 6f105ee4f3cf..bf99ff9869f6 100644
>>>>>>> --- a/arch/powerpc/Kconfig
>>>>>>> +++ b/arch/powerpc/Kconfig
>>>>>>> @@ -380,8 +380,9 @@ config DEFAULT_UIMAGE
>>>>>>>  	  Used to allow a board to specify it wants a uImage built by default
>>>>>>>  
>>>>>>>  config ARCH_HIBERNATION_POSSIBLE
>>>>>>> -	bool
>>>>>>> -	default y
>>>>>>> +	def_bool y
>>>>>>> +	depends on PPC_PSERIES || \
>>>>>>> +		PPC_PMAC || PPC_POWERNV || FSL_SOC_BOOKE
>>>>>>>  
>>>>>>>  config ARCH_SUSPEND_POSSIBLE
>>>>>>>  	def_bool y
>>>>>>>
>>>>>> I am wondering whether it should be switched to using select from
>>>>>> config PPC? 
>>>>>>
>>>>>> selecting ARCH_HIBERNATION_POSSIBLE based on value of config PPC
>>>>>> will not guarantee config PPC_PSERIES being set
>>>>>>
>>>>>> PPC_PSERIES can be set to N, even when config PPC is set.
>>> I understand what you meant before. Having ARCH_HIBERNATION_POSSIBLE under config PPC makes more sense.
>>>>>> grep -A 5 -i "config ppc_pseries" arch/powerpc/platforms/pseries/Kconfig
>>>>>> config PPC_PSERIES
>>>>>>         depends on PPC64 && PPC_BOOK3S
>>>>>>         bool "IBM pSeries & new (POWER5-based) iSeries"
>>>>>>         select HAVE_PCSPKR_PLATFORM
>>>>>>         select MPIC
>>>>>>         select OF_DYNAMIC
>>>>>>
>>>> modified   arch/powerpc/Kconfig
>>>> @@ -156,6 +156,7 @@ config PPC
>>>>  	select ARCH_HAS_UACCESS_FLUSHCACHE
>>>>  	select ARCH_HAS_UBSAN_SANITIZE_ALL
>>>>  	select ARCH_HAVE_NMI_SAFE_CMPXCHG
>>>> +	select ARCH_HIBERNATION_POSSIBLE	if (PPC_PSERIES || PPC_PMAC || PPC_POWERNV || FSL_SOC_BOOKE)
>>>>  	select ARCH_KEEP_MEMBLOCK
>>>>  	select ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE	if PPC_RADIX_MMU
>>>>  	select ARCH_MIGHT_HAVE_PC_PARPORT
>>> Though, even with these changes I was able to reproduce same warnings. (using steps from above)
>>> It's because one can enable HIBERNATION manually.
>> But how? You shouldn't be able to enable it manually, it depends on
>> ARCH_HIBERNATION_POSSIBLE which shouldn't be enabled.
>>
>> For the above to work you also need to make it default n, eg:
>>
>> diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
>> index 6f105ee4f3cf..dd2a9b938188 100644
>> --- a/arch/powerpc/Kconfig
>> +++ b/arch/powerpc/Kconfig
>> @@ -380,8 +380,7 @@ config DEFAULT_UIMAGE
>>           Used to allow a board to specify it wants a uImage built by default
>>
>>  config ARCH_HIBERNATION_POSSIBLE
>> -       bool
>> -       default y
>> +       def_bool n
>>
>>  config ARCH_SUSPEND_POSSIBLE
>>         def_bool y
>
> Ran make randconfig bunch of times.
>
> # make KCONFIG_SEED=0x97C94A3C randconfig
> make[1]: Entering directory ''
>   GEN     Makefile
> KCONFIG_SEED=0x97C94A3C
>
> WARNING: unmet direct dependencies detected for HOTPLUG_CPU
>   Depends on [n]: SMP [=y] && (PPC_PSERIES [=n] || PPC_PMAC [=n] ||
>                                        PPC_POWERNV [=n] || FSL_SOC_BOOKE [=n])
>   Selected by [y]:
>   - PM_SLEEP_SMP [=y] && SMP [=y] && (ARCH_SUSPEND_POSSIBLE [=y]
>                                     || ARCH_HIBERNATION_POSSIBLE [=n]) && PM_SLEEP [=y]
> #
> # configuration written to .config
> #
> make[1]: Leaving directory ''
>
> As per my understanding,
>
> "Depends on" clause of the config HOTPLUG_CPU as CPU hotplugging is only
> available for SMP systems and is only available for following power platforms
> (PPC_PSERIES || PPC_PMAC || PPC_POWERNV  || FSL_SOC_BOOKE)
>
> Also, config HOTPLUG_CPU  is being selected by config PM_SLEEP_SMP
> config PM_SLEEP_SMP
>         def_bool y
>         depends on SMP
>         depends on ARCH_SUSPEND_POSSIBLE || ARCH_HIBERNATION_POSSIBLE
>         depends on PM_SLEEP
>         select HOTPLUG_CPU <----- Here
>
> Power management functionality depends and vary upon arch (and in powerpc case, platforms)
> supporting suspend/hibernation
>
> There are some platforms which support suspend and hence ARCH_SUSPEND_POSSIBLE
> is set, leading to PM_SLEEP_SMP being set, and ultimately, config HOTPLUG_CPU gets set.
> But, CPU hotplug is not supported for such platform and hence the conflict.

Yeah. We need to restrict ARCH_SUSPEND_POSSIBLE in a similar way to
ARCH_HIBERNATION_POSSIBLE.

cheers
diff mbox series

Patch

diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index 6f105ee4f3cf..bf99ff9869f6 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -380,8 +380,9 @@  config DEFAULT_UIMAGE
 	  Used to allow a board to specify it wants a uImage built by default
 
 config ARCH_HIBERNATION_POSSIBLE
-	bool
-	default y
+	def_bool y
+	depends on PPC_PSERIES || \
+		PPC_PMAC || PPC_POWERNV || FSL_SOC_BOOKE
 
 config ARCH_SUSPEND_POSSIBLE
 	def_bool y