Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package limine for openSUSE:Factory checked 
in at 2026-03-04 21:08:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/limine (Old)
 and      /work/SRC/openSUSE:Factory/.limine.new.561 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "limine"

Wed Mar  4 21:08:48 2026 rev:35 rq:1336250 version:10.8.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/limine/limine.changes    2026-02-24 
15:39:29.708645514 +0100
+++ /work/SRC/openSUSE:Factory/.limine.new.561/limine.changes   2026-03-04 
21:09:43.607628566 +0100
@@ -1,0 +2,10 @@
+Wed Mar  4 00:12:32 UTC 2026 - Marvin Friedrich <[email protected]>
+
+- Update to 10.8.2:
+  * Fix VT-d disable order to TE, IRE, QIE.
+  * Fix VT-d polling loop read order and remove polling timeout.
+  * SMP: Add xAPIC ICR delivery status checks to INIT-SIPI-SIPI sequence.
+  * Amend certain APIC-related issues of Limine boot protocol and
+    implement the corrected behaviour. 
+
+-------------------------------------------------------------------

Old:
----
  limine-10.8.0.tar.gz

New:
----
  limine-10.8.2.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ limine.spec ++++++
--- /var/tmp/diff_new_pack.SjIZJg/_old  2026-03-04 21:09:44.367659978 +0100
+++ /var/tmp/diff_new_pack.SjIZJg/_new  2026-03-04 21:09:44.367659978 +0100
@@ -15,7 +15,7 @@
 #
 
 Name:           limine
-Version:        10.8.0
+Version:        10.8.2
 Release:        0
 Summary:        Modern, advanced, portable, multiprotocol bootloader and boot 
manager
 License:        BSD-2-Clause

++++++ limine-10.8.0.tar.gz -> limine-10.8.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.8.0/ChangeLog new/limine-10.8.2/ChangeLog
--- old/limine-10.8.0/ChangeLog 2026-02-22 18:50:30.000000000 +0100
+++ new/limine-10.8.2/ChangeLog 2026-02-26 01:26:03.000000000 +0100
@@ -1,3 +1,26 @@
+2026-02-26   Mintsuki  <[email protected]>
+
+    *** Release 10.8.2 ***
+
+    Noteworthy changes compared to the previous release, 10.8.1:
+
+    Bug fixes:
+        - Revert broken/pointless legacy PIC reinitialisation logic on flush
+          that accidentally made it into 10.8.1.
+
+2026-02-26  Mintsuki  <[email protected]>
+
+    *** Release 10.8.1 ***
+
+    Noteworthy changes compared to the previous release, 10.8.0:
+
+    Bug fixes:
+        - Fix VT-d disable order to TE, IRE, QIE.
+        - Fix VT-d polling loop read order and remove polling timeout.
+        - SMP: Add xAPIC ICR delivery status checks to INIT-SIPI-SIPI sequence.
+        - Amend certain APIC-related issues of Limine boot protocol and
+          implement the corrected behaviour.
+
 2026-02-22  Mintsuki  <[email protected]>
 
     *** Release 10.8.0 ***
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.8.0/bootstrap new/limine-10.8.2/bootstrap
--- old/limine-10.8.0/bootstrap 2026-02-22 18:50:30.000000000 +0100
+++ new/limine-10.8.2/bootstrap 2026-02-26 01:26:03.000000000 +0100
@@ -85,7 +85,7 @@
     clone_repo_commit \
         https://codeberg.org/Limine/limine-protocol.git \
         limine-protocol \
-        068b6481557db836e41bf644382367f8dee76d21
+        fd3197997ec608484a2eb4e3d2a8591378087e7d
 
     clone_repo_commit \
         https://codeberg.org/PicoEFI/PicoEFI.git \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.8.0/common/sys/cpu.h 
