PCI device not working

9 messages, 2 authors, 2012-09-27 · open the first message on its own page

PCI device not working

From: Davide Viti <hidden>
Date: 2012-09-21 11:33:42

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.

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)

Thanx in advance for your help,
regards

Davide

Re: PCI device not working

From: Kumar Gala <hidden>
Date: 2012-09-21 13:17:39

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
=20
The "pci" command on u-boot, shows me both the PCI controllers and
the attached devices:
=20
Scanning PCI devices on bus 0
BusDevFun  VendorId   DeviceId   Device Class       Sub-Class
_____________________________________________________________
00.00.00   0x1957     0x0100     Processor               0x20
=20
Scanning PCI devices on bus 1
BusDevFun  VendorId   DeviceId   Device Class       Sub-Class
_____________________________________________________________
01.00.00   0x1b65     0xabba     Network controller      0x80
=20
Scanning PCI devices on bus 2
BusDevFun  VendorId   DeviceId   Device Class       Sub-Class
_____________________________________________________________
02.00.00   0x1957     0x0100     Processor               0x20
=20
Scanning PCI devices on bus 3
BusDevFun  VendorId   DeviceId   Device Class       Sub-Class
_____________________________________________________________
03.00.00   0x1b65     0xabba     Network controller      0x80
=20
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.
=20
I'm wondering if I can assume that the problem is restricted to
kernel/dts and avoid concentrating on uboot.=20
I can provide any log (didn't want to post tons of details on the =
first=20
message)
Probably a dts issue.

What does lspci in linux say?

- k

Re: PCI device not working

From: Davide Viti <hidden>
Date: 2012-09-21 14:06:11

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=00, secondary=01, subordinate=01, sec-latency=0

        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=1K]

        Memory at a0010000 (32-bit, non-prefetchable) [size=64K]

        Capabilities: [50] MSI: Enable- Count=1/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=00, secondary=03, subordinate=03, sec-latency=0

        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


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 [off-list ref]
On Sep 21, 2012, at 6:33 AM, Davide Viti wrote:
quoted
Hi,
I'm working on a custom board based on P1020 with two (identical) PCI
devices attached;
quoted
The work is derived from another board with a single instance of that
device.
quoted
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 ?
quoted
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

Re: PCI device not working

From: Davide Viti <hidden>
Date: 2012-09-24 13:25:51

2012/9/21 Davide Viti [off-list ref]
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=00, secondary=01, subordinate=01, sec-latency=0

        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=1K]

        Memory at a0010000 (32-bit, non-prefetchable) [size=64K]

        Capabilities: [50] MSI: Enable- Count=1/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=00, secondary=03, subordinate=03, sec-latency=0

        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


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 [off-list ref]
quoted
On Sep 21, 2012, at 6:33 AM, Davide Viti wrote:
quoted
Hi,
I'm working on a custom board based on P1020 with two (identical) PCI
devices attached;
quoted
The work is derived from another board with a single instance of that
device.
quoted
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 ?
quoted
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

Re: PCI device not working

From: Davide Viti <hidden>
Date: 2012-09-24 13:27:33

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 [off-list ref]
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=00, secondary=01, subordinate=01, sec-latency=0

        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=1K]

        Memory at a0010000 (32-bit, non-prefetchable) [size=64K]

        Capabilities: [50] MSI: Enable- Count=1/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=00, secondary=03, subordinate=03, sec-latency=0

        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


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 [off-list ref]
quoted
On Sep 21, 2012, at 6:33 AM, Davide Viti wrote:
quoted
Hi,
I'm working on a custom board based on P1020 with two (identical) PCI
devices attached;
quoted
The work is derived from another board with a single instance of that
device.
quoted
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 ?
quoted
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

Re: PCI device not working

From: Davide Viti <hidden>
Date: 2012-09-24 20:59:11

Here are the settings for PCI we currently have in uboot:

#define CONFIG_PCI                              1    /* Enable PCI/PCIE */
#define CONFIG_PCIE1                          1    /* PCIE controler 1
(slot 1) */
#define CONFIG_PCIE2                          1    /* PCIE controler 2
(slot 2) */
#define CONFIG_FSL_PCI_INIT               1    /* Use common FSL init code
*/
#define CONFIG_FSL_PCIE_RESET       1    /* need PCIe reset errata */
#define CONFIG_FSL_LAW                    1    /* Use common FSL init code
*/

#define CONFIG_SYS_PCIE1_ADDR        (CONFIG_SYS_CCSRBAR+0x9000)
#define CONFIG_SYS_PCIE2_ADDR        (CONFIG_SYS_CCSRBAR+0xa000)

/*
 * General PCI
 */

