|
From: Josef W. <Jos...@gm...> - 2013-07-19 23:19:32
|
Am 20.07.2013 00:03, schrieb Carl E. Love: > I have implemented the second proposal for Power. > ... > decoding of the bits indicate: persistent failure, footprint overflow, > privilege state, failure summary is complete, transaction level 1. The > key thing here is the "footprint overflow" which is described in the ISA > as "an attempt to perform a storage access in Transactional state which > exceeds the capacity for tracking transactional accesses". Basically, > we can't track all of the guest program instructions between the tbegin > and tend with all of the valgrind instructions mixed in. Hmm. The transaction in your code is quite small. Is there a new superblock started within the transaction? If this never was translated before (very probably), Valgrind will try to do a translation, which of course overflows the transaction storage. And with the rollback, the partly started translation will never succeed. > The bottom line is that the second approach doesn't appear to be viable > on Power unless we can change the implementation that I did somehow. It > seems like Valgrind really needs to have the TM support in software. > Specifically, valgrind will have to track the loads/stores between a > tbegin and tend and then try to emulate the correct behavior. After collecting read/write sets, the emulation could be done using TM itself, which would care about conflicts, ensuring the correct behavior. But as already mentioned elsewhere, it is probably way simpler to just force the transaction to run in single-thread mode (stop other threads before), simply ignoring all TM transactions. Josef |