• Dan Williams's avatar
    mm: enhance region_is_ram() to region_intersects() · 124fe20d
    Dan Williams authored
    region_is_ram() is used to prevent the establishment of aliased mappings
    to physical "System RAM" with incompatible cache settings.  However, it
    uses "-1" to indicate both "unknown" memory ranges (ranges not described
    by platform firmware) and "mixed" ranges (where the parameters describe
    a range that partially overlaps "System RAM").
    
    Fix this up by explicitly tracking the "unknown" vs "mixed" resource
    cases and returning REGION_INTERSECTS, REGION_MIXED, or REGION_DISJOINT.
    This re-write also adds support for detecting when the requested region
    completely eclipses all of a resource.  Note, the implementation treats
    overlaps between "unknown" and the requested memory type as
    REGION_INTERSECTS.
    
    Finally, other memory types can be passed in by name, for now the only
    usage "System RAM".
    Suggested-by: default avatarLuis R. Rodriguez <mcgrof@suse.com>
    Reviewed-by: default avatarToshi Kani <toshi.kani@hp.com>
    Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
    124fe20d
resource.c 37 KB