From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60285) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z06fX-00019O-0e for qemu-devel@nongnu.org; Wed, 03 Jun 2015 07:17:12 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Z06fT-0004Re-P6 for qemu-devel@nongnu.org; Wed, 03 Jun 2015 07:17:10 -0400 Received: from mail-pa0-f44.google.com ([209.85.220.44]:33245) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z06fT-0004QL-Hp for qemu-devel@nongnu.org; Wed, 03 Jun 2015 07:17:07 -0400 Received: by padj3 with SMTP id j3so5211522pad.0 for ; Wed, 03 Jun 2015 04:17:05 -0700 (PDT) Message-ID: <556EE229.3070607@ozlabs.ru> Date: Wed, 03 Jun 2015 21:16:57 +1000 From: Alexey Kardashevskiy MIME-Version: 1.0 References: <1432653754.11375.395.camel@redhat.com> <556B0DC9.7020901@ozlabs.ru> In-Reply-To: Content-Type: text/plain; charset=koi8-r; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] VFIO use of HOST_PAGE_ALIGN List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Peter Crosthwaite Cc: Paolo Bonzini , Alex Williamson , Richard Henderson , "qemu-devel@nongnu.org Developers" , Eric Auger On 06/01/2015 04:27 AM, Peter Crosthwaite wrote: > On Sun, May 31, 2015 at 6:34 AM, Alexey Kardashevskiy 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. Ah, just this one. TARGET_PAGE_SIZE is 4K for PPC64 and the actual page size can be 4K and 64K so that branch never works for PPC64. >>> 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". Good, I like it. Cannot it be just a qemu_host_page_size? It is a bit confusing to have both qemu_host_page_size and qemu_real_host_page_size when even the first name suggests it is something non-static and sort of real :) -- Alexey