From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: Avi Kivity <avi@redhat.com>
Cc: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] Cirrus bugs vs endian: how two bugs cancel each other out
Date: Mon, 30 Jul 2012 21:20:17 +1000 [thread overview]
Message-ID: <1343647217.21647.40.camel@pasglop> (raw)
In-Reply-To: <50165D0A.6060608@redhat.com>
On Mon, 2012-07-30 at 13:08 +0300, Avi Kivity wrote:
>
> > So we end up with what is effectively a BE framebuffer thanks to qemu
> > hard coding what it thinks the guest endian is (btw, this is quite
> > busted in theory as well since PPC can be bi-endian for example).
> >
> > Anyways, it works today, it's just that the HW model is wrong... and I
> > don't want to fix it. Any objection ?
> >
>
> Yes. If a correct guest comes along and tries to use cirrus, it will break.
Right. Cirrus on ppc was used on PReP and Amiga for example though not
many people really care about those platforms anymore. I'm not too
worried at this point with that possibility but we shall know about it.
> > As for the work I'm doing to brush up pci-vga a bit, I'm tempted to add
> > an MMIO reg or a VBE config reg bit to allow configuring the endianness
> > of the underlying fb with a default to what qemu does today.
>
> What are those byteswapped apertures? Some chipset thing that does the
> byteswap?
The card itself. The 16M BAR is divided in 4 "apertures" (at least some
Cirrus models do that including the one we emulate by default). One is
no byteswap, two are 16-bit and 32-bit byteswap and the last one uses a
specific byteswap for video overlay which I haven't looked at in detail.
> IIRC ppc has a bit in the TLB entry that tells it to byteswap. Can't we
> use it directly map the framebuffer with byteswapping?
Unfortunately only embedded ppc's have that :-(
We can also make the fbdev/fbcon driver do the swapping in SW, but it's
a relatively unusual code path and I don't think it works properly with
X, I don't think it can be made to work properly with the generic X KMS
at this point.
Now, cirrusdrmfb is already specific to the qemu cirrus variant in
several ways, I wouldn't mind keeping it that way and if we "fix" the
endianness model, maybe having a "hidden" register to flip it back to
it's current mode of operation that cirrusdrmfb would use...
Note that in the long run, I don't think cirrus should have much future
for us (ppc) anyway. I'm working on some simple improvements to qemu-vga
to give it basic 2D accel and the corresponding kernel drivers which
should give us overall better functionality than cirrus with simpler &
more maintainable code, along possibly with a virtio tunnel if we want
to pipe spice or similar through without using the virtio-serial
crackpot :-)
Cheers,
Ben.
next prev parent reply other threads:[~2012-07-30 11:20 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 [this message]
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
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=1343647217.21647.40.camel@pasglop \
--to=benh@kernel.crashing.org \
--cc=avi@redhat.com \
--cc=qemu-devel@nongnu.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;
as well as URLs for NNTP newsgroup(s).