The changes were to a version of xen-unstable somewhere between Xen 2 and Xen 3. Probably the easiest way to isolate the changes that we made is to execute the following command: $ hg diff -r 5644 > /tmp/xeno-crew-smp.diff Revision 5644 was the last time we merged with xen-unstable. I doubt that very much of the patch at all would apply to Xen 3.2, as xend, xcs, linux, and the shadow code have all had drastic overhauls. Changes include: * Linux + Introduced new target, domT, which is designed to run in shadow translate mode + Resized "shared info" structures so that important things are on separate pages + Added plumbing / hooks for dom0 to control replay functionality in Xen * Xen + arch/x86/{record, replay_queue, replay}.c + shadow pagetables: per-vcpu shadows, deterministic shadow syncing * Tools + Added plumbing for replay commands, status, &c + Domain builder for Linux domT + tools/replay directory, full of all kinds of fun stuff Other notes: * replay_queue is the core of the in-memory "queue" functionality. The intent was to be able to log either to disk, or to another replaying domain, or both. There's a lot of legwork to deal with things like: + pausing a logging domain when the buffer is full (queue->disk and/or replaying domain are behind) + Pausing a replaying domain when it has 'caught up' to a logging domain * Various hooks for important events call functions of the format "report_monitored_[foo]()" to say that something interesting has happened. * BTS stands for "branch trace store". It's a hardware feature for debugging that instructs the processor to write the eips of every branch (from->to) in a memory buffer. By comparing the BTS during logging to that during replay, we were able to isolate the exact instruction where execution deviated. This was incredibly useful during development. * Hooking in between the frontends and backends seems like a straightforward idea, but it's a nightmare to deal with Xend. I think a better solution, if writing the whole thing over, would just be to hook directly into the backends.