On Tue, Jul 21, 2015 at 06:50:45PM -0700, Sukadev Bhattiprolu wrote: > We are trying to use the following interface: > > start_txn(pmu, PERF_PMU_TXN_READ); > > perf_event_read(leader); > list_for_each(sibling, &leader->sibling_list, group_entry) > perf_event_read(sibling) > > pmu->commit_txn(pmu); > > with the idea that the PMU driver would save the type of transaction in > ->start_txn() and use in ->read() and ->commit_txn(). > > But since ->start_txn() and the ->read() operations could happen on different > CPUs (perf_event_read() uses the event->oncpu to schedule a call), the PMU > driver cannot use a per-cpu variable to save the state in ->start_txn().
> or is there better way? I've not woken up yet, and not actually fully read the email, but can you stuff the entire above chunk inside the IPI? I think you could then actually optimize __perf_event_read() as well, because all these events should be on the same context, so no point in calling update_*time*() for every event or so. _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev