Follow up questions on LPC 2022: MC: Instant Detection of Virtual Devices

From: Ajay Kaher
Date: Mon Sep 19 2022 - 13:51:22 EST



Hi Bjorn, Alexander,

Thanks for attending and raising question during our talk on "Instant Detection of Virtual Devices".
Recoding link for reference: https://youtu.be/0mIO54oQ2zI?t=7151


Bjorn, I hope I understood your questions properly and replied. If some doubts please let us know.

Alexander, you wanted to know about following (please correct if we understood something wrong):
Why we still have ~300 read/write, even after having following progressive approaches:
- MMIO Direct Read
- Skip write to PCIe configs
- Pre-config of PCIe configs

[1] remaining writes:
As per PCI specification, needs to perform following operation to read BAR addr and size:
- Read current value from BAR
- Write all-ones to BAR
- Read new value from BAR
- Write original value back to BAR

Same applies to following configs as well:
- BARs
- I/O Base/Limit
- Memory Base/Limit
- Prefetchable Memory Base/Limit
- Prefetchable Base Limit/Upper 32 bits
- I/O Base/Limit Upper 16 bits

These write operations couldn't be eliminated with our progressive approaches and major of remaining writes are because of these operations.


[2] remaining reads:
Before initialize MMIO, guest performs very few PCI config reads over PIO. I guess these can't be eliminated.


--Ajay