diff mbox series

[v3,6/7] ACPI: bus: implement acpi_device_hid when !ACPI

Message ID 20241210-fix-ipu-v3-6-00e409c84a6c@chromium.org (mailing list archive)
State Superseded, archived
Headers show
Series ipu6: get rid of all the IS_ENABLED(CONFIG_ACPI) | expand

Commit Message

Ricardo Ribalda Dec. 10, 2024, 7:56 p.m. UTC
Provide an implementation of acpi_device_hid that can be used when
CONFIG_ACPI is not set.

Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
---
 include/acpi/acpi_bus.h | 5 +++++
 1 file changed, 5 insertions(+)

Comments

Sakari Ailus Dec. 10, 2024, 9:01 p.m. UTC | #1
Hi Ricardo,

On Tue, Dec 10, 2024 at 07:56:03PM +0000, Ricardo Ribalda wrote:
> Provide an implementation of acpi_device_hid that can be used when
> CONFIG_ACPI is not set.
> 
> Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
> ---
>  include/acpi/acpi_bus.h | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/include/acpi/acpi_bus.h b/include/acpi/acpi_bus.h
> index 4f1b3a6f107b..c25914a152ee 100644
> --- a/include/acpi/acpi_bus.h
> +++ b/include/acpi/acpi_bus.h
> @@ -1003,6 +1003,11 @@ static inline int unregister_acpi_bus_type(void *bus) { return 0; }
>  
>  static inline int acpi_wait_for_acpi_ipmi(void) { return 0; }
>  
> +static inline const char *acpi_device_hid(struct acpi_device *device)
> +{
> +	return "";
> +}

I wonder if any caller might expect something of a string if provided?
Valid _HIDs are either 7 or 8 characters whereas the proper version of the
function returns "device" when one cannot be found (dummy_hid in
drivers/acpi/scan.c). Unlikely to be a problem perhaps.

Reviewed-by: Sakari Ailus <sakari.ailus@linux.intel.com>

> +
>  static inline acpi_status
>  acpi_get_physical_device_location(acpi_handle handle, struct acpi_pld_info **pld)
>  {
>
Ricardo Ribalda Dec. 10, 2024, 10:35 p.m. UTC | #2
On Tue, 10 Dec 2024 at 22:01, Sakari Ailus <sakari.ailus@linux.intel.com> wrote:
>
> Hi Ricardo,
>
> On Tue, Dec 10, 2024 at 07:56:03PM +0000, Ricardo Ribalda wrote:
> > Provide an implementation of acpi_device_hid that can be used when
> > CONFIG_ACPI is not set.
> >
> > Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
> > ---
> >  include/acpi/acpi_bus.h | 5 +++++
> >  1 file changed, 5 insertions(+)
> >
> > diff --git a/include/acpi/acpi_bus.h b/include/acpi/acpi_bus.h
> > index 4f1b3a6f107b..c25914a152ee 100644
> > --- a/include/acpi/acpi_bus.h
> > +++ b/include/acpi/acpi_bus.h
> > @@ -1003,6 +1003,11 @@ static inline int unregister_acpi_bus_type(void *bus) { return 0; }
> >
> >  static inline int acpi_wait_for_acpi_ipmi(void) { return 0; }
> >
> > +static inline const char *acpi_device_hid(struct acpi_device *device)
> > +{
> > +     return "";
> > +}
>
> I wonder if any caller might expect something of a string if provided?
> Valid _HIDs are either 7 or 8 characters whereas the proper version of the
> function returns "device" when one cannot be found (dummy_hid in
> drivers/acpi/scan.c). Unlikely to be a problem perhaps.

Good point. I changed it to return "device"

Thanks!

>
> Reviewed-by: Sakari Ailus <sakari.ailus@linux.intel.com>
>
> > +
> >  static inline acpi_status
> >  acpi_get_physical_device_location(acpi_handle handle, struct acpi_pld_info **pld)
> >  {
> >
>
> --
> Regards,
>
> Sakari Ailus
Sakari Ailus Dec. 11, 2024, 7:57 a.m. UTC | #3
Hi Ricardo,

On Tue, Dec 10, 2024 at 11:35:35PM +0100, Ricardo Ribalda wrote:
> On Tue, 10 Dec 2024 at 22:01, Sakari Ailus <sakari.ailus@linux.intel.com> wrote:
> >
> > Hi Ricardo,
> >
> > On Tue, Dec 10, 2024 at 07:56:03PM +0000, Ricardo Ribalda wrote:
> > > Provide an implementation of acpi_device_hid that can be used when
> > > CONFIG_ACPI is not set.
> > >
> > > Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
> > > ---
> > >  include/acpi/acpi_bus.h | 5 +++++
> > >  1 file changed, 5 insertions(+)
> > >
> > > diff --git a/include/acpi/acpi_bus.h b/include/acpi/acpi_bus.h
> > > index 4f1b3a6f107b..c25914a152ee 100644
> > > --- a/include/acpi/acpi_bus.h
> > > +++ b/include/acpi/acpi_bus.h
> > > @@ -1003,6 +1003,11 @@ static inline int unregister_acpi_bus_type(void *bus) { return 0; }
> > >
> > >  static inline int acpi_wait_for_acpi_ipmi(void) { return 0; }
> > >
> > > +static inline const char *acpi_device_hid(struct acpi_device *device)
> > > +{
> > > +     return "";
> > > +}
> >
> > I wonder if any caller might expect something of a string if provided?
> > Valid _HIDs are either 7 or 8 characters whereas the proper version of the
> > function returns "device" when one cannot be found (dummy_hid in
> > drivers/acpi/scan.c). Unlikely to be a problem perhaps.
> 
> Good point. I changed it to return "device"

When ACPI is disabled, it's unlikely that string would be used anyway, vs.
the case when ACPI is enabled but there's no _HID. So I think an empty
string should be fine. I wonder what others think.
Mauro Carvalho Chehab Dec. 11, 2024, 8:40 a.m. UTC | #4
Em Wed, 11 Dec 2024 07:57:06 +0000
Sakari Ailus <sakari.ailus@linux.intel.com> escreveu:

> Hi Ricardo,
> 
> On Tue, Dec 10, 2024 at 11:35:35PM +0100, Ricardo Ribalda wrote:
> > On Tue, 10 Dec 2024 at 22:01, Sakari Ailus <sakari.ailus@linux.intel.com> wrote:  
> > >
> > > Hi Ricardo,
> > >
> > > On Tue, Dec 10, 2024 at 07:56:03PM +0000, Ricardo Ribalda wrote:  
> > > > Provide an implementation of acpi_device_hid that can be used when
> > > > CONFIG_ACPI is not set.
> > > >
> > > > Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
> > > > ---
> > > >  include/acpi/acpi_bus.h | 5 +++++
> > > >  1 file changed, 5 insertions(+)
> > > >
> > > > diff --git a/include/acpi/acpi_bus.h b/include/acpi/acpi_bus.h
> > > > index 4f1b3a6f107b..c25914a152ee 100644
> > > > --- a/include/acpi/acpi_bus.h
> > > > +++ b/include/acpi/acpi_bus.h
> > > > @@ -1003,6 +1003,11 @@ static inline int unregister_acpi_bus_type(void *bus) { return 0; }
> > > >
> > > >  static inline int acpi_wait_for_acpi_ipmi(void) { return 0; }
> > > >
> > > > +static inline const char *acpi_device_hid(struct acpi_device *device)
> > > > +{
> > > > +     return "";
> > > > +}  
> > >
> > > I wonder if any caller might expect something of a string if provided?
> > > Valid _HIDs are either 7 or 8 characters whereas the proper version of the
> > > function returns "device" when one cannot be found (dummy_hid in
> > > drivers/acpi/scan.c). Unlikely to be a problem perhaps.  
> > 
> > Good point. I changed it to return "device"  
> 
> When ACPI is disabled, it's unlikely that string would be used anyway, vs.
> the case when ACPI is enabled but there's no _HID. So I think an empty
> string should be fine. I wonder what others think.
> 
Returning "" also caused me some attention at the original patch. IMO,
placing a pseudo-valid HID would be better, but I guess "device" is also
invalid, as, at least I always saw HIDs in uppercase. Also, I guess it
is always a vendor ID + a 4 digit number.

so, IMHO, something like "DEVC9999" would be a better name if we fill it.

Thanks,
Mauro
Sakari Ailus Dec. 11, 2024, 8:48 a.m. UTC | #5
Hi Mauro,

On Wed, Dec 11, 2024 at 09:40:37AM +0100, Mauro Carvalho Chehab wrote:
> Em Wed, 11 Dec 2024 07:57:06 +0000
> Sakari Ailus <sakari.ailus@linux.intel.com> escreveu:
> 
> > Hi Ricardo,
> > 
> > On Tue, Dec 10, 2024 at 11:35:35PM +0100, Ricardo Ribalda wrote:
> > > On Tue, 10 Dec 2024 at 22:01, Sakari Ailus <sakari.ailus@linux.intel.com> wrote:  
> > > >
> > > > Hi Ricardo,
> > > >
> > > > On Tue, Dec 10, 2024 at 07:56:03PM +0000, Ricardo Ribalda wrote:  
> > > > > Provide an implementation of acpi_device_hid that can be used when
> > > > > CONFIG_ACPI is not set.
> > > > >
> > > > > Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
> > > > > ---
> > > > >  include/acpi/acpi_bus.h | 5 +++++
> > > > >  1 file changed, 5 insertions(+)
> > > > >
> > > > > diff --git a/include/acpi/acpi_bus.h b/include/acpi/acpi_bus.h
> > > > > index 4f1b3a6f107b..c25914a152ee 100644
> > > > > --- a/include/acpi/acpi_bus.h
> > > > > +++ b/include/acpi/acpi_bus.h
> > > > > @@ -1003,6 +1003,11 @@ static inline int unregister_acpi_bus_type(void *bus) { return 0; }
> > > > >
> > > > >  static inline int acpi_wait_for_acpi_ipmi(void) { return 0; }
> > > > >
> > > > > +static inline const char *acpi_device_hid(struct acpi_device *device)
> > > > > +{
> > > > > +     return "";
> > > > > +}  
> > > >
> > > > I wonder if any caller might expect something of a string if provided?
> > > > Valid _HIDs are either 7 or 8 characters whereas the proper version of the
> > > > function returns "device" when one cannot be found (dummy_hid in
> > > > drivers/acpi/scan.c). Unlikely to be a problem perhaps.  
> > > 
> > > Good point. I changed it to return "device"  
> > 
> > When ACPI is disabled, it's unlikely that string would be used anyway, vs.
> > the case when ACPI is enabled but there's no _HID. So I think an empty
> > string should be fine. I wonder what others think.
> > 
> Returning "" also caused me some attention at the original patch. IMO,
> placing a pseudo-valid HID would be better, but I guess "device" is also
> invalid, as, at least I always saw HIDs in uppercase. Also, I guess it
> is always a vendor ID + a 4 digit number.
> 
> so, IMHO, something like "DEVC9999" would be a better name if we fill it.

How about post a patch changing "device" in drivers/acpi/scan.c? :-) But I
think the string also needs to be an invalid as a _HID object so it's not
masking an actual hardware ID used by a real device.
Mauro Carvalho Chehab Dec. 11, 2024, 8:57 a.m. UTC | #6
Em Wed, 11 Dec 2024 08:48:51 +0000
Sakari Ailus <sakari.ailus@linux.intel.com> escreveu:

> Hi Mauro,
> 
> On Wed, Dec 11, 2024 at 09:40:37AM +0100, Mauro Carvalho Chehab wrote:
> > Em Wed, 11 Dec 2024 07:57:06 +0000
> > Sakari Ailus <sakari.ailus@linux.intel.com> escreveu:
> >   
> > > Hi Ricardo,
> > > 
> > > On Tue, Dec 10, 2024 at 11:35:35PM +0100, Ricardo Ribalda wrote:  
> > > > On Tue, 10 Dec 2024 at 22:01, Sakari Ailus <sakari.ailus@linux.intel.com> wrote:    
> > > > >
> > > > > Hi Ricardo,
> > > > >
> > > > > On Tue, Dec 10, 2024 at 07:56:03PM +0000, Ricardo Ribalda wrote:    
> > > > > > Provide an implementation of acpi_device_hid that can be used when
> > > > > > CONFIG_ACPI is not set.
> > > > > >
> > > > > > Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
> > > > > > ---
> > > > > >  include/acpi/acpi_bus.h | 5 +++++
> > > > > >  1 file changed, 5 insertions(+)
> > > > > >
> > > > > > diff --git a/include/acpi/acpi_bus.h b/include/acpi/acpi_bus.h
> > > > > > index 4f1b3a6f107b..c25914a152ee 100644
> > > > > > --- a/include/acpi/acpi_bus.h
> > > > > > +++ b/include/acpi/acpi_bus.h
> > > > > > @@ -1003,6 +1003,11 @@ static inline int unregister_acpi_bus_type(void *bus) { return 0; }
> > > > > >
> > > > > >  static inline int acpi_wait_for_acpi_ipmi(void) { return 0; }
> > > > > >
> > > > > > +static inline const char *acpi_device_hid(struct acpi_device *device)
> > > > > > +{
> > > > > > +     return "";
> > > > > > +}    
> > > > >
> > > > > I wonder if any caller might expect something of a string if provided?
> > > > > Valid _HIDs are either 7 or 8 characters whereas the proper version of the
> > > > > function returns "device" when one cannot be found (dummy_hid in
> > > > > drivers/acpi/scan.c). Unlikely to be a problem perhaps.    
> > > > 
> > > > Good point. I changed it to return "device"    
> > > 
> > > When ACPI is disabled, it's unlikely that string would be used anyway, vs.
> > > the case when ACPI is enabled but there's no _HID. So I think an empty
> > > string should be fine. I wonder what others think.
> > >   
> > Returning "" also caused me some attention at the original patch. IMO,
> > placing a pseudo-valid HID would be better, but I guess "device" is also
> > invalid, as, at least I always saw HIDs in uppercase. Also, I guess it
> > is always a vendor ID + a 4 digit number.
> > 
> > so, IMHO, something like "DEVC9999" would be a better name if we fill it.  
> 
> How about post a patch changing "device" in drivers/acpi/scan.c? :-)

Yeah, keeping it coherent makes sense, but see:

	static const char *dummy_hid = "device";

This is compiled for production kernels, and not just for COMPILE_TEST,
while:

	static inline const char *acpi_device_hid(struct acpi_device *device)
	{
		return "foo";
	}

is only COMPILE_TEST. They don't need to be aligned.

> But I
> think the string also needs to be an invalid as a _HID object so it's not
> masking an actual hardware ID used by a real device.

It doesn't matter if if ever conflicts to a real device, as this is
for COMPILE_TEST only.

Anyway, from my side, I'm just giving my 2 cents. I'm ok either way: 
"", "device", "DEVC999", ...

Thanks,
Mauro
diff mbox series

Patch

diff --git a/include/acpi/acpi_bus.h b/include/acpi/acpi_bus.h
index 4f1b3a6f107b..c25914a152ee 100644
--- a/include/acpi/acpi_bus.h
+++ b/include/acpi/acpi_bus.h
@@ -1003,6 +1003,11 @@  static inline int unregister_acpi_bus_type(void *bus) { return 0; }
 
 static inline int acpi_wait_for_acpi_ipmi(void) { return 0; }
 
+static inline const char *acpi_device_hid(struct acpi_device *device)
+{
+	return "";
+}
+
 static inline acpi_status
 acpi_get_physical_device_location(acpi_handle handle, struct acpi_pld_info **pld)
 {