public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
From: Hollis Blanchard <hollisb-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
To: Glauber de Oliveira Costa
	<glommer-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Cc: kvm-devel
	<kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org>,
	Jeremy Fitzhardinge <jeremy-TSDbQ3PG+2Y@public.gmane.org>,
	Avi Kivity <avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
Subject: Re: [RFC] Paravirt timer for KVM
Date: Mon, 15 Oct 2007 17:54:55 -0500	[thread overview]
Message-ID: <1192488895.22523.22.camel@basalt> (raw)
In-Reply-To: <5d6222a80710151048t22e747l42106a6507c811c6-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>

On Mon, 2007-10-15 at 14:48 -0300, Glauber de Oliveira Costa wrote:
> On 10/12/07, Hollis Blanchard <hollisb-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org> wrote:
> > > +       if (kvm_hypercall1(KVM_HCALL_SET_SHARED_PAGE, shared_page))
> > > +               return;
> >
> > Here you're passing a virtual address across the guest/host interface,
> > which is something we've previously agreed is bad.
> And that's the reason for the "nothing". It was just the easier way,
> and I'm not aware of any discussion in which it was agreed bad. I'll
> dig into the archives, but it would be a lot easier if you give me
> some pointers ;-)

Here's the original thread:
http://www.mail-archive.com/kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org/msg00755.html

The basic issue is that on many architectures, the hardware MMU does
*not* hold all mappings, and even if it does, performing MMU translation
in software can be prohibitively complicated and slow. As a worst-case
scenario, consider a software-controlled TLB which can hold a small
finite number of simultaneous mappings. On the embedded PowerPC 440
cores I'm working on, that number is 64. There is no hardware table
walker.

That means that if the hypervisor is passed a virtual address, it may
not be present in the MMU at all. Ordinarily the hardware would  deliver
a TLB miss interrupt to the kernel, and the kernel would insert the
appropriate mapping (as calculated or found in software-only data
structures). However, consider the locking nightmare if the hypervisor
delivers an interrupt while "inside" a guest hypercall...

> for the overall picture, it does not really make a difference, so if
> this is all that a bad idea, I can change it, no big deal.

Great! This is very important for portability to non-x86 architectures,
and a long-standing problem on another open source hypervisor, which is
why I'm eager to avoid it from the beginning here.

> > > +struct kvm_hv_clock {
> > > +       int stable_tsc; /* use raw tsc for clock_read */
> > > +       unsigned long tsc_mult;
> > > +       struct timespec now;
> > > +       u64 last_tsc;
> > > +       /* That's the wall clock, not the water closet */
> > > +       struct timespec wc;
> > > +};
> >
> > This isn't even good for x86: you're using "long" in a binary interface!
> > You're also using timespec, and what sort of binary compatibility
> > guarantees would you like to make about that?
> 
> Now seriously, the long is just my bad, but I'm not aware of any
> complications regarding the timespec. You are welcome to enlighten me.
> (Meanwhile, I'll go look at it)

typedef long		__kernel_time_t;
typedef __kernel_time_t		time_t;
struct timespec {
	time_t	tv_sec;		/* seconds */
	long	tv_nsec;	/* nanoseconds */
};

Longs everywhere. :) And not just that, but you are cementing this
particular layout of timespec into the guest ABI. There is nothing to
prevent Linux from changing timespec in some future version...

-- 
Hollis Blanchard
IBM Linux Technology Center