#define CONFIG_SYS_PCIE1_MEM_VIRT           0xA0000000
#define CONFIG_SYS_PCIE1_MEM_BUS           0xA0000000
#define CONFIG_SYS_PCIE1_MEM_PHYS         0xA0000000
#define CONFIG_SYS_PCIE1_MEM_SIZE           0x10000000
#define CONFIG_SYS_PCIE1_IO_VIRT               0xFFC10000
#define CONFIG_SYS_PCIE1_IO_BUS                0x00000000
#define CONFIG_SYS_PCIE1_IO_PHYS             0xFFC10000
#define CONFIG_SYS_PCIE1_IO_SIZE               0x00010000        /* 64k */

#define CONFIG_SYS_PCIE2_MEM_VIRT           0xB0000000
#define CONFIG_SYS_PCIE2_MEM_BUS           0xB0000000
#define CONFIG_SYS_PCIE2_MEM_PHYS         0xB0000000
#define CONFIG_SYS_PCIE2_MEM_SIZE           0x10000000
#define CONFIG_SYS_PCIE2_IO_VIRT               0xFFC00000
#define CONFIG_SYS_PCIE2_IO_BUS                0x00000000
#define CONFIG_SYS_PCIE2_IO_PHYS             0xFFC00000
#define CONFIG_SYS_PCIE2_IO_SIZE               0x00010000        /* 64k */

I'd really appreciate I you could take a look at it
Thanx alot in advance

Davide

2012/9/24 Davide Viti [off-list ref]
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 [off-list ref]
quoted
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=00, secondary=01, subordinate=01, sec-latency=0

        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=1K]

        Memory at a0010000 (32-bit, non-prefetchable) [size=64K]

        Capabilities: [50] MSI: Enable- Count=1/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=00, secondary=03, subordinate=03, sec-latency=0

        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


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 [off-list ref]
quoted
On Sep 21, 2012, at 6:33 AM, Davide Viti wrote:
quoted
Hi,
I'm working on a custom board based on P1020 with two (identical) PCI
devices attached;
quoted
The work is derived from another board with a single instance of that
device.
quoted
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 ?
quoted
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

Re: PCI device not working

From: Kumar Gala <hidden>
Date: 2012-09-26 13:44:59

2012/9/24 Davide Viti [off-list ref]
Hi,
does the output I've included show anything wrong or should I post =
something else to help identifying the cause of the problem?
=20
thank you in advance,
Davide
=20
2012/9/21 Davide Viti [off-list ref]
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.
=20
Here's the output of lspci and /proc/iomem :
=20
root@(none):/# lspci -v
=20
0000:00:00.0 Class 0604: Device 1957:0100 (rev 11)
=20
        Flags: bus master, fast devsel, latency 0
=20
        Memory at <ignored> (32-bit, non-prefetchable)
=20
        Bus: primary=3D00, secondary=3D01, subordinate=3D01, =
sec-latency=3D0
=20
        I/O behind bridge: 00000000-00000fff
=20
        Memory behind bridge: a0000000-afffffff
=20
        Capabilities: [44] Power Management version 2
=20
        Capabilities: [4c] Express Root Port (Slot-), MSI 00
=20
        Capabilities: [100] Advanced Error Reporting
=20
=20
0000:01:00.0 Class 0280: Device 1b65:abba (rev 01)
=20
        Flags: bus master, fast devsel, latency 0, IRQ 16
=20
        Memory at a0000000 (32-bit, non-prefetchable) [size=3D1K]
=20
        Memory at a0010000 (32-bit, non-prefetchable) [size=3D64K]
=20
        Capabilities: [50] MSI: Enable- Count=3D1/1 Maskable- 64bit+
=20
        Capabilities: [78] Power Management version 3
=20
        Capabilities: [80] Express Endpoint, MSI 00
=20
        Capabilities: [100] Virtual Channel <?>
=20
        Capabilities: [800] Advanced Error Reporting
=20
=20
0001:02:00.0 Class 0604: Device 1957:0100 (rev 11)
=20
        Flags: bus master, fast devsel, latency 0
=20
        Memory at <ignored> (32-bit, non-prefetchable)
=20
        Bus: primary=3D00, secondary=3D03, subordinate=3D03, =
sec-latency=3D0
=20
        I/O behind bridge: 00000000-00000fff
=20
        Memory behind bridge: b0000000-bfffffff
=20
        Capabilities: [44] Power Management version 2
=20
        Capabilities: [4c] Express Root Port (Slot-), MSI 00
=20
        Capabilities: [100] Advanced Error Reporting
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.

Also helpful to post a full boot log.
=20
=20
=20
=20
root@(none):/# cat /proc/iomem
=20
a0000000-afffffff : /pcie@ffe09000
=20
  a0000000-afffffff : PCI Bus 0000:01
=20
    a0000000-a00003ff : 0000:01:00.0
=20
    a0010000-a001ffff : 0000:01:00.0
=20
b0000000-bfffffff : /pcie@ffe0a000
=20
  b0000000-bfffffff : PCI Bus 0001:03
