* [patch 0/7] MIPS: Assorted fixlets and annotation patches
@ 2011-07-23 12:41 Thomas Gleixner
2011-07-23 12:41 ` [patch 1/7] mips: sibyte: Add missing irq_mask function Thomas Gleixner
` (6 more replies)
0 siblings, 7 replies; 16+ messages in thread
From: Thomas Gleixner @ 2011-07-23 12:41 UTC (permalink / raw)
To: linux-mips; +Cc: Ralf Baechle
Ralf,
the following series is the fallout of the 3.0-rt work for MIPS.
The first 3 patches are bug fixes, the last 3 annotations for spin
locks and interrupts which want to be marked NO_THREAD.
There is one bug remaining, which I currently worked around by
disabling the dynamic ftrace functionality.
When the tracer starts up then ftrace_dyn_arch_init() is called with
interrupts disabled, but the MIPS code issues a SMP function call
which complains about interrupts being disabled. Observed on SWARM.
Thanks,
tglx
^ permalink raw reply [flat|nested] 16+ messages in thread
* [patch 1/7] mips: sibyte: Add missing irq_mask function
2011-07-23 12:41 [patch 0/7] MIPS: Assorted fixlets and annotation patches Thomas Gleixner
@ 2011-07-23 12:41 ` Thomas Gleixner
2011-07-27 8:41 ` Ralf Baechle
2011-07-27 14:49 ` Ralf Baechle
2011-07-23 12:41 ` [patch 3/7] mips: Enable interrupts in do_signal() Thomas Gleixner
` (5 subsequent siblings)
6 siblings, 2 replies; 16+ messages in thread
From: Thomas Gleixner @ 2011-07-23 12:41 UTC (permalink / raw)
To: linux-mips; +Cc: Ralf Baechle
[-- Attachment #1: mips-sibyte-fix-irq-chip.patch --]
[-- Type: text/plain, Size: 678 bytes --]
Crashes on free_irq() otherwise.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
arch/mips/sibyte/sb1250/irq.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Index: linux-2.6/arch/mips/sibyte/sb1250/irq.c
===================================================================
--- linux-2.6.orig/arch/mips/sibyte/sb1250/irq.c
+++ linux-2.6/arch/mips/sibyte/sb1250/irq.c
@@ -178,7 +178,7 @@ static void ack_sb1250_irq(struct irq_da
static struct irq_chip sb1250_irq_type = {
.name = "SB1250-IMR",
- .irq_mask_ack = ack_sb1250_irq,
+ .irq_mask = ack_sb1250_irq,
.irq_unmask = enable_sb1250_irq,
#ifdef CONFIG_SMP
.irq_set_affinity = sb1250_set_affinity
^ permalink raw reply [flat|nested] 16+ messages in thread
* [patch 2/7] mips: ftrace: Fix the CONFIG_DYNAMIC_FTRACE=n compile
2011-07-23 12:41 [patch 0/7] MIPS: Assorted fixlets and annotation patches Thomas Gleixner
2011-07-23 12:41 ` [patch 1/7] mips: sibyte: Add missing irq_mask function Thomas Gleixner
2011-07-23 12:41 ` [patch 3/7] mips: Enable interrupts in do_signal() Thomas Gleixner
@ 2011-07-23 12:41 ` Thomas Gleixner
2011-07-27 9:23 ` Ralf Baechle
2011-07-23 12:41 ` [patch 4/7] MIPS: Make the die_lock be raw Thomas Gleixner
` (3 subsequent siblings)
6 siblings, 1 reply; 16+ messages in thread
From: Thomas Gleixner @ 2011-07-23 12:41 UTC (permalink / raw)
To: linux-mips; +Cc: Ralf Baechle
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: mips-ftrace-fix-non-dynamic-crappola.patch --]
[-- Type: text/plain, Size: 2433 bytes --]
arch/mips/kernel/ftrace.c: In function ‘ftrace_get_parent_ra_addr’:
arch/mips/kernel/ftrace.c:212: error: implicit declaration of function ‘in_kernel_space’
arch/mips/kernel/ftrace.c: In function ‘prepare_ftrace_return’:
arch/mips/kernel/ftrace.c:314: error: ‘MCOUNT_OFFSET_INSNS’ undeclared (first use in this function)
arch/mips/kernel/ftrace.c:314: error: (Each undeclared identifier is reported only once
arch/mips/kernel/ftrace.c:314: error: for each function it appears in.)
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
arch/mips/kernel/ftrace.c | 39 ++++++++++++++++++++-------------------
1 file changed, 20 insertions(+), 19 deletions(-)
Index: linux-2.6/arch/mips/kernel/ftrace.c
===================================================================
--- linux-2.6.orig/arch/mips/kernel/ftrace.c
+++ linux-2.6/arch/mips/kernel/ftrace.c
@@ -19,6 +19,26 @@
#include <asm-generic/sections.h>
+#if defined(KBUILD_MCOUNT_RA_ADDRESS) && defined(CONFIG_32BIT)
+#define MCOUNT_OFFSET_INSNS 5
+#else
+#define MCOUNT_OFFSET_INSNS 4
+#endif
+
+/*
+ * Check if the address is in kernel space
+ *
+ * Clone core_kernel_text() from kernel/extable.c, but doesn't call
+ * init_kernel_text() for Ftrace doesn't trace functions in init sections.
+ */
+static inline int in_kernel_space(unsigned long ip)
+{
+ if (ip >= (unsigned long)_stext &&
+ ip <= (unsigned long)_etext)
+ return 1;
+ return 0;
+}
+
#ifdef CONFIG_DYNAMIC_FTRACE
#define JAL 0x0c000000 /* jump & link: ip --> ra, jump to target */
@@ -54,20 +74,6 @@ static inline void ftrace_dyn_arch_init_
#endif
}
-/*
- * Check if the address is in kernel space
- *
- * Clone core_kernel_text() from kernel/extable.c, but doesn't call
- * init_kernel_text() for Ftrace doesn't trace functions in init sections.
- */
-static inline int in_kernel_space(unsigned long ip)
-{
- if (ip >= (unsigned long)_stext &&
- ip <= (unsigned long)_etext)
- return 1;
- return 0;
-}
-
static int ftrace_modify_code(unsigned long ip, unsigned int new_code)
{
int faulted;
@@ -112,11 +118,6 @@ static int ftrace_modify_code(unsigned l
* 1: offset = 4 instructions
*/
-#if defined(KBUILD_MCOUNT_RA_ADDRESS) && defined(CONFIG_32BIT)
-#define MCOUNT_OFFSET_INSNS 5
-#else
-#define MCOUNT_OFFSET_INSNS 4
-#endif
#define INSN_B_1F (0x10000000 | MCOUNT_OFFSET_INSNS)
int ftrace_make_nop(struct module *mod,
^ permalink raw reply [flat|nested] 16+ messages in thread
* [patch 3/7] mips: Enable interrupts in do_signal()
2011-07-23 12:41 [patch 0/7] MIPS: Assorted fixlets and annotation patches Thomas Gleixner
2011-07-23 12:41 ` [patch 1/7] mips: sibyte: Add missing irq_mask function Thomas Gleixner
@ 2011-07-23 12:41 ` Thomas Gleixner
2011-07-27 13:06 ` Ralf Baechle
2011-07-23 12:41 ` [patch 2/7] mips: ftrace: Fix the CONFIG_DYNAMIC_FTRACE=n compile Thomas Gleixner
` (4 subsequent siblings)
6 siblings, 1 reply; 16+ messages in thread
From: Thomas Gleixner @ 2011-07-23 12:41 UTC (permalink / raw)
To: linux-mips; +Cc: Ralf Baechle
[-- Attachment #1: mips-enable-interrupts-in-signal.patch --]
[-- Type: text/plain, Size: 1717 bytes --]
do_signal() does __put_user() which can fault, resulting in a
might_sleep() warning in down_read(&mm->mmap_sem) and a "scheduling
while atomic" warning when mmap_sem is contented. On swarm this also
results in:
WARNING: at kernel/smp.c:459 smp_call_function_many+0x148/0x398()
Modules linked in:
Call Trace:
[<ffffffff804b48a4>] dump_stack+0x1c/0x50
[<ffffffff8013dc94>] warn_slowpath_common+0x8c/0xc8
[<ffffffff8013dcfc>] warn_slowpath_null+0x2c/0x40
[<ffffffff801864a0>] smp_call_function_many+0x148/0x398
[<ffffffff80186748>] smp_call_function+0x58/0xa8
[<ffffffff80119b5c>] r4k_flush_data_cache_page+0x54/0xd8
[<ffffffff801f39bc>] handle_pte_fault+0xa9c/0xad0
[<ffffffff801f40d0>] handle_mm_fault+0x158/0x200
[<ffffffff80115548>] do_page_fault+0x218/0x3b0
[<ffffffff80102744>] ret_from_exception+0x0/0x10
[<ffffffff8010eb18>] copy_siginfo_to_user32+0x50/0x298
[<ffffffff8010edf0>] setup_rt_frame_32+0x90/0x250
[<ffffffff80106414>] do_notify_resume+0x154/0x358
[<ffffffff80102930>] work_notifysig+0xc/0x14
Enable interrupts in do_signal() before delivering signals. Might be
done in the entry code before calling do_notify_resume(), but I leave
that for the MIPS ASM wizards.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
arch/mips/kernel/signal.c | 2 ++
1 file changed, 2 insertions(+)
Index: linux-2.6/arch/mips/kernel/signal.c
===================================================================
--- linux-2.6.orig/arch/mips/kernel/signal.c
+++ linux-2.6/arch/mips/kernel/signal.c
@@ -603,6 +603,8 @@ static void do_signal(struct pt_regs *re
if (!user_mode(regs))
return;
+ local_irq_enable();
+
if (test_thread_flag(TIF_RESTORE_SIGMASK))
oldset = ¤t->saved_sigmask;
else
^ permalink raw reply [flat|nested] 16+ messages in thread
* [patch 4/7] MIPS: Make the die_lock be raw
2011-07-23 12:41 [patch 0/7] MIPS: Assorted fixlets and annotation patches Thomas Gleixner
` (2 preceding siblings ...)
2011-07-23 12:41 ` [patch 2/7] mips: ftrace: Fix the CONFIG_DYNAMIC_FTRACE=n compile Thomas Gleixner
@ 2011-07-23 12:41 ` Thomas Gleixner
2011-07-27 9:51 ` Ralf Baechle
2011-07-23 12:41 ` [patch 6/7] MIPS: Loongson: Mark cascade interrupts IRQF_NO_THREAD Thomas Gleixner
` (2 subsequent siblings)
6 siblings, 1 reply; 16+ messages in thread
From: Thomas Gleixner @ 2011-07-23 12:41 UTC (permalink / raw)
To: linux-mips; +Cc: Ralf Baechle, Wu Zhangjin
[-- Attachment #1: mips-make-die-lock-raw.patch --]
[-- Type: text/plain, Size: 1340 bytes --]
From: Wu Zhangjin <wuzhangjin@gmail.com>
On preempt-rt this lock needs to be raw, so it does not get converted
to a sleeping spinlock. Trying to sleep in a panic is not really
desireable.
Signed-off-by: Wu Zhangjin <wuzhangjin@gmail.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
arch/mips/kernel/traps.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
Index: linux-2.6/arch/mips/kernel/traps.c
===================================================================
--- linux-2.6.orig/arch/mips/kernel/traps.c
+++ linux-2.6/arch/mips/kernel/traps.c
@@ -364,7 +364,7 @@ static int regs_to_trapnr(struct pt_regs
return (regs->cp0_cause >> 2) & 0x1f;
}
-static DEFINE_SPINLOCK(die_lock);
+static DEFINE_RAW_SPINLOCK(die_lock);
void __noreturn die(const char *str, struct pt_regs *regs)
{
@@ -378,7 +378,7 @@ void __noreturn die(const char *str, str
sig = 0;
console_verbose();
- spin_lock_irq(&die_lock);
+ raw_spin_lock_irq(&die_lock);
bust_spinlocks(1);
#ifdef CONFIG_MIPS_MT_SMTC
mips_mt_regdump(dvpret);
@@ -387,7 +387,7 @@ void __noreturn die(const char *str, str
printk("%s[#%d]:\n", str, ++die_counter);
show_registers(regs);
add_taint(TAINT_DIE);
- spin_unlock_irq(&die_lock);
+ raw_spin_unlock_irq(&die_lock);
if (in_interrupt())
panic("Fatal exception in interrupt");
^ permalink raw reply [flat|nested] 16+ messages in thread
* [patch 5/7] MIPS: Mark cascade and low level interrupts IRQF_NO_THREAD
2011-07-23 12:41 [patch 0/7] MIPS: Assorted fixlets and annotation patches Thomas Gleixner
` (4 preceding siblings ...)
2011-07-23 12:41 ` [patch 6/7] MIPS: Loongson: Mark cascade interrupts IRQF_NO_THREAD Thomas Gleixner
@ 2011-07-23 12:41 ` Thomas Gleixner
2011-07-27 9:53 ` Ralf Baechle
2011-07-23 12:41 ` [patch 7/7] mips: Allow forced irq threading Thomas Gleixner
6 siblings, 1 reply; 16+ messages in thread
From: Thomas Gleixner @ 2011-07-23 12:41 UTC (permalink / raw)
To: linux-mips; +Cc: Ralf Baechle, Wu Zhangjin
[-- Attachment #1: mips-mark-cascade-interrupts-nothread.patch --]
[-- Type: text/plain, Size: 7502 bytes --]
From: Wu Zhangjin <wuzhangjin@gmail.com>
Mark interrupts with no_action handler, cascade interrupts, low level
interrupts (bus error, halt ..) with IRQF_NO_THREAD to exclude them
from forced threading.
Signed-off-by: Wu Zhangjin <wuzhangjin@gmail.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
arch/mips/ar7/irq.c | 3 ++-
arch/mips/bcm63xx/irq.c | 1 +
arch/mips/cobalt/irq.c | 1 +
arch/mips/dec/setup.c | 4 ++++
arch/mips/emma/markeins/irq.c | 2 +-
arch/mips/lasat/interrupt.c | 1 +
arch/mips/mti-malta/malta-int.c | 6 ++++--
arch/mips/pmc-sierra/msp71xx/msp_irq.c | 2 ++
arch/mips/pnx8550/common/int.c | 2 +-
arch/mips/sgi-ip22/ip22-int.c | 10 +++++-----
arch/mips/sni/rm200.c | 1 +
arch/mips/vr41xx/common/irq.c | 1 +
12 files changed, 24 insertions(+), 10 deletions(-)
Index: linux-2.6/arch/mips/ar7/irq.c
===================================================================
--- linux-2.6.orig/arch/mips/ar7/irq.c
+++ linux-2.6/arch/mips/ar7/irq.c
@@ -98,7 +98,8 @@ static struct irq_chip ar7_sec_irq_type
static struct irqaction ar7_cascade_action = {
.handler = no_action,
- .name = "AR7 cascade interrupt"
+ .name = "AR7 cascade interrupt",
+ .flags = IRQF_NO_THREAD,
};
static void __init ar7_irq_init(int base)
Index: linux-2.6/arch/mips/bcm63xx/irq.c
===================================================================
--- linux-2.6.orig/arch/mips/bcm63xx/irq.c
+++ linux-2.6/arch/mips/bcm63xx/irq.c
@@ -222,6 +222,7 @@ static struct irq_chip bcm63xx_external_
static struct irqaction cpu_ip2_cascade_action = {
.handler = no_action,
.name = "cascade_ip2",
+ .flags = IRQF_NO_THREAD,
};
void __init arch_init_irq(void)
Index: linux-2.6/arch/mips/cobalt/irq.c
===================================================================
--- linux-2.6.orig/arch/mips/cobalt/irq.c
+++ linux-2.6/arch/mips/cobalt/irq.c
@@ -48,6 +48,7 @@ asmlinkage void plat_irq_dispatch(void)
static struct irqaction cascade = {
.handler = no_action,
.name = "cascade",
+ .flags = IRQF_NO_THREAD,
};
void __init arch_init_irq(void)
Index: linux-2.6/arch/mips/dec/setup.c
===================================================================
--- linux-2.6.orig/arch/mips/dec/setup.c
+++ linux-2.6/arch/mips/dec/setup.c
@@ -101,20 +101,24 @@ int cpu_fpu_mask = DEC_CPU_IRQ_MASK(DEC_
static struct irqaction ioirq = {
.handler = no_action,
.name = "cascade",
+ .flags = IRQF_NO_THREAD,
};
static struct irqaction fpuirq = {
.handler = no_action,
.name = "fpu",
+ .flags = IRQF_NO_THREAD,
};
static struct irqaction busirq = {
.flags = IRQF_DISABLED,
.name = "bus error",
+ .flags = IRQF_NO_THREAD,
};
static struct irqaction haltirq = {
.handler = dec_intr_halt,
.name = "halt",
+ .flags = IRQF_NO_THREAD,
};
Index: linux-2.6/arch/mips/emma/markeins/irq.c
===================================================================
--- linux-2.6.orig/arch/mips/emma/markeins/irq.c
+++ linux-2.6/arch/mips/emma/markeins/irq.c
@@ -169,7 +169,7 @@ void emma2rh_gpio_irq_init(void)
static struct irqaction irq_cascade = {
.handler = no_action,
- .flags = 0,
+ .flags = IRQF_NO_THREAD,
.name = "cascade",
.dev_id = NULL,
.next = NULL,
Index: linux-2.6/arch/mips/lasat/interrupt.c
===================================================================
--- linux-2.6.orig/arch/mips/lasat/interrupt.c
+++ linux-2.6/arch/mips/lasat/interrupt.c
@@ -105,6 +105,7 @@ asmlinkage void plat_irq_dispatch(void)
static struct irqaction cascade = {
.handler = no_action,
.name = "cascade",
+ .flags = IRQF_NO_THREAD,
};
void __init arch_init_irq(void)
Index: linux-2.6/arch/mips/mti-malta/malta-int.c
===================================================================
--- linux-2.6.orig/arch/mips/mti-malta/malta-int.c
+++ linux-2.6/arch/mips/mti-malta/malta-int.c
@@ -350,12 +350,14 @@ unsigned int plat_ipi_resched_int_xlate(
static struct irqaction i8259irq = {
.handler = no_action,
- .name = "XT-PIC cascade"
+ .name = "XT-PIC cascade",
+ .flags = IRQF_NO_THREAD,
};
static struct irqaction corehi_irqaction = {
.handler = no_action,
- .name = "CoreHi"
+ .name = "CoreHi",
+ .flags = IRQF_NO_THREAD,
};
static msc_irqmap_t __initdata msc_irqmap[] = {
Index: linux-2.6/arch/mips/pmc-sierra/msp71xx/msp_irq.c
===================================================================
--- linux-2.6.orig/arch/mips/pmc-sierra/msp71xx/msp_irq.c
+++ linux-2.6/arch/mips/pmc-sierra/msp71xx/msp_irq.c
@@ -109,11 +109,13 @@ asmlinkage void plat_irq_dispatch(struct
static struct irqaction cic_cascade_msp = {
.handler = no_action,
.name = "MSP CIC cascade"
+ .flags = IRQF_NO_THREAD,
};
static struct irqaction per_cascade_msp = {
.handler = no_action,
.name = "MSP PER cascade"
+ .flags = IRQF_NO_THREAD,
};
void __init arch_init_irq(void)
Index: linux-2.6/arch/mips/pnx8550/common/int.c
===================================================================
--- linux-2.6.orig/arch/mips/pnx8550/common/int.c
+++ linux-2.6/arch/mips/pnx8550/common/int.c
@@ -167,7 +167,7 @@ static struct irq_chip level_irq_type =
static struct irqaction gic_action = {
.handler = no_action,
- .flags = IRQF_DISABLED,
+ .flags = IRQF_DISABLED | IRQF_NO_THREAD,
.name = "GIC",
};
Index: linux-2.6/arch/mips/sgi-ip22/ip22-int.c
===================================================================
--- linux-2.6.orig/arch/mips/sgi-ip22/ip22-int.c
+++ linux-2.6/arch/mips/sgi-ip22/ip22-int.c
@@ -155,32 +155,32 @@ static void __irq_entry indy_buserror_ir
static struct irqaction local0_cascade = {
.handler = no_action,
- .flags = IRQF_DISABLED,
+ .flags = IRQF_DISABLED | IRQF_NO_THREAD,
.name = "local0 cascade",
};
static struct irqaction local1_cascade = {
.handler = no_action,
- .flags = IRQF_DISABLED,
+ .flags = IRQF_DISABLED | IRQF_NO_THREAD,
.name = "local1 cascade",
};
static struct irqaction buserr = {
.handler = no_action,
- .flags = IRQF_DISABLED,
+ .flags = IRQF_DISABLED | IRQF_NO_THREAD,
.name = "Bus Error",
};
static struct irqaction map0_cascade = {
.handler = no_action,
- .flags = IRQF_DISABLED,
+ .flags = IRQF_DISABLED | IRQF_NO_THREAD,
.name = "mapable0 cascade",
};
#ifdef USE_LIO3_IRQ
static struct irqaction map1_cascade = {
.handler = no_action,
- .flags = IRQF_DISABLED,
+ .flags = IRQF_DISABLED | IRQF_NO_THREAD,
.name = "mapable1 cascade",
};
#define SGI_INTERRUPTS SGINT_END
Index: linux-2.6/arch/mips/sni/rm200.c
===================================================================
--- linux-2.6.orig/arch/mips/sni/rm200.c
+++ linux-2.6/arch/mips/sni/rm200.c
@@ -359,6 +359,7 @@ void sni_rm200_init_8259A(void)
static struct irqaction sni_rm200_irq2 = {
.handler = no_action,
.name = "cascade",
+ .flags = IRQF_NO_THREAD,
};
static struct resource sni_rm200_pic1_resource = {
Index: linux-2.6/arch/mips/vr41xx/common/irq.c
===================================================================
--- linux-2.6.orig/arch/mips/vr41xx/common/irq.c
+++ linux-2.6/arch/mips/vr41xx/common/irq.c
@@ -34,6 +34,7 @@ static irq_cascade_t irq_cascade[NR_IRQS
static struct irqaction cascade_irqaction = {
.handler = no_action,
.name = "cascade",
+ .flags = IRQF_NO_THREAD,
};
int cascade_irq(unsigned int irq, int (*get_irq)(unsigned int))
^ permalink raw reply [flat|nested] 16+ messages in thread
* [patch 6/7] MIPS: Loongson: Mark cascade interrupts IRQF_NO_THREAD
2011-07-23 12:41 [patch 0/7] MIPS: Assorted fixlets and annotation patches Thomas Gleixner
` (3 preceding siblings ...)
2011-07-23 12:41 ` [patch 4/7] MIPS: Make the die_lock be raw Thomas Gleixner
@ 2011-07-23 12:41 ` Thomas Gleixner
2011-07-27 9:55 ` Ralf Baechle
2011-07-23 12:41 ` [patch 5/7] MIPS: Mark cascade and low level " Thomas Gleixner
2011-07-23 12:41 ` [patch 7/7] mips: Allow forced irq threading Thomas Gleixner
6 siblings, 1 reply; 16+ messages in thread
From: Thomas Gleixner @ 2011-07-23 12:41 UTC (permalink / raw)
To: linux-mips; +Cc: Ralf Baechle, Wu Zhangjin
[-- Attachment #1: mips-loongson-mark-cascade-interrupts-non-thread.patch --]
[-- Type: text/plain, Size: 1515 bytes --]
From: Wu Zhangjin <wuzhangjin@gmail.com>
There are two cascade interrupts in Loongson machines, one for bonito
northbridge, another for the 8259A controller in the southbridge. Both
want to be non threaded.
Signed-off-by: Wu Zhangjin <wuzhangjin@gmail.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
arch/mips/loongson/fuloong-2e/irq.c | 1 +
arch/mips/loongson/lemote-2f/irq.c | 3 ++-
2 files changed, 3 insertions(+), 1 deletion(-)
Index: linux-2.6-tip/arch/mips/loongson/fuloong-2e/irq.c
===================================================================
--- linux-2.6-tip.orig/arch/mips/loongson/fuloong-2e/irq.c
+++ linux-2.6-tip/arch/mips/loongson/fuloong-2e/irq.c
@@ -42,6 +42,7 @@ asmlinkage void mach_irq_dispatch(unsign
static struct irqaction cascade_irqaction = {
.handler = no_action,
.name = "cascade",
+ .flags = IRQF_NO_THREAD,
};
void __init mach_init_irq(void)
Index: linux-2.6-tip/arch/mips/loongson/lemote-2f/irq.c
===================================================================
--- linux-2.6-tip.orig/arch/mips/loongson/lemote-2f/irq.c
+++ linux-2.6-tip/arch/mips/loongson/lemote-2f/irq.c
@@ -96,12 +96,13 @@ static irqreturn_t ip6_action(int cpl, v
struct irqaction ip6_irqaction = {
.handler = ip6_action,
.name = "cascade",
- .flags = IRQF_SHARED,
+ .flags = IRQF_SHARED | IRQF_NO_THREAD,
};
struct irqaction cascade_irqaction = {
.handler = no_action,
.name = "cascade",
+ .flags = IRQF_NO_THREAD,
};
void __init mach_init_irq(void)
^ permalink raw reply [flat|nested] 16+ messages in thread
* [patch 7/7] mips: Allow forced irq threading
2011-07-23 12:41 [patch 0/7] MIPS: Assorted fixlets and annotation patches Thomas Gleixner
` (5 preceding siblings ...)
2011-07-23 12:41 ` [patch 5/7] MIPS: Mark cascade and low level " Thomas Gleixner
@ 2011-07-23 12:41 ` Thomas Gleixner
2011-07-27 9:56 ` Ralf Baechle
6 siblings, 1 reply; 16+ messages in thread
From: Thomas Gleixner @ 2011-07-23 12:41 UTC (permalink / raw)
To: linux-mips; +Cc: Ralf Baechle
[-- Attachment #1: mips-allow-irq-threading.patch --]
[-- Type: text/plain, Size: 593 bytes --]
All low level interrupts have been marked NO_THREAD, so MIPS can enjoy
the wonderful world of forced threaded interrupt handlers.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
arch/mips/Kconfig | 1 +
1 file changed, 1 insertion(+)
Index: linux-2.6/arch/mips/Kconfig
===================================================================
--- linux-2.6.orig/arch/mips/Kconfig
+++ linux-2.6/arch/mips/Kconfig
@@ -24,6 +24,7 @@ config MIPS
select GENERIC_IRQ_PROBE
select GENERIC_IRQ_SHOW
select HAVE_ARCH_JUMP_LABEL
+ select IRQ_FORCED_THREADING
menu "Machine selection"
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [patch 1/7] mips: sibyte: Add missing irq_mask function
2011-07-23 12:41 ` [patch 1/7] mips: sibyte: Add missing irq_mask function Thomas Gleixner
@ 2011-07-27 8:41 ` Ralf Baechle
2011-07-27 14:49 ` Ralf Baechle
1 sibling, 0 replies; 16+ messages in thread
From: Ralf Baechle @ 2011-07-27 8:41 UTC (permalink / raw)
To: Thomas Gleixner; +Cc: linux-mips
On Sat, Jul 23, 2011 at 12:41:22PM -0000, Thomas Gleixner wrote:
> Crashes on free_irq() otherwise.
>
> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
> ---
> arch/mips/sibyte/sb1250/irq.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> Index: linux-2.6/arch/mips/sibyte/sb1250/irq.c
> ===================================================================
> --- linux-2.6.orig/arch/mips/sibyte/sb1250/irq.c
> +++ linux-2.6/arch/mips/sibyte/sb1250/irq.c
> @@ -178,7 +178,7 @@ static void ack_sb1250_irq(struct irq_da
>
> static struct irq_chip sb1250_irq_type = {
> .name = "SB1250-IMR",
> - .irq_mask_ack = ack_sb1250_irq,
> + .irq_mask = ack_sb1250_irq,
This conflicts with 1544129da2de9fa276429deed8fac3fbc45634be [MIPS: SB1250:
Restore dropped irq_mask function] which does:
@@ -180,6 +187,7 @@ static struct irq_chip sb1250_irq_type = {
.name = "SB1250-IMR",
.irq_mask_ack = ack_sb1250_irq,
.irq_unmask = enable_sb1250_irq,
+ .irq_mask = disable_sb1250_irq,
#ifdef CONFIG_SMP
.irq_set_affinity = sb1250_set_affinity
#endif
Ralf
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [patch 2/7] mips: ftrace: Fix the CONFIG_DYNAMIC_FTRACE=n compile
2011-07-23 12:41 ` [patch 2/7] mips: ftrace: Fix the CONFIG_DYNAMIC_FTRACE=n compile Thomas Gleixner
@ 2011-07-27 9:23 ` Ralf Baechle
0 siblings, 0 replies; 16+ messages in thread
From: Ralf Baechle @ 2011-07-27 9:23 UTC (permalink / raw)
To: Thomas Gleixner; +Cc: linux-mips
Thanks, applied.
Ralf
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [patch 4/7] MIPS: Make the die_lock be raw
2011-07-23 12:41 ` [patch 4/7] MIPS: Make the die_lock be raw Thomas Gleixner
@ 2011-07-27 9:51 ` Ralf Baechle
0 siblings, 0 replies; 16+ messages in thread
From: Ralf Baechle @ 2011-07-27 9:51 UTC (permalink / raw)
To: Thomas Gleixner; +Cc: linux-mips, Wu Zhangjin
Thanks, applied.
Ralf
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [patch 5/7] MIPS: Mark cascade and low level interrupts IRQF_NO_THREAD
2011-07-23 12:41 ` [patch 5/7] MIPS: Mark cascade and low level " Thomas Gleixner
@ 2011-07-27 9:53 ` Ralf Baechle
0 siblings, 0 replies; 16+ messages in thread
From: Ralf Baechle @ 2011-07-27 9:53 UTC (permalink / raw)
To: Thomas Gleixner; +Cc: linux-mips, Wu Zhangjin
Thanks, applied.
Ralf
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [patch 6/7] MIPS: Loongson: Mark cascade interrupts IRQF_NO_THREAD
2011-07-23 12:41 ` [patch 6/7] MIPS: Loongson: Mark cascade interrupts IRQF_NO_THREAD Thomas Gleixner
@ 2011-07-27 9:55 ` Ralf Baechle
0 siblings, 0 replies; 16+ messages in thread
From: Ralf Baechle @ 2011-07-27 9:55 UTC (permalink / raw)
To: Thomas Gleixner; +Cc: linux-mips, Wu Zhangjin
Thanks, applied.
Ralf
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [patch 7/7] mips: Allow forced irq threading
2011-07-23 12:41 ` [patch 7/7] mips: Allow forced irq threading Thomas Gleixner
@ 2011-07-27 9:56 ` Ralf Baechle
0 siblings, 0 replies; 16+ messages in thread
From: Ralf Baechle @ 2011-07-27 9:56 UTC (permalink / raw)
To: Thomas Gleixner; +Cc: linux-mips
Thanks, applied.
Ralf
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [patch 3/7] mips: Enable interrupts in do_signal()
2011-07-23 12:41 ` [patch 3/7] mips: Enable interrupts in do_signal() Thomas Gleixner
@ 2011-07-27 13:06 ` Ralf Baechle
0 siblings, 0 replies; 16+ messages in thread
From: Ralf Baechle @ 2011-07-27 13:06 UTC (permalink / raw)
To: Thomas Gleixner; +Cc: linux-mips
On Sat, Jul 23, 2011 at 12:41:23PM -0000, Thomas Gleixner wrote:
Uwh.. This one affects master and all -stable branches. But as discussed
on IRC I"ve placed the call directly into do_notify_resume - the less code
running with interrutps disabled the better.
Ralf
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [patch 1/7] mips: sibyte: Add missing irq_mask function
2011-07-23 12:41 ` [patch 1/7] mips: sibyte: Add missing irq_mask function Thomas Gleixner
2011-07-27 8:41 ` Ralf Baechle
@ 2011-07-27 14:49 ` Ralf Baechle
1 sibling, 0 replies; 16+ messages in thread
From: Ralf Baechle @ 2011-07-27 14:49 UTC (permalink / raw)
To: Thomas Gleixner; +Cc: linux-mips
And dropped as you suggested on IRC.
Thanks,
Ralf
^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2011-07-27 14:49 UTC | newest]
Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-07-23 12:41 [patch 0/7] MIPS: Assorted fixlets and annotation patches Thomas Gleixner
2011-07-23 12:41 ` [patch 1/7] mips: sibyte: Add missing irq_mask function Thomas Gleixner
2011-07-27 8:41 ` Ralf Baechle
2011-07-27 14:49 ` Ralf Baechle
2011-07-23 12:41 ` [patch 3/7] mips: Enable interrupts in do_signal() Thomas Gleixner
2011-07-27 13:06 ` Ralf Baechle
2011-07-23 12:41 ` [patch 2/7] mips: ftrace: Fix the CONFIG_DYNAMIC_FTRACE=n compile Thomas Gleixner
2011-07-27 9:23 ` Ralf Baechle
2011-07-23 12:41 ` [patch 4/7] MIPS: Make the die_lock be raw Thomas Gleixner
2011-07-27 9:51 ` Ralf Baechle
2011-07-23 12:41 ` [patch 6/7] MIPS: Loongson: Mark cascade interrupts IRQF_NO_THREAD Thomas Gleixner
2011-07-27 9:55 ` Ralf Baechle
2011-07-23 12:41 ` [patch 5/7] MIPS: Mark cascade and low level " Thomas Gleixner
2011-07-27 9:53 ` Ralf Baechle
2011-07-23 12:41 ` [patch 7/7] mips: Allow forced irq threading Thomas Gleixner
2011-07-27 9:56 ` Ralf Baechle
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.