On Fri, Nov 03, 2017 at 11:00:05AM -0700, Megha Dey wrote:

SNIP

> +
> +static int intel_bm_event_nmi_handler(unsigned int cmd, struct pt_regs *regs)
> +{
> +     struct perf_event *event;
> +     union bm_detect_status stat;
> +     struct perf_sample_data data;
> +     int i;
> +     unsigned long x;
> +
> +     rdmsrl(BR_DETECT_STATUS_MSR, stat.raw);
> +
> +     if (stat.event) {
> +             wrmsrl(BR_DETECT_STATUS_MSR, 0);
> +             apic_write(APIC_LVTPC, APIC_DM_NMI);
> +             /*
> +              * Issue wake-up to corrresponding polling event
> +              */
> +             x = stat.ctrl_hit;
> +             for_each_set_bit(i, &x, bm_num_counters) {
> +                     event = bm_counter_owner[i];
> +                     perf_sample_data_init(&data, 0, event->hw.last_period);
> +                     perf_event_overflow(event, &data, regs);

hum, it's non sampling events only right? then you don't need
any of the perf_sample_data stuff.. the perf_event_overflow call
is basicaly nop

> +                     local64_inc(&event->count);
> +                     atomic_set(&event->hw.bm_poll, POLLIN);
> +                     event->pending_wakeup = 1;
> +                     irq_work_queue(&event->pending);

also this is for sampling events only

seems like you only want to increment the event->count in here

thanks,
jirka

> +             }
> +             return NMI_HANDLED;
> +     }
> +     return NMI_DONE;
> +}


SNIP
--
To unsubscribe from this list: send the line "unsubscribe linux-doc" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to