freebsd-dev/sys/i386/isa
John Baldwin fb610ca1f9 Minor fixes and tweaks to the x86 interrupt code:
- Split the intr_table_lock into an sx lock used for most things, and a
  spin lock to protect intrcnt_index.  Originally I had this as a spin lock
  so interrupt code could use it to lookup sources.  However, we don't
  actually do that because it would add a lot of overhead to interrupts,
  and if we ever do support removing interrupt sources, we can use other
  means to safely do so w/o locking in the interrupt handling code.
- Replace is_enabled (boolean) with is_handlers (a count of handlers) to
  determine if a source is enabled or not.  This allows us to notice when
  a source is no longer in use.  When that happens, we now invoke a new
  PIC method (pic_disable_intr()) to inform the PIC driver that the
  source is no longer in use.  The I/O APIC driver frees the APIC IDT
  vector when this happens.  The MSI driver no longer needs to have a
  hack to clear is_enabled during msi_alloc() and msix_alloc() as a result
  of this change as well.
- Add an apic_disable_vector() to reset an IDT vector back to Xrsvd to
  complement apic_enable_vector() and use it in the I/O APIC and MSI code
  when freeing an IDT vector.
- Add a new nexus hook: nexus_add_irq() to ask the nexus driver to add an
  IRQ to its irq_rman.  The MSI code uses this when it creates new
  interrupt sources to let the nexus know about newly valid IRQs.
  Previously the msi_alloc() and msix_alloc() passed some extra stuff
  back to the nexus methods which then added the IRQs.  This approach is
  a bit cleaner.
- Change the MSI sx lock to a mutex.  If we need to create new sources,
  drop the lock, create the required number of sources, then get the lock
  and try the allocation again.
2007-05-08 21:29:14 +00:00
..
atpic_vector.s Evidently FreeBSD has long relied on the compiler to treat structures 2006-12-17 05:07:01 +00:00
atpic.c Minor fixes and tweaks to the x86 interrupt code: 2007-05-08 21:29:14 +00:00
ccbque.h /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 22:18:23 +00:00
clock.c Partial fix for a bug in rev.1.231. If suspend/resume clobbers the 2007-03-05 09:10:17 +00:00
elcr.c Tweak the ELCR support slightly. Explicitly probe the ELCR during boot 2005-01-18 20:24:47 +00:00
elink.c /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 22:18:23 +00:00
elink.h /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 22:18:23 +00:00
icu.h Evidently FreeBSD has long relied on the compiler to treat structures 2006-12-17 05:07:01 +00:00
isa_dma.c - Move bus dependent defines to {isa,cbus}_dmareg.h. 2005-05-14 10:14:56 +00:00
isa.c o break newbus api: add a new argument of type driver_filter_t to 2007-02-23 12:19:07 +00:00
isa.h - Move bus dependent defines to {isa,cbus}_dmareg.h. 2005-05-14 10:14:56 +00:00
nmi.c Remove advertising clause from University of California Regent's 2004-04-07 20:46:16 +00:00
npx.c o break newbus api: add a new argument of type driver_filter_t to 2007-02-23 12:19:07 +00:00
pmtimer.c First part of a little cleanup in the calendar/timezone/RTC handling. 2006-10-02 12:59:59 +00:00
prof_machdep.c Add an interface for drivers to be notified of changes to CPU frequency. 2007-03-26 18:03:29 +00:00
spic.c Since DELAY() was moved, most <machine/clock.h> #includes have been 2006-05-16 14:37:58 +00:00
spicreg.h /* -> /*- for copyright notices, minor format tweaks as necessary 2005-01-06 22:18:23 +00:00
vesa.c Fix -Wundef warnings found when compiling i386 LINT, GENERIC and 2005-12-05 11:58:35 +00:00