new/limine-10.8.2/common/sys/cpu.h
--- old/limine-10.8.0/common/sys/cpu.h  2026-02-22 18:50:30.000000000 +0100
+++ new/limine-10.8.2/common/sys/cpu.h  2026-02-26 01:26:03.000000000 +0100
@@ -156,7 +156,7 @@
 
 static inline uint64_t rdtsc(void) {
     uint32_t edx, eax;
-    asm volatile ("rdtsc" : "=a" (eax), "=d" (edx));
+    asm volatile ("rdtsc" : "=a" (eax), "=d" (edx) :: "memory");
     return ((uint64_t)edx << 32) | eax;
 }
 
@@ -407,7 +407,11 @@
 
 static inline uint64_t rdtsc_usec(void) {
     uint64_t exec_ticks = rdtsc();
-    return tsc_freq != 0 ? 1000000ULL * exec_ticks / tsc_freq : 0;
+    if (tsc_freq == 0) {
+        return 0;
+    }
+    return exec_ticks / tsc_freq * 1000000
+         + exec_ticks % tsc_freq * 1000000 / tsc_freq;
 }
 
 static inline void stall(uint64_t us) {
@@ -420,7 +424,7 @@
         return;
     }
 #endif
-    uint64_t ticks = tsc_freq * us / 1000000;
+    uint64_t ticks = (tsc_freq * us + 999999) / 1000000;
     uint64_t next_stop = rdtsc() + ticks;
     while (rdtsc() < next_stop);
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.8.0/common/sys/iommu.c 
new/limine-10.8.2/common/sys/iommu.c
--- old/limine-10.8.0/common/sys/iommu.c        2026-02-22 18:50:30.000000000 
+0100
+++ new/limine-10.8.2/common/sys/iommu.c        2026-02-26 01:26:03.000000000 
+0100
@@ -27,37 +27,26 @@
 // All other bits (TE, EAFL, QIE, IRE, CFI) are persistent toggles.
 #define VTD_GCMD_ONESHOT_MASK 0x96FFFFFF
 
