Re: [PATCH][NOMMU] microblaze: fix interrupt state restore

Michal Simek
2010-02-03T12:29:11Z

steve@digidescorp.com 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 <author@example.com>

Thanks,
Michal

>
> Signed-off-by: Steven J. Magnani <steve@digidescorp.com>
> ---
> 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: www.monstr.eu p: +42-0-721842854
Maintainer of Linux kernel 2.6 Microblaze Linux - http://www.monstr.eu/fdt/
Microblaze U-BOOT custodian