2010-02-01 12:43:18

by Steven J. Magnani

[permalink] [raw]
Subject: [PATCH][NOMMU] microblaze: fix interrupt state restore

Interrupts must be disabled while an interrupt state restore
(prep for interrupt return) is in progress.
Code to do this was lost in the port to the mainline kernel.

Signed-off-by: Steven J. Magnani <[email protected]>
---
diff -uprN a/arch/microblaze/kernel/entry-nommu.S b/arch/microblaze/kernel/entry-nommu.S
--- a/arch/microblaze/kernel/entry-nommu.S 2010-01-31 23:28:45.000000000 -0600
+++ b/arch/microblaze/kernel/entry-nommu.S 2010-01-31 23:31:35.000000000 -0600
@@ -122,7 +122,7 @@ ENTRY(_interrupt)

ret_from_intr:
lwi r11, r1, PT_MODE
- bneid r11, 3f
+ bneid r11, no_intr_resched

lwi r6, r31, TS_THREAD_INFO /* get thread info */
lwi r19, r6, TI_FLAGS /* get flags in thread info */
@@ -133,16 +133,18 @@ ret_from_intr:
bralid r15, schedule
nop
1: andi r11, r19, _TIF_SIGPENDING
- beqid r11, no_intr_reshed
+ beqid r11, no_intr_resched
addk r5, r1, r0
addk r7, r0, r0
bralid r15, do_signal
addk r6, r0, r0

-no_intr_reshed:
+no_intr_resched:
+ /* Disable interrupts, we are now committed to the state restore */
+ disable_irq
+
/* save mode indicator */
lwi r11, r1, PT_MODE
-3:
swi r11, r0, PER_CPU(KM)

/* save r31 */


2010-02-03 12:29:11

by Michal Simek

[permalink] [raw]
Subject: Re: [PATCH][NOMMU] microblaze: fix interrupt state restore

[email protected] wrote:
> Interrupts must be disabled while an interrupt state restore
> (prep for interrupt return) is in progress.
> Code to do this was lost in the port to the mainline kernel.

nice catch. I tried to find out why I used this change and it was in any
ancient version which were used as . John did this change 2 years ago
and I haven't found that change description.

Can you please setup your name in email with patches? (From line should
contains your full name and email - you have just email there).
I had to change it manually. Your first patches has correct setting and
I see that the later one not.

Documentation/SubmittingPatches.

The "from" line must be the very first line in the message body,
and has the form:

From: Original Author <[email protected]>


Thanks,
Michal


>
> Signed-off-by: Steven J. Magnani <[email protected]>
> ---
> diff -uprN a/arch/microblaze/kernel/entry-nommu.S b/arch/microblaze/kernel/entry-nommu.S
> --- a/arch/microblaze/kernel/entry-nommu.S 2010-01-31 23:28:45.000000000 -0600
> +++ b/arch/microblaze/kernel/entry-nommu.S 2010-01-31 23:31:35.000000000 -0600
> @@ -122,7 +122,7 @@ ENTRY(_interrupt)
>
> ret_from_intr:
> lwi r11, r1, PT_MODE
> - bneid r11, 3f
> + bneid r11, no_intr_resched
>
> lwi r6, r31, TS_THREAD_INFO /* get thread info */
> lwi r19, r6, TI_FLAGS /* get flags in thread info */
> @@ -133,16 +133,18 @@ ret_from_intr:
> bralid r15, schedule
> nop
> 1: andi r11, r19, _TIF_SIGPENDING
> - beqid r11, no_intr_reshed
> + beqid r11, no_intr_resched
> addk r5, r1, r0
> addk r7, r0, r0
> bralid r15, do_signal
> addk r6, r0, r0
>
> -no_intr_reshed:
> +no_intr_resched:
> + /* Disable interrupts, we are now committed to the state restore */
> + disable_irq
> +
> /* save mode indicator */
> lwi r11, r1, PT_MODE
> -3:
> swi r11, r0, PER_CPU(KM)
>
> /* save r31 */
>


--
Michal Simek, Ing. (M.Eng)
w: http://www.monstr.eu p: +42-0-721842854
Maintainer of Linux kernel 2.6 Microblaze Linux - http://www.monstr.eu/fdt/
Microblaze U-BOOT custodian