All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Rafael J. Wysocki" <rafael@kernel.org>
To: Hans de Goede <hdegoede@redhat.com>
Cc: "Rafael J . Wysocki" <rjw@rjwysocki.net>,
	Len Brown <lenb@kernel.org>,
	ACPI Devel Maling List <linux-acpi@vger.kernel.org>
Subject: Re: [PATCH v3] ACPI: scan: Fix _STA getting called on devices with unmet dependencies
Date: Tue, 30 Mar 2021 21:49:57 +0200	[thread overview]
Message-ID: <CAJZ5v0iaCojpt3SVBnO7Ok55FzcnGFJ-eGG4Py8o6geaLcGUbQ@mail.gmail.com> (raw)
In-Reply-To: <20210330184932.16027-1-hdegoede@redhat.com>

On Tue, Mar 30, 2021 at 8:50 PM Hans de Goede <hdegoede@redhat.com> wrote:
>
> Commit 71da201f38df ("ACPI: scan: Defer enumeration of devices with
> _DEP lists") dropped the following 2 lines from acpi_init_device_object():
>
>         /* Assume there are unmet deps until acpi_device_dep_initialize() runs */
>         device->dep_unmet = 1;
>
> Leaving the initial value of dep_unmet at the 0 from the kzalloc(). This
> causes the acpi_bus_get_status() call in acpi_add_single_object() to
> actually call _STA, even though there maybe unmet deps, leading to errors
> like these:
>
> [    0.123579] ACPI Error: No handler for Region [ECRM] (00000000ba9edc4c)
>                [GenericSerialBus] (20170831/evregion-166)
> [    0.123601] ACPI Error: Region GenericSerialBus (ID=9) has no handler
>                (20170831/exfldio-299)
> [    0.123618] ACPI Error: Method parse/execution failed
>                \_SB.I2C1.BAT1._STA, AE_NOT_EXIST (20170831/psparse-550)
>
> Fix this by re-adding the dep_unmet = 1 initialization to
> acpi_init_device_object() and modifying acpi_bus_check_add() to make sure
> that dep_unmet always gets setup there, overriding the initial 1 value.
>
> This re-fixes the issue initially fixed by
> commit 63347db0affa ("ACPI / scan: Use acpi_bus_get_status() to initialize
> ACPI_TYPE_DEVICE devs"), which introduced the removed
> "device->dep_unmet = 1;" statement.
>
> This issue was noticed; and the fix tested on a Dell Venue 10 Pro 5055.
>
> Fixes: 71da201f38df ("ACPI: scan: Defer enumeration of devices with _DEP lists")
> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
> ---
> Changes in v2:
> - Simplify, making it more like the original 63347db0affa commit
>
> Changes in v3:
> - Fix brown paper-bag bug where dep_unmet was not reset to 0 at the start of
>   acpi_scan_dep_init()

I've replaced the previous version of the patch with this one, thanks!

> ---
>  drivers/acpi/scan.c | 12 +++++++++++-
>  1 file changed, 11 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
> index 1584c9e463bd..24490db82531 100644
> --- a/drivers/acpi/scan.c
> +++ b/drivers/acpi/scan.c
> @@ -1647,6 +1647,8 @@ void acpi_init_device_object(struct acpi_device *device, acpi_handle handle,
>         device_initialize(&device->dev);
>         dev_set_uevent_suppress(&device->dev, true);
>         acpi_init_coherency(device);
> +       /* Assume there are unmet deps to start with. */
> +       device->dep_unmet = 1;
>  }
>
>  void acpi_device_add_finalize(struct acpi_device *device)
> @@ -1910,6 +1912,8 @@ static void acpi_scan_dep_init(struct acpi_device *adev)
>  {
>         struct acpi_dep_data *dep;
>
> +       adev->dep_unmet = 0;
> +
>         mutex_lock(&acpi_dep_list_lock);
>
>         list_for_each_entry(dep, &acpi_dep_list, node) {
> @@ -1957,7 +1961,13 @@ static acpi_status acpi_bus_check_add(acpi_handle handle, bool check_dep,
>                 return AE_CTRL_DEPTH;
>
>         acpi_scan_init_hotplug(device);
> -       if (!check_dep)
> +       /*
> +        * If check_dep is true at this point, the device has no dependencies,
> +        * or the creation of the device object would have been postponed above.
> +        */
> +       if (check_dep)
> +               device->dep_unmet = 0;
> +       else
>                 acpi_scan_dep_init(device);
>
>  out:
> --
> 2.30.2
>

      reply	other threads:[~2021-03-30 19:51 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-30 18:49 [PATCH v3] ACPI: scan: Fix _STA getting called on devices with unmet dependencies Hans de Goede
2021-03-30 19:49 ` Rafael J. Wysocki [this message]

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=CAJZ5v0iaCojpt3SVBnO7Ok55FzcnGFJ-eGG4Py8o6geaLcGUbQ@mail.gmail.com \
    --to=rafael@kernel.org \
    --cc=hdegoede@redhat.com \
    --cc=lenb@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=rjw@rjwysocki.net \
    /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.