i.MX6q PCIe error at request_irq in pcie_pme_probe

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

i.MX6q PCIe error at request_irq in pcie_pme_probe

Jump to solution
10,066 Views
mannsikchung
Contributor III

I'm working on iMX6q (yocto based) and trying to enable PCIe, connecting an BT/WiFi module.

I'm trying to enable PCIe.

Currently "lspci" shows connected BT/WiFi module name. But, some error message is shown as below.

Can anyone help to understand and debug this? What is pcie_pme?

The log says pcie_pme failed, at the end of the log.

part of log message is this.

imx6q-pcie 1ffc000.pcie: PCI host bridge to bus 0000:00

pci_bus 0000:00: root bus resource [io  0x1000-0x10000]

pci_bus 0000:00: root bus resource [mem 0x01000000-0x01efffff]

pci_bus 0000:00: root bus resource [bus 00-ff]

PCI: bus0: Fast back to back transfers disabled

PCI: bus1: Fast back to back transfers disabled

pci 0000:00:00.0: BAR 9: can't assign mem pref (size 0x1800000)

pci 0000:00:00.0: BAR 0: assigned [mem 0x01000000-0x010fffff]

pci 0000:00:00.0: BAR 6: assigned [mem 0x01100000-0x0110ffff pref]

pci 0000:01:00.0: BAR 4: can't assign mem pref (size 0x1000000)

pci 0000:01:00.0: BAR 2: can't assign mem pref (size 0x100000)

pci 0000:01:00.0: BAR 0: can't assign mem pref (size 0x8000)

pci 0000:00:00.0: PCI bridge to [bus 01]

------------[ cut here ]------------

WARNING: CPU: 2 PID: 1 at kernel/irq/manage.c:1412 request_threaded_irq+0x104/0x12c()

Modules linked in:

CPU: 2 PID: 1 Comm: swapper/0 Not tainted 3.14.52 #6

Backtrace:

[<800120e4>] (dump_backtrace) from [<800122f4>] (show_stack+0x18/0x1c)

r6:800760ec r5:00000000 r4:807e367c r3:00000000

[<800122dc>] (show_stack) from [<805b9070>] (dump_stack+0x88/0x98)

[<805b8fe8>] (dump_stack) from [<8002b284>] (warn_slowpath_common+0x78/0x94)

r5:00000009 r4:00000000

[<8002b20c>] (warn_slowpath_common) from [<8002b344>] (warn_slowpath_null+0x24/0x2c)

r8:bc4e3c00 r7:00000080 r6:802dad74 r5:bc007400 r4:bc4e3c00

[<8002b320>] (warn_slowpath_null) from [<800760ec>] (request_threaded_irq+0x104/0x12c)

[<80075fe8>] (request_threaded_irq) from [<802dac6c>] (pcie_pme_probe+0xf4/0x1fc)

r10:00000014 r9:00000000 r8:807e4ed4 r7:00000000 r6:bc4ae000 r5:bc514200

r4:bc4e3c00 r3:00000080

[<802dab78>] (pcie_pme_probe) from [<802d8388>] (pcie_port_probe_service+0x3c/0x80)

r7:00000000 r6:bc4e3c10 r5:bc4e3c10 r4:807e4ed4

[<802d834c>] (pcie_port_probe_service) from [<8032fe38>] (driver_probe_device+0x118/0x258)

r6:00000000 r5:bc4e3c10 r4:80d5284c r3:802d834c

[<8032fd20>] (driver_probe_device) from [<8032ffc0>] (__device_attach+0x48/0x4c)

r9:00000000 r8:00000000 r7:00000000 r6:8032ff78 r5:bc4e3c10 r4:807e4ed4

[<8032ff78>] (__device_attach) from [<8032e21c>] (bus_for_each_drv+0x6c/0xa0)

r5:bc4e3c10 r4:00000000

[<8032e1b0>] (bus_for_each_drv) from [<8032fce4>] (device_attach+0x80/0x94)

r6:bc4e3c44 r5:bc4e3c10 r4:bc4e3c10

[<8032fc64>] (device_attach) from [<8032f2ac>] (bus_probe_device+0x90/0xb4)

r6:807e4dfc r5:bc4e3c10 r4:bc4e3c18 r3:bc2d7600

[<8032f21c>] (bus_probe_device) from [<8032d4b8>] (device_add+0x458/0x544)

r6:bc4ae068 r5:bc4e3c10 r4:bc4e3c18 r3:00000000

