[PATCH RFC] virtio-pci: new config layout: using memory BAR

Anthony Liguori
Wed, 05 Jun 2013 20:45:09 -0000

"Michael S. Tsirkin" <mst at redhat.com> writes:

> On Wed, Jun 05, 2013 at 10:43:17PM +0300, Michael S. Tsirkin wrote:
>> On Wed, Jun 05, 2013 at 01:57:16PM -0500, Anthony Liguori wrote:
>> > "Michael S. Tsirkin" <mst at redhat.com> writes:
>> >
>> > > On Wed, Jun 05, 2013 at 10:46:15AM -0500, Anthony Liguori
wrote:
>> > >> Look, it's very simple.
>> > > We only need to do it if we do a change that breaks guests.
>> > >
>> > > Please find a guest that is broken by the patches. You
won't find any.
>> >
>> > I think the problem in this whole discussion is that we're
talking past
>> > each other.
>> >
>> > Here is my understanding:
>> >
>> > 1) PCI-e says that you must be able to disable IO bars and still
have a
>> > functioning device.
>> >
>> > 2) It says (1) because you must size IO bars to 4096 which means
that
>> > practically speaking, once you enable a dozen or so PIO bars, you
run
>> > out of PIO space (16 * 4k == 64k and not all that space can be
used).
>>
>>
>> Let me add 3 other issues which I mentioned and you seem to miss:
>>
>> 3) architectures which don't have fast access to IO ports, exist
>>    virtio does not work there ATM
>>
>> 4) setups with many PCI bridges exist and have the same issue
>>    as PCI express. virtio does not work there ATM
>>
>> 5) On x86, even with nested page tables, firmware only decodes
>>    the page address on an invalid PTE, not the data. You need to
>>    emulate the guest to get at the data. Without
>>    nested page tables, we have to do page table walk and emulate
>>    to get both address and data. Since this is how MMIO
>>    is implemented in kvm on x86, MMIO is much slower than PIO
>>    (with nested page tables by a factor of >2, did not test
without).
>
> Oh I forgot:
>
> 6) access to MMIO BARs is painful in the BIOS environment
>    so BIOS would typically need to enable IO for the boot device.

But if you want to boot from the 16th device, the BIOS needs to solve
this problem anyway.

Regards,

Anthony Liguori