100 Commits
Author SHA1 Message Date
Nicholas Bishop b578053269 Fix connect_controller to take a list for driver_image.
The parameter in `uefi-raw` was wrong. This parameter is supposed to be
a null-terminated array of handles. Changed it to `*const Handle`
accordingly.

This makes the `uefi` wrapper a little ugly, since the equivalent if
`&[Option<Handle>]`, and the user must ensure that the last element of
the slice is `None`. Fortunately this parameter is usually unused, and
the user can just pass in `&[]`, so the API ugliness should be OK.
2026-05-03 20:06:37 -04:00
Nicholas Bishop 91267caf71 Merge pull request #1934 from rust-osdev/timer-fixes
uefi: make TimerTrigger more pleasant to use
2026-04-26 20:22:13 +00:00
Nicholas Bishop 2ac78e4ad9 Merge pull request #1918 from rust-osdev/release-v0.37
release: uefi-raw-0.14.0, uefi-0.37
2026-03-23 01:23:16 +00:00
Nicholas Bishop 09f7b40003 Merge pull request #1915 from rust-osdev/var-to-cstr16
runtime: add `CStr16::from_bytes_with_nul` for UCS-2 strings in UEFI Variables
2026-03-23 00:35:39 +00:00
Nicholas Bishop 75076ac220 Replace a couple as casts with ptr::from_ref 2026-03-21 18:32:28 -04:00
Nicholas Bishop 3210a82c51 Merge pull request #1875 from rust-osdev/uefi-serial-improve-read-write
uefi: serial: add read_exact() and write_exact() + fix core::fmt::Write for Serial
2026-03-21 22:11:33 +00:00
Nicholas Bishop 093e2278e6 test-runner: rename cpy -> copy to make typos happy 2026-03-15 17:20:53 +01:00
Nicholas Bishop 1b06a3b613 Fix new clippy lints 2026-03-08 14:20:46 -04:00
Nicholas Bishop e65277c012 Merge pull request #1900 from rust-osdev/uefi-serial-improve-read-write-2
uefi: serial: improve documentation and correctness of read() and write()
2026-02-28 22:11:14 +00:00
Nicholas Bishop 756590206f uefi: Add handle_protocol doc alias to open_protocol functions 2026-02-07 13:34:11 -05:00
Nicholas Bishop 1580a4ef88 uefi: Update doc for OpenProtocolParams::GetProtocol
Make it clear that this can be used by applications as well as
drivers. Also add safety docs.
2026-02-07 13:06:54 -05:00
Nicholas Bishop aee9bf1d8c uefi: Add warnings to OpenProtocolParams::Exclusive/ByDriverExclusive 2026-02-07 13:06:54 -05:00
Nicholas Bishop 9b8322d38e uefi: Sort OpenProtocolAttributes variants numerically 2026-02-07 12:45:58 -05:00
Nicholas Bishop 2ed6563140 Merge pull request #1883 from rust-osdev/renovate/nix-0.x
fix(deps): update rust crate nix to 0.31.0
2026-01-26 04:45:26 +00:00
Nicholas Bishop d8482d79a5 Merge pull request #1884 from rust-osdev/revert-1876-fix-ci
Revert "ci/fix: upgrade QEMU on windows"
2026-01-26 04:29:20 +00:00
Nicholas Bishop 98f0d5c33c Revert "ci/fix: upgrade QEMU on windows" 2026-01-25 23:21:36 -05:00
Nicholas Bishop c417fbc332 Merge pull request #1877 from rust-osdev/improve-handles-doc
uefi: boot: improve documentation for handles
2026-01-26 04:16:04 +00:00
Nicholas Bishop 2f10a86f29 Merge pull request #1874 from rust-osdev/uefi-serial-documentation
uefi: serial: improve overall documentation
2026-01-25 20:12:33 +00:00
Nicholas Bishop a462287fb7 Merge pull request #1872 from rust-osdev/uefi-raw-serial-fix-mutability
uefi-raw: serial: fix mutability
2026-01-25 20:08:34 +00:00
Nicholas Bishop 82007aac22 Merge pull request #1876 from rust-osdev/fix-ci
ci/fix: upgrade QEMU on windows
2026-01-25 20:04:05 +00:00
Nicholas Bishop 12310f0ee4 uefi: Use if-let chains 2026-01-21 13:23:33 -05:00
Nicholas Bishop 1363353804 uefi: Make additional functions const 2026-01-21 13:23:33 -05:00
Nicholas Bishop f7862d0e41 uefi: Use is_multiple_of 2026-01-21 13:23:33 -05:00
Nicholas Bishop 13b80d0c5c Bump MSRV to 1.88 2026-01-21 13:23:32 -05:00
Nicholas Bishop 3f8049ebca xtask: Replace addr_of with raw pointer syntax 2026-01-20 15:21:16 -05:00
Nicholas Bishop 45116235d9 uefi: Replace addr_of_mut with raw pointer syntax 2026-01-20 15:21:16 -05:00
Nicholas Bishop 5e8c1b5c49 test-runner: Replace addr_of with raw pointer syntax 2026-01-20 15:21:16 -05:00
Nicholas Bishop 21db13ef35 Merge pull request #1857 from rust-osdev/doc
uefi: improve doc (add short glossary/important terms overview)
2026-01-19 19:00:44 +00:00
Nicholas Bishop 2f9eb49c78 Merge pull request #1860 from rust-osdev/flake-update
flake: update (Nix shell: rust 1.86 -> 1.92)
2026-01-05 05:16:47 +00:00
Nicholas Bishop 7fea06474d Merge pull request #1850 from rust-osdev/http
uefi: http: fix integration test
2025-12-27 23:10:40 +00:00
Nicholas Bishop 8cbc3c0354 Merge pull request #1830 from seijikun/mr-pci-enumerate3
uefi: Refactor PciRootBridgeIo::enumerate() with tree-topology information
2025-12-12 03:50:58 +00:00
Nicholas Bishop f97a483943 Merge pull request #1810 from rust-osdev/uefi-0.36.1
release: uefi-raw-0.13.0, uefi-0.36.1
2025-11-05 17:42:52 +00:00
Nicholas Bishop d75faccd5d Merge pull request #1809 from rymdbar/truthful-install-statement
book: Rephrase target installation
2025-11-03 19:15:20 +00:00
Nicholas Bishop 0042a3d497 Merge pull request #1811 from rust-osdev/clippy-fixes
clippy: latest nightly fixes
2025-11-03 00:05:12 +00:00
Nicholas Bishop 168c1aabcb Merge pull request #1800 from rust-osdev/doc-dp-build
uefi: improve doc for device path construction
2025-10-30 13:32:53 +00:00
Nicholas Bishop 8651810a16 Merge pull request #1802 from rust-osdev/bishop-check-bool
xtask: Check uefi-raw for uses of the primitive bool type
2025-10-26 22:51:14 +00:00
Nicholas Bishop ca63bac3e9 Merge branch 'main' into bishop-check-bool 2025-10-26 18:46:30 -04:00
Nicholas Bishop 0df17343d2 Merge pull request #1801 from rust-osdev/bishop-use-bool
uefi-raw: Replace remaining uses of bool with Boolean
2025-10-26 22:40:01 +00:00
Nicholas Bishop 22d4f6a4a3 Merge pull request #1795 from rust-osdev/release
release: uefi-raw-0.12.0, uefi-macros-0.19.0, uefi-0.36.0
2025-10-21 16:50:58 +00:00
Nicholas Bishop 4b7f5ba710 Merge pull request #1774 from rust-osdev/clippy-tightening-2
style: apply/fix more clippy lints (from cargo::nursery) (2/2)
2025-10-21 16:21:44 +00:00
Nicholas Bishop 77c57a63e5 Merge pull request #1794 from rust-osdev/followup
uefi: remove inconsistent println!
2025-10-21 16:21:19 +00:00
Nicholas Bishop a8412db5f3 uefi: Wrap NmvePassThruProtocol in UnsafeCell
See abdd6c4ff8 ("uefi: Wrap AtaPassThruProtocol in UnsafeCell") for details on
why this change is needed.
2025-10-20 20:24:24 -04:00
Nicholas Bishop 5d034f0b1e uefi: Wrap ScsiPassThruProtocol in UnsafeCell
See abdd6c4ff8 ("uefi: Wrap AtaPassThruProtocol in UnsafeCell") for details on
why this change is needed.
2025-10-20 20:23:47 -04:00
Nicholas Bishop f2dfa4d0b3 Merge pull request #1782 from rust-osdev/bishop-ata-ub-fix-2
uefi: Wrap AtaPassThruProtocol in UnsafeCell
2025-10-21 00:09:18 +00:00
Nicholas Bishop e762976933 Merge pull request #1781 from rust-osdev/core-net-2
uefi-raw: add unit test for typical high-level net API usage
2025-10-21 00:09:06 +00:00
Nicholas Bishop a897b4a115 Merge pull request #1785 from rust-osdev/pxe-test
uefi: document udp_read of PXE protocol + improve test
2025-10-21 00:07:25 +00:00
Nicholas Bishop abdd6c4ff8 uefi: Wrap AtaPassThruProtocol in UnsafeCell
The existing code had some potential UB; it created a mutable pointer from a
const reference and passed it across the FFI boundary. (Whether the pointee is
actually mutated depends on the firmware implementation.)

