> How would you realize the function of saving/restoring the lbr stack on the 
> host?
> 
> Here, we create a perf event on the host (please see guest_lbr_event_create 
> on patch 7), which essentially satisfies all the conditions (e.g. increases 
> cpuc->lbr_users) that are required to have the lbr stack saved/restored on 
> the vCPU switching.
> 
> If we want to stop the host side lbr stack save/restore for the vCPU, we need 
> accordingly to call guest_lbr_event_release (in patch 7) to destroy that perf 
> event (the host doesn't automatically stop saving the lbr stack for the vCPU 
> if that perf event is still there).
> 
> When would you call that release function? (we all know that the lbr doesn't 
> need to be saved when the guest is not using it, but we need to destroy that 
> perf event to achieve "doesn't need to be saved")

Maybe set a timer on DEBUGCTL LBR=0 ? A timer would provide hysteresis, so that 
quick toggles
(like in a PMI handler) wouldn't do anything expensive.

It needs new interfaces for perf anyways because we need to access the LBR 
state from
the last save.

-Andi

Reply via email to