• Bjorn Helgaas's avatar
    [IA64] fail mmaps that span areas with incompatible attributes · 6d40fc51
    Bjorn Helgaas authored
    Example memory map (from HP sx1000 with VGA enabled):
        0x00000 - 0x9FFFF supports only WB (cacheable) access
        0xA0000 - 0xBFFFF supports only UC (uncacheable) access
        0xC0000 - 0xFFFFF supports only WB (cacheable) access
    
    Some versions of X map the entire 0x00000-0xFFFFF area at once.  With the
    example above, this mmap must fail because there's no memory attribute that's
    safe for the entire area.
    
    Prior to this patch, we performed the mmap with a UC mapping.  When X
    accessed the WB memory at 0xC0000, it caused an MCA.  The crash can happen
    when mapping 0xC0000 from either /dev/mem or a /sys/.../legacy_mem file.
    Signed-off-by: default avatarBjorn Helgaas <bjorn.helgaas@hp.com>
    Signed-off-by: default avatarTony Luck <tony.luck@intel.com>
    6d40fc51
efi.c 34.2 KB