[OpenBIOS] Faulty Qemu SPARC64 IDE emulation?

Igor Kovalenko igor.v.kovalenko at gmail.com
Sun Dec 13 19:29:50 CET 2009

On Sun, Dec 13, 2009 at 9:07 PM, Tarl Neustaedter
<Tarl.Neustaedter at sun.com> wrote:
> Igor Kovalenko wrote:
>> [...]
>> We also need to find out how memory mappings are laid out
>> preparing to run client code. It is not clear from of1275 docs.
> 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.

What is really confusing is how exactly we need to claim and map memory
for client program. Some client programs appear to be happy with read-write
privileged mapping, some may expect global translation, and docs are
basically silent in this regard. Can we do 4M page mappings?

> 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.

> 1) Actual memory
> 2) PCI memory space
> 3) PCI IO space
> They are each independent address spaces. Zero in any one of them is
> independent from zero in all the others.
> Note that PCI memory space is further subdivided into DMA address space and
> BAR memory space. In general on SPARC (with Openboot, at least), we use low
> addresses in PCI memory space for BARs and high addresses for DMA (backwards
> from x86 behaviour). We've found a number of devices which refuse to allow
> us to assign PCI memory space 0 to a BAR - so we've had to reserve the low
> order page of PCI memory and not assign it to BARs.

Thanks for the hint!

Kind regards,
Igor V. Kovalenko

More information about the OpenBIOS mailing list