Merge bootprocess branch overlay into 0.2.0

Restore all bootprocess branch files that were overwritten by later 0.2.0
commits. This overlay brings back the complete boot infrastructure:

- Configs: redbear-full, redbear-mini, redbear-device-services, driver .d files
- Kernel: IRQ affinity, x2APIC, C-states, NUMA (SLIT/SRAT), MCS locks, cpuidle
- Base patches: P0-P55 + new P6 (lived block_size=512) + P57 (fbbootlogd graceful init)
- Driver infra: driver-manager, udev-shim, thermald, cpufreqd, iommu, redox-driver-sys/core
- GPU: redox-drm with improved connector handling
- System: redbear-info, redbear-hwutils phase-timer-check
- Build system: fetch.rs improvements, build-iso.sh, run_full.sh
- Kernel source: new ACPI (SLIT, SRAT), cpuidle, cstate, MCS lock modules

83 files changed, +3966/-1248 lines
This commit is contained in:
2026-05-27 06:47:23 +03:00
parent af05babbb2
commit b9de373b31
83 changed files with 3969 additions and 1251 deletions
@@ -26,7 +26,6 @@ pub fn run_hotplug_loop(
);
let mut deferred_retries: BTreeMap<(String, String), u32> = BTreeMap::new();
let mut permanently_fatal: BTreeSet<(String, String)> = BTreeSet::new();
loop {
thread::sleep(Duration::from_millis(poll_interval_ms));
@@ -67,15 +66,6 @@ pub fn run_hotplug_loop(
track_pci_device(device, &mut seen_pci_devices);
let key = (device.path.clone(), driver_name.clone());
// Skip devices that were permanently fatal in a previous cycle.
// enumerate() re-probes all unbound devices each poll, but a Fatal
// result means the driver binary is genuinely absent (e.g. ided on
// a live ISO that doesn't ship it) — no amount of re-probing will
// change the outcome.
if permanently_fatal.contains(&key) {
continue;
}
match result {
ProbeResult::Bound => {
log::info!("hotplug: bound {} -> {}", device.path, driver_name);
@@ -99,6 +89,12 @@ pub fn run_hotplug_loop(
MAX_DEFERRED_RETRIES,
reason
);
if let Ok(mut skipped) = crate::config::PERMANENTLY_SKIPPED.lock() {
skipped.insert((
device.path.clone(),
driver_name.clone(),
));
}
}
}
ProbeResult::Fatal { reason } => {
@@ -108,9 +104,20 @@ pub fn run_hotplug_loop(
driver_name,
reason
);
permanently_fatal.insert(key);
if let Ok(mut skipped) = crate::config::PERMANENTLY_SKIPPED.lock() {
skipped.insert(key);
}
}
ProbeResult::NotSupported => {
log::debug!(
"hotplug: not supported {} -> {}",
device.path,
driver_name
);
if let Ok(mut skipped) = crate::config::PERMANENTLY_SKIPPED.lock() {
skipped.insert(key);
}
}
_ => {}
}
}
ProbeEvent::NoDriverFound { device } => {
@@ -200,6 +207,8 @@ fn track_pci_device(device: &DeviceId, seen_pci_devices: &mut BTreeSet<String>)
}
fn notify_bound_device(scheme: &DriverManagerScheme, device: &DeviceId, driver_name: &str) {
// PCI devices use the pcid-compatible bind notification.
// ACPI devices may be notified through other mechanisms in the future.
if device.bus == "pci" {
notify_bind(scheme, &device.path, driver_name);
}