Skip to content

Commit 6ad31d1

Browse files
Zhu Lingshanmstsirkin
authored andcommitted
vDPA/ifcvf: enable Intel C5000X-PL virtio-block for vDPA
This commit enabled Intel FPGA SmartNIC C5000X-PL virtio-block for vDPA. Signed-off-by: Zhu Lingshan <[email protected]> Reviewed-by: Stefano Garzarella <[email protected]> Acked-by: Jason Wang <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Michael S. Tsirkin <[email protected]>
1 parent 26bfea1 commit 6ad31d1

File tree

2 files changed

+25
-2
lines changed

2 files changed

+25
-2
lines changed

drivers/vdpa/ifcvf/ifcvf_base.h

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
#include <linux/pci_regs.h>
1616
#include <linux/vdpa.h>
1717
#include <uapi/linux/virtio_net.h>
18+
#include <uapi/linux/virtio_blk.h>
1819
#include <uapi/linux/virtio_config.h>
1920
#include <uapi/linux/virtio_pci.h>
2021

@@ -28,7 +29,12 @@
2829
#define C5000X_PL_SUBSYS_VENDOR_ID 0x8086
2930
#define C5000X_PL_SUBSYS_DEVICE_ID 0x0001
3031

31-
#define IFCVF_SUPPORTED_FEATURES \
32+
#define C5000X_PL_BLK_VENDOR_ID 0x1AF4
33+
#define C5000X_PL_BLK_DEVICE_ID 0x1001
34+
#define C5000X_PL_BLK_SUBSYS_VENDOR_ID 0x8086
35+
#define C5000X_PL_BLK_SUBSYS_DEVICE_ID 0x0002
36+
37+
#define IFCVF_NET_SUPPORTED_FEATURES \
3238
((1ULL << VIRTIO_NET_F_MAC) | \
3339
(1ULL << VIRTIO_F_ANY_LAYOUT) | \
3440
(1ULL << VIRTIO_F_VERSION_1) | \

drivers/vdpa/ifcvf/ifcvf_main.c

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,10 +168,23 @@ static struct ifcvf_hw *vdpa_to_vf(struct vdpa_device *vdpa_dev)
168168

169169
static u64 ifcvf_vdpa_get_features(struct vdpa_device *vdpa_dev)
170170
{
171+
struct ifcvf_adapter *adapter = vdpa_to_adapter(vdpa_dev);
171172
struct ifcvf_hw *vf = vdpa_to_vf(vdpa_dev);
173+
struct pci_dev *pdev = adapter->pdev;
174+
172175
u64 features;
173176

174-
features = ifcvf_get_features(vf) & IFCVF_SUPPORTED_FEATURES;
177+
switch (vf->dev_type) {
178+
case VIRTIO_ID_NET:
179+
features = ifcvf_get_features(vf) & IFCVF_NET_SUPPORTED_FEATURES;
180+
break;
181+
case VIRTIO_ID_BLOCK:
182+
features = ifcvf_get_features(vf);
183+
break;
184+
default:
185+
features = 0;
186+
IFCVF_ERR(pdev, "VIRTIO ID %u not supported\n", vf->dev_type);
187+
}
175188

176189
return features;
177190
}
@@ -514,6 +527,10 @@ static struct pci_device_id ifcvf_pci_ids[] = {
514527
C5000X_PL_DEVICE_ID,
515528
C5000X_PL_SUBSYS_VENDOR_ID,
516529
C5000X_PL_SUBSYS_DEVICE_ID) },
530+
{ PCI_DEVICE_SUB(C5000X_PL_BLK_VENDOR_ID,
531+
C5000X_PL_BLK_DEVICE_ID,
532+
C5000X_PL_BLK_SUBSYS_VENDOR_ID,
533+
C5000X_PL_BLK_SUBSYS_DEVICE_ID) },
517534

518535
{ 0 },
519536
};

0 commit comments

Comments
 (0)