| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
bus_space_read/write_8 do not exist there, use two 32bit operations.
|
|
|
|
|
| |
virtio 1.0 for virtio_mmio it not yet implemented, but 0.9 devices
continue to work.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add a sc_driver_features field that is automatically used by
virtio_negotiate_features() and during reinit.
Make virtio_negotiate_features() return an error code. Virtio 1.0 has a
special status bit for feature negotiation that means that negotiation
can fail. Make virtio_negotiate_features() return an error code instead
of the features.
Make virtio_reinit_start() automatically call
virtio_negotiate_features().
Add a convenience function virtio_has_feature() to make checking bits
easier.
Add an error check in viomb for virtio_negotiate_features because it has
some feature bits that may cause negotiation to fail. More error
checking in the child drivers is still missing.
ok mlarkin@
|
|
|
|
| |
ok mlarkin@
|
|
|
|
|
|
| |
In virtio_pci 1.0, different parts of the register set may be located in
different BARs. Use subregions to make the access independent of the
virtio version.
|
|
|
|
|
|
|
|
|
|
|
| |
virtio 1.0 supports an arbitrary number of feature bits. However, so far
no more than 64 are used (compared to 32 in virtio 0.9). Adjust data
types to support 64 feature bits.
Later, we may want to use bitmaps and setbit(), ... to support even more
feature bits.
ok mlarkin@
|
|
|
|
|
|
|
|
|
| |
Make it take an address instead of a PFN.
Pass the virtqueue pointer. In virtio 1.0, more information has to be
configured in the device. Also call virtio_setup_queue() after the
information has been filled in.
ok mlarkin@
|
| |
|
|
|
|
| |
Also add some virtio 1.0 status and feature bits
|
|
|
|
| |
And fix some comments
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
While we don't have ACPI in vmm(4), we need a simple way to shutdown
and reboot VMs gracefully but the device also allows to add more
direct communications between host and guest later.
OK mlarkin@
|
|
|
|
|
|
|
| |
For virtio devices, ignore the black/white-listing depending on the PCI
bridge. This enables MSI-X with qemu's old "82441FX" pci-bridge.
Suggested by kettenis@
|
|
|
|
|
|
|
|
|
|
| |
This increases performance for interrupt heavy loads.
While suspend/resume support for MSI-X is missing, this is also missing for
virtio. So no new issue there.
Currently, qemu's old "82441FX" pci-bridge is still blacklisted for MSI. But
MSI-X is used if qemu is started with "-M q35".
|
|
|
|
|
|
|
|
| |
For MSI-X (and also possibly for other transports), the interrupt
handler must do different things. Move it out of virtio.c and into
virtio_pci.
ARM part tested by patrick@
|
|
|
|
|
| |
becomes simply
virtio2 at pci0 dev 3 function 0 "Qumranet Virtio Network" rev 0x00
|
|
|
|
|
| |
The ISR read is relatively expensive because it causes a vmexit. Grab the
kernel lock only after it is done.
|
|
|
|
| |
No object file changes besides line numbers in KASSERTs
|
|
|
|
|
|
|
| |
have any direct symbols used. Tested for indirect use by compiling
amd64/i386/sparc64 kernels.
ok tedu@ deraadt@
|
|
|
|
| |
ok sf@
|
| |
|
|
|
|
|
|
|
|
|
| |
For transports supporting several interrupts, this function needs to
setup per-queue interrupts in addition of setting the queue address.
No logic change.
OK jasper@
|
|
|
|
|
|
| |
and is really a transport-specific thing.
OK jasper@
|
|
|
|
| |
ok guenther millert kettenis
|
|
|
|
| |
ok sf@
|
|
|
|
| |
ok mikeb@ sf@
|
|
attach as scsi disks). These are paravirtualized devices offered by some
hypervisors like kvm and virtualbox.
The virtio transport driver has the pci specific parts separated out. This
will make it easier to add support for mmio (e.g. for ARM) later.
OK mikeb
OK jasper
"commit what you have" deraadt
|