=20
ef000000-efffffff : ef000000.nor
=20
ffe04500-ffe04507 : serial
=20
ffe04600-ffe04607 : serial
=20
=20
=20
thanx for your help,
=20
Davide
=20
=20
=20
=20
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)
=20
2012/9/21 Kumar Gala [off-list ref]
=20
On Sep 21, 2012, at 6:33 AM, Davide Viti wrote:
=20
quoted
Hi,
I'm working on a custom board based on P1020 with two (identical) =
PCI devices attached;
quoted
The work is derived from another board with a single instance of =
that device.
quoted
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.
=20
What do you mean by first instance of the device ?
=20
quoted
Didn't get very far while looking at dts file and kernel logs, so =
I'm
quoted
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
quoted
message)
=20
Probably a dts issue.
=20
What does lspci in linux say?
=20
- k
=20
=20
=20
=20
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Re: PCI device not working

From: Davide Viti <hidden>
Date: 2012-09-26 15:25:54

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.

thank you,
Davide

...
Adding PCI host bridge /pcie@ffe09000
*** [/pcie@ffe09000] fsl_pcie_check_link() val=0x16 => return 0
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Found FSL PCI host bridge at 0x00000000ffe09000. Firmware bus number: 0->255
 ->Hose at 0xc05a2000, cfg_addr=0xff7fd000,cfg_data=0xff7fd004
PCI host bridge /pcie@ffe09000  ranges:
 MEM 0x00000000a0000000..0x00000000afffffff -> 0x00000000a0000000
  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

Adding PCI host bridge /pcie@ffe0a000
*** [/pcie@ffe0a000] fsl_pcie_check_link() val=0x16 => return 0
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Found FSL PCI host bridge at 0x00000000ffe0a000. Firmware bus number: 0->255
 ->Hose at 0xc05a20e0, cfg_addr=0xff7eb000,cfg_data=0xff7eb004
PCI host bridge /pcie@ffe0a000  ranges:
 MEM 0x00000000b0000000..0x00000000bfffffff -> 0x00000000b0000000
  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

...

PCI: Probing PCI hardware
PCI: Scanning PHB /pcie@ffe09000
PCI: PHB IO resource    = 00000000ff7ed000-00000000ff7fcfff [100]
PCI: PHB MEM resource 0 = 00000000a0000000-00000000afffffff [200]
PCI: PHB MEM offset     = 0000000000000000
PCI: PHB IO  offset     = 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=01
pci_bus 0000:00: bus scan returning with max=01
PCI: Scanning PHB /pcie@ffe0a000
PCI: PHB IO resource    = 00000000ff7db000-00000000ff7eafff [100]
PCI: PHB MEM resource 0 = 00000000b0000000-00000000bfffffff [200]
PCI: PHB MEM offset     = 0000000000000000
PCI: PHB IO  offset     = 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=03
pci_bus 0001:02: bus scan returning with max=03
PCI->OF bus map (pci_bus_count=4):
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

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


2012/9/26 Kumar Gala [off-list ref]
quoted
2012/9/24 Davide Viti [off-list ref]
Hi,
does the output I've included show anything wrong or should I post
something else to help identifying the cause of the problem?
quoted
thank you in advance,
Davide

2012/9/21 Davide Viti [off-list ref]
I mean there are two controllers and both of them have a device
"subtended" (both 0x1b65:0xabba).
quoted
u-boot can see both devices, linux detects only the device attached to
the first controller.
quoted
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=00, secondary=01, subordinate=01, sec-latency=0

        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=1K]

        Memory at a0010000 (32-bit, non-prefetchable) [size=64K]

        Capabilities: [50] MSI: Enable- Count=1/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=00, secondary=03, subordinate=03, sec-latency=0

        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
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.

Also helpful to post a full boot log.
quoted



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)
quoted
2012/9/21 Kumar Gala [off-list ref]

On Sep 21, 2012, at 6:33 AM, Davide Viti wrote:
quoted
Hi,
I'm working on a custom board based on P1020 with two (identical) PCI
devices attached;
quoted
quoted
The work is derived from another board with a single instance of that
device.
quoted
quoted
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 ?
quoted
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

Re: PCI device not working

From: Kumar Gala <hidden>
Date: 2012-09-27 02:30:27

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 [off-list ref]
=20
quoted
2012/9/24 Davide Viti [off-list ref]
Hi,
does the output I've included show anything wrong or should I post =
something else to help identifying the cause of the problem?
quoted
thank you in advance,
Davide

2012/9/21 Davide Viti [off-list ref]
I mean there are two controllers and both of them have a device =
"subtended" (both 0x1b65:0xabba).
quoted
u-boot can see both devices, linux detects only the device attached =
to the first controller.
quoted
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
quoted
        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
quoted
        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
quoted



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)
quoted
2012/9/21 Kumar Gala [off-list ref]

On Sep 21, 2012, at 6:33 AM, Davide Viti wrote:
quoted
Hi,
I'm working on a custom board based on P1020 with two (identical) =
PCI devices attached;
quoted
quoted
The work is derived from another board with a single instance of =
that device.
quoted
quoted
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 ?
quoted
Didn't get very far while looking at dts file and kernel logs, so =
I'm
quoted
quoted
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
quoted
quoted
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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help