Scott Wood [off-list ref] wrote on 30/10/2009 01:12:28:
On Sat, Oct 17, 2009 at 02:01:38PM +0200, Joakim Tjernlund wrote:
quoted
Joakim Tjernlund/Transmode wrote on 17/10/2009 13:24:18:
quoted
Rex Feany [off-list ref] wrote on 16/10/2009 22:25:41:
quoted
Thus spake Joakim Tjernlund (joakim.tjernlund@transmode.se):
quoted
Right, it is the pte table walk that is blowing up.
I just noted that 2.6 lacks a tophys() call in its table walk
so I removed that one(there is one more tophys call but I don't think
it should be removed).
Try this addon patch:
no difference
quoted
OK, thinking a bit more, this part should not be executed as
copy_tofrom_user executes in kernel space.
Any chance you can stick a HW breakpoint on FixupDAR?
Perhaps there is something different with kernel
virtual address to phys address?
A simple topys() works in 2.4, but perhaps not in 2.6?
this is the part of interest:
FixupDAR: /* Entry point for dcbx workaround. */
/* fetch instruction from memory. */
mfspr r10, SPRN_SRR0
andis. r11, r10, 0x8000
tophys (r11, r10)
beq- 139b /* Branch if user space address */
140: lwz r11,0(r11)
Probably better to walk the kernel page table too. Does this
make a difference(needs the tophys() patch I posted earlier):
After applying by hand (whitespace damage), I get this and a bunch more:
OK, please send your diff to head_8xx.S. Maybe I can spot an
error, otherwise you will have to set a hw BP on fixDAR and step
through it.
Jocke