From: Avi Kivity <avi-atKUWr5tajBWk0Htik3J/w@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>,
Hollis Blanchard
<hollisb-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
Subject: Re: [RFC] Paravirt timer for KVM
Date: Tue, 16 Oct 2007 09:14:47 +0200 [thread overview]
Message-ID: <471464E7.1010303@qumranet.com> (raw)
In-Reply-To: <5d6222a80710151048t22e747l42106a6507c811c6-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
Glauber de Oliveira Costa wrote:
>>>
>> 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 ;-)
>
On x86, translating a virtual address in the hypervisor is merely
annoying. On architectures which don't have hardware-walked page tables
(merely software-managed tlbs), translation is impossible. So when you
talk to the hypervisor, use physical addresses exclusively.
>
>> Are you intending this shared page to contain other data in the future,
>> or is it just poorly named?
>>
>
> Well, this is still a work in progress, so the accurate answer should
> be: Something in the middle, between "more data", and "poorly named".
>
> I think more data can be in, but right now, everything I intend to
> (maybe) put in is timer related, so a rename could go well anyway.
>
>
Having granular interfaces (one cpuid bit, one shared data structure per
feature is the best way of insulating ourselves against ABI
"accidents". If we find out later the interface is bad, we throw it
away and implement a new one, without affecting others.
>>> +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?
>>
>>
>
> Binary guarantees goes in version two ;-)
> But c'mon, now that I'm starting to be able to make some merely
> decents puns in english, I put one very well placed there, and you
> come telling me about binary compatiblity?
>
> 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)
>
We want this to be usable in non-Linux and cross-bitness. So:
- all primitive data types are __u32, __u64 and friends (not u32 or u64)
- all structures and constants are prefixed with kvm_
- all fields are naturally aligned
- add padding on structures larger than 8 bytes to be a multiple of 8 bytes
Following these simple rules is the key to health and happiness.
--
Do not meddle in the internals of kernels, for they are subtle and quick to panic.
-------------------------------------------------------------------------
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/
next prev parent reply other threads:[~2007-10-16 7:14 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
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 [this message]
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=471464E7.1010303@qumranet.com \
--to=avi-atkuwr5tajbwk0htik3j/w@public.gmane.org \
--cc=glommer-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=hollisb-r/Jw6+rmf7HQT0dZR+AlfA@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