From nobody Sat May 11 02:53:21 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=qq.com ARC-Seal: i=1; a=rsa-sha256; t=1675527875; cv=none; d=zohomail.com; s=zohoarc; b=GQdov4pjwWQxUJotKG8hQzMr1EwH3C7m6T3SqVH0Bp6kQ7RMsMdvNaHQy7CW3I9YxMJ8AZ/yNF2mgTB6HzMSt9atj07V+PMa/XRSrjvGYa9a9c1s1uvtiNX7rZgxu2OHBfP6pTqPqrzTKRIj9xASFDoJsMcCfzHJZuNmtneFLLI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1675527875; h=Content-Transfer-Encoding:Cc:Date:From:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:To; bh=x9D1Snw8RWbqBQC43Urhu3itEat53Yrbhhg7aXaCoKg=; b=KdKayLkS3rRO15yuDNjcsbPQwy/nvKrmPll1lSLEghzH2bqR8aTWD79OQUNOlyfeAkIWDHc+Es+beVdKJPyEJf/Ifo6kXa02qlHKfzo9MPQjr/l2u3kroX0XywPo6BwknILzEGGp3RjsLE1KMWSiuGPpBdLZJbcGTWvoRC38FAA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1675527875377668.5918225120292; Sat, 4 Feb 2023 08:24:35 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pOLKQ-0003BJ-GE; Sat, 04 Feb 2023 11:23:50 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pOL6h-0008EE-8g for qemu-devel@nongnu.org; Sat, 04 Feb 2023 11:09:39 -0500 Received: from out162-62-57-64.mail.qq.com ([162.62.57.64]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pOL6c-00072j-SJ for qemu-devel@nongnu.org; Sat, 04 Feb 2023 11:09:38 -0500 Received: from localhost.localdomain ([117.28.251.142]) by newxmesmtplogicsvrszc2-0.qq.com (NewEsmtp) with SMTP id 20A0E2FD; Sun, 05 Feb 2023 00:08:10 +0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qq.com; s=s201512; t=1675526967; bh=x9D1Snw8RWbqBQC43Urhu3itEat53Yrbhhg7aXaCoKg=; h=From:To:Cc:Subject:Date; b=zorFfEVVvhplq4VUVU/EzTG58YKZiS0v+B+//PKYwOuG2aT+pZr0lECT2yOjePkeh qxhjE6ty94gIY6Aend66e4RgQzulw2JWSBp4wio+ltaJAsF3Z3tLX8R6j+QDHXEegL s6oHEthrgMxh/2gmb1uutASUEi28jWoLaSS4qQE0= X-QQ-mid: xmsmtpt1675526890toup8izxw Message-ID: X-QQ-XMAILINFO: MhH68nX24TAM9xiSDU+5xWs28lnoKEFUj3mqCoyFGVfJfn6/9Ai7bwVL5tQbz1 9jNnTsPrBE6EDefoLNcHWY5xlKpaekZNphquRLf6560V5JaGAv+euLF7P+JmdQpHoz6GwOJGJJPh a5hhsDhNqchYOF5jkrK2V7ZjdRuKmQQrX6O7a0MuIiww4oXiPOZe/s+rCjR/imIlSACw7YMNNcjs cj7t7IffLO+hCqZtfEc2wVKR2grSGOIIOsFNPl/Z+THBVpp8YG0EIqutGmJg+vTtMaaDBXEX+05a 70fqv0jZYiFvFG3JXAS9D2kURyiDY9Rf3Sf0DiDRVTBdDXevKV98C76BT7+ubzaK2nTg9cY6yts7 q/mgoBryADnDJIJ943wMXlehf+KYOXLw/M5X94+rfwG6FxQOerMa+GJZjBDLljdqmm36o5V/n2EP 6eSO2Qz5dOnwgqY6Q6ubW4hkYspOf662jgrvfhil6w99ldTl/DaUyTlFkEUJM9XpZgdtT6X8rFFG OzTNWCIsegmnmsI5yCy3KWJetztpihG8VYbjcWt8eL/7ylDPvGCtWoeLKTH311mbFZYm0a7AdSyi io6ldU/T34g83EV2dyKTnh2w7Gh1fXRxpHWlgWt2YsZfNigsSvNl5z9DWMYnKf6vwaQxAcd4OyyN b/EX37pTAfe8g2HK/oeHWkiOvEFNwbK7rLGvJpmY4k5cXlSBxhmo5gaIrl8+Cfqy5ECaAs1YLqIO IPlGa4CNV+tkwj/w0ccofZjT7cDASW44dYsXSC+A2SLU6SsadFzqVwNji6MmE5OTYpoBqtiS97Or lKJQ+NKrmZExx/prnD55b6RCNSxoTFkI/MC4jdpDSYc3fkhSgRCtdP7J8jyion5tRsSousQFOiLF L3e7tYNqM7JRiuOA2X6445gfTk9VrFGHs0OTiqf9YAU+vdQ+WQLdnnnDbPEsfD+oRBSNBAqye/ps qtAlqOdIM= From: Weinan Liu To: qemu-devel@nongnu.org Cc: peterx@redhat.com, dgilbert@redhat.com, Weinan Liu Subject: [PATCH] KVM: dirty ring: check if vcpu is created before dirty_ring_reap_one Date: Sat, 4 Feb 2023 16:08:08 +0000 X-OQ-MSGID: <20230204160808.753494-1-liu-weinan@qq.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=162.62.57.64; envelope-from=liu-weinan@qq.com; helo=out162-62-57-64.mail.qq.com X-Spam_score_int: 8 X-Spam_score: 0.8 X-Spam_bar: / X-Spam_report: (0.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HELO_DYNAMIC_IPADDR=1.951, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, RDNS_DYNAMIC=0.982, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Sat, 04 Feb 2023 11:23:47 -0500 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @qq.com) X-ZM-MESSAGEID: 1675527877244100003 Content-Type: text/plain; charset="utf-8" From: Weinan Liu Failed to assert '(dirty_gfns && ring_size)' in kvm_dirty_ring_reap_one if the vcpu has not been finished to create yet. This bug occasionally occurs when I open 200+ qemu instances on my 16G 6-cores x86 machine. And it must be triggered if inserting a 'sleep(10)' into kvm_vcpu_thread_fn as below-- static void *kvm_vcpu_thread_fn(void *arg) { CPUState *cpu =3D arg; int r; rcu_register_thread(); + sleep(10); qemu_mutex_lock_iothread(); qemu_thread_get_self(cpu->thread); cpu->thread_id =3D qemu_get_thread_id(); cpu->can_do_io =3D 1; where dirty ring reaper will wakeup but then a vcpu has not been finished to create. Signed-off-by: Weinan Liu --- accel/kvm/kvm-all.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c index 7e6a6076b1..840da7630e 100644 --- a/accel/kvm/kvm-all.c +++ b/accel/kvm/kvm-all.c @@ -719,6 +719,15 @@ static uint64_t kvm_dirty_ring_reap_locked(KVMState *s= , CPUState* cpu) total =3D kvm_dirty_ring_reap_one(s, cpu); } else { CPU_FOREACH(cpu) { + /* + * Must ensure kvm_init_vcpu is finished, so cpu->kvm_dirty_gf= ns is + * available. + */ + while (cpu->created =3D=3D false) { + qemu_mutex_unlock_iothread(); + qemu_mutex_lock_iothread(); + } + total +=3D kvm_dirty_ring_reap_one(s, cpu); } } --=20 2.25.1