From: Dmitry Baryshkov Date: Mon, 12 Feb 2024 07:37:08 +0000 (+0200) Subject: virtio: fix get_config / set_config for legacy VirtIO targets X-Git-Url: http://git.dujemihanovic.xyz/html/%7B%7B%20.Permalink%20%7D%7D?a=commitdiff_plain;h=3098115155ca9226502e39c5ad3401c25dae64fd;p=u-boot.git virtio: fix get_config / set_config for legacy VirtIO targets 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 --- diff --git a/drivers/virtio/virtio_pci_legacy.c b/drivers/virtio/virtio_pci_legacy.c index cf5dfb17a9..aa89604ae8 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; }