From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
To: Hans de Goede <hdegoede@redhat.com>,
"Rafael J . Wysocki" <rjw@rjwysocki.net>,
Len Brown <lenb@kernel.org>
Cc: linux-acpi@vger.kernel.org, stable@vger.kernel.org
Subject: Re: [PATCH] ACPI / LPSS: Only call pwm_add_table for the first PWM controller
Date: Thu, 06 Jul 2017 20:11:39 +0300 [thread overview]
Message-ID: <1499361099.22624.292.camel@linux.intel.com> (raw)
In-Reply-To: <20170706164927.15076-1-hdegoede@redhat.com>
On Thu, 2017-07-06 at 18:49 +0200, Hans de Goede wrote:
> At least on the UP board SBC both PWMs are enabled leading to us
> trying to add the same pwm_lookup twice, which leads to the following:
>
> [ 0.902224] list_add double add: new=ffffffffb8efd400,
> prev=ffffffffb8efd400, next=ffffffffb8eeede0.
> [ 0.912466] ------------[ cut here ]------------
> [ 0.917624] kernel BUG at lib/list_debug.c:31!
> [ 0.922588] invalid opcode: 0000 [#1] SMP
> ...
> [ 1.027450] Call Trace:
> [ 1.030185] pwm_add_table+0x4c/0x90
> [ 1.034181] bsw_pwm_setup+0x1a/0x20
> [ 1.038175] acpi_lpss_create_device+0xfe/0x420
> ...
>
> This commit fixes this by only calling pwm_add_table for the first
> PWM controller (which is the one used for the backlight).
>
Thanks, my comment below.
For the quick fix I agree on this:
Acked-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
By the way, do you need a shell script that allows to setup pin muxing
via external CPLD?
> Cc: stable@vger.kernel.org
> BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1458599
> Fixes: bf7696a12071 ("acpi: lpss: call pwm_add_table() for BSW...")
> Fixes: 04434ab5120a ("ACPI / LPSS: Call pwm_add_table() for Bay
> Trail...")
> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
> ---
> drivers/acpi/acpi_lpss.c | 14 ++++++++++++++
> 1 file changed, 14 insertions(+)
>
> diff --git a/drivers/acpi/acpi_lpss.c b/drivers/acpi/acpi_lpss.c
> index 10347e3d73ad..5bd58bd4ab05 100644
> --- a/drivers/acpi/acpi_lpss.c
> +++ b/drivers/acpi/acpi_lpss.c
> @@ -85,6 +85,7 @@ static const struct lpss_device_desc lpss_dma_desc =
> {
> };
>
> struct lpss_private_data {
> + struct acpi_device *adev;
> void __iomem *mmio_base;
> resource_size_t mmio_size;
> unsigned int fixed_clk_rate;
> @@ -155,6 +156,12 @@ static struct pwm_lookup byt_pwm_lookup[] = {
>
> static void byt_pwm_setup(struct lpss_private_data *pdata)
> {
> + struct acpi_device *adev = pdata->adev;
> +
> + /* Only call pwm_add_table for the first PWM controller */
> + if (!adev->pnp.unique_id || strcmp(adev->pnp.unique_id, "1"))
> + return;
> +
It would be nice to have a separate mapping between UID and lookup
table.
Though, for now it's only one case, perhaps we may do this later.
> if (!acpi_dev_present("INT33FD", NULL, -1))
> pwm_add_table(byt_pwm_lookup,
> ARRAY_SIZE(byt_pwm_lookup));
> }
> @@ -180,6 +187,12 @@ static struct pwm_lookup bsw_pwm_lookup[] = {
>
> static void bsw_pwm_setup(struct lpss_private_data *pdata)
> {
> + struct acpi_device *adev = pdata->adev;
> +
> + /* Only call pwm_add_table for the first PWM controller */
> + if (!adev->pnp.unique_id || strcmp(adev->pnp.unique_id, "1"))
> + return;
> +
> pwm_add_table(bsw_pwm_lookup, ARRAY_SIZE(bsw_pwm_lookup));
> }
>
> @@ -456,6 +469,7 @@ static int acpi_lpss_create_device(struct
> acpi_device *adev,
> goto err_out;
> }
>
> + pdata->adev = adev;
> pdata->dev_desc = dev_desc;
>
> if (dev_desc->setup)
--
Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Intel Finland Oy
next prev parent reply other threads:[~2017-07-06 17:11 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-07-06 16:49 [PATCH] ACPI / LPSS: Only call pwm_add_table for the first PWM controller Hans de Goede
2017-07-06 17:11 ` Andy Shevchenko [this message]
2017-07-06 18:08 ` Hans de Goede
2017-07-06 18:19 ` Andy Shevchenko
2017-07-06 18:50 ` Hans de Goede
2017-07-06 20:44 ` Rafael J. Wysocki
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=1499361099.22624.292.camel@linux.intel.com \
--to=andriy.shevchenko@linux.intel.com \
--cc=hdegoede@redhat.com \
--cc=lenb@kernel.org \
--cc=linux-acpi@vger.kernel.org \
--cc=rjw@rjwysocki.net \
--cc=stable@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.