1de0326398
IVRS parser (acpi.rs): - Parse IVHD type 0x40 (40-byte header, same layout as 0x11) - Parse IVMD types 0x20/0x21/0x22 into IvmdInfo struct - IVMD scope determined by type, exclusion by flags (bit 4 = EXCL_RANGE) - UNITY read/write flags applied independently - Fix IVHD header size: 24 bytes for 0x10, 40 for 0x11/0x40 Interrupt remap table (interrupt.rs): - Remove global 16-byte IRTE assumption - IRT format selected per-unit from IVHD EFR field (GASup bit) - Legacy32 (4-byte) vs GA128 (16-byte) IRTE formats - EFR-driven encode/decode for both formats - Remapped MSI address and direct-APIC message encoding helpers - Restructure: lib crate (lib_core.rs) for host-testable pure logic Build restructure: - Split into lib (acpi, interrupt) and bin (redox-specific) targets - Feature-gate redox-driver-sys behind 'redox' feature - Host-runnable tests: cargo test --lib --no-default-features Kernel: remove unconditional-true iommu_validate_msi_irq gate pcid/msi: add remapped_message_address/data helpers for BDF-aware MSI Self-test: IRTE programming verification on first device use Tests: 23/23 pass (10 acpi + 13 interrupt)