[<8032d060>] (device_add) from [<8032d5c0>] (device_register+0x1c/0x20)

r9:bc4e3c10 r8:00000000 r7:00000001 r6:00000009 r5:00000000 r4:bc4e3c10

[<8032d5a4>] (device_register) from [<802d8664>] (pcie_port_device_register+0x1e0/0x2c0)

r4:bc4ae000 r3:00000002

[<802d8484>] (pcie_port_device_register) from [<802d8a80>] (pcie_portdrv_probe+0x44/0xac)

r10:bc09dcb0 r9:805e16fc r8:807e4d64 r7:bc4ae000 r6:00000000 r5:807e4d98

r4:bc4ae000

[<802d8a3c>] (pcie_portdrv_probe) from [<802cdca8>] (pci_device_probe+0x7c/0xd0)

r5:807e4d98 r4:bc4ae068

[<802cdc2c>] (pci_device_probe) from [<8032fe38>] (driver_probe_device+0x118/0x258)

r9:00000000 r8:807e4d98 r7:00000001 r6:00000000 r5:bc4ae068 r4:80d5284c

[<8032fd20>] (driver_probe_device) from [<8032ffc0>] (__device_attach+0x48/0x4c)

r9:00010000 r8:00000100 r7:00000001 r6:8032ff78 r5:bc4ae068 r4:807e4d98

[<8032ff78>] (__device_attach) from [<8032e21c>] (bus_for_each_drv+0x6c/0xa0)

r5:bc4ae068 r4:00000000

[<8032e1b0>] (bus_for_each_drv) from [<8032fce4>] (device_attach+0x80/0x94)

r6:bc4ae09c r5:bc4e3014 r4:bc4ae068

[<8032fc64>] (device_attach) from [<802c5648>] (pci_bus_add_device+0x3c/0x6c)

r6:bc4e3000 r5:bc4e3014 r4:bc4ae000 r3:00000001

[<802c560c>] (pci_bus_add_device) from [<802c5788>] (pci_bus_add_devices+0x44/0xa8)

r4:bc4ae000 r3:00000000

[<802c5744>] (pci_bus_add_devices) from [<8001412c>] (pci_common_init_dev+0x234/0x2fc)

r6:80d4cee4 r5:bc4e3000 r4:bc4b9d00 r3:bc0a0000

[<80013ef8>] (pci_common_init_dev) from [<807a1180>] (dw_pcie_host_init+0x698/0x6c8)

r10:00000000 r9:80d4cf4c r8:807d258c r7:00000000 r6:00000000 r5:bc09dd14

r4:807e4f10

[<807a0ae8>] (dw_pcie_host_init) from [<807a159c>] (imx6_pcie_probe+0x3c8/0x40c)

r10:bc09c010 r9:00000000 r8:807e4f60 r7:bf7e4364 r6:bc15e400 r5:bc15e410

r4:bc4e5610

[<807a11d4>] (imx6_pcie_probe) from [<80331838>] (platform_drv_probe+0x4c/0xac)

r7:fffffdfb r6:807e4f60 r5:bc15e410 r4:80d5284c

[<803317ec>] (platform_drv_probe) from [<8032fe38>] (driver_probe_device+0x118/0x258)

r7:00000000 r6:00000000 r5:bc15e410 r4:80d5284c

[<8032fd20>] (driver_probe_device) from [<80330060>] (__driver_attach+0x9c/0xa0)

r9:807834d4 r8:000000a2 r7:00000000 r6:bc15e444 r5:807e4f60 r4:bc15e410

[<8032ffc4>] (__driver_attach) from [<8032e158>] (bus_for_each_dev+0x74/0xa8)

r6:8032ffc4 r5:807e4f60 r4:00000000 r3:bc150a5c

[<8032e0e4>] (bus_for_each_dev) from [<8032f8bc>] (driver_attach+0x24/0x28)

r6:807efeb0 r5:bc4b9c80 r4:807e4f60

[<8032f898>] (driver_attach) from [<8032f534>] (bus_add_driver+0x150/0x1f8)

[<8032f3e4>] (bus_add_driver) from [<803306e0>] (driver_register+0x80/0x100)

r7:8080f000 r6:8080f000 r5:00000007 r4:807e4f60

[<80330660>] (driver_register) from [<8033177c>] (__platform_driver_register+0x5c/0x64)

r5:00000007 r4:807e4f4c

[<80331720>] (__platform_driver_register) from [<803318d8>] (platform_driver_probe+0x28/0xb0)

