History log of /src/sys/dev/pci/ld_virtio.c |
Revision | | Date | Author | Comments |
1.45 |
| 27-Aug-2025 |
isaki | Fix string length in T_GET_ID response.
|
1.44 |
| 05-Jul-2025 |
mlelstv | Ignore empty id_data and keep default string.
|
1.43 |
| 13-Apr-2025 |
rin | ld(4): Convert blkno argument for sc_dump() to daddr_t
PR kern/59153
(1) For backends that accept 64-bit block address, i.e., nvme(4), virtio(4), aac(4), iop(4), and mainbus(usermode/4), this should enable to dump beyond 2Gi blocks.
(2) sdmmc(4) backend allows to dump up to the last block.
(3) For other backends, block address is handled as `int`. Some of them may support blocks up to 4Gi, but I do not have enough time to examine datasheets. So, continue to reject >2Gi blocks as before.
XXX This is KABI change, and cannot be pulled up into netbsd-{10,9}.
XXX Compile-test only (for amd64/ALL) due to lack of large SSDs ;)
Thanks mlelstv@ for discussion and careful review!!
|
1.42 |
| 27-Feb-2025 |
jakllsch | Implement VIRTIO_BLK_F_TOPOLOGY support for physical sector size information
|
1.41 |
| 23-Feb-2025 |
mlelstv | Need to allocate DMA buffer.
|
1.40 |
| 22-Feb-2025 |
mlelstv | For fetching id data: - actually enter synchronous mode. - add and use polling support, which is necessary during attach. - exit synchronous mode on errors.
|
1.39 |
| 22-Feb-2025 |
mlelstv | Query device for id string.
|
1.38 |
| 22-Feb-2025 |
mlelstv | Remove module attachment hack, use more of standard boilerplate for modules.
|
1.37 |
| 20-Feb-2025 |
jakllsch | Remove trailing whitespace
|
1.36 |
| 06-Feb-2025 |
jakllsch | Add discard support to ld@virtio.
|
1.35 |
| 12-Jun-2024 |
riastradh | branches: 1.35.2; ld@virtio(4): Fix maximum size parameters.
- SEG_MAX is the maximum number of segments. - SIZE_MAX is the maximum number of bytes in a single segment.
The maximum transfer size is, therefore, SEG_MAX * SIZE_MAX.
=> Don't add two extra segments in the dmamap vr_payload for the header and status -- we already have a separate dmamap vr_cmdsts for that.
=> Don't recalculate payload dmamap parameters based on division by NBPG, just use the ones specified by the host.
=> Allow SIZE_MAX below MAXPHYS as long as SIZE_MAX*SEG_MAX >= MAXPHYS.
Even though ldattach clamps ld->sc_maxxfer to MAXPHYS, make sure to clamp it in ld_virtio_attach before ld_virtio_alloc_reqs since it determines the dmamap sizes and bounce buffer allocation and there's no sense in allocating those larger than ld will use anyway.
PR kern/58338
|
1.34 |
| 09-Mar-2024 |
isaki | Modify a confused expression in ld_virtio_attach(). VIRTIO_BLK_MIN_SEGMENTS should be the total number of non-data segments, so I rename it to VIRTIO_BLK_CTRL_SEGMENTS. PR kern/57981.
|
1.33 |
| 12-Feb-2024 |
isaki | Fix typo in error message.
|
1.32 |
| 23-Mar-2023 |
yamaguchi | Added functions to set interrupt handler and index into virtqueue
|
1.31 |
| 23-Mar-2023 |
yamaguchi | 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.
|
1.30 |
| 13-Apr-2022 |
uwe | branches: 1.30.4; virtio: use the new syntax for snprintb(3) format strings.
The old syntax is limited to 32 bits only (and has 1-based bit numbers which is rather incovenient too).
|
1.29 |
| 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.28 |
| 24-Oct-2020 |
skrll | branches: 1.28.2; Use BUS_DMA_WAITOK in ld_virtio_alloc_reqs which is called at attached time...
|
1.27 |
| 17-Jan-2019 |
hannken | Use cv_broadcast() on "sc_sync_wait" to prevent deadlock when more than one thread try to "DIOCCACHESYNC" at the same time.
|
1.26 |
| 23-Nov-2018 |
jmcneill | Use MSIX when available
|
1.25 |
| 12-Jul-2018 |
jakllsch | revert previous, unintended, commit
|
1.24 |
| 12-Jul-2018 |
jakllsch | <sys/pmc.h> is gone; dont
|
1.23 |
| 21-Jun-2018 |
jakllsch | branches: 1.23.2; destroy 'sc_sync_wait' condvar and mutex upon detach
|
1.22 |
| 10-Jun-2018 |
jakllsch | remove irrelevant pci(9) #includes from virtio child drivers
|
1.21 |
| 10-Jun-2018 |
jakllsch | The virtio block device capacity config item is expressed always in request protocol sector units of 512 bytes.
Also, add and use a symbolic constant to refer to request protocol sector units.
|
1.20 |
| 07-Jun-2018 |
jakllsch | Make ld_virtio aware of a possible device-side write cache.
|
1.19 |
| 03-Jun-2018 |
jakllsch | unload payload dma map upon command completion
|
1.18 |
| 03-Jun-2018 |
jakllsch | add feature/register definitions from virtio-v1.0-cs04
|
1.17 |
| 03-Jun-2018 |
jakllsch | remove trailing whitespace
|
1.16 |
| 09-Aug-2017 |
mlelstv | branches: 1.16.2; While ld(4) is MP safe, many backends are not.
Add a flag for backends that are MP safe. Take KERNEL_LOCK when calling into a backend that doesn't have the flag set. Do the same for the discard routine.
Fixes PR 52462.
|
1.15 |
| 25-Mar-2017 |
jdolecek | branches: 1.15.6; reorganize the attachment process for virtio child devices, so that more common code is shared among the drivers, and it's possible for the drivers to be correctly dynamically loaded; forbid direct access to struct virtio_softc from the child driver code
|
1.14 |
| 27-Feb-2017 |
jdolecek | refactor the ld(4) DIOCCACHESYNC hook into general ioctl hook, so that attachments would be able to implement arbitrary other ioctls
|
1.13 |
| 30-Nov-2016 |
christos | branches: 1.13.2; Don't call virtio_enqueue_abort when virtio_enqueue_reserve fails. Pointed out by uwe@
|
1.12 |
| 27-Sep-2016 |
pgoyette | Modularize the ld driver and all of its attachments. Ensure that all parents are capable of rescan (or otherwise provide a means of attaching children post-initialization).
|
1.11 |
| 16-Sep-2016 |
jdolecek | modify ldattach() to have default strategy as a parameter
|
1.10 |
| 07-Jul-2016 |
msaitoh | branches: 1.10.2; KNF. Remove extra spaces. No functional change.
|
1.9 |
| 27-Oct-2015 |
christos | - Print the negotiated feature bits - Define a constant for the minimum number of segments and use that. - Remove unused sc_lock - Use single variables instead of arrays of 1 element - To the transfer size and segment size negotiation more correctly - Make vr_bp NULL when unused. - Add missing abort calls
|
1.8 |
| 05-May-2015 |
ozaki-r | Use NULL for initialization of sc_config_change
|
1.7 |
| 13-Apr-2015 |
riastradh | Convert sys/dev to use <sys/rndsource.h>.
|
1.6 |
| 22-Jul-2014 |
ozaki-r | branches: 1.6.4; Introduce VIRTIO_F_PCI_INTR_MPSAFE for virtio
It is set by a child driver, e.g., if_vioif. If set, virtio sets PCI_INTR_MPSAFE for pci_intr_establish.
|
1.5 |
| 02-Feb-2012 |
tls | branches: 1.5.6; 1.5.20; Entropy-pool implementation move and cleanup.
1) Move core entropy-pool code and source/sink/sample management code to sys/kern from sys/dev.
2) Remove use of NRND as test for presence of entropy-pool code throughout source tree.
3) Remove use of RND_ENABLED in device drivers as microoptimization to avoid expensive operations on disabled entropy sources; make the rnd_add calls do this directly so all callers benefit.
4) Fix bug in recent rnd_add_data()/rnd_add_uint32() changes that might have lead to slight entropy overestimation for some sources.
5) Add new source types for environmental sensors, power sensors, VM system events, and skew between clocks, with a sample implementation for each.
ok releng to go in before the branch due to the difficulty of later pullup (widespread #ifdef removal and moved files). Tested with release builds on amd64 and evbarm and live testing on amd64.
|
1.4 |
| 03-Dec-2011 |
hannken | branches: 1.4.2; 1.4.4; Don't try to set ld->sc_maxxfer below MAXPHYS. At least genfs_io assumes 'ld->sc_maxxfer == MAXPHYS'.
|
1.3 |
| 23-Nov-2011 |
hannken | According to "Virtio PCI Card Specification v0.9.2 DRAFT" there is no feature named VIRTIO_BLK_F_SECTOR_MAX so remove it. Linux seems to use this feature bit as VIRTIO_BLK_F_TOPOLOGY.
Use VIRTIO_BLK_F_BLK_SIZE * VIRTIO_BLK_F_SEG_MAX as the drivers maxxfer and reorder so sc_secsize gets set before use.
As maxxfer may not be a multiple of page size add one more segment to the dma maps.
Tested on Linux 3.1.1 host by Guillaume Lasmayous.
|
1.2 |
| 02-Nov-2011 |
hannken | branches: 1.2.2; Make sure we allocate enough segments for the request dma maps.
|
1.1 |
| 30-Oct-2011 |
hannken | Import of the virtio driver written by MINOURA Makoto <minoura@netbsd.org> with minor changes to make it compile an run on -current. This driver speeds up disk and network access in virtual environments like KVM.
Enabled on i386 and amd64. Tested with a CentOS 5.7 x86_64 host.
See http://ozlabs.org/~rusty/virtio-spec/virtio.pdf for the specification.
|
1.2.2.1 |
| 17-Apr-2012 |
yamt | sync with head
|
1.4.4.2 |
| 25-Jan-2012 |
riz | Pull up following revision(s) (requested by hannken in ticket #1715): - Be robust against an invalid timer period value. sys/dev/ic/hpetreg.h Rev. 1.4 sys/dev/ic/hpet.c Rev. 1.8
- Fix wrong definition of LAPIC_LEVEL_ASSERT / _MASK sys/arch/x86/include/i82489reg.h Rev. 1.11
- Add virtio driver - speed up disk and network access in virtual environments sys/arch/i386/conf/GENERIC Rev. 1.1055 sys/arch/i386/conf/ALL Rev. 1.325 sys/arch/amd64/conf/GENERIC Rev. 1.338 sys/dev/pci/files.pci Rev. 1.350 sys/dev/pci/if_vioif.c Rev. 0-1.2 sys/dev/pci/ld_virtio.c Rev. 0-1.4 sys/dev/pci/viomb.c Rev. 0-1.1 sys/dev/pci/virtio.c Rev. 0-1.3 sys/dev/pci/virtioreg.h Rev. 0-1.1 sys/dev/pci/virtiovar.h Rev. 0-1.1 distrib/sets/lists/man/mi Rev. 1.1352 and 1.1358 share/man/man4/Makefile Rev. 1.573 and 1.575 share/man/man4/ld.4 Rev. 1.19 share/man/man4/virtio.4 Rev. 0-1.4 share/man/man4/vioif.4 Rev. 0-1.2 share/man/man4/viomb.4 Rev. 0-1.2
Allow NetBSD to run unmodified under Linux/kvm.
|
1.4.4.1 |
| 03-Dec-2011 |
riz | file ld_virtio.c was added on branch netbsd-5 on 2012-01-25 21:18:15 +0000
|
1.4.2.1 |
| 18-Feb-2012 |
mrg | merge to -current.
|
1.5.20.1 |
| 10-Aug-2014 |
tls | Rebase.
|
1.5.6.2 |
| 03-Dec-2017 |
jdolecek | update from HEAD
|
1.5.6.1 |
| 20-Aug-2014 |
tls | Rebase to HEAD as of a few days ago.
|
1.6.4.6 |
| 28-Aug-2017 |
skrll | Sync with HEAD
|
1.6.4.5 |
| 05-Dec-2016 |
skrll | Sync with HEAD
|
1.6.4.4 |
| 05-Oct-2016 |
skrll | Sync with HEAD
|
1.6.4.3 |
| 09-Jul-2016 |
skrll | Sync with HEAD
|
1.6.4.2 |
| 27-Dec-2015 |
skrll | Sync with HEAD (as of 26th Dec)
|
1.6.4.1 |
| 06-Jun-2015 |
skrll | Sync with HEAD
|
1.10.2.4 |
| 26-Apr-2017 |
pgoyette | Sync with HEAD
|
1.10.2.3 |
| 20-Mar-2017 |
pgoyette | Sync with HEAD
|
1.10.2.2 |
| 07-Jan-2017 |
pgoyette | Sync with HEAD. (Note that most of these changes are simply $NetBSD$ tag issues.)
|
1.10.2.1 |
| 04-Nov-2016 |
pgoyette | Sync with HEAD
|
1.13.2.1 |
| 21-Apr-2017 |
bouyer | Sync with HEAD
|
1.15.6.2 |
| 22-Jun-2018 |
martin | Pull up following revision(s) (requested by jakllsch in ticket #888):
sys/dev/pci/ld_virtio.c: revision 1.19-1.21,1.23
remove trailing whitespace
add feature/register definitions from virtio-v1.0-cs04
unload payload dma map upon command completion
Make ld_virtio aware of a possible device-side write cache.
The virtio block device capacity config item is expressed always in request protocol sector units of 512 bytes.
Also, add and use a symbolic constant to refer to request protocol sector units.
destroy 'sc_sync_wait' condvar and mutex upon detach
|
1.15.6.1 |
| 01-Sep-2017 |
martin | Pull up following revision(s) (requested by mlelstv in ticket #261): sys/dev/sdmmc/ld_sdmmc.c: revision 1.32 sys/dev/sdmmc/ld_sdmmc.c: revision 1.33 sys/dev/sdmmc/ld_sdmmc.c: revision 1.34 sys/dev/sdmmc/sdmmc_mem.c: revision 1.62 sys/dev/i2o/ld_iop.c: revision 1.39 sys/dev/ld.c: revision 1.102 sys/dev/ld.c: revision 1.103 sys/dev/dksubr.c: revision 1.98 sys/dev/dksubr.c: revision 1.99 sys/dev/sdmmc/sdmmcvar.h: revision 1.29 sys/dev/ic/ld_nvme.c: revision 1.17 sys/dev/ldvar.h: revision 1.31 sys/dev/ldvar.h: revision 1.32 sys/dev/ic/ld_cac.c: revision 1.31 sys/dev/pci/ld_virtio.c: revision 1.16 While ld(4) is MP safe, many backends are not. Add a flag for backends that are MP safe. Take KERNEL_LOCK when calling into a backend that doesn't have the flag set. Do the same for the discard routine. Fixes PR 52462. Defer sdmmc discard operations to the sdmmc task queue. Fixes a panic introduced by ld.c r1.102. validate length for discard operation and split operation when byte length doesn't fit into 'int'. make the sc_discard interface for the ld backend asynchronous and signal completion through new callback lddiscardend. Use a standard struct buf to pass disk address and range instead of two off_t values. make lddiscard synchronous again. This is a requirement of the current ffs discard code. Initialize error also in the case where len=0, which just succeeds. while here, assert that the len is indeed non-negative. this is already confirmed by sys_fdiscard, but let's be sure. reported by: GCC, but with different compile flags
|
1.16.2.4 |
| 18-Jan-2019 |
pgoyette | Synch with HEAD
|
1.16.2.3 |
| 26-Nov-2018 |
pgoyette | Sync with HEAD, resolve a couple of conflicts
|
1.16.2.2 |
| 28-Jul-2018 |
pgoyette | Sync with HEAD
|
1.16.2.1 |
| 25-Jun-2018 |
pgoyette | Sync with HEAD
|
1.23.2.1 |
| 10-Jun-2019 |
christos | Sync with HEAD
|
1.28.2.1 |
| 03-Apr-2021 |
thorpej | Sync with HEAD.
|
1.30.4.2 |
| 02-Oct-2024 |
martin | Pull up following revision(s) (requested by rin in ticket #914):
sys/dev/pci/virtio_pci.c: revision 1.50 sys/dev/pci/virtio_pci.c: revision 1.51 sys/dev/pci/virtio_pci.c: revision 1.52 sys/dev/pci/virtio_pci.c: revision 1.53 sys/dev/pci/virtio_pci.c: revision 1.54 sys/dev/pci/vioscsi.c: revision 1.35 sys/dev/pci/ld_virtio.c: revision 1.33 sys/dev/pci/ld_virtio.c: revision 1.34 sys/dev/virtio/viocon.c: revision 1.9 sys/dev/pci/ld_virtio.c: revision 1.35 sys/dev/pci/virtio.c: revision 1.80 sys/dev/pci/virtio.c: revision 1.81 sys/dev/pci/virtio.c: revision 1.82 sys/dev/pci/virtio_pci.c: revision 1.45 sys/dev/pci/virtio_pci.c: revision 1.46 sys/dev/pci/virtio_pci.c: revision 1.47 sys/dev/pci/virtio_pci.c: revision 1.48 sys/dev/pci/virtio_pci.c: revision 1.49 sys/dev/pci/virtio.c: revision 1.79
A single SCSI request may require multiple slots in the virtio queue but the queue isn't sized for the theoretical maximum. So just use XS_BUSY to pace the scsipi layer.
viocon(4): Show error in assertion failure.
virtio_read_device_config_le_[24]: Fix for {aarch64,arm}eb Stop byte-swapping for big-endian aarch64 and arm to fix corrupted read for, e.g., sc_taglen for vio9p(4).
As described as comments in virtio_pci.c, big-endian aarch64 and armv7 (armeb) are somewhat special. At the moment, all supported virtual/real machines are configured as little-endian, and only CPU cores are switched to big-endian mode during early boot stage.
Most peripheral buses for armeb are LSB as a result, and their default bus_space(9) functions swap byte-order. Therefore, PIOed data from memory-mapped devices, as well as pci(4) ones, are actually LSB, but observed as MSB for armeb.
Therefore, we should not swap byte-order further in virtio_read_device_config_le_[24] on armeb.
See virtio_pci.c and sys/dev/fdt/virtio_mmio_fdt.c also. fix spelling mistakes, mainly in comments and log messages.
Split KASSERT(A && B) into KASSERT(A); KASSERT(B).
Fix typo in error message.
Modify a confused expression in ld_virtio_attach().
VIRTIO_BLK_MIN_SEGMENTS should be the total number of non-data segments, so I rename it to VIRTIO_BLK_CTRL_SEGMENTS. PR kern/57981.
ld@virtio(4): Fix maximum size parameters. - SEG_MAX is the maximum number of segments. - SIZE_MAX is the maximum number of bytes in a single segment. The maximum transfer size is, therefore, SEG_MAX * SIZE_MAX. => Don't add two extra segments in the dmamap vr_payload for the header and status -- we already have a separate dmamap vr_cmdsts for that. => Don't recalculate payload dmamap parameters based on division by NBPG, just use the ones specified by the host. => Allow SIZE_MAX below MAXPHYS as long as SIZE_MAX*SEG_MAX >= MAXPHYS. Even though ldattach clamps ld->sc_maxxfer to MAXPHYS, make sure to clamp it in ld_virtio_attach before ld_virtio_alloc_reqs since it determines the dmamap sizes and bounce buffer allocation and there's no sense in allocating those larger than ld will use anyway. PR kern/58338
virtio_pci.c: Nix trailing whitespace.
virtio@pci: Unmap the BARs we actually mapped on >=1.0 detach. PR kern/58335
virtio@pci: Nix useless sc_mapped_iosize. This appears to have been a mistaken attempt to pass the subregion length through to bus_space_unmap, which doesn't make any sense -- bus_space_subregion does not allocate anything and the resulting handle must not be passed to bus_space_unmap.
Once we pass the size that was actually returned by pci_mapreg_map to bus_space_unmap, which matches the size passed internally by pci_mapreg_map to bus_space_map, sc_mapped_iosize is no longer used and can be flushed. Prompted by PR kern/58335.
virtio@pci: Don't detach on shutdown. The virtio bus does not keep state in memory that needs to flushed to persistent storage. Typically DVF_DETACH_SHUTDOWN is only needed by, e.g., disk drivers to flush disk caches (although really, vfs sync should do that anyway, so maybe we should just nix the option altogether). Prompted by PR kern/58335.
virtio@pci: Zero sc_bars_iosize[i] on unmap. No functional change intended, but this makes the code less brittle. Prompted by PR kern/58335.
virtio_pci.c: Sort includes. No functional change intended.
virtio_pci.c: Omit needless blank lines and commented code. No functional change intended.
virtio_pci.c: Sprinkle KNF. - No parameter names in function prototypes. - Fix indentation. - Break overlong lines. - Blank line between declarations and rest of block. virtio_pci.c: Sprinkle const. No functional change intended.
virtio_pci.c: Use container_of, not cast. virtio(4): Assert child attach finished before we allow queueing. Should help catch mistakes like: PR kern/58555: Kernel panic during boot when using viocon with PCIe
|
1.30.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.35.2.1 |
| 02-Aug-2025 |
perseant | Sync with HEAD
|