Skip to contentSkip to conversation

a problem about rtl8139 driver on sandpoint8245 board

U-Boot-Users Lucas Jin 3 participants 4 messages Sep 30, 2007 – Oct 1, 2007

lore
Share & tools
lore

Lucas Jin

author
#0 lore raw

Hi, all

I am debuging RTL8139 driver for a board based on Sandpoint8245 and I have a problem.

The CPU panic on line 529 in rtl8139.c. (outb(CmdReset, ioaddr + ChipCmd);)

Serial port displayed:
(
Bad trap at PC: fffffffc, SR: 1000, vector=800
NIP: FFFFFFFC XER: 20000000 LR: 00001288 REGS: 077ceb30 TRAP: 0800 DAR: 077CECC0
MSR: 00001000 EE: 0 PR: 0 FP: 0 ME: 1 IR/DR: 00

GPR00: 00000010 077CEC20 FFFFFF1F 00000000 0000000A 00000010 FFFFFFFB 00000000
GPR08: 00000040 81000000 00000000 FFFFFFFF 00000020 A7AC5E24 07FFD000 080D1000
GPR16: 31380950 8E109020 05808002 55D84040 00003032 00000001 00000000 00000001
GPR24: 00000000 077CEEA8 077CEFC8 00000005 07FF80C8 077CEF94 07FFD6D8 00000000 Call backtrace:
Exception in kernel pc fffffffc signal 0
)

The value of ioaddr is 0x80000000

The value of _IO_BASE outb uses is defined as 0

Thank you all
Jinlu

#1 lore raw
Quoted 3 lines · Lucas Jin

Hi, all

I am debuging RTL8139 driver for a board based on Sandpoint8245 and I have a problem.

I don't know much about Sandpoint 8245, but

Quoted 16 lines

The CPU panic on line 529 in rtl8139.c. (outb(CmdReset, ioaddr + ChipCmd);)

Serial port displayed:
(
Bad trap at PC: fffffffc, SR: 1000, vector=800
NIP: FFFFFFFC XER: 20000000 LR: 00001288 REGS: 077ceb30 TRAP: 0800 DAR: 077CECC0
MSR: 00001000 EE: 0 PR: 0 FP: 0 ME: 1 IR/DR: 00

GPR00: 00000010 077CEC20 FFFFFF1F 00000000 0000000A 00000010 FFFFFFFB 00000000
GPR08: 00000040 81000000 00000000 FFFFFFFF 00000020 A7AC5E24 07FFD000 080D1000
GPR16: 31380950 8E109020 05808002 55D84040 00003032 00000001 00000000 00000001
GPR24: 00000000 077CEEA8 077CEFC8 00000005 07FF80C8 077CEF94 07FFD6D8 00000000 Call backtrace:
Exception in kernel pc fffffffc signal 0
)

Quoted 3 lines

The value of ioaddr is 0x80000000

The value of _IO_BASE outb uses is defined as 0

AFAICT the drivers/rtl8139.c has at least two problems:

- First, the prospekctive target is MIPS
because it uses KSEG1ADDR macro to obtain uncached address.

- Moreover it only works under cache-{disabled,less} CPU because it lacks of flush_cache() before transmitting data or reclaiming rx buffers.

thanks,

Shinya Kuribayashi

author
#2 lore raw

[U-Boot-Users] a problem about rtl8139 driver on sandpoint8245board

Shinya Kuribayashi:

Thank you for your hint. I think it will be of help in the future debugging.

But my problem occurs just in the process of rtl8139 reset.

Quoted 32 lines
Quoted 3 lines · Lucas Jin

Hi, all

I am debuging RTL8139 driver for a board based on Sandpoint8245 and I have a problem.

I don't know much about Sandpoint 8245, but

Quoted 16 lines

The CPU panic on line 529 in rtl8139.c. (outb(CmdReset, ioaddr + ChipCmd);)

Serial port displayed:
(
Bad trap at PC: fffffffc, SR: 1000, vector=800
NIP: FFFFFFFC XER: 20000000 LR: 00001288 REGS: 077ceb30 TRAP: 0800 DAR: 077CECC0
MSR: 00001000 EE: 0 PR: 0 FP: 0 ME: 1 IR/DR: 00

GPR00: 00000010 077CEC20 FFFFFF1F 00000000 0000000A 00000010 FFFFFFFB 00000000
GPR08: 00000040 81000000 00000000 FFFFFFFF 00000020 A7AC5E24 07FFD000 080D1000
GPR16: 31380950 8E109020 05808002 55D84040 00003032 00000001 00000000 00000001
GPR24: 00000000 077CEEA8 077CEFC8 00000005 07FF80C8 077CEF94 07FFD6D8 00000000 Call backtrace:
Exception in kernel pc fffffffc signal 0
)

Quoted 3 lines

The value of ioaddr is 0x80000000

The value of _IO_BASE outb uses is defined as 0

AFAICT the drivers/rtl8139.c has at least two problems:

- First, the prospekctive target is MIPS
because it uses KSEG1ADDR macro to obtain uncached address.

Quoted 8 lines

- Moreover it only works under cache-{disabled,less} CPU because it lacks of flush_cache() before transmitting data or reclaiming rx buffers.

thanks,

Shinya Kuribayashi

Yours
Lucas Jin

#3 lore raw
In reply to Shinya Kuribayashi
Quoted 3 lines · Shinya Kuribayashi

- Moreover it only works under cache-{disabled,less} CPU because it lacks of flush_cache() before transmitting data or reclaiming rx buffers.

DMA is cache-coherent on 8245.

-Scott