On 03/21/2013 09:11 AM, Michael S. Tsirkin wrote:
>>
>> It is really, really, nasty, not to mention slow.
>
> Almost everything we do is through DMA, except a single write
> to start transmit and a single read to clear interrupts. So all it means
> is we do 2 io writes or reads per packet instead of 1. Seems harmless
> enough. A bit slower than native but should be good enough for
> BIOS. Needs no resources at all. Why nasty? What's not to like?
>
Corner cases galore... including the statefulness and non-atomicity of
config space writes (MMCONFIG is obviously not an option here.) It
requires a minimum of four operations to do it safely.
>
> Thanks. Same place in latest 3.0:
> A PCI Express Endpoint must not depend on operating system allocation of
> I/O resources claimed through BAR(s).
> A PCI Express Endpoint must not generate I/O Requests.
> of course this only applies to express :)
>
And it does... but it has implications for the OS resource manager that
if Linux violates, we need to fix it. We should not fail a device in
generic code because an I/O BAR allocation fails. The device driver may
opt to fail the allocation.
(Note that having an I/O BAR is not *generating* an I/O request.)
-hpa
_______________________________________________
Virtualization mailing list
[email protected]
https://lists.linuxfoundation.org/mailman/listinfo/virtualization