  In light of recent advances in non-volatile main memory technology, Golab and
Ramaraju reformulated the traditional mutex problem into the novel {\em
Recoverable Mutual Exclusion} (RME) problem. In the best known solution for
RME, due to Golab and Hendler from PODC 2017, a process incurs at most
$O(\frac{\log n}{\log \log n})$ remote memory references (RMRs) per passage,
where a passage is an interval from when a process enters the Try section to
when it subsequently returns to Remainder. Their algorithm, however, guarantees
this bound only for cache-coherent (CC) multiprocessors, leaving open the
question of whether a similar bound is possible for distributed shared memory
(DSM) multiprocessors.
  We answer this question affirmatively by designing an algorithm that
satisfies the same complexity bound as Golab and Hendler's for both CC and DSM
multiprocessors. Our algorithm has some additional advantages over Golab and
Hendler's: (i) its Exit section is wait-free, (ii) it uses only the
Fetch-and-Store instruction, and (iii) on a CC machine our algorithm needs each
process to have a cache of only $O(1)$ words, while their algorithm needs
$O(n)$ words.