-#define VTD_TIMEOUT 10000000
-
 static void vtd_disable_unit(uintptr_t reg_base) {
     uint32_t sts = mmind(reg_base + VTD_GSTS_REG);
 
-    // Disable interrupt remapping first (IRE depends on QIE, so reverse
-    // the enable order: disable IRE before QIE)
-    if (sts & VTD_GSTS_IRES) {
-        uint32_t gcmd = (sts & VTD_GCMD_ONESHOT_MASK) & ~VTD_GSTS_IRES;
+    // Disable DMA translation first (most urgent: prevents stale lookups)
+    if (sts & VTD_GSTS_TES) {
+        uint32_t gcmd = (sts & VTD_GCMD_ONESHOT_MASK) & ~VTD_GSTS_TES;
         mmoutd(reg_base + VTD_GCMD_REG, gcmd);
 
-        for (int i = 0; i < VTD_TIMEOUT; i++) {
+        while ((sts = mmind(reg_base + VTD_GSTS_REG)) & VTD_GSTS_TES) {
             asm volatile ("pause");
-            sts = mmind(reg_base + VTD_GSTS_REG);
-            if (!(sts & VTD_GSTS_IRES)) {
-                break;
-            }
         }
     }
 
-    // Disable DMA translation
-    if (sts & VTD_GSTS_TES) {
-        uint32_t gcmd = (sts & VTD_GCMD_ONESHOT_MASK) & ~VTD_GSTS_TES;
+    // Disable interrupt remapping (depends on QIE, so disable before QIE)
+    if (sts & VTD_GSTS_IRES) {
+        uint32_t gcmd = (sts & VTD_GCMD_ONESHOT_MASK) & ~VTD_GSTS_IRES;
         mmoutd(reg_base + VTD_GCMD_REG, gcmd);
 
-        for (int i = 0; i < VTD_TIMEOUT; i++) {
+        while ((sts = mmind(reg_base + VTD_GSTS_REG)) & VTD_GSTS_IRES) {
             asm volatile ("pause");
-            sts = mmind(reg_base + VTD_GSTS_REG);
-            if (!(sts & VTD_GSTS_TES)) {
-                break;
-            }
         }
     }
 
@@ -66,12 +55,8 @@
         uint32_t gcmd = (sts & VTD_GCMD_ONESHOT_MASK) & ~VTD_GSTS_QIES;
         mmoutd(reg_base + VTD_GCMD_REG, gcmd);
 
-        for (int i = 0; i < VTD_TIMEOUT; i++) {
+        while ((sts = mmind(reg_base + VTD_GSTS_REG)) & VTD_GSTS_QIES) {
             asm volatile ("pause");
-            sts = mmind(reg_base + VTD_GSTS_REG);
-            if (!(sts & VTD_GSTS_QIES)) {
-                break;
-            }
         }
     }
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.8.0/common/sys/lapic.c 
new/limine-10.8.2/common/sys/lapic.c
--- old/limine-10.8.0/common/sys/lapic.c        2026-02-22 18:50:30.000000000 
+0100
+++ new/limine-10.8.2/common/sys/lapic.c        2026-02-26 01:26:03.000000000 
+0100
@@ -20,8 +20,8 @@
 #define LAPIC_REG_TPR         0x080
 #define LAPIC_REG_VERSION     0x030
 
-static uint32_t pending_lint0 = 0x00010000; // masked
-static uint32_t pending_lint1 = 0x00010000; // masked
+static uint32_t pending_lint0 = UINT32_MAX; // no override
+static uint32_t pending_lint1 = UINT32_MAX; // no override
 
 static uint32_t lapic_madt_nmi_flags_to_lvt(uint16_t flags) {
     uint32_t lvt = 0x10400; // masked + NMI delivery mode
@@ -43,14 +43,9 @@
     return lvt;
 }
 
-void lapic_prep_lint(struct madt *madt, uint32_t acpi_uid, bool is_bsp, bool 
x2apic) {
-    // Set defaults
-    if (is_bsp) {
-        pending_lint0 = 0x00010700; // ExtINT delivery mode, masked
-    } else {
-        pending_lint0 = 0x00010000; // masked
-    }
-    pending_lint1 = 0x00010000; // masked
+void lapic_prep_lint(struct madt *madt, uint32_t acpi_uid, bool x2apic) {
+    pending_lint0 = UINT32_MAX; // no override
+    pending_lint1 = UINT32_MAX; // no override
 
     // Walk MADT entries looking for NMI entries
     for (uint8_t *madt_ptr = (uint8_t *)madt->madt_entries_begin;
@@ -109,6 +104,18 @@
     }
 }
 
+static bool lvt_should_mask(uint32_t lvt) {
+    switch ((lvt >> 8) & 7) {
+        case 0b000: // Fixed
+        case 0b001: // Lowest Priority
+        case 0b100: // NMI
+        case 0b111: // ExtINT
+            return true;
+        default:    // SMI, INIT, Reserved
+            return false;
+    }
+}
+
 void lapic_configure_handoff_state(void) {
     bool is_x2 = !!(rdmsr(0x1b) & (1 << 10));
 
@@ -119,38 +126,82 @@
         max_lvt = (lapic_read(LAPIC_REG_VERSION) >> 16) & 0xff;
     }
 
+    uint32_t lvt;
+
     if (is_x2) {
         x2apic_write(LAPIC_REG_SVR, 0x1ff);
         x2apic_write(LAPIC_REG_TPR, 0);
         if (max_lvt >= 6) {
-            x2apic_write(LAPIC_REG_LVT_CMCI, 0x00010000);
+            lvt = x2apic_read(LAPIC_REG_LVT_CMCI);
+            if (lvt_should_mask(lvt)) {
+                x2apic_write(LAPIC_REG_LVT_CMCI, lvt | (1 << 16));
+            }
+        }
+        lvt = x2apic_read(LAPIC_REG_LVT_TIMER);
+        if (lvt_should_mask(lvt)) {
+            x2apic_write(LAPIC_REG_LVT_TIMER, lvt | (1 << 16));
         }
-        x2apic_write(LAPIC_REG_LVT_TIMER, 0x00010000);
         if (max_lvt >= 5) {
-            x2apic_write(LAPIC_REG_LVT_THERMAL, 0x00010000);
+            lvt = x2apic_read(LAPIC_REG_LVT_THERMAL);
+            if (lvt_should_mask(lvt)) {
+                x2apic_write(LAPIC_REG_LVT_THERMAL, lvt | (1 << 16));
+            }
         }
         if (max_lvt >= 4) {
-            x2apic_write(LAPIC_REG_LVT_PMC, 0x00010000);
+            lvt = x2apic_read(LAPIC_REG_LVT_PMC);
+            if (lvt_should_mask(lvt)) {
+                x2apic_write(LAPIC_REG_LVT_PMC, lvt | (1 << 16));
+            }
+        }
+        lvt = x2apic_read(LAPIC_REG_LVT_ERROR);
+        if (lvt_should_mask(lvt)) {
+            x2apic_write(LAPIC_REG_LVT_ERROR, lvt | (1 << 16));
+        }
+        lvt = x2apic_read(LAPIC_REG_LVT_LINT0);
+        if (lvt_should_mask(lvt)) {
+            x2apic_write(LAPIC_REG_LVT_LINT0, pending_lint0 != UINT32_MAX ? 
pending_lint0 : lvt | (1 << 16));
+        }
+        lvt = x2apic_read(LAPIC_REG_LVT_LINT1);
+        if (lvt_should_mask(lvt)) {
+            x2apic_write(LAPIC_REG_LVT_LINT1, pending_lint1 != UINT32_MAX ? 
pending_lint1 : lvt | (1 << 16));
         }
-        x2apic_write(LAPIC_REG_LVT_ERROR, 0x00010000);
-        x2apic_write(LAPIC_REG_LVT_LINT0, pending_lint0);
-        x2apic_write(LAPIC_REG_LVT_LINT1, pending_lint1);
     } else {
         lapic_write(LAPIC_REG_SVR, 0x1ff);
         lapic_write(LAPIC_REG_TPR, 0);
         if (max_lvt >= 6) {
-            lapic_write(LAPIC_REG_LVT_CMCI, 0x00010000);
+            lvt = lapic_read(LAPIC_REG_LVT_CMCI);
+            if (lvt_should_mask(lvt)) {
+                lapic_write(LAPIC_REG_LVT_CMCI, lvt | (1 << 16));
+            }
+        }
+        lvt = lapic_read(LAPIC_REG_LVT_TIMER);
+        if (lvt_should_mask(lvt)) {
+            lapic_write(LAPIC_REG_LVT_TIMER, lvt | (1 << 16));
         }
-        lapic_write(LAPIC_REG_LVT_TIMER, 0x00010000);
         if (max_lvt >= 5) {
-            lapic_write(LAPIC_REG_LVT_THERMAL, 0x00010000);
+            lvt = lapic_read(LAPIC_REG_LVT_THERMAL);
+            if (lvt_should_mask(lvt)) {
+                lapic_write(LAPIC_REG_LVT_THERMAL, lvt | (1 << 16));
+            }
         }
         if (max_lvt >= 4) {
-            lapic_write(LAPIC_REG_LVT_PMC, 0x00010000);
+            lvt = lapic_read(LAPIC_REG_LVT_PMC);
+            if (lvt_should_mask(lvt)) {
+                lapic_write(LAPIC_REG_LVT_PMC, lvt | (1 << 16));
+            }
+        }
+        lvt = lapic_read(LAPIC_REG_LVT_ERROR);
+        if (lvt_should_mask(lvt)) {
+            lapic_write(LAPIC_REG_LVT_ERROR, lvt | (1 << 16));
+        }
+        lvt = lapic_read(LAPIC_REG_LVT_LINT0);
+        if (lvt_should_mask(lvt)) {
+            lapic_write(LAPIC_REG_LVT_LINT0, pending_lint0 != UINT32_MAX ? 
pending_lint0 : lvt | (1 << 16));
+        }
+        lvt = lapic_read(LAPIC_REG_LVT_LINT1);
+        if (lvt_should_mask(lvt)) {
+            lapic_write(LAPIC_REG_LVT_LINT1, pending_lint1 != UINT32_MAX ? 
pending_lint1 : lvt | (1 << 16));
         }
-        lapic_write(LAPIC_REG_LVT_ERROR, 0x00010000);
-        lapic_write(LAPIC_REG_LVT_LINT0, pending_lint0);
-        lapic_write(LAPIC_REG_LVT_LINT1, pending_lint1);
     }
 }
 
@@ -209,7 +260,7 @@
     }
 
 found:
-    lapic_prep_lint(madt, bsp_acpi_uid, true, is_x2);
+    lapic_prep_lint(madt, bsp_acpi_uid, is_x2);
     lapic_configure_handoff_state();
 }
 
@@ -242,6 +293,15 @@
     mmoutd(lapic_mmio_base + reg, data);
 }
 
+void lapic_icr_wait(void) {
+    for (int i = 0; i < 1000000; i++) {
+        if (!(lapic_read(LAPIC_REG_ICR0) & (1 << 12))) {
+            return;
+        }
+        asm volatile ("pause");
+    }
+}
+
 bool x2apic_check(void) {
     uint32_t eax, ebx, ecx, edx;
     if (!cpuid(1, 0, &eax, &ebx, &ecx, &edx))
@@ -415,8 +475,7 @@
                     continue;
             }
 
-            io_apic_write(i, ioredtbl, (1 << 16)); // mask
-            io_apic_write(i, ioredtbl + 1, 0);
+            io_apic_write(i, ioredtbl, io_apic_read(i, ioredtbl) | (1 << 16));
         }
     }
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.8.0/common/sys/lapic.h 
new/limine-10.8.2/common/sys/lapic.h
--- old/limine-10.8.0/common/sys/lapic.h        2026-02-22 18:50:30.000000000 
+0100
+++ new/limine-10.8.2/common/sys/lapic.h        2026-02-26 01:26:03.000000000 
+0100
@@ -17,6 +17,7 @@
 void lapic_eoi(void);
 uint32_t lapic_read(uint32_t reg);
 void lapic_write(uint32_t reg, uint32_t data);
