[PATCH] powerpc: Allow scheduling of IRQ with PREEMPT_RT

Robert Joslyn posted 1 patch 1 year, 1 month ago
arch/powerpc/kernel/interrupt.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] powerpc: Allow scheduling of IRQ with PREEMPT_RT
Posted by Robert Joslyn 1 year, 1 month ago
This branch is needed to allow preemptible IRQs to be scheduled,
otherwise the kernel hangs during boot on my e300 based platforms.
This branch is needed for both CONFIG_PREEMPT and CONFIG_PREEMPT_RT,
so broaden the check to CONFIG_PREEMPTION, which is selected by both.

This was previously set to CONFIG_PREEMPTION, but was reverted as part
of removing LAZY_PREEMPT support.

Fixes: b33022a48c79
Signed-off-by: Robert Joslyn <robert_joslyn@selinc.com>
---
 arch/powerpc/kernel/interrupt.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/powerpc/kernel/interrupt.c b/arch/powerpc/kernel/interrupt.c
index af62ec974b97..970039af8e92 100644
--- a/arch/powerpc/kernel/interrupt.c
+++ b/arch/powerpc/kernel/interrupt.c
@@ -396,7 +396,7 @@ notrace unsigned long interrupt_exit_kernel_prepare(struct pt_regs *regs)
 		/* Returning to a kernel context with local irqs enabled. */
 		WARN_ON_ONCE(!(regs->msr & MSR_EE));
 again:
-		if (IS_ENABLED(CONFIG_PREEMPT)) {
+		if (IS_ENABLED(CONFIG_PREEMPTION)) {
 			/* Return to preemptible kernel context */
 			if (unlikely(read_thread_flags() & _TIF_NEED_RESCHED)) {
 				if (preempt_count() == 0)
-- 
2.45.2
Re: [PATCH] powerpc: Allow scheduling of IRQ with PREEMPT_RT
Posted by Sebastian Andrzej Siewior 1 year, 1 month ago
On 2024-12-26 11:12:38 [-0800], Robert Joslyn wrote:
> This branch is needed to allow preemptible IRQs to be scheduled,
> otherwise the kernel hangs during boot on my e300 based platforms.
> This branch is needed for both CONFIG_PREEMPT and CONFIG_PREEMPT_RT,
> so broaden the check to CONFIG_PREEMPTION, which is selected by both.
> 
> This was previously set to CONFIG_PREEMPTION, but was reverted as part
> of removing LAZY_PREEMPT support.

I remember I pointed this out while Shrikanth posted the preempt-lazy
patches but didn't realize that I need this in RT tree, too.

The lazy-preempt patches for powerpc were merged upstream, I am going to
pull them into the v6.6-series.
I am going to Cc you, hopefully you can confirm that it is working.

> Fixes: b33022a48c79
> Signed-off-by: Robert Joslyn <robert_joslyn@selinc.com>
> ---
>  arch/powerpc/kernel/interrupt.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/arch/powerpc/kernel/interrupt.c b/arch/powerpc/kernel/interrupt.c
> index af62ec974b97..970039af8e92 100644
> --- a/arch/powerpc/kernel/interrupt.c
> +++ b/arch/powerpc/kernel/interrupt.c
> @@ -396,7 +396,7 @@ notrace unsigned long interrupt_exit_kernel_prepare(struct pt_regs *regs)
>  		/* Returning to a kernel context with local irqs enabled. */
>  		WARN_ON_ONCE(!(regs->msr & MSR_EE));
>  again:
> -		if (IS_ENABLED(CONFIG_PREEMPT)) {
> +		if (IS_ENABLED(CONFIG_PREEMPTION)) {
>  			/* Return to preemptible kernel context */
>  			if (unlikely(read_thread_flags() & _TIF_NEED_RESCHED)) {
>  				if (preempt_count() == 0)

Sebastian
Re: [PATCH] powerpc: Allow scheduling of IRQ with PREEMPT_RT
Posted by Shrikanth Hegde 1 year, 1 month ago

On 1/7/25 17:26, Sebastian Andrzej Siewior wrote:
> On 2024-12-26 11:12:38 [-0800], Robert Joslyn wrote:
>> This branch is needed to allow preemptible IRQs to be scheduled,
>> otherwise the kernel hangs during boot on my e300 based platforms.
>> This branch is needed for both CONFIG_PREEMPT and CONFIG_PREEMPT_RT,

Hi Robert.

Are you running with preempt=full or enabled preempt_rt ?
rt is yet to be supported on powerpc. are you having it enabled out of tree?

Also, I have sent out patch to enable dynamic preemption. It uses preempt_model_preemptible.
I think it should work for you as well. If you could give that a try and ensure it works, it would be great.
https://lore.kernel.org/all/20250106051919.55020-2-sshegde@linux.ibm.com/

>> so broaden the check to CONFIG_PREEMPTION, which is selected by both.
>>
>> This was previously set to CONFIG_PREEMPTION, but was reverted as part
>> of removing LAZY_PREEMPT support.
> 
> I remember I pointed this out while Shrikanth posted the preempt-lazy
> patches but didn't realize that I need this in RT tree, too.
> 
> The lazy-preempt patches for powerpc were merged upstream, I am going to
> pull them into the v6.6-series.
> I am going to Cc you, hopefully you can confirm that it is working.
> 
>> Fixes: b33022a48c79
>> Signed-off-by: Robert Joslyn <robert_joslyn@selinc.com>
>> ---
>>   arch/powerpc/kernel/interrupt.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/arch/powerpc/kernel/interrupt.c b/arch/powerpc/kernel/interrupt.c
>> index af62ec974b97..970039af8e92 100644
>> --- a/arch/powerpc/kernel/interrupt.c
>> +++ b/arch/powerpc/kernel/interrupt.c
>> @@ -396,7 +396,7 @@ notrace unsigned long interrupt_exit_kernel_prepare(struct pt_regs *regs)
>>   		/* Returning to a kernel context with local irqs enabled. */
>>   		WARN_ON_ONCE(!(regs->msr & MSR_EE));
>>   again:
>> -		if (IS_ENABLED(CONFIG_PREEMPT)) {
>> +		if (IS_ENABLED(CONFIG_PREEMPTION)) {
>>   			/* Return to preemptible kernel context */
>>   			if (unlikely(read_thread_flags() & _TIF_NEED_RESCHED)) {
>>   				if (preempt_count() == 0)
> 
> Sebastian
Re: [PATCH] powerpc: Allow scheduling of IRQ with PREEMPT_RT
Posted by Sebastian Andrzej Siewior 1 year, 1 month ago
On 2025-01-07 12:56:08 [+0100], To Robert Joslyn wrote:
> On 2024-12-26 11:12:38 [-0800], Robert Joslyn wrote:
> > This branch is needed to allow preemptible IRQs to be scheduled,
> > otherwise the kernel hangs during boot on my e300 based platforms.
> > This branch is needed for both CONFIG_PREEMPT and CONFIG_PREEMPT_RT,
> > so broaden the check to CONFIG_PREEMPTION, which is selected by both.
> > 
> > This was previously set to CONFIG_PREEMPTION, but was reverted as part
> > of removing LAZY_PREEMPT support.
> 
> I remember I pointed this out while Shrikanth posted the preempt-lazy
> patches but didn't realize that I need this in RT tree, too.
> 
> The lazy-preempt patches for powerpc were merged upstream, I am going to
> pull them into the v6.6-series.
> I am going to Cc you, hopefully you can confirm that it is working.

Robert, you are referring to v6.6-RT, correct?

Sebastian