Implementing MSI support on my platform

Mason slash.tmp at free.fr
Tue Mar 7 08:47:10 PST 2017


Hello,

As suggested by Marc, I'm trying to adapt
  drivers/pci/host/pcie-altera-msi.c
to my platform.


Here are my changes to the existing driver:

diff --git a/drivers/pci/host/pcie-altera-msi.c b/drivers/pci/host/pcie-altera-msi.c
index 4e5d628e8cd4..914cd26b2a53 100644
--- a/drivers/pci/host/pcie-altera-msi.c
+++ b/drivers/pci/host/pcie-altera-msi.c
@@ -18,6 +18,7 @@
  * this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#define DEBUG 42
 #include <linux/interrupt.h>
 #include <linux/irqchip/chained_irq.h>
 #include <linux/init.h>
@@ -31,7 +32,11 @@
 
 #define MSI_STATUS             0x0
 #define MSI_ERROR              0x4
+#if 0
 #define MSI_INTMASK            0x8
+#else
+#define MSI_INTMASK            0x20
+#endif
 
 #define MAX_MSI_VECTORS                32
 
@@ -51,12 +56,19 @@ struct altera_msi {
 static inline void msi_writel(struct altera_msi *msi, const u32 value,
                              const u32 reg)
 {
+       printk("%s: reg=%u val=0x%x\n", __func__, reg, value);
        writel_relaxed(value, msi->csr_base + reg);
 }
 
 static inline u32 msi_readl(struct altera_msi *msi, const u32 reg)
 {
+#if 0
        return readl_relaxed(msi->csr_base + reg);
+#else
+       u32 val = readl_relaxed(msi->csr_base + reg);
+       printk("%s: reg=%u val=0x%x\n", __func__, reg, val);
+       return val;
+#endif
 }
 
 static void altera_msi_isr(struct irq_desc *desc)
@@ -68,14 +80,19 @@ static void altera_msi_isr(struct irq_desc *desc)
        u32 bit;
        u32 virq;
 
+       printk("%s: ENTER\n", __func__);
        chained_irq_enter(chip, desc);
        msi = irq_desc_get_handler_data(desc);
        num_of_vectors = msi->num_of_vectors;
 
        while ((status = msi_readl(msi, MSI_STATUS)) != 0) {
                for_each_set_bit(bit, &status, msi->num_of_vectors) {
+#if 0
                        /* Dummy read from vector to clear the interrupt */
                        readl_relaxed(msi->vector_base + (bit * sizeof(u32)));
+#else
+                       msi_writel(msi, bit, MSI_STATUS);
+#endif
 
                        virq = irq_find_mapping(msi->inner_domain, bit);
                        if (virq)
@@ -103,7 +120,11 @@ static void altera_msi_isr(struct irq_desc *desc)
 static void altera_compose_msi_msg(struct irq_data *data, struct msi_msg *msg)
 {
        struct altera_msi *msi = irq_data_get_irq_chip_data(data);
+#if 0
        phys_addr_t addr = msi->vector_phy + (data->hwirq * sizeof(u32));
+#else
+       phys_addr_t addr = 0x8000000 + 0x2e07c;
+#endif
 
        msg->address_lo = lower_32_bits(addr);
        msg->address_hi = upper_32_bits(addr);
@@ -247,6 +268,7 @@ static int altera_msi_probe(struct platform_device *pdev)
                return PTR_ERR(msi->csr_base);
        }
 
+#if 0
        res = platform_get_resource_byname(pdev, IORESOURCE_MEM,
                                           "vector_slave");
        msi->vector_base = devm_ioremap_resource(&pdev->dev, res);
@@ -256,6 +278,10 @@ static int altera_msi_probe(struct platform_device *pdev)
        }
 
        msi->vector_phy = res->start;
+#else
+       msi->vector_base = (void *)0xdeedbeef;
+       msi->vector_phy = 0xdeadbeef;
+#endif
 
        if (of_property_read_u32(np, "num-vectors", &msi->num_of_vectors)) {
                dev_err(&pdev->dev, "failed to parse the number of vectors\n");
@@ -276,6 +302,8 @@ static int altera_msi_probe(struct platform_device *pdev)
        irq_set_chained_handler_and_data(msi->irq, altera_msi_isr, msi);
        platform_set_drvdata(pdev, msi);
 
+       printk("%s: res=%pr irq=%d ret=%d\n", __func__, res, msi->irq, ret);
+
        return 0;
 
 err:



Here are the relevant DT nodes:

		msi0: msi at 2e080 {
			compatible = "altr,msi-1.0";
			reg = <0x2e080 0x40>;
			reg-names = "csr";
			interrupt-parent = <&irq0>;
			interrupts = <55 IRQ_TYPE_LEVEL_HIGH>;
			msi-controller;
			num-vectors = <32>;
		};

		pcie at 50000000 {
			compatible = "sigma,smp8759-pcie";
			reg = <0x50000000 0x8000000>;
			device_type = "pci";
			bus-range = <0x0 0x7f>;
			#size-cells = <2>;
			#address-cells = <3>;
			#interrupt-cells = <1>;
				/* BUS_ADDRESS(3)  CPU_PHYSICAL(1)  SIZE(2) */
			ranges = <0x02000000 0x0 0x8000000  0x58000000  0x0 0x8000000>;
			msi-parent = <&msi0>;
		};



Here are the relevant boot-time logs I see:

[    0.392199] altera_msi_probe: res=[mem 0x0002e080-0x0002e0bf flags 0x200] irq=22 ret=0
...
[    0.993868] OF: PCI: host bridge /soc/pcie at 50000000 ranges:
[    0.999582] OF: PCI: Parsing ranges property...
[    1.004250] OF: PCI:   MEM 0x58000000..0x5fffffff -> 0x08000000
[    1.011770] pci_tango 50000000.pcie: ECAM at [mem 0x50000000-0x57ffffff] for [bus 00-7f]
[    1.020190] pci_tango 50000000.pcie: PCI host bridge to bus 0000:00
[    1.026604] pci_bus 0000:00: root bus resource [bus 00-7f]
[    1.032226] pci_bus 0000:00: root bus resource [mem 0x58000000-0x5fffffff] (bus address [0x08000000-0x0fffffff])
[    1.042553] pci_bus 0000:00: scanning bus
[    1.046708] pci 0000:00:00.0: [1105:0024] type 01 class 0x048000
[    1.052861] pci 0000:00:00.0: calling tango_pcie_fixup_class+0x0/0x10
[    1.059441] tango_config_write: bus=0 where=16 size=4 val=0xffffffff
[    1.065924] tango_config_write: bus=0 where=16 size=4 val=0x4
[    1.071797] tango_config_write: bus=0 where=20 size=4 val=0xffffffff
[    1.078278] tango_config_write: bus=0 where=20 size=4 val=0x0
[    1.084155] pci 0000:00:00.0: reg 0x10: [mem 0x00000000-0x00ffffff 64bit]
[    1.091074] tango_config_write: bus=0 where=56 size=4 val=0xfffff800
[    1.097554] tango_config_write: bus=0 where=56 size=4 val=0x0
[    1.103445] pci 0000:00:00.0: calling pci_fixup_ide_bases+0x0/0x40
[    1.109765] tango_config_write: bus=0 where=82 size=2 val=0x84
[    1.115744] pci 0000:00:00.0: supports D1 D2
[    1.120130] pci 0000:00:00.0: PME# supported from D0 D1 D2 D3hot
[    1.126261] tango_config_write: bus=0 where=124 size=2 val=0xe008
[    1.132479] pci 0000:00:00.0: PME# disabled
[    1.136780] tango_config_write: bus=0 where=2096 size=4 val=0x10000000
[    1.143435] tango_config_write: bus=0 where=2064 size=4 val=0x0
[    1.149477] tango_config_write: bus=0 where=2052 size=4 val=0x0
[    1.155658] pci_bus 0000:00: fixups for bus
[    1.159966] tango_config_write: bus=0 where=62 size=2 val=0x21
[    1.165926] tango_config_write: bus=0 where=4 size=2 val=0x140
[    1.171884] tango_config_write: bus=0 where=12 size=1 val=0x10
[    1.177841] PCI: bus0: Fast back to back transfers disabled
[    1.183539] pci 0000:00:00.0: scanning [bus 00-00] behind bridge, pass 0
[    1.190372] pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
[    1.198513] tango_config_write: bus=0 where=62 size=2 val=0x1
[    1.204384] tango_config_write: bus=0 where=24 size=4 val=0x0
[    1.210252] tango_config_write: bus=0 where=62 size=2 val=0x1
[    1.216122] pci 0000:00:00.0: scanning [bus 00-00] behind bridge, pass 1
[    1.222951] tango_config_write: bus=0 where=62 size=2 val=0x1
[    1.228819] tango_config_write: bus=0 where=6 size=2 val=0xffff
[    1.234940] pci_bus 0000:01: busn_res: can not insert [bus 01-ff] under [bus 00-7f] (conflicts with (null) [bus 00-7f])
[    1.245879] tango_config_write: bus=0 where=24 size=4 val=0xff0100
[    1.252187] pci_bus 0000:01: scanning bus
[    1.256355] pci 0000:01:00.0: [1912:0014] type 00 class 0x0c0330
[    1.262509] tango_config_write: bus=1 where=16 size=4 val=0xffffffff
[    1.268994] tango_config_write: bus=1 where=16 size=4 val=0x4
[    1.274868] tango_config_write: bus=1 where=20 size=4 val=0xffffffff
[    1.281353] tango_config_write: bus=1 where=20 size=4 val=0x0
[    1.287227] pci 0000:01:00.0: reg 0x10: [mem 0x00000000-0x00001fff 64bit]
[    1.294154] tango_config_write: bus=1 where=24 size=4 val=0xffffffff
[    1.300638] tango_config_write: bus=1 where=24 size=4 val=0x0
[    1.306513] tango_config_write: bus=1 where=28 size=4 val=0xffffffff
[    1.312996] tango_config_write: bus=1 where=28 size=4 val=0x0
[    1.318870] tango_config_write: bus=1 where=32 size=4 val=0xffffffff
[    1.325352] tango_config_write: bus=1 where=32 size=4 val=0x0
[    1.331226] tango_config_write: bus=1 where=36 size=4 val=0xffffffff
[    1.337708] tango_config_write: bus=1 where=36 size=4 val=0x0
[    1.343582] tango_config_write: bus=1 where=48 size=4 val=0xfffff800
[    1.350065] tango_config_write: bus=1 where=48 size=4 val=0x0
[    1.355953] pci 0000:01:00.0: calling pci_fixup_ide_bases+0x0/0x40
[    1.362293] tango_config_write: bus=1 where=114 size=2 val=0x86
[    1.368352] tango_config_write: bus=1 where=146 size=2 val=0x7
[    1.374370] pci 0000:01:00.0: PME# supported from D0 D3hot D3cold
[    1.380591] tango_config_write: bus=1 where=84 size=2 val=0x8008
[    1.386723] pci 0000:01:00.0: PME# disabled
[    1.391041] tango_config_write: bus=1 where=272 size=4 val=0x0
[    1.396999] tango_config_write: bus=1 where=260 size=4 val=0x0
[    1.403081] tango_config_write: bus=1 where=176 size=2 val=0x0
[    1.409043] tango_config_write: bus=0 where=144 size=2 val=0x8
[    1.415001] tango_config_write: bus=0 where=144 size=2 val=0x28
[    1.429675] pci_bus 0000:01: fixups for bus
[    1.433978] tango_config_write: bus=1 where=4 size=2 val=0x140
[    1.439937] tango_config_write: bus=1 where=12 size=1 val=0x10
[    1.445893] PCI: bus1: Fast back to back transfers disabled
[    1.451588] pci_bus 0000:01: bus scan returning with max=01
[    1.457285] pci_bus 0000:01: busn_res: [bus 01-ff] end is updated to 01
[    1.464027] tango_config_write: bus=0 where=26 size=1 val=0x1
[    1.469896] tango_config_write: bus=0 where=62 size=2 val=0x1
[    1.475764] pci_bus 0000:00: bus scan returning with max=01
[    1.481460] pci 0000:00:00.0: fixup irq: got 0
[    1.486018] pci 0000:00:00.0: assigning IRQ 00
[    1.490574] tango_config_write: bus=0 where=60 size=1 val=0x0
[    1.496467] pci 0000:01:00.0: fixup irq: got 20
[    1.501113] pci 0000:01:00.0: assigning IRQ 20
[    1.505670] tango_config_write: bus=1 where=60 size=1 val=0x14
[    1.511630] tango_config_write: bus=0 where=28 size=2 val=0xe0f0
[    1.517760] tango_config_write: bus=0 where=28 size=2 val=0x0
[    1.523628] tango_config_write: bus=0 where=36 size=4 val=0xffe0fff0
[    1.530107] tango_config_write: bus=0 where=36 size=4 val=0x0
[    1.535992] pci 0000:00:00.0: BAR 0: assigned [mem 0x58000000-0x58ffffff 64bit]
[    1.543436] tango_config_write: bus=0 where=4 size=2 val=0x140
[    1.549391] tango_config_write: bus=0 where=16 size=4 val=0x8000004
[    1.555782] tango_config_write: bus=0 where=20 size=4 val=0x0
[    1.561654] tango_config_write: bus=0 where=4 size=2 val=0x140
[    1.567612] pci 0000:00:00.0: BAR 8: assigned [mem 0x59000000-0x590fffff]
[    1.574534] pci 0000:01:00.0: BAR 0: assigned [mem 0x59000000-0x59001fff 64bit]
[    1.581977] tango_config_write: bus=1 where=4 size=2 val=0x140
[    1.587932] tango_config_write: bus=1 where=16 size=4 val=0x9000004
[    1.594326] tango_config_write: bus=1 where=20 size=4 val=0x0
[    1.600196] tango_config_write: bus=1 where=4 size=2 val=0x140
[    1.606153] pci 0000:00:00.0: PCI bridge to [bus 01]
[    1.611236] tango_config_write: bus=0 where=48 size=4 val=0xffff
[    1.617365] tango_config_write: bus=0 where=28 size=2 val=0xf0
[    1.623319] tango_config_write: bus=0 where=48 size=4 val=0x0
[    1.629188] pci 0000:00:00.0:   bridge window [mem 0x59000000-0x590fffff]
[    1.636105] tango_config_write: bus=0 where=32 size=4 val=0x9000900
[    1.642496] tango_config_write: bus=0 where=44 size=4 val=0x0
[    1.648363] tango_config_write: bus=0 where=36 size=4 val=0xfff0
[    1.654491] tango_config_write: bus=0 where=40 size=4 val=0x0
[    1.660358] tango_config_write: bus=0 where=44 size=4 val=0x0
[    1.666224] tango_config_write: bus=0 where=62 size=2 val=0x1
[    1.672142] pcieport 0000:00:00.0: enabling device (0140 -> 0142)
[    1.678364] tango_config_write: bus=0 where=4 size=2 val=0x142
[    1.684325] tango_config_write: bus=0 where=136 size=2 val=0x2810
[    1.690549] pcieport 0000:00:00.0: enabling bus mastering
[    1.696068] tango_config_write: bus=0 where=4 size=2 val=0x146
[    1.702028] tango_config_write: bus=0 where=82 size=2 val=0x84
[    1.708045] msi_readl: reg=32 val=0xffffffff
[    1.712429] msi_writel: reg=32 val=0xffffffff
[    1.716907] altera-msi 2e080.msi: msi#0 address_hi 0x0 address_lo 0x802e07c
[    1.724001] tango_config_write: bus=0 where=82 size=2 val=0x84
[    1.729957] tango_config_write: bus=0 where=84 size=4 val=0x802e07c
[    1.736348] tango_config_write: bus=0 where=88 size=4 val=0x0
[    1.742215] tango_config_write: bus=0 where=92 size=2 val=0x0
[    1.748096] tango_config_write: bus=0 where=4 size=2 val=0x546
[    1.754052] tango_config_write: bus=0 where=82 size=2 val=0x85
[    1.760131] altera-msi 2e080.msi: msi#0 address_hi 0x0 address_lo 0x802e07c
[    1.767214] tango_config_write: bus=0 where=82 size=2 val=0x85
[    1.773160] tango_config_write: bus=0 where=84 size=4 val=0x802e07c
[    1.779542] tango_config_write: bus=0 where=88 size=4 val=0x0
[    1.785399] tango_config_write: bus=0 where=92 size=2 val=0x0
[    1.791303] tango_config_write: bus=0 where=138 size=2 val=0x20
[    1.797351] tango_config_write: bus=0 where=156 size=2 val=0x0
[    1.803308] tango_config_write: bus=0 where=2096 size=4 val=0x10000000
[    1.809966] tango_config_write: bus=0 where=2064 size=4 val=0x0
[    1.816009] tango_config_write: bus=0 where=2052 size=4 val=0x0
[    1.822059] tango_config_write: bus=0 where=136 size=2 val=0x281f
[    1.828278] tango_config_write: bus=0 where=2092 size=4 val=0x7
[    1.834324] aer 0000:00:00.0:pcie002: service driver aer loaded
[    1.840481] pci 0000:01:00.0: calling quirk_usb_early_handoff+0x0/0x7e0
[    1.847238] pci 0000:01:00.0: enabling device (0140 -> 0142)
[    1.853023] tango_config_write: bus=1 where=4 size=2 val=0x142
[    1.858989] quirk_usb_handoff_xhci: ioremap(0x59000000, 8192)
[    1.864873] xhci_find_next_ext_cap: offset=0x500
[    1.869606] val = 0x1000401
...
[    1.983798] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    1.990375] ehci-pci: EHCI PCI platform driver
[    1.995024] xhci_hcd 0000:01:00.0: enabling bus mastering
[    2.000472] tango_config_write: bus=1 where=4 size=2 val=0x146
[    2.006355] xhci_hcd 0000:01:00.0: xHCI Host Controller
[    2.011635] xhci_hcd 0000:01:00.0: new USB bus registered, assigned bus number 1
[    2.024640] xhci_find_next_ext_cap: offset=0x500
[    2.029291] val = 0x1000401
[    2.032106] xhci_find_next_ext_cap: offset=0x510
[    2.036758] val = 0x3000502
[    2.039561] xhci_find_next_ext_cap: offset=0x510
[    2.044210] val = 0x3000502
[    2.047020] xhci_find_next_ext_cap: offset=0x524
[    2.051666] val = 0x2000702
[    2.054476] xhci_find_next_ext_cap: offset=0x524
[    2.059122] val = 0x2000702
[    2.061932] xhci_find_next_ext_cap: offset=0x540
[    2.066577] val = 0x4c0
[    2.069029] xhci_find_next_ext_cap: offset=0x550
[    2.073674] val = 0xa
[    2.075958] xhci_find_next_ext_cap: offset=0x510
[    2.080604] val = 0x3000502
[    2.083414] xhci_find_next_ext_cap: offset=0x524
[    2.088059] val = 0x2000702
[    2.090880] xhci_hcd 0000:01:00.0: hcc params 0x014051cf hci version 0x100 quirks 0x00000010
[    2.099377] xhci_hcd 0000:01:00.0: enabling Mem-Wr-Inval
[    2.104722] tango_config_write: bus=1 where=4 size=2 val=0x156
[    2.110602] tango_config_write: bus=1 where=146 size=2 val=0x7
[    2.116538] msi_readl: reg=32 val=0xffffffff
[    2.120837] msi_writel: reg=32 val=0xffffffff
[    2.125265] msi_readl: reg=32 val=0xffffffff
[    2.129563] msi_writel: reg=32 val=0xffffffff
[    2.133976] msi_readl: reg=32 val=0xffffffff
[    2.138273] msi_writel: reg=32 val=0xffffffff
[    2.142663] altera-msi 2e080.msi: msi#1 address_hi 0x0 address_lo 0x802e07c
[    2.149672] altera-msi 2e080.msi: msi#2 address_hi 0x0 address_lo 0x802e07c
[    2.156679] altera-msi 2e080.msi: msi#3 address_hi 0x0 address_lo 0x802e07c
[    2.163688] tango_config_write: bus=1 where=146 size=2 val=0xc007
[    2.169857] tango_config_write: bus=1 where=4 size=2 val=0x546
[    2.175731] tango_config_write: bus=1 where=146 size=2 val=0x8007
[    2.181869] altera-msi 2e080.msi: msi#1 address_hi 0x0 address_lo 0x802e07c
[    2.188911] altera-msi 2e080.msi: msi#2 address_hi 0x0 address_lo 0x802e07c
[    2.195942] altera-msi 2e080.msi: msi#3 address_hi 0x0 address_lo 0x802e07c
[    2.203146] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[    2.209982] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    2.217251] usb usb1: Product: xHCI Host Controller
[    2.222160] usb usb1: Manufacturer: Linux 4.9.7-1-rc2 xhci-hcd
[    2.228028] usb usb1: SerialNumber: 0000:01:00.0
[    2.233153] hub 1-0:1.0: USB hub found
[    2.236974] hub 1-0:1.0: 4 ports detected
[    2.241291] xhci_hcd 0000:01:00.0: xHCI Host Controller
[    2.246566] xhci_hcd 0000:01:00.0: new USB bus registered, assigned bus number 2
[    2.300870] xhci_hcd 0000:01:00.0: Host took too long to start, waited 16000 microseconds.
[    2.309196] xhci_hcd 0000:01:00.0: startup error -19
[    2.314197] xhci_hcd 0000:01:00.0: USB bus 2 deregistered
[    2.319648] xhci_hcd 0000:01:00.0: remove, state 1
[    2.324481] usb usb1: USB disconnect, device number 1
[    2.329944] tango_config_write: bus=1 where=146 size=2 val=0x7
[    2.335827] tango_config_write: bus=1 where=4 size=2 val=0x146
[    2.341714] msi_readl: reg=32 val=0xffffffff
[    2.346033] msi_writel: reg=32 val=0xfffffffd
[    2.350451] msi_readl: reg=32 val=0xfffffffd
[    2.354751] msi_writel: reg=32 val=0xfffffff9
[    2.359160] msi_readl: reg=32 val=0xfffffff9
[    2.363458] msi_writel: reg=32 val=0xfffffff1
[    2.367940] xhci_hcd 0000:01:00.0: USB bus 1 deregistered
[    2.373407] tango_config_write: bus=1 where=4 size=2 val=0x142
[    2.379518] usbcore: registered new interface driver usb-storage
[    2.386612] tangox-wdt 1fd00.watchdog: SMP86xx/SMP87xx watchdog registered
[    2.394077] sdhci: Secure Digital Host Controller Interface driver
[    2.400317] sdhci: Copyright(c) Pierre Ossman
[    2.404716] sdhci-pltfm: SDHCI platform and OF driver helper
[    2.410751] NET: Registered protocol family 17
[    2.415307] Registering SWP/SWPB emulation handler
[    2.435762] Freeing unused kernel memory: 10240K (c0600000 - c1000000)


# /usr/sbin/lspci -v
00:00.0 PCI bridge: Sigma Designs, Inc. Device 0024 (rev 01) (prog-if 00 [Normal decode])
        Flags: bus master, fast devsel, latency 0
        Memory at 58000000 (64-bit, non-prefetchable) [size=16M]
        Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
        I/O behind bridge: 00000000-00000fff
        Memory behind bridge: 09000000-090fffff
        Prefetchable memory behind bridge: 00000000-000fffff
        Capabilities: [50] MSI: Enable+ Count=1/4 Maskable- 64bit+
        Capabilities: [78] Power Management version 3
        Capabilities: [80] Express Root Port (Slot-), MSI 03
        Capabilities: [100] Virtual Channel
        Capabilities: [800] Advanced Error Reporting
        Kernel driver in use: pcieport

01:00.0 USB controller: Renesas Technology Corp. uPD720201 USB 3.0 Host Controller (rev 03) (prog-if 30 [XHCI])
        Flags: fast devsel, IRQ 20
        Memory at 59000000 (64-bit, non-prefetchable) [size=8K]
        Capabilities: [50] Power Management version 3
        Capabilities: [70] MSI: Enable- Count=1/8 Maskable- 64bit+
        Capabilities: [90] MSI-X: Enable- Count=8 Masked-
        Capabilities: [a0] Express Endpoint, MSI 00
        Capabilities: [100] Advanced Error Reporting
        Capabilities: [150] Latency Tolerance Reporting



# cat /proc/interrupts 
            CPU0       CPU1       
  19:       2728        631     GIC-0  29 Edge      twd
  20:        471          0      irq0   1 Level     serial
  25:          0          0  Altera PCIe MSI   0 Edge      aerdrv
IPI0:          0          0  CPU wakeup interrupts
IPI1:          0          0  Timer broadcast interrupts
IPI2:        414       1190  Rescheduling interrupts
IPI3:          0         34  Function call interrupts
IPI4:          0          0  CPU stop interrupts
IPI5:          1          0  IRQ work interrupts
IPI6:          0          0  completion interrupts
 Err:          0


altera_msi_probe reported virq=22 for my platform interrupt 55,
thus no error, right? I expected interrupt 55 to appear in the
/proc/interrupts output. Is it hidden because of the chaining?

Nothing happens when I plug a USB Flash drive, but I suppose
that is expected given:

[    2.241291] xhci_hcd 0000:01:00.0: xHCI Host Controller
[    2.246566] xhci_hcd 0000:01:00.0: new USB bus registered, assigned bus number 2
[    2.300870] xhci_hcd 0000:01:00.0: Host took too long to start, waited 16000 microseconds.
[    2.309196] xhci_hcd 0000:01:00.0: startup error -19
[    2.314197] xhci_hcd 0000:01:00.0: USB bus 2 deregistered
[    2.319648] xhci_hcd 0000:01:00.0: remove, state 1
[    2.324481] usb usb1: USB disconnect, device number 1


I suppose I need to figure out why.
Did anyone spot something obviously wrong?

Regards.



More information about the linux-arm-kernel mailing list