+void lapic_icr_wait(void);
 
 bool x2apic_check(void);
 bool x2apic_enable(void);
@@ -25,7 +26,7 @@
 void x2apic_write(uint32_t reg, uint64_t data);
 
 void lapic_configure_bsp(void);
-void lapic_prep_lint(struct madt *madt, uint32_t acpi_uid, bool is_bsp, bool 
x2apic);
+void lapic_prep_lint(struct madt *madt, uint32_t acpi_uid, bool x2apic);
 void lapic_configure_handoff_state(void);
 
 void init_io_apics(void);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.8.0/common/sys/smp.c 
new/limine-10.8.2/common/sys/smp.c
--- old/limine-10.8.0/common/sys/smp.c  2026-02-22 18:50:30.000000000 +0100
+++ new/limine-10.8.2/common/sys/smp.c  2026-02-26 01:26:03.000000000 +0100
@@ -84,6 +84,7 @@
     if (x2apic) {
         x2apic_write(LAPIC_REG_ICR0, ((uint64_t)lapic_id << 32) | 0x4500);
     } else {
+        lapic_icr_wait();
         lapic_write(LAPIC_REG_ICR1, lapic_id << 24);
         lapic_write(LAPIC_REG_ICR0, 0x4500);
     }
@@ -95,10 +96,17 @@
             x2apic_write(LAPIC_REG_ICR0, ((uint64_t)lapic_id << 32) |
                                          ((size_t)trampoline / 4096) | 0x4600);
         } else {
+            lapic_icr_wait();
             lapic_write(LAPIC_REG_ICR1, lapic_id << 24);
             lapic_write(LAPIC_REG_ICR0, ((size_t)trampoline / 4096) | 0x4600);
         }
