| Subject: | Re: Help, cannot make HP Vectra XU work | |
|---|---|---|
| From: | Joe Greco (jgr...@solaria.sol.net) | |
| Date: | Nov 26, 1998 11:58:20 am | |
| List: | org.freebsd.freebsd-smp | |
I/O Ints: Type Polarity Trigger Bus ID IRQ APIC ID PIN# INT conforms conforms 1 1 255 1
^^^
Try this patch:
Index: sys/i386/i386/mp_machdep.c =================================================================== RCS file: /home/ncvs/src/sys/i386/i386/mp_machdep.c,v retrieving revision 1.83 diff -u -r1.83 mp_machdep.c --- mp_machdep.c 1998/10/10 13:37:16 1.83 +++ mp_machdep.c 1998/11/25 16:39:29 @@ -1197,11 +1197,26 @@ static int int_entry(int_entry_ptr entry, int intr) { + int apic; + io_apic_ints[intr].int_type = entry->int_type; io_apic_ints[intr].int_flags = entry->int_flags; io_apic_ints[intr].src_bus_id = entry->src_bus_id; io_apic_ints[intr].src_bus_irq = entry->src_bus_irq; - io_apic_ints[intr].dst_apic_id = entry->dst_apic_id; + if (entry->dst_apic_id == 255) { + /* This signal goes to all IO APICS. Select an IO APIC + with sufficient number of interrupt pins */ + for (apic = 0; apic < mp_napics; apic++) + if (((io_apic_read(apic, IOAPIC_VER) & + IOART_VER_MAXREDIR) >> MAXREDIRSHIFT) >= + entry->dst_apic_int) + break; + if (apic < mp_napics) + io_apic_ints[intr].dst_apic_id = IO_TO_ID(apic); + else + io_apic_ints[intr].dst_apic_id = entry->dst_apic_id; + } else + io_apic_ints[intr].dst_apic_id = entry->dst_apic_id; io_apic_ints[intr].dst_apic_int = entry->dst_apic_int;
return 1;
Woohoo!! Thank you! My gamers thank you too, even though they probably don't know what FreeBSD is. ;-)
Is this a patch likely to make it into FreeBSD, or should I archive this separately for future upgrades?
Thank you very much,
... Joe
------------------------------------------------------------------------------- Joe Greco - Systems Administrator jgr...@ns.sol.net Solaria Public Access UNIX - Milwaukee, WI 414/342-4847
To Unsubscribe: send mail to majo...@FreeBSD.org with "unsubscribe freebsd-smp" in the body of the message





