Skip to content

Commit f5d289a

Browse files
updates
1 parent df553ac commit f5d289a

File tree

2 files changed

+22
-28
lines changed

2 files changed

+22
-28
lines changed

content/learning-paths/servers-and-cloud-computing/cca-device-attach/2-virtio.md

Lines changed: 17 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,18 @@ layout: learningpathall
88

99
## Overview
1010

11-
This section introduces VirtIO in the context of CCA Realms, and explains how it enables secure data exchange between a Realm and the untrusted external world.
11+
In this section, you will learn how VirtIO works in the context of Arm CCA Realms and how it enables efficient data exchange between a Realm and the untrusted external world.
1212

13-
A Realm must eventually use physical devices to interact with the external world. The easiest way to achieve this is by using VirtIO, which provides a fast, high-level emulation layer. This is considered the first level of device attach, where access is mediated by the hypervisor using paravirtualized interfaces.
13+
A Realm must eventually use physical devices to interact with the external world. The simplest way to do this is by using VirtIO, which provides a fast, paravirtualized interface. This is considered the first level of device attach, where access is mediated by the hypervisor using paravirtualized drivers.
1414

15-
More advanced device attach features can be enabled by hardware security features like PCIe-TDISP (**T**EE **D**evice **I**nterface **S**ecurity **P**rotocol) and PCIe-IDE (**I**ntegrity
16-
and **D**ata **E**ncryption), where the host OS assigns a physical device to a Realm. The Realm can then make security measurements on the physical device and include those in its attestation base.
15+
More advanced device attach features can be enabled by hardware security features such as PCIe-TDISP (TEE Device Interface Security Protocol) and PCIe-IDE (Integrity
16+
and Data Encryption). In those cases, the host OS assigns a physical device to a Realm, and the Realm can then measure the device and include those measurements in its attestation base.
1717

18-
### What is VirtIO?
18+
## What is VirtIO?
1919

20-
VirtIO provides an efficient, paravirtualized I/O interface between Realms and host devices. It is an abstraction layer for virtual devices in virtualized environments. VirtIO is a standardized, efficient interface for virtual devices in virtualized environments. It lets guest operating systems use paravirtualized drivers to communicate with host-provided devices, avoiding the overhead of fully emulating physical hardware.
20+
VirtIO is a standardized, paravirtualized interface for virtual devices in virtualized environments. It allows guest operating systems to use optimized drivers to communicate with host-provided devices, avoiding the overhead of fully emulating physical hardware.
2121

22-
Paravirtualized means that the guest OS is aware it’s running in a virtualized environment and can use optimized drivers (VirtIO) to communicate with virtual hardware. Emulating physical hardware devices (like NICs or disks) for VMs is slow and inefficient. VirtIO allows VMs to bypass full device emulation and use streamlined drivers.
22+
Paravirtualized means that the guest OS is aware it’s running in a virtualized environment. It allows guest operating systems to use optimized drivers to communicate with host-provided virtual hardware. Emulating physical hardware devices (like NICs or disks) for VMs is slow and inefficient. VirtIO allows VMs to bypass full device emulation and use streamlined drivers.
2323

2424
VirtIO is most commonly used with KVM/QEMU virtualization. Example drivers include:
2525

@@ -30,23 +30,21 @@ VirtIO is most commonly used with KVM/QEMU virtualization. Example drivers inclu
3030
- `virtio-rng`: random number source
3131
- `virtio-console`: simple console interface
3232

33-
### How does VirtIO work in VMs?
33+
## How does VirtIO work in VMs?
3434

35-
Here is an overview of how VirtIO works in virtual machines:
36-
37-
1. The host hypervisor (for example, QEMU/KVM) exposes VirtIO backend devices
38-
2. The guest OS loads VirtIO frontend drivers such as `virtio_net`or `virtio_blk` that communicate using the VirtIO protocol
39-
3. I/O uses shared memory `virtqueues`, which avoids full device emulation
40-
4. Devices are exposed over the PCI or MMIO bus to the guest
35+
1. The host hypervisor (for example, QEMU/KVM) exposes VirtIO backend devices.
36+
2. The guest OS loads VirtIO frontend drivers such as `virtio_net`or `virtio_blk` that communicate using the VirtIO protocol.
37+
3. I/O uses shared memory `virtqueues`, which avoids full device emulation.
38+
4. Devices are exposed over the PCI or MMIO bus to the guest.
4139

4240
For example, instead of emulating an Intel e1000 NIC, the host exposes a `virtio-net` interface. The guest OS uses the `virtio-net` driver to exchange packets through shared buffers.
4341

44-
### Key takeaways
42+
## Key takeaways
4543

46-
- VirtIO provides fast I/O through paravirtualization, not hardware emulation
47-
- Shared queues reduce overhead and context switching
48-
- It is the simplest and most common first step for device attach in Realms
44+
- VirtIO provides fast I/O through paravirtualization, not hardware emulation.
45+
- Shared queues reduce overhead and context switching.
46+
- It is the simplest and most common first step for device attach in Realms.
4947

5048
## Next steps
5149

52-
Learn how bounce buffers make this safe for Realms in [Bounce buffers](./bounce-buffers.md)
50+
In the next section, you'll learn how bounce buffers make VirtIO safe for Realms.

content/learning-paths/servers-and-cloud-computing/cca-device-attach/3.bounce_buffers.md

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ Bounce buffers are temporary memory areas used when a device cannot perform DMA
1212

1313
Common reasons for this include:
1414

15-
1. The original buffer is not physically contiguous
16-
2. The buffer resides in memory not accessible by the device
17-
3. The buffer does not meet the device alignment or boundary constraints
15+
- The original buffer is not physically contiguous
16+
- The buffer resides in memory not accessible by the device
17+
- The buffer does not meet the device alignment or boundary constraints
1818

1919
## Why use bounce buffers?
2020

@@ -64,13 +64,9 @@ This pattern preserves confidentiality and integrity of Realm data because:
6464

6565
A bounce buffer preserves the confidentiality of other Realm data because only the explicitly shared region is exposed. However, the transferred data is outside Realm protection once it leaves. Use protocol-level encryption such as TLS for network traffic to keep that data confidential in transit.
6666

67-
## Seeing a Realm's bounce buffers at work
68-
6967
## Next steps
7068

71-
Let's put this to work and check for ourselves that bounce buffers are used. The steps in this section will build on the Key Broker demo that was used in the [CCA
72-
Essentials learning path](/learning-paths/servers-and-cloud-computing/cca-essentials/example/),
73-
demonstrating an end-to-end attestation.
69+
In the next section, you'll test this by tracing SWIOTLB activity in [Exercise: observe bounce buffers in a Realm](./lab-observe-bounce-buffers.md).
70+
7471

75-
Prove it by tracing SWIOTLB activity in [Exercise: observe bounce buffers in a Realm](./lab-observe-bounce-buffers.md)
7672

0 commit comments

Comments
 (0)