diff options
| author | Dmitry Baryshkov <dmitry.baryshkov@linaro.org> | 2024-02-12 09:37:08 +0200 | 
|---|---|---|
| committer | Tom Rini <trini@konsulko.com> | 2024-03-05 08:37:53 -0500 | 
| commit | 3098115155ca9226502e39c5ad3401c25dae64fd (patch) | |
| tree | 2d37e835dfc185412d49eaa1d61f1ff4f9b29a0c /drivers/virtio | |
| parent | 96ca3d362d3e900d687d668d9bf81ce18692d96b (diff) | |
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 <dmitry.baryshkov@linaro.org>
Diffstat (limited to 'drivers/virtio')
| -rw-r--r-- | drivers/virtio/virtio_pci_legacy.c | 4 | 
1 files changed, 2 insertions, 2 deletions
| diff --git a/drivers/virtio/virtio_pci_legacy.c b/drivers/virtio/virtio_pci_legacy.c index cf5dfb17a94..aa89604ae84 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;  } | 
