All of lore.kernel.org
 help / color / mirror / Atom feed
From: Steve Ofsthun <sofsthun@virtualiron.com>
To: Steven Smith <sos22-xen@srcf.ucam.org>
Cc: xen-devel@lists.xensource.com
Subject: Re: Paravirtualised drivers for fully virtualised domains
Date: Tue, 18 Jul 2006 19:24:52 -0400	[thread overview]
Message-ID: <44BD6DC4.3020304@virtualiron.com> (raw)
In-Reply-To: <20060718203422.GA7497@cam.ac.uk>

Steven Smith wrote:

>>Have you built the guest environment on anything other than a 2.6.16
>>version of Linux?  We ran into extra work supporting older linux versions.
> 
> #ifdef soup will get you back to about 2.6.12-ish without too many
> problems.  These patches don't include that, since it would complicate
> merging.

I was thinking about SLES9 (2.6.5), RHEL4 (2.6.9), RHEL3 (2.4.21).

>>You did some work to make xenbus a loadable module in the guest domains.
>>Can this be used to make xenbus loadable in Domain 0?
> 
> I can't see any immediate reason why not, but it's not clear to me why
> that would be useful.

It just makes it easier to insert alternate bus implementations.

>>Domain 0 buffer cache coherency issues can cause catastrophic file
>>system corruption.  This is due to the backend accessing the backing
>>device directly, and QEMU accessing the device through buffered
>>reads and writes. We are working on a patch to convert QEMU to use
>>O_DIRECT whenever possible.  This solves the cache coherency issue.
> 
> I wasn't aware of these issues.  I was much more worried about domU
> trying to cache the devices twice, and those caches getting out of
> sync.  It's pretty much the usual problem of configuring a device into
> two domains and then having them trip over each other.  Do you have a
> plan for dealing with this?

We eliminate any buffer cache use in domain 0 for backing store objects.
This prevents double caching and reduces domain 0 's memory footprint.
We don't restrict multiple domain access to the same "raw" backing
object.  Real hardware allows this (at least for SCSI/FC).  This may be
necessary for shared storage clustering.

>>Actually presenting two copies of the same device to linux can cause
>>its own problems.  Mounting using LABEL= will complain about duplicate
>>labels.  However, using the device names directly seems to work.  With
>>this approach it is possible to decide in the guest whether to mount
>>a device as an emulated disk or a PV disk.
> 
> My plan here was to just not support VMs which mix paravirtualised and
> ioemulated devices, requiring the user to load the PV drivers from an
> initrd.  Of course, you have to load the initrd somehow, but the
> bootloader should only be reading the disk, which makes the coherency
> issues much easier.  As a last resort, rombios could learn about the
> PV devices, but I'd rather avoid that if possible.
> 
> Your way would be preferable, though, if it works.

We currently only allow this for the boot device (mainly to avoid the
rombios work you mention).  In addition, we make the qemu device only
visible to the rombios (and not the guest O/S) by controlling the IDE
probe logic in qemu.

>>>-- Adding a new device to the qemu PCI bus which is used for
>>>  bootstrapping the devices and getting an IRQ.
>>
>>Have you thought about supporting more than one IRQ.  We are experimenting
>>with an IRQ per device class (BUS, NIC, VBD).
> 
> I considered it, but it wasn't obvious that there would be much
> benefit.  You can potentially scan a smaller part of the pending event
> channel mask, but that's fairly quick already.

The main benefit we see is for legacy Linux variants that limit 1 CPU
per IRQ.  Allowing additional IRQs increases the possible interrupt
processing concurrency.  In addition, one interrupt class can't starve
another (on SMP guests).

Steve
-- 
Steve Ofsthun - Virtual Iron Software, Inc.

  reply	other threads:[~2006-07-18 23:24 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-07-18 12:51 Paravirtualised drivers for fully virtualised domains Steven Smith
2006-07-18 13:45 ` Ben Thomas
2006-07-18 16:00 ` Steve Ofsthun
2006-07-18 16:23   ` Mark Williamson
2006-07-18 20:34   ` Steven Smith
2006-07-18 23:24     ` Steve Ofsthun [this message]
2006-07-19  6:50       ` Gerd Hoffmann
2006-07-26 15:34 ` Steven Smith
2006-08-08  9:42   ` Steven Smith
2006-08-09 18:05     ` Steve Dobbelstein
2006-08-10 11:08     ` Paravirtualised drivers for fully virtualised domains, rev9 Steven Smith
2006-08-10 21:48       ` Steve Dobbelstein
2006-08-11 10:17         ` Steven Smith
2006-08-11 10:31           ` Harry Butterworth
2006-08-14  9:12             ` Steven Smith
2006-08-11 17:04           ` Steve Dobbelstein
2006-08-12  8:32             ` Steven Smith
2006-08-14 21:22               ` Steve Dobbelstein
2006-08-15  7:27                 ` Steven Smith
2006-08-15 22:05                   ` Steve Dobbelstein
2006-08-16 13:36         ` Steven Smith
2006-08-16 13:33       ` Paravirtualised drivers for fully virtualised domains, rev11 sos22-xen
  -- strict thread matches above, loose matches on Subject: below --
2006-07-19  4:14 Paravirtualised drivers for fully virtualised domains Ian Pratt
2006-07-26 22:35 Nakajima, Jun
2006-08-02  8:01 He, Qing
2006-08-02  9:30 ` Steven Smith
2006-08-02  8:23 Zhao, Yunfeng
2006-08-02  8:56 ` Steven Hand
2006-08-02  9:37   ` Steven Smith
2006-08-02  9:49 He, Qing
2006-08-02 10:35 He, Qing
2006-08-03  6:59 ` Himanshu Raj
2006-08-03  9:35   ` Steven Smith
2006-08-04  6:13     ` Himanshu Raj

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=44BD6DC4.3020304@virtualiron.com \
    --to=sofsthun@virtualiron.com \
    --cc=sos22-xen@srcf.ucam.org \
    --cc=xen-devel@lists.xensource.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 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.