• Zachary Amsden's avatar
    [PATCH] x86: Always relax segments · 3012d2d2
    Zachary Amsden authored
    APM BIOSes have many bugs regarding proper representation of the appropriate
    segment limits for calling the BIOS.  By default, APM_RELAX_SEGMENTS is always
    turned on to support running the APM BIOS on these buggy machines.  Keeping
    64k limits poses very little danger to the kernel, because the pages where the
    APM BIOS is located will always be in low physical memory BIOS areas, which
    should already be marked reserved, and only buggy BIOSes would possibly
    overstep the segment bounds with writes to data anyway.
    
    Since forcing stricter limits breaks many machines and is not default
    behavior, it seems reasonable to deprecate the older code which may cause APM
    BIOS to fault.
    
    If you really have a badly enough broken APM BIOS that you have to turn off
    APM_RELAX_SEGMENTS, seems like the best recourse here would be to disable the
    APM BIOS and / or not compile it into your kernel to begin with, and / or add
    your system to the known bad list.
    
    The reason I want to deprecate this code is there is underlying brokenness
    with the set_limit macros, and getting rid of many of the call sites rather
    than rewriting them seems to be the simplest and most correct course of
    action.
    Signed-off-by: default avatarZachary Amsden <zach@vmware.com>
    Acked-by: default avatar"Seth, Rohit" <rohit.seth@intel.com>
    Cc: Stephen Rothwell <sfr@canb.auug.org.au>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    3012d2d2
apm.c 69.3 KB