[PATCH] gpu/nouveau/nouveau_acpi.c: Fix Type Mismatch ACPI warning
Marcos Paulo de Souza
marcos.souza.org at gmail.com
Thu May 19 00:42:58 UTC 2016
nouveau_optimus_dsm is using ACPI_TYPE_BUFFER, and this triggers warnings on ACPI:
[ 7.730564] ACPI: \_SB_.PCI0.RP05.PEGP: failed to evaluate _DSM
[ 7.730570] ACPI Warning: \_SB_.PCI0.RP05.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (201509 30/nsarguments-95)
To fix it, change ACPI_TYPE_BUFFER to ACPI_TYPE_PACKAGE, as the warning tells to do.
Signed-off-by: Marcos Paulo de Souza <marcos.souza.org at gmail.com>
---
After booting my Asus Laptop, and after a suspend/resume too, dmesg shows warnings:
[ 1.633361] ACPI Warning: \_SB_.PCI0.RP05.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20150930/nsarguments-95)
[ 1.633434] ACPI Warning: \_SB_.PCI0.RP05.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20150930/nsarguments-95)
[ 7.730176] ACPI Warning: \_SB_.PCI0.RP05.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20150930/nsarguments-95)
[ 7.730564] ACPI: \_SB_.PCI0.RP05.PEGP: failed to evaluate _DSM
[ 7.730570] ACPI Warning: \_SB_.PCI0.RP05.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20150930/nsarguments-95)
[ 49.732059] ACPI Warning: \_SB_.PCI0.RP05.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20150930/nsarguments-95)
[ 49.732424] ACPI: \_SB_.PCI0.RP05.PEGP: failed to evaluate _DSM
[ 49.732430] ACPI Warning: \_SB_.PCI0.RP05.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20150930/nsarguments-95)
[ 74.366300] ACPI Warning: \_SB_.PCI0.RP05.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20150930/nsarguments-95)
[ 74.366657] ACPI: \_SB_.PCI0.RP05.PEGP: failed to evaluate _DSM
[ 74.366663] ACPI Warning: \_SB_.PCI0.RP05.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20150930/nsarguments-95)
[ 140.357789] ACPI Warning: \_SB_.PCI0.RP05.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20150930/nsarguments-95)
[ 140.358532] ACPI: \_SB_.PCI0.RP05.PEGP: failed to evaluate _DSM
[ 140.358547] ACPI Warning: \_SB_.PCI0.RP05.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20150930/nsarguments-95)
I don't know if this is the right thing to do, I just looked at intel_acpi.c to check how to use/check for ACPI Package.
The patch below silenced the "type mismatch" warnings, and some of the "evaluated _DSM" ones.
If this is not the right approach, please let me know how to fix it, I don't have knowledge in ACPI, but I really want to help.
drivers/gpu/drm/nouveau/nouveau_acpi.c | 14 +-------------
1 file changed, 1 insertion(+), 13 deletions(-)
diff --git a/drivers/gpu/drm/nouveau/nouveau_acpi.c b/drivers/gpu/drm/nouveau/nouveau_acpi.c
index cdf5227..f04aef3 100644
--- a/drivers/gpu/drm/nouveau/nouveau_acpi.c
+++ b/drivers/gpu/drm/nouveau/nouveau_acpi.c
@@ -73,22 +73,10 @@ static const char nouveau_op_dsm_muid[] = {
static int nouveau_optimus_dsm(acpi_handle handle, int func, int arg, uint32_t *result)
{
- int i;
union acpi_object *obj;
- char args_buff[4];
- union acpi_object argv4 = {
- .buffer.type = ACPI_TYPE_BUFFER,
- .buffer.length = 4,
- .buffer.pointer = args_buff
- };
-
- /* ACPI is little endian, AABBCCDD becomes {DD,CC,BB,AA} */
- for (i = 0; i < 4; i++)
- args_buff[i] = (arg >> i * 8) & 0xFF;
-
*result = 0;
obj = acpi_evaluate_dsm_typed(handle, nouveau_op_dsm_muid, 0x00000100,
- func, &argv4, ACPI_TYPE_BUFFER);
+ func, NULL, ACPI_TYPE_PACKAGE);
if (!obj) {
acpi_handle_info(handle, "failed to evaluate _DSM\n");
return AE_ERROR;
--
2.5.5
More information about the dri-devel
mailing list