{"id":16494534,"url":"https://github.com/portellam/guest-machine-guide","last_synced_at":"2026-03-03T20:31:43.245Z","repository":{"id":233966224,"uuid":"788102454","full_name":"portellam/guest-machine-guide","owner":"portellam","description":"Guide for setup of a Virtual Machine (VM) on the Linux desktop. Includes general overview, optimizations for Windows VMs and hardware-passthrough (VFIO), and more.","archived":false,"fork":false,"pushed_at":"2025-04-03T02:54:00.000Z","size":91,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-11-28T11:30:51.715Z","etag":null,"topics":["documentation","guest","guide","hugepages","hyperv","kvm","libvirt","passthrough","pci","qemu","setup","vfio","virtual-machine","virtualization"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/portellam.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-04-17T19:26:09.000Z","updated_at":"2025-04-08T02:14:20.000Z","dependencies_parsed_at":"2024-11-12T21:43:45.373Z","dependency_job_id":"f3df735e-3e5c-4c03-bfe9-ab0b473d07e3","html_url":"https://github.com/portellam/guest-machine-guide","commit_stats":null,"previous_names":["portellam/qemu-guest-guide"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/portellam/guest-machine-guide","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/portellam%2Fguest-machine-guide","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/portellam%2Fguest-machine-guide/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/portellam%2Fguest-machine-guide/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/portellam%2Fguest-machine-guide/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/portellam","download_url":"https://codeload.github.com/portellam/guest-machine-guide/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/portellam%2Fguest-machine-guide/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30058275,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-03T18:21:05.932Z","status":"ssl_error","status_checked_at":"2026-03-03T18:20:59.341Z","response_time":61,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["documentation","guest","guide","hugepages","hyperv","kvm","libvirt","passthrough","pci","qemu","setup","vfio","virtual-machine","virtualization"],"created_at":"2024-10-11T14:14:16.147Z","updated_at":"2026-03-03T20:31:43.213Z","avatar_url":"https://github.com/portellam.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Guest Machine Guide\n### In Development\nGuide for setup of a guest Libvirt/QEMU Virtual Machine (VM). Includes general\noverview and references, and optimizations for Windows guests and\nhardware-passthrough (VFIO).\n\n#### View this repository on [Codeberg][01] or [GitHub][02].\n[01]: https://codeberg.org/portellam/guest-machine-guide\n[02]: https://github.com/portellam/guest-machine-guide\n##\n\n## Table of Contents\n- [1. Why?](#1-why)\n- [2. Related Projects](#2-related-projects)\n- [3. Documentation](#3-documentation)\n- [4. Host Optimizations](#4-host-optimizations)\n- [5. Guest Optimizations](#5-guest-optimizations)\n- [6. Guest XML Layout](#6-guest-xml-layout)\n    - [6.1. Syntax](#61-syntax)\n    - [6.2. First Lines in XML](#62-first-lines-in-xml)\n    - [6.3. Memory](#63-memory)\n    - [6.4. CPU Topology (1 / 2)](#64-cpu-topology-1--2)\n    - [6.5. System Information Spoofing](#65-system-information-spoofing)\n    - [6.6. Features](#66-features)\n    - [6.7. CPU Topology (2 / 2)](#67-cpu-topology-2--2)\n    - [6.8. Power Management](#68-power-management)\n    - [6.9. Devices](#69-devices)\n    - [6.10. QEMU Command Line](#610-qemu-command-line)\n    - [6.11. QEMU Overrides](#611-qemu-overrides)\n- [7. Benchmarking Guest Performance](#7-benchmarking-guest-performance)\n- [8. Contact](#8-contact)\n- [9. References](#9-references)\n\n## Contents\n### 1. Why?\nThe purpose of this document is to inform a new or returning user how to\noptimize a Guest machine, without demanding greater research and time.\n\nThis document does not serve to replace existing knowledge-bases. If you have\nany unexpected questions, wish to fact-check, or want to expand your knowledge,\nthen please visit these places!\n\nCopy and paste what you need from here and/or any example XML files, to your\nGuest XML file.\n\n### 2. Related Projects\nTo view other relevant projects, visit [Codeberg][21]\nor [GitHub][22].\n\n[21]: https://codeberg.org/portellam/guest-machine-guide\n[22]: https://github.com/portellam/guest-machine-guide\n\n### 3. Documentation\n- What is VFIO?[\u003csup\u003e[12]\u003c/sup\u003e](#12)\n- VFIO Discussion and Support[\u003csup\u003e[13]\u003c/sup\u003e](#13)\n- Hardware-Passthrough Guide[\u003csup\u003e[9]\u003c/sup\u003e](#9)\n- Virtual Machine XML Format Guide[\u003csup\u003e[16]\u003c/sup\u003e](#16)\n\n### 4. Host Optimizations\nTODO: add here.\n\n### 5. Guest Optimizations\nTODO: add here.\n\n### 6. Guest XML Layout\nBelow is an *incomplete* layout for building a Guest machine. The lines include\nadditional features, of which are absent when creating a Guest XML (with the\n`virsh` CLI command or `virt-manager` GUI application).\n\n#### 6.1. Syntax\n```xml\n\u003cparent_tag_name attribute_name=\"attribute_value\"\u003e\n  \u003cchild_tag_name\u003echild_tag_value\u003c/child_tag_name\u003e\n\u003c/parent_tag_name\u003e\n```\n\n#### 6.2. First Lines in XML\n\n| `\u003cdomain\u003e` Tag     | Attribute    | Value                                          | Description                                        |\n| ------------------ | ------------ | ---------------------------------------------- | -------------------------------------------------- |\n|                    | `xmlns:qemu` | `\"http://libvirt.org/schemas/domain/qemu/1.0\"` | Enable QEMU [command lines](#qemu-command-line) and [overrides](#qemu-overrides).           |\n|                    | `type`       | `\"kvm\"`                                        | Enable QEMU [command lines](#qemu-command-line) and [overrides](#qemu-overrides).           |\n| `\u003cname/\u003e`[\u003csup\u003e1\u003c/sup\u003e](#21a-name-best-practice)          | none         | text                                           | Name of the Guest.                                 |\n\n##### 2.a. `\u003cname/\u003e` Best practice:\n**Note:** The following formatting examples are a personal preference of the\nAuthor.\n\n**Format:** `purpose`**_**`vendor`\\***_**`operating system`**_**`architecture`**_**`chipset`**_**`firmware`**_**`topology`\n\n**\\*** Optional, if Host machine contains two (2) or more video devices\n(GPU/VGA).\n  - Example systems and names:\n    - Modern gaming machine:\u0026ensp;\u0026ensp;\u0026ensp;\u0026ensp;\u0026ensp;\u0026nbsp;`game_nvidia_win10_x64_q35_uefi_6c12t`\n    - Older 2000s gaming machine:\u0026ensp;`retro_amd_winxp_x86_i440fx_bios_2c4t`\n    - Retro 1990s gaming machine:\u0026ensp;`retro_3dfx_win98_x86_i440fx_bios_1c1t`\n    - Intel MacOS workstation:\u0026ensp;\u0026ensp;\u0026ensp;\u0026ensp;\u0026ensp;\u0026ensp;`work_macos_amd_x64_q35_uefi_6c12t`\n\n  - Purpose of the Guest (and suggested names):\n    - Gaming PC:\u0026ensp;\u0026ensp;\u0026ensp;\u0026ensp;\u0026ensp;\u0026ensp;`game`\n    - Legacy/Retro PC:\u0026ensp;\u0026nbsp;`retro`\n    - Server:\u0026ensp;\u0026ensp;\u0026ensp;\u0026ensp;\u0026ensp;\u0026ensp;\u0026ensp;\u0026ensp;\u0026ensp;\u0026ensp;\u0026ensp;`server`\n    - Workstation PC:\u0026ensp;\u0026ensp;`work`\n    - etc.\n\n  - Vendor name of the Video device:\n    - AMD:\u0026ensp;\u0026ensp;\u0026ensp;\u0026ensp;\u0026ensp;\u0026ensp;`amd`\n    - Intel:\u0026ensp;\u0026ensp;\u0026ensp;\u0026ensp;\u0026ensp;\u0026ensp;`intel`\n    - NVIDIA:\u0026ensp;\u0026ensp;\u0026ensp;\u0026nbsp;`nvidia`\n    - emulated:\u0026ensp;`virtgpu`\n\n    - non-mainstream or legacy:\n      - 3DFX:\u0026ensp;`3dfx`.\n\n  - Short name of the Operating System (OS):\n    - Apple Macintosh:\u0026ensp;\u0026ensp;\u0026ensp;`macos`\n    - Linux:\u0026ensp;\u0026ensp;\u0026ensp;\u0026ensp;\u0026ensp;\u0026ensp;\u0026ensp;\u0026ensp;\u0026ensp;\u0026ensp;\u0026ensp;\u0026ensp;\u0026ensp;\u0026ensp;`arch`, `debian`, `redhat`, `ubuntu`\n    - Microsoft Windows:\u0026ensp;`win98`, `winxp`, `win10`\n    - etc.\n\n  - Short name of the CPU architecture:\n    - AMD/Intel 32-bit:\u0026ensp;[`x86`](#15)\n    - AMD/Intel 64-bit:\u0026ensp;[`x64`](#14)\n    - ARM 32-bit:\u0026ensp;\u0026ensp;\u0026ensp;\u0026ensp;\u0026ensp;\u0026ensp;\u0026nbsp;[`aarch32`](#2)\n    - ARM 64-bit:\u0026ensp;\u0026ensp;\u0026ensp;\u0026ensp;\u0026ensp;\u0026ensp;\u0026nbsp;[`aarch64`](#3)\n    - etc.\n\n  - Virtualized chipset:\n    - I440FX:\u0026ensp;[`i440fx`](#6)\n      - Emulated, older chipset by Intel.\n      - Does support legacy Guests (example: Windows NT 5 and before, XP/2000, 9x).\n      - PCI bus only; expansion devices will exist on a PCI topology.\n      - Will accept PCIe devices.\n\n    - Q35:\u0026ensp;\u0026ensp;\u0026ensp;\u0026nbsp;[`q35`](#10)\n      - Virtual, newer platform.\n      - Native PCIe bus; expansion devices will exist on a PCIe topology.\n      - Does not support legacy Guests.\n\n  - Firmware:\n    - BIOS:\u0026ensp;[`bios`](#4)\n    - UEFI:\u0026ensp;\u0026nbsp;[`uefi`](#11)\n\n  - Short-hand of Core topology:\u0026ensp;`4c8t`\n    - Given the amount of physical cores (example: 4).\n    - Given the amount of logical threads per core (2 * 4 = 8).\n\n#### 6.3. Memory\nTo gather information of system memory, execute: `free --kibi --total --wide`\nFor more information on this topic, click [here](#1).\n\n| `\u003cmemory\u003e` Tag | Attribute | Value    | Description                                                       |\n| -------------- | --------- | -------- | ----------------------------------------------------------------- |\n|                | parent    | a number | The total amount of memory.                                       |\n|                | `unit`    | `\"KiB\"`  | Amount of memory in Kibibytes (1024 bytes, Kilo is 1000 bytes).   |\n\n| `\u003ccurrentMemory\u003e` Tag | Attribute | Value    | Description                                                       |\n| --------------------- | --------- | -------- | ----------------------------------------------------------------- |\n|                       | parent    | a number | The current amount of memory.                                     |\n|                       | `unit`    | `\"KiB\"`  | Amount of memory in Kibibytes (1024 bytes, Kilo is 1000 bytes).   |\n\n| `\u003cmemoryBacking\u003e` Tag | Attribute | Value       | Description                                                       |\n| --------------------- | --------- | ----------- | ----------------------------------------------------------------- |\n| `\u003callocation/\u003e`       | `mode`    | `immediate` | Specifies how memory allocation is performed.                     |\n| `\u003cdiscard/\u003e`          | none      | none        | TODO: define, what is this?                                                   |\n| [`\u003chugepages/\u003e`](#5)  | none      | none        | Enable Huge memory pages.                                         |\n| `\u003cnosharepages/\u003e`     | none      | none        | Prevents the Host from merging the same memory used among Guests. |\n\n##### 3.a. `\u003chugepages/\u003e`\n- Static allocation of *Host* memory pages into *Guest* memory pages.\n- **Huge:** Memory page size greater than 4K bytes (2M or 1G bytes). The greater\nthe size, the lower the Host overhead.\n- Dynamic *Host* memory page allocation is more flexible, but will require\ndefragmentation before use as *Guest* memory pages (before a Guest machine may start).\n- **Warning:** If the specified *Guest* memory pages exceeds the allocated\n*Host* memory pages, then the Guest machine will fail to start.\n\nFor more information on this topic, click [here](#5).\n\n#### 6.4. CPU Topology (1 / 2)\nTo gather information about your CPU, execute: `lscpu | grep --extended-regexp --ignore-case \"per core|per socket|socket\"`\n\n| `\u003cvcpu\u003e` Tag | Attribute   | Value      | Description                                                     |\n| ------------ | ----------- | ---------- | --------------------------------------------------------------- |\n|              | parent      | a number   | Specify number of Host threads for Guest (same as `\u003ccpu\u003e` tag). |\n|              | `placement` | `\"static\"` | Static allocation of Guest CPU threads.                         |\n\n| `\u003ciothreads\u003e` Tag | Attribute | Value       | Description                                                                                  |\n| ----------------- | --------- | ----------- | -------------------------------------------------------------------------------------------- |\n|                   | none      | a number    | Specify number of Host threads to manage storage block devices (see as `\u003ciothreadpin\u003e` tag). |\n\n| `\u003ccputune\u003e` Tag | Attribute  | Value       | Description                                  |\n| --------------- | ---------- | ----------- | -------------------------------------------- |\n| `\u003cvcpupin\u003e`     | `vcpu`     | a number    | Guest CPU: the Guest thread ID number.[\u003csup\u003e1\u003c/sup\u003e](#1-vcpupin-vcpu)      |\n| `\u003cvcpupin\u003e`     | `cpuset`   | a number    | Guest CPU: the Host thread ID number.[\u003csup\u003e2\u003c/sup\u003e](#2-vcpupin-cpuset)      |\n| `\u003cemulatorpin\u003e` | `cpuset`   | a number    | Guest IRQ: the Guest IRQ thread ID number.[\u003csup\u003e3\u003c/sup\u003e](#3-emulatorpin-cpuset) |\n| `\u003ciothreadpin\u003e` | `iothread` | a number    | Guest IO: the Guest IO thread ID number.    |\n| `\u003ciothreadpin\u003e` | `cpuset`   | a number    | Guest IO: the Host thread ID numbers.[\u003csup\u003e4\u003c/sup\u003e](#4-iothreadpin-cpuset)      |\n\n##### 4.a. `\u003cvcpupin vcpu\u003e`\n- Count does not exceed value as defined in `\u003cvcpu placement\u003e`.\n\n##### 4.b. `\u003cvcpupin cpuset\u003e`\n- Threads should not overlap Host process threads.\n\n##### 4.c. `\u003cemulatorpin cpuset\u003e`\n- Emulator threads handle Interrupt Requests for Guest hardware emulation.\n- Threads should not overlap Guest CPU threads as defined in `vcpupin cpuset`.\n\n##### 4.d. `\u003ciothreadpin cpuset\u003e`\n- IO threads handle IO processes for Guest virtual drives/disks.\n- Threads should not overlap Guest CPU threads as defined in `vcpupin cpuset`.\n\n##### 4.e. Example XML:\n```xml\n  \u003c!-- Given a 4-core, 8-thread CPU... --\u003e\n  \u003cvcpu placement=\"static\"\u003e4\u003c/vcpu\u003e           \u003c!-- Statically allocate four (4) cores to Guest. --\u003e\n  \u003ciothreads\u003e1\u003c/iothreads\u003e                    \u003c!-- Define one (1) thread to IO. --\u003e\n  \u003ccputune\u003e\n    \u003cvcpupin vcpu=\"0\" cpuset=\"2\"/\u003e            \u003c!-- Guest CPU: use the third core, first thread. --\u003e\n    \u003cvcpupin vcpu=\"1\" cpuset=\"6\"/\u003e            \u003c!-- Guest CPU: use the third core, second thread. --\u003e\n    \u003cvcpupin vcpu=\"2\" cpuset=\"3\"/\u003e            \u003c!-- Guest CPU: use the fourth core, first thread. --\u003e\n    \u003cvcpupin vcpu=\"3\" cpuset=\"7\"/\u003e            \u003c!-- Guest CPU: use the fourth core, second thread. --\u003e\n    \u003cemulatorpin cpuset=\"1,4\"/\u003e               \u003c!-- Guest IRQ: use the second core, two threads. --\u003e\n    \u003ciothreadpin iothread=\"1\" cpuset=\"1,4\"/\u003e  \u003c!-- Guest IO: use the second core, two threads. --\u003e\n  \u003c/cputune\u003e\n```\n\n#### 6.5. System Information Spoofing\nTo gather information about your BIOS, execute:\n\n\u0026ensp;`sudo dmidecode --type bios | grep --extended-regexp --ignore-case \"vendor|version|release date\"`\n\nTo gather information about your system, execute:\n\n\u0026ensp;`sudo dmidecode --type system | grep --extended-regexp --ignore-case \"manufacturer|product name|version|serial number|sku number|family\"`\n\n```xml\n  \u003c!-- BIOS and System spoofing (you may copy your actual info). --\u003e\n  \u003csysinfo type=\"smbios\"\u003e                                       \u003c!-- This line is necessary! --\u003e\n    \u003cbios\u003e\n      \u003centry name=\"vendor\"\u003eAmerican Megatrends Inc.\u003c/entry\u003e     \u003c!-- AMI is the industry standard BIOS vendor. --\u003e\n      \u003centry name=\"version\"\u003eversion_of_bios_firmware\u003c/entry\u003e\n      \u003centry name=\"date\"\u003eMM/DD/YYYY\u003c/entry\u003e\n    \u003c/bios\u003e\n    \u003csystem\u003e\n      \u003centry name=\"manufacturer\"\u003evendor_of_motherboard\u003c/entry\u003e\n      \u003centry name=\"product\"\u003eproduct_name\u003c/entry\u003e\n      \u003centry name=\"version\"\u003eDefault string\u003c/entry\u003e\n      \u003centry name=\"serial\"\u003eDefault string\u003c/entry\u003e\n      \u003centry name=\"sku\"\u003eDefault string\u003c/entry\u003e\n      \u003centry name=\"family\"\u003eDefault string\u003c/entry\u003e\n    \u003c/system\u003e\n  \u003c/sysinfo\u003e\n```\n\n#### 6.6. Features\n\nTODO: make the following inline XML into chart, describe each feature.\n\n```xml\n    \u003chyperv mode=\"custom\"\u003e\n      \u003crelaxed state=\"on\"/\u003e\n      \u003cvapic state=\"on\"/\u003e\n      \u003cspinlocks state=\"on\" retries=\"8191\"/\u003e\n      \u003cvpindex state=\"on\"/\u003e\n      \u003cruntime state=\"on\"/\u003e\n      \u003csynic state=\"on\"/\u003e\n\n      \u003cstimer state=\"on\"\u003e\n        \u003cdirect state=\"on\"/\u003e\n      \u003c/stimer\u003e\n\n      \u003creset state=\"on\"/\u003e\n      \u003cvendor_id state=\"on\" value=\"1234567890ab\"/\u003e\n      \u003cfrequencies state=\"on\"/\u003e\n      \u003creenlightenment state=\"on\"/\u003e\n      \u003ctlbflush state=\"on\"/\u003e\n      \u003cipi state=\"on\"/\u003e\n      \u003cevmcs state=\"on\"/\u003e\n    \u003c/hyperv\u003e\n    \u003ckvm\u003e\n      \u003chidden state=\"on\"/\u003e\n    \u003c/kvm\u003e\n    \u003cvmport state=\"off\"/\u003e\n    \u003cioapic driver=\"kvm\"/\u003e\n  \u003c/features\u003e\n```\n\n#### 6.7. CPU Topology (2 / 2)\nTo gather information about your CPU, execute: `lscpu | grep --extended-regexp --ignore-case \"per core|per socket|socket\"`\n\n##### 7.a. Example output:\n```\nThread(s) per core:                 2\nCore(s) per socket:                 8\nSocket(s):                          1\n```\n\nTODO: make the following inline XML into chart, describe each feature.\n\n```xml\n  \u003ccpu mode=\"host-passthrough\" check=\"none\" migratable=\"on\"\u003e  \u003c!-- Spoof the CPU info, with the actual CPU info. --\u003e\n    \u003ctopology sockets=\"1\" dies=\"1\" cores=\"6\" threads=\"2\"/\u003e\n    \u003ccache mode=\"passthrough\"/\u003e\n    \u003cfeature policy=\"disable\" name=\"hypervisor\"/\u003e\n    \u003cfeature policy=\"disable\" present=\"yes\"/\u003e\n    \u003ctimer name=\"tsc\" present=\"yes\" mode=\"native\"/\u003e\n  \u003c/clock\u003e\n```\n\n| `\u003ccpu\u003e` Tag  | Attribute    | Value                | Description                                                     |\n| ------------ | ------------ | -------------------- | --------------------------------------------------------------  |\n| parent       | `mode`       | `\"host-passthrough\"` | Spoof the Guest CPU info, with the actual Host CPU info.        |\n|              | `check`      | `\"none\"`             | TODO: add here.                                                 |\n|              | `migratable` | `\"on\"`               | TODO: add here.                                                 |\n| `\u003ctopology\u003e` | `sockets`    | a number             | The number of CPU sockets, or maxmium number of dies.           |\n|              | `dies`       | a number             | The number of CPU dies (typically one).                         |\n|              | `cores`      | a number             | The number of CPU cores.                                        |\n|              | `threads`    | a number             | The number of CPU threads per core (typically a factor of two). |\n| `\u003ccache\u003e`    | `mode`       | `\"passthrough\"`      | Passthrough the Host CPU cache.                                 |\n| `\u003cfeature\u003e`  | `policy`     | `\"disable\"`          | Disables policy.                                                |\n|              | `name`       | `\"hypervisor\"`       | TODO: add here.                                                 |\n| `\u003cfeature\u003e`  | `policy`     | `\"disable\"`          | Disables policy.                                                |\n|              | `present`    | `\"yes\"`              | TODO: add here.                                                 |\n| `\u003ctimer\u003e`    | `name`       | `\"tsc\"`              | TODO: add here.                                                 |\n|              | `present`    | `\"yes\"`              | TODO: add here.                                                 |\n|              | `mode`       | `\"native\"`           | TODO: add here.                                                 |\n\n#### 6.8. Power Management\n```xml\n  \u003c!-- Power Management --\u003e\n  \u003cpm\u003e\n    \u003csuspend-to-mem enabled=\"yes\"/\u003e   \u003c!-- Enable S3 Suspend (Sleep) --\u003e\n    \u003csuspend-to-disk enabled=\"yes\"/\u003e  \u003c!-- Enable S4 Suspend (Hibernation) --\u003e\n  \u003c/pm\u003e\n```\n\n#### 6.9. Devices\nFor more information on this topic, click [here](#8).\n\nTODO: make the following inline XML into chart, describe each feature???\n```xml\n  \u003c!-- Emulated, Paravirtual, Passed-through Real PCI/e, and Shared Memory devices --\u003e\n  \u003cdevices\u003e\n  ...\n  \u003c/devices\u003e\n```\n\n##### 6.9.a. Emulated Devices\n\nTODO: make this inline XML?\n- QEMU\n- RedHat\n- Other legacy devices\n  - SoftGPU https://github.com/JHRobotics/softgpu\n\nlorem ipsum\n\n##### 6.9.b. Real/Passthrough Hardware Devices\nTODO: make this inline XML?\n\n  - AMD\n    - Integrated\n    - Dedicated\n    - Reset bug\n  - Intel\n    - Integrated\n    - Dedicated\n      - **Note:** Not much research done regarding this topic. Please refer to any mentioned guides, the Reddit forum, or use an Internet search engine with the keywords `intel gpu vfio`.\n  - NVIDIA\n    - Problems:\n      - Boot bug (Solution: Use known-good copy of given GPU's video BIOS or VBIOS).\n      - TODO: add references, programs used, instructions, and XML here.\n\n##### 6.9.c. Memory Devices\n\nTODO: make this inline XML?\n  - Looking Glass\n  - Scream\n  - ???\n\n#### 6.10. QEMU Command Line\n\nTODO: make the following inline XML into chart, describe each feature.\n  - Evdev\n\n```xml\n  \u003cqemu:commandline\u003e...\u003c/qemu:commandline\u003e  \u003c!-- Add Evdev here --\u003e\n```\n\n#### 6.11. QEMU Overrides\n\nTODO: make the following inline XML into chart, describe each feature.\n\n```xml\n  \u003cqemu:override\u003e...\u003c/qemu:override\u003e\n```\n\n### 7. Benchmarking Guest Performance\nTODO: add here.\n\n### 8. Contact\nDo you need help? Please visit the [Issues][81] page.\n\n[81]: https://github.com/portellam/guest-machine-guide/issues\n\n### 9. References\n#### 1.\n\u0026nbsp;\u0026nbsp;**8.2. Memory Tuning on Virtual Machines Red Hat Enterprise Linux 7**.\nRed Hat Customer Portal. Accessed June 15, 2024.\n\n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003csup\u003ehttps://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/virtualization_tuning_and_optimization_guide/sect-virtualization_tuning_optimization_guide-memory-tuning.\u003c/sup\u003e\n\n#### 2.\n\u0026nbsp;\u0026nbsp;**AARCH64**. Wikipedia, May 30, 2024.\n\n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003csup\u003ehttps://en.wikipedia.org/wiki/AArch64.\u003c/sup\u003e\n\n#### 3.\n\u0026nbsp;\u0026nbsp;**ARM Architecture Family**. Wikipedia, May 31, 2024.\n\n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003csup\u003ehttps://en.wikipedia.org/wiki/ARM_architecture_family#AArch32.\u003c/sup\u003e\n\n#### 4.\n\u0026nbsp;\u0026nbsp;**BIOS**. Wikipedia, June 7, 2024.\n\n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003csup\u003ehttps://en.wikipedia.org/wiki/BIOS.\u003c/sup\u003e\n\n#### 5.\n\u0026nbsp;\u0026nbsp;**Hugepages**. Hugepages - Debian Wiki. Accessed June 15, 2024.\n\n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003csup\u003ehttps://wiki.debian.org/Hugepages.\u003c/sup\u003e\n\n#### 6.\n\u0026nbsp;\u0026nbsp;**I440fx PC (PC-I440fx, PC)**. i440fx PC (pc-i440fx, pc) - QEMU documentation.\nAccessed June 15, 2024.\n\n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003csup\u003ehttps://www.qemu.org/docs/master/system/i386/pc.html.\u003c/sup\u003e\n\n#### 7.\n\u0026nbsp;\u0026nbsp;**Intel 440FX**. Wikipedia, August 20, 2023.\n\n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003csup\u003ehttps://en.wikipedia.org/wiki/Intel_440FX.\u003c/sup\u003e\n\n#### 8.\n\u0026nbsp;\u0026nbsp;**PCI Overview**. QEMU Wiki. Accessed June 15, 2024.\n\n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003csup\u003ehttps://wiki.qemu.org/images/f/f6/PCIvsPCIe.pdf.\u003c/sup\u003e\n\n#### 9.\n\u0026nbsp;\u0026nbsp;**PCI passthrough via OVMF**. ArchWiki. Accessed June 14, 2024.\n\n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003csup\u003ehttps://wiki.archlinux.org/title/PCI_passthrough_via_OVMF.\u003c/sup\u003e\n\n#### 10.\n\u0026nbsp;\u0026nbsp;**Q35**. QEMU Wiki. Accessed June 15, 2024.\n\n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003csup\u003ehttps://wiki.qemu.org/images/4/4e/Q35.pdf.\u003c/sup\u003e\n\n#### 11.\n\u0026nbsp;\u0026nbsp;**UEFI**. Wikipedia, June 7, 2024.\n\n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003csup\u003ehttps://en.wikipedia.org/wiki/UEFI.\u003c/sup\u003e\n\n#### 12.\n\u0026nbsp;\u0026nbsp;**VFIO - ‘Virtual Function I/O’ - The Linux Kernel Documentation**.\nThe linux kernel. Accessed June 14, 2024.\n\n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003csup\u003ehttps://www.kernel.org/doc/html/latest/driver-api/vfio.html.\u003c/sup\u003e\n\n#### 13.\n\u0026nbsp;\u0026nbsp;**VFIO Discussion and Support**. Reddit. Accessed June 14, 2024.\n\n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003csup\u003ehttps://www.reddit.com/r/VFIO/.\u003c/sup\u003e\n\n#### 14.\n\u0026nbsp;\u0026nbsp;**X64**. Wikipedia, July 27, 2023.\n\n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003csup\u003ehttps://en.wikipedia.org/wiki/X64.\u003c/sup\u003e\n\n#### 15.\n\u0026nbsp;\u0026nbsp;**X86**. Wikipedia, May 18, 2024.\n\n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003csup\u003ehttps://en.wikipedia.org/wiki/X86.\u003c/sup\u003e\n\n#### 16.\n\u0026nbsp;\u0026nbsp;**XML Design Format**. GitHub - libvirt/libvirt.\nAccessed June 18, 2024.\n\n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003csup\u003ehttps://github.com/libvirt/libvirt/blob/master/docs/formatdomain.rst.\u003c/sup\u003e\n\n## TODO:\n- [x] add About.\n- [ ] add Documentation for:\n  - [x] guest XML layout\n    - [x] name syntax\n    - [x] introduction\n    - [ ] memory\n    - [ ] cpu topology (1/2)\n    - [ ] system information spoofing\n    - [ ] features\n    - [ ] cpu topology (2/2)\n    - [ ] power management\n    - [ ] qemu command line\n      - [ ] evdev macro\n      - [ ] gpu stuff?\n    - [ ] qemu overrides\n  - [ ] host optimizations\n  - [ ] guest optimizations\n  - [ ] benchmarking performance\n- [x] add References.\n- [ ] use collapsable dropdowns (https://gist.github.com/pierrejoubert73/902cc94d79424356a8d20be2b382e1ab).\n- [ ] add Guest XML file with all lines referenced in \"Guest XML Layout\".\n- [ ] add pictures of virt-manager.\n- [ ] flesh out \"Guest XML Layout\".\n- [ ] how to setup virtio disks (virtio, virtio-scsi).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fportellam%2Fguest-machine-guide","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fportellam%2Fguest-machine-guide","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fportellam%2Fguest-machine-guide/lists"}