qemu-ppc
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-ppc] R128 interrupts


From: Gerd Hoffmann
Subject: Re: [Qemu-ppc] R128 interrupts
Date: Mon, 12 Aug 2019 07:08:40 +0200
User-agent: NeoMutt/20180716

On Sun, Aug 11, 2019 at 04:36:18AM +0200, BALATON Zoltan wrote:
> Hello Gerd,
> 
> Just a note that I've sent some ati-vga patches during the freeze but I'm
> going to have v2 for some of them. I'll plan to resend all outstading
> patches as one series after 4.1 release for your convenience so you don't
> have to go back and find those patches one by one.

Ah, thanks for the heads up.  I was about to start colleting these with
the freeze being over soon.

> Now question is how to emulate this. Ideally this should be locked to the
> host's VBlank so we avoid tearing which is the usual reason to use this
> interrupt but we would need a way to get this on different platforms. On the
> other hand the guest might expect this to happen at the frequency of the
> mode it has programmed the card to which means that first we would need to
> understand the clocking that we currently conveniently ignore to find out
> the frequency and if that does not match the hosts mode we can't sync them.
> Or for simplicity and a first version to try if it improves anything we
> could ignore all this and just run a timer at 60Hz and generate VBlank
> interrupt by that when enabled? Any better idea anyone? I'm not going to try
> to implement this now so feel free to try if you want.

I'd start with a fixed frequency timer and refine later.

The more advanced way would be to hook vblank into vga_update_display().
That probably needs an additional timer.  The display update frequency
can be quite low, qemu reduces it when idle.  In case vnc is used and no
vnc viewer is connected the display update callback is called every few
seconds only.

> Another question to Gerd is how to set the maximum and preferred modes for
> ddc-edid? I know about the maxx,maxy and xres,yres properties of the edid
> generator but the way it's passed on by stdvga and other cards don't work
> for ati-vga because instead of embedding the edid we use i2c-ddc so not sure
> how I could pass these options. I've tried setting them with -global
> i2c-ddc,maxx=... or similar but that does not seem to work. Should that work
> or how to set this correctly?

That should have worked.  Problem is the edid is generated in the init
callback, it should be the realize callback instead (that one is called
after setting properties).

Also with object_property_add_alias() it should be possible to make the
properties settable via -device ati-vga,xres=... (see virtio-pci devices
for sample code, they use object_property_add_alias to make
virtio-${type}-device properties visible on the virtio-${type}-pci
parent device).

> This is a problem because with the current edid data clients tend to
> select a very high res mode (around 2000x1500 don't know exact
> numbers) which is bigger than some people's screens so we'd need a way
> to tell what mode this should use for sane default.

Saw this too.  Older guests seem to not care about the preferred mode
(which should be 1024x768) and pick the highest available resolution
instead.

cheers,
  Gerd




reply via email to

[Prev in Thread] Current Thread [Next in Thread]