Re: [kvm-devel] [PATCH 3/3] Eliminate read_cr3 on TLB flush

Rusty Russell
2007-05-31T01:12:13Z

On Wed, 2007-05-30 at 14:22 -0500, Anthony Liguori wrote:
> I was actually thinking about adding a hypercall to set/clear a bit in a
> control register. The thought here is that it would be useful not just
> for the global bit but also for CR0.TS although we would need another
> paravirt_op hook for stts.

We don't really need one, because Linux (i386) only cares about the TS
bit of cr0. From lguest (you'd want this per-cpu of course):

static unsigned long current_cr0, current_cr3;
static void lguest_write_cr0(unsigned long val)
{
lazy_hcall(LHCALL_TS, val & 8, 0, 0);
current_cr0 = val;
}

static unsigned long lguest_read_cr0(void)
{
return current_cr0;
}

Cheers,
Rusty.