Igor Kovalenko wrote:
Generally, OF is placed in high memory, and memory allocations are from low memory.
That is how memory layout looks like now, if we look at 32bits of physical address space. The only difference seems to be with low 16m being used for both pci memory, i/o space and actual memory. It's getting mapped 1:1 into virtual address space used by openbios code.
Ah this is now starting to make sense. I assumed from reading the OpenBIOS code that PCI devices were just mapped directly to virtual addresses, but I can see that this may not necessary be the case. Does that mean OpenBIOS is missing some kind of PCI controller emulation in order to access PCI memory space?
Though I can also see that this wouldn't just affect the Qemu/SPARC combination so I'm quite surprised that this hasn't been noticed before on other guest/host combinations.
But there are several address spaces, which it sounds like are being overlapped here:
Right, that's the issue we have at the moment; both qemu and openbios are to be changed.
- Actual memory
- PCI memory space
- PCI IO space
They are each independent address spaces. Zero in any one of them is independent from zero in all the others.
I've never looked at PCI devices in much detail before, however if there is any C coding I can do to help out, please let me know.
ATB,
Mark.