freebsd-skq/sys/ia64/include
Marcel Moolenaar e920e3978e Switch to the event timers infrastructure. This includes:
o   Setting td_intr_frame to the XIVs trap frame because it's referenced
    by the ET event handler.
o   Signal EOI to the CPU before calling the registered XIV handlers.
    This prevents lost ITC interrupts, which cause starvation in one-shot
    mode.
o   Adding support for IPI_HARDCLOCK with corresponding per-CPU counters.
o   Have the APs call cpu_initclocks() so as to limited the scattering of
    clock related initialization. cpu_initclocks() calls the <self>_bsp()
    or <self>_ap() version accordingly.
o   Uncomment the ET clock handling in cpu_idle().
o   Update the DDB 'show pcpu' output for the new MD fields.
o   Entirely rewritten ia64_ih_clock(). Note that we don't create as many
    clock XIVs as we have CPUs, as is done on PowerPC. It doesn't scale.
    We can only have 240 XIVs and we can have more CPUs than that. There's
    a single intrcnt index for the cumulative clock ticks and we keep per
    CPU counts in the PCPU stats structure.
o   Register the ITC by hooking SI_SUB_CONFIGURE (2nd order).

Open issues:
o   Clock interrupts can still be lost. Some tweaking is still necessary.

Thanks to: mav@ for his support, feedback and explanations.

ET stats while committing:
eris% sysctl machdep.cpu | grep nclks

machdep.cpu.0.nclks: 24007
machdep.cpu.1.nclks: 22895
machdep.cpu.2.nclks: 13523
machdep.cpu.3.nclks: 9342
machdep.cpu.4.nclks: 9103
machdep.cpu.5.nclks: 9298
machdep.cpu.6.nclks: 10039
machdep.cpu.7.nclks: 9479
eris% vmstat -i | grep clock
clock                      108599         50
2011-06-25 02:15:14 +00:00
..
pc
_align.h Get rid of the _NO_NAMESPACE_POLLUTION kludge by creating an 2009-09-08 20:45:40 +00:00
_bus.h
_inttypes.h The NetBSD Foundation has granted permission to remove clause 3 and 4 from 2010-03-03 17:55:51 +00:00
_limits.h Fix types of some values in machine/_limits.h. 2011-01-08 11:13:34 +00:00
_regset.h
_stdint.h On mixed 32/64 bit architectures (mips, powerpc) use __LP64__ rather than 2011-01-08 12:43:05 +00:00
_types.h Commit the support for removing cpumask_t and replacing it directly with 2011-05-05 14:39:14 +00:00
acpica_machdep.h Rename disable_intr() to ia64_disable_intr() and rename enable_intr() 2010-03-26 21:22:02 +00:00
asm.h When compiling with profiling, we define PROF for userspace and GPROF 2010-07-01 00:30:35 +00:00
atomic.h
bootinfo.h Use the new arch_loadaddr I/F to align ELF objects to PBVM page 2011-04-03 23:49:20 +00:00
bus_dma.h Switch ia64 to the unified busdma implementation. 2010-07-07 02:16:47 +00:00
bus.h Revert r216134. This checkin broke platforms where bus_space are macros: 2010-12-03 07:09:23 +00:00
clock.h Revamp the interrupt code based on the previous commit: 2010-03-17 00:37:15 +00:00
cpu.h
cpufunc.h Rename disable_intr() to ia64_disable_intr() and rename enable_intr() 2010-03-26 21:22:02 +00:00
db_machdep.h
dig64.h
efi.h Fix switching to physical mode as part of calling into EFI runtime 2011-03-21 18:20:53 +00:00
elf.h Add AT_STACKPROT elf aux vector. Will be used to inform rtld about the 2011-01-07 14:22:34 +00:00
endian.h
exec.h
float.h The highest-precision floating point type on ia64 has 64 bits of 2011-01-09 06:05:02 +00:00
floatingpoint.h
fpu.h
frame.h Don't include <machine/_regset.h> when _MACHINE_REGSET_H_ in defined. 2010-03-21 22:33:09 +00:00
gdb_machdep.h
ia64_cpu.h Properly serialize the global shootdown with the instruction 2011-06-17 04:26:03 +00:00
ieee.h
ieeefp.h
in_cksum.h
intr.h Implement interrupt to CPU binding. Assign interrupts to CPUs in a 2010-03-27 05:40:50 +00:00
intrcnt.h Revamp the interrupt code based on the previous commit: 2010-03-17 00:37:15 +00:00
iodev.h - Extract the IODEV_PIO interface from ia64 and make it MI. 2010-04-28 15:38:01 +00:00
kdb.h Define struct pcpu_md as the only MD field of struct pcpu (pc_acpi_id 2009-12-07 06:41:27 +00:00
limits.h
mca.h Allocate and setup an interrupt vector for corrected machine checks. 2010-07-03 20:19:20 +00:00
md_var.h o Deal with unmapped PBVM in the alternate instruction and data TLB fault 2011-03-14 05:29:45 +00:00
memdev.h Add reader/writer lock around mem_range_attr_get() and mem_range_attr_set(). 2011-01-17 22:58:28 +00:00
pal.h Fix switching to physical mode as part of calling into EFI runtime 2011-03-21 18:20:53 +00:00
param.h When compat32 binary asks for the value of hw.machine_arch, report the 2010-07-22 09:13:49 +00:00
pcb.h Don't include <machine/_regset.h> when _MACHINE_REGSET_H_ in defined. 2010-03-21 22:33:09 +00:00
pci_cfgreg.h Some code cleanups: 2010-02-14 17:03:20 +00:00
pcpu.h Switch to the event timers infrastructure. This includes: 2011-06-25 02:15:14 +00:00
pmap.h Remove prototypes of non-existent functions. 2011-04-25 22:38:09 +00:00
pmc_mdep.h
proc.h Change ia64' struct syscall_args definition so that args is a pointer to 2010-05-24 17:24:14 +00:00
profile.h While functions are ideally aligned to a 32-byte boundary, don't 2010-06-30 22:29:02 +00:00
pte.h
ptrace.h
reg.h Provide groundwork for 32-bit binary compatibility on non-x86 platforms, 2010-03-11 14:49:06 +00:00
reloc.h
resource.h
runq.h Switch to C99 exact-width types. 2010-05-19 00:23:10 +00:00
sal.h Use an unbuffered transmit function for low-level console output. 2010-07-07 04:06:38 +00:00
setjmp.h
sf_buf.h
sigframe.h
signal.h
smp.h Switch to the event timers infrastructure. This includes: 2011-06-25 02:15:14 +00:00
stdarg.h
sysarch.h Use io(4) for I/O port access on ia64, rather than through sysarch(2). 2010-01-11 18:10:13 +00:00
ucontext.h
unwind.h
varargs.h
vm.h Add support to the virtual memory system for configuring machine- 2009-07-12 23:31:20 +00:00
vmparam.h Move the ZERO_REGION_SIZE to a machine-dependent file, as on many 2011-05-13 19:35:01 +00:00