mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: "Antonio Vargas" <windenntw@gmail.com>
To: "David Lang" <dlang@digitalinsight.com>,
	"Rusty Russell" <rusty@rustcorp.com.au>,
	"Andrew Morton" <akpm@osdl.org>,
	jeremy@xensource.com, greg@kroah.com, zach@vmware.com,
	linux-kernel@vger.kernel.org, torvalds@osdl.org,
	hch@infradead.org, jlo@vmware.com, xen-devel@lists.xensource.com,
	simon@xensource.com, ian.pratt@xensource.com, jeremy@goop.org
Subject: Re: A proposal - binary
Date: Fri, 4 Aug 2006 20:46:05 +0200	[thread overview]
Message-ID: <69304d110608041146t44077033j9a10ae6aee19a16d@mail.gmail.com> (raw)
In-Reply-To: <Pine.LNX.4.63.0608040944480.18902@qynat.qvtvafvgr.pbz>

On 8/4/06, David Lang <dlang@digitalinsight.com> wrote:
> On Fri, 4 Aug 2006, Rusty Russell wrote:
>
> > On Thu, 2006-08-03 at 22:53 -0700, Andrew Morton wrote:
> >> On Fri, 04 Aug 2006 15:04:35 +1000
> >> Rusty Russell <rusty@rustcorp.com.au> wrote:
> >>
> >>> On Thu, 2006-08-03 at 21:18 -0700, Andrew Morton wrote:
> >>> Everywhere in the kernel where we have multiple implementations we want
> >>> to select at runtime, we use an ops struct.  Why should the choice of
> >>> Xen/VMI/native/other be any different?
> >>
> >> VMI is being proposed as an appropriate way to connect Linux to Xen.  If
> >> that is true then no other glue is needed.
> >
> > Sorry, this is wrong.  VMI was proposed as the appropriate way to
> > connect Linux to Xen, *and* native, *and* VMWare's hypervisors (and
> > others).  This way one Linux binary can boot on all three, using
> > different VMI blobs.
> >
> >>> Yes, we could force native and Xen to work via VMI, but the result would
> >>> be less clear, less maintainable, and gratuitously different from
> >>> elsewhere in the kernel.
> >>
> >> I suspect others would disagree with that.  We're at the stage of needing
> >> to see code to settle this.
> >
> > Wrong again.  We've *seen* the code for VMI, and fairly hairy.  Seeing
> > the native-implementation and Xen-implementation VMI blobs will not make
> > it less hairy!
> >
> >>>  And, of course, unlike paravirt_ops where we
> >>> can change and add ops at any time, we can't similarly change the VMI
> >>> interface because it's an ABI (that's the point: the hypervisor can
> >>> provide the implementation).
> >>
> >> hm.  Dunno.  ABIs can be uprevved.  Perhaps.
> >
> > Certainly VMI can be.  But I'd prefer to leave the excellent hackers at
> > VMWare with the task of maintaining their ABI, and let Linux hackers
> > (most of whom will run native) manipulate paravirt_ops freely.
> >
> > We're not good at maintaining ABIs.  We're going to be especially bad at
> > maintaining an ABI when the 99% of us running native will never notice
> > the breakage.
>
> some questions from a user. pleas point out where I am misunderstanding things.

asking is the smart way :)

