On Mon, Nov 9, 2009 at 2:37 PM, Avi Kivity <a...@redhat.com> wrote: > On 11/09/2009 11:08 AM, Gerd Hoffmann wrote: >> >>> You are also moving the compilation to Makefile.hw, which is not >>> exactly an improvement. Is this needed because of the QEMUIOVector >>> stuff? >> >> Almost correct ;) >> >> It is because of QEMUSGList which drags in a target_phys_addr_t >> dependency. > > As Michael notes, devices have physical address sizes independent of the > target platform; a PCI device that supports 64-bit addresses can be plugged > into a motherboard that supports 32-bit address bus processors.
True. But I think the solution is not to make all buses maximum width, but support multiple buses with width translation in between. > We can fix this in several ways: > - creating QEMUSG64List and QEMUSG32List (and typedefing PCISGList to the > former) > - making QEMUSGList always use 64-bit addresses since it will almost always > be used with devices (which are often 64-bit capable) > - making target_phys_addr_t always 64-bit (which loses some performance with > 32-on-32 emulation) > - others? We could improve the compilation system so that on 64 bit hosts the benefit of single size target_phys_addr_t results in compiling the files only once.