Just a status update...
The perfctr x86 performance monitoring counters driver now
runs on an actual AMD Opteron CPU in 64-bit mode. The kernel
is Rawhide's 2.4.20-9.2 in SMP mode.
The driver appears to be fully functional. Test cases
where processes set up their own perfctrs, including
interrupt-on-overflow-turned-into-signal counters, work
as expected. (examples/self/ and examples/signal/.)
The perfex user-space program doesn't work yet. It uses file
descriptor passing in a control message over a unix datagram
socket, but I get unexpected 'Bad file descriptor' errors
from sendmsg(). I'm currently investigating this problem.
/Mikael
PERFCTR INIT: vendor 2, family 15, model 5, stepping 0, clock 1381091 kHz
PERFCTR INIT: NITER == 64
PERFCTR INIT: loop overhead is 80 cycles
PERFCTR INIT: rdtsc cost is 6.1 cycles (474 total)
PERFCTR INIT: rdpmc cost is 14.1 cycles (983 total)
PERFCTR INIT: rdmsr (counter) cost is 50.9 cycles (3343 total)
PERFCTR INIT: rdmsr (evntsel) cost is 57.6 cycles (3769 total)
PERFCTR INIT: wrmsr (counter) cost is 68.9 cycles (4495 total)
PERFCTR INIT: wrmsr (evntsel) cost is 320.6 cycles (20602 total)
PERFCTR INIT: read cr4 cost is 6.9 cycles (526 total)
PERFCTR INIT: write cr4 cost is 66.0 cycles (4307 total)
perfctr: disabled lapic_nmi_watchdog
perfctr: driver 2.5.2 DEBUG, cpu type AMD K8 at 1381091 kHz