-        stall(200);
+        if (j == 0) {
+            stall(200);
+        }
+    }
+
+    if (!x2apic) {
+        lapic_icr_wait();
     }
 
     for (int i = 0; i < 100; i++) {
@@ -244,7 +252,7 @@
 
                 // Set up per-AP LINT values before starting
                 if (smp_configure_apic) {
-                    lapic_prep_lint(madt, lapic->acpi_processor_uid, false, 
x2apic);
+                    lapic_prep_lint(madt, lapic->acpi_processor_uid, x2apic);
                 }
 
                 // Try to start the AP
@@ -289,7 +297,7 @@
 
                 // Set up per-AP LINT values before starting
                 if (smp_configure_apic) {
-                    lapic_prep_lint(madt, x2lapic->acpi_processor_uid, false, 
true);
+                    lapic_prep_lint(madt, x2lapic->acpi_processor_uid, true);
                 }
 
                 // Try to start the AP
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.8.0/configure new/limine-10.8.2/configure
--- old/limine-10.8.0/configure 2026-02-22 18:50:34.000000000 +0100
+++ new/limine-10.8.2/configure 2026-02-26 01:26:07.000000000 +0100
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.72 for Limine 10.8.0.
+# Generated by GNU Autoconf 2.72 for Limine 10.8.2.
 #
 # Report bugs to <https://codeberg.org/Limine/Limine/issues>.
 #
@@ -604,8 +604,8 @@
 # Identity of this package.
 PACKAGE_NAME='Limine'
 PACKAGE_TARNAME='limine'
-PACKAGE_VERSION='10.8.0'
-PACKAGE_STRING='Limine 10.8.0'
+PACKAGE_VERSION='10.8.2'
+PACKAGE_STRING='Limine 10.8.2'
 PACKAGE_BUGREPORT='https://codeberg.org/Limine/Limine/issues'
 PACKAGE_URL='https://limine-bootloader.org/'
 
@@ -1324,7 +1324,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-'configure' configures Limine 10.8.0 to adapt to many kinds of systems.
+'configure' configures Limine 10.8.2 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1390,7 +1390,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of Limine 10.8.0:";;
+     short | recursive ) echo "Configuration of Limine 10.8.2:";;
    esac
   cat <<\_ACEOF
 
