Received: by 2002:a25:868d:0:0:0:0:0 with SMTP id z13csp36015ybk; Tue, 19 May 2020 14:50:40 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxdhiEa+MPV2Yr+zP307mBjdDqlpeSdKXarX8ONK3sEt1NtGp10s1PEs5AxZq5pngVBK2+Z X-Received: by 2002:a17:906:4753:: with SMTP id j19mr1230056ejs.83.1589925040306; Tue, 19 May 2020 14:50:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1589925040; cv=none; d=google.com; s=arc-20160816; b=llNzHdokVFh7/1xMfrjdyS+18t/5oW+5LqZKlMdQ4rh49tUHxfuruJ0hQEhKuzVEXf Vykq72kII4uFsXi229LsqzuW/8Sy76EvdADKn786/W0Wkvv/JLk6q68CGadanuewW32J HqDiNB2w4zvSORdlJ3wKZx3kQxDSuoTCa1gzmIAoCKxg6T/7Uw8p5/qYQIvtOwh9RJX3 FLB3y9gGRsoFcla55oGp5KDq5OeR4K4hw2aVqSgHzNRnjUdHLBNX22hiT6oCcqZ2xCvR mwHxoE6eHDPr/TEYXS22wtmOv0e014BwKtWmKCdpx6WHv1hFB+d+HuKfgzvBQXycTmM8 1Yxw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=kgpopomRXbaH3IstI33258Eh1S+ATvSha0IdxIUvTcM=; b=pW6MNlBeB9qekBQP+h6UC6vQcuRpHYUtJODCUXzm5S/DIsfYdcMPQ8AJuC6Q9sHEAT 5iBrOK9yROc3bbuJG79gqeLZFkZ44JHMJ0Ceem0y35XtjnPb/gbsuFm/pJI+WCJ/nqBz ba6TwQbNq2DVwmzpIGxUZmdIUerRVWyzzY+w1/kqzNXSANMpVAuwDNmDbQAO8wH89G+5 h8J0gZIeSe0NvWTU3nalPBtXcnXmNEVJzUsmTq5sdo0p7x+gKJJ3JTLoKj9G61QbTwHj ezmi5jGbB/7YvTLuz0sx2cKyI4qGIbdjuux+oVddHgF9MmTH1s++JcqaJioDlA2w3u9f PHTA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id b4si608203eju.701.2020.05.19.14.50.14; Tue, 19 May 2020 14:50:40 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728602AbgESVsF (ORCPT + 99 others); Tue, 19 May 2020 17:48:05 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41062 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728593AbgESVsB (ORCPT ); Tue, 19 May 2020 17:48:01 -0400 Received: from Galois.linutronix.de (Galois.linutronix.de [IPv6:2a0a:51c0:0:12e:550::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 546CAC08C5C2; Tue, 19 May 2020 14:48:01 -0700 (PDT) Received: from [5.158.153.53] (helo=debian-buster-darwi.lab.linutronix.de.) by Galois.linutronix.de with esmtpsa (TLS1.2:DHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.80) (envelope-from ) id 1jbA5W-0002yb-3S; Tue, 19 May 2020 23:47:50 +0200 From: "Ahmed S. Darwish" To: Peter Zijlstra , Ingo Molnar , Will Deacon Cc: Thomas Gleixner , "Paul E. McKenney" , "Sebastian A. Siewior" , Steven Rostedt , LKML , "Ahmed S. Darwish" , Paolo Bonzini , kvm@vger.kernel.org Subject: [PATCH v1 24/25] kvm/eventfd: Use sequence counter with associated spinlock Date: Tue, 19 May 2020 23:45:46 +0200 Message-Id: <20200519214547.352050-25-a.darwish@linutronix.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200519214547.352050-1-a.darwish@linutronix.de> References: <20200519214547.352050-1-a.darwish@linutronix.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Linutronix-Spam-Score: -1.0 X-Linutronix-Spam-Level: - X-Linutronix-Spam-Status: No , -1.0 points, 5.0 required, ALL_TRUSTED=-1,SHORTCIRCUIT=-0.0001 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org A sequence counter write side critical section must be protected by some form of locking to serialize writers. A plain seqcount_t does not contain the information of which lock must be held when entering a write side critical section. Use the new seqcount_spinlock_t data type, which allows to associate a spinlock with the sequence counter. This enables lockdep to verify that the spinlock used for writer serialization is held when the write side critical section is entered. If lockdep is disabled this lock association is compiled out and has neither storage size nor runtime overhead. Signed-off-by: Ahmed S. Darwish --- include/linux/kvm_irqfd.h | 2 +- virt/kvm/eventfd.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/include/linux/kvm_irqfd.h b/include/linux/kvm_irqfd.h index dc1da020305b..dac047abdba7 100644 --- a/include/linux/kvm_irqfd.h +++ b/include/linux/kvm_irqfd.h @@ -42,7 +42,7 @@ struct kvm_kernel_irqfd { wait_queue_entry_t wait; /* Update side is protected by irqfds.lock */ struct kvm_kernel_irq_routing_entry irq_entry; - seqcount_t irq_entry_sc; + seqcount_spinlock_t irq_entry_sc; /* Used for level IRQ fast-path */ int gsi; struct work_struct inject; diff --git a/virt/kvm/eventfd.c b/virt/kvm/eventfd.c index 67b6fc153e9c..8694a2920ea9 100644 --- a/virt/kvm/eventfd.c +++ b/virt/kvm/eventfd.c @@ -303,7 +303,7 @@ kvm_irqfd_assign(struct kvm *kvm, struct kvm_irqfd *args) INIT_LIST_HEAD(&irqfd->list); INIT_WORK(&irqfd->inject, irqfd_inject); INIT_WORK(&irqfd->shutdown, irqfd_shutdown); - seqcount_init(&irqfd->irq_entry_sc); + seqcount_spinlock_init(&irqfd->irq_entry_sc, &kvm->irqfds.lock); f = fdget(args->fd); if (!f.file) { -- 2.20.1