* [PATCH v1] ACPI: LPSS: use acpi_dev_uid_match() for matching _UID
@ 2023-10-25 5:38 Raag Jadav
2023-10-25 5:53 ` Mika Westerberg
2023-10-25 20:33 ` Andy Shevchenko
0 siblings, 2 replies; 8+ messages in thread
From: Raag Jadav @ 2023-10-25 5:38 UTC (permalink / raw)
To: rafael, len.brown, mika.westerberg, andriy.shevchenko
Cc: linux-acpi, linux-kernel, mallikarjunappa.sangannavar,
bala.senthil, Raag Jadav
Use acpi_dev_uid_match() for matching _UID instead of treating it
as an integer.
Signed-off-by: Raag Jadav <raag.jadav@intel.com>
---
drivers/acpi/acpi_lpss.c | 8 ++------
1 file changed, 2 insertions(+), 6 deletions(-)
diff --git a/drivers/acpi/acpi_lpss.c b/drivers/acpi/acpi_lpss.c
index 875de44961bf..6aaa6b066510 100644
--- a/drivers/acpi/acpi_lpss.c
+++ b/drivers/acpi/acpi_lpss.c
@@ -167,10 +167,8 @@ static struct pwm_lookup byt_pwm_lookup[] = {
static void byt_pwm_setup(struct lpss_private_data *pdata)
{
- u64 uid;
-
/* Only call pwm_add_table for the first PWM controller */
- if (acpi_dev_uid_to_integer(pdata->adev, &uid) || uid != 1)
+ if (!acpi_dev_uid_match(pdata->adev, "1"))
return;
pwm_add_table(byt_pwm_lookup, ARRAY_SIZE(byt_pwm_lookup));
@@ -218,10 +216,8 @@ static struct pwm_lookup bsw_pwm_lookup[] = {
static void bsw_pwm_setup(struct lpss_private_data *pdata)
{
- u64 uid;
-
/* Only call pwm_add_table for the first PWM controller */
- if (acpi_dev_uid_to_integer(pdata->adev, &uid) || uid != 1)
+ if (!acpi_dev_uid_match(pdata->adev, "1"))
return;
pwm_add_table(bsw_pwm_lookup, ARRAY_SIZE(bsw_pwm_lookup));
base-commit: 72d54941cd56ac3fedca6f7ae00a300b33ead29e
--
2.17.1
^ permalink raw reply related [flat|nested] 8+ messages in thread* Re: [PATCH v1] ACPI: LPSS: use acpi_dev_uid_match() for matching _UID
2023-10-25 5:38 [PATCH v1] ACPI: LPSS: use acpi_dev_uid_match() for matching _UID Raag Jadav
@ 2023-10-25 5:53 ` Mika Westerberg
2023-10-25 18:04 ` Rafael J. Wysocki
2023-10-25 20:33 ` Andy Shevchenko
1 sibling, 1 reply; 8+ messages in thread
From: Mika Westerberg @ 2023-10-25 5:53 UTC (permalink / raw)
To: Raag Jadav
Cc: rafael, len.brown, andriy.shevchenko, linux-acpi, linux-kernel,
mallikarjunappa.sangannavar, bala.senthil
On Wed, Oct 25, 2023 at 11:08:33AM +0530, Raag Jadav wrote:
> Use acpi_dev_uid_match() for matching _UID instead of treating it
> as an integer.
>
> Signed-off-by: Raag Jadav <raag.jadav@intel.com>
Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v1] ACPI: LPSS: use acpi_dev_uid_match() for matching _UID
2023-10-25 5:53 ` Mika Westerberg
@ 2023-10-25 18:04 ` Rafael J. Wysocki
2023-10-25 18:21 ` Raag Jadav
0 siblings, 1 reply; 8+ messages in thread
From: Rafael J. Wysocki @ 2023-10-25 18:04 UTC (permalink / raw)
To: Mika Westerberg, Raag Jadav
Cc: rafael, len.brown, andriy.shevchenko, linux-acpi, linux-kernel,
mallikarjunappa.sangannavar, bala.senthil
On Wed, Oct 25, 2023 at 7:53 AM Mika Westerberg
<mika.westerberg@linux.intel.com> wrote:
>
> On Wed, Oct 25, 2023 at 11:08:33AM +0530, Raag Jadav wrote:
> > Use acpi_dev_uid_match() for matching _UID instead of treating it
> > as an integer.
> >
> > Signed-off-by: Raag Jadav <raag.jadav@intel.com>
>
> Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
I was about to apply this, but then I realized that it might change
the behavior in a subtle way, because what if the _UID string is
something like "01"?
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v1] ACPI: LPSS: use acpi_dev_uid_match() for matching _UID
2023-10-25 18:04 ` Rafael J. Wysocki
@ 2023-10-25 18:21 ` Raag Jadav
2023-10-25 18:33 ` Rafael J. Wysocki
0 siblings, 1 reply; 8+ messages in thread
From: Raag Jadav @ 2023-10-25 18:21 UTC (permalink / raw)
To: Rafael J. Wysocki
Cc: Mika Westerberg, len.brown, andriy.shevchenko, linux-acpi,
linux-kernel, mallikarjunappa.sangannavar, bala.senthil
On Wed, Oct 25, 2023 at 08:04:44PM +0200, Rafael J. Wysocki wrote:
> On Wed, Oct 25, 2023 at 7:53 AM Mika Westerberg
> <mika.westerberg@linux.intel.com> wrote:
> >
> > On Wed, Oct 25, 2023 at 11:08:33AM +0530, Raag Jadav wrote:
> > > Use acpi_dev_uid_match() for matching _UID instead of treating it
> > > as an integer.
> > >
> > > Signed-off-by: Raag Jadav <raag.jadav@intel.com>
> >
> > Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
>
> I was about to apply this, but then I realized that it might change
> the behavior in a subtle way, because what if the _UID string is
> something like "01"?
I checked the git history and found below.
commit 2a036e489eb1571810126d6fa47bd8af1e237c08
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date: Tue Sep 13 19:31:41 2022 +0300
ACPI: LPSS: Refactor _UID handling to use acpi_dev_uid_to_integer()
ACPI utils provide acpi_dev_uid_to_integer() helper to extract _UID as
an integer. Use it instead of custom approach.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
diff --git a/drivers/acpi/acpi_lpss.c b/drivers/acpi/acpi_lpss.c
index c4d4d21391d7..4d415e210c32 100644
--- a/drivers/acpi/acpi_lpss.c
+++ b/drivers/acpi/acpi_lpss.c
@@ -167,10 +167,10 @@ static struct pwm_lookup byt_pwm_lookup[] = {
static void byt_pwm_setup(struct lpss_private_data *pdata)
{
- struct acpi_device *adev = pdata->adev;
+ u64 uid;
/* Only call pwm_add_table for the first PWM controller */
- if (!adev->pnp.unique_id || strcmp(adev->pnp.unique_id, "1"))
+ if (acpi_dev_uid_to_integer(pdata->adev, &uid) || uid != 1)
return;
pwm_add_table(byt_pwm_lookup, ARRAY_SIZE(byt_pwm_lookup));
So if we consider the original logic with strcmp, which is more inline
with acpi_dev_uid_match(), "01" should not be the case here in my opinion.
Thanks for sharing your concern though.
Raag
^ permalink raw reply related [flat|nested] 8+ messages in thread* Re: [PATCH v1] ACPI: LPSS: use acpi_dev_uid_match() for matching _UID
2023-10-25 18:21 ` Raag Jadav
@ 2023-10-25 18:33 ` Rafael J. Wysocki
0 siblings, 0 replies; 8+ messages in thread
From: Rafael J. Wysocki @ 2023-10-25 18:33 UTC (permalink / raw)
To: Raag Jadav
Cc: Rafael J. Wysocki, Mika Westerberg, len.brown, andriy.shevchenko,
linux-acpi, linux-kernel, mallikarjunappa.sangannavar,
bala.senthil
On Wed, Oct 25, 2023 at 8:21 PM Raag Jadav <raag.jadav@intel.com> wrote:
>
> On Wed, Oct 25, 2023 at 08:04:44PM +0200, Rafael J. Wysocki wrote:
> > On Wed, Oct 25, 2023 at 7:53 AM Mika Westerberg
> > <mika.westerberg@linux.intel.com> wrote:
> > >
> > > On Wed, Oct 25, 2023 at 11:08:33AM +0530, Raag Jadav wrote:
> > > > Use acpi_dev_uid_match() for matching _UID instead of treating it
> > > > as an integer.
> > > >
> > > > Signed-off-by: Raag Jadav <raag.jadav@intel.com>
> > >
> > > Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
> >
> > I was about to apply this, but then I realized that it might change
> > the behavior in a subtle way, because what if the _UID string is
> > something like "01"?
>
> I checked the git history and found below.
>
> commit 2a036e489eb1571810126d6fa47bd8af1e237c08
> Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> Date: Tue Sep 13 19:31:41 2022 +0300
>
> ACPI: LPSS: Refactor _UID handling to use acpi_dev_uid_to_integer()
>
> ACPI utils provide acpi_dev_uid_to_integer() helper to extract _UID as
> an integer. Use it instead of custom approach.
>
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> Reviewed-by: Hans de Goede <hdegoede@redhat.com>
> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
>
> diff --git a/drivers/acpi/acpi_lpss.c b/drivers/acpi/acpi_lpss.c
> index c4d4d21391d7..4d415e210c32 100644
> --- a/drivers/acpi/acpi_lpss.c
> +++ b/drivers/acpi/acpi_lpss.c
> @@ -167,10 +167,10 @@ static struct pwm_lookup byt_pwm_lookup[] = {
>
> static void byt_pwm_setup(struct lpss_private_data *pdata)
> {
> - struct acpi_device *adev = pdata->adev;
> + u64 uid;
>
> /* Only call pwm_add_table for the first PWM controller */
> - if (!adev->pnp.unique_id || strcmp(adev->pnp.unique_id, "1"))
> + if (acpi_dev_uid_to_integer(pdata->adev, &uid) || uid != 1)
> return;
>
> pwm_add_table(byt_pwm_lookup, ARRAY_SIZE(byt_pwm_lookup));
>
> So if we consider the original logic with strcmp, which is more inline
> with acpi_dev_uid_match(), "01" should not be the case here in my opinion.
>
> Thanks for sharing your concern though.
Well, this means that what the patch really does is to effectively
revert commit 2a036e489eb1571810126d6fa47bd8af1e237c08 and use the new
helper instead of the open-coded check that was there before, so all
of this information should be present in the changelog.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v1] ACPI: LPSS: use acpi_dev_uid_match() for matching _UID
2023-10-25 5:38 [PATCH v1] ACPI: LPSS: use acpi_dev_uid_match() for matching _UID Raag Jadav
2023-10-25 5:53 ` Mika Westerberg
@ 2023-10-25 20:33 ` Andy Shevchenko
2023-10-26 3:00 ` Raag Jadav
1 sibling, 1 reply; 8+ messages in thread
From: Andy Shevchenko @ 2023-10-25 20:33 UTC (permalink / raw)
To: Raag Jadav
Cc: rafael, len.brown, mika.westerberg, linux-acpi, linux-kernel,
mallikarjunappa.sangannavar, bala.senthil
On Wed, Oct 25, 2023 at 11:08:33AM +0530, Raag Jadav wrote:
> Use acpi_dev_uid_match() for matching _UID instead of treating it
> as an integer.
NAK. See below why.
...
> static void byt_pwm_setup(struct lpss_private_data *pdata)
> {
> - u64 uid;
> -
> /* Only call pwm_add_table for the first PWM controller */
> - if (acpi_dev_uid_to_integer(pdata->adev, &uid) || uid != 1)
> + if (!acpi_dev_uid_match(pdata->adev, "1"))
_UID by specification is a type of _string_. Yet, that string may represent an
integer number. Now, how many variants of the strings can you imagine that may
be interpreted as integer 1? I can tell about dozens.
With your change you restricted the all possible spectre of the 1
representations to a single one. Have you checked ALL of the DSDTs
for these platforms to say 'hey, all current tables uses "1" and
this is not an issue'? Further question, will you guarantee that new
platforms on this chip won't use something different? (Not that big
issue, but will require to actively revert your change in the future).
> return;
>
> pwm_add_table(byt_pwm_lookup, ARRAY_SIZE(byt_pwm_lookup));
> @@ -218,10 +216,8 @@ static struct pwm_lookup bsw_pwm_lookup[] = {
>
> static void bsw_pwm_setup(struct lpss_private_data *pdata)
> {
> - u64 uid;
> -
> /* Only call pwm_add_table for the first PWM controller */
> - if (acpi_dev_uid_to_integer(pdata->adev, &uid) || uid != 1)
> + if (!acpi_dev_uid_match(pdata->adev, "1"))
> return;
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH v1] ACPI: LPSS: use acpi_dev_uid_match() for matching _UID
2023-10-25 20:33 ` Andy Shevchenko
@ 2023-10-26 3:00 ` Raag Jadav
2023-10-26 12:06 ` Andy Shevchenko
0 siblings, 1 reply; 8+ messages in thread
From: Raag Jadav @ 2023-10-26 3:00 UTC (permalink / raw)
To: Andy Shevchenko
Cc: rafael, len.brown, mika.westerberg, linux-acpi, linux-kernel,
mallikarjunappa.sangannavar, bala.senthil
On Wed, Oct 25, 2023 at 11:33:40PM +0300, Andy Shevchenko wrote:
> On Wed, Oct 25, 2023 at 11:08:33AM +0530, Raag Jadav wrote:
> > Use acpi_dev_uid_match() for matching _UID instead of treating it
> > as an integer.
>
> NAK. See below why.
>
> ...
>
> > static void byt_pwm_setup(struct lpss_private_data *pdata)
> > {
> > - u64 uid;
> > -
> > /* Only call pwm_add_table for the first PWM controller */
> > - if (acpi_dev_uid_to_integer(pdata->adev, &uid) || uid != 1)
> > + if (!acpi_dev_uid_match(pdata->adev, "1"))
>
> _UID by specification is a type of _string_. Yet, that string may represent an
> integer number. Now, how many variants of the strings can you imagine that may
> be interpreted as integer 1? I can tell about dozens.
>
> With your change you restricted the all possible spectre of the 1
> representations to a single one. Have you checked ALL of the DSDTs
> for these platforms to say 'hey, all current tables uses "1" and
> this is not an issue'?
I'm not sure if I'm following you, this would basically invalidate every
usage of acpi_dev_hid_uid_match() helper across the driver.
Raag
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH v1] ACPI: LPSS: use acpi_dev_uid_match() for matching _UID
2023-10-26 3:00 ` Raag Jadav
@ 2023-10-26 12:06 ` Andy Shevchenko
0 siblings, 0 replies; 8+ messages in thread
From: Andy Shevchenko @ 2023-10-26 12:06 UTC (permalink / raw)
To: Raag Jadav
Cc: rafael, len.brown, mika.westerberg, linux-acpi, linux-kernel,
mallikarjunappa.sangannavar, bala.senthil
On Thu, Oct 26, 2023 at 06:00:25AM +0300, Raag Jadav wrote:
> On Wed, Oct 25, 2023 at 11:33:40PM +0300, Andy Shevchenko wrote:
> > On Wed, Oct 25, 2023 at 11:08:33AM +0530, Raag Jadav wrote:
...
> > > static void byt_pwm_setup(struct lpss_private_data *pdata)
> > > {
> > > - u64 uid;
> > > -
> > > /* Only call pwm_add_table for the first PWM controller */
> > > - if (acpi_dev_uid_to_integer(pdata->adev, &uid) || uid != 1)
> > > + if (!acpi_dev_uid_match(pdata->adev, "1"))
> >
> > _UID by specification is a type of _string_. Yet, that string may represent an
> > integer number. Now, how many variants of the strings can you imagine that may
> > be interpreted as integer 1? I can tell about dozens.
> >
> > With your change you restricted the all possible spectre of the 1
> > representations to a single one. Have you checked ALL of the DSDTs
> > for these platforms to say 'hey, all current tables uses "1" and
> > this is not an issue'?
>
> I'm not sure if I'm following you, this would basically invalidate every
> usage of acpi_dev_hid_uid_match() helper across the driver.
It depends.
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2023-10-26 12:06 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-10-25 5:38 [PATCH v1] ACPI: LPSS: use acpi_dev_uid_match() for matching _UID Raag Jadav
2023-10-25 5:53 ` Mika Westerberg
2023-10-25 18:04 ` Rafael J. Wysocki
2023-10-25 18:21 ` Raag Jadav
2023-10-25 18:33 ` Rafael J. Wysocki
2023-10-25 20:33 ` Andy Shevchenko
2023-10-26 3:00 ` Raag Jadav
2023-10-26 12:06 ` Andy Shevchenko
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox