The main fix is patch 3, with the earlier patches setting the stage and the latter ones simplifying other things at least a little in exchange.
1: reduce recursion in linear_{read,write}() 2: allocate emulation cache entries dynamically 3: correct read/write split at page boundaries 4: slightly improve CMPXCHG16B emulation 5: drop redundant access splitting Jan