search for: vdpa_dev

Displaying 20 results from an estimated 36 matches for "vdpa_dev".

2023 Jun 30
4
[PATCH virtio 0/4] pds_vdpa: mac, reset, and irq updates
...r to support vhost use, and for properly cleaning vq info on reset. Allen Hubbe (2): pds_vdpa: reset to vdpa specified mac pds_vdpa: alloc irq vectors on DRIVER_OK Shannon Nelson (2): pds_vdpa: always allow offering VIRTIO_NET_F_MAC pds_vdpa: clean and reset vqs entries drivers/vdpa/pds/vdpa_dev.c | 171 +++++++++++++++++++++++++----------- drivers/vdpa/pds/vdpa_dev.h | 1 + 2 files changed, 122 insertions(+), 50 deletions(-) -- 2.17.1
2023 Jun 30
4
[PATCH virtio 0/4] pds_vdpa: mac, reset, and irq updates
...r to support vhost use, and for properly cleaning vq info on reset. Allen Hubbe (2): pds_vdpa: reset to vdpa specified mac pds_vdpa: alloc irq vectors on DRIVER_OK Shannon Nelson (2): pds_vdpa: always allow offering VIRTIO_NET_F_MAC pds_vdpa: clean and reset vqs entries drivers/vdpa/pds/vdpa_dev.c | 171 +++++++++++++++++++++++++----------- drivers/vdpa/pds/vdpa_dev.h | 1 + 2 files changed, 122 insertions(+), 50 deletions(-) -- 2.17.1
2023 Jul 07
1
[PATCH virtio 1/4] pds_vdpa: reset to vdpa specified mac
...d support for vdpa and vdpamgmt interfaces") >> Signed-off-by: Allen Hubbe <allen.hubbe at amd.com> >> Signed-off-by: Shannon Nelson <shannon.nelson at amd.com> >> Reviewed-by: Brett Creeley <brett.creeley at amd.com> >> --- >> drivers/vdpa/pds/vdpa_dev.c | 16 ++++++++-------- >> drivers/vdpa/pds/vdpa_dev.h | 1 + >> 2 files changed, 9 insertions(+), 8 deletions(-) >> >> diff --git a/drivers/vdpa/pds/vdpa_dev.c b/drivers/vdpa/pds/vdpa_dev.c >> index 5071a4d58f8d..e2e99bb0be2b 100644 >> --- a/drivers/vdpa/pds...
2018 Apr 02
2
[RFC] vhost: introduce mdev based hardware vhost backend
...oid vdpa_close(struct mdev_device *mdev); Each accelerator driver just needs to implement its own create()/remove() ops, and provide a vdpa device ops which will be called by the generic mdev emulation code. Currently, the vdpa device ops are defined as: typedef int (*vdpa_start_device_t)(struct vdpa_dev *vdpa); typedef int (*vdpa_stop_device_t)(struct vdpa_dev *vdpa); typedef int (*vdpa_dma_map_t)(struct vdpa_dev *vdpa); typedef int (*vdpa_dma_unmap_t)(struct vdpa_dev *vdpa); typedef int (*vdpa_set_eventfd_t)(struct vdpa_dev *vdpa, int vector, int fd); typedef u64 (*vdpa_supported_features_t)(stru...
2018 Apr 02
2
[RFC] vhost: introduce mdev based hardware vhost backend
...oid vdpa_close(struct mdev_device *mdev); Each accelerator driver just needs to implement its own create()/remove() ops, and provide a vdpa device ops which will be called by the generic mdev emulation code. Currently, the vdpa device ops are defined as: typedef int (*vdpa_start_device_t)(struct vdpa_dev *vdpa); typedef int (*vdpa_stop_device_t)(struct vdpa_dev *vdpa); typedef int (*vdpa_dma_map_t)(struct vdpa_dev *vdpa); typedef int (*vdpa_dma_unmap_t)(struct vdpa_dev *vdpa); typedef int (*vdpa_set_eventfd_t)(struct vdpa_dev *vdpa, int vector, int fd); typedef u64 (*vdpa_supported_features_t)(stru...
2018 Apr 10
0
[RFC] vhost: introduce mdev based hardware vhost backend
...ev); > > Each accelerator driver just needs to implement its own > create()/remove() ops, and provide a vdpa device ops > which will be called by the generic mdev emulation code. > > Currently, the vdpa device ops are defined as: > > typedef int (*vdpa_start_device_t)(struct vdpa_dev *vdpa); > typedef int (*vdpa_stop_device_t)(struct vdpa_dev *vdpa); > typedef int (*vdpa_dma_map_t)(struct vdpa_dev *vdpa); > typedef int (*vdpa_dma_unmap_t)(struct vdpa_dev *vdpa); > typedef int (*vdpa_set_eventfd_t)(struct vdpa_dev *vdpa, int vector, int fd); > typedef u64 (*vdpa_s...
2023 May 08
1
[PATCH V2 1/5] vDPA/ifcvf: virt queue ops take immediate actions
...vf->vring[i].last_avail_idx = 0; - vf->vring[i].desc = 0; - vf->vring[i].avail = 0; - vf->vring[i].used = 0; - vf->vring[i].ready = 0; vf->vring[i].cb.callback = NULL; vf->vring[i].cb.private = NULL; } @@ -542,14 +538,14 @@ static void ifcvf_vdpa_set_vq_ready(struct vdpa_device *vdpa_dev, { struct ifcvf_hw *vf = vdpa_to_vf(vdpa_dev); - vf->vring[qid].ready = ready; + ifcvf_set_vq_ready(vf, qid, ready); } static bool ifcvf_vdpa_get_vq_ready(struct vdpa_device *vdpa_dev, u16 qid) { struct ifcvf_hw *vf = vdpa_to_vf(vdpa_dev); - return vf->vring[qid].re...
2019 Jul 03
0
[RFC v2] vhost: introduce mdev based hardware vhost backend
...> + ((offset) >> VDPA_VFIO_VHOST_OFFSET_SHIFT) > +#define VDPA_VFIO_VHOST_INDEX_TO_OFFSET(index) \ > + ((u64)(index) << VDPA_VFIO_VHOST_OFFSET_SHIFT) > +#define VDPA_VFIO_VHOST_REGION_OFFSET(offset) \ > + ((offset) & VDPA_VFIO_VHOST_OFFSET_MASK) > + > +struct vdpa_dev *vdpa_alloc(struct mdev_device *mdev, void *private, > + int max_vrings) > +{ > + struct vdpa_dev *vdpa; > + size_t size; > + > + size = sizeof(struct vdpa_dev) + max_vrings * > + sizeof(struct vdpa_vring_info); > + > + vdpa = kzalloc(size, GFP_KERNEL); > + if...
2019 Jul 03
4
[RFC v2] vhost: introduce mdev based hardware vhost backend
...IO_VHOST_OFFSET_TO_INDEX(offset) \ + ((offset) >> VDPA_VFIO_VHOST_OFFSET_SHIFT) +#define VDPA_VFIO_VHOST_INDEX_TO_OFFSET(index) \ + ((u64)(index) << VDPA_VFIO_VHOST_OFFSET_SHIFT) +#define VDPA_VFIO_VHOST_REGION_OFFSET(offset) \ + ((offset) & VDPA_VFIO_VHOST_OFFSET_MASK) + +struct vdpa_dev *vdpa_alloc(struct mdev_device *mdev, void *private, + int max_vrings) +{ + struct vdpa_dev *vdpa; + size_t size; + + size = sizeof(struct vdpa_dev) + max_vrings * + sizeof(struct vdpa_vring_info); + + vdpa = kzalloc(size, GFP_KERNEL); + if (vdpa == NULL) + return NULL; + + mutex_init(&amp...
2019 Jul 03
4
[RFC v2] vhost: introduce mdev based hardware vhost backend
...IO_VHOST_OFFSET_TO_INDEX(offset) \ + ((offset) >> VDPA_VFIO_VHOST_OFFSET_SHIFT) +#define VDPA_VFIO_VHOST_INDEX_TO_OFFSET(index) \ + ((u64)(index) << VDPA_VFIO_VHOST_OFFSET_SHIFT) +#define VDPA_VFIO_VHOST_REGION_OFFSET(offset) \ + ((offset) & VDPA_VFIO_VHOST_OFFSET_MASK) + +struct vdpa_dev *vdpa_alloc(struct mdev_device *mdev, void *private, + int max_vrings) +{ + struct vdpa_dev *vdpa; + size_t size; + + size = sizeof(struct vdpa_dev) + max_vrings * + sizeof(struct vdpa_vring_info); + + vdpa = kzalloc(size, GFP_KERNEL); + if (vdpa == NULL) + return NULL; + + mutex_init(&amp...
2023 Mar 31
7
[PATCH 0/5] vDPA/ifcvf: implement immediate initialization mechanism
Formerly, ifcvf driver has implemented a lazy-initialization mechanism for the virtqueues and other config space contents, it would store all configurations that passed down from the userspace, then load them to the device config space upon DRIVER_OK. This can not serve live migration, so this series implement an immediate initialization mechanism, which means rather than the former store-load
2023 May 08
6
[PATCH V2 0/5] vDPA/ifcvf: implement immediate initialization mechanism
Formerly, ifcvf driver has implemented a lazy-initialization mechanism for the virtqueues and other config space contents, it would store all configurations that passed down from the userspace, then load them to the device config space upon DRIVER_OK. This can not serve live migration, so this series implement an immediate initialization mechanism, which means rather than the former store-load
2023 Mar 31
1
[PATCH 1/5] virt queue ops take immediate actions
...vf->vring[i].last_avail_idx = 0; - vf->vring[i].desc = 0; - vf->vring[i].avail = 0; - vf->vring[i].used = 0; - vf->vring[i].ready = 0; vf->vring[i].cb.callback = NULL; vf->vring[i].cb.private = NULL; } @@ -542,14 +538,14 @@ static void ifcvf_vdpa_set_vq_ready(struct vdpa_device *vdpa_dev, { struct ifcvf_hw *vf = vdpa_to_vf(vdpa_dev); - vf->vring[qid].ready = ready; + ifcvf_set_vq_ready(vf, qid, ready); } static bool ifcvf_vdpa_get_vq_ready(struct vdpa_device *vdpa_dev, u16 qid) { struct ifcvf_hw *vf = vdpa_to_vf(vdpa_dev); - return vf->vring[qid].re...
2023 May 08
1
[PATCH V2 4/5] vDPA/ifcvf: synchronize irqs in the reset routine
...) -{ - struct ifcvf_hw *vf = adapter->vf; - int i; - - for (i = 0; i < vf->nr_vring; i++) { - vf->vring[i].last_avail_idx = 0; - vf->vring[i].cb.callback = NULL; - vf->vring[i].cb.private = NULL; - } - - ifcvf_reset(vf); -} - static struct ifcvf_adapter *vdpa_to_adapter(struct vdpa_device *vdpa_dev) { return container_of(vdpa_dev, struct ifcvf_adapter, vdpa); @@ -462,23 +438,15 @@ static void ifcvf_vdpa_set_status(struct vdpa_device *vdpa_dev, u8 status) static int ifcvf_vdpa_reset(struct vdpa_device *vdpa_dev) { - struct ifcvf_adapter *adapter; - struct ifcvf_hw *vf; - u8...
2023 May 24
2
[PATCH V2 4/5] vDPA/ifcvf: synchronize irqs in the reset routine
...+) { > - vf->vring[i].last_avail_idx = 0; > - vf->vring[i].cb.callback = NULL; > - vf->vring[i].cb.private = NULL; > - } > - > - ifcvf_reset(vf); > -} > - > static struct ifcvf_adapter *vdpa_to_adapter(struct vdpa_device *vdpa_dev) > { > return container_of(vdpa_dev, struct ifcvf_adapter, vdpa); > @@ -462,23 +438,15 @@ static void ifcvf_vdpa_set_status(struct vdpa_device *vdpa_dev, u8 status) > > static int ifcvf_vdpa_reset(struct vdpa_device *vdpa_dev) > { > - struct ifcvf_...
2023 Mar 17
0
[PATCH RFC v2 virtio 2/7] pds_vdpa: get vdpa management info
...;shannon.nelson at amd.com> > >> --- > >> drivers/vdpa/pds/Makefile | 3 +- > >> drivers/vdpa/pds/aux_drv.c | 13 ++++ > >> drivers/vdpa/pds/aux_drv.h | 7 +++ > >> drivers/vdpa/pds/debugfs.c | 3 + > >> drivers/vdpa/pds/vdpa_dev.c | 113 +++++++++++++++++++++++++++++++++++ > >> drivers/vdpa/pds/vdpa_dev.h | 15 +++++ > >> include/linux/pds/pds_vdpa.h | 92 ++++++++++++++++++++++++++++ > >> 7 files changed, 245 insertions(+), 1 deletion(-) > >> create mode 100644 drivers/vdpa/pds...
2020 May 12
1
[PATCH] ifcvf: move IRQ request/free to status change handlers
...+ >>> +??? return 0; >>> +} >>> + >>> ? static int ifcvf_start_datapath(void *private) >>> ? { >>> ????? struct ifcvf_hw *vf = ifcvf_private_to_vf(private); >>> @@ -118,9 +172,12 @@ static void ifcvf_vdpa_set_status(struct >>> vdpa_device *vdpa_dev, u8 status) >>> ? { >>> ????? struct ifcvf_adapter *adapter; >>> ????? struct ifcvf_hw *vf; >>> +??? u8 status_old; >>> +??? int ret; >>> ? ????? vf? = vdpa_to_vf(vdpa_dev); >>> ????? adapter = dev_get_drvdata(vdpa_dev->...
2023 May 08
1
[PATCH V2 2/5] vDPA/ifcvf: get_driver_features from virtio registers
...vf_hw *hw); #endif /* _IFCVF_H_ */ diff --git a/drivers/vdpa/ifcvf/ifcvf_main.c b/drivers/vdpa/ifcvf/ifcvf_main.c index 1357c67014ab..4588484bd53d 100644 --- a/drivers/vdpa/ifcvf/ifcvf_main.c +++ b/drivers/vdpa/ifcvf/ifcvf_main.c @@ -410,7 +410,7 @@ static u64 ifcvf_vdpa_get_device_features(struct vdpa_device *vdpa_dev) u64 features; if (type == VIRTIO_ID_NET || type == VIRTIO_ID_BLOCK) - features = ifcvf_get_features(vf); + features = ifcvf_get_dev_features(vf); else { features = 0; IFCVF_ERR(pdev, "VIRTIO ID %u not supported\n", vf->dev_type); @@ -428,7 +428,7 @@ static...
2020 Apr 09
2
[PATCH] vdpa: allow a 32 bit vq alignment
...changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/vdpa/ifcvf/ifcvf_main.c b/drivers/vdpa/ifcvf/ifcvf_main.c index 28d9e5de5675..abf6a061cab6 100644 --- a/drivers/vdpa/ifcvf/ifcvf_main.c +++ b/drivers/vdpa/ifcvf/ifcvf_main.c @@ -226,7 +226,7 @@ static u32 ifcvf_vdpa_get_vendor_id(struct vdpa_device *vdpa_dev) return IFCVF_SUBSYS_VENDOR_ID; } -static u16 ifcvf_vdpa_get_vq_align(struct vdpa_device *vdpa_dev) +static u32 ifcvf_vdpa_get_vq_align(struct vdpa_device *vdpa_dev) { return IFCVF_QUEUE_ALIGNMENT; } diff --git a/drivers/vdpa/vdpa_sim/vdpa_sim.c b/drivers/vdpa/vdpa_sim/vdpa_si...
2023 Mar 31
2
[PATCH 2/5] get_driver_features from virito registers
...vf_hw *hw); #endif /* _IFCVF_H_ */ diff --git a/drivers/vdpa/ifcvf/ifcvf_main.c b/drivers/vdpa/ifcvf/ifcvf_main.c index 1357c67014ab..4588484bd53d 100644 --- a/drivers/vdpa/ifcvf/ifcvf_main.c +++ b/drivers/vdpa/ifcvf/ifcvf_main.c @@ -410,7 +410,7 @@ static u64 ifcvf_vdpa_get_device_features(struct vdpa_device *vdpa_dev) u64 features; if (type == VIRTIO_ID_NET || type == VIRTIO_ID_BLOCK) - features = ifcvf_get_features(vf); + features = ifcvf_get_dev_features(vf); else { features = 0; IFCVF_ERR(pdev, "VIRTIO ID %u not supported\n", vf->dev_type); @@ -428,7 +428,7 @@ static...