PERFORCE change 38540 for review
Peter Wemm
peter at FreeBSD.org
Wed Sep 24 14:47:22 PDT 2003
http://perforce.freebsd.org/chv.cgi?CH=38540
Change 38540 by peter at peter_daintree on 2003/09/24 14:46:33
integrate -I from jhb_acpipci
Affected files ...
.. //depot/projects/hammer/sys/amd64/amd64/io_apic.c#5 integrate
.. //depot/projects/hammer/sys/jhb_notes#3 integrate
Differences ...
==== //depot/projects/hammer/sys/amd64/amd64/io_apic.c#5 (text+ko) ====
@@ -634,13 +634,14 @@
ioapic_write(apic, IOAPIC_REDTBL_LO(i), flags);
/*
- * Route interrupts to all CPU's by default using physical
+ * Route interrupts to the BSP by default using physical
* addressing. Vectored interrupts get readdressed using
- * logical IDs when they are enabled.
+ * logical IDs to CPU clusters when they are enabled.
*/
flags = ioapic_read(apic, IOAPIC_REDTBL_HI(i));
flags &= ~IOART_DEST;
- flags |= IOART_DEST;
+ KASSERT(PCPU_GET(apic_id) == lapic_id(), ("APIC ID mismatch")); /* XXXTEST */
+ flags |= PCPU_GET(apic_id) << APIC_ID_SHIFT;
ioapic_write(apic, IOAPIC_REDTBL_HI(i), flags);
mtx_unlock_spin(&icu_lock);
if (pin->io_vector >= 0) {
@@ -718,13 +719,18 @@
mixedpic_disable_source(struct intsrc *isrc)
{
struct mixedpic_intsrc *mpsrc;
+#if 0
struct intsrc *intpin;
+#endif
mpsrc = (struct mixedpic_intsrc *)isrc;
+#if 0
intpin = mpsrc->mp_apicpin;
+#endif
isrc = mpsrc->mp_atpicsrc;
isrc->is_pic->pic_disable_source(isrc);
+#if 0
/*
* If the interrupt is pending in the local APIC, assume that
* we have been called just before the local APIC gets its
@@ -732,19 +738,26 @@
*/
if (intpin->is_pic->pic_source_pending(intpin))
isrc->is_pic->pic_eoi_source(isrc);
+#endif
}
static void
mixedpic_eoi_source(struct intsrc *isrc)
{
struct mixedpic_intsrc *mpsrc;
+#if 0
struct intsrc *intpin;
+#endif
mpsrc = (struct mixedpic_intsrc *)isrc;
+#if 0
intpin = mpsrc->mp_apicpin;
+#endif
isrc = mpsrc->mp_atpicsrc;
isrc->is_pic->pic_eoi_source(isrc);
+#if 0
intpin->is_pic->pic_eoi_source(intpin);
+#endif
}
static void
@@ -753,7 +766,7 @@
struct mixedpic_intsrc *mpsrc;
mpsrc = (struct mixedpic_intsrc *)isrc;
- isrc = mpsrc->mp_apicpin;
+ isrc = mpsrc->mp_atpicsrc;
isrc->is_pic->pic_enable_intr(isrc);
}
==== //depot/projects/hammer/sys/jhb_notes#3 (text+ko) ====
@@ -27,8 +27,14 @@
- isa/vector.s
Todo:
+- Set PCPU(apic_id) for UP case in lapic_init().
+- Use apic id of BSP (current CPU) when programming temporary physical
+ destinations into I/O APIC RDT entries.
- Fix IDT_SYSCALL mapping in APIC case
- Test mixed mode
+ - Dang, mixed mode interrupts don't actually set the bit in the ISR. *grump*
+ - Need to write mixed mode interrupt entry points and use those in
+ mixed mode enable_intr()
- Kill isa_irq_pending() (maybe, is this an MI function?)
- Add ACPI MADT APIC enumerator.
- solve ACPI module problem where madt wants APIC symbols :(
@@ -53,4 +59,4 @@
Unrelated to this branch:
- Work on cleaning up nested includes in sys/* headers. According to Bruce,
- the only nested sys/* headers should be _*.h and queue.h.+ the only nested sys/* headers should be _*.h and queue.h.
More information about the p4-projects
mailing list