Lines Matching defs:event
165 * @event_init: callback invoked during event init.
166 * @event_destroy: callback invoked during event destroy.
170 int (*event_init)(struct fme_perf_priv *priv, u32 event, u32 portid);
171 void (*event_destroy)(struct fme_perf_priv *priv, u32 event,
173 u64 (*read_counter)(struct fme_perf_priv *priv, u32 event, u32 portid);
217 PMU_FORMAT_ATTR(event, "config:0-11");
288 static int basic_event_init(struct fme_perf_priv *priv, u32 event, u32 portid)
290 if (event <= BASIC_EVNT_MAX && is_portid_root(portid))
297 u32 event, u32 portid)
304 static int cache_event_init(struct fme_perf_priv *priv, u32 event, u32 portid)
307 event <= CACHE_EVNT_MAX && is_portid_root(portid))
314 u32 event, u32 portid)
320 if (event == CACHE_EVNT_WR_HIT || event == CACHE_EVNT_WR_MISS ||
321 event == CACHE_EVNT_DATA_WR_PORT_CONTEN ||
322 event == CACHE_EVNT_TAG_WR_PORT_CONTEN)
327 /* set channel access type and cache event code. */
331 v |= FIELD_PREP(CACHE_CTRL_EVNT, event);
335 FIELD_GET(CACHE_CNTR_EVNT, v) == event,
337 dev_err(priv->dev, "timeout, unmatched cache event code in counter register.\n");
349 static bool is_fabric_event_supported(struct fme_perf_priv *priv, u32 event,
352 if (event > FAB_EVNT_MAX || !is_portid_root_or_port(portid))
356 (event == FAB_EVNT_PCIE1_RD || event == FAB_EVNT_UPI_RD ||
357 event == FAB_EVNT_PCIE1_WR || event == FAB_EVNT_UPI_WR))
363 static int fabric_event_init(struct fme_perf_priv *priv, u32 event, u32 portid)
369 if (!is_fabric_event_supported(priv, event, portid))
377 * so every time, a new event is initialized, driver checks
382 dev_dbg(priv->dev, "conflict fabric event monitoring mode.\n");
414 static void fabric_event_destroy(struct fme_perf_priv *priv, u32 event,
422 static u64 fabric_read_event_counter(struct fme_perf_priv *priv, u32 event,
430 v |= FIELD_PREP(FAB_CTRL_EVNT, event);
434 FIELD_GET(FAB_CNTR_EVNT, v) == event,
436 dev_err(priv->dev, "timeout, unmatched fab event code in counter register.\n");
444 static int vtd_event_init(struct fme_perf_priv *priv, u32 event, u32 portid)
447 event <= VTD_EVNT_MAX && is_portid_port(portid))
453 static u64 vtd_read_event_counter(struct fme_perf_priv *priv, u32 event,
459 event += (portid * (VTD_EVNT_MAX + 1));
463 v |= FIELD_PREP(VTD_CTRL_EVNT, event);
467 FIELD_GET(VTD_CNTR_EVNT, v) == event,
469 dev_err(priv->dev, "timeout, unmatched vtd event code in counter register.\n");
477 static int vtd_sip_event_init(struct fme_perf_priv *priv, u32 event, u32 portid)
480 event <= VTD_SIP_EVNT_MAX && is_portid_root(portid))
486 static u64 vtd_sip_read_event_counter(struct fme_perf_priv *priv, u32 event,
494 v |= FIELD_PREP(VTD_SIP_CTRL_EVNT, event);
498 FIELD_GET(VTD_SIP_CNTR_EVNT, v) == event,
500 dev_err(priv->dev, "timeout, unmatched vtd sip event code in counter register\n");
532 ptr += sprintf(ptr, "event=0x%02x", (unsigned int)get_event(config));
786 static void fme_perf_event_destroy(struct perf_event *event)
788 struct fme_perf_event_ops *ops = get_event_ops(event->hw.event_base);
789 struct fme_perf_priv *priv = to_fme_perf_priv(event->pmu);
792 ops->event_destroy(priv, event->hw.idx, event->hw.config_base);
795 static int fme_perf_event_init(struct perf_event *event)
797 struct fme_perf_priv *priv = to_fme_perf_priv(event->pmu);
798 struct hw_perf_event *hwc = &event->hw;
802 /* test the event attr type check for PMU enumeration */
803 if (event->attr.type != event->pmu->type)
809 * Also, it does not support event sampling mode.
811 if (is_sampling_event(event) || event->attach_state & PERF_ATTACH_TASK)
814 if (event->cpu < 0)
817 if (event->cpu != priv->cpu)
820 eventid = get_event(event->attr.config);
821 portid = get_portid(event->attr.config);
822 evtype = get_evtype(event->attr.config);
830 event->destroy = fme_perf_event_destroy;
832 dev_dbg(priv->dev, "%s event=0x%x, evtype=0x%x, portid=0x%x,\n",
842 static void fme_perf_event_update(struct perf_event *event)
844 struct fme_perf_event_ops *ops = get_event_ops(event->hw.event_base);
845 struct fme_perf_priv *priv = to_fme_perf_priv(event->pmu);
846 struct hw_perf_event *hwc = &event->hw;
853 local64_add(delta, &event->count);
856 static void fme_perf_event_start(struct perf_event *event, int flags)
858 struct fme_perf_event_ops *ops = get_event_ops(event->hw.event_base);
859 struct fme_perf_priv *priv = to_fme_perf_priv(event->pmu);
860 struct hw_perf_event *hwc = &event->hw;
867 static void fme_perf_event_stop(struct perf_event *event, int flags)
869 fme_perf_event_update(event);
872 static int fme_perf_event_add(struct perf_event *event, int flags)
875 fme_perf_event_start(event, flags);
880 static void fme_perf_event_del(struct perf_event *event, int flags)
882 fme_perf_event_stop(event, PERF_EF_UPDATE);
885 static void fme_perf_event_read(struct perf_event *event)
887 fme_perf_event_update(event);