2.9 GHz is "base clock", which really is quite meaningless value today, a relic of bygone era of Pentium 4 :- ).
Today it neither means idle (because CPUs can downclock to 0.5 GHz), nor guaranteed clocks (mount terrible cooler and it will run even lower than this due to throttling). Same useless value as "TDP".
You can't find out on vendor's sites what the actual boost clocks are, with exception of "up to" promise for single-core. Intel for example used to have on (well hidden) "ratios" like 8/6/4/4/4/4/2/2/2/1/etc... which would denote what +100MHz(x) would boost for single core, two cores, 3 cores, 8 cores... but even that ignored AVX offsets.
AMD went one step further and just integrated fully varied boost clocks based on multiple metrics that measure current, temperature, etc..
Intel recently copied this mechanism and advertises it as "velocity" clocks. Both approaches are the same, given opportunity, the CPUs try to make the best of given conditions available to them (power & cooling).
The only difference between PBO and non-PBO is that you can set higher power limits than stock. Stock being 280W, 300A. But the CPU behaves identically. It tries to reach highest clock with stable voltage under current load primarily, and evaluates the temperatures secondarily.
Based on demand, I've seen the all-core turbo being between 3.4 to 3.7 GHz. Apparently it doesn't consider Corona to be as demanding so it can afford to boost higher.
This process favours highly binned CPUs, which are Ryzen 3950X and Threadripper 3990X. These two feature all their dies binned. The rest having various ratios (like 3900X having one binned die, and two none).
The whole affair is super effective, and makes static voltage overclock a relic of past as well. You already get the best out of CPU by simply placing it into motherboard. No tweaking needed (undervolters disagree, I disagree with undervolters).