An `UnsafeCell` allows the interior data to be mutated through a const
reference. `AtaPassThru` now contains an `UnsafeCell<AtaPassThruProtocol>`,
which allows a mutable pointer to be created with less risk of UB. (Note that
it's still not allowed to create multiple mutable _references_ to the data, but
as long as only raw pointers are used, it should be OK.)

The `AtaDevice` and `AtaDeviceIterator` types have been adjusted to take a
reference to the `UnsafeCell`.
2025-10-12 14:57:20 -04:00
Nicholas Bishop c49add99fd Merge pull request #1778 from rust-osdev/core-net-v2-4
uefi-raw: net: add convenient into_* helpers
2025-10-08 22:55:07 +00:00
Nicholas Bishop 80f71fb116 Merge pull request #1771 from rust-osdev/renovate/codecov-codecov-action-5.x
chore(deps): update codecov/codecov-action action to v5.5.1
2025-10-01 21:15:22 +00:00
Nicholas Bishop f20b2f735b Merge pull request #1761 from rust-osdev/clippy-tightening
style: apply/fix more clippy lints (from cargo::nursery)
2025-10-01 18:56:06 +00:00
Nicholas Bishop 06c83b2eb3 Merge pull request #1773 from rust-osdev/fix-ci
ci: fix latest nightly issues
2025-10-01 18:13:11 +00:00
Nicholas Bishop ab85092a74 Merge pull request #1764 from rust-osdev/doc-arguments
uefi: doc: Parameters -> Arguments
2025-09-14 23:02:39 +00:00
Nicholas Bishop 22ec0a1677 Merge pull request #1758 from rust-osdev/bugfix-mem-gop
uefi: memory safety fixes (UB!)
2025-09-14 22:52:41 +00:00
Nicholas Bishop 8a3ec8e0ce Merge pull request #1759 from rust-osdev/doc-improv
style: cargo doc fixes and improvements
2025-09-12 20:54:23 +00:00
Nicholas Bishop 99c7ded1fd Merge pull request #1760 from rust-osdev/clippy-misc-fixes
style: misc clippy fixes
2025-09-12 20:54:08 +00:00
Nicholas Bishop ee26d747cc test-runner: Add example of using the Input protocol 2025-09-03 14:20:12 -04:00
Nicholas Bishop 4576f5a0dc Merge pull request #1751 from rust-osdev/doc2
uefi-raw: changelog update
2025-08-25 15:59:35 +00:00
Nicholas Bishop 020674e265 Merge pull request #1748 from rust-osdev/core-net-v3
uefi-raw: various small net improvements
2025-08-25 15:25:33 +00:00
Nicholas Bishop 1fc781b871 Merge pull request #1747 from rust-osdev/foobar
uefi-raw: move types to net module
2025-08-24 17:36:25 +00:00
Nicholas Bishop 577c1db3e7 Merge pull request #1745 from rust-osdev/renovate/actions-checkout-5.x
chore(deps): update actions/checkout action to v5
2025-08-18 20:50:28 +00:00
Nicholas Bishop 00478b2541 Merge pull request #1746 from rust-osdev/renovate/lock-file-maintenance
chore(deps): lock file maintenance
2025-08-18 20:40:37 +00:00
Nicholas Bishop a288116532 Merge pull request #1740 from RenTrieu/enhancement/efi_shell_interface_cur_dir
EFI Shell Interface: CurDir Functions
2025-08-18 20:18:08 +00:00
Nicholas Bishop c5bf934649 Merge pull request #1742 from rust-osdev/improve-cargo-xtask-v2
xtask: improved error output for "wrong" repr
2025-08-16 17:15:13 +00:00
Nicholas Bishop 2da288d2ac Merge pull request #1719 from seijikun/mr-hii-database
Add (partial) safe protocol implementation for EFI_HII_DATABASE_PROTOCOL
2025-08-05 22:16:50 +00:00
Nicholas Bishop 7e0b8b3d5d Use size_of/align_of from prelude
As of the 2024 edition, size_of/size_of_val/align_of/align_of_val are in the
prelude, so no need to import or use a fully qualified path.
2025-08-02 16:37:20 -04:00
Nicholas Bishop d30f3c3103 Merge pull request #1732 from PelleKrab/uefi_raw_IoMmu
feat: `uefi-raw` IoMmu Protocol Impl
2025-07-31 22:40:02 +00:00
Nicholas Bishop e3b654deed Merge pull request #1731 from Jonathas-Conceicao/acpi_table_protocol
protocols: Add ACPI Table protocol
2025-07-29 19:49:39 +00:00
Nicholas Bishop 7779ab4d62 Merge pull request #1729 from rust-osdev/renovate/lock-file-maintenance
chore(deps): lock file maintenance
2025-07-24 20:24:46 +00:00
Nicholas Bishop 963217e9f5 Merge pull request #1684 from seijikun/mr-hiicfg
uefi: Add HiiKeywordHandler and HiiConfigAccess protocol
2025-07-06 21:15:13 +00:00
Nicholas Bishop 8049e5f53e Merge pull request #1716 from rust-osdev/doc-links
doc: fix broken links
2025-07-06 18:05:18 +00:00
Nicholas Bishop b760a3c29d Merge pull request #1714 from rust-osdev/bishop-status-cleanup
uefi/test-runner: Remove `crate::` and `uefi::` prefix from Status
2025-06-29 17:34:17 +00:00
Nicholas Bishop c3df136f73 uefi/test-runner: Remove crate:: and uefi:: prefix from Status
In many places, especially doc comments, `Status` was referred to as
`uefi::Status` or `crate::Status`. Consistently use `Status` instead, adding
imports as needed. Note that in cases where `Status` is only used in docstrings,
the `use` is gated by `#[cfg(doc)]`. (This avoids needing a bunch of manual
`Status::*` links in docstrings.)

