Re: [PATCH V4 1/2] PCI: dwc: Add API support to de-initialize host

2019-06-20 Thread Vidya Sagar

On 6/20/2019 10:22 PM, Lorenzo Pieralisi wrote:

On Wed, Jun 19, 2019 at 10:41:26AM +0530, Kishon Vijay Abraham I wrote:

Hi Lorenzo,

On 18/06/19 7:58 PM, Lorenzo Pieralisi wrote:

On Tue, Jun 18, 2019 at 04:21:17PM +0530, Vidya Sagar wrote:

[...]


2) It is not related to this patch but I fail to see the reasoning
 behind the __ in __dw_pci_read_dbi(), there is no no-underscore
 equivalent so its definition is somewhat questionable, maybe
 we should clean-it up (for dbi2 alike).

Separate no-underscore versions are present in pcie-designware.h for
each width (i.e. l/w/b) as inline and are calling __ versions passing
size as argument.


I understand - the __ prologue was added in b50b2db266d8 maybe
Kishon can help us understand the __ rationale.

I am happy to merge it as is, I was just curious about the
__ annotation (not related to this patch).


In commit b50b2db266d8a8c303e8d88590 ("PCI: dwc: all: Modify dbi accessors to
take dbi_base as argument"), dbi accessors was modified to take dbi_base as
argument (since we wanted to write to dbics2 address space). We didn't want to
change all the drivers invoking dbi accessors to pass the dbi_base. So we added
"__" variant to take dbi_base as argument and the drivers continued to invoke
existing dbi accessors which in-turn invoked "__" version with dbi_base as
argument.

I agree there could be some cleanup since in commit
a509d7d9af5ebf86ffbefa98e49761d ("PCI: dwc: all: Modify dbi accessors to access
data of 4/2/1 bytes"), we modified __dw_pcie_readl_dbi() to
__dw_pcie_write_dbi() when it could have been directly modified to
dw_pcie_write_dbi().


Thanks. Vidya can do it as a preliminary patch, I will merge then
code to export the symbols.

Lorenzo


Do you want me to make the change that removes "__" as part of 2/2 patch itself 
and
then send V5 or as a separate patch?

Vidya Sagar



Re: [PATCH V4 1/2] PCI: dwc: Add API support to de-initialize host

2019-06-20 Thread Lorenzo Pieralisi
On Wed, Jun 19, 2019 at 10:41:26AM +0530, Kishon Vijay Abraham I wrote:
> Hi Lorenzo,
> 
> On 18/06/19 7:58 PM, Lorenzo Pieralisi wrote:
> > On Tue, Jun 18, 2019 at 04:21:17PM +0530, Vidya Sagar wrote:
> > 
> > [...]
> > 
> >>> 2) It is not related to this patch but I fail to see the reasoning
> >>> behind the __ in __dw_pci_read_dbi(), there is no no-underscore
> >>> equivalent so its definition is somewhat questionable, maybe
> >>> we should clean-it up (for dbi2 alike).
> >> Separate no-underscore versions are present in pcie-designware.h for
> >> each width (i.e. l/w/b) as inline and are calling __ versions passing
> >> size as argument.
> > 
> > I understand - the __ prologue was added in b50b2db266d8 maybe
> > Kishon can help us understand the __ rationale.
> > 
> > I am happy to merge it as is, I was just curious about the
> > __ annotation (not related to this patch).
> 
> In commit b50b2db266d8a8c303e8d88590 ("PCI: dwc: all: Modify dbi accessors to
> take dbi_base as argument"), dbi accessors was modified to take dbi_base as
> argument (since we wanted to write to dbics2 address space). We didn't want to
> change all the drivers invoking dbi accessors to pass the dbi_base. So we 
> added
> "__" variant to take dbi_base as argument and the drivers continued to invoke
> existing dbi accessors which in-turn invoked "__" version with dbi_base as
> argument.
> 
> I agree there could be some cleanup since in commit
> a509d7d9af5ebf86ffbefa98e49761d ("PCI: dwc: all: Modify dbi accessors to 
> access
> data of 4/2/1 bytes"), we modified __dw_pcie_readl_dbi() to
> __dw_pcie_write_dbi() when it could have been directly modified to
> dw_pcie_write_dbi().

Thanks. Vidya can do it as a preliminary patch, I will merge then
code to export the symbols.

Lorenzo


Re: [PATCH V4 1/2] PCI: dwc: Add API support to de-initialize host

2019-06-18 Thread Kishon Vijay Abraham I
Hi Lorenzo,

On 18/06/19 7:58 PM, Lorenzo Pieralisi wrote:
> On Tue, Jun 18, 2019 at 04:21:17PM +0530, Vidya Sagar wrote:
> 
> [...]
> 
>>> 2) It is not related to this patch but I fail to see the reasoning
>>> behind the __ in __dw_pci_read_dbi(), there is no no-underscore
>>> equivalent so its definition is somewhat questionable, maybe
>>> we should clean-it up (for dbi2 alike).
>> Separate no-underscore versions are present in pcie-designware.h for
>> each width (i.e. l/w/b) as inline and are calling __ versions passing
>> size as argument.
> 
> I understand - the __ prologue was added in b50b2db266d8 maybe
> Kishon can help us understand the __ rationale.
> 
> I am happy to merge it as is, I was just curious about the
> __ annotation (not related to this patch).

In commit b50b2db266d8a8c303e8d88590 ("PCI: dwc: all: Modify dbi accessors to
take dbi_base as argument"), dbi accessors was modified to take dbi_base as
argument (since we wanted to write to dbics2 address space). We didn't want to
change all the drivers invoking dbi accessors to pass the dbi_base. So we added
"__" variant to take dbi_base as argument and the drivers continued to invoke
existing dbi accessors which in-turn invoked "__" version with dbi_base as
argument.

I agree there could be some cleanup since in commit
a509d7d9af5ebf86ffbefa98e49761d ("PCI: dwc: all: Modify dbi accessors to access
data of 4/2/1 bytes"), we modified __dw_pcie_readl_dbi() to
__dw_pcie_write_dbi() when it could have been directly modified to
dw_pcie_write_dbi().

Thanks
Kishon


Re: [PATCH V4 1/2] PCI: dwc: Add API support to de-initialize host

2019-06-18 Thread Lorenzo Pieralisi
On Tue, Jun 18, 2019 at 04:21:17PM +0530, Vidya Sagar wrote:

[...]

> > 2) It is not related to this patch but I fail to see the reasoning
> > behind the __ in __dw_pci_read_dbi(), there is no no-underscore
> > equivalent so its definition is somewhat questionable, maybe
> > we should clean-it up (for dbi2 alike).
> Separate no-underscore versions are present in pcie-designware.h for
> each width (i.e. l/w/b) as inline and are calling __ versions passing
> size as argument.

I understand - the __ prologue was added in b50b2db266d8 maybe
Kishon can help us understand the __ rationale.

I am happy to merge it as is, I was just curious about the
__ annotation (not related to this patch).

Lorenzo

> > Lorenzo
> > 
> > > Thanks,
> > > Vidya Sagar
> > > 
> > > > 
> > > > > 
> > > > > > > 
> > > > > > > > 
> > > > > > > > > 
> > > > > > > > > Thanks,
> > > > > > > > > Lorenzo
> > > > > > > > > 
> > > > > > > > > > diff --git 
> > > > > > > > > > a/drivers/pci/controller/dwc/pcie-designware-host.c 
> > > > > > > > > > b/drivers/pci/controller/dwc/pcie-designware-host.c
> > > > > > > > > > index 77db32529319..d069e4290180 100644
> > > > > > > > > > --- a/drivers/pci/controller/dwc/pcie-designware-host.c
> > > > > > > > > > +++ b/drivers/pci/controller/dwc/pcie-designware-host.c
> > > > > > > > > > @@ -496,6 +496,14 @@ int dw_pcie_host_init(struct pcie_port 
> > > > > > > > > > *pp)
> > > > > > > > > >    return ret;
> > > > > > > > > >    }
> > > > > > > > > > +void dw_pcie_host_deinit(struct pcie_port *pp)
> > > > > > > > > > +{
> > > > > > > > > > +    pci_stop_root_bus(pp->root_bus);
> > > > > > > > > > +    pci_remove_root_bus(pp->root_bus);
> > > > > > > > > > +    if (pci_msi_enabled() && !pp->ops->msi_host_init)
> > > > > > > > > > +    dw_pcie_free_msi(pp);
> > > > > > > > > > +}
> > > > > > > > > > +
> > > > > > > > > >    static int dw_pcie_access_other_conf(struct pcie_port 
> > > > > > > > > > *pp, struct pci_bus *bus,
> > > > > > > > > >     u32 devfn, int where, int size, u32 
> > > > > > > > > > *val,
> > > > > > > > > >     bool write)
> > > > > > > > > > diff --git a/drivers/pci/controller/dwc/pcie-designware.h 
> > > > > > > > > > b/drivers/pci/controller/dwc/pcie-designware.h
> > > > > > > > > > index deab426affd3..4f48ec78c7b9 100644
> > > > > > > > > > --- a/drivers/pci/controller/dwc/pcie-designware.h
> > > > > > > > > > +++ b/drivers/pci/controller/dwc/pcie-designware.h
> > > > > > > > > > @@ -348,6 +348,7 @@ void dw_pcie_msi_init(struct pcie_port 
> > > > > > > > > > *pp);
> > > > > > > > > >    void dw_pcie_free_msi(struct pcie_port *pp);
> > > > > > > > > >    void dw_pcie_setup_rc(struct pcie_port *pp);
> > > > > > > > > >    int dw_pcie_host_init(struct pcie_port *pp);
> > > > > > > > > > +void dw_pcie_host_deinit(struct pcie_port *pp);
> > > > > > > > > >    int dw_pcie_allocate_domains(struct pcie_port *pp);
> > > > > > > > > >    #else
> > > > > > > > > >    static inline irqreturn_t dw_handle_msi_irq(struct 
> > > > > > > > > > pcie_port *pp)
> > > > > > > > > > @@ -372,6 +373,10 @@ static inline int 
> > > > > > > > > > dw_pcie_host_init(struct pcie_port *pp)
> > > > > > > > > >    return 0;
> > > > > > > > > >    }
> > > > > > > > > > +static inline void dw_pcie_host_deinit(struct pcie_port 
> > > > > > > > > > *pp)
> > > > > > > > > > +{
> > > > > > > > > > +}
> > > > > > > > > > +
> > > > > > > > > >    static inline int dw_pcie_allocate_domains(struct 
> > > > > > > > > > pcie_port *pp)
> > > > > > > > > >    {
> > > > > > > > > >    return 0;
> > > > > > > > > > -- 
> > > > > > > > > > 2.17.1
> > > > > > > > > > 
> > > > > > > > 
> > > > > > > 
> > > > > > 
> > > > > 
> > > > 
> > > 
> 


Re: [PATCH V4 1/2] PCI: dwc: Add API support to de-initialize host

2019-06-18 Thread Vidya Sagar

On 6/18/2019 3:06 PM, Lorenzo Pieralisi wrote:

On Tue, Jun 18, 2019 at 10:19:14AM +0530, Vidya Sagar wrote:

[...]


Sorry for pinging again. Please let me know if these patches need to
be sent again.


No problem. We can merge the code as-is even though I have a couple
of questions.

1) What about dbi2 interfaces (what an horrible name it is :() ? It
is true that it is probably best to export just what we need.

I see that dbi2 API (that too only write) is used by pci-keystone and it
is described as a bool driver currently. I'm not sure if it will ever be
made as a modular driver.


2) It is not related to this patch but I fail to see the reasoning
behind the __ in __dw_pci_read_dbi(), there is no no-underscore
equivalent so its definition is somewhat questionable, maybe
we should clean-it up (for dbi2 alike).

Separate no-underscore versions are present in pcie-designware.h for each width
(i.e. l/w/b) as inline and are calling __ versions passing size as argument.



Lorenzo


Thanks,
Vidya Sagar











Thanks,
Lorenzo


diff --git a/drivers/pci/controller/dwc/pcie-designware-host.c 
b/drivers/pci/controller/dwc/pcie-designware-host.c
index 77db32529319..d069e4290180 100644
--- a/drivers/pci/controller/dwc/pcie-designware-host.c
+++ b/drivers/pci/controller/dwc/pcie-designware-host.c
@@ -496,6 +496,14 @@ int dw_pcie_host_init(struct pcie_port *pp)
   return ret;
   }
+void dw_pcie_host_deinit(struct pcie_port *pp)
+{
+    pci_stop_root_bus(pp->root_bus);
+    pci_remove_root_bus(pp->root_bus);
+    if (pci_msi_enabled() && !pp->ops->msi_host_init)
+    dw_pcie_free_msi(pp);
+}
+
   static int dw_pcie_access_other_conf(struct pcie_port *pp, struct pci_bus 
*bus,
    u32 devfn, int where, int size, u32 *val,
    bool write)
diff --git a/drivers/pci/controller/dwc/pcie-designware.h 
b/drivers/pci/controller/dwc/pcie-designware.h
index deab426affd3..4f48ec78c7b9 100644
--- a/drivers/pci/controller/dwc/pcie-designware.h
+++ b/drivers/pci/controller/dwc/pcie-designware.h
@@ -348,6 +348,7 @@ void dw_pcie_msi_init(struct pcie_port *pp);
   void dw_pcie_free_msi(struct pcie_port *pp);
   void dw_pcie_setup_rc(struct pcie_port *pp);
   int dw_pcie_host_init(struct pcie_port *pp);
+void dw_pcie_host_deinit(struct pcie_port *pp);
   int dw_pcie_allocate_domains(struct pcie_port *pp);
   #else
   static inline irqreturn_t dw_handle_msi_irq(struct pcie_port *pp)
