qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
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 14:25:30 +0300	[thread overview]
Message-ID: <50166F2A.1040507@redhat.com> (raw)
In-Reply-To: <1343647217.21647.40.camel@pasglop>

On 07/30/2012 02:20 PM, Benjamin Herrenschmidt wrote:
> 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.

Emulating something incorrectly on purpose is wrong.  Use qxl or stdvga
(you can make either the default for ppc), but don't break cirrus or
rely on it being broken.

>> > 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 :-(

Too bad :(

> 
> 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...

That's possible, but why not go all the way to qxl?

That will give you better graphics performance with no need to hack.

-- 
error compiling committee.c: too many arguments to function

  reply	other threads:[~2012-07-30 11:25 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 [this message]
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=50166F2A.1040507@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 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).