Files
RedBear-OS/local/patches/base/P6-driver-phase0-phase2.patch
T
vasilito ce0ac10b6d chore: sync all pending changes — kirigami platform headers, cookbook fix, docs, patches
Kirigami: remove stub .cpp, add Qt platform integration headers for
QML gate. Matches KDE src/pattern for direct header-only builds.

Cookbook: add --no-backup-if-mismatch to patch invocation (fetch.rs).

Kernel: consolidate patch chain, add debug-scheme-serial-fix.

Docs: archive old audit reports, add CHANGELOG and hardware validation
matrix. Update AGENTS.md with Linux reference source policy.

Scripts: add test-network-qemu.sh, test-storage-qemu.sh.

.gitignore: add local/reference/ exclusion.
2026-05-04 11:57:48 +01:00

90 lines
4.0 KiB
Diff

diff --git a/drivers/audio/ihdad/src/main.rs b/drivers/audio/ihdad/src/main.rs
index 31a2add7..a75a0a35 100755
--- a/drivers/audio/ihdad/src/main.rs
+++ b/drivers/audio/ihdad/src/main.rs
@@ -57,7 +57,15 @@ fn daemon(daemon: daemon::Daemon, mut pcid_handle: PciFunctionHandle) -> ! {
EventQueue::<Source>::new().expect("ihdad: Could not create event queue.");
let socket = Socket::nonblock().expect("ihdad: failed to create socket");
let mut device = unsafe {
- hda::IntelHDA::new(address, vend_prod).expect("ihdad: failed to allocate device")
+ match hda::IntelHDA::new(address, vend_prod) {
+ Ok(dev) => dev,
+ Err(e) => {
+ log::error!("ihdad: failed to initialize HDA device (err {}), exiting gracefully", e);
+ log::info!("ihdad: this is expected in virtual environments without functional HDA hardware");
+ daemon.ready();
+ return loop {};
+ }
+ }
};
let mut readiness_based = ReadinessBased::new(&socket, 16);
diff --git a/drivers/net/e1000d/src/main.rs b/drivers/net/e1000d/src/main.rs
index 373ea9b3..2e4cf579 100644
--- a/drivers/net/e1000d/src/main.rs
+++ b/drivers/net/e1000d/src/main.rs
@@ -70,15 +70,15 @@ fn daemon(daemon: daemon::Daemon, mut pcid_handle: PciFunctionHandle) -> ! {
libredox::call::setrens(0, 0).expect("e1000d: failed to enter null namespace");
- scheme.tick().unwrap();
+ scheme.tick().expect("e1000d: initial scheme tick failed");
for event in event_queue.map(|e| e.expect("e1000d: failed to get event")) {
match event.user_data {
Source::Irq => {
let mut irq = [0; 8];
- irq_file.read(&mut irq).unwrap();
+ irq_file.read(&mut irq).expect("e1000d: failed to read IRQ from kernel");
if unsafe { scheme.adapter().irq() } {
- irq_file.write(&mut irq).unwrap();
+ irq_file.write(&mut irq).expect("e1000d: failed to acknowledge IRQ");
scheme.tick().expect("e1000d: failed to handle IRQ")
}
diff --git a/drivers/net/rtl8168d/src/main.rs b/drivers/net/rtl8168d/src/main.rs
index 1d9963a3..08efda6c 100644
--- a/drivers/net/rtl8168d/src/main.rs
+++ b/drivers/net/rtl8168d/src/main.rs
@@ -81,33 +81,33 @@ fn daemon(daemon: daemon::Daemon, mut pcid_handle: PciFunctionHandle) -> ! {
Source::Irq,
event::EventFlags::READ,
)
- .unwrap();
+ .expect("rtl8168d: failed to subscribe to scheme event");
event_queue
.subscribe(
scheme.event_handle().raw(),
Source::Scheme,
event::EventFlags::READ,
)
- .unwrap();
+ .expect("rtl8168d: failed to subscribe to scheme event");
libredox::call::setrens(0, 0).expect("rtl8168d: failed to enter null namespace");
- scheme.tick().unwrap();
+ scheme.tick().expect("rtl8168d: scheme tick failed");
for event in event_queue.map(|e| e.expect("rtl8168d: failed to get next event")) {
match event.user_data {
Source::Irq => {
let mut irq = [0; 8];
- irq_file.irq_handle().read(&mut irq).unwrap();
+ irq_file.irq_handle().read(&mut irq).expect("rtl8168d: failed to read IRQ");
//TODO: This may be causing spurious interrupts
if unsafe { scheme.adapter_mut().irq() } {
- irq_file.irq_handle().write(&mut irq).unwrap();
+ irq_file.irq_handle().write(&mut irq).expect("rtl8168d: failed to acknowledge IRQ");
- scheme.tick().unwrap();
+ scheme.tick().expect("rtl8168d: scheme tick failed");
}
}
Source::Scheme => {
- scheme.tick().unwrap();
+ scheme.tick().expect("rtl8168d: scheme tick failed");
}
}
}