On Sun, May 31, 2015 at 6:34 AM, Alexey Kardashevskiy <a...@ozlabs.ru> wrote: > On 05/27/2015 01:22 AM, Alex Williamson wrote: >> >> [cc +alexey] >> >> On Mon, 2015-05-25 at 00:48 -0700, Peter Crosthwaite wrote: >>> >>> Hi Alex and all, >>> >>> I am working on a patch series to enable multiple CPU architectures to >>> run at once. It's a long story, but I have hit a snag in hw/vfio/pci.c >>> which AFAICS is the only in-tree system-mode use of HOST_PAGE_ALIGN >>> (all usermode code is a non-issue as not looking to support user-mode >>> multi-arch yet). >>> >>> The problem I face, is that this macro depends on translate-all.c's >>> qemu_host_page_size which in turn, depends on TARGET_PAGE_SIZE. I'm >>> hoping that one day, TARGET_PAGE_SIZE will be a variable and the users >>> of it will know to get the correct value depending on their CPU >>> specific code location. vfio is the only one I can't handle. My >>> knowledge on vfio is near-0, but my thinking is, since this is not >>> arch specific code can we instead use the raw host page alignment >>> rather that the CPU arch specific one? > > > What is "raw host page" here? I thought qemu_host_page_size is the one, > where does it depend on TARGET_PAGE_SIZE? > >
In translate-all.c: void page_size_init(void) { /* NOTE: we can always suppose that qemu_host_page_size >= TARGET_PAGE_SIZE */ qemu_real_host_page_size = getpagesize(); if (qemu_host_page_size == 0) { qemu_host_page_size = qemu_real_host_page_size; } if (qemu_host_page_size < TARGET_PAGE_SIZE) { qemu_host_page_size = TARGET_PAGE_SIZE; } qemu_host_page_mask = ~(qemu_host_page_size - 1); } It is clamped to be at least as big as a the TARGET_PAGE_SIZE. >> I think we could replace our use of HOST_PAGE_ALIGN with something based >> only on the host's getpagesize(). I don't see that we really care about >> the target page size for this usage. Alexey, I think you're the only >> arch where host and target page sizes can actually be different, do you >> agree? Thanks, > > > Strongly agree. Where it really matters (MSIX), it is already > qemu_host_page_size and HOST_PAGE_ALIGN and I am a bit scared by that "raw > host page alignment" :) > So the change would be an alternate macro based on qemu_real_host_page_size which is what I am calling "raw host page alignment". Regards, Peter > > > -- > Alexey >