Message ID | 20230111180651.14394-1-dwmw2@infradead.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v2,1/4] KVM: x86/xen: Fix lockdep warning on "recursive" gpc locking | expand |
On 11/01/2023 18:06, David Woodhouse wrote: > From: David Woodhouse <dwmw@amazon.co.uk> > > In commit 5ec3289b31 ("KVM: x86/xen: Compatibility fixes for shared runstate > area") we declared it safe to obtain two gfn_to_pfn_cache locks at the same > time: > /* > * The guest's runstate_info is split across two pages and we > * need to hold and validate both GPCs simultaneously. We can > * declare a lock ordering GPC1 > GPC2 because nothing else > * takes them more than one at a time. > */ > > However, we forgot to tell lockdep. Do so, by setting a subclass on the > first lock before taking the second. > > Fixes: 5ec3289b31 ("KVM: x86/xen: Compatibility fixes for shared runstate area") > Suggested-by: Peter Zijlstra <peterz@infradead.org> > Signed-off-by: David Woodhouse <dwmw@amazon.co.uk> > --- > arch/x86/kvm/xen.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > Reviewed-by: Paul Durrant <paul@xen.org>
diff --git a/arch/x86/kvm/xen.c b/arch/x86/kvm/xen.c index 402d9a34552c..07e61cc9881e 100644 --- a/arch/x86/kvm/xen.c +++ b/arch/x86/kvm/xen.c @@ -305,8 +305,10 @@ static void kvm_xen_update_runstate_guest(struct kvm_vcpu *v, bool atomic) * The guest's runstate_info is split across two pages and we * need to hold and validate both GPCs simultaneously. We can * declare a lock ordering GPC1 > GPC2 because nothing else - * takes them more than one at a time. + * takes them more than one at a time. Set a subclass on the + * gpc1 lock to make lockdep shut up about it. */ + lock_set_subclass(&gpc1->lock.dep_map, 1, _THIS_IP_); read_lock(&gpc2->lock); if (!kvm_gpc_check(gpc2, user_len2)) {