On Tue, May 7, 2013 at 5:48 AM, Hervé Poussineau hpoussin@reactos.org wrote:
Andreas Färber a écrit :
Am 06.05.2013 22:57, schrieb Hervé Poussineau:
Alexander Graf a écrit :
On 05/03/2013 07:57 AM, Hervé Poussineau wrote:
Alexander Graf a écrit :
Am 02.05.2013 um 22:08 schrieb Hervé Poussineau hpoussin@reactos.org:
> Non-contiguous I/O is not implemented. > > There is also somewhere a bug in the memory controller, which means > that some real firmwares may not detect the correct amount of memory. > This can be bypassed by adding '-m 1G' on the command line. > > Add x-auto-conf property, to automatically configure the memory > controller at startup. This will be required by OpenBIOS, which > doesn't know how to do it.
Why not teach it? I'd prefer to see that logic in firmware.
Me too, but I'm not confident enough in my capabilities to do it.
Huh? Why not? Most of the device initialization code in OpenBIOS happens in C, so you don't even have to touch Forth code :).
Autoconfiguration is only in one place of the code, so I think it can be removed easily once OpenBIOS has this logic.
I'd prefer if we could come up with a clean model from the start. It really shouldn't be hard at all.
I thought that for all other usages of OpenBIOS in QEMU, RAM was supposed to be available as soon as machine was powered on.
However, I checked OpenBIOS code: One of the first things done in arch/ppc/qemu/start.S is to copy the exception vectors. So, I should add code before it to detect memory controller, detect ram size and configure memory controller?
No. Why? QEMU does not depend on the memory controller being initialized, only the OS might expect some registers to be filled in. So you should look at or add the MPC105 PHB initialization hook in OpenBIOS' PCI code, long after the memory is set up.
OpenBIOS depends of memory being available (at least the first KB/MB) even at its very startup, in arch/ppc/qemu/start.S. PCI initialization code comes much later.
OpenBIOS for Sparc32 and Sparc64 does not use RAM before RAM size has been read from fw_cfg. A check for QEMU signature is done and machine ID is also read before that. arch/sparc32/entry.S arch/sparc64/entry.S
It should be easy to change PPC to check the machine ID before accessing RAM.
At boot, MPC105 datasheet says that memory controller is not configured, ie you have to not use RAM in OpenBIOS before PCI initialization.
The memory controller should be initialized much earlier than PCI.
For other PPC targets (mac99, g3beige) using OpenBIOS, RAM is accessible at startup, so that's not a problem for OpenBIOS.
So, no, QEMU does not depend of the memory controller being initialized, but OpenBIOS depends of the RAM being accessible ways before PCI initialization. I don't speak of the OS which might (or might not) expect some registers to be filled in. x-auto-conf property correctly sets some registers, so that memory is available at startup (like on mac99, g3beige emulations).
Hervé