freebsd-dev/sys/dev/hwpmc
Konstantin Belousov 22d7708455 hwpmc/core: Adopt to upcoming Skylake TSX errata.
The forthcoming microcode update will fix a TSX bug by clobbering PMC3
when TSX instructions are executed (even speculatively).  There is an
alternate mode where CPU executes all TSX instructions by aborting
them, in which case PMC3 is still available to OS.  Any code that
correctly uses TSX must be ready to handle abort anyway.

Since it is believed that FreeBSD population of hwpmc(4) users is
significantly larger than the population of TSX users, switch the
microcode into TSX abort mode whenever a pmc is allocated, and back to
bug avoidance mode when the last pmc is deallocated.

Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
2019-03-12 19:33:25 +00:00
..
hwpmc_amd.c Add aditional counter descriptions to AMD 0x17 2018-11-04 06:24:27 +00:00
hwpmc_amd.h Add aditional counter descriptions to AMD 0x17 2018-11-04 06:24:27 +00:00
hwpmc_arm64_md.c
hwpmc_arm64.c hwpmc: fix arm64 INVARIANTS build 2018-06-08 05:48:28 +00:00
hwpmc_arm64.h
hwpmc_arm.c hwpmc: remove dangling references to hwpmc_xscale 2018-06-08 20:39:49 +00:00
hwpmc_armv7.c hwpmc: simplify calling convention for hwpmc interrupt handling 2018-06-08 04:58:03 +00:00
hwpmc_armv7.h
hwpmc_core.c hwpmc/core: Adopt to upcoming Skylake TSX errata. 2019-03-12 19:33:25 +00:00
hwpmc_core.h hwpmc: ABI fixes 2018-06-04 02:05:48 +00:00
hwpmc_e500.c hwpmc: update files missed by r334827 2018-06-08 17:41:49 +00:00
hwpmc_intel.c hwpmc: remove unused pre-table driven bits for intel 2018-05-31 22:41:07 +00:00
hwpmc_logging.c Add malloc_domainset(9) and _domainset variants to other allocator KPIs. 2018-10-30 18:26:34 +00:00
hwpmc_mips24k.c sys/dev: further adoption of SPDX licensing ID tags. 2017-11-27 14:52:40 +00:00
hwpmc_mips74k.c
hwpmc_mips.c hwpmc: update files missed by r334827 2018-06-08 17:41:49 +00:00
hwpmc_mod.c hwpmc: Plug memory disclosures from PMC_OP_{GETPMCINFO,GETCPUINFO}. 2019-01-21 18:07:02 +00:00
hwpmc_mpc7xxx.c hwpmc: update files missed by r334827 2018-06-08 17:41:49 +00:00
hwpmc_octeon.c sys/dev: further adoption of SPDX licensing ID tags. 2017-11-27 14:52:40 +00:00
hwpmc_powerpc.c sys/dev: further adoption of SPDX licensing ID tags. 2017-11-27 14:52:40 +00:00
hwpmc_powerpc.h sys/dev: further adoption of SPDX licensing ID tags. 2017-11-27 14:52:40 +00:00
hwpmc_ppc970.c hwpmc: update files missed by r334827 2018-06-08 17:41:49 +00:00
hwpmc_riscv.h
hwpmc_soft.c hwpmc: simplify calling convention for hwpmc interrupt handling 2018-06-08 04:58:03 +00:00
hwpmc_soft.h sys/dev: further adoption of SPDX licensing ID tags. 2017-11-27 14:52:40 +00:00
hwpmc_sparc64.c sys/dev: further adoption of SPDX licensing ID tags. 2017-11-27 14:52:40 +00:00
hwpmc_tsc.c sys/dev: further adoption of SPDX licensing ID tags. 2017-11-27 14:52:40 +00:00
hwpmc_tsc.h sys/dev: further adoption of SPDX licensing ID tags. 2017-11-27 14:52:40 +00:00
hwpmc_uncore.c hwpmc: remove unused pre-table driven bits for intel 2018-05-31 22:41:07 +00:00
hwpmc_uncore.h hwpmc: remove unused pre-table driven bits for intel 2018-05-31 22:41:07 +00:00
hwpmc_x86.c sys/dev: further adoption of SPDX licensing ID tags. 2017-11-27 14:52:40 +00:00
hwpmc_xscale.h Revert r336773: it removed too much. 2018-07-27 21:25:01 +00:00
pmc_events.h Revert r336773: it removed too much. 2018-07-27 21:25:01 +00:00