Pegasos OHCI bug (was Re: PROBLEM: memory corrupting bug,
Segher Boessenkool
segher at kernel.crashing.org
Thu Oct 28 10:33:52 EST 2010
>> 1) Figure out what exactly is going on;
>
> I thought we were past that.
We are not.
> The startup sequence leaves the device in a
> bad
> state (writing 1000 times per second to memory that the kernel believes is
> not in use), so it needs to be given a reset command before the kernel
> tries
> to use that memory.
The question now is what causes the firmware to do that, and then
what is the best way to stop it from doing that.
>> > The big question that I'm still stumbling over is how to access the
>> device
>> > registers. The "reg" property looks like this:
>>
>> You should look at "assigned-addresses", not "reg". Well,
>> you first need to look at "reg" to figure out what entry
>> in "assigned-addresses" to use.
Ignore this part, I was confused.
> The properties look like this:
>
> /pci at 80000000/usb at 5/assigned-addresses
> 02002810 00000000 80000000 00000000 00001000
Lovely, incorrect data (it should start with 82002810, i.e.,
not relocatable -- it is already an assigned address!).
This means: 32-bit MMIO address space for bus 0 dev 5 fn 0,
first BAR; assigned to address 80000000; size is 1000.
You could try a boot script like this:
dev /pci
0 ffff04 DO 0 i config-w! -100 +LOOP
device-end
which should disable all PCI devices on all busses, on that
PCI host bus (it disables every device behind pci-pci bridges
separately, as long as every such bridge has a higher secondary
bus number than primary bus number; if you only want to disable
everything on the root bus (which should be sufficient), use
ff04 instead of ffff04).
Segher
More information about the Linuxppc-dev
mailing list