[Bug 231291] 12-ALPHA4 does not boot on i386 after r338360

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Sat Sep 15 00:16:22 UTC 2018


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=231291

--- Comment #6 from John Baldwin <jhb at FreeBSD.org> ---
So your system doesn't support APIC.  I believed I had tested that case, but I
think while working on the dynamic IRQ patches I introduced a regression and
ended up not retesting the final result.  This patch fixed a non-APIC boot for
me:

Index: sys/x86/isa/atpic.c
===================================================================
--- atpic.c     (revision 338687)
+++ atpic.c     (working copy)
@@ -221,14 +221,20 @@ atpic_register_sources(struct pic *pic)
         * that APIC ISA routing and allowing the ATPIC source for that IRQ
         * to leak through.  We used to depend on this feature for routing
         * IRQ0 via mixed mode, but now we don't use mixed mode at all.
+        *
+        * To avoid the slave not register sources after the master
+        * registers its sources, register all IRQs when this function is
+        * called on the master.
         */
+       if (ap != &atpics[MASTER])
+               return;
        for (i = 0; i < NUM_ISA_IRQS; i++)
                if (intr_lookup_source(i) != NULL)
                        return;

        /* Loop through all interrupt sources and add them. */
-       for (i = 0, ai = atintrs + ap->at_irqbase; i < 8; i++, ai++) {
-               if (ap->at_irqbase + i == ICU_SLAVEID)
+       for (i = 0, ai = atintrs; i < NUM_ISA_IRQS; i++, ai++) {
+               if (i == ICU_SLAVEID)
                        continue;
                intr_register_source(&ai->at_intsrc);
        }

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-bugs mailing list