[Bug 195159] nouveau incorrect ACPI usgage results in ACPI Error : AE_AML_PACKAGE_LIMIT
bugzilla-daemon at bugzilla.kernel.org
bugzilla-daemon at bugzilla.kernel.org
Sat Sep 8 11:18:44 UTC 2018
https://bugzilla.kernel.org/show_bug.cgi?id=195159
Peter Wu (peter at lekensteyn.nl) changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |peter at lekensteyn.nl
--- Comment #10 from Peter Wu (peter at lekensteyn.nl) ---
The affected code is likely:
If ((Arg0 == ToUUID ("a486d8f8-0bda-471b-a72b-6042a6b5bee0")))
{
Local0 = Zero
Local0 = (DerefOf (Arg3 [0x03]) << 0x18)
Local0 += (DerefOf (Arg3 [0x02]) << 0x10)
Local0 += (DerefOf (Arg3 [One]) << 0x08)
Local0 += (DerefOf (Arg3 [Zero]) << Zero)
The reason a Buffer is passed by nouveau instead of a Package is presumably due
to an issue with the Windows driver that did the wrong thing, and firmware
authors adapting that.
I am quite puzzled though with this behavior:
[ 13.439026] ACPI Exception: AE_AML_PACKAGE_LIMIT, Index (0x000000003) is
beyond end of object (length 0x0) (20160930/exoparg2-427)
[ 13.439088] ACPI Error: Method parse/execution failed [\_SB.PCI0.GFX0._DSM]
(Node ffff8801c84b9780), AE_AML_PACKAGE_LIMIT (20160930/psparse-543)
[ 13.439153] ACPI Error: Method parse/execution failed
[\_SB.PCI0.PEG0.GFX0._DSM] (Node ffff8801c84ce7a8), AE_AML_PACKAGE_LIMIT
(20160930/psparse-543)
[ 13.439222] ACPI: \_SB_.PCI0.PEG0.GFX0: failed to evaluate _DSM (0x300b)
[ 13.439383] pci 0000:01:00.0: optimus capabilities: enabled, status dynamic
power,
[ 13.439388] VGA switcheroo: detected Optimus DSM method \_SB_.PCI0.PEG0.GFX0
handle
In both cases, the method invocation failed, and I would expect
nouveau_optimus_dsm to set 0 as result:
static int nouveau_optimus_dsm(acpi_handle handle, int func, int arg,
uint32_t *result)
{
...
*result = 0;
obj = acpi_evaluate_dsm_typed(handle, &nouveau_op_dsm_muid, 0x00000100,
func, &argv4, ACPI_TYPE_BUFFER);
if (!obj) {
acpi_handle_info(handle, "failed to evaluate _DSM\n");
return AE_ERROR;
}
and I would expect "optimus capabilities: disabled, status " since "
uint32_t result;
nouveau_optimus_dsm(dhandle, NOUVEAU_DSM_OPTIMUS_CAPS, 0,
&result);
dev_info(&pdev->dev, "optimus capabilities: %s, status %s%s\n",
(result & OPTIMUS_ENABLED) ? "enabled" : "disabled",
(result & OPTIMUS_DYNAMIC_PWR_CAP) ? "dynamic power, " : "",
(result & OPTIMUS_HDA_CODEC_MASK) ? "hda bios codec supported" :
"");
However that does not seem to be the case, so either the Linux ACPI module does
some kind of fallback, or there is some other kind of memory issue.
Since you reported an issue "since 4.9.6", there was presumably a working
version. Can you do a git bisect?
--
You are receiving this mail because:
You are watching the assignee of the bug.
More information about the dri-devel
mailing list