[PATCH 02/11] powerpc/powernv/ioda: Protect PE list

Alastair D'Silva alastair at au1.ibm.com
Tue Sep 10 10:34:55 AEST 2019


On Mon, 2019-09-09 at 17:45 +0200, Frederic Barrat wrote:
> Protect the PHB's list of PE. Probably not needed as long as it was
> populated during PHB creation, but it feels right and will become
> required once we can add/remove opencapi devices on hotplug.
> 
> Signed-off-by: Frederic Barrat <fbarrat at linux.ibm.com>
> ---
>  arch/powerpc/platforms/powernv/pci-ioda.c | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/powerpc/platforms/powernv/pci-ioda.c
> b/arch/powerpc/platforms/powernv/pci-ioda.c
> index 92767f006f20..3dbbf5365c1c 100644
> --- a/arch/powerpc/platforms/powernv/pci-ioda.c
> +++ b/arch/powerpc/platforms/powernv/pci-ioda.c
> @@ -1080,8 +1080,9 @@ static struct pnv_ioda_pe
> *pnv_ioda_setup_dev_PE(struct pci_dev *dev)
>  	}
>  
>  	/* Put PE to the list */
> +	mutex_lock(&phb->ioda.pe_list_mutex);
>  	list_add_tail(&pe->list, &phb->ioda.pe_list);
> -
> +	mutex_unlock(&phb->ioda.pe_list_mutex);
>  	return pe;
>  }
>  
> @@ -3513,7 +3514,10 @@ static void pnv_ioda_release_pe(struct
> pnv_ioda_pe *pe)
>  	struct pnv_phb *phb = pe->phb;
>  	struct pnv_ioda_pe *slave, *tmp;
>  
> +	mutex_lock(&phb->ioda.pe_list_mutex);
>  	list_del(&pe->list);
> +	mutex_unlock(&phb->ioda.pe_list_mutex);
> +
>  	switch (phb->type) {
>  	case PNV_PHB_IODA1:
>  		pnv_pci_ioda1_release_pe_dma(pe);

Hmm, the ioda.pe_list_mutex muxtex exists, and is inited, but there are
no other users. It's position & naming in the struct suggests it
belongs to ioda.pe_list, rather than pnv_ioda_pe.list (as suggested by
the lock/unlock around the list del).

Do the other accessors of ioda.pe_list also need mutex protection?
pnv_ioda_setup_bus_PE()
pnv_pci_dma_bus_setup()
pnv_pci_init_ioda_phb()
pnv_pci_ioda_setup_PEs()

If not, perhaps the metux should be removed from ioda and replaced with
pe.list_mutex instead.

-- 
Alastair D'Silva
Open Source Developer
Linux Technology Centre, IBM Australia
mob: 0423 762 819



More information about the Linuxppc-dev mailing list