mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-06 01:49:46 +00:00
mshv: Handle NEED_RESCHED_LAZY before transferring to guest
[ Upstream commit0ebac01a00] Check for NEED_RESCHED_LAZY, not just NEED_RESCHED, prior to transferring control to a guest. Failure to check for lazy resched can unnecessarily delay rescheduling until the next tick when using a lazy preemption model. Note, ideally both the checking and processing of TIF bits would be handled in common code, to avoid having to keep three separate paths synchronized, but defer such cleanups to the future to keep the fix as standalone as possible. Cc: Nuno Das Neves <nunodasneves@linux.microsoft.com> Cc: Mukesh R <mrathor@linux.microsoft.com> Fixes:621191d709("Drivers: hv: Introduce mshv_root module to expose /dev/mshv to VMMs") Signed-off-by: Sean Christopherson <seanjc@google.com> Tested-by: Nuno Das Neves <nunodasneves@linux.microsoft.com> Reviewed-by: Nuno Das Neves <nunodasneves@linux.microsoft.com> Signed-off-by: Wei Liu <wei.liu@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
6fa2a8073d
commit
e4550cdec9
@@ -151,7 +151,7 @@ int mshv_do_pre_guest_mode_work(ulong th_flags)
|
||||
if (th_flags & (_TIF_SIGPENDING | _TIF_NOTIFY_SIGNAL))
|
||||
return -EINTR;
|
||||
|
||||
if (th_flags & _TIF_NEED_RESCHED)
|
||||
if (th_flags & (_TIF_NEED_RESCHED | _TIF_NEED_RESCHED_LAZY))
|
||||
schedule();
|
||||
|
||||
if (th_flags & _TIF_NOTIFY_RESUME)
|
||||
|
||||
@@ -490,7 +490,8 @@ mshv_vp_wait_for_hv_kick(struct mshv_vp *vp)
|
||||
static int mshv_pre_guest_mode_work(struct mshv_vp *vp)
|
||||
{
|
||||
const ulong work_flags = _TIF_NOTIFY_SIGNAL | _TIF_SIGPENDING |
|
||||
_TIF_NEED_RESCHED | _TIF_NOTIFY_RESUME;
|
||||
_TIF_NEED_RESCHED | _TIF_NEED_RESCHED_LAZY |
|
||||
_TIF_NOTIFY_RESUME;
|
||||
ulong th_flags;
|
||||
|
||||
th_flags = read_thread_flags();
|
||||
|
||||
Reference in New Issue
Block a user