From: Ingo Molnar <mingo@elte.hu>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Jeremy Fitzhardinge <jeremy@goop.org>,
Zachary Amsden <zach@vmware.com>,
Thomas Gleixner <tglx@linutronix.de>,
john stultz <johnstul@us.ibm.com>,
akpm@linux-foundation.org, LKML <linux-kernel@vger.kernel.org>,
Rusty Russell <rusty@rustcorp.com.au>, Andi Kleen <ak@suse.de>,
Chris Wright <chrisw@sous-sol.org>,
Alan Cox <alan@lxorguk.ukuu.org.uk>
Subject: Re: ABI coupling to hypervisors via CONFIG_PARAVIRT
Date: Fri, 9 Mar 2007 20:24:20 +0100 [thread overview]
Message-ID: <20070309192420.GA27747@elte.hu> (raw)
In-Reply-To: <Pine.LNX.4.64.0703091022490.10832@woody.linux-foundation.org>
* Linus Torvalds <torvalds@linux-foundation.org> wrote:
> On Fri, 9 Mar 2007, Ingo Molnar wrote:
> >
> > yes - but we already support the raw hardware ABI, in the native
> > kernel.
>
> Why do you continue to call paravirt an ABI?
>
> We got over that. It's not. It's an API.
>
> VMI is an ABI.
Unfortunately i still dont see where i'm wrong, and i'm really trying to
understand your argument. Is your argument that as long as an ABI (VMI)
is never directly used but only used via wrapper functions
(paravirt_ops), it has no effects whatsoever on the flexibility of the
rest of the software and ceases to have any negative ABI effects? In my
opinion that is an absurd (and incorrect) point so i guess you must mean
something else, but i really cannot think what that is.
I never said paravirt_ops is an ABI. I say that the ABI(s) _behind_
paravirt_ops [in the backend] /does/ limit Linux, even if wrapped,
inevitably, and that i'm simply worried about having 4-5 independent
ABIs behind each paravirt_ops variant each creating a web of design
constraints on the rest of the kernel. To quote a past email of mine:
|| 'paravirt ops can take care of it' - but that is just blatantly
|| _FALSE_: the ABI 'behind' the paravirt_ops 'shines through' via
|| functional coupling
it doesnt matter in how big letters the wrapper functions have 'freedom'
written on them, the _real_ constraint is the user's expectation to have
the hypervisor work with Linux that worked with that particular VMI ABI
in v2.6.21. So the user wants to have its hypervisor 1.12 work with
Linux v2.6.22 - without having to update the hypervisor. And Linux
v2.6.23. Etc. /That/ is the 'ABI effect' i'm worried about. It is a
"compatibility web" that gets more and more entangled with every new
paravirt_ops implementation added.
In practice, when a problem comes up during code rewrite, 90% of the
time we can probably find a way around it via paravirt_ops and the
backend, but i'm simply worried about the remaining 10%. And that 10% is
not hypothetical at all, should i cite specific examples of problems
that i think cannot be solved via Linux-only modifications?
I'm also worried about the sheer QA inertia of having an additional 4-5
hypervisor-ABI constraints on the correctness of the kernel, in addition
to the 2 main CPU variants we have at the moment.
If we said "paravirt_ops must behave like real hardware" then we'd
probably remove some of that risk (although enforcement is still an
issue). But we _specifically_ say that no, it doesnt have to behave like
real hardware. We allow shortcuts, we allow modifications of behavior -
and that's good in quite many cases. But we allow really weird hacks
like the .safe_halt() thing. Our only present requirement it appears is
that "it works with today's hypervisor" - and that requirement
automatically transforms itself into: "all future kernels will work with
all past versions of the hypervisor".
Ingo
next prev parent reply other threads:[~2007-03-09 19:26 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-03-09 18:02 ABI coupling to hypervisors via CONFIG_PARAVIRT Ingo Molnar
2007-03-09 18:28 ` Andi Kleen
2007-03-09 18:30 ` Linus Torvalds
2007-03-09 19:24 ` Ingo Molnar [this message]
2007-03-09 19:51 ` Linus Torvalds
2007-03-09 20:12 ` Ingo Molnar
2007-03-09 21:05 ` Jeremy Fitzhardinge
2007-03-09 21:06 ` Linus Torvalds
2007-03-09 21:36 ` Ingo Molnar
2007-03-09 21:40 ` Jeremy Fitzhardinge
2007-03-09 22:27 ` Linus Torvalds
2007-03-09 22:50 ` Ingo Molnar
2007-03-09 23:07 ` Zachary Amsden
2007-03-09 23:10 ` Ingo Molnar
2007-03-09 23:38 ` Zachary Amsden
2007-03-09 21:04 ` Ingo Molnar
2007-03-09 21:27 ` Chris Wright
2007-03-09 21:47 ` Ingo Molnar
2007-03-09 21:59 ` Jeremy Fitzhardinge
2007-03-09 22:12 ` Ingo Molnar
2007-03-09 22:30 ` Jeremy Fitzhardinge
2007-03-09 22:10 ` Chris Wright
2007-03-09 22:24 ` Ingo Molnar
2007-03-09 22:36 ` Jeremy Fitzhardinge
2007-03-09 23:38 ` Ingo Molnar
2007-03-09 22:46 ` Chris Wright
2007-03-09 23:02 ` Ingo Molnar
2007-03-09 23:13 ` Rik van Riel
2007-03-09 20:50 ` Jan Engelhardt
2007-03-09 22:50 ` Lee Revell
2007-03-14 8:41 ` alsa was " Pavel Machek
2007-03-14 15:59 ` Jaroslav Kysela
2007-03-15 9:03 ` Pavel Machek
2007-03-15 9:10 ` Pavel Machek
2007-03-15 9:23 ` Zachary Amsden
2007-03-15 9:32 ` Pavel Machek
2007-03-09 19:00 ` Chris Wright
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=20070309192420.GA27747@elte.hu \
--to=mingo@elte.hu \
--cc=ak@suse.de \
--cc=akpm@linux-foundation.org \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=chrisw@sous-sol.org \
--cc=jeremy@goop.org \
--cc=johnstul@us.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=rusty@rustcorp.com.au \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.org \
--cc=zach@vmware.com \
/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