[<803318b0>] (platform_driver_probe) from [<807a11d0>] (imx6_pcie_init+0x20/0x24)

r5:00000007 r4:807a11b0

[<807a11b0>] (imx6_pcie_init) from [<8000889c>] (do_one_initcall+0x108/0x168)

[<80008794>] (do_one_initcall) from [<80783c68>] (kernel_init_freeable+0x140/0x1e4)

r10:807b460c r9:807834d4 r8:000000a2 r7:8080f000 r6:8080f000 r5:00000007

r4:807bf3e0

[<80783b28>] (kernel_init_freeable) from [<805b3c68>] (kernel_init+0x10/0xf0)

r10:00000000 r9:00000000 r8:00000000 r7:00000000 r6:00000000 r5:805b3c58

r4:00000000

[<805b3c58>] (kernel_init) from [<8000e8d0>] (ret_from_fork+0x14/0x24)

r4:00000000 r3:00000000

---[ end trace 1eb9506d1cd1d2f1 ]---

pcie_pme: probe of 0000:00:00.0:pcie01 failed with error -22

Labels (3)
0 Kudos
Reply
1 Solution
9,341 Views
mannsikchung
Contributor III

After enable below in menuconfig, the error is gone.

Bus Support --> Message Signaled Interrupts (MSI and MSI-X)

Thank you for all of your help.

View solution in original post

0 Kudos
Reply
4 Replies
9,342 Views
mannsikchung
Contributor III

After enable below in menuconfig, the error is gone.

Bus Support --> Message Signaled Interrupts (MSI and MSI-X)

Thank you for all of your help.

0 Kudos
Reply
9,341 Views
igorpadykov
NXP Employee
NXP Employee

Hi Mannsik

pcie_pme is associated with ability of wake host from card signal

PME signal is a pitfall for PCI designers implementing ACPI | EE Times

i.MX6 PCIe has ERR005723 PCIe: PCIe does not support L2 power down,

attached Linux Release Notes in Table 13. Known issues and workarounds

describes: PCIe does not support Hot Plug and Power Management.

Best regards

igor

-----------------------------------------------------------------------------------------------------------------------

Note: If this post answers your question, please click the Correct Answer button. Thank you!

-----------------------------------------------------------------------------------------------------------------------

0 Kudos
Reply
9,341 Views
mannsikchung
Contributor III

Dear igorpadykov

To enable PCIe, I add below to own device tree.

&pcie {

    status = "okay";

};

And, it seems to use below in file, imx6qdl.dtsi

pcie: pcie@0x01000000 {

            compatible = "fsl,imx6q-pcie", "snps,dw-pcie";

            reg = <0x01ffc000 0x4000>, <0x01f00000 0x80000>;

            reg-names = "dbi", "config";

            #address-cells = <3>;

            #size-cells = <2>;

            device_type = "pci";

            ranges = <0x81000000 0 0          0x01f80000 0 0x00010000 /* downstream I/O */

                  0x82000000 0 0x01000000 0x01000000 0 0x00f00000>; /* non-prefetchable memory */

            num-lanes = <1>;

            interrupts = <0 120 IRQ_TYPE_LEVEL_HIGH>;

            interrupt-names = "msi";

            #interrupt-cells = <1>;

            interrupt-map-mask = <0 0 0 0x7>;

            interrupt-map = <0 0 0 1 &intc 0 123 IRQ_TYPE_LEVEL_HIGH>,

                            <0 0 0 2 &intc 0 122 IRQ_TYPE_LEVEL_HIGH>,

                            <0 0 0 3 &intc 0 121 IRQ_TYPE_LEVEL_HIGH>,

                            <0 0 0 4 &intc 0 120 IRQ_TYPE_LEVEL_HIGH>;

            clocks = <&clks IMX6QDL_CLK_PCIE_REF_125M>,

                 <&clks IMX6QDL_CLK_SATA_REF_100M>,

                 <&clks IMX6QDL_CLK_LVDS1_GATE>, <&clks IMX6QDL_CLK_PCIE_AXI>;

            clock-names = "pcie_phy", "ref_100m", "pcie_bus", "pcie";

            status = "disabled";

        };

For me, it is not easy to understand all of these.

Can anybody explain one by one?

for the first thing, reg field has two values. first address, 0x01ffc000 can be found in the datasheet, but, second one, 0x01f00000 can not.

what is second address of 0x01f00000?

BR.

0 Kudos
Reply
9,341 Views
igorpadykov
NXP Employee
NXP Employee
0 Kudos
Reply