Re: [tip:x86/urgent] x86, cpu, amd: Add workaround for family 16h, erratum 793

H. Peter Anvin
2014-01-15T00:55:10Z

On 01/14/2014 04:45 PM, tip-bot for Borislav Petkov wrote:
> + rdmsrl(MSR_AMD64_LS_CFG, val);
> + if (!(val & BIT(15)))
> + wrmsrl(MSR_AMD64_LS_CFG, val | BIT(15));

Incidentally, I'm wondering if we shouldn't have a
set_in_msr()/clear_in_msr() set of functions which would incorporate the
above construct:

void set_in_msr(u32 msr, u64 mask)
{
u64 old, new;

old = rdmsrl(msr);
new = old | mask;
if (old != new)
wrmsrl(msr, new);
}

... and the obvious equivalent for clear_in_msr().

The perhaps only question is if it should be "set/clear_bit_in_msr()"
rather than having to haul a full 64-bit mask in the common case.

-hpa