Re: [tip:x86/asm] x86/asm/msr: Make wrmsrl() a function

From: Andy Lutomirski
Date: Mon Aug 24 2015 - 14:11:54 EST


On Sun, Aug 23, 2015 at 12:23 PM, H. Peter Anvin <hpa@xxxxxxxxx> wrote:
> On 08/23/2015 04:45 AM, tip-bot for Andy Lutomirski wrote:
>> Commit-ID: 47edb65178cb7056c2eea0b6c41a7d8c84547192
>> Gitweb: http://git.kernel.org/tip/47edb65178cb7056c2eea0b6c41a7d8c84547192
>> Author: Andy Lutomirski <luto@xxxxxxxxxx>
>> AuthorDate: Thu, 23 Jul 2015 12:14:40 -0700
>> Committer: Ingo Molnar <mingo@xxxxxxxxxx>
>> CommitDate: Sun, 23 Aug 2015 13:25:38 +0200
>>
>> x86/asm/msr: Make wrmsrl() a function
>>
>> As of cf991de2f614 ("x86/asm/msr: Make wrmsrl_safe() a
>> function"), wrmsrl_safe is a function, but wrmsrl is still a
>> macro. The wrmsrl macro performs invalid shifts if the value
>> argument is 32 bits. This makes it unnecessarily awkward to
>> write code that puts an unsigned long into an MSR.
>>
>
> Looking at this: where do you see an invalid shift? Everywhere I can
> see we do the proper casting. Still not side effect free, though.

I'm having trouble reproducing it right now, but IIRC at one point I
got wrmsrl to warn that a constant turned into zero as a result of a
shift.

--Andy

>
> -hpa
>



--
Andy Lutomirski
AMA Capital Management, LLC
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/