Panic booting qemu-system-sparc64 with bochs_drm
Sam Ravnborg
sam at ravnborg.org
Sat Jul 4 13:41:15 UTC 2020
Hi Mark.
On Sat, Jul 04, 2020 at 02:09:38PM +0100, Mark Cave-Ayland wrote:
> On 04/07/2020 12:11, Mark Cave-Ayland wrote:
>
> > According to gdbstub the destination address in $g3 looks like this:
> >
> > Breakpoint 1, 0x00000000007ad8e4 in cfb_imageblit ()
> > (gdb) i r $g3
> > g3 0x100220000 4297195520
> >
> >
> > The 0x100220000 address still isn't right. On sun4u the PCI address space is mapped
> > at physical address 0x1fe00000000 and adding these two together gives 0x1ff00220000
> > which seems closer, but still not the correct framebuffer address 0x1ff22000000 which
> > is reported at boot:
> >
> > [ 9.007161] [drm] Found bochs VGA, ID 0xb0c5.
> > [ 9.007840] [drm] Framebuffer size 16384 kB @ 0x1ff22000000, mmio @ 0x1ff23000000.
>
> As a comparison, I took the last known good commit 7a0483ac4ffc~1: "drm/bochs: add
> basic prime support" and added some debug in cfb_imageblit() to allow me to pick out
> p->screen_base:
>
> (gdb) i r $o1
> o1 0x1ff22000000 2195298713600
>
> When running git master with your patch in the same way I get a completely different
> value:
>
> (gdb) i r $o1
> o1 0x100050000 4295294976
>
> Does p->screen_base need to be initialised differently when using the cfb helpers?
I think what is happening is that the bochs driver request a shadow copy
for the frambuffer. And with the change to fbops we now use the cfb_
functions to write to the shadow framebuffer - which is not in any IO
space. So this does not work.
So maybe all we need is the fix in drm_fb_helper_dirty_blit_real().
If you try to undo the change so fbops is set to &drm_fbdev_fb_ops,
but keep the fix in drm_fb_helper_dirty_blit_real() how does it then
behave?
I did not find time to follow your instructions to test this myself with
qemu - sorry.
Sam
>
>
> ATB,
>
> Mark.
More information about the dri-devel
mailing list