• Vikas Shivappa's avatar
    x86/intel_rdt/cqm: Add RMID (Resource monitoring ID) management · edf6fa1c
    Vikas Shivappa authored
    Hardware uses RMID(Resource monitoring ID) to keep track of each of the
    RDT events associated with tasks. The number of RMIDs is dependent on
    the SKU and is enumerated via CPUID. We add support to manage the RMIDs
    which include managing the RMID allocation and reading LLC occupancy
    for an RMID.
    
    RMID allocation is managed by keeping a free list which is initialized
    to all available RMIDs except for RMID 0 which is always reserved for
    root group. RMIDs goto a limbo list once they are
    freed since the RMIDs are still tagged to cache lines of the tasks which
    were using them - thereby still having some occupancy. They continue to
    be in limbo list until the occupancy < threshold_occupancy. The
    threshold_occupancy is a user configurable value.
    OS uses IA32_QM_CTR MSR to read the occupancy associated with an RMID
    after programming the IA32_EVENTSEL MSR with the RMID.
    
    [Tony: Improved limbo search]
    Signed-off-by: default avatarVikas Shivappa <vikas.shivappa@linux.intel.com>
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Cc: ravi.v.shankar@intel.com
    Cc: tony.luck@intel.com
    Cc: fenghua.yu@intel.com
    Cc: peterz@infradead.org
    Cc: eranian@google.com
    Cc: vikas.shivappa@intel.com
    Cc: ak@linux.intel.com
    Cc: davidcc@google.com
    Cc: reinette.chatre@intel.com
    Link: http://lkml.kernel.org/r/1501017287-28083-10-git-send-email-vikas.shivappa@linux.intel.com
    edf6fa1c
intel_rdt.c 15.8 KB