* MEI: suspend/IRQ warnings
@ 2012-06-26 22:22 Lekensteyn
2012-07-03 9:08 ` [PATCH] misc: mei: set IRQF_ONESHOT for MSI request_threaded_irq() in mei_pci_resume() Roland Dreier
0 siblings, 1 reply; 4+ messages in thread
From: Lekensteyn @ 2012-06-26 22:22 UTC (permalink / raw)
To: Tomas Winkler; +Cc: linux-kernel
Hi Thomas,
Although I do not use the MEI driver (yet?), I still have it installed. Using
kernel 3.5-rc4, I have a weird message on boot up:
[ 11.259467] mei 0000:00:16.0: setting latency timer to 64
[ 11.259538] mei 0000:00:16.0: irq 48 for MSI/MSI-X
[ 11.263132] mei 0000:00:16.0: wd: failed to find the client
In kernel 3.4.4, I'd get:
[ 7.014817] mei: module is from the staging directory, the quality is
unknown, you have been warned.
[ 7.015139] mei 0000:00:16.0: setting latency timer to 64
[ 7.015233] mei 0000:00:16.0: irq 47 for MSI/MSI-X
After suspend/resume, it get even weirder:
[10771.177941] mei 0000:00:16.0: irq 48 for MSI/MSI-X
[10771.178034] genirq: Threaded irq requested with handler=NULL and !ONESHOT
for irq 48
[10771.178043] mei 0000:00:16.0: request_threaded_irq failed: irq = 48.
[10771.178050] dpm_run_callback(): pci_pm_resume+0x0/0x140 returns -22
[10771.178051] PM: Device 0000:00:16.0 failed to resume async: error -22
The suspend/resume cycle thereafter gives even more errors:
[33724.928600] ------------[ cut here ]------------
[33724.928607] WARNING: at kernel/irq/manage.c:1214 __free_irq+0xa3/0x1e0()
[33724.928609] Hardware name: B7130
[33724.928609] Trying to free already-free IRQ 48
[33724.928652] Modules linked in: acpi_call(O) iptable_mangle xt_mark
iptable_nat nf_nat mxm_wmi wmi bbswitch(O) nf_conntrack_ipv4 nf_defrag_ipv4
xt_state nf_conntrack ipt_REJECT xt_LOG xt_limit xt_tcpudp xt_owner
xt_addrtype iptable_filter ip_tables x_tables arc4 iwlwifi mac80211
snd_hda_codec_hdmi snd_hda_codec_via snd_hda_intel snd_hda_codec cfg80211
hid_logitech_dj snd_hwdep snd_pcm usbhid psmouse coretemp snd_page_alloc hid
snd_timer snd jmb38x_ms i2c_i801 jme intel_ips sdhci_pci memstick mei sdhci
soundcore binfmt_misc xts gf128mul dm_crypt i915 video i2c_algo_bit
drm_kms_helper drm xhci_hcd ahci libahci [last unloaded: wmi]
[33724.928655] Pid: 9731, comm: kworker/u:15 Tainted: G O 3.5.0-1-
custom #1
[33724.928656] Call Trace:
[33724.928664] [<ffffffff81038adf>] warn_slowpath_common+0x7f/0xc0
[33724.928666] [<ffffffff81038bd6>] warn_slowpath_fmt+0x46/0x50
[33724.928668] [<ffffffff810bb673>] __free_irq+0xa3/0x1e0
[33724.928670] [<ffffffff810bb807>] free_irq+0x57/0xd0
[33724.928677] [<ffffffffa0133f53>] mei_pci_suspend+0x83/0xd0 [mei]
[33724.928683] [<ffffffff812d5ee0>] pci_pm_suspend+0x70/0x1e0
[33724.928689] [<ffffffff8137f080>] ? device_pm_wait_for_dev+0x30/0x30
[33724.928691] [<ffffffff812d5e70>] ? pci_pm_suspend_noirq+0x220/0x220
[33724.928693] [<ffffffff8137f32b>] dpm_run_callback.isra.7+0x3b/0x70
[33724.928695] [<ffffffff8137fcd1>] __device_suspend+0x101/0x270
[33724.928696] [<ffffffff8137fe5f>] async_suspend+0x1f/0xa0
[33724.928702] [<ffffffff8106362e>] async_run_entry_fn+0x7e/0x170
[33724.928707] [<ffffffff810568a3>] process_one_work+0x123/0x400
[33724.928709] [<ffffffff810635b0>] ? async_synchronize_full_domain+0x20/0x20
[33724.928711] [<ffffffff81056ede>] worker_thread+0x12e/0x2d0
[33724.928713] [<ffffffff81056db0>] ? rescuer_thread+0x1f0/0x1f0
[33724.928715] [<ffffffff8105c003>] kthread+0x93/0xa0
[33724.928721] [<ffffffff8153b854>] kernel_thread_helper+0x4/0x10
[33724.928723] [<ffffffff8105bf70>] ? flush_kthread_worker+0x80/0x80
[33724.928725] [<ffffffff8153b850>] ? gs_change+0xb/0xb
--
[33726.729315] mei 0000:00:16.0: irq 48 for MSI/MSI-X
[33726.729373] genirq: Threaded irq requested with handler=NULL and !ONESHOT
for irq 48
[33726.729383] mei 0000:00:16.0: request_threaded_irq failed: irq = 48.
[33726.729390] dpm_run_callback(): pci_pm_resume+0x0/0x140 returns -22
[33726.729391] PM: Device 0000:00:16.0 failed to resume async: error -22
I also noticed that /proc/interrupts does not list irq 48 nor mei anymore.
lspci
00:16.0 Communication controller [0780]: Intel Corporation 5 Series/3400
Series Chipset HECI Controller [8086:3b64] (rev 06)
Hopefully it helps you debugging it. If you need more information, feel free
to ask.
Regards,
Peter
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH] misc: mei: set IRQF_ONESHOT for MSI request_threaded_irq() in mei_pci_resume()
2012-06-26 22:22 MEI: suspend/IRQ warnings Lekensteyn
@ 2012-07-03 9:08 ` Roland Dreier
2012-07-03 12:12 ` Winkler, Tomas
0 siblings, 1 reply; 4+ messages in thread
From: Roland Dreier @ 2012-07-03 9:08 UTC (permalink / raw)
To: Tomas Winkler, Greg Kroah-Hartman, Lekensteyn; +Cc: linux-kernel
From: Roland Dreier <roland@purestorage.com>
When the default quick IRQ handler is used then IRQF_ONESHOT must be set,
or else the request fails and following error is logged on resume:
genirq: Threaded irq requested with handler=NULL and !ONESHOT for irq ...
This is the same fix that commit aa189ecdc0c7 ("misc: mei: set
IRQF_ONESHOT for msi request_threaded_irq") did in the probe function.
Reported-by: Lekensteyn <lekensteyn@gmail.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
---
Can you try this? It looks to be needed.
Thomas/Greg, I think this should get into 3.5 if possible.
drivers/misc/mei/main.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/misc/mei/main.c b/drivers/misc/mei/main.c
index 7de1389..783fcd7 100644
--- a/drivers/misc/mei/main.c
+++ b/drivers/misc/mei/main.c
@@ -1147,7 +1147,7 @@ static int mei_pci_resume(struct device *device)
err = request_threaded_irq(pdev->irq,
NULL,
mei_interrupt_thread_handler,
- 0, mei_driver_name, dev);
+ IRQF_ONESHOT, mei_driver_name, dev);
else
err = request_threaded_irq(pdev->irq,
mei_interrupt_quick_handler,
--
1.7.10.4
^ permalink raw reply related [flat|nested] 4+ messages in thread
* RE: [PATCH] misc: mei: set IRQF_ONESHOT for MSI request_threaded_irq() in mei_pci_resume()
2012-07-03 9:08 ` [PATCH] misc: mei: set IRQF_ONESHOT for MSI request_threaded_irq() in mei_pci_resume() Roland Dreier
@ 2012-07-03 12:12 ` Winkler, Tomas
2012-07-03 16:49 ` Roland Dreier
0 siblings, 1 reply; 4+ messages in thread
From: Winkler, Tomas @ 2012-07-03 12:12 UTC (permalink / raw)
To: Roland Dreier, Greg Kroah-Hartman, Lekensteyn; +Cc: linux-kernel
> -----Original Message-----
> From: Roland Dreier [mailto:roland@purestorage.com] On Behalf Of Roland
> Dreier
> Sent: Tuesday, July 03, 2012 12:09 PM
> To: Winkler, Tomas; Greg Kroah-Hartman; Lekensteyn
> Cc: linux-kernel@vger.kernel.org
> Subject: [PATCH] misc: mei: set IRQF_ONESHOT for MSI
> request_threaded_irq() in mei_pci_resume()
>
> From: Roland Dreier <roland@purestorage.com>
>
Thanks but fix was already posted
Tomas
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] misc: mei: set IRQF_ONESHOT for MSI request_threaded_irq() in mei_pci_resume()
2012-07-03 12:12 ` Winkler, Tomas
@ 2012-07-03 16:49 ` Roland Dreier
0 siblings, 0 replies; 4+ messages in thread
From: Roland Dreier @ 2012-07-03 16:49 UTC (permalink / raw)
To: Winkler, Tomas; +Cc: Greg Kroah-Hartman, Lekensteyn, linux-kernel
On Tue, Jul 3, 2012 at 5:12 AM, Winkler, Tomas <tomas.winkler@intel.com> wrote:
> Thanks but fix was already posted
OK, sorry for the noise. I guess I missed it because it wasn't in
the original thread.
I guess you can add my acked-by to the patch ;)
- R.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2012-07-03 16:50 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-06-26 22:22 MEI: suspend/IRQ warnings Lekensteyn
2012-07-03 9:08 ` [PATCH] misc: mei: set IRQF_ONESHOT for MSI request_threaded_irq() in mei_pci_resume() Roland Dreier
2012-07-03 12:12 ` Winkler, Tomas
2012-07-03 16:49 ` Roland Dreier
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.