From: thomas.petazzoni@free-electrons.com (Thomas Petazzoni)
To: linux-arm-kernel@lists.infradead.org
Subject: Intel I350 mini-PCIe card (igb) on Mirabox (mvebu / Armada 370)
Date: Sun, 6 Apr 2014 21:11:57 +0200 [thread overview]
Message-ID: <20140406211157.4c99a178@skate> (raw)
In-Reply-To: <20140406185833.GI29787@1wt.eu>
Dear Willy Tarreau,
On Sun, 6 Apr 2014 20:58:33 +0200, Willy Tarreau wrote:
> On Fri, Apr 04, 2014 at 02:19:44PM +0100, Neil Greatorex wrote:
> > With this patch, I can get one port on the card working. With both ports
> > enabled, I still get an OOPS, so some further work is needed.
>
> Concerning this point, here's an update on my side. I found where the crash
> happens, but I don't exactly understand why, I suspect that an area is not
> correctly mapped :
>
> root at xpgp:~# insmod /tmp/igb.ko
> igb: Intel(R) Gigabit Ethernet Network Driver - version 5.0.5-k
> igb: Copyright (c) 2007-2013 Intel Corporation.
> PCI: enabling device 0000:00:09.0 (0140 -> 0143)
> PCI: enabling device 0000:02:00.0 (0140 -> 0142)
> request_region(pdev=edb21000, 00000049)
> hw_addr = pci_iomap(pdev=edb21000, 0, 0) = f0300000
> mem_start=e0000000 mem_end=e007ffff
> hw_addr = f0300000
> hw_addr=f0300000
> igb 0000:02:00.0: added PHC on eth4
> igb 0000:02:00.0: Intel(R) Gigabit Ethernet Network Connection
> igb 0000:02:00.0: eth4: (PCIe:5.0Gb/s:Width x1) 00:30:18:a6:6c:6a
> igb 0000:02:00.0: eth4: PBA No: FFFFFF-0FF
> igb 0000:02:00.0: Using MSI-X interrupts. 4 rx queue(s), 4 tx queue(s)
> PCI: enabling device 0000:02:00.1 (0140 -> 0142)
> request_region(pdev=ed99d800, 00000049)
> hw_addr = pci_iomap(pdev=ed99d800, 0, 0) = f0400000
> mem_start=e0100000 mem_end=e017ffff
> hw_addr = f0400000
> hw_addr=f0400000
> Unhandled fault: external abort on non-linefetch (0x1008) at 0xf0400018
> Internal error: : 1008 [#1] SMP THUMB2
>
> in e1000_82575.o:igb_get_invariants_82575() :
> 123c: f884 33b4 strb.w r3, [r4, #948]
> 1240: f884 33b9 strb.w r3, [r4, #953]
> 1244: f8c4 6300 str.w r6, [r4, #768]
> 1248: 6863 ldr r3, [r4, #4]
> => 124a: f8d3 8018 ldr.w r8, [r3, #24]
>
> in e1000_82575.c:igb_get_invariants_82575() :
> hw->phy.media_type = e1000_media_type_copper;
> dev_spec->sgmii_active = false;
> dev_spec->module_plugged = false;
>
> here=> ctrl_ext = rd32(E1000_CTRL_EXT);
>
> according to e1000_hw.h:
>
> #define E1000_CTRL_EXT 0x00018 /* Extended Device Control - RW */
>
> according to e1000_regs.h:
>
> #define rd32(reg) (readl(hw->hw_addr + reg))
>
> ===> ctrl_ext = readl((hw->hw_addr = 0xf0400000) + (reg = 0x18))
>
> As you can see, the sequence is exactly the same for both ports. The
> first one has no problem performing the readl(), but the second one
> cannot. Both of them got the memory address returned by a call to
> pci_iomap(dev, 0, 0). I could verify that the pci_resource_len() for
> both is 524288 (0x80000).
>
> The last "hwaddr=f0400000" is printed just before calling rd32() and
> shows that it was still OK there. Since the resource flags are 0x40200,
> we only have IORESOURCE_MEM so pci_iomap() calls ioremap_nocache().
>
> Thus I suspect something is not behaving correctly in the code which
> configures the emulated bridge and/or the memory areas, resulting in
> the second port not being correctly mapped, thus causing the crash.
>
> But that's the deepest I can go unfortunately, I got lost after that.
Thanks a lot again for all this investigation. I'm hoping to be able to
look at this PCIe issue this week.
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
next prev parent reply other threads:[~2014-04-06 19:11 UTC|newest]
Thread overview: 69+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-25 20:07 Intel I350 mini-PCIe card (igb) on Mirabox (mvebu / Armada 370) Neil Greatorex
2014-03-25 20:20 ` Thomas Petazzoni
2014-03-25 21:03 ` Willy Tarreau
2014-03-25 20:22 ` Jason Gunthorpe
2014-03-25 20:36 ` Thomas Petazzoni
2014-03-25 21:12 ` Jason Gunthorpe
2014-03-25 21:23 ` Thomas Petazzoni
2014-03-25 22:03 ` Neil Greatorex
2014-03-25 22:24 ` Jason Gunthorpe
2014-03-25 22:35 ` Jason Gunthorpe
2014-03-26 19:31 ` Neil Greatorex
2014-03-26 20:12 ` Jason Gunthorpe
2014-03-26 20:34 ` Neil Greatorex
2014-03-26 21:42 ` Jason Gunthorpe
2014-03-26 21:52 ` Thomas Petazzoni
2014-03-27 0:29 ` Neil Greatorex
2014-03-27 4:40 ` Jason Gunthorpe
2014-03-28 1:03 ` Neil Greatorex
2014-03-28 2:04 ` Jason Gunthorpe
2014-04-04 13:19 ` Neil Greatorex
2014-04-05 17:32 ` Willy Tarreau
2014-04-05 17:34 ` Thomas Petazzoni
2014-04-05 18:04 ` Willy Tarreau
2014-04-05 18:55 ` Neil Greatorex
2014-04-05 19:03 ` Willy Tarreau
2014-04-05 19:00 ` Neil Greatorex
2014-04-06 15:34 ` Neil Greatorex
2014-04-06 17:43 ` Willy Tarreau
2014-04-08 15:13 ` Thomas Petazzoni
2014-04-08 15:40 ` Thomas Petazzoni
2014-04-08 15:55 ` Thomas Petazzoni
2014-04-08 16:02 ` Matthew Minter
2014-04-08 17:14 ` Jason Gunthorpe
2014-04-08 17:53 ` Willy Tarreau
2014-04-08 18:08 ` Jason Gunthorpe
2014-04-08 18:15 ` Thomas Petazzoni
2014-04-08 18:40 ` Jason Gunthorpe
2014-04-08 19:15 ` Willy Tarreau
2014-04-08 19:21 ` Jason Gunthorpe
2014-04-08 20:17 ` Matthew Minter
2014-04-08 21:50 ` Thomas Petazzoni
2014-04-08 20:19 ` Neil Greatorex
2014-04-08 20:43 ` Willy Tarreau
2014-04-08 18:01 ` Thomas Petazzoni
2014-04-08 18:22 ` Jason Gunthorpe
2014-04-08 18:32 ` Thomas Petazzoni
2014-04-08 15:53 ` Willy Tarreau
2014-04-08 16:00 ` Thomas Petazzoni
2014-04-08 16:05 ` Willy Tarreau
2014-04-06 18:58 ` Willy Tarreau
2014-04-06 19:11 ` Thomas Petazzoni [this message]
2014-04-06 21:57 ` Neil Greatorex
2014-04-06 22:04 ` Willy Tarreau
2014-04-06 22:16 ` Thomas Petazzoni
2014-04-07 0:50 ` Neil Greatorex
2014-04-07 17:41 ` Jason Gunthorpe
2014-04-07 19:41 ` Neil Greatorex
2014-04-07 20:48 ` Jason Gunthorpe
2014-04-07 21:58 ` Neil Greatorex
2014-04-08 6:28 ` Willy Tarreau
2014-04-08 6:40 ` Willy Tarreau
2014-04-08 10:53 ` Matthew Minter
2014-04-08 12:31 ` Matthew Minter
2014-04-08 12:36 ` Willy Tarreau
2014-04-08 14:43 ` Thomas Petazzoni
2014-04-08 14:52 ` Matthew Minter
2014-04-08 14:53 ` Willy Tarreau
2014-04-08 15:25 ` Thomas Petazzoni
2014-04-08 17:56 ` Willy Tarreau
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140406211157.4c99a178@skate \
--to=thomas.petazzoni@free-electrons.com \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).