OvmfPkg: Pass correct virtio-scsi request size

The patch at "1fc55a3933b0 OvmfPkg: Use heap memory
for virtio-scsi request" modified the virtio-scsi
request header memory to be allocated from the heap.
In doing so the request structure header which was
a local variable on the stack was converted to be a
pointer. This required adjusting the size computation
for the request header to reflect that the structure
was changed to a pointer.
Unfortunately, this was missed out in the call to
VirtioAppendDesc() for enqueuing the request due to
which only 8 bytes were being shared with the host
instead of the size of the VIRTIO_SCSI_REQ structure
which is 51 bytes.

This resulted in the following error message to
be printed by qemu: "qemu-system-<arch>: wrong size
for virtio-scsi headers" and the virtio-scsi
functionality degraded.

Therefore, pass the correct size of the virtio-scsi
request header when enqueuing the request.

Reported-by: Aithal Srikanth <sraithal@amd.com>
Tested-by: Aithal Srikanth <sraithal@amd.com>
Signed-off-by: Sami Mujawar <sami.mujawar@arm.com>
This commit is contained in:
Sami Mujawar 2024-08-02 03:44:30 +01:00 committed by mergify[bot]
parent 24a375fcdd
commit f203a6db92
1 changed files with 1 additions and 1 deletions

View File

@ -610,7 +610,7 @@ VirtioScsiPassThru (
VirtioAppendDesc (
&Dev->Ring,
RequestDeviceAddress,
sizeof Request,
sizeof (*Request),
VRING_DESC_F_NEXT,
&Indices
);