\r
Device = VIRTIO_MMIO_DEVICE_FROM_VIRTIO_DEVICE (This);\r
\r
- VIRTIO_CFG_WRITE (Device, VIRTIO_MMIO_OFFSET_QUEUE_NUM, QueueSize);\r
+ if (Device->Version == VIRTIO_MMIO_DEVICE_VERSION_0_95) {\r
+ VIRTIO_CFG_WRITE (Device, VIRTIO_MMIO_OFFSET_QUEUE_NUM, QueueSize);\r
+ } else {\r
+ Device->QueueNum = QueueSize;\r
+ }\r
\r
return EFI_SUCCESS;\r
}\r
\r
VIRTIO_CFG_WRITE (Device, VIRTIO_MMIO_OFFSET_QUEUE_SEL, Sel);\r
\r
+ if (Device->Version == VIRTIO_MMIO_DEVICE_VERSION_0_95) {\r
+ Device->QueueNum = VIRTIO_CFG_READ (Device, VIRTIO_MMIO_OFFSET_QUEUE_NUM_MAX) & 0xFFFF;\r
+ }\r
+\r
return EFI_SUCCESS;\r
}\r
\r
VIRTIO_CFG_WRITE (Device, VIRTIO_MMIO_OFFSET_QUEUE_PFN,\r
(UINT32)((UINTN)Ring->Base >> EFI_PAGE_SHIFT));\r
} else {\r
+ VIRTIO_CFG_WRITE (Device, VIRTIO_MMIO_OFFSET_QUEUE_NUM, Device->QueueNum);\r
+\r
Address = (UINTN)Ring->Base;\r
VIRTIO_CFG_WRITE (Device, VIRTIO_MMIO_OFFSET_QUEUE_DESC_LO,\r
(UINT32)Address);\r