Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
forked fromtorvalds/linux

Commit1beaeac

Browse files
committed
genirq: Make legacy autoprobing work again
Meelis reported the following warning on a quad P3 HP NetServer museum piece:WARNING: CPU: 3 PID: 258 at kernel/irq/chip.c:244 __irq_startup+0x80/0x100EIP: __irq_startup+0x80/0x100irq_startup+0x7e/0x170probe_irq_on+0x128/0x2b0parport_irq_probe.constprop.18+0x8d/0x1af [parport_pc]parport_pc_probe_port+0xf11/0x1260 [parport_pc]parport_pc_init+0x78a/0xf10 [parport_pc]parport_parse_param.constprop.16+0xf0/0xf0 [parport_pc]do_one_initcall+0x45/0x1e0This is caused by the rewrite of the irq activation/startup sequence whichmissed to convert a callsite in the irq legacy auto probing code.To fix this irq_activate_and_startup() needs to gain a return value so thepending logic can work proper.Fixes:c942cee ("genirq: Separate activation and startup")Reported-by: Meelis Roos <mroos@linux.ee>Signed-off-by: Thomas Gleixner <tglx@linutronix.de>Tested-by: Meelis Roos <mroos@linux.ee>Cc: stable@vger.kernel.orgLink:https://lkml.kernel.org/r/alpine.DEB.2.20.1801301935410.1797@nanos
1 parent8de50dc commit1beaeac

File tree

3 files changed

+5
-5
lines changed

3 files changed

+5
-5
lines changed

‎kernel/irq/autoprobe.c‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ unsigned long probe_irq_on(void)
7171
raw_spin_lock_irq(&desc->lock);
7272
if (!desc->action&&irq_settings_can_probe(desc)) {
7373
desc->istate |=IRQS_AUTODETECT |IRQS_WAITING;
74-
if (irq_startup(desc,IRQ_NORESEND,IRQ_START_FORCE))
74+
if (irq_activate_and_startup(desc,IRQ_NORESEND))
7575
desc->istate |=IRQS_PENDING;
7676
}
7777
raw_spin_unlock_irq(&desc->lock);

‎kernel/irq/chip.c‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -294,11 +294,11 @@ int irq_activate(struct irq_desc *desc)
294294
return0;
295295
}
296296

297-
voidirq_activate_and_startup(structirq_desc*desc,boolresend)
297+
intirq_activate_and_startup(structirq_desc*desc,boolresend)
298298
{
299299
if (WARN_ON(irq_activate(desc)))
300-
return;
301-
irq_startup(desc,resend,IRQ_START_FORCE);
300+
return0;
301+
returnirq_startup(desc,resend,IRQ_START_FORCE);
302302
}
303303

304304
staticvoid__irq_disable(structirq_desc*desc,boolmask);

‎kernel/irq/internals.h‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ extern void __enable_irq(struct irq_desc *desc);
7676
#defineIRQ_START_CONDfalse
7777

7878
externintirq_activate(structirq_desc*desc);
79-
externvoidirq_activate_and_startup(structirq_desc*desc,boolresend);
79+
externintirq_activate_and_startup(structirq_desc*desc,boolresend);
8080
externintirq_startup(structirq_desc*desc,boolresend,boolforce);
8181

8282
externvoidirq_shutdown(structirq_desc*desc);

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp