On Tue, 2010-05-25 at 23:32 +0800, Peter Zijlstra wrote: > On Tue, 2010-05-25 at 17:02 +0200, Stephane Eranian wrote: > > Ok, the patch look good expect it needs: > > > > static int x86_pmu_commit_txn(const struct pmu *pmu) > > { > > ...... > > /* > > * copy new assignment, now we know it is possible > > * will be used by hw_perf_enable() > > */ > > memcpy(cpuc->assign, assign, n*sizeof(int)); > > > > cpuc->n_txn = 0; > > > > return 0; > > } > > > > Because you always call cancel_txn() even when commit() > > succeeds. I don't really understand why. I think it could be > > avoided by clearing the group_flag in commit_txn() if it > > succeeds. It would also make the logical flow more natural. Why > > cancel something that has succeeded. You cancel when you fail/abort. > > Gah, I forgot about that. I think I suggested to Lin to do that and then > promptly forgot.
cancel_txn() clears the transaction flag, so it is needed after both success and fail transaction, although the function name is a bit misleading. Peter's patch adds the clear of transaction flag into each implementation of ->commit_txn. So cancel_txn() is only called after fail transaction now. Thanks, Lin Ming > > Let me add that and at least push this patch fwd, we can try and clean > up that detail later on. ------------------------------------------------------------------------------ _______________________________________________ perfmon2-devel mailing list perfmon2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/perfmon2-devel