qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Anthony Liguori <anthony@codemonkey.ws>
To: Avi Kivity <avi@redhat.com>
Cc: Rusty Russell <rusty@rustcorp.com.au>, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] Cirrus bugs vs endian: how two bugs cancel each other out
Date: Mon, 30 Jul 2012 11:01:20 -0500	[thread overview]
Message-ID: <87ipd5xmpb.fsf@codemonkey.ws> (raw)
In-Reply-To: <50169BD5.6060807@redhat.com>

Avi Kivity <avi@redhat.com> writes:

> On 07/30/2012 05:29 PM, Anthony Liguori wrote:
>> Avi Kivity <avi@redhat.com> writes:
>> 
>>>>> Virtio makes sense for qxl, but for now we have the original pci model
>>>>> which I don't see a reason why it can't work for ppc.
>>>> 
>>>> I'm sure it can work for PPC given enough effort.  But I think the
>>>> question becomes, why not invest that effort in moving qxl to the
>>>> standard transport that the rest of our PV devices use.
>>>
>>> The drm drivers for the current model are needed anyway; so moving to
>>> virtio is extra effort, not an alternative.
>> 
>> This is just a point in time statement.  If we were serious about using
>> virtio then we could quickly introduce a virtio transport and only
>> target the DRM drivers at the virtio transport.
>
> That doesn't help all the deployed hypervisors out there.  IMO we're
> mature enough, and the difference doesn't warrant a new interface.

QXL has a lot of short comings.  Here's a short list:

- It's 100% PC centric.  It requires PCI and is completely oblivious to
  endianness.

- It's all-or-nothing with respect to Spice support.  libspice is a big
  external dependency.  It cannot be mandated as a QEMU requirement
  because it's not portable enough.  This means we can never make qxl
  the default device because we can't guarantee it's there.

- There's no obvious way to map to non-PCI systems (either S390 or
  embedded platforms).

I'm not saying that we should remove qxl.c from QEMU.  We can continue
to support that ABI forever.

But there's a lot of value in a new graphics interface that uses virtio
and negotiates support for the Spice protocol.  That way, if QEMU
doesn't have Spice support, the feature won't be exposed to the guest
and you can still have a legacy VGA interface.

Then we can change the default.  Basic 2d commands (like blit and solid
fill) can be done without going through libspice.

Then we can stop messing around with having multiple display types.
It would be a huge usability improvement and would allow us to focus on
a single graphics adapter for all architectures.

>
>>> Note virtio doesn't support mapping framebuffers yet
>> 
>> Yes.  I haven't seen a good proposal yet on how to handle this.  I think
>> this is the main problem to solve.
>
> It doesn't seem to be such a huge problem, though it does turn virtio
> into a respec'ed PCI.

Virtio was originally designed to be a DMA API (although not ABI).  From
a virtio-pci perspective, adding a large memory area that can be
referenced is not a big deal at all.  You can take PFNs into the memory
area and just handle it like you would any other address reference.

But for the virtio API within Linux, it presents a challenge.
Originally, there was a desire to support DMA-based interfaces like
Xen's grant tables or PowerVM's TCE transfers.

While there have been proof of concepts, it's never landed in an
upstream kernel.  I'd be perfectly happy forcing the virtio API to
assume the ability to share large areas of memory between the host and
guest and eliminate the possibility to support all types of hypervisors
for some devices.

(While Xen supports shared memory, PowerVM does not--I don't give a damn
about supporting PowerVM FWIW).

Rusty, what do you think about the above?

Regards,

Anthony Liguori

>
>> 
>>> or the entire vga compatibility stuff
>> 
>> This is actually independent of virtio.  A virtio-pci device could
>> expose it's class code as a VGA adapter and also handle I/O accesses for
>> the legacy region.  This is strictly a PC-ism.
>
> We have to share the BAR space with VGA; not a huge problem.
>
>
> -- 
> error compiling committee.c: too many arguments to function

  reply	other threads:[~2012-07-30 16:01 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-07-30  6:24 [Qemu-devel] Cirrus bugs vs endian: how two bugs cancel each other out Benjamin Herrenschmidt
2012-07-30 10:08 ` Avi Kivity
2012-07-30 11:20   ` Benjamin Herrenschmidt
2012-07-30 11:25     ` Avi Kivity
2012-07-30 11:54       ` Benjamin Herrenschmidt
2012-07-30 11:58         ` Avi Kivity
2012-07-30 12:08           ` Benjamin Herrenschmidt
2012-07-30 12:15             ` Avi Kivity
2012-07-30 12:23               ` Benjamin Herrenschmidt
2012-07-30 16:24             ` Alon Levy
2012-07-30 20:19               ` Anthony Liguori
2012-07-30 22:24               ` Benjamin Herrenschmidt
2012-07-31  8:10                 ` Alon Levy
2012-08-01 14:35                 ` Avi Kivity
2012-08-06 12:57             ` Gerd Hoffmann
2012-07-30 13:18           ` Anthony Liguori
2012-07-30 13:30             ` Avi Kivity
2012-07-30 13:45               ` Anthony Liguori
2012-07-30 13:55                 ` Avi Kivity
2012-07-30 14:29                   ` Anthony Liguori
2012-07-30 14:36                     ` Avi Kivity
2012-07-30 16:01                       ` Anthony Liguori [this message]
2012-07-30 23:47                         ` Rusty Russell
2012-07-31  3:16                           ` Benjamin Herrenschmidt
2012-08-06 14:02                             ` Gerd Hoffmann
2012-08-06 21:13                               ` Benjamin Herrenschmidt
2012-08-01 23:29                         ` Andreas Färber
2012-08-06 13:47                         ` Gerd Hoffmann
2012-08-06 14:35                           ` Anthony Liguori
2012-07-31  8:20                     ` Alon Levy
2012-07-30 22:15                   ` Benjamin Herrenschmidt
2012-07-31  0:17                     ` Anthony Liguori
2012-07-31  3:26                       ` Benjamin Herrenschmidt
2012-08-06 13:20             ` Gerd Hoffmann
2012-08-06 21:16               ` Benjamin Herrenschmidt
2012-08-07  5:30                 ` Gerd Hoffmann
2012-08-07  6:07                   ` Benjamin Herrenschmidt
2012-07-30 16:19         ` Alon Levy
2012-08-01 15:42           ` Andreas Färber
2012-08-01 19:22             ` Anthony Liguori
2012-08-03  6:45               ` Alon Levy
2012-08-03 13:41                 ` Anthony Liguori
2012-08-07  7:00                   ` Alon Levy
2012-08-07  8:01                     ` Gerd Hoffmann
2012-08-07 13:05                       ` Erlon Cruz
2012-08-07 14:07                         ` Gerd Hoffmann
2012-08-07 19:43                           ` Erlon Cruz
2012-08-08  6:18                             ` Gerd Hoffmann
2012-08-08 14:14                               ` Erlon Cruz
2012-08-09  6:17                                 ` Gerd Hoffmann
2012-07-30 15:18 ` Blue Swirl
2012-07-30 15:30   ` Peter Maydell
2012-07-30 15:44     ` Blue Swirl
2012-07-31  8:44 ` ronnie sahlberg
2012-07-31 10:30   ` Benjamin Herrenschmidt

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=87ipd5xmpb.fsf@codemonkey.ws \
    --to=anthony@codemonkey.ws \
    --cc=avi@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=rusty@rustcorp.com.au \
    /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;
as well as URLs for NNTP newsgroup(s).