Software Tuning, Performance Optimization & Platform Monitoring
Discussion regarding monitoring and software tuning methodologies, Performance Monitoring Unit (PMU) of Intel microprocessors, and platform updating.

Reset MSR_UNCORE_RATIO_LIMIT after modification

LotemBenAtar
Beginner
1,055 Views

Hi all,

MSR_UNCORE_RATIO_LIMIT 0x620 can be used to adjust the minimum and maximum frequency range for the uncore.

Is there a way to restore the register value that was present after boot after writing to the maximum bits of this range?

Thanks for your assistance. It's highly appreciated!

0 Kudos
3 Replies
McCalpinJohn
Honored Contributor III
999 Views

I don't think there is any way to recover the values that were in the register at boot time.   I always try to remember to read MSR 0x620 before writing it.

The good news is that if you program values that are too low or too high they are silently ignored and the processor will obey the original hardware limits.  You can verify this by monitoring the uncore frequency using MSR 0x621 or by counting Uncore Clocks.

0 Kudos
LotemBenAtar
Beginner
953 Views

Thank you for your response.

 

Based on your explanation, it seems I have two options:

1. I can read MSR 0x620 before writing to it, and it will require saving the value to a file for recovery in case of a crash.

2. Alternatively, to simplify things, after the register was modified, if I would like to restore the previous value, I can simply write a high value, such as 5.0 GHz (0x32), to the relevant bits. It will function the same as the initially written register value at boot time since the higher value will be quietly ignored anyway.

 

Is my understanding accurate, or are there other options to consider?

0 Kudos
McCalpinJohn
Honored Contributor III
796 Views

MSR 0x620 includes both minimum and maximum ratios, so I would recommend being careful to consider the bounds for each independently.   I have not tested this on many systems -- all I can recall with confidence is that if I input a maximum ratio value that is higher than the default value, the system obeys the default value anyway.  (This testing was done on SKX and CLX processors -- behavior may differ for other processor generations.)

Note that the BIOS and/or other management subsystems may be able to control this register as well, so the value you get at boot time may not be the only value that the system can set.

The min and max ratio fields are defined as 7 bits each (not 8), so I would probably use something like 0x017f to set the min ratio to 1 and the max ratio to 0x7f just to make it clear that the values had been modified.  No guarantees that this won't cause problems, but I have not run across any systems that behave unexpectedly with out-of-range requests in these two arguments.

0 Kudos
Reply