Author: jhb Date: Mon Jan 3 18:22:22 2011 New Revision: 216924 URL: http://svn.freebsd.org/changeset/base/216924
Log: MFC 216679: Drop the icu_lock spinlock while pausing briefly after masking the interrupt in the I/O APIC before moving it to a different CPU. Approved by: re (kib) Modified: releng/8.2/sys/amd64/amd64/io_apic.c releng/8.2/sys/i386/i386/io_apic.c Directory Properties: releng/8.2/sys/ (props changed) releng/8.2/sys/amd64/include/xen/ (props changed) releng/8.2/sys/cddl/contrib/opensolaris/ (props changed) releng/8.2/sys/contrib/dev/acpica/ (props changed) releng/8.2/sys/contrib/pf/ (props changed) Modified: releng/8.2/sys/amd64/amd64/io_apic.c ============================================================================== --- releng/8.2/sys/amd64/amd64/io_apic.c Mon Jan 3 17:57:44 2011 (r216923) +++ releng/8.2/sys/amd64/amd64/io_apic.c Mon Jan 3 18:22:22 2011 (r216924) @@ -359,7 +359,9 @@ ioapic_assign_cpu(struct intsrc *isrc, u if (!intpin->io_masked && !intpin->io_edgetrigger) { ioapic_write(io->io_addr, IOAPIC_REDTBL_LO(intpin->io_intpin), intpin->io_lowreg | IOART_INTMSET); + mtx_unlock_spin(&icu_lock); DELAY(100); + mtx_lock_spin(&icu_lock); } intpin->io_cpu = apic_id; Modified: releng/8.2/sys/i386/i386/io_apic.c ============================================================================== --- releng/8.2/sys/i386/i386/io_apic.c Mon Jan 3 17:57:44 2011 (r216923) +++ releng/8.2/sys/i386/i386/io_apic.c Mon Jan 3 18:22:22 2011 (r216924) @@ -359,7 +359,9 @@ ioapic_assign_cpu(struct intsrc *isrc, u if (!intpin->io_masked && !intpin->io_edgetrigger) { ioapic_write(io->io_addr, IOAPIC_REDTBL_LO(intpin->io_intpin), intpin->io_lowreg | IOART_INTMSET); + mtx_unlock_spin(&icu_lock); DELAY(100); + mtx_lock_spin(&icu_lock); } intpin->io_cpu = apic_id; _______________________________________________ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"