extra_reg
#define OVERFLOW_REG(hwc) ((hwc)->extra_reg.config)
#define SFB_ALLOC_REG(hwc) ((hwc)->extra_reg.alloc)
struct extra_reg *extra_regs = hybrid(event->pmu, extra_regs);
struct extra_reg *er;
reg = &event->hw.extra_reg;
event->hw.extra_reg.idx = EXTRA_REG_NONE;
static struct extra_reg intel_westmere_extra_regs[] __read_mostly =
static struct extra_reg intel_slm_extra_regs[] __read_mostly =
static struct extra_reg intel_glm_extra_regs[] __read_mostly = {
static struct extra_reg intel_tnt_extra_regs[] __read_mostly = {
static struct extra_reg intel_grt_extra_regs[] __read_mostly = {
static struct extra_reg intel_cmt_extra_regs[] __read_mostly = {
static struct extra_reg intel_arw_extra_regs[] __read_mostly = {
static struct extra_reg intel_knl_extra_regs[] __read_mostly = {
static struct extra_reg intel_snb_extra_regs[] __read_mostly = {
static struct extra_reg intel_snbep_extra_regs[] __read_mostly = {
static struct extra_reg intel_skl_extra_regs[] __read_mostly = {
static struct extra_reg intel_icl_extra_regs[] __read_mostly = {
static struct extra_reg intel_glc_extra_regs[] __read_mostly = {
struct extra_reg *extra_regs = hybrid(cpuc->pmu, extra_regs);
struct extra_reg *extra_regs = hybrid(event->pmu, extra_regs);
event->hw.extra_reg.idx = idx;
event->hw.extra_reg.reg = MSR_OFFCORE_RSP_0 + er_idx;
event->hw.extra_reg.reg = MSR_OMR_0 + er_idx;
xreg = &event->hw.extra_reg;
static struct extra_reg intel_rwc_extra_regs[] __read_mostly = {
reg = &event->hw.extra_reg;
static struct extra_reg intel_lnc_extra_regs[] __read_mostly = {
static struct extra_reg intel_pnc_extra_regs[] __read_mostly = {
static void intel_pmu_check_extra_regs(struct extra_reg *extra_regs);
static void intel_pmu_check_extra_regs(struct extra_reg *extra_regs)
struct extra_reg *er;
static struct extra_reg intel_nehalem_extra_regs[] __read_mostly =
struct hw_perf_event_extra *reg1 = &event->hw.extra_reg;
struct hw_perf_event_extra *reg1 = &event->hw.extra_reg;
event->hw.extra_reg.idx = EXTRA_REG_NONE;
struct hw_perf_event_extra *reg1 = &event->hw.extra_reg;
struct hw_perf_event_extra *reg1 = &event->hw.extra_reg;
struct hw_perf_event_extra *reg1 = &hwc->extra_reg;
struct hw_perf_event_extra *reg1 = &hwc->extra_reg;
struct hw_perf_event_extra *reg1 = &hwc->extra_reg;
struct hw_perf_event_extra *reg1 = &hwc->extra_reg;
struct hw_perf_event_extra *reg1 = &hwc->extra_reg;
static struct extra_reg nhmex_uncore_mbox_extra_regs[] = {
struct hw_perf_event_extra *reg1 = &hwc->extra_reg;
struct hw_perf_event_extra *reg1 = &event->hw.extra_reg;
struct hw_perf_event_extra *reg1 = &event->hw.extra_reg;
static int nhmex_mbox_extra_reg_idx(struct extra_reg *er)
struct hw_perf_event_extra *reg1 = &event->hw.extra_reg;
struct extra_reg *er;
struct hw_perf_event_extra *reg1 = &hwc->extra_reg;
struct hw_perf_event_extra *reg1 = &hwc->extra_reg;
struct hw_perf_event_extra *reg1 = &hwc->extra_reg;
event->hw.extra_reg.idx = EXTRA_REG_NONE;
struct hw_perf_event_extra *reg1 = &event->hw.extra_reg;
struct extra_reg *er;
struct hw_perf_event_extra *reg1 = &hwc->extra_reg;
struct hw_perf_event_extra *reg1 = &event->hw.extra_reg;
struct hw_perf_event_extra *reg1 = &event->hw.extra_reg;
struct hw_perf_event_extra *reg1 = &hwc->extra_reg;
struct hw_perf_event_extra *reg1 = &hwc->extra_reg;
struct hw_perf_event_extra *reg1 = &hwc->extra_reg;
static struct extra_reg ivbep_uncore_cbox_extra_regs[] = {
struct hw_perf_event_extra *reg1 = &event->hw.extra_reg;
struct extra_reg *er;
struct hw_perf_event_extra *reg1 = &hwc->extra_reg;
static struct extra_reg knl_uncore_cha_extra_regs[] = {
struct hw_perf_event_extra *reg1 = &event->hw.extra_reg;
struct extra_reg *er;
struct hw_perf_event_extra *reg1 = &event->hw.extra_reg;
static struct extra_reg hswep_uncore_cbox_extra_regs[] = {
struct hw_perf_event_extra *reg1 = &event->hw.extra_reg;
struct extra_reg *er;
struct hw_perf_event_extra *reg1 = &hwc->extra_reg;
struct hw_perf_event_extra *reg1 = &hwc->extra_reg;
static struct extra_reg skx_uncore_cha_extra_regs[] = {
struct hw_perf_event_extra *reg1 = &event->hw.extra_reg;
struct extra_reg *er;
struct hw_perf_event_extra *reg1 = &event->hw.extra_reg;
struct hw_perf_event_extra *reg1 = &hwc->extra_reg;
struct hw_perf_event_extra *reg1 = &hwc->extra_reg;
struct hw_perf_event_extra *reg1 = &event->hw.extra_reg;
struct hw_perf_event_extra *reg1 = &hwc->extra_reg;
struct hw_perf_event_extra *reg1 = &hwc->extra_reg;
struct hw_perf_event_extra *reg1 = &event->hw.extra_reg;
struct hw_perf_event_extra *reg1 = &hwc->extra_reg;
static struct extra_reg snbep_uncore_cbox_extra_regs[] = {
struct hw_perf_event_extra *reg1 = &event->hw.extra_reg;
struct hw_perf_event_extra *reg1 = &event->hw.extra_reg;
struct extra_reg *extra_regs;
if (hwc->extra_reg.reg)
wrmsrq(hwc->extra_reg.reg, hwc->extra_reg.config);
struct extra_reg *extra_regs;
event->hw.extra_reg.config = branch_type_to_brbcr(event->attr.branch_sample_type);
brbcr |= event->hw.extra_reg.config;
hwc->extra_reg.idx = -1;
if (event->hw.extra_reg.idx == cspmu->cycle_counter_logical_idx) {
hwc->extra_reg.idx = idx;
int idx = hwc->extra_reg.idx;
struct hw_perf_event_extra extra_reg;