Re: [PATCH]: Fake MSR_K7 performance counters

Avi Kivity
2008-05-06T11:28:29Z

> Attached is a patch that fixes a guest crash when booting older Linux kernels.
> The problem stems from the fact that we are currently emulating
> MSR_K7_EVNTSEL[0-3], but not emulating MSR_K7_PERFCTR[0-3]. Because of this,
> setup_k7_watchdog() in the Linux kernel receives a GPF when it attempts to write
> into MSR_K7_PERFCTR, which causes an OOPs.
>
> The patch fixes it by just "fake" emulating the appropriate MSRs, throwing away
> the data in the process. This causes the NMI watchdog to not actually work, but
> it's not such a big deal in a virtualized environment.
>
> When we get a write to one of these counters, we printk_ratelimit() a warning.
> I decided to print it out for all writes, even if the data is 0; it doesn't seem
> to make sense to me to special case when data == 0.
>
> Tested by myself on a RHEL-4 guest, and Joerg Roedel on a Windows XP 64-bit guest.
>

Applied, thanks.

--
Do not meddle in the internals of kernels, for they are subtle and quick to panic.