[Skiboot] [PATCH 2/4] hw/phb3: Use cached vendor/device IDs in phb3_check_device_quirks()

Benjamin Herrenschmidt benh at kernel.crashing.org
Thu Jun 15 15:31:18 AEST 2017


On Fri, 2017-04-07 at 10:16 +1000, Gavin Shan wrote:
> This uses the cached vendor/device IDs in phb3_check_device_quirks().
> Also, to give the code and comment a cleaup. No logical changes are
> introduced.
> 
> Signed-off-by: Gavin Shan <gwshan at linux.vnet.ibm.com>

Acked-by: Benjamin Herrenschmidt <benh at kernel.crashing.org>

> ---
>  hw/phb3.c | 39 ++++++++++++++++++++-------------------
>  1 file changed, 20 insertions(+), 19 deletions(-)
> 
> diff --git a/hw/phb3.c b/hw/phb3.c
> index 9bc9d78..64724b9 100644
> --- a/hw/phb3.c
> +++ b/hw/phb3.c
> @@ -589,39 +589,40 @@ static void phb3_endpoint_init(struct phb *phb,
>  static void phb3_check_device_quirks(struct phb *phb, struct pci_device *dev)
>  {
>  	struct phb3 *p = phb_to_phb3(phb);
> -	u32 vdid;
> -	u16 vendor, device;
>  
>  	if (dev->primary_bus != 0 &&
>  	    dev->primary_bus != 1)
>  		return;
>  
> -	pci_cfg_read32(phb, dev->bdfn, 0, &vdid);
> -	vendor = vdid & 0xffff;
> -	device = vdid >> 16;
> -
>  	if (dev->primary_bus == 1) {
>  		u64 modectl;
>  
> -		/* For these adapters, if they are directly under the PHB, we
> -		 * adjust some settings for performances
> +		/*
> +		 * For these adapters, if they are directly under the PHB, we
> +		 * adjust the disable_wr_scope_group bit for performances
> +		 *
> +		 * 15b3:1003   Mellanox Travis3-EN (CX3)
> +		 * 15b3:1011   Mellanox HydePark (ConnectIB)
> +		 * 15b3:1013   Mellanox GlacierPark (CX4)
>  		 */
>  		xscom_read(p->chip_id, p->pe_xscom + 0x0b, &modectl);
> -		if (vendor == 0x15b3 &&		/* Mellanox */
> -		    (device == 0x1003 ||	/* Travis3-EN (CX3) */
> -		     device == 0x1011 ||	/* HydePark (ConnectIB) */
> -		     device == 0x1013))	{	/* GlacierPark (CX4) */
> -			/* Set disable_wr_scope_group bit */
> +		if (PCI_VENDOR_ID(dev->vdid) == 0x15b3 &&
> +		    (PCI_DEVICE_ID(dev->vdid) == 0x1003	||
> +		     PCI_DEVICE_ID(dev->vdid) == 0x1011 ||
> +		     PCI_DEVICE_ID(dev->vdid) == 0x1013))
>  			modectl |= PPC_BIT(14);
> -		} else {
> -			/* Clear disable_wr_scope_group bit */
> +		else
>  			modectl &= ~PPC_BIT(14);
> -		}
> -
>  		xscom_write(p->chip_id, p->pe_xscom + 0x0b, modectl);
>  	} else if (dev->primary_bus == 0) {
> -		if (vendor == 0x1014 &&		/* IBM */
> -		    device == 0x03dc) {		/* P8/P8E/P8NVL Root port */
> +		/*
> +		 * Emulate the prefetchable window of the root port
> +		 * when the corresponding HW registers are readonly.
> +		 *
> +		 * 1014:03dc   Root port on P8/P8E/P8NVL
> +		 */
> +		if (PCI_VENDOR_ID(dev->vdid) == 0x1014 &&
> +		    PCI_DEVICE_ID(dev->vdid) == 0x03dc) {
>  			uint32_t pref_hi, tmp;
>  
>  			pci_cfg_read32(phb, dev->bdfn,


More information about the Skiboot mailing list