fix: comprehensive boot hardening — crashes, warnings, sensors, bare-metal PS/2
- firmware-loader: handle missing INIT_NOTIFY gracefully (Option<RawFd>) - driver-params: suppress ENODEV (19) on missing driver-manager scheme - compositor: add wl_seat.name + pointer capabilities for Qt6 compat - greeter: use redox QPA (libqredox.so) instead of broken Qt6 Wayland - greeter: reduce DRM wait 10s→2s, kded6 offscreen QPA to avoid crash - thermald: add CPU die temperature via MSR IA32_THERM_STATUS (Linux coretemp) - pcid: diagnostic MCFG warning with Q35 guidance, address validation - dhcpd: auto-interface detection (P0-dhcpd-auto-iface.patch wired) - procmgr: SIGCHLD EPERM→debug (kernel limitation, not a bug) - ps2d LED: warn→debug on modern hw without real PS/2 controller - ps2d mouse: 10×1s→3×250ms retry, fast-fail on unknown response - i2c RON: handle empty response from i2cd when no adapters present - base recipe: wire 6 new/improved patches - config: remove INIT_SKIP, enable all 14 previously-suppressed daemons
This commit is contained in:
@@ -49,17 +49,25 @@ fn default_firmware_dir() -> PathBuf {
|
||||
}
|
||||
|
||||
#[cfg(target_os = "redox")]
|
||||
unsafe fn get_init_notify_fd() -> RawFd {
|
||||
let fd: RawFd = env::var("INIT_NOTIFY")
|
||||
.expect("firmware-loader: INIT_NOTIFY not set")
|
||||
.parse()
|
||||
.expect("firmware-loader: INIT_NOTIFY is not a valid fd");
|
||||
unsafe fn get_init_notify_fd() -> Option<RawFd> {
|
||||
let Ok(value) = env::var("INIT_NOTIFY") else {
|
||||
eprintln!("firmware-loader: INIT_NOTIFY not set; readiness notification disabled");
|
||||
return None;
|
||||
};
|
||||
let Ok(fd) = value.parse::<RawFd>() else {
|
||||
eprintln!("firmware-loader: INIT_NOTIFY is not a valid fd; readiness notification disabled");
|
||||
return None;
|
||||
};
|
||||
libc::fcntl(fd, libc::F_SETFD, libc::FD_CLOEXEC);
|
||||
fd
|
||||
Some(fd)
|
||||
}
|
||||
|
||||
#[cfg(target_os = "redox")]
|
||||
fn notify_scheme_ready(notify_fd: RawFd, socket: &Socket, scheme: &mut FirmwareScheme) {
|
||||
fn notify_scheme_ready(notify_fd: Option<RawFd>, socket: &Socket, scheme: &mut FirmwareScheme) {
|
||||
let Some(notify_fd) = notify_fd else {
|
||||
info!("firmware-loader: no INIT_NOTIFY fd, skipping readiness notification");
|
||||
return;
|
||||
};
|
||||
let cap_id = scheme
|
||||
.scheme_root()
|
||||
.expect("firmware-loader: scheme_root failed");
|
||||
@@ -77,7 +85,7 @@ fn notify_scheme_ready(notify_fd: RawFd, socket: &Socket, scheme: &mut FirmwareS
|
||||
}
|
||||
|
||||
#[cfg(target_os = "redox")]
|
||||
fn run_daemon(notify_fd: RawFd, registry: FirmwareRegistry) -> ! {
|
||||
fn run_daemon(notify_fd: Option<RawFd>, registry: FirmwareRegistry) -> ! {
|
||||
let socket = Socket::create().expect("firmware-loader: failed to create scheme socket");
|
||||
let mut scheme = FirmwareScheme::new(registry);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user