summaryrefslogtreecommitdiffstats
path: root/sys/dev/hwpmc/hwpmc_amd.c
diff options
context:
space:
mode:
authorjkoshy <jkoshy@FreeBSD.org>2005-08-27 16:03:40 +0000
committerjkoshy <jkoshy@FreeBSD.org>2005-08-27 16:03:40 +0000
commit28a21798c0ebbe29e88e9f6f0bfd54bdd9da565d (patch)
tree467d928cf9d7ef8d0a280d8bd00f284d359225e8 /sys/dev/hwpmc/hwpmc_amd.c
parent3627dcf262d0a35af458e0c84d770346daf9d8e4 (diff)
downloadFreeBSD-src-28a21798c0ebbe29e88e9f6f0bfd54bdd9da565d.zip
FreeBSD-src-28a21798c0ebbe29e88e9f6f0bfd54bdd9da565d.tar.gz
- Special-case NMI handling on the AMD64.
On entry or exit from the kernel the 'alltraps' and 'doreti' code used taken by normal traps disables interrupts to protect the critical sections where it is setting up %gs. This protection is insufficient in the presence of NMIs since NMIs can be taken even when the processor has disabled normal interrupts. Thus the NMI handler needs to actually read MSR_GBASE on entry to the kernel to determine whether a swap of %gs using 'swapgs' is needed. However, reads of MSRs are expensive and integrating this check into the 'alltraps'/'doreti' path would penalize normal interrupts. - Teach DDB about the 'nmi_calltrap' symbol. Reviewed by: bde, peter (older versions of this change)
Diffstat (limited to 'sys/dev/hwpmc/hwpmc_amd.c')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud