"Michael S. Tsirkin" <[email protected]> writes:
> On Thu, Mar 21, 2013 at 06:59:34PM +1030, Rusty Russell wrote:
>> Differences:
>> 1) Uses 4 pci capabilities to demark common, irq, notify and dev-specific
>> areas.
>> 2) Guest sets queue size, using host-provided maximum.
>> 3) Guest sets queue alignment, rather than ABI-defined 4096.
>> 4) More than 32 feature bits (a lot more!).
...
>> +/* Constants for MSI-X */
>> +/* Use first vector for configuration changes, second and the rest for
>> + * virtqueues Thus, we need at least 2 vectors for MSI. */
>> +enum {
>> + VP_MSIX_CONFIG_VECTOR = 0,
>> + VP_MSIX_VQ_VECTOR = 1,
>> +};
>
> In the future, I have a plan to allow one vector only. To make this
> work without exits for data path VQ, we could make hypervisor set a bit
> in guest memory whenever it wants to signal a configuration change.
> Guest will execute a config write that will make the hypervisor clear
> this register.
>
> I guess this can wait, we are putting too stuff much into this
> new layout patchset already.
Yeah, trying not to boil the ocean... and I'm not sure that reinventing
MSI-X manually is a good idea anyway.
>> +static void vp_reset(struct virtio_device *vdev)
>> +{
>> + struct virtio_pci_device *vp_dev = to_vp_device(vdev);
>> + /* 0 status means a reset. */
>> + iowrite8(0, &vp_dev->common->device_status);
>> + /* Flush out the status write, and flush in device writes,
>> + * including MSi-X interrupts, if any. */
>
> MSI-X ?
Thanks, fixed.
Cheers,
Rusty.
_______________________________________________
Virtualization mailing list
[email protected]
https://lists.linuxfoundation.org/mailman/listinfo/virtualization