This is mostly a mechanical find-replace change, except for adding imports where
needed.
2025-06-28 14:02:48 -04:00
Nicholas Bishop e24491f9af Revert "ci: Temporarily pin to older nightly"
This (partially) reverts commit bdd3650fab.
2025-06-19 15:48:17 -04:00
Nicholas Bishop 427689557f xtask: Skip uefi-macros ui tests on the nightly toolchain
These tests are sensitive to compiler version, and sometimes the output on
nightly doesn't match the stable toolchain.
2025-06-19 15:48:15 -04:00
Nicholas Bishop 4b94bd67e6 uefi/test-runner: Fix mismatched-lifetime-syntaxes lints 2025-06-19 15:43:53 -04:00
Nicholas Bishop 5d233a5cb0 Merge pull request #1612 from rust-osdev/doc-devicepath
doc/uefi: improve Protocol documentation
2025-06-19 17:27:43 +00:00
Nicholas Bishop fc0c76fc9c Merge pull request #1683 from seijikun/mr-raw-hiicfg
uefi-raw: Add HII_CONFIG_ACCESS and CONFIG_KEYWORD_HANDLER protocol bindings
2025-06-13 04:34:38 +00:00
Nicholas Bishop 01b52b9bfe xtask: Allow clippy::collapsible_if lint
Let-chains are being stabilized in 1.88, so this lint triggers on nightly. Since
current stable is 1.87, we can't change the code to fix this lint, and we also
can't use `expect` here. For now, the best solution is just to allow the lint.
2025-06-08 15:11:27 -04:00
Nicholas Bishop a68b29c00d uefi: Fix clippy::uninlined_format_args lint 2025-06-08 14:57:18 -04:00
Nicholas Bishop 18f5a61cdd test-runner: Fix clippy::uninlined_format_args lint 2025-06-08 14:54:23 -04:00
Nicholas Bishop fafc77bc9e uefi: Fix clippy::unnecessary_unwrap lint 2025-06-08 14:33:48 -04:00
Nicholas Bishop 7355810e70 uefi: Fix mismatched_lifetime_syntaxes lint 2025-06-08 14:26:16 -04:00
Nicholas Bishop 43aee0840e test-runner: Fix mismatched_lifetime_syntaxes lint 2025-06-08 14:26:16 -04:00
Nicholas Bishop d339387e2a xtask: Fix mismatched_lifetime_syntaxes lint in device_path_gen 2025-06-08 14:26:16 -04:00
Nicholas Bishop ca957ae3f1 Merge pull request #1686 from diamant3/patch-1
fix typo `ctr16!` to `cstr16!`
2025-06-07 20:51:28 +00:00
Nicholas Bishop 580f3d8d5a Merge pull request #1689 from rust-osdev/bishop-pin-nightly
ci: Temporarily pin to older nightly
2025-06-07 20:40:43 +00:00
Nicholas Bishop bdd3650fab ci: Temporarily pin to older nightly
There are a bunch of new lint errors that need to be addressed before we can
successfully build with latest nightly.
2025-06-07 16:33:51 -04:00
Nicholas Bishop 70a63b8924 Merge pull request #1621 from rust-osdev/snp-test
SNP Integration Test: Improve Clarity
2025-06-02 18:14:51 +00:00
Nicholas Bishop 462de06022 Merge pull request #1680 from RenTrieu/enhancement/efi_shell_protocol_uefi_raw
Updating Uefi Raw for EFI Shell Protocol
2025-06-02 17:56:45 +00:00
Nicholas Bishop dab0752e39 Merge pull request #1674 from seijikun/mr-safe-pciroot
uefi: Add (partial) safe protocol implementation for PCI_ROOT_BRIDGE_IO_PROTOCOL
2025-05-29 19:23:40 +00:00
Nicholas Bishop 3ee16d388a Merge pull request #1625 from JarlEvanson/usb-io
uefi: Add safe EFI_USB_IO_PROTOCOL bindings
2025-05-23 19:47:20 +00:00
Nicholas Bishop dfce69bf3d Merge pull request #1676 from rust-osdev/doc-feature-selection
doc: help with feature selection
2025-05-20 19:34:27 +00:00
Nicholas Bishop bd4c6a8a84 Merge pull request #1677 from fox0/deprecated
uefi: deprecated since 0.36.0
2025-05-20 19:24:09 +00:00
Nicholas Bishop b171db7ec4 Merge pull request #1640 from rust-osdev/cleanup
cleanup IPConfig2/Http Protocol
2025-05-19 20:18:30 +00:00
Nicholas Bishop 2e1df6a1a8 Merge pull request #1675 from rust-osdev/clippy
clippy: fix upcoming nightly lints
2025-05-19 19:55:26 +00:00
Nicholas Bishop 9b9e621263 Merge pull request #1641 from rust-osdev/doc-devicepath-v2
doc: streamline device path documentation between uefi-raw and uefi
2025-05-19 18:03:15 +00:00
Nicholas Bishop 6d8185f30b Merge pull request #1658 from seijikun/mr-pciroot
uefi-raw: Add binding for EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL
2025-05-19 15:44:24 +00:00
Nicholas Bishop 78e4342417 Merge pull request #1665 from rust-osdev/uefi-alloc-doc
doc: improved documentation for boot allocation functions
2025-05-19 15:22:00 +00:00
Nicholas Bishop 79b667f93f Unpin uguid 2025-05-19 01:10:31 -04:00
Nicholas Bishop b8ddf9981d Merge pull request #1671 from rust-osdev/renovate/mbrman-0.x
fix(deps): update rust crate mbrman to 0.6.0
2025-05-18 23:24:18 +00:00