From: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
To: Jiang Liu <jiang.liu@linux.intel.com>
Cc: David Airlie <airlied@linux.ie>, Dave Airlie <airlied@redhat.com>,
Emil Velikov <emil.l.velikov@gmail.com>,
dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] nouveau, ACPI: fix regression caused by b072e53
Date: Thu, 20 Feb 2014 21:27:48 +0100 [thread overview]
Message-ID: <53066544.8030404@intel.com> (raw)
In-Reply-To: <1392888200-27567-1-git-send-email-jiang.liu@linux.intel.com>
On 2/20/2014 10:23 AM, Jiang Liu wrote:
> Fix regression caused by commit b072e53, which breaks loading nouveau
> driver on optimus laptops.
>
> On some platforms, ACPI _DSM method (nouveau_op_dsm_muid, function 0)
> has special requirements on the fourth parameter, which is different
> from ACPI specifications. So revert to the private implementation
> to check availability of _DSM functions instead of using common
> acpi_check_dsm() interface.
>
> Reported-and-Tested-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
> Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
I'm taking this, because the commit that introduced the regression went
in through my tree.
In the future I'll appreciate CCing ACPI-related patches to linux-acpi,
however.
Thanks,
Rafael
> ---
> drivers/gpu/drm/nouveau/nouveau_acpi.c | 26 ++++++++++++++++++++++++--
> 1 file changed, 24 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/nouveau/nouveau_acpi.c b/drivers/gpu/drm/nouveau/nouveau_acpi.c
> index 4ef83df..83face3 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_acpi.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_acpi.c
> @@ -106,6 +106,29 @@ static int nouveau_optimus_dsm(acpi_handle handle, int func, int arg, uint32_t *
> return 0;
> }
>
> +/*
> + * On some platforms, _DSM(nouveau_op_dsm_muid, func0) has special
> + * requirements on the fourth parameter, so a private implementation
> + * instead of using acpi_check_dsm().
> + */
> +static int nouveau_check_optimus_dsm(acpi_handle handle)
> +{
> + int result;
> +
> + /*
> + * Function 0 returns a Buffer containing available functions.
> + * The args parameter is ignored for function 0, so just put 0 in it
> + */
> + if (nouveau_optimus_dsm(handle, 0, 0, &result))
> + return 0;
> +
> + /*
> + * ACPI Spec v4 9.14.1: if bit 0 is zero, no function is supported.
> + * If the n-th bit is enabled, function n is supported
> + */
> + return result & 1 && result & (1 << NOUVEAU_DSM_OPTIMUS_CAPS);
> +}
> +
> static int nouveau_dsm(acpi_handle handle, int func, int arg)
> {
> int ret = 0;
> @@ -207,8 +230,7 @@ static int nouveau_dsm_pci_probe(struct pci_dev *pdev)
> 1 << NOUVEAU_DSM_POWER))
> retval |= NOUVEAU_DSM_HAS_MUX;
>
> - if (acpi_check_dsm(dhandle, nouveau_op_dsm_muid, 0x00000100,
> - 1 << NOUVEAU_DSM_OPTIMUS_CAPS))
> + if (nouveau_check_optimus_dsm(dhandle))
> retval |= NOUVEAU_DSM_HAS_OPT;
>
> if (retval & NOUVEAU_DSM_HAS_OPT) {
next prev parent reply other threads:[~2014-02-20 20:27 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-20 9:23 [PATCH] nouveau, ACPI: fix regression caused by b072e53 Jiang Liu
2014-02-20 20:27 ` Rafael J. Wysocki [this message]
2014-02-21 5:40 ` Jiang Liu
2014-02-21 6:04 ` Dave Airlie
2014-02-21 6:04 ` Dave Airlie
-- strict thread matches above, loose matches on Subject: below --
2014-02-19 4:53 Jiang Liu
2014-02-19 9:47 ` Jiang Liu
2014-02-19 10:12 ` Maarten Lankhorst
2014-02-19 10:12 ` Maarten Lankhorst
2014-02-19 14:12 ` Jiang Liu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=53066544.8030404@intel.com \
--to=rafael.j.wysocki@intel.com \
--cc=airlied@linux.ie \
--cc=airlied@redhat.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=emil.l.velikov@gmail.com \
--cc=jiang.liu@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.