From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
To: Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
"Rafael J. Wysocki" <rafael.j.wysocki@intel.com>,
Wolfram Sang <wsa@kernel.org>,
linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-i2c@vger.kernel.org,
acpica-devel@lists.linuxfoundation.org
Cc: Robert Moore <robert.moore@intel.com>,
Len Brown <lenb@kernel.org>, Andi Shyti <andi.shyti@kernel.org>,
Michael Brunner <michael.brunner@kontron.com>
Subject: [Acpica-devel] [PATCH v1 1/2] ACPI: platform: Ignore SMB0001 only when it has resources
Date: Tue, 20 Jun 2023 16:35:42 -0000 [thread overview]
Message-ID: <20230620163534.1042-1-andriy.shevchenko@linux.intel.com> (raw)
After switchind i2c-scmi driver to be a plaform one it stopped
being enumerated on number of Kontron platformsm, because it's
listed in the forbidden_id_list.
To resolve the situation, split the list to generic one and
another that holds devices that has to be skiped if and only if
they have bogus resources attached (_CRS method returns some).
Fixes: 03d4287add6e ("i2c: scmi: Convert to be a platform driver")
Closes: https://lore.kernel.org/r/60c1756765b9a3f1eab0dcbd84f59f00fe1caf48.camel@kontron.com
Reported-by: Michael Brunner <michael.brunner@kontron.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
drivers/acpi/acpi_platform.c | 27 +++++++++++++++++++++++++--
1 file changed, 25 insertions(+), 2 deletions(-)
diff --git a/drivers/acpi/acpi_platform.c b/drivers/acpi/acpi_platform.c
index fe00a5783f53..089a98bd18bf 100644
--- a/drivers/acpi/acpi_platform.c
+++ b/drivers/acpi/acpi_platform.c
@@ -19,13 +19,17 @@
#include "internal.h"
+static const struct acpi_device_id forbidden_id_with_resourses[] = {
+ {"SMB0001", 0}, /* ACPI SMBUS virtual device */
+ { }
+};
+
static const struct acpi_device_id forbidden_id_list[] = {
{"ACPI0009", 0}, /* IOxAPIC */
{"ACPI000A", 0}, /* IOAPIC */
{"PNP0000", 0}, /* PIC */
{"PNP0100", 0}, /* Timer */
{"PNP0200", 0}, /* AT DMA Controller */
- {"SMB0001", 0}, /* ACPI SMBUS virtual device */
{ }
};
@@ -83,6 +87,15 @@ static void acpi_platform_fill_resource(struct acpi_device *adev,
dest->parent = pci_find_resource(to_pci_dev(parent), dest);
}
+static int acpi_platform_resource_count(struct acpi_resource *ares, void *data)
+{
+ int *count = data;
+
+ *count = *count + 1;
+
+ return 1;
+}
+
/**
* acpi_create_platform_device - Create platform device for ACPI device node
* @adev: ACPI device node to create a platform device for.
@@ -103,7 +116,8 @@ struct platform_device *acpi_create_platform_device(struct acpi_device *adev,
struct resource_entry *rentry;
struct list_head resource_list;
struct resource *resources = NULL;
- int count;
+ int count = 0;
+ int ret;
/* If the ACPI node already has a physical device attached, skip it. */
if (adev->physical_node_count)
@@ -113,6 +127,15 @@ struct platform_device *acpi_create_platform_device(struct acpi_device *adev,
return ERR_PTR(-EINVAL);
INIT_LIST_HEAD(&resource_list);
+ ret = acpi_dev_get_resources(adev, &resource_list, acpi_platform_resource_count, &count);
+ if (ret < 0)
+ return ERR_PTR(ret);
+
+ acpi_dev_free_resource_list(&resource_list);
+
+ if (count > 0 && !acpi_match_device_ids(adev, forbidden_id_with_resourses))
+ return ERR_PTR(-EINVAL);
+
count = acpi_dev_get_resources(adev, &resource_list, NULL, NULL);
if (count < 0)
return NULL;
--
2.40.0.1.gaa8946217a0b
WARNING: multiple messages have this Message-ID (diff)
From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
To: Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
"Rafael J. Wysocki" <rafael.j.wysocki@intel.com>,
Wolfram Sang <wsa@kernel.org>,
linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-i2c@vger.kernel.org,
acpica-devel@lists.linuxfoundation.org
Cc: "Rafael J. Wysocki" <rafael@kernel.org>,
Len Brown <lenb@kernel.org>, Andi Shyti <andi.shyti@kernel.org>,
Robert Moore <robert.moore@intel.com>,
Michael Brunner <michael.brunner@kontron.com>
Subject: [PATCH v1 1/2] ACPI: platform: Ignore SMB0001 only when it has resources
Date: Tue, 20 Jun 2023 19:35:33 +0300 [thread overview]
Message-ID: <20230620163534.1042-1-andriy.shevchenko@linux.intel.com> (raw)
After switchind i2c-scmi driver to be a plaform one it stopped
being enumerated on number of Kontron platformsm, because it's
listed in the forbidden_id_list.
To resolve the situation, split the list to generic one and
another that holds devices that has to be skiped if and only if
they have bogus resources attached (_CRS method returns some).
Fixes: 03d4287add6e ("i2c: scmi: Convert to be a platform driver")
Closes: https://lore.kernel.org/r/60c1756765b9a3f1eab0dcbd84f59f00fe1caf48.camel@kontron.com
Reported-by: Michael Brunner <michael.brunner@kontron.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
drivers/acpi/acpi_platform.c | 27 +++++++++++++++++++++++++--
1 file changed, 25 insertions(+), 2 deletions(-)
diff --git a/drivers/acpi/acpi_platform.c b/drivers/acpi/acpi_platform.c
index fe00a5783f53..089a98bd18bf 100644
--- a/drivers/acpi/acpi_platform.c
+++ b/drivers/acpi/acpi_platform.c
@@ -19,13 +19,17 @@
#include "internal.h"
+static const struct acpi_device_id forbidden_id_with_resourses[] = {
+ {"SMB0001", 0}, /* ACPI SMBUS virtual device */
+ { }
+};
+
static const struct acpi_device_id forbidden_id_list[] = {
{"ACPI0009", 0}, /* IOxAPIC */
{"ACPI000A", 0}, /* IOAPIC */
{"PNP0000", 0}, /* PIC */
{"PNP0100", 0}, /* Timer */
{"PNP0200", 0}, /* AT DMA Controller */
- {"SMB0001", 0}, /* ACPI SMBUS virtual device */
{ }
};
@@ -83,6 +87,15 @@ static void acpi_platform_fill_resource(struct acpi_device *adev,
dest->parent = pci_find_resource(to_pci_dev(parent), dest);
}
+static int acpi_platform_resource_count(struct acpi_resource *ares, void *data)
+{
+ int *count = data;
+
+ *count = *count + 1;
+
+ return 1;
+}
+
/**
* acpi_create_platform_device - Create platform device for ACPI device node
* @adev: ACPI device node to create a platform device for.
@@ -103,7 +116,8 @@ struct platform_device *acpi_create_platform_device(struct acpi_device *adev,
struct resource_entry *rentry;
struct list_head resource_list;
struct resource *resources = NULL;
- int count;
+ int count = 0;
+ int ret;
/* If the ACPI node already has a physical device attached, skip it. */
if (adev->physical_node_count)
@@ -113,6 +127,15 @@ struct platform_device *acpi_create_platform_device(struct acpi_device *adev,
return ERR_PTR(-EINVAL);
INIT_LIST_HEAD(&resource_list);
+ ret = acpi_dev_get_resources(adev, &resource_list, acpi_platform_resource_count, &count);
+ if (ret < 0)
+ return ERR_PTR(ret);
+
+ acpi_dev_free_resource_list(&resource_list);
+
+ if (count > 0 && !acpi_match_device_ids(adev, forbidden_id_with_resourses))
+ return ERR_PTR(-EINVAL);
+
count = acpi_dev_get_resources(adev, &resource_list, NULL, NULL);
if (count < 0)
return NULL;
--
2.40.0.1.gaa8946217a0b
next reply other threads:[~2023-06-20 16:35 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-20 16:35 Andy Shevchenko [this message]
2023-06-20 16:35 ` [Acpica-devel] [PATCH v1 1/2] ACPI: platform: Ignore SMB0001 only when it has resources Andy Shevchenko
2023-06-20 16:35 ` [PATCH v1 2/2] ACPI: platform: Move SMB0001 HID to the header and reuse Andy Shevchenko
2023-06-20 16:35 ` [Acpica-devel] " Andy Shevchenko
2023-06-21 9:31 ` Andi Shyti
2023-06-21 9:31 ` [Acpica-devel] " Andi Shyti
2023-06-21 7:46 ` [PATCH v1 1/2] ACPI: platform: Ignore SMB0001 only when it has resources Michael Brunner
2023-06-21 7:46 ` [Acpica-devel] " Michael Brunner
2023-06-21 9:30 ` Andi Shyti
2023-06-21 9:31 ` [Acpica-devel] " Andi Shyti
2023-06-21 13:19 ` andriy.shevchenko
2023-06-21 13:20 ` [Acpica-devel] " andriy.shevchenko
2023-06-21 13:28 ` Michael Brunner
2023-06-21 13:28 ` [Acpica-devel] " Michael Brunner
2023-06-21 9:30 ` Andi Shyti
2023-06-21 9:30 ` [Acpica-devel] " Andi Shyti
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=20230620163534.1042-1-andriy.shevchenko@linux.intel.com \
--to=andriy.shevchenko@linux.intel.com \
--cc=acpica-devel@lists.linuxfoundation.org \
--cc=andi.shyti@kernel.org \
--cc=lenb@kernel.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-i2c@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=michael.brunner@kontron.com \
--cc=rafael.j.wysocki@intel.com \
--cc=robert.moore@intel.com \
--cc=wsa@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.