[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] Community call: PCI Emulation - Future Direction (Wed, May 2nd, UTC 16:00-17:00 / BST 17:00-18:00) - Minutes



Hi all,

I attached the minutes of the call. Some people have already filled gaps and 
made corrections at 
https://docs.google.com/document/d/1RWylmNmBXOrgGLARj6_ynK50P7SZPl4LpnmhGaPglJw/edit

I attached a snapshot as PDF, as well as markdown

Regards
Lars

## Attendees

Alexey G
Stefano Stabellini
Paul Durrant
Lars Kurth
Roger Pau Monne
Chao Gao
Christopher Clark
Julien Grall
Daniel Smith
Tamas K Lengyel
Marek Marczykowski-Górecki
Rich Persaud

# Agenda

## Roger: ​ Q35 (chipset) HVM emulation, adding MCFG support to guests:

* Alexey: role of QEMU in PCI and MCFG emulation.
* Alexey: emulation of specific chipset registers: ​ _DRAM Controller Registers 
(D0:F0)_
PCIEXBAR, which controls the position of the MCFG.
* Alexey: size of the MMIO hole. Related to passthrough and how to fit BARs of 
PCI
devices below the 4GB boundary.
Alexey: Providing support for Q35 - Alexey posted a proposal
Roger, Paul: looked at the proposal. More or less OK with it but would like to 
discuss some
of the details to break the work into smaller portions. Some stuff could be 
deferred to later.


Roger: already replied.
Alexey: agrees
Alexey: have different features we need to support (besides bridges)
Alexey: can focus on support for reading the extended capabilities, which is my 
main task.
The task is to use the extended capabilities, while being able to use multiple 
emulators.
Need to choose a long-term solution alongside the short-term.
Described some possible ways forward in my email
Paul: went through the options - favouring option 2 (implement in Xen). Should 
not require
that much code
Alexey: depends on how deep the emulation goes. Could just implement north 
bridge
device. Or can implement ICA? and ICH line
Paul: Do we need to emulate south bridge at all?
Alexey: This may break the QEMU configuration. Would be hard to extend it 
further
Roger: looked at MCH - which is the only thing we would need to implement.
There was a discussion about size of some registers.
Roger: not clear why we need to emulate MCH registers initially.
**Next steps:**
* Agreed to go for a very simple implementation initially as a proof of concept
* Try to get together some patches with Q35 emulation in Xen and see how well it
works with QEMU
* Paul to send a patch to QEMU to cleanup/improve forwarding of PCI config space
accesses.
* **Roger to Alexey:** ​ would you be OK to send a more detailed design 
proposal to the
list?
* Alexey: agreed to continue discussion on mailing list

## Roger: ​ PVH/HVM guest pci-passthrough: using the internal vPCI 
infrastructure

One month ago sent initial patches to do pci-emulation withion Xen. Those at 
the moment
are only used by PVH Dom0. Cover the missing pieces for Dom0 and DomU
* Dom0: Full access for the config space - fine for Dom0, but not acceptable 
for DomU
* Dom0: support for SR-IOV express capability.
* DomU: Blacklist all the PCI capabilities we don't know about (not very hard 
to). At the
moment Xen only knows about MSI, MSIX and MSI headers.
* DomU: change config space logic to reject accesses to regions not handled by 
Xen.
* DomU: prevent DomU from relocating BARs.
**Next steps for Roger:**


* Dom0: support for SROIV express capability.
* Then looking into using this infrastructure for DomU.
* Want to synchronise with ARM
Julien: how do you hide a device from Dom0 when we do passthrough? How do you 
specify
what capability are accessible to Xen at boot time
Roger: there’s no way to currently hide a device from Dom0 (neither for PV or 
PVH). Dom
has access to all the capabilities. On PVH Xen could hide devices from Dom0 by 
preventing
Dom0 to access the configuration space of certain devices.
Julien: where would the reset code live then?
Christopher: would want to avoid Dom0 having access to the config space. The VM 
hosting
the toolstack will need to exercise control over access to the config space.
Roger: Another option would be to do this inside of Xen via a hypercall
Julien: moving reset from Linux into Xen would be quote complex.
Paul: Handling the reset and quirks within Xen seems perfectly reasonable
Christopher: handling the sequence to reset the device is quite complex
Stefano: Aside from who does what are there any specific requirements we need 
to pay
attention to for complex devices such as GPUs (such as IOMMU mapping)
Alexey: saw devices which do not like secondary bus reset (e.g. some NVIDIA 
GPUs) -
When we use the device and restart the domain, it will hang during boot.
Roger: know there are issues with some devices.
Stefano: Surprisingly high number of quirks. So the question is who maintains 
the quirks. If
we moved it to Xen, we may not get contributions to fix quirks. We would have 
to monitor
Linux and then move code, which increases the codsize
Roger: The code would be somewhere in any case, either Xen or Dom0 kernel: so 
why does
the codesize matter?
Daniel: the code size does not go away, but the question is how it can be 
isolated
Stefano: depending on where it is, the stability of the system is directly 
impacted
Alexey: need to provide device specific quirks to reset the device


Alexey: Have not looked at Linux quirks for resetting devices. Reset is 
mandatory (must be
performed in many cases such as domain restart, ...). Can move from secondary 
reset to
other reset methods and work around specific quirks.
Rich: Mentioned that Oracle posted some reset code recently for XenClient into 
Linux.
**Next steps:**
* Should we start a discussion on the mailing list on how to resolve the reset 
question.
ACTION: Rich to start the thread (the people participating in the reset 
discussion to
be CC’ed)

## Stefano/Julien: ​ARM guest pci-passthrough

Julien: the idea was not really speaking about PCI passthrough, but to follow 
what is
happening on ARM. Don’t have any specific things to talk about.
Stefano: The challenge on ARM has been a few incompatible implementations in 
the config
space. Initially we didn't know what to do. We then decided to start simple and 
implement the
standard compliant functions in the HV. And then cross the bridge of 
incompatible config
space registers when we come to it.
Julien: mostly looking on what is going on. Not currently working on PCI 
passthrough
Roger: asks whether suitable for ARM
Julien: in principle yes, but the different implementations (e.g. for timers). 
IOMMU may not
translate all the hardware (some commands may bypass). Not sure whether the same
challenge exists on x86.

## Rich: ​discuss the level of security support that will be asserted in 
SUPPORT.md for

## driver domains which contain untrusted PCI devices.

* Will Xen security support be different for SR-IOV devices? GPUs vs. NICs?
* There have been past discussions on this topic and a proposed 
PCI-iommu-bugs.txt
file to help Xen users and developers understand the risks [2][3][4] that may 
arise
from a hostile device and potentially buggy firmware. If we can document 
specific
risks, we can ask firmware developers to make specific improvements to improve 
the
security of PCI emulation.
* There is an active effort [4] underway to improve firmware security in 
servers (and
eventually desktops), including a reduction of attack surface due to SMM. There 
is
also work underway [5][6] to perform secure boot between individual PCI devices 
and
server motherboards. Some of these concepts may already be deployed in Azure.
* Several stakeholders will be attending or presenting at the PSEC [6] 
conference.
[1] Performance Isolation Exposure in Virtualized Platforms with PCI 
Passthrough I/O
Sharing, ​https://mediatum.ub.tum.de/doc/1187609/972322.pdf


[2] Securing Self-Virtualizing Ethernet Devices,
https://www.usenix.org/system/files/conference/usenixsecurity15/sec15-paper-smolyar.pdf
[3] Denial-of-Service Attacks on PCI Passthrough Devices,
[http://publications.andre-richter.com/richter2015denial.pdf](http://publications.andre-richter.com/richter2015denial.pdf)
[4] Open Compute Open System Firmware,
[http://www.opencompute.org/wiki/Open_System_Firmware](http://www.opencompute.org/wiki/Open_System_Firmware)
[5] Open Compute Security, ​http://www.opencompute.org/wiki/Security
[6] Firmware attestation: 
​https://www.platformsecuritysummit.com/prepare/#attestation
[0] Notes for upcoming PCI emulation call thread:
https://lists.xenproject.org/archives/html/xen-devel/2018-05/msg00091.html
Note: we have no stake-holders from the security team on the call, which makes 
this a
difficult discussion.
Rich: Andrew, Roger mentioned some problems related to security support in a 
previous
discussion <Lars: is there a link to it?>
Rich: Earlier in this meeting we mentioned blacklisting, but thought we were 
going to use
whitelisting?
Alexey: we know nothing about vendor specific capabilities for some devices 
which we may
to expose, so whitelisting is problematic
Roger: maybe add a list of extra capabilities.
Rich: roughly agrees. Maybe someone can write down what the plan is such that 
it can be
reviewed?
Alexey: there are a series of patches in this area to expose capabilities after 
the Q
patches (such as support for dynamic fields?).
Rich: once we can document precisely how this works we can revisit the security 
support
question
Roger: part of the problem was that some devices expose a configuration space 
on a Base
Address Register (e.g. for Windows drivers).
* Could whitelist some known devices
* Paul confirms that some devices did that - ACTION: Paul to write up a couple

## AOB

```
* Continue on the mailing list
* If needed try and arrange a all with a more narrow topic
```


Attachment: Community call_ PCI Emulation - Future Direction Notes QA.pdf
Description: Community call_ PCI Emulation - Future Direction Notes QA.pdf

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.