Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions cmd/metrics/metrics.go
Original file line number Diff line number Diff line change
Expand Up @@ -806,6 +806,27 @@ func prepareTarget(targetContext *targetContext, targetTempRoot string, localTem
channelError <- targetError{target: myTarget, err: err}
return
}
// make sure PMUs are not in use on target
if family, err := myTarget.GetFamily(); err == nil && family == "6" {
output, err := script.RunScript(myTarget, script.GetScriptByName(script.PMUBusyScriptName), localTempDir)
if err != nil {
err = fmt.Errorf("failed to check if PMUs are in use: %w", err)
_ = statusUpdate(myTarget.GetName(), fmt.Sprintf("Error: %v", err))
targetContext.err = err
channelError <- targetError{target: myTarget, err: err}
return
}
for _, line := range strings.Split(output.Stdout, "\n") {
// if one of the MSR registers is active (ignore cpu_cycles), then the PMU is in use
if strings.Contains(line, "Active") && !strings.Contains(line, "0x30a") {
err = fmt.Errorf("PMU in use on target: %s", line)
_ = statusUpdate(myTarget.GetName(), fmt.Sprintf("Error: %v", err))
targetContext.err = err
channelError <- targetError{target: myTarget, err: err}
return
}
}
}
// check if NMI watchdog is enabled and disable it if necessary
if !flagNoRoot {
var nmiWatchdogEnabled bool
Expand Down
Loading