{"id":47974368,"url":"https://github.com/cyberus-technology/guest-tests","last_synced_at":"2026-04-04T10:52:51.175Z","repository":{"id":237238970,"uuid":"791200799","full_name":"cyberus-technology/guest-tests","owner":"cyberus-technology","description":"Mini operating systems for targeted testing of x86 virtualization stacks user at Cyberus Technology.","archived":false,"fork":false,"pushed_at":"2025-12-01T18:52:27.000Z","size":1564,"stargazers_count":10,"open_issues_count":1,"forks_count":3,"subscribers_count":8,"default_branch":"main","last_synced_at":"2026-04-04T10:52:49.933Z","etag":null,"topics":["cpp","low-level","nix","testing","virtualization","x86"],"latest_commit_sha":null,"homepage":"https://cyberus-technology.de/en/articles/testing-virtualization-stacks-utilizing-mini-kernels","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cyberus-technology.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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-24T09:21:56.000Z","updated_at":"2026-02-05T01:33:49.000Z","dependencies_parsed_at":"2025-01-17T15:30:26.003Z","dependency_job_id":"6fb7051a-f3a2-4ce8-864d-147d0ed7af1e","html_url":"https://github.com/cyberus-technology/guest-tests","commit_stats":null,"previous_names":["cyberus-technology/guest-tests"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cyberus-technology/guest-tests","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cyberus-technology%2Fguest-tests","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cyberus-technology%2Fguest-tests/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cyberus-technology%2Fguest-tests/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cyberus-technology%2Fguest-tests/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cyberus-technology","download_url":"https://codeload.github.com/cyberus-technology/guest-tests/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cyberus-technology%2Fguest-tests/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31397055,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T10:20:44.708Z","status":"ssl_error","status_checked_at":"2026-04-04T10:20:06.846Z","response_time":60,"last_error":"SSL_read: 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":["cpp","low-level","nix","testing","virtualization","x86"],"created_at":"2026-04-04T10:52:51.056Z","updated_at":"2026-04-04T10:52:51.139Z","avatar_url":"https://github.com/cyberus-technology.png","language":"C++","readme":"# Cyberus Guest Tests\n\nThis repository contains a set of various guest integration tests to test\nvirtualization stacks. Technically, a guest test is a tiny kernel that is\nbooting on the hardware. For example, guest tests report whether a VM host\nproperly emulates cpuid or the LAPIC. They report successes or failures of their\ntest cases by printing text to the serial device. The output follows the SoTest\nprotocol.\n\n\n## Guidelines and other Documents\n\nPlease have a look at the [`.doc`](/doc/README.md) directory.\n\n\n## Binary Format, Supported Boot Flows, Limitations, and Restrictions\n\nEach guest test is a statically linked ELF binary at 8M. They are not\nrelocatable in physical or virtual memory.\n\nEach guest test is bootable via\n\n- [Multiboot1](https://www.gnu.org/software/grub/manual/multiboot/multiboot.html),\n- [Multiboot2](https://www.gnu.org/software/grub/manual/multiboot2/multiboot.html),\n  and\n- [Xen PVH](https://xenbits.xen.org/docs/unstable/misc/pvh.html).\n\nThe CMake-build builds the tests as `.elf32` and `.elf64` (same content but\ndifferent ELF header for Multiboot1 bootloaders). Additionally, the Nix build\nallows ready-to-boot `.efi` and `.iso` variants (see below for more\ninformation) for boot in legacy as well as UEFI environments.\n\u003c!--\nTODO add that .iso can also be used in EFI boot, once that is implemented\n--\u003e\n\n\n## Supported Text Output Channels\n\nA guest test has multiple ways to transfer its output to the outer world. The\noptions listed below mostly can be configured via the command line.\n\n- **Serial Console** (COM port):\n  - Active as default or when specified.\n  - PCI serial cards as well the builtin COM ports are supported.\n- **xHCI Console**:\n  - Active when specified.\n  - Needs an XHCI controller with the debug capability.\n  - Reference: _eXtensible Host Controller Interface for Universal Serial Bus_\n               Section 7.6 _Debug Capability_\n- **QEMU Debugcon**:\n  - Active, when virtualized.\n  - This output channel is useful to debug cmdline parsing and other logic that\n    is executed before a serial or xHCI console is initialized.\n\n\n## Command Line Configuration \u0026 Console Output\n\nThe following command line configurations are accepted by the test binaries:\n\n⚠️ _Only `--flag` and `--option=value` syntax is supported._\n\n- `--serial` or `--serial=\u003cport: number\u003e`:\n  Enable serial console. You can explicitly specify the x86 I/O `port`, such as\n  `42` or `0x3f8`. It is **recommended to use this as a flag** so that the\n  program can automatically discover the port.\n- `--xhci` or `--xhci=\u003cidentifier: string\u003e`:\n  Enable xHCI debug console. If no identifier is provided, a default is used.\n- `--xhci-power=0|1`:\n  Set the USB power cycle method (`0` = nothing, `1` = powercycle).\n- `--disable-testcases=testA,testB,testC`:\n  Comma-separated list of test cases that you want to disable. They will be\n  skipped. For example:\n  To disable `TEST_CASE(foo) {}` you can pass `--disable-testcases=foo`.\n\n\n## Hardware Requirements\n\nThis section discusses the requirements of the guests tests to run on real\nhardware. If you run them virtualized, your virtual hardware platform must\nfulfill the same requirements.\n\nAll guest tests are created for x86_64 machines targeting\n[Intel westmere](https://en.wikipedia.org/wiki/Westmere_(microarchitecture)) and\nabove. \u003c!-- Keep in sync with compiler flags! --\u003e\nTypical platform-related functionality is expected to be available as well, such\nas the LAPIC, the IOAPIC, but also legacy devices such as the serial device and\nthe PIT.\n\nHowever, for some functionality that is not \"basic enough\" and whose\navailability is easily detectable at runtime, the guest tests check for their\npresence and skip relevant test cases if the conditions are not met. Examples\nfor that are the availability of:\n\n- Platform (devices, MSRs):\n  - HPET\n  - x2APIC mode\n  - TSC deadline mode of LAPIC timer\n- ISA extensions:\n  - `movbe` support\n  - AVX support\n\n\n### Test-specific machine expectations\n\nSome guest tests have specific expectations that are only relevant to that\nsingle guest test.\n\n- `cpuid` test:\n  - Checks that the extended cpuid brand string prefix is one of the definitions\n    in [`cpuid/main.cpp`](/src/tests/cpuid/main.cpp).\n  - To extend that list or make the overall mechanism more flexible, please\n    submit an issue or an MR.\n\n\n\n## Consume the Guest Tests\n\nCurrently, you only can build the Guest Tests from source. Please refer to our\n[/doc/DEVELOPER.md](/doc/DEVELOPER.md) for more details.\n\n\n## Developer Documentation\n\nPlease look at [/doc/DEVELOPER.md](/doc/DEVELOPER.md). This document mainly\nfocuses on Cyberus employees with access to our internal network and\ninfrastructure.\n\n\n## License\n\nThis repository is licensed under GPLv2. Files under `src/contrib` are licensed\nunder their corresponding license in the file header.\n\nSee [LICENSE file](./LICENSE).\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcyberus-technology%2Fguest-tests","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcyberus-technology%2Fguest-tests","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcyberus-technology%2Fguest-tests/lists"}