From: Avi Kivity <avi@redhat.com>
To: Benjamin Herrenschmidt <benh@kernel.crashing.org>
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 13:08:10 +0300 [thread overview]
Message-ID: <50165D0A.6060608@redhat.com> (raw)
In-Reply-To: <1343629462.21647.32.camel@pasglop>
On 07/30/2012 09:24 AM, Benjamin Herrenschmidt wrote:
> So I got cirrus working on ppc with cirrusdrmfb...
>
> The fun part is that it works :-)
>
> Basically, the issue is that normally, for it to work, one would have to
> access the framebuffer using the appropriate aperture for byteswapping
> based on the bpp.
>
> However, qemu doesn't emulate those apertures ... and cirrusdrmfb
> either.
>
> In fact, qemu cirrus model is just dumb and assumes guest native
> byteorder for the framebuffer.
>
> The good thing is that this makes it work... the bad thing is that it's
> a completely incorrect HW model and if the linux driver wasn't also
> buggy it wouldn't work.
>
> However it's also pretty much unfixable without making it also unusable
> in terms of performance so I want to check with you guys if it's ok to
> just leave it as-is.
>
> Basically, if the fb was LE as it's supposed to be, one would have to
> use the byteswapped apertures. But those can only be emulated by
> trapping on every access to turn it into MMIO emulation, which means
> unusable performances.
>
> 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.
> 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?
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?
--
error compiling committee.c: too many arguments to function
next prev parent reply other threads:[~2012-07-30 10:08 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 [this message]
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
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=50165D0A.6060608@redhat.com \
--to=avi@redhat.com \
--cc=benh@kernel.crashing.org \
--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 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.