https://bugzilla.novell.com/show_bug.cgi?id=855821
https://bugzilla.novell.com/show_bug.cgi?id=855821#c5
--- Comment #5 from Takashi Iwai 2013-12-17 15:38:26 UTC ---
OK, I took a more closer look, and found that the problem is deeper than I
thought. The problem is triggered indeed at switching to cirrusdrmfb.
Since 3.12, we use simplefb, which also covers EFI and others. It's
implemented in two forms: it creates a platform device from the boot-dependent
resource, and then it creates a fb device. In the case of QEMU, Cirrus VGA
entry is taken as a resource of this platform device.
Now, when cirrus module is loaded, the FB core tries to switch to it, and
destroys the old FB. It calls destroy fb ops, which should release the
resources. But, in the case of simplefb, it does only iounmap() but never
releases the resources. This results in the VRAM error message because of
request_mem_region() error, and the cirrus driver gives up at this point.
A tricky part is that the resources of simplefb is managed by the platform
device, not by the framebuffer device. And, another problem is that there is
no dynamic resource release function for platform devices. It's released only
at the device destruction. We need to overcome these two things.
The patch attached below is a quick fix: it adds a new API function,
platform_device_release_resources(), and calls it for the parent device of the
framebuffer device at destroy callback. It seems working here. But we need to
discuss with the upstream.
BTW, it took time until finding out the culprit, just because of grub2. For
making this happening, you must pass "set gfxpayload=keep" in the corresponding
grub2 entry. grub2 scripts are so clever and check over /boot/config-* files
to judge whether adding this line or not, which I didn't install at manual
kernel installation. Without the gfxpayload line, QEMU resets to the normal
VGA, and the problem doesn't happen, as the kernel handles the initial console
as VGA. If anyone wants more debugging on this, beware of this...
--
Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.