All of lore.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: Fri, 12 Oct 2007 17:09:59 -0500	[thread overview]
Message-ID: <1192226999.14891.124.camel@basalt> (raw)
In-Reply-To: <5d6222a80710120908s6b1f5845head84e7b7a463cd1-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>

On Fri, 2007-10-12 at 13:08 -0300, Glauber de Oliveira Costa wrote:
> +
> +/* The hypervisor will put information about time periodically here */
> +struct kvm_hv_clock hv_clock;

...

> +void __init kvmclock_init(void)
> +{
> +
> +       unsigned long shared_page = (unsigned long)&hv_clock;

What makes you think this is page-aligned?

> +       /*
> +        * If we can't use the paravirt clock, just go with
> +        * the usual timekeeping
> +        */
> +       if (!kvm_para_available() || no_kvmclock)
> +               return;
> +
> +       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.

> @@ -1406,6 +1408,7 @@ int kvm_emulate_halt(struct kvm_vcpu *vcpu)
>  }
>  EXPORT_SYMBOL_GPL(kvm_emulate_halt);
>  
> +static struct kvm_hv_clock hv_clock;
>  int kvm_emulate_hypercall(struct kvm_vcpu *vcpu)
>  {
>         unsigned long nr, a0, a1, a2, a3, ret;
> @@ -1426,7 +1429,32 @@ int kvm_emulate_hypercall(struct kvm_vcpu *vcpu)
>                 a3 &= 0xFFFFFFFF;
>         }
>  
> +       ret = 0;
>         switch (nr) {
> +       case  KVM_HCALL_SET_SHARED_PAGE:
> +               if (!irqchip_in_kernel(vcpu->kvm)) {
> +                       ret = -1;
> +                       break;
> +               }
> +
> +               vcpu->kvm->clock_addr = a0;
> +               getnstimeofday(&hv_clock.wc);
> +               hv_clock.stable_tsc = check_tsc_unstable();
> +               hv_clock.tsc_mult = clocksource_khz2mult(tsc_khz, 22);
> +               rdtscll(hv_clock.last_tsc);
> +               emulator_write_emulated(vcpu->kvm->clock_addr, &hv_clock,
> +                                               sizeof(hv_clock), vcpu);

Are you intending this shared page to contain other data in the future,
or is it just poorly named?

> +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?

-- 
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-12 22:09 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 [this message]
2007-10-15 17:48     ` Glauber de Oliveira Costa
     [not found]       ` <5d6222a80710151048t22e747l42106a6507c811c6-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-10-15 22:54         ` Hollis Blanchard
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=1192226999.14891.124.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.