Date: Wed, 1 Jul 2009 17:20:07 +0000 (UTC) From: John Baldwin <jhb@FreeBSD.org> To: cvs-src-old@freebsd.org Subject: cvs commit: src/sys/amd64/amd64 intr_machdep.c io_apic.c local_apic.c msi.c src/sys/amd64/include intr_machdep.h src/sys/amd64/isa atpic.c src/sys/i386/i386 intr_machdep.c io_apic.c local_apic.c msi.c src/sys/i386/include intr_machdep.h ... Message-ID: <200907011720.n61HKVL9040145@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
jhb 2009-07-01 17:20:07 UTC
FreeBSD src repository
Modified files:
sys/amd64/amd64 intr_machdep.c io_apic.c local_apic.c
msi.c
sys/amd64/include intr_machdep.h
sys/amd64/isa atpic.c
sys/i386/i386 intr_machdep.c io_apic.c local_apic.c
msi.c
sys/i386/include intr_machdep.h
sys/i386/isa atpic.c
sys/kern kern_intr.c
sys/sys priv.h
Log:
SVN rev 195249 on 2009-07-01 17:20:07Z by jhb
Improve the handling of cpuset with interrupts.
- For x86, change the interrupt source method to assign an interrupt source
to a specific CPU to return an error value instead of void, thus allowing
it to fail.
- If moving an interrupt to a CPU fails due to a lack of IDT vectors in the
destination CPU, fail the request with ENOSPC rather than panicing.
- For MSI interrupts on x86 (but not MSI-X), only allow cpuset to be used
on the first interrupt in a group. Moving the first interrupt in a group
moves the entire group.
- Use the icu_lock to protect intr_next_cpu() on x86 instead of the
intr_table_lock to fix a LOR introduced in the last set of MSI changes.
- Add a new privilege PRIV_SCHED_CPUSET_INTR for using cpuset with
interrupts. Previously, binding an interrupt to a CPU only performed a
privilege check if the interrupt had an interrupt thread. Interrupts
without a thread could be bound by non-root users as a result.
- If an interrupt event's assign_cpu method fails, then restore the original
cpuset mask for the associated interrupt thread.
Approved by: re (kib)
Revision Changes Path
1.45 +20 -15 src/sys/amd64/amd64/intr_machdep.c
1.34 +12 -6 src/sys/amd64/amd64/io_apic.c
1.58 +3 -3 src/sys/amd64/amd64/local_apic.c
1.13 +63 -17 src/sys/amd64/amd64/msi.c
1.24 +1 -1 src/sys/amd64/include/intr_machdep.h
1.25 +2 -2 src/sys/amd64/isa/atpic.c
1.41 +20 -15 src/sys/i386/i386/intr_machdep.c
1.38 +11 -5 src/sys/i386/i386/io_apic.c
1.61 +3 -3 src/sys/i386/i386/local_apic.c
1.13 +63 -17 src/sys/i386/i386/msi.c
1.25 +1 -1 src/sys/i386/include/intr_machdep.h
1.31 +2 -2 src/sys/i386/isa/atpic.c
1.172 +23 -3 src/sys/kern/kern_intr.c
1.37 +1 -0 src/sys/sys/priv.h
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200907011720.n61HKVL9040145>
