[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