-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/

  parent reply	other threads:[~2007-10-15 22:54 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-10-12 16:08 [RFC] Paravirt timer for KVM Glauber de Oliveira Costa
     [not found] ` <5d6222a80710120908s6b1f5845head84e7b7a463cd1-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-10-12 18:10   ` Anthony Liguori
     [not found]     ` <470FB8AB.9030101-rdkfGonbjUSkNkDKm+mE6A@public.gmane.org>
2007-10-15 16:58       ` Glauber de Oliveira Costa
     [not found]         ` <5d6222a80710150958y31338c2ag3a391390b13788da-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-10-15 17:07           ` Avi Kivity
     [not found]             ` <47139E6F.7030704-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-10-15 18:09               ` Glauber de Oliveira Costa
     [not found]                 ` <5d6222a80710151109m5376449foc6be5b687c469a2b-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-10-16  7:31                   ` Avi Kivity
2007-10-12 18:39   ` Jeremy Fitzhardinge
     [not found]     ` <470FBF58.2080701-TSDbQ3PG+2Y@public.gmane.org>
2007-10-12 18:58       ` Anthony Liguori
2007-10-15 17:15       ` Glauber de Oliveira Costa
2007-10-12 19:48   ` Hollis Blanchard
2007-10-12 20:02     ` Anthony Liguori
     [not found]       ` <470FD2CA.1000702-rdkfGonbjUSkNkDKm+mE6A@public.gmane.org>
2007-10-12 21:55         ` Hollis Blanchard
2007-10-12 22:07           ` Anthony Liguori
     [not found]             ` <470FF036.6080803-rdkfGonbjUSkNkDKm+mE6A@public.gmane.org>
2007-10-15  4:04               ` Dong, Eddie
     [not found]                 ` <10EA09EFD8728347A513008B6B0DA77A023A6DCE-wq7ZOvIWXbNpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2007-10-15 16:01                   ` Hollis Blanchard
2007-10-15 16:47                     ` Avi Kivity
     [not found]                       ` <47139994.4030606-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-10-15 23:05                         ` Hollis Blanchard
2007-10-16  8:15                           ` Gerd Hoffmann
     [not found]                             ` <4714731D.4040408-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2007-10-16 10:27                               ` Avi Kivity
2007-10-16  9:45                           ` Avi Kivity
     [not found]                             ` <4714882C.2050504-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-10-16 10:03                               ` Dong, Eddie
2007-10-15 17:52                   ` Glauber de Oliveira Costa
     [not found]                     ` <5d6222a80710151052j37f0561dn6dbb5b07f6f697d1-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-10-16  7:17                       ` Avi Kivity
2007-10-15 17:38           ` Glauber de Oliveira Costa
2007-10-15  8:41         ` Gerd Hoffmann
     [not found]           ` <471327C7.8060304-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2007-10-15  9:07             ` Avi Kivity
     [not found]               ` <47132DCF.3060906-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-10-15  9:56                 ` Gerd Hoffmann
     [not found]                   ` <47133957.20508-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2007-10-15 10:14                     ` Gildas
2007-10-15 11:02                     ` Carsten Otte
     [not found]                       ` <471348B1.30300-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2007-10-15 16:31                         ` Jeremy Fitzhardinge
2007-10-15 18:03                         ` Glauber de Oliveira Costa
2007-10-15 18:00                     ` Glauber de Oliveira Costa
     [not found]                       ` <5d6222a80710151100p63e8e9aata79b006b43f6c37e-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-10-16  7:20                         ` Avi Kivity
2007-10-16  7:40                         ` Gerd Hoffmann
2007-10-15 17:53                 ` Glauber de Oliveira Costa
     [not found]     ` <5d6222a80710151029y288fc65bs3d325d5c8d1f039c@mail.gmail.com>
     [not found]       ` <1192489814.22523.36.camel@basalt>
2007-10-16  1:26         ` Glauber de Oliveira Costa
2007-10-12 22:09   ` Hollis Blanchard
2007-10-15 17:48     ` Glauber de Oliveira Costa
     [not found]       ` <5d6222a80710151048t22e747l42106a6507c811c6-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-10-15 22:54         ` Hollis Blanchard [this message]
2007-10-16  1:15           ` Glauber de Oliveira Costa
     [not found]             ` <5d6222a80710151815m2330c8b7ocf4fc352954a551c-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-10-16  9:47               ` Avi Kivity
2007-10-16  7:14         ` Avi Kivity
2007-10-16  8:41   ` Dong, Eddie

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=1192488895.22523.22.camel@basalt \
    --to=hollisb-r/jw6+rmf7hqt0dzr+alfa@public.gmane.org \
    --cc=avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org \
    --cc=glommer-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=jeremy-TSDbQ3PG+2Y@public.gmane.org \
    --cc=kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@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