You are not logged in.

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

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

[SOLVED] 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-31 19:34:09)


https://keybase.io/frayoshi
Pgp: B41370007e0dfc34942cfa033fc5f028e7aff594

Offline

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

loqs
Member
Registered: 2014-03-06
Posts: 17,363

Re: [SOLVED] 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: 8
Website

Re: [SOLVED] 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)


https://keybase.io/frayoshi
Pgp: B41370007e0dfc34942cfa033fc5f028e7aff594

Offline

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

loqs
Member
Registered: 2014-03-06
Posts: 17,363

Re: [SOLVED] 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

#5 2019-08-31 19:33:23

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

Re: [SOLVED] journald missed x kernel messages and saturates cpu

Looks like solved with the version 5.2.11. (upgraded today from .7 to .11)
By the way, the pme.c file has not changed so something else must have solved the issue...

Thanks for support, much appreciated and I compile the kernel for the first time because of this issue smile


https://keybase.io/frayoshi
Pgp: B41370007e0dfc34942cfa033fc5f028e7aff594

Offline

Board footer

Powered by FluxBB