Yes, A has to be invalidated since the other core's commit is coming through.
hdd
Note the behaviour of R and W bits when upgradeX is received for A for another core. So in that case, since A has been modified locally, the current transaction that the core visible to us is running has to abort and clear the RW bits. If a request to an untouched variable is made, then the transaction need not abort and they proceed until commit.
shreeduh
I think aborting the transaction would involve starting all over again, and so it would mean invalidating A.
Should A also not be invalidated here?
Yes, A has to be invalidated since the other core's commit is coming through.
Note the behaviour of R and W bits when upgradeX is received for A for another core. So in that case, since A has been modified locally, the current transaction that the core visible to us is running has to abort and clear the RW bits. If a request to an untouched variable is made, then the transaction need not abort and they proceed until commit.
I think aborting the transaction would involve starting all over again, and so it would mean invalidating A.