Bug 49351
Summary: | vga_switcheroo results in black screen (bisected) | ||
---|---|---|---|
Product: | Drivers | Reporter: | Igor Murzov (e-mail) |
Component: | Video(DRI - non Intel) | Assignee: | drivers_video-dri |
Status: | RESOLVED CODE_FIX | ||
Severity: | normal | CC: | alexdeucher |
Priority: | P1 | ||
Hardware: | All | ||
OS: | Linux | ||
Kernel Version: | 3.7-rc1+ | Subsystem: | |
Regression: | Yes | Bisected commit-id: | |
Attachments: |
lspci -vvv
debug output dmesg output for v3.7.0-rc2+ with the patch applied debug output dmesg output for v3.7.0-rc2+ possible fix 1 possible fix 2 dmesg output for v3.7.0-rc2+ with kbug49351-2.diff applied debug output dmesg output for v3.5.2 dmesg output for v3.7.0-rc2+ with kbug49351.diff applied possible fix dmesg output for v3.7.0-rc2+ with the patch from comment #17 |
Description
Igor Murzov
2012-10-22 21:31:56 UTC
Created attachment 84391 [details]
debug output
Can you attach the dmesg output with this patch applied? No need to try and switch gpus. I just need the output.
Created attachment 84401 [details]
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.
Created attachment 84441 [details]
debug output
Try this version.
Still no "ATPX function mask" in the log. Does it show up if you try switching? No. 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. Created attachment 84451 [details]
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.
Created attachment 84461 [details]
possible fix 1
Try this patch and see if it helps.
Created attachment 84471 [details]
possible fix 2
If the previous patch doesn't help, try this one.
The first patch doesn't help. Created attachment 84481 [details]
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)
--------------------------------------------
Please attach the dmesg output from a working kernel. Created attachment 84491 [details]
debug output
Please attach the dmesg output with this patch applied.
Created attachment 84511 [details]
dmesg output for v3.5.2
Created attachment 84531 [details]
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
Created attachment 84541 [details]
possible fix
Does this patch fix the issue?
Created attachment 84561 [details] 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 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 |