• Y
    x86: mtrr: Fix high_width computation when phys-addr is >= 44bit · 917a0153
    Yinghai Lu 提交于
    found one system where cpu address line is 44bits, mtrr printout
    is not right:
    
     [    0.000000] MTRR variable ranges enabled:
     [    0.000000]   0 base 0   00000000 mask FF0 00000000 write-back
     [    0.000000]   1 base 10  00000000 mask FFF 80000000 write-back
     [    0.000000]   2 base 0   80000000 mask FFF 80000000 uncachable
     [    0.000000]   3 base 0   7F800000 mask FFF FF800000 uncachable
    
    Li Zefan and Frederic pointed out the high_width could be -4 some how.
    
    It turns out when phys_addr is 44bit, size_or_mask will be
    ffffffff,00000000 so ffs(size_or_mask) will be 0.
    
    Try to check low 32 bit, to get correct high_width.
    Signed-off-by: NYinghai Lu <yinghai@kerne.org>
    Also-analyzed-by: NFrederic Weisbecker <fweisbec@gmail.com>
    Also-analyzed-by: NLi Zefan <lizf@cn.fujitsu.com>
    Cc: Jeremy Fitzhardinge <jeremy@goop.org>
    Cc: Zhaolei <zhaolei@cn.fujitsu.com>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: Vegard Nossum <vegard.nossum@gmail.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    LKML-Reference: <4A026540.8060504@kernel.org>
    Signed-off-by: NIngo Molnar <mingo@elte.hu>
    917a0153
generic.c 19.2 KB