Lines Matching refs:event

286 static u32 cxl_pmu_config_get_mask(struct perf_event *event)  in cxl_pmu_config_get_mask()  argument
288 return FIELD_GET(CXL_PMU_ATTR_CONFIG_MASK_MSK, event->attr.config); in cxl_pmu_config_get_mask()
291 static u16 cxl_pmu_config_get_gid(struct perf_event *event) in cxl_pmu_config_get_gid() argument
293 return FIELD_GET(CXL_PMU_ATTR_CONFIG_GID_MSK, event->attr.config); in cxl_pmu_config_get_gid()
296 static u16 cxl_pmu_config_get_vid(struct perf_event *event) in cxl_pmu_config_get_vid() argument
298 return FIELD_GET(CXL_PMU_ATTR_CONFIG_VID_MSK, event->attr.config); in cxl_pmu_config_get_vid()
301 static u8 cxl_pmu_config1_get_threshold(struct perf_event *event) in cxl_pmu_config1_get_threshold() argument
303 return FIELD_GET(CXL_PMU_ATTR_CONFIG1_THRESHOLD_MSK, event->attr.config1); in cxl_pmu_config1_get_threshold()
306 static bool cxl_pmu_config1_get_invert(struct perf_event *event) in cxl_pmu_config1_get_invert() argument
308 return FIELD_GET(CXL_PMU_ATTR_CONFIG1_INVERT_MSK, event->attr.config1); in cxl_pmu_config1_get_invert()
311 static bool cxl_pmu_config1_get_edge(struct perf_event *event) in cxl_pmu_config1_get_edge() argument
313 return FIELD_GET(CXL_PMU_ATTR_CONFIG1_EDGE_MSK, event->attr.config1); in cxl_pmu_config1_get_edge()
323 static bool cxl_pmu_config1_hdm_filter_en(struct perf_event *event) in cxl_pmu_config1_hdm_filter_en() argument
325 return FIELD_GET(CXL_PMU_ATTR_CONFIG1_FILTER_EN_MSK, event->attr.config1); in cxl_pmu_config1_hdm_filter_en()
328 static u16 cxl_pmu_config2_get_hdm_decoder(struct perf_event *event) in cxl_pmu_config2_get_hdm_decoder() argument
330 return FIELD_GET(CXL_PMU_ATTR_CONFIG2_HDM_MSK, event->attr.config2); in cxl_pmu_config2_get_hdm_decoder()
525 static int cxl_pmu_get_event_idx(struct perf_event *event, int *counter_idx, in cxl_pmu_get_event_idx() argument
528 struct cxl_pmu_info *info = pmu_to_cxl_pmu_info(event->pmu); in cxl_pmu_get_event_idx()
535 vid = cxl_pmu_config_get_vid(event); in cxl_pmu_get_event_idx()
536 gid = cxl_pmu_config_get_gid(event); in cxl_pmu_get_event_idx()
537 mask = cxl_pmu_config_get_mask(event); in cxl_pmu_get_event_idx()
569 static int cxl_pmu_event_init(struct perf_event *event) in cxl_pmu_event_init() argument
571 struct cxl_pmu_info *info = pmu_to_cxl_pmu_info(event->pmu); in cxl_pmu_event_init()
575 if (event->attr.type != event->pmu->type) in cxl_pmu_event_init()
578 if (is_sampling_event(event) || event->attach_state & PERF_ATTACH_TASK) in cxl_pmu_event_init()
587 rc = cxl_pmu_get_event_idx(event, NULL, NULL); in cxl_pmu_event_init()
591 event->cpu = info->on_cpu; in cxl_pmu_event_init()
620 static void cxl_pmu_event_start(struct perf_event *event, int flags) in cxl_pmu_event_start() argument
622 struct cxl_pmu_info *info = pmu_to_cxl_pmu_info(event->pmu); in cxl_pmu_event_start()
623 struct hw_perf_event *hwc = &event->hw; in cxl_pmu_event_start()
642 if (cxl_pmu_config1_hdm_filter_en(event)) in cxl_pmu_event_start()
643 cfg = cxl_pmu_config2_get_hdm_decoder(event); in cxl_pmu_event_start()
654 cxl_pmu_config1_get_edge(event) ? 1 : 0); in cxl_pmu_event_start()
656 cxl_pmu_config1_get_invert(event) ? 1 : 0); in cxl_pmu_event_start()
663 cxl_pmu_config_get_mask(event)); in cxl_pmu_event_start()
675 cxl_pmu_config1_get_threshold(event)); in cxl_pmu_event_start()
681 perf_event_update_userpage(event); in cxl_pmu_event_start()
684 static u64 cxl_pmu_read_counter(struct perf_event *event) in cxl_pmu_read_counter() argument
686 struct cxl_pmu_info *info = pmu_to_cxl_pmu_info(event->pmu); in cxl_pmu_read_counter()
689 return readq(base + CXL_PMU_COUNTER_REG(event->hw.idx)); in cxl_pmu_read_counter()
692 static void __cxl_pmu_read(struct perf_event *event, bool overflow) in __cxl_pmu_read() argument
694 struct cxl_pmu_info *info = pmu_to_cxl_pmu_info(event->pmu); in __cxl_pmu_read()
695 struct hw_perf_event *hwc = &event->hw; in __cxl_pmu_read()
700 new_cnt = cxl_pmu_read_counter(event); in __cxl_pmu_read()
711 local64_add(delta, &event->count); in __cxl_pmu_read()
714 static void cxl_pmu_read(struct perf_event *event) in cxl_pmu_read() argument
716 __cxl_pmu_read(event, false); in cxl_pmu_read()
719 static void cxl_pmu_event_stop(struct perf_event *event, int flags) in cxl_pmu_event_stop() argument
721 struct cxl_pmu_info *info = pmu_to_cxl_pmu_info(event->pmu); in cxl_pmu_event_stop()
723 struct hw_perf_event *hwc = &event->hw; in cxl_pmu_event_stop()
726 cxl_pmu_read(event); in cxl_pmu_event_stop()
738 static int cxl_pmu_event_add(struct perf_event *event, int flags) in cxl_pmu_event_add() argument
740 struct cxl_pmu_info *info = pmu_to_cxl_pmu_info(event->pmu); in cxl_pmu_event_add()
741 struct hw_perf_event *hwc = &event->hw; in cxl_pmu_event_add()
747 rc = cxl_pmu_get_event_idx(event, &idx, &event_idx); in cxl_pmu_event_add()
755 info->hw_events[idx] = event; in cxl_pmu_event_add()
759 cxl_pmu_event_start(event, PERF_EF_RELOAD); in cxl_pmu_event_add()
764 static void cxl_pmu_event_del(struct perf_event *event, int flags) in cxl_pmu_event_del() argument
766 struct cxl_pmu_info *info = pmu_to_cxl_pmu_info(event->pmu); in cxl_pmu_event_del()
767 struct hw_perf_event *hwc = &event->hw; in cxl_pmu_event_del()
769 cxl_pmu_event_stop(event, PERF_EF_UPDATE); in cxl_pmu_event_del()
772 perf_event_update_userpage(event); in cxl_pmu_event_del()
791 struct perf_event *event = info->hw_events[i]; in cxl_pmu_irq() local
793 if (!event) { in cxl_pmu_irq()
799 __cxl_pmu_read(event, true); in cxl_pmu_irq()