@@ -1509,7 +1509,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-Limine configure 10.8.0
+Limine configure 10.8.2
 generated by GNU Autoconf 2.72
 
 Copyright (C) 2023 Free Software Foundation, Inc.
@@ -1621,7 +1621,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by Limine $as_me 10.8.0, which was
+It was created by Limine $as_me 10.8.2, which was
 generated by GNU Autoconf 2.72.  Invocation command line was
 
   $ $0$ac_configure_args_raw
@@ -6334,7 +6334,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by Limine $as_me 10.8.0, which was
+This file was extended by Limine $as_me 10.8.2, which was
 generated by GNU Autoconf 2.72.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -6390,7 +6390,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config='$ac_cs_config_escaped'
 ac_cs_version="\\
-Limine config.status 10.8.0
+Limine config.status 10.8.2
 configured by $0, generated by GNU Autoconf 2.72,
   with options \\"\$ac_cs_config\\"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.8.0/limine-protocol/PROTOCOL.md 
new/limine-10.8.2/limine-protocol/PROTOCOL.md
--- old/limine-10.8.0/limine-protocol/PROTOCOL.md       2026-02-22 
18:50:30.000000000 +0100
+++ new/limine-10.8.2/limine-protocol/PROTOCOL.md       2026-02-26 
01:26:03.000000000 +0100
@@ -474,29 +474,36 @@
 
 The A20 gate is opened.
 
