1427 lines
32 KiB
Plaintext
1427 lines
32 KiB
Plaintext
{
|
|
"type": "excalidraw",
|
|
"version": 2,
|
|
"source": "techviz-harness",
|
|
"elements": [
|
|
{
|
|
"id": "edge-cpu-runs-guest",
|
|
"type": "arrow",
|
|
"x": 400.0,
|
|
"y": 550.0,
|
|
"width": 0.0,
|
|
"height": 96.0,
|
|
"angle": 0,
|
|
"strokeColor": "#1e1e1e",
|
|
"backgroundColor": "transparent",
|
|
"fillStyle": "solid",
|
|
"strokeWidth": 2,
|
|
"strokeStyle": "solid",
|
|
"roughness": 1,
|
|
"opacity": 100,
|
|
"groupIds": [],
|
|
"frameId": null,
|
|
"index": null,
|
|
"roundness": null,
|
|
"seed": 845357759,
|
|
"version": 1,
|
|
"versionNonce": 1612344110,
|
|
"isDeleted": false,
|
|
"boundElements": [],
|
|
"updated": 0,
|
|
"link": null,
|
|
"locked": false,
|
|
"points": [
|
|
[
|
|
0.0,
|
|
0.0
|
|
],
|
|
[
|
|
0.0,
|
|
48.0
|
|
],
|
|
[
|
|
0.0,
|
|
48.0
|
|
],
|
|
[
|
|
0.0,
|
|
96.0
|
|
]
|
|
],
|
|
"lastCommittedPoint": null,
|
|
"startBinding": {
|
|
"elementId": "node-physical-cpu",
|
|
"focus": 0,
|
|
"gap": 4
|
|
},
|
|
"endBinding": {
|
|
"elementId": "node-guest-code",
|
|
"focus": 0,
|
|
"gap": 4
|
|
},
|
|
"startArrowhead": null,
|
|
"endArrowhead": "arrow",
|
|
"elbowed": true
|
|
},
|
|
{
|
|
"id": "edge-label-cpu-runs-guest",
|
|
"type": "text",
|
|
"x": 376.0,
|
|
"y": 586.0,
|
|
"width": 96,
|
|
"height": 24,
|
|
"angle": 0,
|
|
"strokeColor": "#1e1e1e",
|
|
"backgroundColor": "transparent",
|
|
"fillStyle": "solid",
|
|
"strokeWidth": 1,
|
|
"strokeStyle": "solid",
|
|
"roughness": 0,
|
|
"opacity": 100,
|
|
"groupIds": [],
|
|
"frameId": null,
|
|
"index": null,
|
|
"roundness": {
|
|
"type": 3
|
|
},
|
|
"seed": 536766967,
|
|
"version": 1,
|
|
"versionNonce": 1971718843,
|
|
"isDeleted": false,
|
|
"boundElements": [],
|
|
"updated": 0,
|
|
"link": null,
|
|
"locked": false,
|
|
"fontSize": 13,
|
|
"fontFamily": 5,
|
|
"text": "VMX non-root",
|
|
"textAlign": "center",
|
|
"verticalAlign": "middle",
|
|
"containerId": null,
|
|
"originalText": "VMX non-root",
|
|
"autoResize": true,
|
|
"lineHeight": 1.25
|
|
},
|
|
{
|
|
"id": "edge-device-dma",
|
|
"type": "arrow",
|
|
"x": 610.0,
|
|
"y": 533.0,
|
|
"width": 22.5,
|
|
"height": 113.0,
|
|
"angle": 0,
|
|
"strokeColor": "#1e1e1e",
|
|
"backgroundColor": "transparent",
|
|
"fillStyle": "solid",
|
|
"strokeWidth": 2,
|
|
"strokeStyle": "solid",
|
|
"roughness": 1,
|
|
"opacity": 100,
|
|
"groupIds": [],
|
|
"frameId": null,
|
|
"index": null,
|
|
"roundness": null,
|
|
"seed": 1475632954,
|
|
"version": 1,
|
|
"versionNonce": 99932222,
|
|
"isDeleted": false,
|
|
"boundElements": [],
|
|
"updated": 0,
|
|
"link": null,
|
|
"locked": false,
|
|
"points": [
|
|
[
|
|
22.5,
|
|
0.0
|
|
],
|
|
[
|
|
22.5,
|
|
56.5
|
|
],
|
|
[
|
|
0.0,
|
|
56.5
|
|
],
|
|
[
|
|
0.0,
|
|
113.0
|
|
]
|
|
],
|
|
"lastCommittedPoint": null,
|
|
"startBinding": {
|
|
"elementId": "node-pci-device",
|
|
"focus": 0,
|
|
"gap": 4
|
|
},
|
|
"endBinding": {
|
|
"elementId": "node-iommu",
|
|
"focus": 0,
|
|
"gap": 4
|
|
},
|
|
"startArrowhead": null,
|
|
"endArrowhead": "arrow",
|
|
"elbowed": true
|
|
},
|
|
{
|
|
"id": "edge-label-device-dma",
|
|
"type": "text",
|
|
"x": 576.25,
|
|
"y": 549.5,
|
|
"width": 90,
|
|
"height": 24,
|
|
"angle": 0,
|
|
"strokeColor": "#1e1e1e",
|
|
"backgroundColor": "transparent",
|
|
"fillStyle": "solid",
|
|
"strokeWidth": 1,
|
|
"strokeStyle": "solid",
|
|
"roughness": 0,
|
|
"opacity": 100,
|
|
"groupIds": [],
|
|
"frameId": null,
|
|
"index": null,
|
|
"roundness": {
|
|
"type": 3
|
|
},
|
|
"seed": 83407640,
|
|
"version": 1,
|
|
"versionNonce": 1095275041,
|
|
"isDeleted": false,
|
|
"boundElements": [],
|
|
"updated": 0,
|
|
"link": null,
|
|
"locked": false,
|
|
"fontSize": 13,
|
|
"fontFamily": 5,
|
|
"text": "DMA",
|
|
"textAlign": "center",
|
|
"verticalAlign": "middle",
|
|
"containerId": null,
|
|
"originalText": "DMA",
|
|
"autoResize": true,
|
|
"lineHeight": 1.25
|
|
},
|
|
{
|
|
"id": "edge-kvm-vm-entry",
|
|
"type": "arrow",
|
|
"x": 164.0,
|
|
"y": 340.5,
|
|
"width": 236.0,
|
|
"height": 104.5,
|
|
"angle": 0,
|
|
"strokeColor": "#1e1e1e",
|
|
"backgroundColor": "transparent",
|
|
"fillStyle": "solid",
|
|
"strokeWidth": 2,
|
|
"strokeStyle": "solid",
|
|
"roughness": 1,
|
|
"opacity": 100,
|
|
"groupIds": [],
|
|
"frameId": null,
|
|
"index": null,
|
|
"roundness": null,
|
|
"seed": 1904768359,
|
|
"version": 1,
|
|
"versionNonce": 99296897,
|
|
"isDeleted": false,
|
|
"boundElements": [],
|
|
"updated": 0,
|
|
"link": null,
|
|
"locked": false,
|
|
"points": [
|
|
[
|
|
0.0,
|
|
0.0
|
|
],
|
|
[
|
|
0.0,
|
|
52.25
|
|
],
|
|
[
|
|
236.0,
|
|
52.25
|
|
],
|
|
[
|
|
236.0,
|
|
104.5
|
|
]
|
|
],
|
|
"lastCommittedPoint": null,
|
|
"startBinding": {
|
|
"elementId": "node-kvm",
|
|
"focus": 0,
|
|
"gap": 4
|
|
},
|
|
"endBinding": {
|
|
"elementId": "node-physical-cpu",
|
|
"focus": 0,
|
|
"gap": 4
|
|
},
|
|
"startArrowhead": null,
|
|
"endArrowhead": "arrow",
|
|
"elbowed": true
|
|
},
|
|
{
|
|
"id": "edge-label-kvm-vm-entry",
|
|
"type": "text",
|
|
"x": 237.0,
|
|
"y": 352.75,
|
|
"width": 90,
|
|
"height": 24,
|
|
"angle": 0,
|
|
"strokeColor": "#1e1e1e",
|
|
"backgroundColor": "transparent",
|
|
"fillStyle": "solid",
|
|
"strokeWidth": 1,
|
|
"strokeStyle": "solid",
|
|
"roughness": 0,
|
|
"opacity": 100,
|
|
"groupIds": [],
|
|
"frameId": null,
|
|
"index": null,
|
|
"roundness": {
|
|
"type": 3
|
|
},
|
|
"seed": 185792823,
|
|
"version": 1,
|
|
"versionNonce": 154830599,
|
|
"isDeleted": false,
|
|
"boundElements": [],
|
|
"updated": 0,
|
|
"link": null,
|
|
"locked": false,
|
|
"fontSize": 13,
|
|
"fontFamily": 5,
|
|
"text": "VM entry",
|
|
"textAlign": "center",
|
|
"verticalAlign": "middle",
|
|
"containerId": null,
|
|
"originalText": "VM entry",
|
|
"autoResize": true,
|
|
"lineHeight": 1.25
|
|
},
|
|
{
|
|
"id": "edge-qemu-device-fd",
|
|
"type": "arrow",
|
|
"x": 393.0,
|
|
"y": 148.0,
|
|
"width": 103.0,
|
|
"height": 96.0,
|
|
"angle": 0,
|
|
"strokeColor": "#1e1e1e",
|
|
"backgroundColor": "transparent",
|
|
"fillStyle": "solid",
|
|
"strokeWidth": 2,
|
|
"strokeStyle": "solid",
|
|
"roughness": 1,
|
|
"opacity": 100,
|
|
"groupIds": [],
|
|
"frameId": null,
|
|
"index": null,
|
|
"roundness": null,
|
|
"seed": 137397988,
|
|
"version": 1,
|
|
"versionNonce": 736965404,
|
|
"isDeleted": false,
|
|
"boundElements": [],
|
|
"updated": 0,
|
|
"link": null,
|
|
"locked": false,
|
|
"points": [
|
|
[
|
|
103.0,
|
|
0.0
|
|
],
|
|
[
|
|
103.0,
|
|
48.0
|
|
],
|
|
[
|
|
0.0,
|
|
48.0
|
|
],
|
|
[
|
|
0.0,
|
|
96.0
|
|
]
|
|
],
|
|
"lastCommittedPoint": null,
|
|
"startBinding": {
|
|
"elementId": "node-qemu",
|
|
"focus": 0,
|
|
"gap": 4
|
|
},
|
|
"endBinding": {
|
|
"elementId": "node-vfio",
|
|
"focus": 0,
|
|
"gap": 4
|
|
},
|
|
"startArrowhead": null,
|
|
"endArrowhead": "arrow",
|
|
"elbowed": true
|
|
},
|
|
{
|
|
"id": "edge-label-qemu-device-fd",
|
|
"type": "text",
|
|
"x": 399.5,
|
|
"y": 156.0,
|
|
"width": 90,
|
|
"height": 24,
|
|
"angle": 0,
|
|
"strokeColor": "#1e1e1e",
|
|
"backgroundColor": "transparent",
|
|
"fillStyle": "solid",
|
|
"strokeWidth": 1,
|
|
"strokeStyle": "solid",
|
|
"roughness": 0,
|
|
"opacity": 100,
|
|
"groupIds": [],
|
|
"frameId": null,
|
|
"index": null,
|
|
"roundness": {
|
|
"type": 3
|
|
},
|
|
"seed": 778589170,
|
|
"version": 1,
|
|
"versionNonce": 213892165,
|
|
"isDeleted": false,
|
|
"boundElements": [],
|
|
"updated": 0,
|
|
"link": null,
|
|
"locked": false,
|
|
"fontSize": 13,
|
|
"fontFamily": 5,
|
|
"text": "장치 fd",
|
|
"textAlign": "center",
|
|
"verticalAlign": "middle",
|
|
"containerId": null,
|
|
"originalText": "장치 fd",
|
|
"autoResize": true,
|
|
"lineHeight": 1.25
|
|
},
|
|
{
|
|
"id": "edge-qemu-kvm-run",
|
|
"type": "arrow",
|
|
"x": 164.0,
|
|
"y": 148.0,
|
|
"width": 314.0,
|
|
"height": 104.5,
|
|
"angle": 0,
|
|
"strokeColor": "#1e1e1e",
|
|
"backgroundColor": "transparent",
|
|
"fillStyle": "solid",
|
|
"strokeWidth": 2,
|
|
"strokeStyle": "solid",
|
|
"roughness": 1,
|
|
"opacity": 100,
|
|
"groupIds": [],
|
|
"frameId": null,
|
|
"index": null,
|
|
"roundness": null,
|
|
"seed": 449529868,
|
|
"version": 1,
|
|
"versionNonce": 1008374866,
|
|
"isDeleted": false,
|
|
"boundElements": [],
|
|
"updated": 0,
|
|
"link": null,
|
|
"locked": false,
|
|
"points": [
|
|
[
|
|
314.0,
|
|
0.0
|
|
],
|
|
[
|
|
314.0,
|
|
52.25
|
|
],
|
|
[
|
|
0.0,
|
|
52.25
|
|
],
|
|
[
|
|
0.0,
|
|
104.5
|
|
]
|
|
],
|
|
"lastCommittedPoint": null,
|
|
"startBinding": {
|
|
"elementId": "node-qemu",
|
|
"focus": 0,
|
|
"gap": 4
|
|
},
|
|
"endBinding": {
|
|
"elementId": "node-kvm",
|
|
"focus": 0,
|
|
"gap": 4
|
|
},
|
|
"startArrowhead": null,
|
|
"endArrowhead": "arrow",
|
|
"elbowed": true
|
|
},
|
|
{
|
|
"id": "edge-label-qemu-kvm-run",
|
|
"type": "text",
|
|
"x": 276.0,
|
|
"y": 160.25,
|
|
"width": 90,
|
|
"height": 24,
|
|
"angle": 0,
|
|
"strokeColor": "#1e1e1e",
|
|
"backgroundColor": "transparent",
|
|
"fillStyle": "solid",
|
|
"strokeWidth": 1,
|
|
"strokeStyle": "solid",
|
|
"roughness": 0,
|
|
"opacity": 100,
|
|
"groupIds": [],
|
|
"frameId": null,
|
|
"index": null,
|
|
"roundness": {
|
|
"type": 3
|
|
},
|
|
"seed": 1197685344,
|
|
"version": 1,
|
|
"versionNonce": 1782962046,
|
|
"isDeleted": false,
|
|
"boundElements": [],
|
|
"updated": 0,
|
|
"link": null,
|
|
"locked": false,
|
|
"fontSize": 13,
|
|
"fontFamily": 5,
|
|
"text": "KVM_RUN",
|
|
"textAlign": "center",
|
|
"verticalAlign": "middle",
|
|
"containerId": null,
|
|
"originalText": "KVM_RUN",
|
|
"autoResize": true,
|
|
"lineHeight": 1.25
|
|
},
|
|
{
|
|
"id": "edge-qemu-vhost-ioctl",
|
|
"type": "arrow",
|
|
"x": 514.0,
|
|
"y": 148.0,
|
|
"width": 89.0,
|
|
"height": 104.5,
|
|
"angle": 0,
|
|
"strokeColor": "#1e1e1e",
|
|
"backgroundColor": "transparent",
|
|
"fillStyle": "solid",
|
|
"strokeWidth": 2,
|
|
"strokeStyle": "solid",
|
|
"roughness": 1,
|
|
"opacity": 100,
|
|
"groupIds": [],
|
|
"frameId": null,
|
|
"index": null,
|
|
"roundness": null,
|
|
"seed": 1582010981,
|
|
"version": 1,
|
|
"versionNonce": 393196348,
|
|
"isDeleted": false,
|
|
"boundElements": [],
|
|
"updated": 0,
|
|
"link": null,
|
|
"locked": false,
|
|
"points": [
|
|
[
|
|
0.0,
|
|
0.0
|
|
],
|
|
[
|
|
0.0,
|
|
52.25
|
|
],
|
|
[
|
|
89.0,
|
|
52.25
|
|
],
|
|
[
|
|
89.0,
|
|
104.5
|
|
]
|
|
],
|
|
"lastCommittedPoint": null,
|
|
"startBinding": {
|
|
"elementId": "node-qemu",
|
|
"focus": 0,
|
|
"gap": 4
|
|
},
|
|
"endBinding": {
|
|
"elementId": "node-vhost",
|
|
"focus": 0,
|
|
"gap": 4
|
|
},
|
|
"startArrowhead": null,
|
|
"endArrowhead": "arrow",
|
|
"elbowed": true
|
|
},
|
|
{
|
|
"id": "edge-label-qemu-vhost-ioctl",
|
|
"type": "text",
|
|
"x": 513.5,
|
|
"y": 160.25,
|
|
"width": 90,
|
|
"height": 24,
|
|
"angle": 0,
|
|
"strokeColor": "#1e1e1e",
|
|
"backgroundColor": "transparent",
|
|
"fillStyle": "solid",
|
|
"strokeWidth": 1,
|
|
"strokeStyle": "solid",
|
|
"roughness": 0,
|
|
"opacity": 100,
|
|
"groupIds": [],
|
|
"frameId": null,
|
|
"index": null,
|
|
"roundness": {
|
|
"type": 3
|
|
},
|
|
"seed": 149615293,
|
|
"version": 1,
|
|
"versionNonce": 385858350,
|
|
"isDeleted": false,
|
|
"boundElements": [],
|
|
"updated": 0,
|
|
"link": null,
|
|
"locked": false,
|
|
"fontSize": 13,
|
|
"fontFamily": 5,
|
|
"text": "제어 ioctl",
|
|
"textAlign": "center",
|
|
"verticalAlign": "middle",
|
|
"containerId": null,
|
|
"originalText": "제어 ioctl",
|
|
"autoResize": true,
|
|
"lineHeight": 1.25
|
|
},
|
|
{
|
|
"id": "edge-qemu-virtqueue",
|
|
"type": "arrow",
|
|
"x": 532.0,
|
|
"y": 148.0,
|
|
"width": 307.0,
|
|
"height": 104.5,
|
|
"angle": 0,
|
|
"strokeColor": "#1e1e1e",
|
|
"backgroundColor": "transparent",
|
|
"fillStyle": "solid",
|
|
"strokeWidth": 2,
|
|
"strokeStyle": "solid",
|
|
"roughness": 1,
|
|
"opacity": 100,
|
|
"groupIds": [],
|
|
"frameId": null,
|
|
"index": null,
|
|
"roundness": null,
|
|
"seed": 1873298031,
|
|
"version": 1,
|
|
"versionNonce": 1994100496,
|
|
"isDeleted": false,
|
|
"boundElements": [],
|
|
"updated": 0,
|
|
"link": null,
|
|
"locked": false,
|
|
"points": [
|
|
[
|
|
0.0,
|
|
0.0
|
|
],
|
|
[
|
|
0.0,
|
|
52.25
|
|
],
|
|
[
|
|
307.0,
|
|
52.25
|
|
],
|
|
[
|
|
307.0,
|
|
104.5
|
|
]
|
|
],
|
|
"lastCommittedPoint": null,
|
|
"startBinding": {
|
|
"elementId": "node-qemu",
|
|
"focus": 0,
|
|
"gap": 4
|
|
},
|
|
"endBinding": {
|
|
"elementId": "node-virtio-driver",
|
|
"focus": 0,
|
|
"gap": 4
|
|
},
|
|
"startArrowhead": null,
|
|
"endArrowhead": "arrow",
|
|
"elbowed": true
|
|
},
|
|
{
|
|
"id": "edge-label-qemu-virtqueue",
|
|
"type": "text",
|
|
"x": 640.5,
|
|
"y": 160.25,
|
|
"width": 90,
|
|
"height": 24,
|
|
"angle": 0,
|
|
"strokeColor": "#1e1e1e",
|
|
"backgroundColor": "transparent",
|
|
"fillStyle": "solid",
|
|
"strokeWidth": 1,
|
|
"strokeStyle": "solid",
|
|
"roughness": 0,
|
|
"opacity": 100,
|
|
"groupIds": [],
|
|
"frameId": null,
|
|
"index": null,
|
|
"roundness": {
|
|
"type": 3
|
|
},
|
|
"seed": 444563865,
|
|
"version": 1,
|
|
"versionNonce": 1977908933,
|
|
"isDeleted": false,
|
|
"boundElements": [],
|
|
"updated": 0,
|
|
"link": null,
|
|
"locked": false,
|
|
"fontSize": 13,
|
|
"fontFamily": 5,
|
|
"text": "virtqueue",
|
|
"textAlign": "center",
|
|
"verticalAlign": "middle",
|
|
"containerId": null,
|
|
"originalText": "virtqueue",
|
|
"autoResize": true,
|
|
"lineHeight": 1.25
|
|
},
|
|
{
|
|
"id": "edge-vfio-binds-device",
|
|
"type": "arrow",
|
|
"x": 393.0,
|
|
"y": 349.0,
|
|
"width": 239.5,
|
|
"height": 113.0,
|
|
"angle": 0,
|
|
"strokeColor": "#1e1e1e",
|
|
"backgroundColor": "transparent",
|
|
"fillStyle": "solid",
|
|
"strokeWidth": 2,
|
|
"strokeStyle": "solid",
|
|
"roughness": 1,
|
|
"opacity": 100,
|
|
"groupIds": [],
|
|
"frameId": null,
|
|
"index": null,
|
|
"roundness": null,
|
|
"seed": 992274126,
|
|
"version": 1,
|
|
"versionNonce": 20624247,
|
|
"isDeleted": false,
|
|
"boundElements": [],
|
|
"updated": 0,
|
|
"link": null,
|
|
"locked": false,
|
|
"points": [
|
|
[
|
|
0.0,
|
|
0.0
|
|
],
|
|
[
|
|
0.0,
|
|
56.5
|
|
],
|
|
[
|
|
239.5,
|
|
56.5
|
|
],
|
|
[
|
|
239.5,
|
|
113.0
|
|
]
|
|
],
|
|
"lastCommittedPoint": null,
|
|
"startBinding": {
|
|
"elementId": "node-vfio",
|
|
"focus": 0,
|
|
"gap": 4
|
|
},
|
|
"endBinding": {
|
|
"elementId": "node-pci-device",
|
|
"focus": 0,
|
|
"gap": 4
|
|
},
|
|
"startArrowhead": null,
|
|
"endArrowhead": "arrow",
|
|
"elbowed": true
|
|
},
|
|
{
|
|
"id": "edge-label-vfio-binds-device",
|
|
"type": "text",
|
|
"x": 467.75,
|
|
"y": 365.5,
|
|
"width": 90,
|
|
"height": 24,
|
|
"angle": 0,
|
|
"strokeColor": "#1e1e1e",
|
|
"backgroundColor": "transparent",
|
|
"fillStyle": "solid",
|
|
"strokeWidth": 1,
|
|
"strokeStyle": "solid",
|
|
"roughness": 0,
|
|
"opacity": 100,
|
|
"groupIds": [],
|
|
"frameId": null,
|
|
"index": null,
|
|
"roundness": {
|
|
"type": 3
|
|
},
|
|
"seed": 78940901,
|
|
"version": 1,
|
|
"versionNonce": 280960500,
|
|
"isDeleted": false,
|
|
"boundElements": [],
|
|
"updated": 0,
|
|
"link": null,
|
|
"locked": false,
|
|
"fontSize": 13,
|
|
"fontFamily": 5,
|
|
"text": "vfio-pci 결합",
|
|
"textAlign": "center",
|
|
"verticalAlign": "middle",
|
|
"containerId": null,
|
|
"originalText": "vfio-pci 결합",
|
|
"autoResize": true,
|
|
"lineHeight": 1.25
|
|
},
|
|
{
|
|
"id": "node-qemu",
|
|
"type": "rectangle",
|
|
"x": 379.5,
|
|
"y": 60.0,
|
|
"width": 251.0,
|
|
"height": 88.0,
|
|
"angle": 0,
|
|
"strokeColor": "#1e1e1e",
|
|
"backgroundColor": "#ffffff",
|
|
"fillStyle": "solid",
|
|
"strokeWidth": 2,
|
|
"strokeStyle": "solid",
|
|
"roughness": 1,
|
|
"opacity": 100,
|
|
"groupIds": [],
|
|
"frameId": null,
|
|
"index": null,
|
|
"roundness": {
|
|
"type": 3
|
|
},
|
|
"seed": 1265942130,
|
|
"version": 1,
|
|
"versionNonce": 447320704,
|
|
"isDeleted": false,
|
|
"boundElements": [],
|
|
"updated": 0,
|
|
"link": null,
|
|
"locked": false
|
|
},
|
|
{
|
|
"id": "node-label-qemu",
|
|
"type": "text",
|
|
"x": 389.5,
|
|
"y": 70.0,
|
|
"width": 231.0,
|
|
"height": 68.0,
|
|
"angle": 0,
|
|
"strokeColor": "#1e1e1e",
|
|
"backgroundColor": "transparent",
|
|
"fillStyle": "solid",
|
|
"strokeWidth": 1,
|
|
"strokeStyle": "solid",
|
|
"roughness": 0,
|
|
"opacity": 100,
|
|
"groupIds": [],
|
|
"frameId": null,
|
|
"index": null,
|
|
"roundness": {
|
|
"type": 3
|
|
},
|
|
"seed": 82355235,
|
|
"version": 1,
|
|
"versionNonce": 463780486,
|
|
"isDeleted": false,
|
|
"boundElements": [],
|
|
"updated": 0,
|
|
"link": null,
|
|
"locked": false,
|
|
"fontSize": 15,
|
|
"fontFamily": 5,
|
|
"text": "QEMU\n/dev/kvm\nKVM_CREATE_VM · KVM_CREATE_VCPU",
|
|
"textAlign": "center",
|
|
"verticalAlign": "middle",
|
|
"containerId": null,
|
|
"originalText": "QEMU\n/dev/kvm\nKVM_CREATE_VM · KVM_CREATE_VCPU",
|
|
"autoResize": true,
|
|
"lineHeight": 1.25
|
|
},
|
|
{
|
|
"id": "node-kvm",
|
|
"type": "rectangle",
|
|
"x": 70.0,
|
|
"y": 252.5,
|
|
"width": 188.0,
|
|
"height": 88.0,
|
|
"angle": 0,
|
|
"strokeColor": "#1e1e1e",
|
|
"backgroundColor": "#ffffff",
|
|
"fillStyle": "solid",
|
|
"strokeWidth": 2,
|
|
"strokeStyle": "solid",
|
|
"roughness": 1,
|
|
"opacity": 100,
|
|
"groupIds": [],
|
|
"frameId": null,
|
|
"index": null,
|
|
"roundness": {
|
|
"type": 3
|
|
},
|
|
"seed": 1294725949,
|
|
"version": 1,
|
|
"versionNonce": 774205501,
|
|
"isDeleted": false,
|
|
"boundElements": [],
|
|
"updated": 0,
|
|
"link": null,
|
|
"locked": false
|
|
},
|
|
{
|
|
"id": "node-label-kvm",
|
|
"type": "text",
|
|
"x": 80.0,
|
|
"y": 262.5,
|
|
"width": 168.0,
|
|
"height": 68.0,
|
|
"angle": 0,
|
|
"strokeColor": "#1e1e1e",
|
|
"backgroundColor": "transparent",
|
|
"fillStyle": "solid",
|
|
"strokeWidth": 1,
|
|
"strokeStyle": "solid",
|
|
"roughness": 0,
|
|
"opacity": 100,
|
|
"groupIds": [],
|
|
"frameId": null,
|
|
"index": null,
|
|
"roundness": {
|
|
"type": 3
|
|
},
|
|
"seed": 820201432,
|
|
"version": 1,
|
|
"versionNonce": 242634004,
|
|
"isDeleted": false,
|
|
"boundElements": [],
|
|
"updated": 0,
|
|
"link": null,
|
|
"locked": false,
|
|
"fontSize": 15,
|
|
"fontFamily": 5,
|
|
"text": "KVM\nstruct kvm_run\nKVM_GET_VCPU_MMAP_SIZE",
|
|
"textAlign": "center",
|
|
"verticalAlign": "middle",
|
|
"containerId": null,
|
|
"originalText": "KVM\nstruct kvm_run\nKVM_GET_VCPU_MMAP_SIZE",
|
|
"autoResize": true,
|
|
"lineHeight": 1.25
|
|
},
|
|
{
|
|
"id": "node-vfio",
|
|
"type": "rectangle",
|
|
"x": 318.0,
|
|
"y": 244.0,
|
|
"width": 150.0,
|
|
"height": 105.0,
|
|
"angle": 0,
|
|
"strokeColor": "#1e1e1e",
|
|
"backgroundColor": "#ffffff",
|
|
"fillStyle": "solid",
|
|
"strokeWidth": 2,
|
|
"strokeStyle": "solid",
|
|
"roughness": 1,
|
|
"opacity": 100,
|
|
"groupIds": [],
|
|
"frameId": null,
|
|
"index": null,
|
|
"roundness": {
|
|
"type": 3
|
|
},
|
|
"seed": 223861255,
|
|
"version": 1,
|
|
"versionNonce": 909671610,
|
|
"isDeleted": false,
|
|
"boundElements": [],
|
|
"updated": 0,
|
|
"link": null,
|
|
"locked": false
|
|
},
|
|
{
|
|
"id": "node-label-vfio",
|
|
"type": "text",
|
|
"x": 328.0,
|
|
"y": 254.0,
|
|
"width": 130.0,
|
|
"height": 85.0,
|
|
"angle": 0,
|
|
"strokeColor": "#1e1e1e",
|
|
"backgroundColor": "transparent",
|
|
"fillStyle": "solid",
|
|
"strokeWidth": 1,
|
|
"strokeStyle": "solid",
|
|
"roughness": 0,
|
|
"opacity": 100,
|
|
"groupIds": [],
|
|
"frameId": null,
|
|
"index": null,
|
|
"roundness": {
|
|
"type": 3
|
|
},
|
|
"seed": 588619913,
|
|
"version": 1,
|
|
"versionNonce": 1353122638,
|
|
"isDeleted": false,
|
|
"boundElements": [],
|
|
"updated": 0,
|
|
"link": null,
|
|
"locked": false,
|
|
"fontSize": 15,
|
|
"fontFamily": 5,
|
|
"text": "VFIO\nvfio-pci\nIOMMU 그룹\n/dev/vfio/vfio",
|
|
"textAlign": "center",
|
|
"verticalAlign": "middle",
|
|
"containerId": null,
|
|
"originalText": "VFIO\nvfio-pci\nIOMMU 그룹\n/dev/vfio/vfio",
|
|
"autoResize": true,
|
|
"lineHeight": 1.25
|
|
},
|
|
{
|
|
"id": "node-vhost",
|
|
"type": "rectangle",
|
|
"x": 528.0,
|
|
"y": 252.5,
|
|
"width": 150.0,
|
|
"height": 88.0,
|
|
"angle": 0,
|
|
"strokeColor": "#1e1e1e",
|
|
"backgroundColor": "#ffffff",
|
|
"fillStyle": "solid",
|
|
"strokeWidth": 2,
|
|
"strokeStyle": "solid",
|
|
"roughness": 1,
|
|
"opacity": 100,
|
|
"groupIds": [],
|
|
"frameId": null,
|
|
"index": null,
|
|
"roundness": {
|
|
"type": 3
|
|
},
|
|
"seed": 1987300733,
|
|
"version": 1,
|
|
"versionNonce": 128975583,
|
|
"isDeleted": false,
|
|
"boundElements": [],
|
|
"updated": 0,
|
|
"link": null,
|
|
"locked": false
|
|
},
|
|
{
|
|
"id": "node-label-vhost",
|
|
"type": "text",
|
|
"x": 538.0,
|
|
"y": 262.5,
|
|
"width": 130.0,
|
|
"height": 68.0,
|
|
"angle": 0,
|
|
"strokeColor": "#1e1e1e",
|
|
"backgroundColor": "transparent",
|
|
"fillStyle": "solid",
|
|
"strokeWidth": 1,
|
|
"strokeStyle": "solid",
|
|
"roughness": 0,
|
|
"opacity": 100,
|
|
"groupIds": [],
|
|
"frameId": null,
|
|
"index": null,
|
|
"roundness": {
|
|
"type": 3
|
|
},
|
|
"seed": 1610481447,
|
|
"version": 1,
|
|
"versionNonce": 1653011569,
|
|
"isDeleted": false,
|
|
"boundElements": [],
|
|
"updated": 0,
|
|
"link": null,
|
|
"locked": false,
|
|
"fontSize": 15,
|
|
"fontFamily": 5,
|
|
"text": "vhost\n리눅스 커널 구현\nvirtqueue 공유",
|
|
"textAlign": "center",
|
|
"verticalAlign": "middle",
|
|
"containerId": null,
|
|
"originalText": "vhost\n리눅스 커널 구현\nvirtqueue 공유",
|
|
"autoResize": true,
|
|
"lineHeight": 1.25
|
|
},
|
|
{
|
|
"id": "node-virtio-driver",
|
|
"type": "rectangle",
|
|
"x": 738.0,
|
|
"y": 252.5,
|
|
"width": 202.0,
|
|
"height": 88.0,
|
|
"angle": 0,
|
|
"strokeColor": "#1e1e1e",
|
|
"backgroundColor": "#ffffff",
|
|
"fillStyle": "solid",
|
|
"strokeWidth": 2,
|
|
"strokeStyle": "solid",
|
|
"roughness": 1,
|
|
"opacity": 100,
|
|
"groupIds": [],
|
|
"frameId": null,
|
|
"index": null,
|
|
"roundness": {
|
|
"type": 3
|
|
},
|
|
"seed": 858344171,
|
|
"version": 1,
|
|
"versionNonce": 1614418838,
|
|
"isDeleted": false,
|
|
"boundElements": [],
|
|
"updated": 0,
|
|
"link": null,
|
|
"locked": false
|
|
},
|
|
{
|
|
"id": "node-label-virtio-driver",
|
|
"type": "text",
|
|
"x": 748.0,
|
|
"y": 262.5,
|
|
"width": 182.0,
|
|
"height": 68.0,
|
|
"angle": 0,
|
|
"strokeColor": "#1e1e1e",
|
|
"backgroundColor": "transparent",
|
|
"fillStyle": "solid",
|
|
"strokeWidth": 1,
|
|
"strokeStyle": "solid",
|
|
"roughness": 0,
|
|
"opacity": 100,
|
|
"groupIds": [],
|
|
"frameId": null,
|
|
"index": null,
|
|
"roundness": {
|
|
"type": 3
|
|
},
|
|
"seed": 1644546083,
|
|
"version": 1,
|
|
"versionNonce": 1597362718,
|
|
"isDeleted": false,
|
|
"boundElements": [],
|
|
"updated": 0,
|
|
"link": null,
|
|
"locked": false,
|
|
"fontSize": 15,
|
|
"fontFamily": 5,
|
|
"text": "게스트 virtio 드라이버\nvirtio-pci · virtio-mmio\nvirtqueue",
|
|
"textAlign": "center",
|
|
"verticalAlign": "middle",
|
|
"containerId": null,
|
|
"originalText": "게스트 virtio 드라이버\nvirtio-pci · virtio-mmio\nvirtqueue",
|
|
"autoResize": true,
|
|
"lineHeight": 1.25
|
|
},
|
|
{
|
|
"id": "node-physical-cpu",
|
|
"type": "rectangle",
|
|
"x": 302.5,
|
|
"y": 445.0,
|
|
"width": 195.0,
|
|
"height": 105.0,
|
|
"angle": 0,
|
|
"strokeColor": "#1e1e1e",
|
|
"backgroundColor": "#ffffff",
|
|
"fillStyle": "solid",
|
|
"strokeWidth": 2,
|
|
"strokeStyle": "solid",
|
|
"roughness": 1,
|
|
"opacity": 100,
|
|
"groupIds": [],
|
|
"frameId": null,
|
|
"index": null,
|
|
"roundness": {
|
|
"type": 3
|
|
},
|
|
"seed": 79723510,
|
|
"version": 1,
|
|
"versionNonce": 75896935,
|
|
"isDeleted": false,
|
|
"boundElements": [],
|
|
"updated": 0,
|
|
"link": null,
|
|
"locked": false
|
|
},
|
|
{
|
|
"id": "node-label-physical-cpu",
|
|
"type": "text",
|
|
"x": 312.5,
|
|
"y": 455.0,
|
|
"width": 175.0,
|
|
"height": 85.0,
|
|
"angle": 0,
|
|
"strokeColor": "#1e1e1e",
|
|
"backgroundColor": "transparent",
|
|
"fillStyle": "solid",
|
|
"strokeWidth": 1,
|
|
"strokeStyle": "solid",
|
|
"roughness": 0,
|
|
"opacity": 100,
|
|
"groupIds": [],
|
|
"frameId": null,
|
|
"index": null,
|
|
"roundness": {
|
|
"type": 3
|
|
},
|
|
"seed": 244061788,
|
|
"version": 1,
|
|
"versionNonce": 1572847054,
|
|
"isDeleted": false,
|
|
"boundElements": [],
|
|
"updated": 0,
|
|
"link": null,
|
|
"locked": false,
|
|
"fontSize": 15,
|
|
"fontFamily": 5,
|
|
"text": "물리 CPU\nVMX root · VMX non-root\nVM entry · VM exit\nguest-state 영역",
|
|
"textAlign": "center",
|
|
"verticalAlign": "middle",
|
|
"containerId": null,
|
|
"originalText": "물리 CPU\nVMX root · VMX non-root\nVM entry · VM exit\nguest-state 영역",
|
|
"autoResize": true,
|
|
"lineHeight": 1.25
|
|
},
|
|
{
|
|
"id": "node-pci-device",
|
|
"type": "rectangle",
|
|
"x": 557.5,
|
|
"y": 462.0,
|
|
"width": 150.0,
|
|
"height": 71.0,
|
|
"angle": 0,
|
|
"strokeColor": "#1e1e1e",
|
|
"backgroundColor": "#ffffff",
|
|
"fillStyle": "solid",
|
|
"strokeWidth": 2,
|
|
"strokeStyle": "solid",
|
|
"roughness": 1,
|
|
"opacity": 100,
|
|
"groupIds": [],
|
|
"frameId": null,
|
|
"index": null,
|
|
"roundness": {
|
|
"type": 3
|
|
},
|
|
"seed": 124646055,
|
|
"version": 1,
|
|
"versionNonce": 1524968011,
|
|
"isDeleted": false,
|
|
"boundElements": [],
|
|
"updated": 0,
|
|
"link": null,
|
|
"locked": false
|
|
},
|
|
{
|
|
"id": "node-label-pci-device",
|
|
"type": "text",
|
|
"x": 567.5,
|
|
"y": 472.0,
|
|
"width": 130.0,
|
|
"height": 51.0,
|
|
"angle": 0,
|
|
"strokeColor": "#1e1e1e",
|
|
"backgroundColor": "transparent",
|
|
"fillStyle": "solid",
|
|
"strokeWidth": 1,
|
|
"strokeStyle": "solid",
|
|
"roughness": 0,
|
|
"opacity": 100,
|
|
"groupIds": [],
|
|
"frameId": null,
|
|
"index": null,
|
|
"roundness": {
|
|
"type": 3
|
|
},
|
|
"seed": 956412321,
|
|
"version": 1,
|
|
"versionNonce": 1361554348,
|
|
"isDeleted": false,
|
|
"boundElements": [],
|
|
"updated": 0,
|
|
"link": null,
|
|
"locked": false,
|
|
"fontSize": 15,
|
|
"fontFamily": 5,
|
|
"text": "물리 PCI 장치\n게스트 직접 할당",
|
|
"textAlign": "center",
|
|
"verticalAlign": "middle",
|
|
"containerId": null,
|
|
"originalText": "물리 PCI 장치\n게스트 직접 할당",
|
|
"autoResize": true,
|
|
"lineHeight": 1.25
|
|
},
|
|
{
|
|
"id": "node-guest-code",
|
|
"type": "rectangle",
|
|
"x": 325.0,
|
|
"y": 646.0,
|
|
"width": 150.0,
|
|
"height": 71.0,
|
|
"angle": 0,
|
|
"strokeColor": "#1e1e1e",
|
|
"backgroundColor": "#ffffff",
|
|
"fillStyle": "solid",
|
|
"strokeWidth": 2,
|
|
"strokeStyle": "solid",
|
|
"roughness": 1,
|
|
"opacity": 100,
|
|
"groupIds": [],
|
|
"frameId": null,
|
|
"index": null,
|
|
"roundness": {
|
|
"type": 3
|
|
},
|
|
"seed": 1316201237,
|
|
"version": 1,
|
|
"versionNonce": 1955395610,
|
|
"isDeleted": false,
|
|
"boundElements": [],
|
|
"updated": 0,
|
|
"link": null,
|
|
"locked": false
|
|
},
|
|
{
|
|
"id": "node-label-guest-code",
|
|
"type": "text",
|
|
"x": 335.0,
|
|
"y": 656.0,
|
|
"width": 130.0,
|
|
"height": 51.0,
|
|
"angle": 0,
|
|
"strokeColor": "#1e1e1e",
|
|
"backgroundColor": "transparent",
|
|
"fillStyle": "solid",
|
|
"strokeWidth": 1,
|
|
"strokeStyle": "solid",
|
|
"roughness": 0,
|
|
"opacity": 100,
|
|
"groupIds": [],
|
|
"frameId": null,
|
|
"index": null,
|
|
"roundness": {
|
|
"type": 3
|
|
},
|
|
"seed": 517895106,
|
|
"version": 1,
|
|
"versionNonce": 849887495,
|
|
"isDeleted": false,
|
|
"boundElements": [],
|
|
"updated": 0,
|
|
"link": null,
|
|
"locked": false,
|
|
"fontSize": 15,
|
|
"fontFamily": 5,
|
|
"text": "게스트 코드\nvCPU",
|
|
"textAlign": "center",
|
|
"verticalAlign": "middle",
|
|
"containerId": null,
|
|
"originalText": "게스트 코드\nvCPU",
|
|
"autoResize": true,
|
|
"lineHeight": 1.25
|
|
},
|
|
{
|
|
"id": "node-iommu",
|
|
"type": "rectangle",
|
|
"x": 535.0,
|
|
"y": 646.0,
|
|
"width": 150.0,
|
|
"height": 71.0,
|
|
"angle": 0,
|
|
"strokeColor": "#1e1e1e",
|
|
"backgroundColor": "#ffffff",
|
|
"fillStyle": "solid",
|
|
"strokeWidth": 2,
|
|
"strokeStyle": "solid",
|
|
"roughness": 1,
|
|
"opacity": 100,
|
|
"groupIds": [],
|
|
"frameId": null,
|
|
"index": null,
|
|
"roundness": {
|
|
"type": 3
|
|
},
|
|
"seed": 1289147613,
|
|
"version": 1,
|
|
"versionNonce": 1538872766,
|
|
"isDeleted": false,
|
|
"boundElements": [],
|
|
"updated": 0,
|
|
"link": null,
|
|
"locked": false
|
|
},
|
|
{
|
|
"id": "node-label-iommu",
|
|
"type": "text",
|
|
"x": 545.0,
|
|
"y": 656.0,
|
|
"width": 130.0,
|
|
"height": 51.0,
|
|
"angle": 0,
|
|
"strokeColor": "#1e1e1e",
|
|
"backgroundColor": "transparent",
|
|
"fillStyle": "solid",
|
|
"strokeWidth": 1,
|
|
"strokeStyle": "solid",
|
|
"roughness": 0,
|
|
"opacity": 100,
|
|
"groupIds": [],
|
|
"frameId": null,
|
|
"index": null,
|
|
"roundness": {
|
|
"type": 3
|
|
},
|
|
"seed": 1510486535,
|
|
"version": 1,
|
|
"versionNonce": 1752225356,
|
|
"isDeleted": false,
|
|
"boundElements": [],
|
|
"updated": 0,
|
|
"link": null,
|
|
"locked": false,
|
|
"fontSize": 15,
|
|
"fontFamily": 5,
|
|
"text": "IOMMU\nDMA · 인터럽트 리매핑",
|
|
"textAlign": "center",
|
|
"verticalAlign": "middle",
|
|
"containerId": null,
|
|
"originalText": "IOMMU\nDMA · 인터럽트 리매핑",
|
|
"autoResize": true,
|
|
"lineHeight": 1.25
|
|
}
|
|
],
|
|
"appState": {
|
|
"gridSize": 10,
|
|
"viewBackgroundColor": "#ffffff",
|
|
"currentItemFontFamily": 5
|
|
},
|
|
"files": {}
|
|
}
|