• James Morse's avatar
    x86/resctrl: Add resctrl_arch_get_num_closid() · eb6f3187
    James Morse authored
    To initialise struct resctrl_schema's num_closid, schemata_list_create()
    reaches into the architectures private structure to retrieve num_closid
    from the struct rdt_hw_resource. The 'half the closids' behaviour should
    be part of the filesystem parts of resctrl that are the same on any
    architecture. struct resctrl_schema's num_closid should include any
    correction for CDP.
    
    Having two properties called num_closid is likely to be confusing when
    they have different values.
    
    Add a helper to read the resource's num_closid from the arch code.
    This should return the number of closid that the resource supports,
    regardless of whether CDP is in use. Once the CDP resources are merged,
    schemata_list_create() can apply the correction itself.
    
    Using a type with an obvious size for the arch helper means changing the
    type of num_closid to u32, which matches the type already used by struct
    rdtgroup.
    
    reset_all_ctrls() does not use resctrl_arch_get_num_closid(), even
    though it sets up a structure for modifying the hardware. This function
    will be part of the architecture code, the maximum closid should be the
    maximum value the hardware has, regardless of the way resctrl is using
    it. All the uses of num_closid in core.c are naturally part of the
    architecture specific code.
    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-9-james.morse@arm.com
    eb6f3187
core.c 27.3 KB