Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
dc7335d
real-hw-test: add UEFI application scaffold
phip1611 Aug 16, 2026
3ed1141
real-hw-test: add QEMU development environment
phip1611 Aug 16, 2026
e3cd523
nix: add flake development environment
phip1611 Aug 16, 2026
6cc4a1d
real-hw-test: discover and disconnect serial devices
phip1611 Aug 16, 2026
ae93c9f
real-hw-test: add barebones UART preflight
phip1611 Aug 16, 2026
f972472
real-hw-test: exercise uart_16550 devices
phip1611 Aug 16, 2026
ce0bb7e
real-hw-test: add interactive serial checks
phip1611 Aug 16, 2026
aa61f5f
real-hw-test: document and guard hardware deployment
phip1611 Aug 16, 2026
f374e11
real-hw-test: disable firmware watchdog
phip1611 Aug 16, 2026
e201f0d
mmio: use wrapping pointer offsets
phip1611 Aug 16, 2026
3707925
real-hw-test: persist diagnostics on the boot volume
phip1611 Aug 16, 2026
39d4868
real-hw-test: bound nonblocking transmit checks
phip1611 Aug 16, 2026
ac3c2cb
real-hw-test: report persisted log location
phip1611 Aug 16, 2026
338454c
ci: smoke-test UEFI UART paths in QEMU
phip1611 Aug 16, 2026
60752aa
real-hw-test: gate x86-specific code paths
phip1611 Sep 2, 2026
99ab20f
real-hw-test: reach PCI I/O BARs through the ACPI I/O window
phip1611 Sep 2, 2026
0bd2baf
real-hw-test: parameterize the build and QEMU tooling per architecture
phip1611 Sep 2, 2026
090dff3
ci: smoke-test aarch64 UEFI UART paths in QEMU
phip1611 Sep 2, 2026
7adbe81
real-hw-test: record the architecture in persisted logs
phip1611 Sep 2, 2026
128bac2
real-hw-test: build and deploy every architecture at once
phip1611 Sep 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 59 additions & 0 deletions .github/workflows/real-hw-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
name: UEFI real-hardware test smoke test

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I do not like that the driver needs to know anything about the CI test. Let's strip all functionality of the testing infrastructur that depends on this.


on: [pull_request, merge_group]

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}-${{ github.event_name }}
cancel-in-progress: true

jobs:
qemu:
name: Headless QEMU TCG (${{ matrix.arch }})
runs-on: ubuntu-latest
timeout-minutes: 15
strategy:
fail-fast: false
matrix:
arch: [x86_64, aarch64]
steps:
- uses: actions/checkout@v7
- name: Setup Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
targets: x86_64-unknown-uefi,aarch64-unknown-uefi
- name: Install QEMU, firmware, and harness tools
run: |
sudo apt-get update
if [[ "${{ matrix.arch }}" == x86_64 ]]; then
sudo apt-get install -y dosfstools mtools ovmf qemu-system-x86 socat
else
sudo apt-get install -y dosfstools mtools qemu-efi-aarch64 qemu-system-arm socat
fi
- name: Run deterministic UEFI checks
working-directory: real-hw-test
run: |
if [[ "${{ matrix.arch }}" == x86_64 ]]; then
# The ovmf package layout varies across Ubuntu releases: combined
# vs split images, 4M variants, and symlinks. Prefer combined.
OVMF=""
for candidate in /usr/share/ovmf/OVMF.fd /usr/share/OVMF/OVMF.fd; do
if [[ -r "$candidate" ]]; then
OVMF=$candidate
break
fi
done
if [[ -z "$OVMF" ]]; then
OVMF=$(find -L /usr/share/OVMF /usr/share/ovmf -maxdepth 1 \
-name 'OVMF_CODE*.fd' -readable 2>/dev/null | sort | head -n1)
fi
if [[ -z "$OVMF" ]]; then
echo "error: the ovmf package did not install a usable image:" >&2
ls -la /usr/share/OVMF /usr/share/ovmf >&2 || true
exit 1
fi
make ci-qemu OVMF="$OVMF"
else
export AAVMF_CODE=/usr/share/AAVMF/AAVMF_CODE.fd
export AAVMF_VARS=/usr/share/AAVMF/AAVMF_VARS.fd
make ci-qemu ARCH=aarch64
fi
1 change: 1 addition & 0 deletions real-hw-test/.envrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
use flake

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

split the addition of flake.nix into a dedicated commit, and squash this change into that new commit

2 changes: 2 additions & 0 deletions real-hw-test/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
/build/
/target/
267 changes: 267 additions & 0 deletions real-hw-test/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 10 additions & 0 deletions real-hw-test/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
[package]
name = "uart-16550-real-hw-test"
version = "0.1.0"
edition = "2024"
publish = false

[dependencies]
jiff = { version = "0.2", default-features = false }
uart_16550 = { path = ".." }
uefi = { version = "0.38.0", features = ["alloc", "global_allocator", "jiff02", "panic_handler"] }
Loading