| History log of /src/sys/dev/virtio/virtio_mmio.c |
| Revision | | Date | Author | Comments |
| 1.15 |
| 26-Jul-2025 |
martin | PR 58681: add a port of the OpenBSD viogpu(4) driver written by Joshua Stein <jcs@openbsd.org>. Port by George Matsumura with help from Jiaxun Yang.
|
| 1.14 |
| 09-Mar-2024 |
isaki | branches: 1.14.2; Fix a null dereference (on attach failure). During cleanup, setup_queue may be called even before vsc->sc_vqs is assigned.
|
| 1.13 |
| 06-Jan-2024 |
thorpej | Perform VirtIO 1.0 feature negotation in the MMIO transport. This is required for HV's that have MMIO-v2 and don't support transitional devices.
|
| 1.12 |
| 02-Jan-2024 |
thorpej | - The VirtIO 1.0 spec says that the MMIO interface uses little-endian registers. For some VMs, at least, this appears to be independent of the config/struct byte-order. Detect this and handle it. - Add support for the "v2" MMIO personality.
|
| 1.11 |
| 07-Jul-2023 |
rin | virtio(4): Fix byte order of DMA data for armeb in the same manner as aarch64eb.
Fix comments to explain what is going on for {arm,aarch64}eb on QEMU. This is not due to QEMU bugs; it correctly configures everything for little-endian environment, and we forcibly change byte order only for CPU cores during kernel bootstrap.
|
| 1.10 |
| 19-Apr-2023 |
yamaguchi | Use enumeration for state of a child driver instead of flags and check its detaching by using sc->sc_child in virtio_softc
pointed out by riastradh, thanks. fixes PR/57357
|
| 1.9 |
| 31-Mar-2023 |
yamaguchi | Fix wrong variable names
This fixes build errors in virtio_mmio.c
|
| 1.8 |
| 31-Mar-2023 |
yamaguchi | Added flags to store status of attaching a virtio device
This prevents a panic on reboot after a virtio device had called virtio_child_attach_failed().
|
| 1.7 |
| 22-Oct-2021 |
yamaguchi | branches: 1.7.4; rename "setup_interrupts" to "alloc_interrupts" in virtio_mmio and virtio_acpi
This should fix build failure on evbarm.
|
| 1.6 |
| 05-Feb-2021 |
reinoud | Add virtio mmio probe function
|
| 1.5 |
| 28-Jan-2021 |
reinoud | Rewrite and streamline virtio device config read/write and explicitly cater for the Aarch64-eb bus problem with Qemu. This removes lots of bus_space `magic' and cleans up the code.
|
| 1.4 |
| 20-Jan-2021 |
reinoud | Add VirtIO PCI v1.0 attachments and fix the drivers affected.
The vioif, ld, scsi, viornd and viomb devices were adjusted when needed and tested both in legacy 0.9 and v1.0 attachments trough PCI on amd64, sparc64, aarch64 and aarch64-eb. ACPI/FDT attachments also tested on aarch64/aarch64-eb.
Known issues
* viomb on aarch64 works only with ACPI/FDT attachment but not with PCI attachment. PCI and ACPI/FDT attachment works on aarch64-eb.
* virtio on sparc64 attaches but is it not functioning though not a regression.
|
| 1.3 |
| 03-Oct-2020 |
jmcneill | branches: 1.3.2; MMIO configuration space is in guest byte order. AArch64 BE is special, as the guest starts in LE and we switch to BE after the kernel starts. For this case, we need to byte swap all config space accesses.
|
| 1.2 |
| 15-Jun-2018 |
jakllsch | branches: 1.2.2; Add cfprint_t virtiobusprint() and use it for virtio_mmio.
|
| 1.1 |
| 06-Jun-2018 |
jakllsch | Add Virtio MMIO transport.
Adapted in part from OpenBSD.
|
| 1.2.2.2 |
| 25-Jun-2018 |
pgoyette | Sync with HEAD
|
| 1.2.2.1 |
| 15-Jun-2018 |
pgoyette | file virtio_mmio.c was added on branch pgoyette-compat on 2018-06-25 07:26:03 +0000
|
| 1.3.2.1 |
| 03-Apr-2021 |
thorpej | Sync with HEAD.
|
| 1.7.4.3 |
| 09-Jul-2023 |
martin | Pull up following revision(s) (requested by rin in ticket #229):
sys/dev/pci/virtio_pci.c: revision 1.43 sys/dev/virtio/virtio_mmio.c: revision 1.11
virtio(4): Fix byte order of DMA data for armeb in the same manner as aarch64eb.
Fix comments to explain what is going on for {arm,aarch64}eb on QEMU. This is not due to QEMU bugs; it correctly configures everything for little-endian environment, and we forcibly change byte order only for CPU cores during kernel bootstrap.
|
| 1.7.4.2 |
| 03-Jun-2023 |
martin | Pull up following revision(s) (requested by yamaguchi in ticket #186):
sys/dev/pci/virtio_pci.c: revision 1.41 sys/dev/pci/virtio_pci.c: revision 1.42 sys/dev/virtio/virtio_mmio.c: revision 1.10 sys/dev/pci/virtiovar.h: revision 1.29 sys/dev/pci/virtio.c: revision 1.75 sys/dev/pci/virtio.c: revision 1.76 sys/dev/pci/virtio.c: revision 1.77 sys/dev/pci/virtio.c: revision 1.78
virtio@pci: Fix assertion on detach.
If the child never attached in the first place, it's OK for it to not have detached.
XXX This should not be a set of flags; this should be a state enumeration, because some flags make no sense, like FINISHED|FAILED.
XXX This should not be asserted separately in each bus; there should be a single place in virtio.c to assert this, uniformly in all buses.
PR kern/57357
Use enumeration for state of a child driver instead of flags and check its detaching by using sc->sc_child in virtio_softc pointed out by riastradh, thanks. fixes PR/57357
Fix not to allocate unnecessary descriptor fixes PR/57358
virtio(4): change variable name, nfc
virtio(4): change members of struct vring_desc_extra before free a slot
This prevents the following race condition. 1. Thread-A: calls virtio_dequeue_commit() and puts a slot into free descriptor chain in vq_free_slot() 2. Thread-B: calls virtio_enqueue_prep() and get the slot stored by Thread-A 3. Thread-B: calls virtio_enqueue_reserve() and changes desc_base and desc_free_idx for the slot 4. Thread-A: changes the same members updated by Thread-B reported by hannken, thanks.
|
| 1.7.4.1 |
| 13-May-2023 |
martin | Pull up following revision(s) (requested by yamaguchi in ticket #139):
sys/dev/pci/vioscsi.c: revision 1.31 sys/dev/pci/vio9p.c: revision 1.10 sys/dev/pci/vioscsi.c: revision 1.32 sys/dev/pci/vio9p.c: revision 1.11 sys/dev/pci/vioscsi.c: revision 1.33 sys/dev/pci/ld_virtio.c: revision 1.31 sys/dev/virtio/viocon.c: revision 1.6 sys/dev/pci/vioscsi.c: revision 1.34 sys/dev/pci/ld_virtio.c: revision 1.32 sys/dev/virtio/viocon.c: revision 1.7 sys/dev/virtio/viocon.c: revision 1.8 sys/dev/pci/vioscsi.c: revision 1.36 sys/dev/pci/virtioreg.h: revision 1.12 sys/dev/pci/viornd.c: revision 1.19 sys/dev/pci/virtio.c: revision 1.66 sys/dev/pci/virtio.c: revision 1.67 sys/dev/pci/virtio.c: revision 1.68 sys/dev/pci/if_vioif.c: revision 1.103 sys/dev/pci/virtio.c: revision 1.69 sys/dev/pci/if_vioif.c: revision 1.104 sys/dev/pci/virtio_pci.c: revision 1.40 sys/dev/virtio/virtio_mmio.c: revision 1.8 sys/dev/virtio/virtio_mmio.c: revision 1.9 sys/dev/pci/viomb.c: revision 1.14 sys/dev/pci/viomb.c: revision 1.15 sys/dev/pci/viomb.c: revision 1.17 sys/dev/pci/viornd.c: revision 1.20 sys/dev/pci/viornd.c: revision 1.21 sys/dev/pci/virtiovar.h: revision 1.25 sys/dev/pci/virtiovar.h: revision 1.26 sys/dev/pci/virtiovar.h: revision 1.27 sys/dev/pci/virtiovar.h: revision 1.28 sys/dev/pci/virtio.c: revision 1.70 sys/dev/pci/virtio.c: revision 1.71 sys/dev/pci/virtio.c: revision 1.72 sys/dev/pci/virtio.c: revision 1.73 sys/dev/pci/virtio.c: revision 1.74 sys/dev/pci/virtio_pci.c: revision 1.39
Set virtqueues in virtio_child_attach_finish
The number of virtqueue maybe change in a part of VirtIO devices (e.g. vioif(4)). And it is fixed after negotiation of features. So the configuration is moved into the function.
viocon(4): fix not to allocate unused virtqueue
viocon(4) allocates 4 virtqueues but it only uses 2 (0 and 1) queues.
Added functions to set interrupt handler and index into virtqueue
Added check of pointer for allocated memory before release of resource
Setup virtqueues after registering them to virtio_softc restore fetch of qsize.
Mark as MPSAFE.
virtio(4): Avoid name collision with global intrhand on sparc64.
Pacifies -Werror=shadow. No functional change intended.
Use PRIuBUSSIZE to print bus_size_t variables.
virtio(4): Fix sizing of virtqueue allocation. vq->vq_avail[0].ring is a zero-length array, and thus sizeof is zero; likewise vq->vq_used[0].ring. Use vq->vq_avail[0].ring[0] and vq->vq_used[0].ring[0] to fix this and restore the previous allocation sizing logic. XXX We shouldn't use zero-length arrays here -- they are asking for trouble like this, and C99 has a standard way to express what we're actually trying to get at it, flexible array members. PR kern/57304
virtio(4): Use flexible array members, not zero-length arrays. This enables the compiler to detect sizeof mistakes like PR kern/57304.
Use descriptor chain for free slots instead of vq_entry list Descriptors can be chained by themself. And descriptors added to avail ring or used ring are already chained. But it was not used for unused descriptors and another linked list structure named vq_entry was used.
The chain is also used for unused descriptors to make virtio(4) simpler.
Added flags to store status of attaching a virtio device
This prevents a panic on reboot after a virtio device had called virtio_child_attach_failed().
Fix wrong variable names This fixes build errors in virtio_mmio.c
|
| 1.14.2.1 |
| 02-Aug-2025 |
perseant | Sync with HEAD
|