mirror of
https://github.com/torvalds/linux.git
synced 2024-11-22 12:11:40 +00:00
powercap: intel_rapl_tpmi: Fix System Domain probing
Only domain root packages can enumerate System (Psys) domain.
Whether a package is domain root or not is described in the Bit 0 of the
Domain Info register.
Add support for Domain Info register and fix the System domain probing
accordingly.
Fixes: 9eef7f9da9
("powercap: intel_rapl: Introduce RAPL TPMI interface driver")
Signed-off-by: Zhang Rui <rui.zhang@intel.com>
Cc: 6.5+ <stable@vger.kernel.org> # 6.5+
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
parent
faa9130ce7
commit
903eb9fb85
@ -131,6 +131,12 @@ static void trp_release(struct tpmi_rapl_package *trp)
|
||||
mutex_unlock(&tpmi_rapl_lock);
|
||||
}
|
||||
|
||||
/*
|
||||
* Bit 0 of TPMI_RAPL_REG_DOMAIN_INFO indicates if the current package is a domain
|
||||
* root or not. Only domain root packages can enumerate System (Psys) Domain.
|
||||
*/
|
||||
#define TPMI_RAPL_DOMAIN_ROOT BIT(0)
|
||||
|
||||
static int parse_one_domain(struct tpmi_rapl_package *trp, u32 offset)
|
||||
{
|
||||
u8 tpmi_domain_version;
|
||||
@ -140,6 +146,7 @@ static int parse_one_domain(struct tpmi_rapl_package *trp, u32 offset)
|
||||
enum rapl_domain_reg_id reg_id;
|
||||
int tpmi_domain_size, tpmi_domain_flags;
|
||||
u64 tpmi_domain_header = readq(trp->base + offset);
|
||||
u64 tpmi_domain_info;
|
||||
|
||||
/* Domain Parent bits are ignored for now */
|
||||
tpmi_domain_version = tpmi_domain_header & 0xff;
|
||||
@ -170,6 +177,13 @@ static int parse_one_domain(struct tpmi_rapl_package *trp, u32 offset)
|
||||
domain_type = RAPL_DOMAIN_PACKAGE;
|
||||
break;
|
||||
case TPMI_RAPL_DOMAIN_SYSTEM:
|
||||
if (!(tpmi_domain_flags & BIT(TPMI_RAPL_REG_DOMAIN_INFO))) {
|
||||
pr_warn(FW_BUG "System domain must support Domain Info register\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
tpmi_domain_info = readq(trp->base + offset + TPMI_RAPL_REG_DOMAIN_INFO);
|
||||
if (!(tpmi_domain_info & TPMI_RAPL_DOMAIN_ROOT))
|
||||
return 0;
|
||||
domain_type = RAPL_DOMAIN_PLATFORM;
|
||||
break;
|
||||
case TPMI_RAPL_DOMAIN_MEMORY:
|
||||
|
Loading…
Reference in New Issue
Block a user