Re: [PATCH 1/1] ACPI: property: Consider data nodes as being available

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Sakari,

On Thu, Dec 19, 2024 at 11:32 AM Sakari Ailus
<sakari.ailus@xxxxxxxxxxxxxxx> wrote:
>
> Hi Rafael,
>
> Thanks for the review.
>
> On Wed, Dec 18, 2024 at 12:07:52PM +0100, Rafael J. Wysocki wrote:
> > On Wed, Dec 18, 2024 at 10:16 AM Sakari Ailus
> > <sakari.ailus@xxxxxxxxxxxxxxx> wrote:
> > >
> > > Years after fwnode_device_is_available() was introduced, new functions
> > > making use of the function on data nodes have been added, such as
> > > fwnode_for_each_available_child_node(), it becomes apparent that returning
> > > "false" for all child nodes on ACPI wasn't a workable option.
> >
> > Can you describe the problem in a bit more detail?
>
> How about:

This is better IMV.  At least it actually matches my understanding of the issue.

> Years after fwnode_device_is_available() was introduced, new functions
> making use of the data node availability information have been added, such
> as fwnode_for_each_available_child_node().

I would rephrase the sentence above as follows:

"New functions making use of the data node availability information,
like fwnode_for_each_available_child_node(), have been added years
after fwnode_device_is_available() was introduced."

> To enumerate the data nodes in
> various ways specific to those functions, the node availability test needs
> to pass.
>
> On ACPI, there is no explicit information on this

I guess by "this" you mean the availability of the data (non-device) nodes?

> in the first place and
> the original fwnode_device_is_available() implementation simply returnes

returns

> false. This leads to the new functions enumerating only available nodes to
> never return any nodes on ACPI.

I'd say "This causes new functions that only enumerate available nodes
to never return any nodes on ACPI for leaf devices that have child
data nodes."

> On DT side most access functions, even
> those without "_available" part, did only operate on available nodes.

On the DT side, :device_is_available points to
of_device_is_available() that calls __of_device_is_available() which
returns "true" for all nodes without the "status" property, so if I'm
not mistaken, on the DT side fwnode_device_is_available() will return
"true" for any nodes without the "status" property.

I would say something like this:

"However, on the DT side, fwnode_device_is_available() returns "true"
for all nodes without the "status" property which are analogous to the
ACPI data nodes, so there is a difference in behavior between DT and
ACPI in that respect."

> Thus from now on, return true from fwnode_device_is_available() on all ACPI
> data nodes.
>
> >
> > > On DT side most access functions, even those without "_available" part,
> > > did only operate on available nodes. That wasn't the case on ACPI where
> > > only device node availability is known explicitly.
> > >
> > > Thus from now on, return true from fwnode_device_is_available() on all
> > > ACPI data nodes.
> > >
> > > Fixes: 2294b3af05e9 ("device property: Introduce fwnode_device_is_available()")
> >
> > Do you want people to backport this patch?
>
> Good question.
>
> There are just a couple of drivers using the new fwnode_*_available()
> functions and I think they're used on DT-based platforms *currently*. So
> nothing is broken right now as far as I can see (but likely will be in some
> time without the patch).
>
> I guess just dropping Fixes: is an alternative, this wasn't really a bug
> honestly. Backporting shouldn't hurt either though.

Yes, I would drop the Fixes: tag.  If need be, the "stable" people can
be asked directly to pick it up, but it's better to avoid automatic
backporting of it IMV.

> >
> > > Signed-off-by: Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx>
> > > ---
> > >  drivers/acpi/property.c | 2 +-
> > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > >
> > > diff --git a/drivers/acpi/property.c b/drivers/acpi/property.c
> > > index 80a52a4e66dd..1ee81e771ae6 100644
> > > --- a/drivers/acpi/property.c
> > > +++ b/drivers/acpi/property.c
> > > @@ -1492,7 +1492,7 @@ acpi_graph_get_remote_endpoint(const struct fwnode_handle *__fwnode)
> > >  static bool acpi_fwnode_device_is_available(const struct fwnode_handle *fwnode)
> > >  {
> > >         if (!is_acpi_device_node(fwnode))
> > > -               return false;
> > > +               return true;
> > >
> > >         return acpi_device_is_present(to_acpi_device_node(fwnode));
> > >  }
> > >
> > > base-commit: 7fa366f1b6e376c38966faa42da7f0f2e013fdab
>
> --
> Kind regards,
>
> Sakari Ailus
>





[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]
  Powered by Linux