You are not logged in.

#1 2019-08-04 20:43:06

FraYoshi
Member
From: Asti, Italy
Registered: 2017-04-30
Posts: 6
Website

journald missed x kernel messages and saturates cpu

Hi,
resuming from suspension, journald takes 100% cpu and continuously reports this:

[...]
kernel: pcieport 0000:00:01.3: PME: Spurious native interrupt!
systemd-journald[625]: Missed 37 kernel messages
[...]

journalctl -f screenshot on ipfs. png

the pcie is this:

00:01.3 PCI bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) PCIe GPP Bridge

if I issue suspension again it fails and need to reboot by reset button.
if I try to restart

systemd-journald

it doesn't.

my system info:

OS: Arch Linux x86_64 
Kernel: 5.2.5-arch1-1-ARCH 
DE: Xfce 
WM: Xfwm4 
CPU: AMD Ryzen 7 2700X (16) @ 4.000GHz 
GPU: NVIDIA GeForce GTX 1050 Ti (2nd card just plugged)
GPU: AMD ATI Radeon RX 580 Nitro (in use)
Memory: 3495MiB / 64415MiB

it started happening like 1 or 2 weeks ago and in the meantime I updated 2 to 5 times.

any idea?

Last edited by FraYoshi (2019-08-04 20:57:01)


Pgp: B41370007e0dfc34942cfa033fc5f028e7aff594

Offline

#2 2019-08-04 20:47:59

loqs
Member
Registered: 2014-03-06
Posts: 8,150

Re: journald missed x kernel messages and saturates cpu

The message was upgraded from dbg to info with [1] which would be present in 5.2.

[1] https://github.com/torvalds/linux/commi … 0592bfbe6a
Edit:
If you replace

 		pci_info(port, "Spurious native interrupt!\n");

with

#define pci_info_once(pdev, fmt, arg...) \
	dev_info_once(&(pdev)->dev, fmt, ##arg)
 		pci_info_once(port, "Spurious native interrupt!\n");

or

#define pci_info_ratelimited(pdev, fmt, arg...) \
	dev_info_ratelimited(&(pdev)->dev, fmt, ##arg)
 		pci_info_ratelimited(port, "Spurious native interrupt!\n");

Rebuild the kernel with that change then does the system resume correctly?

Last edited by loqs (2019-08-04 22:10:39)

Offline

#3 2019-08-05 00:13:35

FraYoshi
Member
From: Asti, Italy
Registered: 2017-04-30
Posts: 6
Website

Re: journald missed x kernel messages and saturates cpu

Sorry, it took a while to learn how to and compile the kernel.. followed this guide

and yes, with

#define pci_info_once(pdev, fmt, arg...) \
	dev_info_once(&(pdev)->dev, fmt, ##arg)
 		pci_info_once(port, "Spurious native interrupt!\n");

the problem has been solved!! smile
now I can standby again my pc ^^
just.. need to update the kernel this way u.u (or maybe could automate the thing... okay, that's another topic).

thanks : )

p.s. should we notify about this on the Github?

Last edited by FraYoshi (2019-08-05 02:44:49)


Pgp: B41370007e0dfc34942cfa033fc5f028e7aff594

Offline

#4 2019-08-05 20:47:13

loqs
Member
Registered: 2014-03-06
Posts: 8,150

Re: journald missed x kernel messages and saturates cpu

The kernel developers do acceept bug reports or pull requests on github.  kernel bug reporting
https://bugzilla.kernel.org/show_bug.cgi?id=204413 mentions the message as a side effect of another issue.
https://bugzilla.kernel.org/show_bug.cgi?id=203885 mentions adding more info to see what device is generating the event for the bridge.
Edit:
Updated patcheto add info

diff --git a/drivers/pci/pcie/pme.c b/drivers/pci/pcie/pme.c
index f38e6c19dd50..f5f6f2bac713 100644
--- a/drivers/pci/pcie/pme.c
+++ b/drivers/pci/pcie/pme.c
@@ -203,7 +203,9 @@ static void pcie_pme_handle_request(struct pci_dev *port, u16 req_id)
 
  out:
        if (!found)
-               pci_info(port, "Spurious native interrupt!\n");
+#define pci_info_once(pdev, fmt, arg...) \
+       dev_info_once(&(pdev)->dev, fmt, ##arg)
+               pci_info_once(port, "Spurious native interrupt! (Bus# %d DevFn %d)\n", busnr, devfn);
 }
 
 /**

or

diff --git a/drivers/pci/pcie/pme.c b/drivers/pci/pcie/pme.c
index f38e6c19dd50..8c29746dd67b 100644
--- a/drivers/pci/pcie/pme.c
+++ b/drivers/pci/pcie/pme.c
@@ -203,7 +203,9 @@ static void pcie_pme_handle_request(struct pci_dev *port, u16 req_id)
 
  out:
        if (!found)
-               pci_info(port, "Spurious native interrupt!\n");
+#define pci_info_ratelimited(pdev, fmt, arg...) \
+       dev_info_ratelimited(&(pdev)->dev, fmt, ##arg)
+               pci_info_ratelimited(port, "Spurious native interrupt! (Bus# %d DevFn %d)\n", busnr, devfn);
 }
 
 /**

Last edited by loqs (2019-08-05 22:45:06)

Offline

Board footer

Powered by FluxBB