lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <0e72009d-60af-980d-a43e-495733f6f6f7@intel.com>
Date:   Tue, 9 Mar 2021 13:50:39 +0800
From:   "Zhu, Lingshan" <lingshan.zhu@...el.com>
To:     Jason Wang <jasowang@...hat.com>, mst@...hat.com, lulu@...hat.com
Cc:     virtualization@...ts.linux-foundation.org, netdev@...r.kernel.org,
        kvm@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH V2 2/4] vDPA/ifcvf: enable Intel C5000X-PL virtio-net for
 vDPA



On 3/9/2021 10:42 AM, Jason Wang wrote:
>
> On 2021/3/9 10:28 上午, Zhu, Lingshan wrote:
>>
>>
>> On 3/9/2021 10:23 AM, Jason Wang wrote:
>>>
>>> On 2021/3/8 4:35 下午, Zhu Lingshan wrote:
>>>> This commit enabled Intel FPGA SmartNIC C5000X-PL virtio-net
>>>> for vDPA
>>>>
>>>> Signed-off-by: Zhu Lingshan <lingshan.zhu@...el.com>
>>>> ---
>>>>   drivers/vdpa/ifcvf/ifcvf_base.h | 5 +++++
>>>>   drivers/vdpa/ifcvf/ifcvf_main.c | 5 +++++
>>>>   2 files changed, 10 insertions(+)
>>>>
>>>> diff --git a/drivers/vdpa/ifcvf/ifcvf_base.h 
>>>> b/drivers/vdpa/ifcvf/ifcvf_base.h
>>>> index 64696d63fe07..75d9a8052039 100644
>>>> --- a/drivers/vdpa/ifcvf/ifcvf_base.h
>>>> +++ b/drivers/vdpa/ifcvf/ifcvf_base.h
>>>> @@ -23,6 +23,11 @@
>>>>   #define IFCVF_SUBSYS_VENDOR_ID    0x8086
>>>>   #define IFCVF_SUBSYS_DEVICE_ID    0x001A
>>>>   +#define C5000X_PL_VENDOR_ID        0x1AF4
>>>> +#define C5000X_PL_DEVICE_ID        0x1000
>>>> +#define C5000X_PL_SUBSYS_VENDOR_ID    0x8086
>>>> +#define C5000X_PL_SUBSYS_DEVICE_ID    0x0001
>>>
>>>
>>> I just notice that the device is a transtitional one. Any reason for 
>>> doing this?
>>>
>>> Note that IFCVF is a moden device anyhow (0x1041). Supporting legacy 
>>> drive may bring many issues (e.g the definition is non-nomartive). 
>>> One example is the support of VIRTIO_F_IOMMU_PLATFORM, legacy driver 
>>> may assume the device can bypass IOMMU.
>>>
>>> Thanks
>> Hi Jason,
>>
>> This device will support virtio1.0 by default, so has 
>> VIRTIO_F_IOMMU_PLATFORM by default.
>
>
> If you device want to force VIRTIO_F_IOMMU_PLATFORM you probably need 
> to do what has been done by mlx5 (verify_min_features).
>
> According to the spec, if VIRTIO_F_IOMMU_PLATFORM is not mandatory, 
> when it's not negotiated, device needs to disable or bypass IOMMU:
>
>
> "
>
> If this feature bit is set to 0, then the device has same access to 
> memory addresses supplied to it as the driver has. In particular, the 
> device will always use physical addresses matching addresses used by 
> the driver (typically meaning physical addresses used by the CPU) and 
> not translated further, and can access any address supplied to it by 
> the driver.
>
> "
sure, I can implement code to check the feature bits.
>
>
>> Transitional device gives the software a chance to fall back to 
>> virtio 0.95.
>
>
> This only applies if you want to passthrough the card to guest 
> directly without the help of vDPA.
>
> If we go with vDPA, it doesn't hlep. For virtio-vdpa, we know it will 
> negotiated IOMMU_PLATFORM. For vhost-vdpa, Qemu can provide a legacy 
> or transitional device on top of a modern vDPA device.
>
> Thanks
For some cases, users may run quite out of date OS does not have vDPA 
nor virtio 1.0 support, transitional characters give them a chance to 
use the devices.

Thanks
Zhu Lingshan
>
>
>> ifcvf drives this device in virtio 1.0 mode, set features 
>> VIRTIO_F_IOMMU_PLATFORM successfully.
>>
>> Thanks,
>> Zhu Lingshan
>>>
>>>
>>>> +
>>>>   #define IFCVF_SUPPORTED_FEATURES \
>>>>           ((1ULL << VIRTIO_NET_F_MAC)            | \
>>>>            (1ULL << VIRTIO_F_ANY_LAYOUT) | \
>>>> diff --git a/drivers/vdpa/ifcvf/ifcvf_main.c 
>>>> b/drivers/vdpa/ifcvf/ifcvf_main.c
>>>> index e501ee07de17..26a2dab7ca66 100644
>>>> --- a/drivers/vdpa/ifcvf/ifcvf_main.c
>>>> +++ b/drivers/vdpa/ifcvf/ifcvf_main.c
>>>> @@ -484,6 +484,11 @@ static struct pci_device_id ifcvf_pci_ids[] = {
>>>>           IFCVF_DEVICE_ID,
>>>>           IFCVF_SUBSYS_VENDOR_ID,
>>>>           IFCVF_SUBSYS_DEVICE_ID) },
>>>> +    { PCI_DEVICE_SUB(C5000X_PL_VENDOR_ID,
>>>> +             C5000X_PL_DEVICE_ID,
>>>> +             C5000X_PL_SUBSYS_VENDOR_ID,
>>>> +             C5000X_PL_SUBSYS_DEVICE_ID) },
>>>> +
>>>>       { 0 },
>>>>   };
>>>>   MODULE_DEVICE_TABLE(pci, ifcvf_pci_ids);
>>>
>>
>

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