• James Morse's avatar
    x86/resctrl: Split struct rdt_resource · 63c8b123
    James Morse authored
    resctrl is the defacto Linux ABI for SoC resource partitioning features.
    
    To support it on another architecture, it needs to be abstracted from
    the features provided by Intel RDT and AMD PQoS, and moved to /fs/.
    struct rdt_resource contains a mix of architecture private details
    and properties of the filesystem interface user-space uses.
    
    Start by splitting struct rdt_resource, into an architecture private
    'hw' struct, which contains the common resctrl structure that would be
    used by any architecture. The foreach helpers are most commonly used by
    the filesystem code, and should return the common resctrl structure.
    for_each_rdt_resource() is changed to walk the common structure in its
    parent arch private structure.
    
    Move as much of the structure as possible into the common structure
    in the core code's header file. The x86 hardware accessors remain
    part of the architecture private code, as do num_closid, mon_scale
    and mbm_width.
    
    mon_scale and mbm_width are used to detect overflow of the hardware
    counters, and convert them from their native size to bytes. Any
    cross-architecture abstraction should be in terms of bytes, making
    these properties private.
    
    The hardware's num_closid is kept in the private structure to force the
    filesystem code to use a helper to access it. MPAM would return a single
    value for the system, regardless of the resource. Using the helper
    prevents this field from being confused with the version of num_closid
    that is being exposed to user-space (added in a later patch).
    
    After this split, filesystem code touching a 'hw' struct indicates
    where an abstraction is needed.
    
    Splitting this structure only moves types around, and should not lead
    to any change in behaviour.
    Signed-off-by: default avatarJames Morse <james.morse@arm.com>
    Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
    Reviewed-by: default avatarJamie Iles <jamie@nuviainc.com>
    Reviewed-by: default avatarReinette Chatre <reinette.chatre@intel.com>
    Tested-by: default avatarBabu Moger <babu.moger@amd.com>
    Link: https://lkml.kernel.org/r/20210728170637.25610-2-james.morse@arm.com
    63c8b123
core.c 26.6 KB