[PATCH] virtio: fix get_config / set_config for legacy VirtIO targets
Dmitry Baryshkov
dmitry.baryshkov at linaro.org
Sat Feb 17 21:09:12 CET 2024
On Mon, 12 Feb 2024 at 09:37, Dmitry Baryshkov
<dmitry.baryshkov at linaro.org> wrote:
>
> The functions virtio_pci_get_config() and virtio_pci_set_config() don't
> take the offset into account when reading the config space. For example
> this manifests when U-Boot tries to read the MAC address of the VirtIO
> networking device. It reads 6 equa bytes instead of the proper addess.
>
> Fix those functions by taking the offset in the config space into
> account.
>
> Fixes: 4135e10732a0 ("virtio: Add virtio over pci transport driver")
> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov at linaro.org>
Gracious ping
> ---
> drivers/virtio/virtio_pci_legacy.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/virtio/virtio_pci_legacy.c b/drivers/virtio/virtio_pci_legacy.c
> index cf5dfb17a94d..aa89604ae84d 100644
> --- a/drivers/virtio/virtio_pci_legacy.c
> +++ b/drivers/virtio/virtio_pci_legacy.c
> @@ -107,7 +107,7 @@ static int virtio_pci_get_config(struct udevice *udev, unsigned int offset,
> int i;
>
> for (i = 0; i < len; i++)
> - ptr[i] = ioread8(ioaddr + i);
> + ptr[i] = ioread8(ioaddr + offset + i);
>
> return 0;
> }
> @@ -121,7 +121,7 @@ static int virtio_pci_set_config(struct udevice *udev, unsigned int offset,
> int i;
>
> for (i = 0; i < len; i++)
> - iowrite8(ptr[i], ioaddr + i);
> + iowrite8(ptr[i], ioaddr + offset + i);
>
> return 0;
> }
> --
> 2.39.2
>
--
With best wishes
Dmitry
More information about the U-Boot
mailing list