Re: [PATCH v10 1/9] device property: Add remote endpoint to devcon matcher

2023-01-20 Thread Prashant Malani
On Mon, Jan 16, 2023 at 5:07 AM Sakari Ailus
 wrote:
>
> Hi Prashant,
>
> On Thu, Jan 12, 2023 at 02:31:45PM -0800, Prashant Malani wrote:
> > HI Sakari,
> >
> > On Thu, Jan 12, 2023 at 5:32 AM Sakari Ailus
> >  wrote:
> > >
> > > Hi Pin-yen,
> > >
> > > On Thu, Jan 12, 2023 at 12:20:56PM +0800, Pin-yen Lin wrote:
> > > > From: Prashant Malani 
> > > > + /*
> > > > +  * Some drivers may register devices for endpoints. Check
> > > > +  * the remote-endpoints for matches in addition to the 
> > > > remote
> > > > +  * port parent.
> > > > +  */
> > > > + node = fwnode_graph_get_remote_endpoint(ep);
> > > > + if (fwnode_device_is_available(node)) {
> > > > + ret = match(node, con_id, data);
> > > > + if (ret) {
> > > > + if (matches)
> > > > + matches[count] = ret;
> > > > + count++;
> > > > + }
> > > > + }
> > >
> > > Aren't you missing fwnode_handle-put(node) here??
> >
> > It shouldn't be necessary. We aren't break-ing/continue-ing here,
> > and fwnode_handle_put(node) is called latter in the loop [1][2]
>
> It is, but node is overwritten just below this chunk --- before
> fwnode_handle_put() is called on it.

Ack. Thanks for pointing that out. My bad!

Pin-yen, please make this update when you send out a v11.

BR,

-Prashant


Re: [PATCH v10 1/9] device property: Add remote endpoint to devcon matcher

2023-01-16 Thread Sakari Ailus
Hi Prashant,

On Thu, Jan 12, 2023 at 02:31:45PM -0800, Prashant Malani wrote:
> HI Sakari,
> 
> On Thu, Jan 12, 2023 at 5:32 AM Sakari Ailus
>  wrote:
> >
> > Hi Pin-yen,
> >
> > On Thu, Jan 12, 2023 at 12:20:56PM +0800, Pin-yen Lin wrote:
> > > From: Prashant Malani 
> > > + /*
> > > +  * Some drivers may register devices for endpoints. Check
> > > +  * the remote-endpoints for matches in addition to the 
> > > remote
> > > +  * port parent.
> > > +  */
> > > + node = fwnode_graph_get_remote_endpoint(ep);
> > > + if (fwnode_device_is_available(node)) {
> > > + ret = match(node, con_id, data);
> > > + if (ret) {
> > > + if (matches)
> > > + matches[count] = ret;
> > > + count++;
> > > + }
> > > + }
> >
> > Aren't you missing fwnode_handle-put(node) here??
> 
> It shouldn't be necessary. We aren't break-ing/continue-ing here,
> and fwnode_handle_put(node) is called latter in the loop [1][2]

It is, but node is overwritten just below this chunk --- before
fwnode_handle_put() is called on it.

> 
> BR,
> 
> [1] 
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/base/property.c#n1256
> [2] 
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/base/property.c#n1261

-- 
Regards,

Sakari Ailus


Re: [PATCH v10 1/9] device property: Add remote endpoint to devcon matcher

2023-01-13 Thread Andy Shevchenko
On Thu, Jan 12, 2023 at 02:31:45PM -0800, Prashant Malani wrote:
> On Thu, Jan 12, 2023 at 5:32 AM Sakari Ailus
>  wrote:
> > On Thu, Jan 12, 2023 at 12:20:56PM +0800, Pin-yen Lin wrote:
> > > From: Prashant Malani 

...

> > > + /*
> > > +  * Some drivers may register devices for endpoints. Check
> > > +  * the remote-endpoints for matches in addition to the 
> > > remote
> > > +  * port parent.
> > > +  */
> > > + node = fwnode_graph_get_remote_endpoint(ep);
> > > + if (fwnode_device_is_available(node)) {
> > > + ret = match(node, con_id, data);
> > > + if (ret) {
> > > + if (matches)
> > > + matches[count] = ret;
> > > + count++;
> > > + }
> > > + }
> >
> > Aren't you missing fwnode_handle-put(node) here??
> 
> It shouldn't be necessary. We aren't break-ing/continue-ing here,
> and fwnode_handle_put(node) is called latter in the loop [1][2]
> 
> BR,
> 
> [1] 
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/base/property.c#n1256
> [2] 
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/base/property.c#n1261

I'm really puzzled what do you mean by all this.
Sakari is right, btw.


-- 
With Best Regards,
Andy Shevchenko




Re: [PATCH v10 1/9] device property: Add remote endpoint to devcon matcher

2023-01-12 Thread Prashant Malani
HI Sakari,

On Thu, Jan 12, 2023 at 5:32 AM Sakari Ailus
 wrote:
>
> Hi Pin-yen,
>
> On Thu, Jan 12, 2023 at 12:20:56PM +0800, Pin-yen Lin wrote:
> > From: Prashant Malani 
> > + /*
> > +  * Some drivers may register devices for endpoints. Check
> > +  * the remote-endpoints for matches in addition to the remote
> > +  * port parent.
> > +  */
> > + node = fwnode_graph_get_remote_endpoint(ep);
> > + if (fwnode_device_is_available(node)) {
> > + ret = match(node, con_id, data);
> > + if (ret) {
> > + if (matches)
> > + matches[count] = ret;
> > + count++;
> > + }
> > + }
>
> Aren't you missing fwnode_handle-put(node) here??

It shouldn't be necessary. We aren't break-ing/continue-ing here,
and fwnode_handle_put(node) is called latter in the loop [1][2]

BR,

[1] 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/base/property.c#n1256
[2] 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/base/property.c#n1261


Re: [PATCH v10 1/9] device property: Add remote endpoint to devcon matcher

2023-01-12 Thread Sakari Ailus
Hi Pin-yen,

On Thu, Jan 12, 2023 at 12:20:56PM +0800, Pin-yen Lin wrote:
> From: Prashant Malani 
> 
> When searching the device graph for device matches, check the
> remote-endpoint itself for a match.
> 
> Some drivers register devices for individual endpoints. This allows
> the matcher code to evaluate those for a match too, instead
> of only looking at the remote parent devices. This is required when a
> device supports two mode switches in its endpoints, so we can't simply
> register the mode switch with the parent node.
> 
> Signed-off-by: Prashant Malani 
> Signed-off-by: Pin-yen Lin 
> Reviewed-by: Chen-Yu Tsai 
> Tested-by: Chen-Yu Tsai 
> 
> ---
> 
> Changes in v10:
> - Collected Reviewed-by and Tested-by tags
> 
> Changes in v6:
> - New in v6
> 
>  drivers/base/property.c | 15 +++
>  1 file changed, 15 insertions(+)
> 
> diff --git a/drivers/base/property.c b/drivers/base/property.c
> index 2a5a37fcd998..48877af4e444 100644
> --- a/drivers/base/property.c
> +++ b/drivers/base/property.c
> @@ -1223,6 +1223,21 @@ static unsigned int fwnode_graph_devcon_matches(struct 
> fwnode_handle *fwnode,
>   break;
>   }
>  
> + /*
> +  * Some drivers may register devices for endpoints. Check
> +  * the remote-endpoints for matches in addition to the remote
> +  * port parent.
> +  */
> + node = fwnode_graph_get_remote_endpoint(ep);
> + if (fwnode_device_is_available(node)) {
> + ret = match(node, con_id, data);
> + if (ret) {
> + if (matches)
> + matches[count] = ret;
> + count++;
> + }
> + }

Aren't you missing fwnode_handle-put(node) here??

> +
>   node = fwnode_graph_get_remote_port_parent(ep);
>   if (!fwnode_device_is_available(node)) {
>   fwnode_handle_put(node);

-- 
Kind regards,

Sakari Ailus


Re: [PATCH v10 1/9] device property: Add remote endpoint to devcon matcher

2023-01-12 Thread Heikki Krogerus
On Thu, Jan 12, 2023 at 12:20:56PM +0800, Pin-yen Lin wrote:
> From: Prashant Malani 
> 
> When searching the device graph for device matches, check the
> remote-endpoint itself for a match.
> 
> Some drivers register devices for individual endpoints. This allows
> the matcher code to evaluate those for a match too, instead
> of only looking at the remote parent devices. This is required when a
> device supports two mode switches in its endpoints, so we can't simply
> register the mode switch with the parent node.
> 
> Signed-off-by: Prashant Malani 
> Signed-off-by: Pin-yen Lin 
> Reviewed-by: Chen-Yu Tsai 
> Tested-by: Chen-Yu Tsai 

Acked-by: Heikki Krogerus 

> ---
> 
> Changes in v10:
> - Collected Reviewed-by and Tested-by tags
> 
> Changes in v6:
> - New in v6
> 
>  drivers/base/property.c | 15 +++
>  1 file changed, 15 insertions(+)
> 
> diff --git a/drivers/base/property.c b/drivers/base/property.c
> index 2a5a37fcd998..48877af4e444 100644
> --- a/drivers/base/property.c
> +++ b/drivers/base/property.c
> @@ -1223,6 +1223,21 @@ static unsigned int fwnode_graph_devcon_matches(struct 
> fwnode_handle *fwnode,
>   break;
>   }
>  
> + /*
> +  * Some drivers may register devices for endpoints. Check
> +  * the remote-endpoints for matches in addition to the remote
> +  * port parent.
> +  */
> + node = fwnode_graph_get_remote_endpoint(ep);
> + if (fwnode_device_is_available(node)) {
> + ret = match(node, con_id, data);
> + if (ret) {
> + if (matches)
> + matches[count] = ret;
> + count++;
> + }
> + }
> +
>   node = fwnode_graph_get_remote_port_parent(ep);
>   if (!fwnode_device_is_available(node)) {
>   fwnode_handle_put(node);
> -- 
> 2.39.0.314.g84b9a713c41-goog

-- 
heikki


[PATCH v10 1/9] device property: Add remote endpoint to devcon matcher

2023-01-11 Thread Pin-yen Lin
From: Prashant Malani 

When searching the device graph for device matches, check the
remote-endpoint itself for a match.

Some drivers register devices for individual endpoints. This allows
the matcher code to evaluate those for a match too, instead
of only looking at the remote parent devices. This is required when a
device supports two mode switches in its endpoints, so we can't simply
register the mode switch with the parent node.

Signed-off-by: Prashant Malani 
Signed-off-by: Pin-yen Lin 
Reviewed-by: Chen-Yu Tsai 
Tested-by: Chen-Yu Tsai 

---

Changes in v10:
- Collected Reviewed-by and Tested-by tags

Changes in v6:
- New in v6

 drivers/base/property.c | 15 +++
 1 file changed, 15 insertions(+)

diff --git a/drivers/base/property.c b/drivers/base/property.c
index 2a5a37fcd998..48877af4e444 100644
--- a/drivers/base/property.c
+++ b/drivers/base/property.c
@@ -1223,6 +1223,21 @@ static unsigned int fwnode_graph_devcon_matches(struct 
fwnode_handle *fwnode,
break;
}
 
+   /*
+* Some drivers may register devices for endpoints. Check
+* the remote-endpoints for matches in addition to the remote
+* port parent.
+*/
+   node = fwnode_graph_get_remote_endpoint(ep);
+   if (fwnode_device_is_available(node)) {
+   ret = match(node, con_id, data);
+   if (ret) {
+   if (matches)
+   matches[count] = ret;
+   count++;
+   }
+   }
+
node = fwnode_graph_get_remote_port_parent(ep);
if (!fwnode_device_is_available(node)) {
fwnode_handle_put(node);
-- 
2.39.0.314.g84b9a713c41-goog