@@ -372,6 +373,10 @@ static inline int dw_pcie_host_init(struct pcie_port *pp)
   return 0;
   }
+static inline void dw_pcie_host_deinit(struct pcie_port *pp)
+{
+}
+
   static inline int dw_pcie_allocate_domains(struct pcie_port *pp)
   {
   return 0;
--
2.17.1

















Re: [PATCH V4 1/2] PCI: dwc: Add API support to de-initialize host

2019-06-18 Thread Lorenzo Pieralisi
On Tue, Jun 18, 2019 at 10:19:14AM +0530, Vidya Sagar wrote:

[...]

> Sorry for pinging again. Please let me know if these patches need to
> be sent again.

No problem. We can merge the code as-is even though I have a couple
of questions.

1) What about dbi2 interfaces (what an horrible name it is :() ? It
   is true that it is probably best to export just what we need.
2) It is not related to this patch but I fail to see the reasoning
   behind the __ in __dw_pci_read_dbi(), there is no no-underscore
   equivalent so its definition is somewhat questionable, maybe
   we should clean-it up (for dbi2 alike).

Lorenzo

> Thanks,
> Vidya Sagar
> 
> > 
> > > 
> > > > > 
> > > > > > 
> > > > > > > 
> > > > > > > Thanks,
> > > > > > > Lorenzo
> > > > > > > 
> > > > > > > > diff --git a/drivers/pci/controller/dwc/pcie-designware-host.c 
> > > > > > > > b/drivers/pci/controller/dwc/pcie-designware-host.c
> > > > > > > > index 77db32529319..d069e4290180 100644
> > > > > > > > --- a/drivers/pci/controller/dwc/pcie-designware-host.c
> > > > > > > > +++ b/drivers/pci/controller/dwc/pcie-designware-host.c
> > > > > > > > @@ -496,6 +496,14 @@ int dw_pcie_host_init(struct pcie_port *pp)
> > > > > > > >   return ret;
> > > > > > > >   }
> > > > > > > > +void dw_pcie_host_deinit(struct pcie_port *pp)
> > > > > > > > +{
> > > > > > > > +    pci_stop_root_bus(pp->root_bus);
> > > > > > > > +    pci_remove_root_bus(pp->root_bus);
> > > > > > > > +    if (pci_msi_enabled() && !pp->ops->msi_host_init)
> > > > > > > > +    dw_pcie_free_msi(pp);
> > > > > > > > +}
> > > > > > > > +
> > > > > > > >   static int dw_pcie_access_other_conf(struct pcie_port *pp, 
> > > > > > > > struct pci_bus *bus,
> > > > > > > >    u32 devfn, int where, int size, u32 *val,
> > > > > > > >    bool write)
> > > > > > > > diff --git a/drivers/pci/controller/dwc/pcie-designware.h 
> > > > > > > > b/drivers/pci/controller/dwc/pcie-designware.h
> > > > > > > > index deab426affd3..4f48ec78c7b9 100644
> > > > > > > > --- a/drivers/pci/controller/dwc/pcie-designware.h
> > > > > > > > +++ b/drivers/pci/controller/dwc/pcie-designware.h
> > > > > > > > @@ -348,6 +348,7 @@ void dw_pcie_msi_init(struct pcie_port *pp);
> > > > > > > >   void dw_pcie_free_msi(struct pcie_port *pp);
> > > > > > > >   void dw_pcie_setup_rc(struct pcie_port *pp);
> > > > > > > >   int dw_pcie_host_init(struct pcie_port *pp);
> > > > > > > > +void dw_pcie_host_deinit(struct pcie_port *pp);
> > > > > > > >   int dw_pcie_allocate_domains(struct pcie_port *pp);
> > > > > > > >   #else
> > > > > > > >   static inline irqreturn_t dw_handle_msi_irq(struct pcie_port 
> > > > > > > > *pp)
> > > > > > > > @@ -372,6 +373,10 @@ static inline int dw_pcie_host_init(struct 
> > > > > > > > pcie_port *pp)
> > > > > > > >   return 0;
> > > > > > > >   }
> > > > > > > > +static inline void dw_pcie_host_deinit(struct pcie_port *pp)
> > > > > > > > +{
> > > > > > > > +}
> > > > > > > > +
> > > > > > > >   static inline int dw_pcie_allocate_domains(struct pcie_port 
> > > > > > > > *pp)
> > > > > > > >   {
> > > > > > > >   return 0;
> > > > > > > > -- 
> > > > > > > > 2.17.1
> > > > > > > > 
> > > > > > 
> > > > > 
> > > > 
> > > 
> > 
> 


Re: [PATCH V4 1/2] PCI: dwc: Add API support to de-initialize host

2019-06-17 Thread Vidya Sagar

On 6/13/2019 11:54 PM, Vidya Sagar wrote:

On 6/7/2019 6:43 PM, Vidya Sagar wrote:

On 5/27/2019 4:39 PM, Vidya Sagar wrote:

On 5/7/2019 12:25 PM, Vidya Sagar wrote:

On 5/7/2019 11:19 AM, Vidya Sagar wrote:

On 5/3/2019 4:53 PM, Lorenzo Pieralisi wrote:

On Thu, May 02, 2019 at 10:34:25PM +0530, Vidya Sagar wrote:

Add an API to group all the tasks to be done to de-initialize host which
can then be called by any DesignWare core based driver implementations
while adding .remove() support in their respective drivers.

Signed-off-by: Vidya Sagar 
Acked-by: Gustavo Pimentel 
---
Changes from v3:
* Added check if (pci_msi_enabled() && !pp->ops->msi_host_init) before calling
   dw_pcie_free_msi() API to mimic init path

Changes from v2:
* Rebased on top of linux-next top of the tree branch

Changes from v1:
* s/Designware/DesignWare

  drivers/pci/controller/dwc/pcie-designware-host.c | 8 
  drivers/pci/controller/dwc/pcie-designware.h  | 5 +
  2 files changed, 13 insertions(+)


Series doesn't apply to v5.1-rc1, what's based on ? I suspect
there is a dependency on pci/keystone, given the tight timeline
for the merge window, would you mind postponing it to v5.3 ?

I do not think it is urgent, I am happy to create a branch
for it as soon as v5.2-rc1 is released.

I rebased my changes on top of linux-next. I see that they have conflicts
on top of v5.1-rc1. Do you want me to rebase them on top of v5.1-rc1 instead
of linux-next?
I'm fine with v5.2-rc1 as well.I forgot to mention that these changes are made 
on top of Jisheng's patches

FWIW, Jisheng's patches are approved and applied to pci/dwc for v5.2
https://www.mail-archive.com/linux-kernel@vger.kernel.org/msg1968324.html


Hi Lorenzo,
Now that v5.2-rc2 is also available, could you please pick up this series?

Thanks,
Vidya Sagar


Hi Bjorn / Lorenzo,
Can you please pick up these two patches?

Thanks,
Vidya Sagar

Apologies for pinging again. These two patches can be applied directly on top of
v5.2-rc4. Please do let me know if there is anything required from my side.

Thanks,
Vidya Sagar


Sorry for pinging again. Please let me know if these patches need to be sent 
again.

Thanks,
Vidya Sagar











Thanks,
Lorenzo


diff --git a/drivers/pci/controller/dwc/pcie-designware-host.c 
b/drivers/pci/controller/dwc/pcie-designware-host.c
index 77db32529319..d069e4290180 100644
--- a/drivers/pci/controller/dwc/pcie-designware-host.c
+++ b/drivers/pci/controller/dwc/pcie-designware-host.c
@@ -496,6 +496,14 @@ int dw_pcie_host_init(struct pcie_port *pp)
  return ret;
  }
+void dw_pcie_host_deinit(struct pcie_port *pp)
+{
+    pci_stop_root_bus(pp->root_bus);
+    pci_remove_root_bus(pp->root_bus);
+    if (pci_msi_enabled() && !pp->ops->msi_host_init)
+    dw_pcie_free_msi(pp);
+}
+
  static int dw_pcie_access_other_conf(struct pcie_port *pp, struct pci_bus 
*bus,
   u32 devfn, int where, int size, u32 *val,
   bool write)
diff --git a/drivers/pci/controller/dwc/pcie-designware.h 
b/drivers/pci/controller/dwc/pcie-designware.h
index deab426affd3..4f48ec78c7b9 100644
--- a/drivers/pci/controller/dwc/pcie-designware.h
+++ b/drivers/pci/controller/dwc/pcie-designware.h
@@ -348,6 +348,7 @@ void dw_pcie_msi_init(struct pcie_port *pp);
  void dw_pcie_free_msi(struct pcie_port *pp);
  void dw_pcie_setup_rc(struct pcie_port *pp);
  int dw_pcie_host_init(struct pcie_port *pp);
+void dw_pcie_host_deinit(struct pcie_port *pp);
  int dw_pcie_allocate_domains(struct pcie_port *pp);
  #else
  static inline irqreturn_t dw_handle_msi_irq(struct pcie_port *pp)
@@ -372,6 +373,10 @@ static inline int dw_pcie_host_init(struct pcie_port *pp)
  return 0;
  }
+static inline void dw_pcie_host_deinit(struct pcie_port *pp)
+{
+}
+
  static inline int dw_pcie_allocate_domains(struct pcie_port *pp)
  {
  return 0;
--
2.17.1















Re: [PATCH V4 1/2] PCI: dwc: Add API support to de-initialize host

2019-06-13 Thread Vidya Sagar

On 6/7/2019 6:43 PM, Vidya Sagar wrote:

On 5/27/2019 4:39 PM, Vidya Sagar wrote:

On 5/7/2019 12:25 PM, Vidya Sagar wrote:

On 5/7/2019 11:19 AM, Vidya Sagar wrote:

On 5/3/2019 4:53 PM, Lorenzo Pieralisi wrote:

On Thu, May 02, 2019 at 10:34:25PM +0530, Vidya Sagar wrote:

Add an API to group all the tasks to be done to de-initialize host which
can then be called by any DesignWare core based driver implementations
while adding .remove() support in their respective drivers.

Signed-off-by: Vidya Sagar 
Acked-by: Gustavo Pimentel 
---
Changes from v3:
* Added check if (pci_msi_enabled() && !pp->ops->msi_host_init) before calling
   dw_pcie_free_msi() API to mimic init path

Changes from v2:
* Rebased on top of linux-next top of the tree branch

Changes from v1:
* s/Designware/DesignWare

  drivers/pci/controller/dwc/pcie-designware-host.c | 8 
  drivers/pci/controller/dwc/pcie-designware.h  | 5 +
  2 files changed, 13 insertions(+)


Series doesn't apply to v5.1-rc1, what's based on ? I suspect
there is a dependency on pci/keystone, given the tight timeline
for the merge window, would you mind postponing it to v5.3 ?

I do not think it is urgent, I am happy to create a branch
for it as soon as v5.2-rc1 is released.

I rebased my changes on top of linux-next. I see that they have conflicts
on top of v5.1-rc1. Do you want me to rebase them on top of v5.1-rc1 instead
of linux-next?
I'm fine with v5.2-rc1 as well.I forgot to mention that these changes are made 
on top of Jisheng's patches

FWIW, Jisheng's patches are approved and applied to pci/dwc for v5.2
https://www.mail-archive.com/linux-kernel@vger.kernel.org/msg1968324.html


Hi Lorenzo,
Now that v5.2-rc2 is also available, could you please pick up this series?

Thanks,
Vidya Sagar


Hi Bjorn / Lorenzo,
Can you please pick up these two patches?

Thanks,
Vidya Sagar

Apologies for pinging again. These two patches can be applied directly on top of
v5.2-rc4. Please do let me know if there is anything required from my side.

Thanks,
Vidya Sagar










Thanks,
Lorenzo


diff --git a/drivers/pci/controller/dwc/pcie-designware-host.c 
b/drivers/pci/controller/dwc/pcie-designware-host.c
index 77db32529319..d069e4290180 100644
--- a/drivers/pci/controller/dwc/pcie-designware-host.c
+++ b/drivers/pci/controller/dwc/pcie-designware-host.c
@@ -496,6 +496,14 @@ int dw_pcie_host_init(struct pcie_port *pp)
  return ret;
  }
+void dw_pcie_host_deinit(struct pcie_port *pp)
+{
+    pci_stop_root_bus(pp->root_bus);
+    pci_remove_root_bus(pp->root_bus);
+    if (pci_msi_enabled() && !pp->ops->msi_host_init)
+    dw_pcie_free_msi(pp);
+}
+
  static int dw_pcie_access_other_conf(struct pcie_port *pp, struct pci_bus 
*bus,
   u32 devfn, int where, int size, u32 *val,
   bool write)
diff --git a/drivers/pci/controller/dwc/pcie-designware.h 
b/drivers/pci/controller/dwc/pcie-designware.h
index deab426affd3..4f48ec78c7b9 100644
--- a/drivers/pci/controller/dwc/pcie-designware.h
+++ b/drivers/pci/controller/dwc/pcie-designware.h
@@ -348,6 +348,7 @@ void dw_pcie_msi_init(struct pcie_port *pp);
  void dw_pcie_free_msi(struct pcie_port *pp);
  void dw_pcie_setup_rc(struct pcie_port *pp);
  int dw_pcie_host_init(struct pcie_port *pp);
+void dw_pcie_host_deinit(struct pcie_port *pp);
  int dw_pcie_allocate_domains(struct pcie_port *pp);
  #else
  static inline irqreturn_t dw_handle_msi_irq(struct pcie_port *pp)
@@ -372,6 +373,10 @@ static inline int dw_pcie_host_init(struct pcie_port *pp)
  return 0;
  }
+static inline void dw_pcie_host_deinit(struct pcie_port *pp)
+{
+}
+
  static inline int dw_pcie_allocate_domains(struct pcie_port *pp)
  {
  return 0;
--
2.17.1













Re: [PATCH V4 1/2] PCI: dwc: Add API support to de-initialize host

2019-06-07 Thread Vidya Sagar

On 5/27/2019 4:39 PM, Vidya Sagar wrote:

On 5/7/2019 12:25 PM, Vidya Sagar wrote:

On 5/7/2019 11:19 AM, Vidya Sagar wrote:

On 5/3/2019 4:53 PM, Lorenzo Pieralisi wrote:

On Thu, May 02, 2019 at 10:34:25PM +0530, Vidya Sagar wrote:

Add an API to group all the tasks to be done to de-initialize host which
can then be called by any DesignWare core based driver implementations
while adding .remove() support in their respective drivers.

Signed-off-by: Vidya Sagar 
Acked-by: Gustavo Pimentel 
---
Changes from v3:
* Added check if (pci_msi_enabled() && !pp->ops->msi_host_init) before calling
   dw_pcie_free_msi() API to mimic init path

Changes from v2:
* Rebased on top of linux-next top of the tree branch

Changes from v1:
* s/Designware/DesignWare

  drivers/pci/controller/dwc/pcie-designware-host.c | 8 
  drivers/pci/controller/dwc/pcie-designware.h  | 5 +
  2 files changed, 13 insertions(+)


Series doesn't apply to v5.1-rc1, what's based on ? I suspect
there is a dependency on pci/keystone, given the tight timeline
for the merge window, would you mind postponing it to v5.3 ?

I do not think it is urgent, I am happy to create a branch
for it as soon as v5.2-rc1 is released.

I rebased my changes on top of linux-next. I see that they have conflicts
on top of v5.1-rc1. Do you want me to rebase them on top of v5.1-rc1 instead
of linux-next?
I'm fine with v5.2-rc1 as well.I forgot to mention that these changes are made 
on top of Jisheng's patches

FWIW, Jisheng's patches are approved and applied to pci/dwc for v5.2
https://www.mail-archive.com/linux-kernel@vger.kernel.org/msg1968324.html


Hi Lorenzo,
Now that v5.2-rc2 is also available, could you please pick up this series?

Thanks,
Vidya Sagar


Hi Bjorn / Lorenzo,
Can you please pick up these two patches?

Thanks,
Vidya Sagar







Thanks,
Lorenzo


diff --git a/drivers/pci/controller/dwc/pcie-designware-host.c 
b/drivers/pci/controller/dwc/pcie-designware-host.c
index 77db32529319..d069e4290180 100644
--- a/drivers/pci/controller/dwc/pcie-designware-host.c
+++ b/drivers/pci/controller/dwc/pcie-designware-host.c
@@ -496,6 +496,14 @@ int dw_pcie_host_init(struct pcie_port *pp)
  return ret;
  }
+void dw_pcie_host_deinit(struct pcie_port *pp)
+{
+    pci_stop_root_bus(pp->root_bus);
+    pci_remove_root_bus(pp->root_bus);
+    if (pci_msi_enabled() && !pp->ops->msi_host_init)
+    dw_pcie_free_msi(pp);
+}
+
  static int dw_pcie_access_other_conf(struct pcie_port *pp, struct pci_bus 
*bus,
   u32 devfn, int where, int size, u32 *val,
   bool write)
diff --git a/drivers/pci/controller/dwc/pcie-designware.h 
b/drivers/pci/controller/dwc/pcie-designware.h
index deab426affd3..4f48ec78c7b9 100644
--- a/drivers/pci/controller/dwc/pcie-designware.h
+++ b/drivers/pci/controller/dwc/pcie-designware.h
@@ -348,6 +348,7 @@ void dw_pcie_msi_init(struct pcie_port *pp);
  void dw_pcie_free_msi(struct pcie_port *pp);
  void dw_pcie_setup_rc(struct pcie_port *pp);
  int dw_pcie_host_init(struct pcie_port *pp);
+void dw_pcie_host_deinit(struct pcie_port *pp);
  int dw_pcie_allocate_domains(struct pcie_port *pp);
  #else
  static inline irqreturn_t dw_handle_msi_irq(struct pcie_port *pp)
@@ -372,6 +373,10 @@ static inline int dw_pcie_host_init(struct pcie_port *pp)
  return 0;
  }
+static inline void dw_pcie_host_deinit(struct pcie_port *pp)
+{
+}
+
  static inline int dw_pcie_allocate_domains(struct pcie_port *pp)
  {
  return 0;
--
2.17.1











Re: [PATCH V4 1/2] PCI: dwc: Add API support to de-initialize host

2019-05-27 Thread Vidya Sagar

On 5/7/2019 12:25 PM, Vidya Sagar wrote:

On 5/7/2019 11:19 AM, Vidya Sagar wrote:

On 5/3/2019 4:53 PM, Lorenzo Pieralisi wrote:

On Thu, May 02, 2019 at 10:34:25PM +0530, Vidya Sagar wrote:

Add an API to group all the tasks to be done to de-initialize host which
can then be called by any DesignWare core based driver implementations
while adding .remove() support in their respective drivers.

Signed-off-by: Vidya Sagar 
Acked-by: Gustavo Pimentel 
---
Changes from v3:
* Added check if (pci_msi_enabled() && !pp->ops->msi_host_init) before calling
   dw_pcie_free_msi() API to mimic init path

Changes from v2:
* Rebased on top of linux-next top of the tree branch

Changes from v1:
* s/Designware/DesignWare

  drivers/pci/controller/dwc/pcie-designware-host.c | 8 
  drivers/pci/controller/dwc/pcie-designware.h  | 5 +
  2 files changed, 13 insertions(+)


Series doesn't apply to v5.1-rc1, what's based on ? I suspect
there is a dependency on pci/keystone, given the tight timeline
for the merge window, would you mind postponing it to v5.3 ?

I do not think it is urgent, I am happy to create a branch
for it as soon as v5.2-rc1 is released.

I rebased my changes on top of linux-next. I see that they have conflicts
on top of v5.1-rc1. Do you want me to rebase them on top of v5.1-rc1 instead
of linux-next?
I'm fine with v5.2-rc1 as well.I forgot to mention that these changes are made 
on top of Jisheng's patches

FWIW, Jisheng's patches are approved and applied to pci/dwc for v5.2
https://www.mail-archive.com/linux-kernel@vger.kernel.org/msg1968324.html


Hi Lorenzo,
Now that v5.2-rc2 is also available, could you please pick up this series?

Thanks,
Vidya Sagar







Thanks,
Lorenzo


diff --git a/drivers/pci/controller/dwc/pcie-designware-host.c 
b/drivers/pci/controller/dwc/pcie-designware-host.c
index 77db32529319..d069e4290180 100644
--- a/drivers/pci/controller/dwc/pcie-designware-host.c
+++ b/drivers/pci/controller/dwc/pcie-designware-host.c
@@ -496,6 +496,14 @@ int dw_pcie_host_init(struct pcie_port *pp)
  return ret;
  }
+void dw_pcie_host_deinit(struct pcie_port *pp)
+{
+    pci_stop_root_bus(pp->root_bus);
+    pci_remove_root_bus(pp->root_bus);
+    if (pci_msi_enabled() && !pp->ops->msi_host_init)
+    dw_pcie_free_msi(pp);
+}
+
  static int dw_pcie_access_other_conf(struct pcie_port *pp, struct pci_bus 
*bus,
   u32 devfn, int where, int size, u32 *val,
   bool write)
diff --git a/drivers/pci/controller/dwc/pcie-designware.h 
b/drivers/pci/controller/dwc/pcie-designware.h
index deab426affd3..4f48ec78c7b9 100644
--- a/drivers/pci/controller/dwc/pcie-designware.h
+++ b/drivers/pci/controller/dwc/pcie-designware.h
@@ -348,6 +348,7 @@ void dw_pcie_msi_init(struct pcie_port *pp);
  void dw_pcie_free_msi(struct pcie_port *pp);
  void dw_pcie_setup_rc(struct pcie_port *pp);
  int dw_pcie_host_init(struct pcie_port *pp);
+void dw_pcie_host_deinit(struct pcie_port *pp);
  int dw_pcie_allocate_domains(struct pcie_port *pp);
  #else
  static inline irqreturn_t dw_handle_msi_irq(struct pcie_port *pp)
@@ -372,6 +373,10 @@ static inline int dw_pcie_host_init(struct pcie_port *pp)
  return 0;
  }
+static inline void dw_pcie_host_deinit(struct pcie_port *pp)
+{
+}
+
  static inline int dw_pcie_allocate_domains(struct pcie_port *pp)
  {
  return 0;
--
2.17.1









Re: [PATCH V4 1/2] PCI: dwc: Add API support to de-initialize host

2019-05-07 Thread Vidya Sagar

On 5/7/2019 11:19 AM, Vidya Sagar wrote:

On 5/3/2019 4:53 PM, Lorenzo Pieralisi wrote:

On Thu, May 02, 2019 at 10:34:25PM +0530, Vidya Sagar wrote:

Add an API to group all the tasks to be done to de-initialize host which
can then be called by any DesignWare core based driver implementations
while adding .remove() support in their respective drivers.

Signed-off-by: Vidya Sagar 
Acked-by: Gustavo Pimentel 
---
Changes from v3:
* Added check if (pci_msi_enabled() && !pp->ops->msi_host_init) before calling
   dw_pcie_free_msi() API to mimic init path

Changes from v2:
* Rebased on top of linux-next top of the tree branch

Changes from v1:
* s/Designware/DesignWare

  drivers/pci/controller/dwc/pcie-designware-host.c | 8 
  drivers/pci/controller/dwc/pcie-designware.h  | 5 +
  2 files changed, 13 insertions(+)


Series doesn't apply to v5.1-rc1, what's based on ? I suspect
there is a dependency on pci/keystone, given the tight timeline
for the merge window, would you mind postponing it to v5.3 ?

I do not think it is urgent, I am happy to create a branch
for it as soon as v5.2-rc1 is released.

I rebased my changes on top of linux-next. I see that they have conflicts
on top of v5.1-rc1. Do you want me to rebase them on top of v5.1-rc1 instead
of linux-next?
I'm fine with v5.2-rc1 as well.I forgot to mention that these changes are made 
on top of Jisheng's patches

FWIW, Jisheng's patches are approved and applied to pci/dwc for v5.2
https://www.mail-archive.com/linux-kernel@vger.kernel.org/msg1968324.html





Thanks,
Lorenzo


diff --git a/drivers/pci/controller/dwc/pcie-designware-host.c 
b/drivers/pci/controller/dwc/pcie-designware-host.c
index 77db32529319..d069e4290180 100644
--- a/drivers/pci/controller/dwc/pcie-designware-host.c
+++ b/drivers/pci/controller/dwc/pcie-designware-host.c
@@ -496,6 +496,14 @@ int dw_pcie_host_init(struct pcie_port *pp)
  return ret;
  }
+void dw_pcie_host_deinit(struct pcie_port *pp)
+{
+    pci_stop_root_bus(pp->root_bus);
+    pci_remove_root_bus(pp->root_bus);
+    if (pci_msi_enabled() && !pp->ops->msi_host_init)
+    dw_pcie_free_msi(pp);
+}
+
  static int dw_pcie_access_other_conf(struct pcie_port *pp, struct pci_bus 
*bus,
   u32 devfn, int where, int size, u32 *val,
   bool write)
diff --git a/drivers/pci/controller/dwc/pcie-designware.h 
b/drivers/pci/controller/dwc/pcie-designware.h
index deab426affd3..4f48ec78c7b9 100644
--- a/drivers/pci/controller/dwc/pcie-designware.h
+++ b/drivers/pci/controller/dwc/pcie-designware.h
@@ -348,6 +348,7 @@ void dw_pcie_msi_init(struct pcie_port *pp);
  void dw_pcie_free_msi(struct pcie_port *pp);
  void dw_pcie_setup_rc(struct pcie_port *pp);
  int dw_pcie_host_init(struct pcie_port *pp);
+void dw_pcie_host_deinit(struct pcie_port *pp);
  int dw_pcie_allocate_domains(struct pcie_port *pp);
  #else
  static inline irqreturn_t dw_handle_msi_irq(struct pcie_port *pp)
@@ -372,6 +373,10 @@ static inline int dw_pcie_host_init(struct pcie_port *pp)
  return 0;
  }
+static inline void dw_pcie_host_deinit(struct pcie_port *pp)
+{
+}
+
  static inline int dw_pcie_allocate_domains(struct pcie_port *pp)
  {
  return 0;
--
2.17.1







Re: [PATCH V4 1/2] PCI: dwc: Add API support to de-initialize host

2019-05-06 Thread Vidya Sagar

On 5/3/2019 4:53 PM, Lorenzo Pieralisi wrote:

On Thu, May 02, 2019 at 10:34:25PM +0530, Vidya Sagar wrote:

Add an API to group all the tasks to be done to de-initialize host which
can then be called by any DesignWare core based driver implementations
while adding .remove() support in their respective drivers.

Signed-off-by: Vidya Sagar 
Acked-by: Gustavo Pimentel 
---
Changes from v3:
* Added check if (pci_msi_enabled() && !pp->ops->msi_host_init) before calling
   dw_pcie_free_msi() API to mimic init path

Changes from v2:
* Rebased on top of linux-next top of the tree branch

Changes from v1:
* s/Designware/DesignWare

  drivers/pci/controller/dwc/pcie-designware-host.c | 8 
  drivers/pci/controller/dwc/pcie-designware.h  | 5 +
  2 files changed, 13 insertions(+)


Series doesn't apply to v5.1-rc1, what's based on ? I suspect
there is a dependency on pci/keystone, given the tight timeline
for the merge window, would you mind postponing it to v5.3 ?

I do not think it is urgent, I am happy to create a branch
for it as soon as v5.2-rc1 is released.

I rebased my changes on top of linux-next. I see that they have conflicts
on top of v5.1-rc1. Do you want me to rebase them on top of v5.1-rc1 instead
of linux-next?
I'm fine with v5.2-rc1 as well.



Thanks,
Lorenzo


diff --git a/drivers/pci/controller/dwc/pcie-designware-host.c 
b/drivers/pci/controller/dwc/pcie-designware-host.c
index 77db32529319..d069e4290180 100644
--- a/drivers/pci/controller/dwc/pcie-designware-host.c
+++ b/drivers/pci/controller/dwc/pcie-designware-host.c
@@ -496,6 +496,14 @@ int dw_pcie_host_init(struct pcie_port *pp)
return ret;
  }
  
+void dw_pcie_host_deinit(struct pcie_port *pp)

+{
+   pci_stop_root_bus(pp->root_bus);
+   pci_remove_root_bus(pp->root_bus);
+   if (pci_msi_enabled() && !pp->ops->msi_host_init)
+   dw_pcie_free_msi(pp);
+}
+
  static int dw_pcie_access_other_conf(struct pcie_port *pp, struct pci_bus 
*bus,
 u32 devfn, int where, int size, u32 *val,
 bool write)
diff --git a/drivers/pci/controller/dwc/pcie-designware.h 
b/drivers/pci/controller/dwc/pcie-designware.h
index deab426affd3..4f48ec78c7b9 100644
--- a/drivers/pci/controller/dwc/pcie-designware.h
+++ b/drivers/pci/controller/dwc/pcie-designware.h
@@ -348,6 +348,7 @@ void dw_pcie_msi_init(struct pcie_port *pp);
  void dw_pcie_free_msi(struct pcie_port *pp);
  void dw_pcie_setup_rc(struct pcie_port *pp);
  int dw_pcie_host_init(struct pcie_port *pp);
+void dw_pcie_host_deinit(struct pcie_port *pp);
  int dw_pcie_allocate_domains(struct pcie_port *pp);
  #else
  static inline irqreturn_t dw_handle_msi_irq(struct pcie_port *pp)
@@ -372,6 +373,10 @@ static inline int dw_pcie_host_init(struct pcie_port *pp)
return 0;
  }
  
+static inline void dw_pcie_host_deinit(struct pcie_port *pp)

+{
+}
+
  static inline int dw_pcie_allocate_domains(struct pcie_port *pp)
  {
return 0;
--
2.17.1





Re: [PATCH V4 1/2] PCI: dwc: Add API support to de-initialize host

2019-05-03 Thread Lorenzo Pieralisi
On Thu, May 02, 2019 at 10:34:25PM +0530, Vidya Sagar wrote:
> Add an API to group all the tasks to be done to de-initialize host which
> can then be called by any DesignWare core based driver implementations
> while adding .remove() support in their respective drivers.
> 
> Signed-off-by: Vidya Sagar 
> Acked-by: Gustavo Pimentel 
> ---
> Changes from v3:
> * Added check if (pci_msi_enabled() && !pp->ops->msi_host_init) before calling
>   dw_pcie_free_msi() API to mimic init path
> 
> Changes from v2:
> * Rebased on top of linux-next top of the tree branch
> 
> Changes from v1:
> * s/Designware/DesignWare
> 
>  drivers/pci/controller/dwc/pcie-designware-host.c | 8 
>  drivers/pci/controller/dwc/pcie-designware.h  | 5 +
>  2 files changed, 13 insertions(+)

Series doesn't apply to v5.1-rc1, what's based on ? I suspect
there is a dependency on pci/keystone, given the tight timeline
for the merge window, would you mind postponing it to v5.3 ?

I do not think it is urgent, I am happy to create a branch
for it as soon as v5.2-rc1 is released.

Thanks,
Lorenzo

> diff --git a/drivers/pci/controller/dwc/pcie-designware-host.c 
> b/drivers/pci/controller/dwc/pcie-designware-host.c
> index 77db32529319..d069e4290180 100644
> --- a/drivers/pci/controller/dwc/pcie-designware-host.c
> +++ b/drivers/pci/controller/dwc/pcie-designware-host.c
> @@ -496,6 +496,14 @@ int dw_pcie_host_init(struct pcie_port *pp)
>   return ret;
>  }
>  
> +void dw_pcie_host_deinit(struct pcie_port *pp)
> +{
> + pci_stop_root_bus(pp->root_bus);
> + pci_remove_root_bus(pp->root_bus);
> + if (pci_msi_enabled() && !pp->ops->msi_host_init)
> + dw_pcie_free_msi(pp);
> +}
> +
>  static int dw_pcie_access_other_conf(struct pcie_port *pp, struct pci_bus 
> *bus,
>u32 devfn, int where, int size, u32 *val,
>bool write)
> diff --git a/drivers/pci/controller/dwc/pcie-designware.h 
> b/drivers/pci/controller/dwc/pcie-designware.h
> index deab426affd3..4f48ec78c7b9 100644
> --- a/drivers/pci/controller/dwc/pcie-designware.h
> +++ b/drivers/pci/controller/dwc/pcie-designware.h
> @@ -348,6 +348,7 @@ void dw_pcie_msi_init(struct pcie_port *pp);
>  void dw_pcie_free_msi(struct pcie_port *pp);
>  void dw_pcie_setup_rc(struct pcie_port *pp);
>  int dw_pcie_host_init(struct pcie_port *pp);
> +void dw_pcie_host_deinit(struct pcie_port *pp);
>  int dw_pcie_allocate_domains(struct pcie_port *pp);
>  #else
>  static inline irqreturn_t dw_handle_msi_irq(struct pcie_port *pp)
> @@ -372,6 +373,10 @@ static inline int dw_pcie_host_init(struct pcie_port *pp)
>   return 0;
>  }
>  
> +static inline void dw_pcie_host_deinit(struct pcie_port *pp)
> +{
> +}
> +
>  static inline int dw_pcie_allocate_domains(struct pcie_port *pp)
>  {
>   return 0;
> -- 
> 2.17.1
> 


[PATCH V4 1/2] PCI: dwc: Add API support to de-initialize host

2019-05-02 Thread Vidya Sagar
Add an API to group all the tasks to be done to de-initialize host which
can then be called by any DesignWare core based driver implementations
while adding .remove() support in their respective drivers.

Signed-off-by: Vidya Sagar 
Acked-by: Gustavo Pimentel 
---
Changes from v3:
* Added check if (pci_msi_enabled() && !pp->ops->msi_host_init) before calling
  dw_pcie_free_msi() API to mimic init path

Changes from v2:
* Rebased on top of linux-next top of the tree branch

Changes from v1:
* s/Designware/DesignWare

 drivers/pci/controller/dwc/pcie-designware-host.c | 8 
 drivers/pci/controller/dwc/pcie-designware.h  | 5 +
 2 files changed, 13 insertions(+)

diff --git a/drivers/pci/controller/dwc/pcie-designware-host.c 
b/drivers/pci/controller/dwc/pcie-designware-host.c
index 77db32529319..d069e4290180 100644
--- a/drivers/pci/controller/dwc/pcie-designware-host.c
+++ b/drivers/pci/controller/dwc/pcie-designware-host.c
@@ -496,6 +496,14 @@ int dw_pcie_host_init(struct pcie_port *pp)
return ret;
 }
 
+void dw_pcie_host_deinit(struct pcie_port *pp)
+{
+   pci_stop_root_bus(pp->root_bus);
+   pci_remove_root_bus(pp->root_bus);
+   if (pci_msi_enabled() && !pp->ops->msi_host_init)
+   dw_pcie_free_msi(pp);
+}
+
 static int dw_pcie_access_other_conf(struct pcie_port *pp, struct pci_bus *bus,
 u32 devfn, int where, int size, u32 *val,
 bool write)
diff --git a/drivers/pci/controller/dwc/pcie-designware.h 
b/drivers/pci/controller/dwc/pcie-designware.h
index deab426affd3..4f48ec78c7b9 100644
--- a/drivers/pci/controller/dwc/pcie-designware.h
+++ b/drivers/pci/controller/dwc/pcie-designware.h
@@ -348,6 +348,7 @@ void dw_pcie_msi_init(struct pcie_port *pp);
 void dw_pcie_free_msi(struct pcie_port *pp);
 void dw_pcie_setup_rc(struct pcie_port *pp);
 int dw_pcie_host_init(struct pcie_port *pp);
+void dw_pcie_host_deinit(struct pcie_port *pp);
 int dw_pcie_allocate_domains(struct pcie_port *pp);
 #else
 static inline irqreturn_t dw_handle_msi_irq(struct pcie_port *pp)
@@ -372,6 +373,10 @@ static inline int dw_pcie_host_init(struct pcie_port *pp)
return 0;
 }
 
+static inline void dw_pcie_host_deinit(struct pcie_port *pp)
+{
+}
+
 static inline int dw_pcie_allocate_domains(struct pcie_port *pp)
 {
return 0;
-- 
2.17.1