|
From: | Robert Reif |
Subject: | Re: [Qemu-devel] [5849] Change MMIO callbacks to use offsets, not absolute addresses. |
Date: | Mon, 23 Feb 2009 20:05:33 -0500 |
User-agent: | Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.19) Gecko/20081204 SeaMonkey/1.1.14 |
Paul Brook wrote:
Sparc devices are passed in their physical addresses. They are currently hard wired because there is no proper bus/slot layer and only on-broad devices are implemented anyway. However each system may have the same hardware located at different locations so this may not be typical QEMU behavior. Real hardware deals with real addresses.Oh real hardware address decoding is typically implemented as chip selects in the host bridge, routing tables in the switch fabric, and/or having individual devices do address decoding and claiming transactions on a shared bus. Modelling full per-device address decoding simply isn't feasible, we have to use additional knowledge (e.g. PCI BARs or fixed address fanges) to perform that decoding at a higher level.
The layers above the device emulation must be responsible for generating thethe physical address appropriately. This is looking at the problem from a sparc
perspective.Sparc hardware is very fault happy and will generate a fault if you look at it funny. This isn't an issue when running a fully debugged OS but limits QEMU's usefulness
as a OS development platform. The open boot self tests do strange and unimplemented things and I wouldlike to see more of that work in the future. The same applies to more than the
currently supported OSs. I would rather have the hardware emulation work properly and run any OS than the current approach of trying a specific OS and hardware configuration and fixing what breaks. All I want is QEMU to be a better product.How do you propose having the hardware drivers generate meaningful and timely faults when an improper access is performed so it behaves like real low level software expects the hardware to behave? A device could generate a fault and pass the offset up to a higher layer that has knowledge of the real physical address but that
currently doesn't exist.
[Prev in Thread] | Current Thread | [Next in Thread] |