[Bug 117131] vga_switcheroo does not switch IGP -> DIS ( IGP == i915 , DIS == radeon )
bugzilla-daemon at bugzilla.kernel.org
bugzilla-daemon at bugzilla.kernel.org
Sun Apr 24 20:30:54 UTC 2016
https://bugzilla.kernel.org/show_bug.cgi?id=117131
--- Comment #3 from Jason Vas Dias <jason.vas.dias at gmail.com> ---
(In reply to 3pb33h+1ymmkx54pslys from comment #2)
> Check this bug https://bugs.freedesktop.org/show_bug.cgi?id=95078
> Does it work if you revert that commit?
Thanks for the info ! But 'git revert e64c952efb8e0c15ae82cec8e455ab4910690ef1'
didn't work, and the code looks rather different now than it did for that
commit back in March:
> commit e64c952efb8e0c15ae82cec8e455ab4910690ef1
> Author: Alex Deucher <alexander.deucher at amd.com>
> Date: Wed Mar 2 11:47:29 2016 -0500
>
> drm/radeon: disable runtime pm on PX laptops without dGPU power control
There is no 'radeon_has_atpx_dgpu_power_cntl' function being called in
radeon_atpx_handler.c as
was added with that commit in the 'v4.5' branch.
Maybe if I try disabling radeon power management with radeon.dpm=0 ?
But I think the problem is triggered via this function making an ACPI
call that goes wrong ? :
/**
* radeon_atpx_call - call an ATPX method
*
* @handle: acpi handle
* @function: the ATPX function to execute
* @params: ATPX function params
*
* Executes the requested ATPX function (all asics).
* Returns a pointer to the acpi output buffer.
*/
static union acpi_object *radeon_atpx_call(acpi_handle handle, int function,
struct acpi_buffer *params)
{
acpi_status status;
union acpi_object atpx_arg_elements[2];
struct acpi_object_list atpx_arg;
struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL };
atpx_arg.count = 2;
atpx_arg.pointer = &atpx_arg_elements[0];
atpx_arg_elements[0].type = ACPI_TYPE_INTEGER;
atpx_arg_elements[0].integer.value = function;
if (params) {
atpx_arg_elements[1].type = ACPI_TYPE_BUFFER;
atpx_arg_elements[1].buffer.length = params->length;
atpx_arg_elements[1].buffer.pointer = params->pointer;
} else {
/* We need a second fake parameter */
atpx_arg_elements[1].type = ACPI_TYPE_INTEGER;
atpx_arg_elements[1].integer.value = 0;
}
status = acpi_evaluate_object(handle, NULL, &atpx_arg, &buffer);
/* Fail only if calling the method fails and ATPX is supported */
if (ACPI_FAILURE(status) && status != AE_NOT_FOUND) {
printk("failed to evaluate ATPX got %s\n",
acpi_format_exception(status));
kfree(buffer.pointer);
return NULL;
}
return buffer.pointer;
}
The question is, how fatal to vga_switcheroo is this ACPI call failure ?
investigating ...
--
You are receiving this mail because:
You are watching the assignee of the bug.
More information about the dri-devel
mailing list