https://bugzilla.kernel.org/show_bug.cgi?id=49351
Summary: vga_switcheroo results in black screen (bisected) Product: Drivers Version: 2.5 Kernel Version: 3.7-rc1+ Platform: All OS/Version: Linux Tree: Mainline Status: NEW Severity: normal Priority: P1 Component: Video(DRI - non Intel) AssignedTo: drivers_video-dri@kernel-bugs.osdl.org ReportedBy: e-mail@date.by CC: alexdeucher@gmail.com Regression: Yes
Created an attachment (id=84381) --> (https://bugzilla.kernel.org/attachment.cgi?id=84381) lspci -vvv
On my muxed hybrid system (Lenovo IdeaPad U455) vga_switcheroo doesn't work as expected. Initially after system booting both video cards are powered and the IGD one is active. Then, when i try to switch active gpu with
# echo DIS > /sys/kernel/debug/vgaswitcheroo/switch
screen goes black. The first bad commit, that broke vga_switcheroo is:
commit 492b49a2f21a7ce6cb0abce36017daa06036a626 Author: Alex Deucher alexander.deucher@amd.com Date: Thu Aug 16 14:07:37 2012 -0400
drm/radeon: reorganize ATPX support (v2)
- rework the acpi execute code - User proper parameters for ATPX functions
v2: rebase fixes
Signed-off-by: Alex Deucher alexander.deucher@amd.com
https://bugzilla.kernel.org/show_bug.cgi?id=49351
--- Comment #1 from Alex Deucher alexdeucher@gmail.com 2012-10-22 21:45:08 --- Created an attachment (id=84391) --> (https://bugzilla.kernel.org/attachment.cgi?id=84391) debug output
Can you attach the dmesg output with this patch applied? No need to try and switch gpus. I just need the output.
https://bugzilla.kernel.org/show_bug.cgi?id=49351
--- Comment #2 from Igor Murzov e-mail@date.by 2012-10-23 01:26:13 --- Created an attachment (id=84401) --> (https://bugzilla.kernel.org/attachment.cgi?id=84401) dmesg output for v3.7.0-rc2+ with the patch applied
I'm sure that i did everything right, but there is no "ATPX function mask" message in the log.
https://bugzilla.kernel.org/show_bug.cgi?id=49351
Alex Deucher alexdeucher@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #84391|0 |1 is obsolete| |
--- Comment #3 from Alex Deucher alexdeucher@gmail.com 2012-10-23 13:50:29 --- Created an attachment (id=84441) --> (https://bugzilla.kernel.org/attachment.cgi?id=84441) debug output
Try this version.
https://bugzilla.kernel.org/show_bug.cgi?id=49351
--- Comment #4 from Igor Murzov e-mail@date.by 2012-10-23 15:00:02 --- Still no "ATPX function mask" in the log.
https://bugzilla.kernel.org/show_bug.cgi?id=49351
--- Comment #5 from Alex Deucher alexdeucher@gmail.com 2012-10-23 15:03:11 --- Does it show up if you try switching?
https://bugzilla.kernel.org/show_bug.cgi?id=49351
--- Comment #6 from Igor Murzov e-mail@date.by 2012-10-23 15:15:40 --- No.
https://bugzilla.kernel.org/show_bug.cgi?id=49351
--- Comment #7 from Alex Deucher alexdeucher@gmail.com 2012-10-23 15:19:20 --- It should be printing. Make sure you've booted the right kernel and are using the right module. If you are using an initrd, make sure it's up to date. Make sure you aren't redirecting your kernel output somewhere. Maybe check /var/log/messages as well.
https://bugzilla.kernel.org/show_bug.cgi?id=49351
--- Comment #8 from Igor Murzov e-mail@date.by 2012-10-23 15:44:39 --- Created an attachment (id=84451) --> (https://bugzilla.kernel.org/attachment.cgi?id=84451) dmesg output for v3.7.0-rc2+
This dmesg output was produced with following changes:
---------------------------------------------- static int radeon_atpx_verify_interface(struct radeon_atpx *atpx) { union acpi_object *info; struct atpx_verify_interface output; size_t size; int err = 0; printk("*\n"); info = radeon_atpx_call(atpx->handle, ATPX_FUNCTION_VERIFY_INTERFACE, NULL); if (!info) return -EIO; printk("**\n"); memset(&output, 0, sizeof(output));
size = *(u16 *) info->buffer.pointer; if (size < 8) { printk("ATPX buffer is too small: %zu\n", size); err = -EINVAL; goto out; } printk("***\n"); size = min(sizeof(output), size);
memcpy(&output, info->buffer.pointer, size);
/* TODO: check version? */ printk("ATPX version %u\n", output.version); printk("****\n"); radeon_atpx_parse_functions(&atpx->functions, output.function_bits);
out: kfree(info); return err; } ----------------------------------------------
And there is only one asterisk in the log: ---------------------------------------------- [ 11.199661] vga_switcheroo: enabled [ 11.199747] * ----------------------------------------------
So it is clear that some error is encountered in radeon_atpx_call(atpx->handle, ATPX_FUNCTION_VERIFY_INTERFACE, NULL); That explains why there is no "ATPX function mask" message in the log.
https://bugzilla.kernel.org/show_bug.cgi?id=49351
--- Comment #9 from Alex Deucher alexdeucher@gmail.com 2012-10-23 17:17:15 --- Created an attachment (id=84461) --> (https://bugzilla.kernel.org/attachment.cgi?id=84461) possible fix 1
Try this patch and see if it helps.
https://bugzilla.kernel.org/show_bug.cgi?id=49351
--- Comment #10 from Alex Deucher alexdeucher@gmail.com 2012-10-23 17:22:14 --- Created an attachment (id=84471) --> (https://bugzilla.kernel.org/attachment.cgi?id=84471) possible fix 2
If the previous patch doesn't help, try this one.
https://bugzilla.kernel.org/show_bug.cgi?id=49351
--- Comment #11 from Igor Murzov e-mail@date.by 2012-10-23 17:57:53 --- The first patch doesn't help.
https://bugzilla.kernel.org/show_bug.cgi?id=49351
--- Comment #12 from Igor Murzov e-mail@date.by 2012-10-23 18:25:48 --- Created an attachment (id=84481) --> (https://bugzilla.kernel.org/attachment.cgi?id=84481) dmesg output for v3.7.0-rc2+ with kbug49351-2.diff applied
The second patch doens't help either. And it results in the following warnings: -------------------------------------------- [ 11.675240] ACPI Warning: For _SB_.PCI0.AGP_.VGA_.ATIF: Insufficient arguments - needs 2, found 1 (20120913/nspredef-321) [ 11.675688] ACPI Warning: For _SB_.PCI0.AGP_.VGA_.ATIF: Insufficient arguments - needs 2, found 1 (20120913/nspredef-321) --------------------------------------------
https://bugzilla.kernel.org/show_bug.cgi?id=49351
--- Comment #13 from Alex Deucher alexdeucher@gmail.com 2012-10-23 19:09:28 --- Please attach the dmesg output from a working kernel.
https://bugzilla.kernel.org/show_bug.cgi?id=49351
Alex Deucher alexdeucher@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #84441|0 |1 is obsolete| | Attachment #84461|0 |1 is obsolete| | Attachment #84471|0 |1 is obsolete| |
--- Comment #14 from Alex Deucher alexdeucher@gmail.com 2012-10-23 19:12:29 --- Created an attachment (id=84491) --> (https://bugzilla.kernel.org/attachment.cgi?id=84491) debug output
Please attach the dmesg output with this patch applied.
https://bugzilla.kernel.org/show_bug.cgi?id=49351
--- Comment #15 from Igor Murzov e-mail@date.by 2012-10-23 20:02:35 --- Created an attachment (id=84511) --> (https://bugzilla.kernel.org/attachment.cgi?id=84511) dmesg output for v3.5.2
https://bugzilla.kernel.org/show_bug.cgi?id=49351
--- Comment #16 from Igor Murzov e-mail@date.by 2012-10-23 20:42:41 --- Created an attachment (id=84531) --> (https://bugzilla.kernel.org/attachment.cgi?id=84531) dmesg output for v3.7.0-rc2+ with kbug49351.diff applied
[ 11.833549] vga_switcheroo: enabled [ 11.833648] evaluate ATPX got AE_NOT_FOUND [ 11.833750] buffer.pointer NULL
https://bugzilla.kernel.org/show_bug.cgi?id=49351
Alex Deucher alexdeucher@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #84491|0 |1 is obsolete| |
--- Comment #17 from Alex Deucher alexdeucher@gmail.com 2012-10-23 20:52:43 --- Created an attachment (id=84541) --> (https://bugzilla.kernel.org/attachment.cgi?id=84541) possible fix
Does this patch fix the issue?
https://bugzilla.kernel.org/show_bug.cgi?id=49351
--- Comment #18 from Igor Murzov e-mail@date.by 2012-10-23 21:27:47 --- Created an attachment (id=84561) --> (https://bugzilla.kernel.org/attachment.cgi?id=84561) dmesg output for v3.7.0-rc2+ with the patch from comment #17
vga_switcheroo seems to work fine with the last patch.
[ 11.832217] vga_switcheroo: enabled [ 11.852254] ATPX version 1 [ 11.852325] ATPX function mask 0x087
https://bugzilla.kernel.org/show_bug.cgi?id=49351
Igor Murzov e-mail@date.by changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |CODE_FIX
--- Comment #19 from Igor Murzov e-mail@date.by 2012-11-04 21:05:05 --- Fixed by:
commit 0b90365e7a32317b948583c4b5c2712d84610b08 Author: Alex Deucher alexander.deucher@amd.com Date: Tue Oct 23 17:57:54 2012 -0400
drm/radeon: fix ATPX regression in acpi rework
Copy and paste typo in the apci rework.
Fixes: https://bugzilla.kernel.org/show_bug.cgi?id=49351
dri-devel@lists.freedesktop.org