-Legacy PIC IRQs (if PIC is available) are masked. I/O APIC redirection table
-entries with Fixed (0b000) or Lowest Priority (0b001) delivery mode are masked.
-For [base revision 5](#base-revision-5) or greater, I/O APIC redirection table
-entries with NMI (0b100) and ExtINT (0b111) delivery mode are also masked.
+The legacy PICs (if available) have all IRQs masked.
+
+For each existing I/O APIC, its redirection table entries with Fixed (0b000)
+or Lowest Priority (0b001) delivery mode are masked.
+For [base revision 5](#base-revision-5) or greater, entries with NMI (0b100)
+or ExtINT (0b111) delivery mode are also masked. The rest of the entries 
beyond the
+mask flag is left as set by firmware. Entries with other delivery modes are 
entirely
+left as set by firmware.
 
 For [base revision 5](#base-revision-5) or greater, any IOMMUs (Intel VT-d, 
AMD-Vi)
 have DMA translation and interrupt remapping disabled.
 
 For [base revision 5](#base-revision-5) or greater, the local APIC on each 
processor
-(BSP and APs) is initialised as follows:
+(BSP and APs), if available, is initialised as follows:
 
 - The local APIC is enabled (`IA32_APIC_BASE` bit 11) and software-enabled 
(SVR bit 8).
 - The Spurious Interrupt Vector Register is set to `0x1FF`.
 - The Task Priority Register is set to 0.
-- All LVT entries (Timer, Thermal Monitor (if present), Performance Counter
-  (if present), CMCI (if present), Error) are masked.
-- LINT0 and LINT1 are configured according to MADT Local APIC NMI (type 4) and
-  Local x2APIC NMI (type 0x0A) entries, with polarity and trigger mode derived 
from
-  the MPS INTI flags. All LINT entries are masked.
-- On the BSP, LINT0 defaults to ExtINT delivery mode (masked) per the Intel 
SDM,
-  unless overridden by a MADT NMI entry.
-- LINT entries not referenced by any MADT NMI entry (and not the BSP LINT0 
ExtINT
-  default) are masked with no delivery mode.
+- All LVT entries (LINT0 and LINT1 (if no MADT override, see below), Timer, 
Thermal
+  Monitor (if present), Performance Counter (if present), CMCI (if present), 
Error)
+  whose delivery mode is Fixed (0b000), Lowest Priority (0b001), NMI (0b100), 
or
+  ExtINT (0b111) have their mask bit set. The rest of the entry beyond the 
mask flag
+  is left as set by firmware. Entries with other delivery modes are entirely 
left as
+  set by firmware.
+- If MADT Local APIC NMI (type 4) or Local x2APIC NMI (type 0x0A) entries are
+  present, the corresponding LINT entries are configured with NMI delivery 
mode,
+  polarity and trigger mode derived from the MPS INTI flags, and masked. This 
only
+  applies if the given LINT entry's original firmware-set delivery mode is 
Fixed (0b000),
+  Lowest Priority (0b001), NMI (0b100), or ExtINT (0b111). LINT entries with 
other
+  delivery modes are entirely left as set by firmware.
 
 If booted by EFI, boot services are exited.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.8.0/timestamps new/limine-10.8.2/timestamps
--- old/limine-10.8.0/timestamps        2026-02-22 18:50:32.000000000 +0100
+++ new/limine-10.8.2/timestamps        2026-02-26 01:26:04.000000000 +0100
@@ -1,3 +1,3 @@
 REGEN_DATE="February 2026"
-SOURCE_DATE_EPOCH="1771781474"
-SOURCE_DATE_EPOCH_TOUCH="202602221831"
+SOURCE_DATE_EPOCH="1772063639"
+SOURCE_DATE_EPOCH_TOUCH="202602260053"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/limine-10.8.0/version new/limine-10.8.2/version
--- old/limine-10.8.0/version   2026-02-22 18:50:34.000000000 +0100
+++ new/limine-10.8.2/version   2026-02-26 01:26:07.000000000 +0100
@@ -1 +1 @@
-10.8.0
+10.8.2

Reply via email to