On Thu, Mar 21, 2019 at 11:05:06AM -0700, Andy Lutomirski wrote: > Ugh. > > I certainly agree in principle that sticking the CR2 read into the asm > is the right solution. But this patch makes the spaghetti even more > tangled. Maybe we can rearrange the code a bit so that the entry > sequence saves at least one register before calling error_entry, so we > can do it the obvious way.
What is the obvious way? Note that with all the Xen/paravirt-me-harder bits on, we need to clobber at least RAX to get CR2. And most of the patch was munging the paravirt bits to make that happen. Another thing I did notices is that CLAC and CLD are not next to one another in these paths.