* [PATCH] acpi, property: Export acpi_dev_prop_read_single call. @ 2015-08-04 23:01 David Daney 2015-08-05 13:48 ` Rafael J. Wysocki 0 siblings, 1 reply; 10+ messages in thread From: David Daney @ 2015-08-04 23:01 UTC (permalink / raw) To: linux-kernel, linux-acpi, Len Brown, Rafael J. Wysocki Cc: Tomasz Nowicki, Robert Richter, David Daney From: Tomasz Nowicki <tomasz.nowicki@linaro.org> Fixes the following build error when building drivers as modules: ERROR: "acpi_dev_prop_read_single" [drivers/net/phy/mdio-octeon.ko] undefined! ERROR: "acpi_dev_prop_read_single" [drivers/net/ethernet/cavium/thunder/thunder_bgx.ko] undefined! Reported-by: Andreas Schwab <schwab@suse.de> Signed-off-by: Tomasz Nowicki <tomasz.nowicki@linaro.org> Signed-off-by: Robert Richter <rrichter@cavium.com> Signed-off-by: David Daney <david.daney@cavium.com> --- drivers/acpi/property.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/acpi/property.c b/drivers/acpi/property.c index 7836e2e..237e3c5 100644 --- a/drivers/acpi/property.c +++ b/drivers/acpi/property.c @@ -432,6 +432,7 @@ int acpi_dev_prop_read_single(struct acpi_device *adev, const char *propname, } return ret; } +EXPORT_SYMBOL_GPL(acpi_dev_prop_read_single); static int acpi_copy_property_array_u8(const union acpi_object *items, u8 *val, size_t nval) -- 1.7.11.7 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH] acpi, property: Export acpi_dev_prop_read_single call. 2015-08-04 23:01 [PATCH] acpi, property: Export acpi_dev_prop_read_single call David Daney @ 2015-08-05 13:48 ` Rafael J. Wysocki 2015-08-05 13:43 ` Tomasz Nowicki 0 siblings, 1 reply; 10+ messages in thread From: Rafael J. Wysocki @ 2015-08-05 13:48 UTC (permalink / raw) To: David Daney Cc: linux-kernel, linux-acpi, Len Brown, Tomasz Nowicki, Robert Richter, David Daney On Tuesday, August 04, 2015 04:01:59 PM David Daney wrote: > From: Tomasz Nowicki <tomasz.nowicki@linaro.org> > > Fixes the following build error when building drivers as modules: > > ERROR: "acpi_dev_prop_read_single" [drivers/net/phy/mdio-octeon.ko] undefined! > ERROR: "acpi_dev_prop_read_single" [drivers/net/ethernet/cavium/thunder/thunder_bgx.ko] undefined! Can you please tell me why the drivers in question use that function directly, although they aren't supposed to? Clearly, their authors had not tried to build them as modules or they would have noticed the problem at the development stage already. What would be wrong with using the generic device properties API instead? > Reported-by: Andreas Schwab <schwab@suse.de> > Signed-off-by: Tomasz Nowicki <tomasz.nowicki@linaro.org> > Signed-off-by: Robert Richter <rrichter@cavium.com> > Signed-off-by: David Daney <david.daney@cavium.com> > --- > drivers/acpi/property.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/acpi/property.c b/drivers/acpi/property.c > index 7836e2e..237e3c5 100644 > --- a/drivers/acpi/property.c > +++ b/drivers/acpi/property.c > @@ -432,6 +432,7 @@ int acpi_dev_prop_read_single(struct acpi_device *adev, const char *propname, > } > return ret; > } > +EXPORT_SYMBOL_GPL(acpi_dev_prop_read_single); > > static int acpi_copy_property_array_u8(const union acpi_object *items, u8 *val, > size_t nval) > -- I speak only for myself. Rafael J. Wysocki, Intel Open Source Technology Center. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] acpi, property: Export acpi_dev_prop_read_single call. 2015-08-05 13:48 ` Rafael J. Wysocki @ 2015-08-05 13:43 ` Tomasz Nowicki 2015-08-05 17:26 ` David Daney 0 siblings, 1 reply; 10+ messages in thread From: Tomasz Nowicki @ 2015-08-05 13:43 UTC (permalink / raw) To: Rafael J. Wysocki, David Daney Cc: linux-kernel, linux-acpi, Len Brown, Robert Richter, David Daney On 05.08.2015 15:48, Rafael J. Wysocki wrote: > On Tuesday, August 04, 2015 04:01:59 PM David Daney wrote: >> From: Tomasz Nowicki <tomasz.nowicki@linaro.org> >> >> Fixes the following build error when building drivers as modules: >> >> ERROR: "acpi_dev_prop_read_single" [drivers/net/phy/mdio-octeon.ko] undefined! >> ERROR: "acpi_dev_prop_read_single" [drivers/net/ethernet/cavium/thunder/thunder_bgx.ko] undefined! > > Can you please tell me why the drivers in question use that function > directly, although they aren't supposed to? > > Clearly, their authors had not tried to build them as modules or they > would have noticed the problem at the development stage already. > > What would be wrong with using the generic device properties API instead? > Yes, you are right. We should use: int device_property_read_u64_array(struct device *dev, const char *propname, u64 *val, size_t nval); Regards, Tomasz ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] acpi, property: Export acpi_dev_prop_read_single call. 2015-08-05 13:43 ` Tomasz Nowicki @ 2015-08-05 17:26 ` David Daney 2015-08-05 20:14 ` David Daney 0 siblings, 1 reply; 10+ messages in thread From: David Daney @ 2015-08-05 17:26 UTC (permalink / raw) To: Tomasz Nowicki Cc: Rafael J. Wysocki, linux-kernel, linux-acpi, Len Brown, Robert Richter, David Daney On 08/05/2015 06:43 AM, Tomasz Nowicki wrote: > On 05.08.2015 15:48, Rafael J. Wysocki wrote: >> On Tuesday, August 04, 2015 04:01:59 PM David Daney wrote: >>> From: Tomasz Nowicki <tomasz.nowicki@linaro.org> >>> >>> Fixes the following build error when building drivers as modules: >>> >>> ERROR: "acpi_dev_prop_read_single" [drivers/net/phy/mdio-octeon.ko] >>> undefined! >>> ERROR: "acpi_dev_prop_read_single" >>> [drivers/net/ethernet/cavium/thunder/thunder_bgx.ko] undefined! >> >> Can you please tell me why the drivers in question use that function >> directly, although they aren't supposed to? >> >> Clearly, their authors had not tried to build them as modules or they >> would have noticed the problem at the development stage already. >> >> What would be wrong with using the generic device properties API instead? >> > Yes, you are right. We should use: > int device_property_read_u64_array(struct device *dev, const char > *propname, u64 *val, size_t nval); > Thanks all, for the review and suggestions. We we try the suggested approach and see how it goes... Thanks again, David Daney ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] acpi, property: Export acpi_dev_prop_read_single call. 2015-08-05 17:26 ` David Daney @ 2015-08-05 20:14 ` David Daney 2015-08-05 23:23 ` Rafael J. Wysocki 0 siblings, 1 reply; 10+ messages in thread From: David Daney @ 2015-08-05 20:14 UTC (permalink / raw) To: David Daney, Tomasz Nowicki, Rafael J. Wysocki Cc: linux-kernel, linux-acpi, Len Brown, Robert Richter, David Daney On 08/05/2015 10:26 AM, David Daney wrote: > On 08/05/2015 06:43 AM, Tomasz Nowicki wrote: >> On 05.08.2015 15:48, Rafael J. Wysocki wrote: >>> On Tuesday, August 04, 2015 04:01:59 PM David Daney wrote: >>>> From: Tomasz Nowicki <tomasz.nowicki@linaro.org> >>>> >>>> Fixes the following build error when building drivers as modules: >>>> >>>> ERROR: "acpi_dev_prop_read_single" [drivers/net/phy/mdio-octeon.ko] >>>> undefined! >>>> ERROR: "acpi_dev_prop_read_single" >>>> [drivers/net/ethernet/cavium/thunder/thunder_bgx.ko] undefined! >>> >>> Can you please tell me why the drivers in question use that function >>> directly, although they aren't supposed to? >>> >>> Clearly, their authors had not tried to build them as modules or they >>> would have noticed the problem at the development stage already. >>> >>> What would be wrong with using the generic device properties API >>> instead? >>> >> Yes, you are right. We should use: >> int device_property_read_u64_array(struct device *dev, const char >> *propname, u64 *val, size_t nval); >> > > Thanks all, for the review and suggestions. We we try the suggested > approach and see how it goes... > Actually I don't think device_property_read_u64_array() will work. We are traversing a reference to a different acpi_device via acpi_dev_get_property_reference(), so there is no struct device * available for a call to device_property_read_u64_array(). This looks like a deficiency in the device_property_* framework, so for the time being I guess we will call acpi_dev_get_property(), which is exported, and decode the thing in the driver. David Daney ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] acpi, property: Export acpi_dev_prop_read_single call. 2015-08-05 20:14 ` David Daney @ 2015-08-05 23:23 ` Rafael J. Wysocki 2015-08-05 23:17 ` David Daney 2015-08-05 23:45 ` Rafael J. Wysocki 0 siblings, 2 replies; 10+ messages in thread From: Rafael J. Wysocki @ 2015-08-05 23:23 UTC (permalink / raw) To: David Daney Cc: David Daney, Tomasz Nowicki, linux-kernel, linux-acpi, Len Brown, Robert Richter, David Daney On Wednesday, August 05, 2015 01:14:49 PM David Daney wrote: > On 08/05/2015 10:26 AM, David Daney wrote: > > On 08/05/2015 06:43 AM, Tomasz Nowicki wrote: > >> On 05.08.2015 15:48, Rafael J. Wysocki wrote: > >>> On Tuesday, August 04, 2015 04:01:59 PM David Daney wrote: > >>>> From: Tomasz Nowicki <tomasz.nowicki@linaro.org> > >>>> > >>>> Fixes the following build error when building drivers as modules: > >>>> > >>>> ERROR: "acpi_dev_prop_read_single" [drivers/net/phy/mdio-octeon.ko] > >>>> undefined! > >>>> ERROR: "acpi_dev_prop_read_single" > >>>> [drivers/net/ethernet/cavium/thunder/thunder_bgx.ko] undefined! > >>> > >>> Can you please tell me why the drivers in question use that function > >>> directly, although they aren't supposed to? > >>> > >>> Clearly, their authors had not tried to build them as modules or they > >>> would have noticed the problem at the development stage already. > >>> > >>> What would be wrong with using the generic device properties API > >>> instead? > >>> > >> Yes, you are right. We should use: > >> int device_property_read_u64_array(struct device *dev, const char > >> *propname, u64 *val, size_t nval); > >> > > > > Thanks all, for the review and suggestions. We we try the suggested > > approach and see how it goes... > > > > Actually I don't think device_property_read_u64_array() will work. > > We are traversing a reference to a different acpi_device via > acpi_dev_get_property_reference(), Why? > so there is no struct device * > available for a call to device_property_read_u64_array(). This looks > like a deficiency in the device_property_* framework, so for the time > being I guess we will call acpi_dev_get_property(), which is exported, > and decode the thing in the driver. Please don't. I'd like to understand what's missing. Thanks, Rafael ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] acpi, property: Export acpi_dev_prop_read_single call. 2015-08-05 23:23 ` Rafael J. Wysocki @ 2015-08-05 23:17 ` David Daney 2015-08-05 23:55 ` Rafael J. Wysocki 2015-08-05 23:45 ` Rafael J. Wysocki 1 sibling, 1 reply; 10+ messages in thread From: David Daney @ 2015-08-05 23:17 UTC (permalink / raw) To: Rafael J. Wysocki Cc: David Daney, Tomasz Nowicki, linux-kernel, linux-acpi, Len Brown, Robert Richter, David Daney On 08/05/2015 04:23 PM, Rafael J. Wysocki wrote: > On Wednesday, August 05, 2015 01:14:49 PM David Daney wrote: >> On 08/05/2015 10:26 AM, David Daney wrote: >>> On 08/05/2015 06:43 AM, Tomasz Nowicki wrote: >>>> On 05.08.2015 15:48, Rafael J. Wysocki wrote: >>>>> On Tuesday, August 04, 2015 04:01:59 PM David Daney wrote: >>>>>> From: Tomasz Nowicki <tomasz.nowicki@linaro.org> >>>>>> >>>>>> Fixes the following build error when building drivers as modules: >>>>>> >>>>>> ERROR: "acpi_dev_prop_read_single" [drivers/net/phy/mdio-octeon.ko] >>>>>> undefined! >>>>>> ERROR: "acpi_dev_prop_read_single" >>>>>> [drivers/net/ethernet/cavium/thunder/thunder_bgx.ko] undefined! >>>>> >>>>> Can you please tell me why the drivers in question use that function >>>>> directly, although they aren't supposed to? >>>>> >>>>> Clearly, their authors had not tried to build them as modules or they >>>>> would have noticed the problem at the development stage already. >>>>> >>>>> What would be wrong with using the generic device properties API >>>>> instead? >>>>> >>>> Yes, you are right. We should use: >>>> int device_property_read_u64_array(struct device *dev, const char >>>> *propname, u64 *val, size_t nval); >>>> >>> >>> Thanks all, for the review and suggestions. We we try the suggested >>> approach and see how it goes... >>> >> >> Actually I don't think device_property_read_u64_array() will work. >> >> We are traversing a reference to a different acpi_device via >> acpi_dev_get_property_reference(), > > Why? Network device has a "phy-handle" (traversed with acpi_dev_get_property_reference()), and we want to get some properties of that phy. I could turn the question around to you: Why export acpi_dev_get_property_reference()? If there is a reason to export that, then you should let people use the result. > >> so there is no struct device * >> available for a call to device_property_read_u64_array(). This looks >> like a deficiency in the device_property_* framework, so for the time >> being I guess we will call acpi_dev_get_property(), which is exported, >> and decode the thing in the driver. > > Please don't. > > I'd like to understand what's missing. > > Thanks, > Rafael > ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] acpi, property: Export acpi_dev_prop_read_single call. 2015-08-05 23:17 ` David Daney @ 2015-08-05 23:55 ` Rafael J. Wysocki 2015-08-05 23:49 ` David Daney 0 siblings, 1 reply; 10+ messages in thread From: Rafael J. Wysocki @ 2015-08-05 23:55 UTC (permalink / raw) To: David Daney Cc: David Daney, Tomasz Nowicki, linux-kernel, linux-acpi, Len Brown, Robert Richter, David Daney On Wednesday, August 05, 2015 04:17:21 PM David Daney wrote: > On 08/05/2015 04:23 PM, Rafael J. Wysocki wrote: > > On Wednesday, August 05, 2015 01:14:49 PM David Daney wrote: > >> On 08/05/2015 10:26 AM, David Daney wrote: > >>> On 08/05/2015 06:43 AM, Tomasz Nowicki wrote: > >>>> On 05.08.2015 15:48, Rafael J. Wysocki wrote: > >>>>> On Tuesday, August 04, 2015 04:01:59 PM David Daney wrote: > >>>>>> From: Tomasz Nowicki <tomasz.nowicki@linaro.org> > >>>>>> > >>>>>> Fixes the following build error when building drivers as modules: > >>>>>> > >>>>>> ERROR: "acpi_dev_prop_read_single" [drivers/net/phy/mdio-octeon.ko] > >>>>>> undefined! > >>>>>> ERROR: "acpi_dev_prop_read_single" > >>>>>> [drivers/net/ethernet/cavium/thunder/thunder_bgx.ko] undefined! > >>>>> > >>>>> Can you please tell me why the drivers in question use that function > >>>>> directly, although they aren't supposed to? > >>>>> > >>>>> Clearly, their authors had not tried to build them as modules or they > >>>>> would have noticed the problem at the development stage already. > >>>>> > >>>>> What would be wrong with using the generic device properties API > >>>>> instead? > >>>>> > >>>> Yes, you are right. We should use: > >>>> int device_property_read_u64_array(struct device *dev, const char > >>>> *propname, u64 *val, size_t nval); > >>>> > >>> > >>> Thanks all, for the review and suggestions. We we try the suggested > >>> approach and see how it goes... > >>> > >> > >> Actually I don't think device_property_read_u64_array() will work. > >> > >> We are traversing a reference to a different acpi_device via > >> acpi_dev_get_property_reference(), > > > > Why? > > Network device has a "phy-handle" (traversed with > acpi_dev_get_property_reference()), and we want to get some properties > of that phy. > > I could turn the question around to you: Why export > acpi_dev_get_property_reference()? If there is a reason to export that, > then you should let people use the result. The GPIO core uses it and you *can* use the result (please see my other message). I wonder how does the ACPI table in question look like. Do you have an acpidump output from that system by any chance? Thanks, Rafael ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] acpi, property: Export acpi_dev_prop_read_single call. 2015-08-05 23:55 ` Rafael J. Wysocki @ 2015-08-05 23:49 ` David Daney 0 siblings, 0 replies; 10+ messages in thread From: David Daney @ 2015-08-05 23:49 UTC (permalink / raw) To: Rafael J. Wysocki Cc: David Daney, Tomasz Nowicki, linux-kernel, linux-acpi, Len Brown, Robert Richter, David Daney On 08/05/2015 04:55 PM, Rafael J. Wysocki wrote: > On Wednesday, August 05, 2015 04:17:21 PM David Daney wrote: >> On 08/05/2015 04:23 PM, Rafael J. Wysocki wrote: >>> On Wednesday, August 05, 2015 01:14:49 PM David Daney wrote: >>>> On 08/05/2015 10:26 AM, David Daney wrote: >>>>> On 08/05/2015 06:43 AM, Tomasz Nowicki wrote: >>>>>> On 05.08.2015 15:48, Rafael J. Wysocki wrote: >>>>>>> On Tuesday, August 04, 2015 04:01:59 PM David Daney wrote: >>>>>>>> From: Tomasz Nowicki <tomasz.nowicki@linaro.org> >>>>>>>> >>>>>>>> Fixes the following build error when building drivers as modules: >>>>>>>> >>>>>>>> ERROR: "acpi_dev_prop_read_single" [drivers/net/phy/mdio-octeon.ko] >>>>>>>> undefined! >>>>>>>> ERROR: "acpi_dev_prop_read_single" >>>>>>>> [drivers/net/ethernet/cavium/thunder/thunder_bgx.ko] undefined! >>>>>>> >>>>>>> Can you please tell me why the drivers in question use that function >>>>>>> directly, although they aren't supposed to? >>>>>>> >>>>>>> Clearly, their authors had not tried to build them as modules or they >>>>>>> would have noticed the problem at the development stage already. >>>>>>> >>>>>>> What would be wrong with using the generic device properties API >>>>>>> instead? >>>>>>> >>>>>> Yes, you are right. We should use: >>>>>> int device_property_read_u64_array(struct device *dev, const char >>>>>> *propname, u64 *val, size_t nval); >>>>>> >>>>> >>>>> Thanks all, for the review and suggestions. We we try the suggested >>>>> approach and see how it goes... >>>>> >>>> >>>> Actually I don't think device_property_read_u64_array() will work. >>>> >>>> We are traversing a reference to a different acpi_device via >>>> acpi_dev_get_property_reference(), >>> >>> Why? >> >> Network device has a "phy-handle" (traversed with >> acpi_dev_get_property_reference()), and we want to get some properties >> of that phy. >> >> I could turn the question around to you: Why export >> acpi_dev_get_property_reference()? If there is a reason to export that, >> then you should let people use the result. > > The GPIO core uses it and you *can* use the result (please see my other > message). It was somewhat of a rhetorical question. I would actually like to do as you suggest, so I am looking at unwinding the driver code to use the interfaces you suggest. It is a multi-step process for me though. First I had to make the existing code work. I now have it working, so next I will try to fix it. > > I wonder how does the ACPI table in question look like. Do you have > an acpidump output from that system by any chance? Not handy. I will be producing one soon though. The good news is that I can change the firmware to make it correct if it has problems. Thanks for your patience, David Daney ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] acpi, property: Export acpi_dev_prop_read_single call. 2015-08-05 23:23 ` Rafael J. Wysocki 2015-08-05 23:17 ` David Daney @ 2015-08-05 23:45 ` Rafael J. Wysocki 1 sibling, 0 replies; 10+ messages in thread From: Rafael J. Wysocki @ 2015-08-05 23:45 UTC (permalink / raw) To: David Daney Cc: David Daney, Tomasz Nowicki, linux-kernel, linux-acpi, Len Brown, Robert Richter, David Daney On Thursday, August 06, 2015 01:23:06 AM Rafael J. Wysocki wrote: > On Wednesday, August 05, 2015 01:14:49 PM David Daney wrote: > > On 08/05/2015 10:26 AM, David Daney wrote: > > > On 08/05/2015 06:43 AM, Tomasz Nowicki wrote: > > >> On 05.08.2015 15:48, Rafael J. Wysocki wrote: > > >>> On Tuesday, August 04, 2015 04:01:59 PM David Daney wrote: > > >>>> From: Tomasz Nowicki <tomasz.nowicki@linaro.org> > > >>>> > > >>>> Fixes the following build error when building drivers as modules: > > >>>> > > >>>> ERROR: "acpi_dev_prop_read_single" [drivers/net/phy/mdio-octeon.ko] > > >>>> undefined! > > >>>> ERROR: "acpi_dev_prop_read_single" > > >>>> [drivers/net/ethernet/cavium/thunder/thunder_bgx.ko] undefined! > > >>> > > >>> Can you please tell me why the drivers in question use that function > > >>> directly, although they aren't supposed to? > > >>> > > >>> Clearly, their authors had not tried to build them as modules or they > > >>> would have noticed the problem at the development stage already. > > >>> > > >>> What would be wrong with using the generic device properties API > > >>> instead? > > >>> > > >> Yes, you are right. We should use: > > >> int device_property_read_u64_array(struct device *dev, const char > > >> *propname, u64 *val, size_t nval); > > >> > > > > > > Thanks all, for the review and suggestions. We we try the suggested > > > approach and see how it goes... > > > > > > > Actually I don't think device_property_read_u64_array() will work. > > > > We are traversing a reference to a different acpi_device via > > acpi_dev_get_property_reference(), > > Why? > > > so there is no struct device * > > available for a call to device_property_read_u64_array(). This looks > > like a deficiency in the device_property_* framework, so for the time > > being I guess we will call acpi_dev_get_property(), which is exported, > > and decode the thing in the driver. > > Please don't. > > I'd like to understand what's missing. Moreover, even if you have no struct device, you still can use fwnode_property_read_u64_array(), can't you? Thanks, Rafael ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2015-08-05 23:49 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2015-08-04 23:01 [PATCH] acpi, property: Export acpi_dev_prop_read_single call David Daney 2015-08-05 13:48 ` Rafael J. Wysocki 2015-08-05 13:43 ` Tomasz Nowicki 2015-08-05 17:26 ` David Daney 2015-08-05 20:14 ` David Daney 2015-08-05 23:23 ` Rafael J. Wysocki 2015-08-05 23:17 ` David Daney 2015-08-05 23:55 ` Rafael J. Wysocki 2015-08-05 23:49 ` David Daney 2015-08-05 23:45 ` Rafael J. Wysocki
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).