From nobody Tue Apr 16 23:56:29 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=1675579738; cv=none; d=zohomail.com; s=zohoarc; b=Qt7Hg1NVfwG/VnDIXNHT/vLvIIKLent8tgZEs4AtAK+BuBdHJpeGZGs9qWWM0w2xqC/MmX7R6YjP8+sMPjhZjbc4Km/j5MKKH6LkzNokLpWUQapD+kf8/H2S17SZedQ3EUSPAW9t0iHaeY1wLPpdX7pk5HI5/gM5ZsBIWJZq0Dk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1675579738; 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=BDMRFHW+vkF0WhaOJQJar3rLKBvR8V5Z6mEeiPkOZlk=; b=QPppp9VRHWfOTGW70jsvIg9PQRLLb68hmUunFiG1pa7vc+pSvZq9dCqDM+mFjVvH7AtTgtHB/7vilPZflodVHhtKjgKfHE9LU5briSxoMcotevEZCmXVvl6SVV7jFpE9IF0DoqlC+baErgkbtvgOTJNc2ahrR/0yZQQ9LT9HYjo= 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 1675579738698458.64148310864346; Sat, 4 Feb 2023 22:48:58 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pOYoq-00020M-3i; Sun, 05 Feb 2023 01:48:08 -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 1pOYon-0001zx-M5 for qemu-devel@nongnu.org; Sun, 05 Feb 2023 01:48:06 -0500 Received: from out203-205-221-205.mail.qq.com ([203.205.221.205]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pOYoi-0000Xf-I0 for qemu-devel@nongnu.org; Sun, 05 Feb 2023 01:48:05 -0500 Received: from localhost.localdomain ([117.28.251.142]) by newxmesmtplogicsvrsza12-0.qq.com (NewEsmtp) with SMTP id BF004200; Sun, 05 Feb 2023 14:47:48 +0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qq.com; s=s201512; t=1675579669; bh=BDMRFHW+vkF0WhaOJQJar3rLKBvR8V5Z6mEeiPkOZlk=; h=From:To:Cc:Subject:Date; b=TIr8DWHyIj0FR2vARsRcccXdkMtN2VY0qeUE+woPN/c17RinbHMYXfn7e6Jx3C4kE qOhcj9voafCMCTZtdwcW6HhxQd2X4jHreoJPDIOLaorSQDIA2HHlHpYy3qM8Rrkfvf i25XbL9XctsyWCSSPnpTMHDLxRMqRCGa7+rjuLWY= X-QQ-mid: xmsmtpt1675579668t6kfr7nx2 Message-ID: X-QQ-XMAILINFO: Mv8oRO7AAqEFkcOWhV84LthxxpJIEGMEyab99lra0YhMEwc59hy3BM3rHC+gup HeF9nPM4WC+XUzZophAxl7r+QAML+IAe1etQF7ORJSu6kvzIxOxPXwIk/Pj/IBR5zoeXBfdqYNat 12L3aAK1Po9eqPX3oc//9BYnDPnja0oVVG2iYRhecE0mFGnr3A/p+aG/WiQA4Hxyb4lWN1/g1ZUJ mxDbLfCrYQJK7O3cQYN/V7qcchGSXqmcPEfYUHzvPuzyWxdQIo5cHo82HTzomCxXy/cUx6kSmFEH 9dsjSc47hGCEPvHNcfaJai1HlpzhAudQz2qzB7kO7ZskcR4Tvgg+z4mBUJbhxzbhK14NnLTjSTCQ 93hAt0zdmXjcW/AUsirSDsRqONd6PxdJKv28Xv2PkAeSogNOyDN3imqf+PBV69ckiG3JPjSaUUj1 ZuNygoOAqg5JOFQL0tTFLW21A0EZiZeCU+HYUQnxXK5gW0jQL9c/hQg7ngX3MHwKcuYhGEV7+pwo DY59cqpNc1zxRkluPUhsrsYIZ5zhxd68uEqa6f5Go41Nx8oxGU15l8orBHelzic4/wKB3g5Q1cPT sAZFJjef3JX9qfGAwh9hUQRK6vmUJD9rn6qozxAElpogS9JdaI2GNRXbbgrb4RrFNHwRjm0GPNfv QaX1niQGn/J0kImheHjXuJ0z1fDJ+flIEp3imD5JsOV9FZwQlQt5h+bCEi7N/2N6LDdp448xXUIQ OQixl9azrRtQM0ctYbcxVDOJythY1ySSONpEQ7IW7GvkVYPAs7MsjjgassnLgQEnqjSI6F/1LuxV aqJsqtU5b3spKhfveLSf2qoiunjJ1N5XOCurZPvcSOfnAg0aHaWgB75TtJu7BQi9VnluJL7MJg2j EjrCVDaFlJyulTT8cAOtkxXcWg13svqvI89gMDZlnzHH5h0JECPrkmBIGct28VDu0M3IyzN9q4Q/ AlLZ1vyko75JS8h2GywMI6U9SNCqOj/ph4v5I/GKVVljxYg71QXw== From: Weinan Liu To: qemu-devel@nongnu.org Cc: peterx@redhat.com, dgilbert@redhat.com, Weinan Liu Subject: [PATCH v2] KVM: dirty ring: check if vcpu is created before dirty_ring_reap_one Date: Sun, 5 Feb 2023 06:45:45 +0000 X-OQ-MSGID: <20230205064544.1047103-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=203.205.221.205; envelope-from=liu-weinan@qq.com; helo=out203-205-221-205.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-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: 1675579739418100001 Content-Type: text/plain; charset="utf-8" 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 | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c index 7e6a6076b1..0070ad72b8 100644 --- a/accel/kvm/kvm-all.c +++ b/accel/kvm/kvm-all.c @@ -1416,6 +1416,11 @@ static void *kvm_dirty_ring_reaper_thread(void *data) */ sleep(1); =20 + /* ensure kvm_init_vcpu is finished, so cpu->kvm_dirty_gfns is ok = */ + if (!phase_check(PHASE_MACHINE_READY)) { + continue; + } + /* keep sleeping so that dirtylimit not be interfered by reaper */ if (dirtylimit_in_service()) { continue; --=20 2.25.1