All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kumar Gala <galak@kernel.crashing.org>
To: Davide Viti <zinosat@tiscali.it>
Cc: linuxppc-dev@lists.ozlabs.org
Subject: Re: PCI device not working
Date: Wed, 26 Sep 2012 21:30:26 -0500	[thread overview]
Message-ID: <85B954F4-2C2A-4D2B-8D40-01101845337B@kernel.crashing.org> (raw)
In-Reply-To: <CAKpAL0mZ0zaqtJgo3NcJgpjajGV1CKnrUugR65nEDKuryHOr6A@mail.gmail.com>


On Sep 26, 2012, at 10:25 AM, Davide Viti wrote:

> Hi,
> as you've suggested, I've added a printout inside =
fsl_pcie_check_link() which is called twice and returns 0 both times.
> Here follows the PCI-related part of dmesg with some extra printouts =
enabled.
>=20
> thank you,
> Davide

So its odd that scanning of the second bus didn't report any devices.  =
Do you have code that implements ppc_md.pci_exclude_device ?

If so, what does it do?

You might also want to put some code in the indirect PCI ops =
(indirect.c) to see what actual values you are getting from various =
indirect_read_config() calls.

- k

>=20
> ...
> Adding PCI host bridge /pcie@ffe09000
> *** [/pcie@ffe09000] fsl_pcie_check_link() val=3D0x16 =3D> return 0
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> Found FSL PCI host bridge at 0x00000000ffe09000. Firmware bus number: =
0->255
>  ->Hose at 0xc05a2000, cfg_addr=3D0xff7fd000,cfg_data=3D0xff7fd004
> PCI host bridge /pcie@ffe09000  ranges:
>  MEM 0x00000000a0000000..0x00000000afffffff -> 0x00000000a0000000=20
>   IO 0x00000000ffc10000..0x00000000ffc1ffff -> 0x0000000000000000
> PCI memory map start 0x00000000ffe09000, size 0x0000000000001000
> PCI MEM resource start 0x00000000a0000000, size 0x0000000010000000.
> PCI IO resource start 0x0000000000000000, size 0x0000000000010000, phy =
base 0x00000000ffc10000.
> /pcie@ffe09000: PCICSRBAR @ 0xfff00000
>=20
> Adding PCI host bridge /pcie@ffe0a000
> *** [/pcie@ffe0a000] fsl_pcie_check_link() val=3D0x16 =3D> return 0
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> Found FSL PCI host bridge at 0x00000000ffe0a000. Firmware bus number: =
0->255
>  ->Hose at 0xc05a20e0, cfg_addr=3D0xff7eb000,cfg_data=3D0xff7eb004
> PCI host bridge /pcie@ffe0a000  ranges:
>  MEM 0x00000000b0000000..0x00000000bfffffff -> 0x00000000b0000000=20
>   IO 0x00000000ffc00000..0x00000000ffc0ffff -> 0x0000000000000000
> PCI memory map start 0x00000000ffe0a000, size 0x0000000000001000
> PCI MEM resource start 0x00000000b0000000, size 0x0000000010000000.
> PCI IO resource start 0x0000000000000000, size 0x0000000000010000, phy =
base 0x00000000ffc00000.
> /pcie@ffe0a000: PCICSRBAR @ 0xfff00000
>=20
> ...
>=20
> PCI: Probing PCI hardware
> PCI: Scanning PHB /pcie@ffe09000
> PCI: PHB IO resource    =3D 00000000ff7ed000-00000000ff7fcfff [100]
> PCI: PHB MEM resource 0 =3D 00000000a0000000-00000000afffffff [200]
> PCI: PHB MEM offset     =3D 0000000000000000
> PCI: PHB IO  offset     =3D ff7ed000
>     probe mode: 0
> pci_bus 0000:00: scanning bus
> pci 0000:00:00.0: found [1957:0100] class 000b20 header type 01
> pci 0000:00:00.0: ignoring class b20 (doesn't match header type 01)
> pci 0000:00:00.0: calling fixup_hide_host_resource_fsl+0x0/0x54
> pci 0000:00:00.0: calling pcibios_fixup_resources+0x0/0x19c
> pci 0000:00:00.0: calling quirk_fsl_pcie_header+0x0/0x50
> pci 0000:00:00.0: calling quirk_resource_alignment+0x0/0x1a8
> pci 0000:00:00.0: supports D1 D2
> pci 0000:00:00.0: PME# supported from D0 D1 D2 D3hot D3cold
> pci 0000:00:00.0: PME# disabled
> pci_bus 0000:00: fixups for bus
> PCI: Fixup bus devices 0 (PHB)
> pci_busdev_to_OF_node(0,0x0)
>  parent is /pcie@ffe09000
> *** scan_OF_for_pci_dev() reg[0]: 0x0  psize:0x14 devfn:0x0
>  result is /pcie@ffe09000/pcie@0
> PCI: Try to map irq for 0000:00:00.0...
> pci_busdev_to_OF_node(0,0x0)
>  parent is /pcie@ffe09000
> *** scan_OF_for_pci_dev() reg[0]: 0x0  psize:0x14 devfn:0x0
>  result is /pcie@ffe09000/pcie@0
> pci 0000:00:00.0: scanning [bus 01-01] behind bridge, pass 0
> pci 0000:00:00.0: scanning [bus 00-00] behind bridge, pass 1
> pci_bus 0000:01: scanning bus
> pci 0000:01:00.0: found [1b65:abba] class 000280 header type 00
> pci 0000:01:00.0: reg 10: [mem 0xa0000000-0xa00003ff]
> pci 0000:01:00.0: reg 14: [mem 0xa0010000-0xa001ffff]
> pci 0000:01:00.0: calling pcibios_fixup_resources+0x0/0x19c
> PCI:0000:01:00.0 Resource 0 00000000a0000000-00000000a00003ff [40200] =
fixup...
> PCI:0000:01:00.0            00000000a0000000-00000000a00003ff
> PCI:0000:01:00.0 Resource 1 00000000a0010000-00000000a001ffff [40200] =
fixup...
> PCI:0000:01:00.0            00000000a0010000-00000000a001ffff
> pci 0000:01:00.0: calling quirk_resource_alignment+0x0/0x1a8
> pci_bus 0000:01: fixups for bus
> pci 0000:00:00.0: PCI bridge to [bus 01-ff]
> pci 0000:00:00.0:   bridge window [io  0x0000-0x0000] (disabled)
> pci 0000:00:00.0:   bridge window [mem 0xa0000000-0xa00fffff]
> pci 0000:00:00.0:   bridge window [mem 0x10000000-0x000fffff pref] =
(disabled)
> PCI:0000:00:00.0 Bus rsrc 1 00000000a0000000-00000000a00fffff [200] =
fixup...
> PCI:0000:00:00.0            00000000a0000000-00000000a00fffff
> PCI: Fixup bus devices 1 (0000:00:00.0)
> pci_busdev_to_OF_node(1,0x0)
> *** scan_OF_for_pci_dev() reg[0]: 0x0  psize:0x14 devfn:0x0
>  parent is /pcie@ffe09000/pcie@0
>  result is <NULL>
> PCI: Try to map irq for 0000:01:00.0...
> pci_busdev_to_OF_node(1,0x0)
> *** scan_OF_for_pci_dev() reg[0]: 0x0  psize:0x14 devfn:0x0
>  parent is /pcie@ffe09000/pcie@0
>  result is <NULL>
> pci_busdev_to_OF_node(0,0x0)
>  parent is /pcie@ffe09000
> *** scan_OF_for_pci_dev() reg[0]: 0x0  psize:0x14 devfn:0x0
>  result is /pcie@ffe09000/pcie@0
>  Got one, spec 1 cells (0x00000001 0xffffffff...) on =
/soc@ffe00000/pic@40000
>   alloc irq_desc for 16 on node 0
>   alloc kstat_irqs on node 0
> irq: irq 1 on host /soc@ffe00000/pic@40000 mapped to virtual irq 16
>  Mapped to linux irq 16
> pci_bus 0000:01: bus scan returning with max=3D01
> pci_bus 0000:00: bus scan returning with max=3D01
> PCI: Scanning PHB /pcie@ffe0a000
> PCI: PHB IO resource    =3D 00000000ff7db000-00000000ff7eafff [100]
> PCI: PHB MEM resource 0 =3D 00000000b0000000-00000000bfffffff [200]
> PCI: PHB MEM offset     =3D 0000000000000000
> PCI: PHB IO  offset     =3D ff7db000
>     probe mode: 0
> pci_bus 0001:02: scanning bus
> pci 0001:02:00.0: found [1957:0100] class 000b20 header type 01
> pci 0001:02:00.0: ignoring class b20 (doesn't match header type 01)
> pci 0001:02:00.0: calling fixup_hide_host_resource_fsl+0x0/0x54
> pci 0001:02:00.0: calling pcibios_fixup_resources+0x0/0x19c
> pci 0001:02:00.0: calling quirk_fsl_pcie_header+0x0/0x50
> pci 0001:02:00.0: calling quirk_resource_alignment+0x0/0x1a8
> pci 0001:02:00.0: supports D1 D2
> pci 0001:02:00.0: PME# supported from D0 D1 D2 D3hot D3cold
> pci 0001:02:00.0: PME# disabled
> pci_bus 0001:02: fixups for bus
> PCI: Fixup bus devices 2 (PHB)
> pci_busdev_to_OF_node(2,0x0)
>  parent is /pcie@ffe0a000
> *** scan_OF_for_pci_dev() reg[0]: 0x0  psize:0x14 devfn:0x0
>  result is /pcie@ffe0a000/pcie@0
> PCI: Try to map irq for 0001:02:00.0...
> pci_busdev_to_OF_node(2,0x0)
>  parent is /pcie@ffe0a000
> *** scan_OF_for_pci_dev() reg[0]: 0x0  psize:0x14 devfn:0x0
>  result is /pcie@ffe0a000/pcie@0
> pci 0001:02:00.0: scanning [bus 01-01] behind bridge, pass 0
> pci 0001:02:00.0: bus configuration invalid, reconfiguring
> pci 0001:02:00.0: scanning [bus 00-00] behind bridge, pass 1
> pci_bus 0001:03: scanning bus
> pci_bus 0001:03: fixups for bus
> pci 0001:02:00.0: PCI bridge to [bus 03-ff]
> pci 0001:02:00.0:   bridge window [io  0x0000-0x0000] (disabled)
> pci 0001:02:00.0:   bridge window [mem 0xb0000000-0xb00fffff]
> pci 0001:02:00.0:   bridge window [mem 0x10000000-0x000fffff pref] =
(disabled)
> PCI:0001:02:00.0 Bus rsrc 1 00000000b0000000-00000000b00fffff [200] =
fixup...
> PCI:0001:02:00.0            00000000b0000000-00000000b00fffff
> PCI: Fixup bus devices 3 (0001:02:00.0)
> pci_bus 0001:03: bus scan returning with max=3D03
> pci_bus 0001:02: bus scan returning with max=3D03
> PCI->OF bus map (pci_bus_count=3D4):
> 0 -> 0
> 2 -> 0
> PCI: Allocating bus resources for 0000:00...
> PCI: PHB (bus 0) bridge rsrc 0: 00000000ff7ed000-00000000ff7fcfff =
[0x100], parent c04cd81c (PCI IO)
> PCI: PHB (bus 0) bridge rsrc 1: 00000000a0000000-00000000afffffff =
[0x200], parent c04cd800 (PCI mem)
> PCI: Allocating bus resources for 0000:01...
> PCI: 0000:00:00.0 (bus 1) bridge rsrc 0: =
00000000ff7ed000-00000000ff7fcfff [0x100], parent c05a204c =
(/pcie@ffe09000)
> PCI: 0000:00:00.0 (bus 1) bridge rsrc 1: =
00000000a0000000-00000000afffffff [0x200], parent c05a2068 =
(/pcie@ffe09000)
> PCI: Allocating bus resources for 0001:02...
> PCI: PHB (bus 2) bridge rsrc 0: 00000000ff7db000-00000000ff7eafff =
[0x100], parent c04cd81c (PCI IO)
> PCI: PHB (bus 2) bridge rsrc 1: 00000000b0000000-00000000bfffffff =
[0x200], parent c04cd800 (PCI mem)
> PCI: Allocating bus resources for 0001:03...
> PCI: 0001:02:00.0 (bus 3) bridge rsrc 0: =
00000000ff7db000-00000000ff7eafff [0x100], parent c05a212c =
(/pcie@ffe0a000)
> PCI: 0001:02:00.0 (bus 3) bridge rsrc 1: =
00000000b0000000-00000000bfffffff [0x200], parent c05a2148 =
(/pcie@ffe0a000)
> PCI: Allocating 0000:01:00.0: Resource 0: =
00000000a0000000..00000000a00003ff [40200]
> PCI: Allocating 0000:01:00.0: Resource 1: =
00000000a0010000..00000000a001ffff [40200]
> Reserving legacy ranges for domain 0000
> Candidate legacy IO: [io  0xff7ed000-0xff7edfff]
> PCI 0000:00 Cannot reserve Legacy IO [io  0xff7ed000-0xff7edfff]
> hose mem offset: 0000000000000000
> hose mem res: [mem 0xa0000000-0xafffffff]
> Reserving legacy ranges for domain 0001
> Candidate legacy IO: [io  0xff7db000-0xff7dbfff]
> PCI 0001:02 Cannot reserve Legacy IO [io  0xff7db000-0xff7dbfff]
> hose mem offset: 0000000000000000
> hose mem res: [mem 0xb0000000-0xbfffffff]
> PCI: Assigning unassigned resources...
> pci 0000:00:00.0: PCI bridge to [bus 01-01]
> pci 0000:00:00.0:   bridge window [io  0xff7ed000-0xff7fcfff]
> pci 0000:00:00.0:   bridge window [mem 0xa0000000-0xafffffff]
> pci 0000:00:00.0:   bridge window [mem pref disabled]
> pci 0000:00:00.0: enabling device (0106 -> 0107)
> pci 0001:02:00.0: PCI bridge to [bus 03-03]
> pci 0001:02:00.0:   bridge window [io  0xff7db000-0xff7eafff]
> pci 0001:02:00.0:   bridge window [mem 0xb0000000-0xbfffffff]
> pci 0001:02:00.0:   bridge window [mem pref disabled]
> pci 0001:02:00.0: enabling device (0106 -> 0107)
> pci_bus 0000:00: resource 0 [io  0xff7ed000-0xff7fcfff]
> pci_bus 0000:00: resource 1 [mem 0xa0000000-0xafffffff]
> pci_bus 0000:01: resource 0 [io  0xff7ed000-0xff7fcfff]
> pci_bus 0000:01: resource 1 [mem 0xa0000000-0xafffffff]
> pci_bus 0001:02: resource 0 [io  0xff7db000-0xff7eafff]
> pci_bus 0001:02: resource 1 [mem 0xb0000000-0xbfffffff]
> pci_bus 0001:03: resource 0 [io  0xff7db000-0xff7eafff]
> pci_bus 0001:03: resource 1 [mem 0xb0000000-0xbfffffff]
> bio: create slab <bio-0> at 0
> vgaarb: loaded
> SCSI subsystem initialized
> libata version 3.00 loaded.
> Freescale Elo / Elo Plus DMA driver
> Switching to clocksource timebase
> NET: Registered protocol family 2
>=20
> pci 0000:00:00.0: calling quirk_cardbus_legacy+0x0/0x50
> pci 0000:00:00.0: calling quirk_usb_early_handoff+0x0/0x6ac
> pci 0000:01:00.0: calling quirk_cardbus_legacy+0x0/0x50
> pci 0000:01:00.0: calling quirk_usb_early_handoff+0x0/0x6ac
> pci 0001:02:00.0: calling quirk_cardbus_legacy+0x0/0x50
> pci 0001:02:00.0: calling quirk_usb_early_handoff+0x0/0x6ac
>=20
>=20
> 2012/9/26 Kumar Gala <galak@kernel.crashing.org>
>=20
> > 2012/9/24 Davide Viti <zinosat@tiscali.it>
> > Hi,
> > does the output I've included show anything wrong or should I post =
something else to help identifying the cause of the problem?
> >
> > thank you in advance,
> > Davide
> >
> > 2012/9/21 Davide Viti <zinosat@tiscali.it>
> > I mean there are two controllers and both of them have a device =
"subtended" (both 0x1b65:0xabba).
> > u-boot can see both devices, linux detects only the device attached =
to the first controller.
> >
> > Here's the output of lspci and /proc/iomem :
> >
> > root@(none):/# lspci -v
> >
> > 0000:00:00.0 Class 0604: Device 1957:0100 (rev 11)
> >
> >         Flags: bus master, fast devsel, latency 0
> >
> >         Memory at <ignored> (32-bit, non-prefetchable)
> >
> >         Bus: primary=3D00, secondary=3D01, subordinate=3D01, =
sec-latency=3D0
> >
> >         I/O behind bridge: 00000000-00000fff
> >
> >         Memory behind bridge: a0000000-afffffff
> >
> >         Capabilities: [44] Power Management version 2
> >
> >         Capabilities: [4c] Express Root Port (Slot-), MSI 00
> >
> >         Capabilities: [100] Advanced Error Reporting
> >
> >
> > 0000:01:00.0 Class 0280: Device 1b65:abba (rev 01)
> >
> >         Flags: bus master, fast devsel, latency 0, IRQ 16
> >
> >         Memory at a0000000 (32-bit, non-prefetchable) [size=3D1K]
> >
> >         Memory at a0010000 (32-bit, non-prefetchable) [size=3D64K]
> >
> >         Capabilities: [50] MSI: Enable- Count=3D1/1 Maskable- 64bit+
> >
> >         Capabilities: [78] Power Management version 3
> >
> >         Capabilities: [80] Express Endpoint, MSI 00
> >
> >         Capabilities: [100] Virtual Channel <?>
> >
> >         Capabilities: [800] Advanced Error Reporting
> >
> >
> > 0001:02:00.0 Class 0604: Device 1957:0100 (rev 11)
> >
> >         Flags: bus master, fast devsel, latency 0
> >
> >         Memory at <ignored> (32-bit, non-prefetchable)
> >
> >         Bus: primary=3D00, secondary=3D03, subordinate=3D03, =
sec-latency=3D0
> >
> >         I/O behind bridge: 00000000-00000fff
> >
> >         Memory behind bridge: b0000000-bfffffff
> >
> >         Capabilities: [44] Power Management version 2
> >
> >         Capabilities: [4c] Express Root Port (Slot-), MSI 00
> >
> >         Capabilities: [100] Advanced Error Reporting
>=20
> Its possible that in linux the 2nd controller does not believe it has =
link status.  Can you see if there is a function like =
fsl_pcie_check_link() in your kernel.  If so maybe add a printk debug =
message there and see what gets return.
>=20
> Also helpful to post a full boot log.
>=20
> >
> >
> >
> >
> > root@(none):/# cat /proc/iomem
> >
> > a0000000-afffffff : /pcie@ffe09000
> >
> >   a0000000-afffffff : PCI Bus 0000:01
> >
> >     a0000000-a00003ff : 0000:01:00.0
> >
> >     a0010000-a001ffff : 0000:01:00.0
> >
> > b0000000-bfffffff : /pcie@ffe0a000
> >
> >   b0000000-bfffffff : PCI Bus 0001:03
> >
> > ef000000-efffffff : ef000000.nor
> >
> > ffe04500-ffe04507 : serial
> >
> > ffe04600-ffe04607 : serial
> >
> >
> >
> > thanx for your help,
> >
> > Davide
> >
> >
> >
> >
> > I mean that the kernel detects the first controller and the device =
attached to it, plus the second controller: the device on the second =
controller is not detected (same device as the one detected on the first =
controller)
> >
> > 2012/9/21 Kumar Gala <galak@kernel.crashing.org>
> >
> > On Sep 21, 2012, at 6:33 AM, Davide Viti wrote:
> >
> > > Hi,
> > > I'm working on a custom board based on P1020 with two (identical) =
PCI devices attached;
> > > The work is derived from another board with a single instance of =
that device.
> > > The system is based on u-boot-2009.11 and Linux 2.6.34.6
> > >
> > > The "pci" command on u-boot, shows me both the PCI controllers and
> > > the attached devices:
> > >
> > > Scanning PCI devices on bus 0
> > > BusDevFun  VendorId   DeviceId   Device Class       Sub-Class
> > > _____________________________________________________________
> > > 00.00.00   0x1957     0x0100     Processor               0x20
> > >
> > > Scanning PCI devices on bus 1
> > > BusDevFun  VendorId   DeviceId   Device Class       Sub-Class
> > > _____________________________________________________________
> > > 01.00.00   0x1b65     0xabba     Network controller      0x80
> > >
> > > Scanning PCI devices on bus 2
> > > BusDevFun  VendorId   DeviceId   Device Class       Sub-Class
> > > _____________________________________________________________
> > > 02.00.00   0x1957     0x0100     Processor               0x20
> > >
> > > Scanning PCI devices on bus 3
> > > BusDevFun  VendorId   DeviceId   Device Class       Sub-Class
> > > _____________________________________________________________
> > > 03.00.00   0x1b65     0xabba     Network controller      0x80
> > >
> > > The kernel detects only the first instance of the device.
> >
> > What do you mean by first instance of the device ?
> >
> > > Didn't get very far while looking at dts file and kernel logs, so =
I'm
> > > asking for some help on narrowing down the problem.
> > >
> > > I'm wondering if I can assume that the problem is restricted to
> > > kernel/dts and avoid concentrating on uboot.
> > > I can provide any log (didn't want to post tons of details on the =
first
> > > message)
> >
> > Probably a dts issue.
> >
> > What does lspci in linux say?
> >
> > - k
> >
> >
> >
> >
> > _______________________________________________
> > Linuxppc-dev mailing list
> > Linuxppc-dev@lists.ozlabs.org
> > https://lists.ozlabs.org/listinfo/linuxppc-dev
>=20
>=20

  reply	other threads:[~2012-09-27  2:30 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-09-21 11:33 PCI device not working Davide Viti
2012-09-21 13:17 ` Kumar Gala
2012-09-21 14:06   ` Davide Viti
2012-09-24 13:25     ` Davide Viti
2012-09-24 13:27     ` Davide Viti
2012-09-24 20:59       ` Davide Viti
2012-09-26 13:44         ` Kumar Gala
2012-09-26 15:25           ` Davide Viti
2012-09-27  2:30             ` Kumar Gala [this message]
2012-09-27 11:43 R: " Davide Viti
2012-09-27 12:27 ` Kumar Gala
2012-09-27 13:14 R: " Davide Viti
2012-09-27 16:06 ` Kumar Gala
2012-10-04 12:24 R: " Davide Viti
2012-10-04 13:14 ` Kumar Gala
     [not found]   ` <CAKpAL0m3YnsbbGxL+ejfyE4zfGE5LD9Qxb7oobHVaAZGE1_Jnw@mail.gmail.com>
2012-10-05  8:54     ` Fwd: " Davide Viti
2012-10-05 12:47       ` Kumar Gala
2012-10-25  8:21         ` Davide
2012-10-31  8:52         ` Davide

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=85B954F4-2C2A-4D2B-8D40-01101845337B@kernel.crashing.org \
    --to=galak@kernel.crashing.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=zinosat@tiscali.it \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.