mirror of https://github.com/xemu-project/xemu.git
virtio-ccw: Handle extra notification data
Add support to virtio-ccw devices for handling the extra data sent from the driver to the device when the VIRTIO_F_NOTIFICATION_DATA transport feature has been negotiated. The extra data that's passed to the virtio-ccw device when this feature is enabled varies depending on the device's virtqueue layout. That data passed to the virtio-ccw device is in the same format as the data passed to virtio-pci devices. Signed-off-by: Jonah Palmer <jonah.palmer@oracle.com> Message-Id: <20240315165557.26942-5-jonah.palmer@oracle.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
54869366be
commit
594b543a4a
|
@ -126,9 +126,11 @@ static void subsystem_reset(void)
|
|||
static int virtio_ccw_hcall_notify(const uint64_t *args)
|
||||
{
|
||||
uint64_t subch_id = args[0];
|
||||
uint64_t queue = args[1];
|
||||
uint64_t data = args[1];
|
||||
SubchDev *sch;
|
||||
VirtIODevice *vdev;
|
||||
int cssid, ssid, schid, m;
|
||||
uint16_t vq_idx = data;
|
||||
|
||||
if (ioinst_disassemble_sch_ident(subch_id, &m, &cssid, &ssid, &schid)) {
|
||||
return -EINVAL;
|
||||
|
@ -137,12 +139,19 @@ static int virtio_ccw_hcall_notify(const uint64_t *args)
|
|||
if (!sch || !css_subch_visible(sch)) {
|
||||
return -EINVAL;
|
||||
}
|
||||
if (queue >= VIRTIO_QUEUE_MAX) {
|
||||
|
||||
vdev = virtio_ccw_get_vdev(sch);
|
||||
if (vq_idx >= VIRTIO_QUEUE_MAX || !virtio_queue_get_num(vdev, vq_idx)) {
|
||||
return -EINVAL;
|
||||
}
|
||||
virtio_queue_notify(virtio_ccw_get_vdev(sch), queue);
|
||||
return 0;
|
||||
|
||||
if (virtio_vdev_has_feature(vdev, VIRTIO_F_NOTIFICATION_DATA)) {
|
||||
virtio_queue_set_shadow_avail_idx(virtio_get_queue(vdev, vq_idx),
|
||||
(data >> 16) & 0xFFFF);
|
||||
}
|
||||
|
||||
virtio_queue_notify(vdev, vq_idx);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int virtio_ccw_hcall_early_printk(const uint64_t *args)
|
||||
|
|
Loading…
Reference in New Issue