[GIT PULL] arm64: UEFI updates for 3.19

Ard Biesheuvel ard.biesheuvel at linaro.org
Fri Nov 7 03:06:02 PST 2014


On 7 November 2014 11:48, Matt Fleming <matt.fleming at intel.com> wrote:
> On Fri, 2014-11-07 at 11:29 +0100, Ard Biesheuvel wrote:
>>
>> I have confirmation from Matt and another Intel engineer that adding a
>> (arguably redundant) 'u32' cast solves the issue.
>
> I think we need to get a better handle on this.
>
> It is completely surprising to me that type promotion from u32 to u64
> goes through sign extension.
>
> And by "surprising" I mean, it sounds wrong.
>
> Ard, if you could throw me a unified diff of objdump -dr vmlinux, with
> and without the u32 cast, I'll take a look at figuring out what's
> happening.
>

With my compiler

gcc version 4.8.1 (Ubuntu/Linaro 4.8.1-10ubuntu9)

the objdump of drivers/firmware/dmi_scan.o is identical with and
without the 'u32' cast.

If I look at the original code:

dmi_base = (buf[11] << 24) | (buf[10] << 16) | (buf[9] << 8) | buf[8];

I see a 'cltq' instruction in the dump that disappears once I add the
'u32' cast (which is what we addressed by introducing the
get_unaligned_le32() in the 1st place)

So, I'd happily share more objdumps, but perhaps we should find out
first which compiler Yuanhan has been using?

-- 
Ard.



More information about the linux-arm-kernel mailing list