Skip to contentSkip to conversation

problem with PCI network card on MPC8323E but works on MPC8313E

DISCUSSION Grzegorz Jakubowski 2 participants 2 messages Oct 5, 2009

lore
Share & tools
lore
#0 lore raw

Hello,
I am newbie in embeded linux on PowerPC,
and in few last weeks i fight with PCI device.

On MPC8323E-RDB lspci -vv return:

00:12.0 Ethernet controller: VIA Technologies, Inc. VT6105 [Rhine-III] (rev 86)
Subsystem: VIA Technologies, Inc. Unknown device 0105
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping+ SERR- FastB2B-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium

Quoted 1 line

TAbort- <TAbort- <MAbort- >SERR- <PERR-

Latency: 128 (750ns min, 2000ns max), Cache Line Size: 32 bytes
Interrupt: pin A routed to IRQ 20
Region 0: I/O ports at d0000000 [size=256]
Region 1: Memory at 90001100 (32-bit, non-prefetchable) [size=256]
Capabilities: [40] Power Management version 2
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA
PME(D0+,D1+,D2+,D3hot+,D3cold+)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-

but on MPC8313E-RDB lspci -vv return:

00:0f.0 Ethernet controller: VIA Technologies, Inc. VT6105 [Rhine-III] (rev 86)
Subsystem: VIA Technologies, Inc. Unknown device 0105
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping+ SERR- FastB2B-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium

Quoted 1 line

TAbort- <TAbort- <MAbort- >SERR- <PERR-

Latency: 128 (750ns min, 2000ns max), Cache Line Size: 32 bytes
Interrupt: pin A routed to IRQ 23
Region 0: I/O ports at <unassigned>
Region 1: Memory at 90000000 (32-bit, non-prefetchable) [size=256]
Capabilities: [40] Power Management version 2
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA
PME(D0+,D1+,D2+,D3hot+,D3cold+)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-

on MPC8313E network card works fine, but on MPC8313E I gets kernel Oops message:

via-rhine.c:v1.10-LK1.4.2 Sept-11-2006 Written by Donald Becker

Unable to handle kernel paging request for data at address 0xd00
00083
Faulting instruction address: 0xc0011b58
Oops: Kernel access of bad area, sig: 11 [#1]
PREEMPT
Modules linked in: via_rhine
NIP: C0011B58 LR: C501FE8C CTR: C0011B54
REGS: c31d3c80 TRAP: 0300   Not tainted  (2.6.20.6-rt8)
MSR: 00009032 <EE,ME,IR,DR>  CR: 44004422  XER: 20000000
DAR: D0000083, DSISR: 20000000

TASK = c3f97430[795] 'modprobe' THREAD: c31d2000
GPR00: 00000043 C31D3D30 C3F97430 D0000083 00000100 00000100 C50 22A20 C31D3D08
GPR08: D0000000 00000001 00000000 C0011B54 22004422 1001C7AC 000 00000 00000000
GPR16: 00000000 00000000 000000A5 00000124 C03D3C48 00000001 C50 20000 C5022B7C
GPR24: C07F7AC0 C07F7800 D0000000 00000100 D0000000 D0000083 C07 F7AC0 D0000000
NIP [C0011B58] ioread8+0x4/0x18
LR [C501FE8C] rhine_power_init+0x44/0x17c [via_rhine]

Call Trace:
[C31D3D30] [C0147D5C] pci_request_regions+0x2c/0x9c (unreliable)

[C31D3D50] [C5020384] rhine_init_one+0x220/0x650 [via_rhine] [C31D3DA0] [C014A434] pci_device_probe+0x80/0xa0 [C31D3DC0] [C0165794] really_probe+0x64/0x134 [C31D3DE0] [C0165BB4] __driver_attach+0x84/0x88 [C31D3E00] [C01647F8] bus_for_each_dev+0x54/0x90 [C31D3E30] [C0165518] driver_attach+0x24/0x34 [C31D3E40] [C0164E68] bus_add_driver+0x88/0x1b4 [C31D3E60] [C0165E8C] driver_register+0x68/0xb0 [C31D3E70] [C0149E6C] __pci_register_driver+0x84/0xe4 [C31D3E90] [C502602C] rhine_init+0x2c/0x90 [via_rhine] [C31D3EA0] [C004B670] sys_init_module+0xf4/0x1624 [C31D3F40] [C000F4A4] ret_from_syscall+0x0/0x38 --- Exception: c01 at 0xff70fe8

    LR = 0x10002ac4

Instruction dump:
83e1001c 38210020 7c0803a6 4e800020 38800000 7c0803a6 4e800021 2 f830000
3860ffea 419eff04 4bffffac 7c0004ac <88630000> 0c030000 4c00012c
5463063e
Segmentation fault

maybe problem is with I/O ports (failed instruction was ioread8) because
on one board I/O ports are not assigned, but on MPC8323E they are
invalid assigned.
I have no idea how to solve my problem, thanks for any help. What should I try to do?

Best regards, Gregory Jakubowski

ps. sorry for my poor english

#1 lore raw
Quoted 5 lines · Grzegorz Jakubowski

maybe problem is with I/O ports (failed instruction was ioread8) because
on one board I/O ports are not assigned, but on MPC8323E they are
invalid assigned.
I have no idea how to solve my problem, thanks for any help. What should I try to do?

Check your U-Boot and device tree, and make sure they agree on PCI configuration. If you're running an old U-Boot, upgrade.

-Scott