public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
From: Anthony Liguori <aliguori-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
To: Hollis Blanchard <hollisb-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
Cc: Rusty Russell <rusty-8n+1lVoiYb80n/F98K4Iww@public.gmane.org>,
	kvm-ppc <kvm-ppc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	kvm <kvm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
Subject: Re: large page size virtio issues
Date: Wed, 05 Nov 2008 11:25:31 -0600	[thread overview]
Message-ID: <4911D70B.8000905@us.ibm.com> (raw)
In-Reply-To: <1225902738.26835.51.camel-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>

Hollis Blanchard wrote:
> On Wed, 2008-11-05 at 08:06 -0600, Anthony Liguori wrote:
>   
>
>> I don't much like the idea of globally hard coding it to 4k. I'd rather 
>> make it architecture specific.
>>     
>
> Making the units architecture-specific doesn't solve the problem at all
> AFAICS. It doesn't even solve my original problem on PowerPC 440 since
> the guest page size can vary.
>
> AFAIK the only reason to use a PFN in this interface in the first place
> is to allow for physical addresses >32 bits. A hardcoded shift of 12
> gives you 44 bits of physical address space (16 TB). This actually isn't
> very big today, so using an architecture-specific hardcoded 4K size will
> become an issue anyways, *even on x86*.
>   

It's PIO on x86 so there's no way to do a 64-bit operation.

> Brainstorming backwards-compatible interface expansion possibilities:
>      1. Rename the current interface to "4K_PFN", and add another, let's
>         say "64K_PFN". Of course, if a guest with smaller pages uses the
>         new interface, it must properly align its queue allocation.
>      2. Rename the current interface to "4K_PFN". Use 64-bit writes to
>         set VIRTIO_PCI_QUEUE_PFN. 32-bit architectures couldn't use
>         this, which might be OK since practically speaking, I think
>         32-bit architectures can address at most 36 bits of physical
>         space. I also don't know what the semantics are of 64-bit PCI
>         writes (if it's not allowed on physical hardware) -- it looks
>         like Linux doesn't have an iowrite64, for example.
>      3. Rename the current interface to "4K_PFN". Use multiple writes
>         (high/low) to set VIRTIO_PCI_QUEUE_PFN. Not atomic. To simplify
>         backend implementation, you could require that PFN_HIGH writes
>         come before PFN_LOW.
>      4. Use multiple writes (set page size, set PFN). SET_PAGE_SIZE must
>         precede SET_PFN. Not atomic.
>      5. Create a variable-sized interface (still 32-bit write), where
>         the shift value is encoded in the value itself (I guess this is
>         the FP mantissa+exponent approach). For example, the low 8 bits
>         are the shift beyond 12, so a write of 0x10000004 would mean
>         physical address 1<<(12+4).
>   

I think we should just have a VIRTIO_PFN_SHIFT define that is 
architecture specific.

On x86, it'll be 4k.  You can make it whatever you want for PPC.  Fixing 
all architectures to be 4k is going to suck for architectures with < 4k 
pages.

Regards,

Anthony Liguori

--
To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

  parent reply	other threads:[~2008-11-05 17:25 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1225836860.15410.32.camel@localhost.localdomain>
     [not found] ` <200811052316.47127.rusty@rustcorp.com.au>
     [not found]   ` <4911A87A.4010209@us.ibm.com>
     [not found]     ` <4911A87A.4010209-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2008-11-05 16:32       ` large page size virtio issues Hollis Blanchard
     [not found]         ` <1225902738.26835.51.camel-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2008-11-05 17:25           ` Anthony Liguori [this message]
2008-11-05 17:31             ` Hollis Blanchard
     [not found]               ` <1225906304.26835.75.camel-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2008-11-05 17:33                 ` Anthony Liguori
2008-11-05 17:46                   ` Hollis Blanchard
     [not found]   ` <200811052316.47127.rusty-8n+1lVoiYb80n/F98K4Iww@public.gmane.org>
2008-11-05 19:50     ` Hollis Blanchard
2008-11-05 20:08       ` Anthony Liguori
     [not found]         ` <4911FD32.9050301-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2008-11-05 20:29           ` Hollis Blanchard

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4911D70B.8000905@us.ibm.com \
    --to=aliguori-r/jw6+rmf7hqt0dzr+alfa@public.gmane.org \
    --cc=hollisb-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org \
    --cc=kvm-ppc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=kvm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=rusty-8n+1lVoiYb80n/F98K4Iww@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox