Message ID | 20200911170738.82818-8-leobras.c@gmail.com (mailing list archive) |
---|---|
State | Superseded, archived |
Headers | show |
Series | DDW Indirect Mapping | expand |
Context | Check | Description |
---|---|---|
snowpatch_ozlabs/apply_patch | success | Successfully applied on branch powerpc/merge (4b552a4cbf286ff9dcdab19153f3c1c7d1680fab) |
snowpatch_ozlabs/checkpatch | success | total: 0 errors, 0 warnings, 0 checks, 60 lines checked |
snowpatch_ozlabs/needsstable | success | Patch has no Fixes tags |
On 12/09/2020 03:07, Leonardo Bras wrote: > Cc: linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, > > There are two functions creating direct_window_list entries in a > similar way, so create a ddw_list_new_entry() to avoid duplicity and > simplify those functions. > > Signed-off-by: Leonardo Bras <leobras.c@gmail.com> Reviewed-by: Alexey Kardashevskiy <aik@ozlabs.ru> > --- > arch/powerpc/platforms/pseries/iommu.c | 32 +++++++++++++++++--------- > 1 file changed, 21 insertions(+), 11 deletions(-) > > diff --git a/arch/powerpc/platforms/pseries/iommu.c b/arch/powerpc/platforms/pseries/iommu.c > index 49008d2e217d..e4c17d27dcf3 100644 > --- a/arch/powerpc/platforms/pseries/iommu.c > +++ b/arch/powerpc/platforms/pseries/iommu.c > @@ -869,6 +869,21 @@ static u64 find_existing_ddw(struct device_node *pdn) > return dma_addr; > } > > +static struct direct_window *ddw_list_new_entry(struct device_node *pdn, > + const struct dynamic_dma_window_prop *dma64) > +{ > + struct direct_window *window; > + > + window = kzalloc(sizeof(*window), GFP_KERNEL); > + if (!window) > + return NULL; > + > + window->device = pdn; > + window->prop = dma64; > + > + return window; > +} > + > static int find_existing_ddw_windows(void) > { > int len; > @@ -881,18 +896,15 @@ static int find_existing_ddw_windows(void) > > for_each_node_with_property(pdn, DIRECT64_PROPNAME) { > direct64 = of_get_property(pdn, DIRECT64_PROPNAME, &len); > - if (!direct64) > - continue; > - > - window = kzalloc(sizeof(*window), GFP_KERNEL); > - if (!window || len < sizeof(struct dynamic_dma_window_prop)) { > - kfree(window); > + if (!direct64 || len < sizeof(*direct64)) { > remove_ddw(pdn, true); > continue; > } > > - window->device = pdn; > - window->prop = direct64; > + window = ddw_list_new_entry(pdn, direct64); > + if (!window) > + break; > + > spin_lock(&direct_window_list_lock); > list_add(&window->list, &direct_window_list); > spin_unlock(&direct_window_list_lock); > @@ -1261,7 +1273,7 @@ static u64 enable_ddw(struct pci_dev *dev, struct device_node *pdn) > dev_dbg(&dev->dev, "created tce table LIOBN 0x%x for %pOF\n", > create.liobn, dn); > > - window = kzalloc(sizeof(*window), GFP_KERNEL); > + window = ddw_list_new_entry(pdn, ddwprop); > if (!window) > goto out_clear_window; > > @@ -1280,8 +1292,6 @@ static u64 enable_ddw(struct pci_dev *dev, struct device_node *pdn) > goto out_free_window; > } > > - window->device = pdn; > - window->prop = ddwprop; > spin_lock(&direct_window_list_lock); > list_add(&window->list, &direct_window_list); > spin_unlock(&direct_window_list_lock); >
diff --git a/arch/powerpc/platforms/pseries/iommu.c b/arch/powerpc/platforms/pseries/iommu.c index 49008d2e217d..e4c17d27dcf3 100644 --- a/arch/powerpc/platforms/pseries/iommu.c +++ b/arch/powerpc/platforms/pseries/iommu.c @@ -869,6 +869,21 @@ static u64 find_existing_ddw(struct device_node *pdn) return dma_addr; } +static struct direct_window *ddw_list_new_entry(struct device_node *pdn, + const struct dynamic_dma_window_prop *dma64) +{ + struct direct_window *window; + + window = kzalloc(sizeof(*window), GFP_KERNEL); + if (!window) + return NULL; + + window->device = pdn; + window->prop = dma64; + + return window; +} + static int find_existing_ddw_windows(void) { int len; @@ -881,18 +896,15 @@ static int find_existing_ddw_windows(void) for_each_node_with_property(pdn, DIRECT64_PROPNAME) { direct64 = of_get_property(pdn, DIRECT64_PROPNAME, &len); - if (!direct64) - continue; - - window = kzalloc(sizeof(*window), GFP_KERNEL); - if (!window || len < sizeof(struct dynamic_dma_window_prop)) { - kfree(window); + if (!direct64 || len < sizeof(*direct64)) { remove_ddw(pdn, true); continue; } - window->device = pdn; - window->prop = direct64; + window = ddw_list_new_entry(pdn, direct64); + if (!window) + break; + spin_lock(&direct_window_list_lock); list_add(&window->list, &direct_window_list); spin_unlock(&direct_window_list_lock); @@ -1261,7 +1273,7 @@ static u64 enable_ddw(struct pci_dev *dev, struct device_node *pdn) dev_dbg(&dev->dev, "created tce table LIOBN 0x%x for %pOF\n", create.liobn, dn); - window = kzalloc(sizeof(*window), GFP_KERNEL); + window = ddw_list_new_entry(pdn, ddwprop); if (!window) goto out_clear_window; @@ -1280,8 +1292,6 @@ static u64 enable_ddw(struct pci_dev *dev, struct device_node *pdn) goto out_free_window; } - window->device = pdn; - window->prop = ddwprop; spin_lock(&direct_window_list_lock); list_add(&window->list, &direct_window_list); spin_unlock(&direct_window_list_lock);
Cc: linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, There are two functions creating direct_window_list entries in a similar way, so create a ddw_list_new_entry() to avoid duplicity and simplify those functions. Signed-off-by: Leonardo Bras <leobras.c@gmail.com> --- arch/powerpc/platforms/pseries/iommu.c | 32 +++++++++++++++++--------- 1 file changed, 21 insertions(+), 11 deletions(-)