53 lines
1.4 KiB
YAML
53 lines
1.4 KiB
YAML
# SPDX-License-Identifier: GPL-2.0-only
|
|
%YAML 1.2
|
|
---
|
|
title: pKVM pvIOMMU
|
|
|
|
maintainers:
|
|
- Mostafa Saleh <[email protected]>
|
|
|
|
description: |+
|
|
pvIOMMU is a paravirtual IOMMU implemented through arm64 hypercalls (HVC).
|
|
What distinguishes it from other paravirtual IOMMUs (virtio-iommu)
|
|
is that it has very simple transport which makes it easy for
|
|
hypervisors with a small TCB as in confidential computing to implement
|
|
it without complexity and with lower performance overhead.
|
|
pvIOMMU was initially developed for protected KVM (pKVM), but it has no
|
|
KVM specific interface, so it can be implemented by other hypervisors
|
|
also.
|
|
|
|
properties:
|
|
$nodename:
|
|
pattern: "^iommu@[0-9a-f]*"
|
|
compatible:
|
|
const: pkvm,pviommu
|
|
|
|
id:
|
|
maxItems: 1
|
|
|
|
'#iommu-cells':
|
|
enum: [ 1, 2 ]
|
|
description: |
|
|
See Documentation/devicetree/bindings/iommu/iommu.txt for details. With a
|
|
value of 1, each IOMMU specifier represents a distinct stream ID emitted
|
|
by that device into the relevant SMMU.
|
|
|
|
pvIOMMU would assume each device belongs to a different group, to describe
|
|
iommu groups, it is optionally passed in the second field of "iommus", where
|
|
devices having the same ID are part of the same group.
|
|
|
|
required:
|
|
- compatible
|
|
- id
|
|
- '#iommu-cells'
|
|
|
|
additionalProperties: false
|
|
|
|
examples:
|
|
- |+
|
|
iommu@55 {
|
|
compatible = "pkvm,pviommu";
|
|
id = <0x55>;
|
|
#iommu-cells = <1>;
|
|
};
|