> one of the big uses of virtualization will be to run things in sandboxes, when
> people do this they typicaly migrate the sandbox from system to system over time
> (working with chroot sandboxes I've seen some HUGE skews between what's running
> in the sandbox and what's running in the host). If the interface between the
> guest kernel and the hypervisor isn't fixed how could somone run a 2.6.19 guest
> and a 2.6.30 guest at the same time?
>
> if it's only a source-level API this implies that when you move your host kernel
> from 2.6.19 to 2.6.25 you would need to recompile your 2.6.19 guest kernel to
> support the modifications. where are the patches going to come from to do this?
>
> It seems to me from reading this thread that the PowerPC and S390 have a ABI
> defined, specificly defined by the hardware in the case of PowerPC and by the
> externaly maintained, Linux-independant hypervisor (which is effectivly the
> hardware) in the case of the s390.

the trick with ppc, s390, m68k... is that they were defined since day
zero (*simplifies 68000/68010 history here*) so that when you run as
non-priviledged-task and try to execute a priviledged instruction,
then the security acts out and the OS gets control. x86 wasn't since
they had some instructions where the non-priviledged could detect it
was so, thus barring any way of the hypervisor appearing invisible.
this is solved on x86 and x64_64 with the new extensions.

> If there's going to be long-term compatability between different hosts and
> guests there need some limits to what can change.
>
> needing to uprev the host when you uprev a guest is acceptable
>
> needing to uprev a guest when you uprev a host is not.

Now, allowing this transparent acting is great since you can run your
normal kernel as-is as a guest. But to get close to 100% speed, what
you do is to rewrite parts of the OS to be aware of the hypervisor,
and stablish a common way to talk.

Thus happens the work with the paravirt-ops. Just like you can use any
filesystem under linux because they have a well-defined intrface to
the rest of the kernel, the paravirt-ops are the way we are wrking to
define an interface so that the rest of the kernel can be ignorant to
whether it's running on the bare metal or as a guest.

Then, if you needed to run say 2.6.19 with hypervisor A-1.0, you just
need to write paravirt-ops which talk and translate between 2.6.19 and
A-1.0. If 5 years later you are still running A-1.0 and want to run a
2.6.28 guest, then you would just need to write the paravirt-ops
between 2.6.28 and A-1.0, with no need to modify the rest of the code
or the hypervisor.

At the moment we only have 1 GPL hypervisor and 1 binary one. Then
maybe it's needed to define if linux should help run under binary
hypervisors, but imagine instead of this one, we had the usual Ghyper
vs Khyper separation. We would prefer to give the same adaptations to
both of them and abstract them away just like we do with filesystems.

> this basicly boils down to 'once you expose an interface to a user it can't
> change', with the interface that's being exposed being the calls that the guest
> makes to the host.

Yes, that's the reason some mentioned ppc, sparc, s390... because they
have been doing this longer than us and we could consider adopting
some of their designs (just like we did for POSIX system calls ;)

> David Lang

-- 
Greetz, Antonio Vargas aka winden of network

  parent reply	other threads:[~2006-08-04 18:46 UTC|newest]

Thread overview: 96+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-08-03 10:14 Zachary Amsden
2006-08-03 11:16 ` Arjan van de Ven
2006-08-03 12:16   ` Antonio Vargas
2006-08-03 15:17     ` Rik van Riel
2006-08-03 16:05     ` Chris Wright
2006-08-03 17:57     ` Zachary Amsden
2006-08-03 18:29       ` Antonio Vargas
2006-08-03 18:47         ` Zachary Amsden
2006-08-03 18:08   ` Zachary Amsden
2006-08-03 19:03     ` Greg KH
2006-08-03 19:14       ` Zachary Amsden
2006-08-03 19:36         ` Greg KH
2006-08-03 19:56           ` Dave Jones
2006-08-03 19:59             ` Greg KH
2006-08-03 20:25             ` Options depending on STANDALONE Adrian Bunk
2006-08-03 20:28               ` Greg KH
2006-08-03 20:41                 ` Dave Jones
2006-08-03 23:40               ` [v4l-dvb-maintainer] " Trent Piepho
2006-08-05 10:51                 ` Adrian Bunk
2006-08-06 11:18                   ` Oliver Endriss
2006-08-13 16:36                     ` Adrian Bunk
2006-08-14 21:15                       ` Trent Piepho
2006-08-27 21:45                         ` Adrian Bunk
2006-08-03 19:48     ` A proposal - binary linux-os (Dick Johnson)
2006-08-04  6:13       ` Jan Engelhardt
2006-08-03 21:03     ` Alan Cox
2006-08-03 13:21 ` Alan Cox
2006-08-03 20:29   ` Willy Tarreau
2006-08-03 21:12     ` Alan Cox
2006-08-03 21:27       ` Zachary Amsden
2006-08-03 15:35 ` Rik van Riel
2006-08-03 18:36   ` Zachary Amsden
2006-08-05 10:45     ` Pavel Machek
2006-08-06 22:45       ` Zachary Amsden
2006-08-06 22:59         ` Greg KH
2006-08-08  0:12         ` Pavel Machek
2006-08-08  0:42           ` Zachary Amsden
2006-08-09  7:43             ` Pavel Machek
2006-08-03 19:06 ` Greg KH
2006-08-03 19:26   ` Zachary Amsden
2006-08-03 20:01     ` Greg KH
2006-08-03 21:41       ` Zachary Amsden
2006-08-03 22:33         ` Alan Cox
2006-08-03 22:30           ` Greg KH
2006-08-03 22:49             ` Zachary Amsden
2006-08-03 22:31           ` Zachary Amsden
2006-08-03 23:30             ` Alan Cox
2006-08-03 23:40               ` Zachary Amsden
2006-08-04 10:21                 ` Alan Cox
2006-08-04 14:34                   ` Theodore Tso
2006-08-05  0:06                     ` Paul Mackerras
2006-08-04  8:56         ` Christoph Hellwig
2006-08-04  2:52       ` Jeremy Fitzhardinge
2006-08-04  4:18         ` Andrew Morton
2006-08-04  5:04           ` Rusty Russell
2006-08-04  5:53             ` Andrew Morton
2006-08-04  7:04               ` Rusty Russell
2006-08-04  7:21                 ` Andrew Morton
2006-08-04  8:29                   ` Rusty Russell
2006-08-04 16:57                 ` David Lang
2006-08-04 18:38                   ` Jeremy Fitzhardinge
2006-08-04 18:46                   ` Antonio Vargas [this message]
2006-08-04 19:06                     ` David Lang
2006-08-04 19:26                       ` Arjan van de Ven
2006-08-04 19:45                         ` David Lang
2006-08-04 20:11                           ` Jeremy Fitzhardinge
2006-08-04 20:31                             ` David Lang
2006-08-04 21:26                               ` Jeremy Fitzhardinge
2006-08-04 21:40                                 ` Bill Rugolsky Jr.
2006-08-04 22:00                           ` Arjan van de Ven
2006-08-04 22:45                             ` David Lang
2006-08-04 19:45                       ` Jeff Dike
2006-08-04 19:49                         ` David Lang
2006-08-04 21:46                           ` Jeff Dike
2006-08-04 22:40                             ` David Lang
2006-08-04  5:40           ` Chris Wright
2006-08-04  6:28             ` Antonio Vargas
2006-08-04  7:01               ` Chris Wright
2006-08-04  7:19                 ` Antonio Vargas
2006-08-04  7:37                   ` Chris Wright
2006-08-04 18:34       ` Chris Wright
2006-08-04 20:41         ` Zachary Amsden
2006-08-04 20:52           ` Chris Wright
2006-08-04 21:26           ` Alan Cox
2006-08-05  1:14             ` James Bottomley
2006-08-05  5:37               ` Zachary Amsden
2006-08-05 10:42                 ` Adrian Bunk
2006-08-05 11:50                 ` Alan Cox
2006-08-04 22:01           ` Andi Kleen
2006-08-04 22:39             ` Zachary Amsden
2006-08-04 22:52               ` Andi Kleen
2006-08-04 22:43             ` David Lang
2006-08-05 10:47             ` Adrian Bunk
2006-08-05 11:57               ` Andi Kleen
2006-08-05  1:30           ` James Bottomley
2006-08-05  4:33             ` Zachary Amsden

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=69304d110608041146t44077033j9a10ae6aee19a16d@mail.gmail.com \
    --to=windenntw@gmail.com \
    --cc=akpm@osdl.org \
    --cc=dlang@digitalinsight.com \
    --cc=greg@kroah.com \
    --cc=hch@infradead.org \
    --cc=ian.pratt@xensource.com \
    --cc=jeremy@goop.org \
    --cc=jeremy@xensource.com \
    --cc=jlo@vmware.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rusty@rustcorp.com.au \
    --cc=simon@xensource.com \
    --cc=torvalds@osdl.org \
    --cc=xen-devel@lists.xensource.com \
    --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

all inboxes | Powered by JetHome®