Re: [RFC][PATCH] tracing/x86: Save CR2 before tracing irqsoff on error_entry

From: Peter Zijlstra
Date: Thu Mar 21 2019 - 14:33:41 EST


On Thu, Mar 21, 2019 at 11:28:50AM -0700, Andy Lutomirski wrote:
> On Thu, Mar 21, 2019 at 11:27 AM Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote:
> >
> > 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.
>
> The thing I really don't like is all the EBX crud to try to get
> everything in to the right order.

Ah yes, granted. I hate that part too but didn't see a way around it :/