<div dir="ltr">Hi Pierre,<br><br><div class="gmail_quote"><div dir="ltr">Em qui, 19 de mai de 2016 às 06:49, Pierre Moreau <<a href="mailto:pierre.morrow@free.fr">pierre.morrow@free.fr</a>> escreveu:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello Marcos,<br>
<br>
I sent a serie a year ago to fix some of the ACPI handling in Nouveau and add<br>
runtime pm support for laptops with an Apple GMUX (see [0], and especially [1]<br>
and [2]). I was told that a more generic work for the runtime pm was in the<br>
work, so I let the whole serie slip away. I was thinking of resubmitting the<br>
serie without the runtime pm additions, to at least fix those warning/error<br>
messages. I thought I had a patch to fix this issue in my serie, but going<br>
through it again, it looks like I did not.<br>
Note that even, though the spec says the 4th argument should be a package, some<br>
old BIOSes expect a different type, like a buffer (see the comment above [5]; I<br>
think there was also a comment about it in the spec, but I can’t find it<br>
anymore).<br>
<br>
I added some comments below. I’ll test this patch tonight, to see how it works<br>
on my laptop as I think it expects a buffer as 4th argument.<br></blockquote><div><br></div><div>Good, I'm learning a lot here. I'm reading all links you pasted here.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Thank you!<br>
<br>
Regards,<br>
Pierre<br>
<br>
<br>
[0]: <a href="https://lists.freedesktop.org/archives/dri-devel/2015-May/083444.html" rel="noreferrer" target="_blank">https://lists.freedesktop.org/archives/dri-devel/2015-May/083444.html</a><br>
[1]: <a href="https://lists.freedesktop.org/archives/dri-devel/2015-May/083448.html" rel="noreferrer" target="_blank">https://lists.freedesktop.org/archives/dri-devel/2015-May/083448.html</a><br>
[2]: <a href="https://lists.freedesktop.org/archives/dri-devel/2015-May/083449.html" rel="noreferrer" target="_blank">https://lists.freedesktop.org/archives/dri-devel/2015-May/083449.html</a><br>
<br>
On 09:42 PM - May 18 2016, Marcos Paulo de Souza wrote:<br>
> nouveau_optimus_dsm is using ACPI_TYPE_BUFFER, and this triggers warnings on ACPI:<br>
> [    7.730564] ACPI: \_SB_.PCI0.RP05.PEGP: failed to evaluate _DSM<br>
> [    7.730570] ACPI Warning: \_SB_.PCI0.RP05.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (201509    30/nsarguments-95)<br>
><br>
> To fix it, change ACPI_TYPE_BUFFER to ACPI_TYPE_PACKAGE, as the warning tells to do.<br>
><br>
> Signed-off-by: Marcos Paulo de Souza <<a href="mailto:marcos.souza.org@gmail.com" target="_blank">marcos.souza.org@gmail.com</a>><br>
> ---<br>
><br>
> After booting my Asus Laptop, and after a suspend/resume too, dmesg shows warnings:<br>
> [    1.633361] ACPI Warning: \_SB_.PCI0.RP05.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20150930/nsarguments-95)<br>
> [    1.633434] ACPI Warning: \_SB_.PCI0.RP05.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20150930/nsarguments-95)<br>
> [    7.730176] ACPI Warning: \_SB_.PCI0.RP05.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20150930/nsarguments-95)<br>
> [    7.730564] ACPI: \_SB_.PCI0.RP05.PEGP: failed to evaluate _DSM<br>
> [    7.730570] ACPI Warning: \_SB_.PCI0.RP05.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20150930/nsarguments-95)<br>
> [   49.732059] ACPI Warning: \_SB_.PCI0.RP05.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20150930/nsarguments-95)<br>
> [   49.732424] ACPI: \_SB_.PCI0.RP05.PEGP: failed to evaluate _DSM<br>
> [   49.732430] ACPI Warning: \_SB_.PCI0.RP05.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20150930/nsarguments-95)<br>
> [   74.366300] ACPI Warning: \_SB_.PCI0.RP05.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20150930/nsarguments-95)<br>
> [   74.366657] ACPI: \_SB_.PCI0.RP05.PEGP: failed to evaluate _DSM<br>
> [   74.366663] ACPI Warning: \_SB_.PCI0.RP05.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20150930/nsarguments-95)<br>
> [  140.357789] ACPI Warning: \_SB_.PCI0.RP05.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20150930/nsarguments-95)<br>
> [  140.358532] ACPI: \_SB_.PCI0.RP05.PEGP: failed to evaluate _DSM<br>
> [  140.358547] ACPI Warning: \_SB_.PCI0.RP05.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20150930/nsarguments-95)<br>
<br>
Out of curiosity, which GPU(s) do you have in your laptop? I guess there is at<br>
least an NVIDIA one, but is it an Optimus configuration? And if so, does the<br>
unused card go automatically to sleep after a few seconds?<br></blockquote><div><br></div><div>I have an Asus laptop with a <span style="font-family:'times new roman';font-size:16.16px;line-height:normal;background-color:rgb(242,242,242)">NVD7 (GF117) Fermi card, and a Haswell onboard graphic card. About the automatic sleep, I really don't don't know, I'm just seeing these messages :)</span></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
><br>
> 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.<br>
> The patch below silenced the "type mismatch" warnings, and some of the "evaluated _DSM" ones.<br>
><br>
> 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.<br>
><br>
>  drivers/gpu/drm/nouveau/nouveau_acpi.c | 14 +-------------<br>
>  1 file changed, 1 insertion(+), 13 deletions(-)<br>
><br>
> diff --git a/drivers/gpu/drm/nouveau/nouveau_acpi.c b/drivers/gpu/drm/nouveau/nouveau_acpi.c<br>
> index cdf5227..f04aef3 100644<br>
> --- a/drivers/gpu/drm/nouveau/nouveau_acpi.c<br>
> +++ b/drivers/gpu/drm/nouveau/nouveau_acpi.c<br>
> @@ -73,22 +73,10 @@ static const char nouveau_op_dsm_muid[] = {<br>
><br>
>  static int nouveau_optimus_dsm(acpi_handle handle, int func, int arg, uint32_t *result)<br>
>  {<br>
> -     int i;<br>
>       union acpi_object *obj;<br>
> -     char args_buff[4];<br>
> -     union acpi_object argv4 = {<br>
> -             .buffer.type = ACPI_TYPE_BUFFER,<br>
> -             .buffer.length = 4,<br>
> -             .buffer.pointer = args_buff<br>
> -     };<br>
> -<br>
> -     /* ACPI is little endian, AABBCCDD becomes {DD,CC,BB,AA} */<br>
> -     for (i = 0; i < 4; i++)<br>
> -             args_buff[i] = (arg >> i * 8) & 0xFF;<br>
> -<br>
>       *result = 0;<br>
>       obj = acpi_evaluate_dsm_typed(handle, nouveau_op_dsm_muid, 0x00000100,<br>
> -                                   func, &argv4, ACPI_TYPE_BUFFER);<br>
> +                                   func, NULL, ACPI_TYPE_PACKAGE);<br>
<br>
The last parameter you give to `acpi_evaluate_dsm_typed()` is the return type<br>
you expect (see [3]), which will be a buffer if func is 0, and is<br>
implementation dependent otherwise (see section 9.14.1 _DSM of [4]). So you<br>
don’t want to change it to ACPI_TYPE_PACKAGE. If you look at the implementation<br>
of `acpi_evaluate_dsm()` (which is called by `acpi_evaluate_dsm_typed()`), it<br>
will automatically create a package for the 4th argument, if you pass it a NULL<br>
pointer (see [5]).<br>
<br>
[3]: <a href="https://github.com/torvalds/linux/blob/46c13450624e36302547a2ac3695f2350fe7ffc3/include/acpi/acpi_bus.h#L69" rel="noreferrer" target="_blank">https://github.com/torvalds/linux/blob/46c13450624e36302547a2ac3695f2350fe7ffc3/include/acpi/acpi_bus.h#L69</a><br>
[4]: <a href="http://www.acpi.info/DOWNLOADS/ACPI_5_Errata%20A.pdf" rel="noreferrer" target="_blank">http://www.acpi.info/DOWNLOADS/ACPI_5_Errata%20A.pdf</a><br>
[5]: <a href="https://github.com/torvalds/linux/blob/46c13450624e36302547a2ac3695f2350fe7ffc3/drivers/acpi/utils.c#L628" rel="noreferrer" target="_blank">https://github.com/torvalds/linux/blob/46c13450624e36302547a2ac3695f2350fe7ffc3/drivers/acpi/utils.c#L628</a></blockquote><div><br></div><div>Thanks for all the links. I'll read the docs and send a new version of the patch when it makes more sense instead of just replacing random things.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
<br>
>       if (!obj) {<br>
>               acpi_handle_info(handle, "failed to evaluate _DSM\n");<br>
>               return AE_ERROR;<br>
> --<br>
> 2.5.5<br>
><br>
> _______________________________________________<br>
> dri-devel mailing list<br>
> <a href="mailto:dri-devel@lists.freedesktop.org" target="_blank">dri-devel@lists.freedesktop.org</a><br>
> <a href="https://lists.freedesktop.org/mailman/listinfo/dri-devel" rel="noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/dri-devel</a><br>
</blockquote></div></div>