Re: [PATCH] pci: quirk: Apply APM ACS quirk to XGene devices
From: Feng Kan
Date: Tue Jul 18 2017 - 13:42:48 EST
On Mon, Jul 17, 2017 at 7:23 PM, Alex Williamson
<alex.williamson@xxxxxxxxxx> wrote:
> On Mon, 17 Jul 2017 17:45:52 -0700
> Feng Kan <fkan@xxxxxxx> wrote:
>
>> The APM X-Gene PCIe root port does not support ACS at this point.
>> Since the root does not allow peer to peer transactions, mask out
>> ACS capability flag bits.
>>
>> Signed-off-by: Feng Kan <fkan@xxxxxxx>
>> ---
>> drivers/pci/quirks.c | 2 ++
>> 1 file changed, 2 insertions(+)
>>
>> diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
>> index 085fb78..951064d 100644
>> --- a/drivers/pci/quirks.c
>> +++ b/drivers/pci/quirks.c
>> @@ -4368,6 +4368,8 @@ static int pci_quirk_mf_endpoint_acs(struct pci_dev *dev, u16 acs_flags)
>> { 0x10df, 0x720, pci_quirk_mf_endpoint_acs }, /* Emulex Skyhawk-R */
>> /* Cavium ThunderX */
>> { PCI_VENDOR_ID_CAVIUM, PCI_ANY_ID, pci_quirk_cavium_acs },
>> + /* APM XGene */
>> + { PCI_VENDOR_ID_AMCC, 0xE004, pci_quirk_mf_endpoint_acs },
>> { 0 }
>> };
>
>
> You're using the "mf_enpoint" quirk for something that is not an
> endpoint and may or may not be multi-function. Downstream ports have
> different rules than multi-function endpoints and the quirk function is
> commented to reflect why certain fields are relevant or not to
> multi-function endpoints. I don't think it's valid to use this quirk
> for other device types, we'd only need to accidentally test the assumed
> device type in that function to break you in the future.
Would creating another function like what Cavium did be sufficient?
Additionally,
> lack of peer to peer does not necessarily imply functionality like
> Source Validation, without which a device can spoof the requester ID.
> Thanks,
I can remove the statement.
>
> Alex
Alex, the goal here is to enable virtualization to work correctly.
Please let me know if the
above is sufficient. Much thanks.
>