From patchwork Tue Jan 28 14:21:44 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 13952596 Received: from mail-wm1-f48.google.com (mail-wm1-f48.google.com [209.85.128.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 134F5BE40 for ; Tue, 28 Jan 2025 14:22:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738074122; cv=none; b=uDGPhwqf4BM7EufbHQbJUDL4XgadsobfCBOuuWiUz1hDcP0zwp20YuTsCEQrJUjGg7RIejhPv484vMRDE3E9BDR7TUF4q4mbHnjUqfjWNBfCFFS10/K+4gDVqUtn+D/YQpcaSbO+OtSNirTMo84fglQ8WB8vrbg7R7CqxA+TeCQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738074122; c=relaxed/simple; bh=RFOzBuMsneVwtN783B11tDxukbOuJFk+FGb501bNZqc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=L9JJCVyUjmL7tkJNnwR9iRrWb16n96uy1d9XShpUVj5FD4tPVQ4qBPr5gIUUPwNJLFoP3sbJ8j02eK8ubnU826IhRZlcOoJmjg/Gk/b3wNajZC+TSXxuZ3bVrvjP8LEijpLs6eIhFS7V8dxuBc/RC1ullTN1yji7ffPCJcHT/vQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=VH8kakQG; arc=none smtp.client-ip=209.85.128.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="VH8kakQG" Received: by mail-wm1-f48.google.com with SMTP id 5b1f17b1804b1-438a39e659cso37681395e9.2 for ; Tue, 28 Jan 2025 06:22:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1738074119; x=1738678919; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=kO0uRE/b6a4B7/JlExmMlApMO3OGmNzh+eMs/4hpwh4=; b=VH8kakQGA+DmUgAh0KFwxoaSIa3YPYB9ZhYKRGdtmaHj/NruXD3XBAZ7kf7Fp6MCrL WU3Ingh7SBv9J4M2WazMBbsrleWjJtf/LrR9wHZysikc0amo7YALgZwbwlkvmZsvOoGI BkUsk4ppA1NbMBB4intXfbwvQWW64G49gnRfCSosgFg1L/EtV/yJpN7F9hRVCRkZh6Yd 4TkQVvLrI82Za+Dpgc71X+Nd1rkanR48ul8yYOfYo5jXo3P7ffbZEWhgLeAVgAqYUWsb FvIDLCYhtLJBOioJR/hSGfSsybdOjZEpGOD+B8f+sDZYaO/HDZFDXkGvGJ4JtEtgp9EC Es+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738074119; x=1738678919; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=kO0uRE/b6a4B7/JlExmMlApMO3OGmNzh+eMs/4hpwh4=; b=fHpFJqNLNqAt3tMkLVS32jf3gDqhzP22fRL4gEzgOOMUjnKGCtf//VmCYTYLkQJMN/ I3mnkdZwgYlqRl7Ht27ZGeDzxzGjCRtb1FjR/UowqPnWpinzAbeRjrcyj2db3bF4FY1p JSO0Y3I3/yAC2HOAN1IGt1MJld5XBAeHjekND5ZPiI+A5BmBuyyaPrHFsfrVBBGWIliS Tml+UAX8F8jdSgDDAi4XAKxIuc0+nKwWs7TodjS6rHWaTzg+7XLGhJpyTLSmEn/Yk/V8 5u2+GXf6RN3yLM7R30zKrr8mAwtJnYuPSd+0ZQvoQDZL08GJ8y0MfBqxgor4n0fP9qhl kNqA== X-Forwarded-Encrypted: i=1; AJvYcCVVVVJzZ7CohGp8Ycw2p4O+rzlp/U0OgUdMbi//ejMlDOsv07QGlFqqTdgoc6COd+n17FU=@vger.kernel.org X-Gm-Message-State: AOJu0Yx5BQ768ncwEasrT4AWdxSkwMgNuEnW2bY1a3SAbUid9FG85UO0 vNeakVtsuZKkbJouVvlwxh5yUwgk5XWQXt4ShCp4njKhm+vmeCGRHWDEluBSl9o= X-Gm-Gg: ASbGncsGgXLhK+epWH5BRRDZui/ihEAXfw/6xkQ3Klk76wD6yznyhKaZ/o5ThJ8gYuV 9mIa3NUPnLuIoQ9NBJ7OJFM/gdqaGVZvQxjVgCc1es4ygszkg6AAhnIBaMJ5Ksq6lgI2oqEQ7JI xMqv/Cfyys+B8upfsnU63j78KogUQ6bvV1pVm++M5CnCk1xgwjmpqVzecU+RDIhC39gK6ocd5jR +C4V99J6b83SGllzDzoZXwGNTqVuYw75sWoMdIMd7O/YK+1nfrE1ZWjNnhbH5rKpSOfGjGmKMe6 Q9plDQtaISD/7TSKjZxDEoG++hA2DRpPknkfSb61ssuf6l/gK23WD+bKm/Kjem7OJ+zridxyVbC 6 X-Google-Smtp-Source: AGHT+IG02KmwhuUT6IfvBlK1pHwLP8uF0g7mnNTy6Q9yhDmta3+GBFm8pcBIROf6lvdBXsr32dkLzA== X-Received: by 2002:a05:600c:4e89:b0:434:f739:7ce3 with SMTP id 5b1f17b1804b1-438913cb518mr403560625e9.8.1738074119339; Tue, 28 Jan 2025 06:21:59 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-438bd47f0fdsm174363075e9.5.2025.01.28.06.21.58 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 28 Jan 2025 06:21:58 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Peter Maydell , Yanan Wang , Eduardo Habkost , Harsh Prateek Bora , kvm@vger.kernel.org, Zhao Liu , =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= , Markus Armbruster , Igor Mammedov , Marcel Apfelbaum , Peter Xu , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Paolo Bonzini , Richard Henderson Subject: [RFC PATCH 1/9] accel/tcg: Simplify use of &first_cpu in rr_cpu_thread_fn() Date: Tue, 28 Jan 2025 15:21:44 +0100 Message-ID: <20250128142152.9889-2-philmd@linaro.org> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250128142152.9889-1-philmd@linaro.org> References: <20250128142152.9889-1-philmd@linaro.org> Precedence: bulk X-Mailing-List: kvm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Let vCPUs wait for themselves being ready first, then other ones. This allows the first thread to starts without the global vcpu queue (thus &first_cpu) being populated. Signed-off-by: Philippe Mathieu-Daudé --- accel/tcg/tcg-accel-ops-rr.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/accel/tcg/tcg-accel-ops-rr.c b/accel/tcg/tcg-accel-ops-rr.c index 028b385af9a..5ad3d617bce 100644 --- a/accel/tcg/tcg-accel-ops-rr.c +++ b/accel/tcg/tcg-accel-ops-rr.c @@ -197,20 +197,21 @@ static void *rr_cpu_thread_fn(void *arg) qemu_guest_random_seed_thread_part2(cpu->random_seed); /* wait for initial kick-off after machine start */ - while (first_cpu->stopped) { - qemu_cond_wait_bql(first_cpu->halt_cond); + while (cpu->stopped) { + CPUState *iter_cpu; + + qemu_cond_wait_bql(cpu->halt_cond); /* process any pending work */ - CPU_FOREACH(cpu) { - current_cpu = cpu; - qemu_wait_io_event_common(cpu); + CPU_FOREACH(iter_cpu) { + current_cpu = iter_cpu; + qemu_wait_io_event_common(iter_cpu); } } + g_assert(first_cpu); rr_start_kick_timer(); - cpu = first_cpu; - /* process any pending work */ cpu->exit_request = 1; From patchwork Tue Jan 28 14:21:45 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 13952597 Received: from mail-wr1-f44.google.com (mail-wr1-f44.google.com [209.85.221.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AE429BE40 for ; Tue, 28 Jan 2025 14:22:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738074128; cv=none; b=apgt7CodI4b2flEjWcYx3+QzEcibtHdTVuEVzbeGRRPWFDkpuXd2NnE4GCz0ZcriDMegS2H+VRNV1wL24Cu0iyU+LYa+gqejXD9hMtgucdzpsNII5lJ65VE1leUhueFPlY6IMVOeNuG7XA97LRmydYVQ0y4vJ02AgqVzgwnsWQU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738074128; c=relaxed/simple; bh=38cU2OHlhFZBCnfDkum4Mf8z9x9rVetsPagi6nQhdMw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=bhmC+INVD/hx3GKkgwLxKWTIH/rgF2AGRksc5d6bTyezy+a31sdSCvmKvorSN1KCMVfI1Mu+3w8IlapzsqGTLMRiHsT8gzZ0djzn/VcIpk4zY4tvcOJnd6982yDqB/wMdyCIntqJCnhsF95bo0W6V4hHZlrryySILXej9zJlJek= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=bFQPFoJu; arc=none smtp.client-ip=209.85.221.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="bFQPFoJu" Received: by mail-wr1-f44.google.com with SMTP id ffacd0b85a97d-38637614567so2782487f8f.3 for ; Tue, 28 Jan 2025 06:22:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1738074125; x=1738678925; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=seznNsDAaQBVSpbp55D/hE//Nvg+4oVvDGjyXY54BGQ=; b=bFQPFoJuCB9v70JQ+N8iPZ/6Mtr2eYMEm3f7l136cJOeaMiAS4wP+2ReZKG7IGilCP ZiNWjwsW+NBAmtMTRzviUu0yQYP0x4HYUQgyifHDBMEA1Q2L+saw2hTAV8Ncvhbc6fK0 2L4f+5mAvP09TBKSkhmadG8V0OPgVj+Rx0+0YIHYNqsuVRnwnhM8niioXZk5qG94Pnkw 5yKTzZrNCdhLmG6n4OVMoHATtDb2B8gjDFqNZh19TEl/ilbu6QijCKJWhyNLVAD31o8M uDP7a/T+UenSNJixjtVLHEn36x2XZi+TzHKJJNHtGF3D9Vsgu8iewRoveuNGDxoA1D7z hYVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738074125; x=1738678925; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=seznNsDAaQBVSpbp55D/hE//Nvg+4oVvDGjyXY54BGQ=; b=OJGb+alt2kOM8HfzWRMF65MtQ3Tekpg+A62vM4nxgY+O5p7pMCzvnBgKpWcwdzOEY2 03tbVRfnqOlrBN528x/mPAdcWgnYgrcp6q8tHkvBcAphADFwskJUrDHNBed8Vnx9vd7v OCVeHX2mS7rehv3vtFICa34REGw63MUBEXaaQp1HNJLhuT5PJOZFD8VDDn8ZDChk4/Vd xCZ/FGbYn614q6SrrGjnk8RUuBzZj1y125DuIv96Tn+X120MPqTAhlkCapvmrCqTgtct V1kzjwd8sE6+uGo//gTlBzrC9tlpadIotbmoaPC3oxj07/yAgZukrEEB0BPfiGHZJvgM 0/Bg== X-Forwarded-Encrypted: i=1; AJvYcCWb/NTyiHp9vXYXUXf0frSt/863Yu0E/H+LlIxRMpBYZkB/gnatjAAIGaK6kVe1QO8T5sQ=@vger.kernel.org X-Gm-Message-State: AOJu0Yz8niXXY5cn3+/rqZI97ULqm8p9Qew2ZFsGgytItVv87rKytnuD 2PnQ8bj1WsWHm0fsPXSGft4HBAkXwFn5vTH9jpZdXU0XxyMhNsPvzkrJNRcyIJI= X-Gm-Gg: ASbGncvc0WcI8sOKcv6S2my9mVjsqGfLtF3j7VYRObrE6PvsLPkacrsTGw47ZrJLWHG ESiKNVLnMYtJAqib+D3QPZ8c1pT1gITgmi4oK3UvPMBfvw99QH9rVfT1AkvtpbMPc6hpQJQl8G4 OB1pqayke7yUYwxtoZLGiEjr0aG/nOB/6ptyEBhrTx9I7pwFlgQNmXHD+tu7mWDDgIuXrrECF8Y ZStJypwJgIpS7Pwjr+8bk5Sa0eIMukJbD2majOJTf4/l+MjOREyeRmjEPU4XWoyXE7kIssOCEkG ZAfHCWJA3x7UaKSCsp4qlPBHllhTffJYCQm8NVo484BFwYtZX3OmYpCA8zCD1hhU8Q== X-Google-Smtp-Source: AGHT+IE++a185aCVAwGW9af+PNdrfc3K4O3/zeNI4/CnMV32fBXiZN0yIo7Y1YMI+EEIUBCDGyE+Pg== X-Received: by 2002:a5d:6d86:0:b0:385:df6b:7ef6 with SMTP id ffacd0b85a97d-38bf57c94a2mr50508168f8f.51.1738074124946; Tue, 28 Jan 2025 06:22:04 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-438bd5732edsm169125225e9.36.2025.01.28.06.22.03 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 28 Jan 2025 06:22:03 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Peter Maydell , Yanan Wang , Eduardo Habkost , Harsh Prateek Bora , kvm@vger.kernel.org, Zhao Liu , =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= , Markus Armbruster , Igor Mammedov , Marcel Apfelbaum , Peter Xu , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Paolo Bonzini , Richard Henderson Subject: [RFC PATCH 2/9] accel/tcg: Invalidate TB jump cache with global vCPU queue locked Date: Tue, 28 Jan 2025 15:21:45 +0100 Message-ID: <20250128142152.9889-3-philmd@linaro.org> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250128142152.9889-1-philmd@linaro.org> References: <20250128142152.9889-1-philmd@linaro.org> Precedence: bulk X-Mailing-List: kvm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Invalidate TB with global vCPU queue locked. See commit 4731f89b3b9 ("cpu: free cpu->tb_jmp_cache with RCU"): Fixes the appended use-after-free. The root cause is that during tb invalidation we use CPU_FOREACH, and therefore to safely free a vCPU we must wait for an RCU grace period to elapse. Signed-off-by: Philippe Mathieu-Daudé --- accel/tcg/tb-maint.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/accel/tcg/tb-maint.c b/accel/tcg/tb-maint.c index 3f1bebf6ab5..64471af439d 100644 --- a/accel/tcg/tb-maint.c +++ b/accel/tcg/tb-maint.c @@ -891,6 +891,8 @@ static void tb_jmp_cache_inval_tb(TranslationBlock *tb) } else { uint32_t h = tb_jmp_cache_hash_func(tb->pc); + QEMU_LOCK_GUARD(&qemu_cpu_list_lock); + CPU_FOREACH(cpu) { CPUJumpCache *jc = cpu->tb_jmp_cache; From patchwork Tue Jan 28 14:21:46 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 13952598 Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BB9C01A83E8 for ; Tue, 28 Jan 2025 14:22:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738074133; cv=none; b=Z+kUPGuaVuj49hRTYtmgY3CxdX0NBFy4uOpdqYzH+Fjdoc/VYxLZ5YA9mUj0W9V2Aki0uvPVs8eaXo426VsxpMb+wzvCqjO61UxCQ3xutiANps6Adxqvi3UldYuEGJV6CSMS+265UuQXKQuUcYIZeUcgDeCKbUQUEuB8j/pFY98= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738074133; c=relaxed/simple; bh=e2tWFm+ltqlnBfMyVnEYkNHZ6l3M7cGECvJih3yAb5A=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=j+NyMPrhhgarbyWu+RKTJuiHpmjYromilNPlrSF75gdyb0Cexitg0WGXWg97tMHfAZuy9rtMDmJJ7RiKdyJdMph+zkwrxD9LXAXt7WsxYUpK3n7qHnDByomHIoyLRt1ZT+PECrJ7GgGFKyfmLHj+ankvNqHHT5Fiu5jeJZXu2+0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=c2sv6esd; arc=none smtp.client-ip=209.85.128.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="c2sv6esd" Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-438a3216fc2so58473825e9.1 for ; Tue, 28 Jan 2025 06:22:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1738074130; x=1738678930; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=cztkPvSxh9km+ESKvRBcfElc50oeVn4euS866OSUDwg=; b=c2sv6esdSvbTM7TuDqoCJBdwpU3Td+7cXi+PY/7mqsKX9sslHbAAqLe546IHyAAx+4 jm0VzmABfb3/BqEllSTozovhuNLOm1ZVrDZSrryYDCPnUfaY0nuQbxEjHoKsk1pymTl8 gkPTNWFhEnnpusKL00mt+Sd4OVhttKjYE3Gxjj3uCxAXSDOx0mETBGBGEulgLzUBkdsd SXB0zmdd29zyyhapGbn5k4qP3ouM+5hxOxw/IBRNih7Qa1UYHnSInARXrBkkohhwR7Uy jhDwva5FJgqQ7y+uCf+Jm2wJhxGmtsvhIO4d/dQE8cDf/co4whY2e9P65NkbaQnrhgOb 1MWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738074130; x=1738678930; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=cztkPvSxh9km+ESKvRBcfElc50oeVn4euS866OSUDwg=; b=E+4swFY0rvtKopx8li7e5vdN31V2yAFshVOZ+0n9Xio75c+4CUQ2P15tUEIv4mhWwb EBu/q+FVzmFzj3Jsmx6vG1U4xadZAE919GHhM2cBCMUxvdWQnZC4ogmSlSt2/3+QC0Hj 2qo7gyF4lfHhKAyoUUTih0mYKH9/Fpt/VqmlqBJcH6lmWCakg9NXgOvRJB7Xev41TsP7 56zrNP4z9KA8M706sQvo8zoKS0u/N1zPCgOB2BMjdx9qeQYkhskPItQ3NbT80BpAUjvo IaUKt5Srg9OD9p7JYH7b6lhglDloh5ONjkkchNqp2hQuf/lMBr/3EcG3XZGpNwjrn0/B 9vjQ== X-Forwarded-Encrypted: i=1; AJvYcCX2F2Lqs3QrySAhw5FcZxHJgRKIXLsuzbE+SRaS1TXXirFsYi8s9b0royGLUoxmhsgSEh8=@vger.kernel.org X-Gm-Message-State: AOJu0YwZlm4aejJk1vEtqizPhcCPeTR4O2UpJCJQ9GWo1F42oF1blI9D jgU0oLdg6bCvMPIQ71+Mawx0sQiDURiWjRWMkuUv1b2frs8w0yyFGMgfnnaMHU8= X-Gm-Gg: ASbGncvMb0Eo6DEXVRnBlIrIdM9XjJHXdvhgx9hnAOJi8T3j2wbmYxSV44Exu18ccSH luUq87BjC7UlPMV0fKG3MPndlZFREy9j/fOPkTBtrHN/hyxxCyVDYWx3XkB9KvTfZSFqMMwHUZk xGWyq0dUuWBMXkDJSMF4En40X3ychT1GLgQ0LSBGIKvIaw0bbOcJp9gBRWF5oqZ3/c7tZ4YCUbC qO9jaGka6TTxQ2sMmRu/IyMm6uPTZKMCEtmeH7ZF5jiOejJJyjANRUIkBg9qT7gbTxRnw3WhPwB cQ28Esh/fUJnam/D8QSX9GKvvLFyGlMApIj14AIK741JTJCavUL+pNIM85p6XC3MVA== X-Google-Smtp-Source: AGHT+IHoy1cVhuk2i3/eWFOT57s+jua+XxxBspEQhqzWsAL+PWt7YkjOAw9jQh7HykZ8ESVDxkMIkQ== X-Received: by 2002:a05:600c:4589:b0:436:f960:3428 with SMTP id 5b1f17b1804b1-4389144fbd4mr437166445e9.29.1738074130042; Tue, 28 Jan 2025 06:22:10 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-438bd4fa57csm178828725e9.4.2025.01.28.06.22.09 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 28 Jan 2025 06:22:09 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Peter Maydell , Yanan Wang , Eduardo Habkost , Harsh Prateek Bora , kvm@vger.kernel.org, Zhao Liu , =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= , Markus Armbruster , Igor Mammedov , Marcel Apfelbaum , Peter Xu , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Paolo Bonzini , Richard Henderson Subject: [RFC PATCH 3/9] cpus: Remove cpu from global queue after UNREALIZE completed Date: Tue, 28 Jan 2025 15:21:46 +0100 Message-ID: <20250128142152.9889-4-philmd@linaro.org> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250128142152.9889-1-philmd@linaro.org> References: <20250128142152.9889-1-philmd@linaro.org> Precedence: bulk X-Mailing-List: kvm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Previous commit removed the restriction on completing the full QDev UNREALIZE step before removing vCPUs from global queue, it is now safe to call cpu_list_remove() after accel_cpu_common_unrealize(). Signed-off-by: Philippe Mathieu-Daudé --- cpu-target.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/cpu-target.c b/cpu-target.c index 667688332c9..11592e2583f 100644 --- a/cpu-target.c +++ b/cpu-target.c @@ -172,12 +172,9 @@ void cpu_exec_unrealizefn(CPUState *cpu) } #endif - cpu_list_remove(cpu); - /* - * Now that the vCPU has been removed from the RCU list, we can call - * accel_cpu_common_unrealize, which may free fields using call_rcu. - */ accel_cpu_common_unrealize(cpu); + + cpu_list_remove(cpu); } /* From patchwork Tue Jan 28 14:21:47 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 13952599 Received: from mail-wm1-f54.google.com (mail-wm1-f54.google.com [209.85.128.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C3F5FBE40 for ; Tue, 28 Jan 2025 14:22:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738074139; cv=none; b=TbMlo3DqzXmpo8VfihloLrY+zBm6xTO9X47HVTSJW4867MXHibW838XkreqlHS+D1Fknw/d2mNx/pH5SkYDjWvfvkbh4rnL5uCXGQUmMuCIVETcC91xjfHjwrIAoTgA/tp+fk7qLnMt6UwYTTP5bdbClo6U69qGsSJXofba5f3I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738074139; c=relaxed/simple; bh=d3QR2WmkDFD+oMZDqW8H7idPmKwNuab/wFXOjmWXtsI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=N9nfGcyFP31tDeasgcD/qHFlnSQ8rUNiJK5/TOJkrMLOvodIjSYZAbv3EUHvS5eItEH9si8tJTrKPjCthL3mZGT6RfC8Mic5Jf4wriv+eE5SVv/mOw2gS0Ohk21M4+bg/MfEianc3qQ4gLEy69UG//8pm+QBwa5BErJ5pI+Qlwk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=aw79zbov; arc=none smtp.client-ip=209.85.128.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="aw79zbov" Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-4363ae65100so63376585e9.0 for ; Tue, 28 Jan 2025 06:22:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1738074135; x=1738678935; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=+boILYhYAtgeHGjq7jZm3ySgVoHBXMK8/hh/+aqTVRc=; b=aw79zbovrNCRGOBa6QNfVDqLQQQKOcx04we5VVXT5fvCHuGd+nWPUs3Zj+B9AgFxGE HR4FzVRK28LPchbP0OVivgK049aN/OUtJdhWVoNgqMwX+APxOKbB9AYjTKHCxc40kgGd w+YBxVegCGWRvSdlJCfSklcvLAvEAIC7De0FToarezZm/nLHa62sAiiKLb6CiBZnPOD4 19rJ7DampXPfj+x3RvuMPYYCenzzCIvpqpIitr0WGUhomGdB1qgOqcnVNuE1o9ckLbeZ DgEGgwwxQIRVozjF6/b0+jvSAI9VomG9gr7OZtFyPRWgeKQVN7jqBYTCSK6dRJzrIhN4 bq2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738074135; x=1738678935; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=+boILYhYAtgeHGjq7jZm3ySgVoHBXMK8/hh/+aqTVRc=; b=NMnfOqLwXvZc6BV/F7ln5Qsxh7PtLCzeSUDeVENnxMtJV7iACcFzeMuZXrYcRT+HZP mFHYy0xUE/n8ypJGb3AQwg450vYXx26SpC5IPZB6czzfO8+Nmj1V70Oxwkh3r1xCC2XB 82ojkkmT0M4SyNo2iSnvhX+ebhKodx5N+Oy80Hwn9hl1MoKDlvYgrQx5NOeP97oYfTgx F0cSCRWO4QWFDJ15QMEx/Crh2DXIqI/yAOe4EwEOLVDmXGb48fMlDV6+XiLKHDk3mk/5 YA9jTY1nTfjW5OucY1qbpPyNK5idE96rxoC8vqF/aND6Tl6G+58nj6DysaxbEyuAlQ6r jQRg== X-Forwarded-Encrypted: i=1; AJvYcCWfN85mDxuvFxxOmlZyeW9SGbokLzcasRsr+CYOmR+mH2YK9+MdMhtITeP/kfaUMyg7HYI=@vger.kernel.org X-Gm-Message-State: AOJu0YxvWOoMuge3H+VOxrAk4CmtlGd87bIZSAXDGos17nVmGdKLvHVN rE+V6r1FL7cG6CFtMLMjiTjbPczowK2Are3VqZ7g5PB8SJ6zL/UC/g5xOd3Lfl8Gy/JbT/thILz uuDM= X-Gm-Gg: ASbGncu2cdJswj/7x7t8mf0HLlbdV1glV286qFLJXQLha3JA7Sy9buj5B79JjVGn6md Df8AJ/FQcmGceJRnZnwxbZVsAg1GqcaBpZSjfAFaF+ITSFbupCOEVWkT6vzXi2+L9GC+dxmNK19 fZeb4wa8NHX4+Rgjo59sDpqSt+h7/v4AOrXvVU/CNGEjTHtB93rAzas8YPfBu3CvaodLLgSKjF4 49pvs7lWjm1DJzobqVQwNgMuaZZgMuXNh0r9veOsfwudFCiT1f3NQ0YVP5zSxwoFCAsaC7hsKqN JRebmz4q0YX0DVRansWy+u3C4zUDg/8eQACS7fjbR/kmnl1GO1B3HUpmxkj9Or3D9A== X-Google-Smtp-Source: AGHT+IGiyDf3PkdYsZe6jk+4/3mMAG2JXndCBMlzg8yxTvd0a+VKOSqbgVH5XTu3dPPXX+j4kBOFOQ== X-Received: by 2002:a05:600c:1386:b0:434:f739:7cd9 with SMTP id 5b1f17b1804b1-438913cf349mr381680345e9.9.1738074135029; Tue, 28 Jan 2025 06:22:15 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-438bd4857b8sm168810805e9.15.2025.01.28.06.22.13 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 28 Jan 2025 06:22:14 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Peter Maydell , Yanan Wang , Eduardo Habkost , Harsh Prateek Bora , kvm@vger.kernel.org, Zhao Liu , =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= , Markus Armbruster , Igor Mammedov , Marcel Apfelbaum , Peter Xu , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Paolo Bonzini , Richard Henderson Subject: [RFC PATCH 4/9] hw/qdev: Introduce DeviceClass::[un]wire() handlers Date: Tue, 28 Jan 2025 15:21:47 +0100 Message-ID: <20250128142152.9889-5-philmd@linaro.org> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250128142152.9889-1-philmd@linaro.org> References: <20250128142152.9889-1-philmd@linaro.org> Precedence: bulk X-Mailing-List: kvm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 We are trying to understand what means "a qdev is realized". One explanation was "the device is guest visible"; however many devices are realized before being mapped, thus are not "guest visible". Some devices map / wire their IRQs before being realized (such ISA devices). There is a need for devices to be "automatically" mapped/wired (see [2]) such CLI-created devices, but this apply generically to dynamic machines. Currently the device creation steps are expected to roughly be: (external use) (QDev core) (Device Impl) ~~~~~~~~~~~~ ~~~~~~~~~ ~~~~~~~~~~~ INIT enter -----> +----------------------+ | Allocate state | +----------------------+ -----> +---------------------+ | INIT children | | | | Alias children properties | | | Expose properties | INIT exit +---------------------+ <----------------------------------- +----------------+ | set properties | | | | set ClkIn | +----------------+ REALIZE enter ----------------------------------> +----------------------+ | Use config properties| | | | Realize children | | | | Init GPIOs/IRQs | | | | Init MemoryRegions | +----------------------+ REALIZE exit <----------------------------------- ---- "realized" / "guest visible" +-----------------+ | Explicit wiring:| | IRQs | | I/O / Mem | | ClkOut | +-----------------+ RESET enter ---------------------------------> +----------------------+ | Reset default values | +----------------------+ But as mentioned, various devices "wire" parts before they exit the "realize" step. In order to clarify, I'm trying to enforce what can be done *before* and *after* realization. *after* a device is expected to be stable (no more configurable) and fully usable. To be able to use internal/auto wiring (such ISA devices) and keep the current external/explicit wiring, I propose to add an extra "internal wiring" step, happening after the REALIZE step as: (external use) (QDev core) (Device Impl) ~~~~~~~~~~~~ ~~~~~~~~~ ~~~~~~~~~~~ INIT enter -----> +----------------------+ | Allocate state | +----------------------+ -----> +---------------------+ | INIT children | | | | Alias children properties | | | Expose properties | INIT exit +---------------------+ <----------------------------------- +----------------+ | set properties | | | | set ClkIn | +----------------+ REALIZE enter ----------------------------------> +----------------------+ | Use config properties| | | | Realize children | | | | Init GPIOs/IRQs | | | | Init MemoryRegions | +----------------------+ REALIZE exit <--- +----------------------+ | Internal auto wiring | | IRQs | (i.e. ISA bus) | I/O / Mem | | ClkOut | +----------------------+ <--- ---- "realized" +-----------------+ | External wiring:| | IRQs | | I/O / Mem | | ClkOut | +-----------------+ RESET enter ---- "guest visible" ---------------------------------> +----------------------+ | Reset default values | +----------------------+ The "realized" point is not changed. "guest visible" concept only occurs *after* wiring, just before the reset phase. This change introduces the DeviceClass::wire handler within qdev core realization code. Signed-off-by: Philippe Mathieu-Daudé --- include/hw/qdev-core.h | 7 +++++++ hw/core/qdev.c | 20 +++++++++++++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h index 530f3da7021..021bb7afdc0 100644 --- a/include/hw/qdev-core.h +++ b/include/hw/qdev-core.h @@ -102,7 +102,12 @@ typedef int (*DeviceSyncConfig)(DeviceState *dev, Error **errp); * @props: Properties accessing state fields. * @realize: Callback function invoked when the #DeviceState:realized * property is changed to %true. + * @wire: Callback function called after @realize to connect IRQs, + * clocks and map memories. Can not fail. + * @unwire: Callback function to undo @wire. Called before @unrealize. + * Can not fail. * @unrealize: Callback function invoked when the #DeviceState:realized + * property is changed to %false. Can not fail. * property is changed to %false. * @sync_config: Callback function invoked when QMP command device-sync-config * is called. Should synchronize device configuration from host to guest part @@ -171,6 +176,8 @@ struct DeviceClass { */ DeviceReset legacy_reset; DeviceRealize realize; + void (*wire)(DeviceState *dev); + void (*unwire)(DeviceState *dev); DeviceUnrealize unrealize; DeviceSyncConfig sync_config; diff --git a/hw/core/qdev.c b/hw/core/qdev.c index 82bbdcb654e..38449255365 100644 --- a/hw/core/qdev.c +++ b/hw/core/qdev.c @@ -554,6 +554,15 @@ static void device_set_realized(Object *obj, bool value, Error **errp) } } + if (dc->wire) { + if (!dc->unwire) { + warn_report_once("wire() without unwire() for type '%s'", + object_get_typename(OBJECT(dev))); + } + dc->wire(dev); + } + + /* At this point the device is "guest visible". */ qatomic_store_release(&dev->realized, value); } else if (!value && dev->realized) { @@ -573,6 +582,15 @@ static void device_set_realized(Object *obj, bool value, Error **errp) */ smp_wmb(); + if (dc->unwire) { + if (!dc->wire) { + error_report("disconnect() without connect() for type '%s'", + object_get_typename(OBJECT(dev))); + abort(); + } + dc->unwire(dev); + } + QLIST_FOREACH(bus, &dev->child_bus, sibling) { qbus_unrealize(bus); } @@ -585,8 +603,8 @@ static void device_set_realized(Object *obj, bool value, Error **errp) dev->pending_deleted_event = true; DEVICE_LISTENER_CALL(unrealize, Reverse, dev); } - assert(local_err == NULL); + return; child_realize_fail: From patchwork Tue Jan 28 14:21:48 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 13952600 Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 975B91AA1D2 for ; Tue, 28 Jan 2025 14:22:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738074143; cv=none; b=AqplQYcQ1/lTYW6T6k5EfpZ0knFu+dXEGlvXOoahR3DO0q2Gz9eeyEHG0K0UVHKOB2KI/VBDQl1tFIVI5+f1wWp+q8vjNR+EXGCHDOqm/f9a/evraa/si4u1NHTtfeL73hsVs+kNFlt0T4eIcIn7LmeujsZn8rpy+Kg/x1KXAKo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738074143; c=relaxed/simple; bh=JmHTzVtwDG4VRrHuvKuN52rz6X+CgLY48sZJXwcoACs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=NHPAGYWm7IiMlqlTHqj1QnNqwg7jYovZ+jpyvzeKrCRZAo+fvDmgnpL25ECcHcArcxM/UfywgeiQGjCQkr9II5mj0nNyeRTnIULjh60BjpxYuPkWo807YFPQTafc9syVddcCKKHSjMEdXXbELCdmnEONlCJ+759G46FMvXAelDk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=uxRqY4Mv; arc=none smtp.client-ip=209.85.128.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="uxRqY4Mv" Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-4363dc916ceso42395845e9.0 for ; Tue, 28 Jan 2025 06:22:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1738074140; x=1738678940; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=mCOhYMyVhf/9MTlWJYC1Pyb8EOr+qnDpIx/K4OIle8U=; b=uxRqY4MvvMCSJaXCy3QBtFguBoe5aoPJKiyY7Oy6SixOU6ZY4YNzhuAfq7wN64mpVB V8vM8/qGFf9IkMUT5X22OFVtP9mpmW7jq0ECE+oTWZ895sXW8spJ365ea71kUNIhZQoq c522tSDHVNXMZoyhRhSfBlNIS46qgThPs0PeD76w53M3hvGJSS4C6Jl75Zj61Sjl4QkN foRxR0RQrVqwJS4vmpZsTe2EdIkLKifiRzr2nlAJu3KqP/1s5rZ/ZPUXXXjCdMBMfB4w 02gwXHltsba8D3R2kVmOkcme9BVpBSZUefOFwyEFtKhKUmBiN34J0Dljnwq03tO/zJDh Hn+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738074140; x=1738678940; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=mCOhYMyVhf/9MTlWJYC1Pyb8EOr+qnDpIx/K4OIle8U=; b=U6aikh/OOWwsTbAUhgwcpSLjernsNATEmJSS3se3Gd2CUMaWpqe/X+3tGbkbHsM90x TYd2vhEE3hnU3iOdVV3NBu/jkNLgXBqAjtZ1G2lnJcU2n+1BEDFSjaOpaLmJPGe4vOsJ gI8PxowosCglbYmLD0KBlEHIsklBCRA6Ydr2n46XhUoHkwncrl+uu0XzpcHuq66D7LJ5 6j0qc1VrUBeL9V1XY2W6KfKRTe571WULKCatF5wjsMXjIgtNLcP7CN2fjBVQ98gwkoSJ kkPA3wPkDDMZ3UIbGJzBolHHa/+iYK8gkC2jc5gVuIMRQ4/eEpC1ltHZb+csxbCh+I23 9wcQ== X-Forwarded-Encrypted: i=1; AJvYcCWPoC4KbAFrFKQNofOq1j0asHvrQp50tiu7DCpaxYsuH9pBjPfNl6jeCjF9cov+NoQc3Kw=@vger.kernel.org X-Gm-Message-State: AOJu0YziBbVzWqALRh09FSCKT7oozUQIf4iQWNYiJ+eQFGVJ73BrGalV v5QHd2LgeDpQygMmAMDatcx3NZsa+7Ul36l5Ztlg98dThQQRFAAK8J9VF0oNbdTHGAD/DJtEQgq 4KBE= X-Gm-Gg: ASbGncvsAeIeXBBD6+acg76p/TxMtmZiGNqAzycO0vdwLK/cH7fZr9BI6IQexrypNLm slRC+lRvX+wTeMUvoBz1TIDsImmPvm+78XocJXxMYI27Fi2U2yzyDFgS22Ge/yWJIz4WgOzVftc 6xxTotj4LHp8YQHGzuwkdTgBeoE+lVAIqc6P1Rq04v76sB+Gb/FLgql6tuFXiNom0X3a7C9/tWn L7bLKajmq3WYMPDknI1Icbv8g7guGVT/sUhOzFd/U9oyQByXYqldM8GBrE59Q+ZGR93KmriB5cF lsOYO9/I04gUSRENUKiOmrHM/mY/CQjNdPgth98tj6L2bPH7cmhB31gBZgL2BCSLug== X-Google-Smtp-Source: AGHT+IE44lMFstrRJbbKMMn+hBpz79bGQD7lLRHTYaowiK6y0WzRah7ztkDdk12TT/+zj/uGA78k7A== X-Received: by 2002:a05:600c:6c92:b0:437:c453:ff19 with SMTP id 5b1f17b1804b1-438d59b566dmr30503145e9.14.1738074139917; Tue, 28 Jan 2025 06:22:19 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-438bd57325csm172106435e9.34.2025.01.28.06.22.18 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 28 Jan 2025 06:22:19 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Peter Maydell , Yanan Wang , Eduardo Habkost , Harsh Prateek Bora , kvm@vger.kernel.org, Zhao Liu , =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= , Markus Armbruster , Igor Mammedov , Marcel Apfelbaum , Peter Xu , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Paolo Bonzini , Richard Henderson Subject: [PATCH 5/9] cpus: Add DeviceClass::[un]wire() stubs Date: Tue, 28 Jan 2025 15:21:48 +0100 Message-ID: <20250128142152.9889-6-philmd@linaro.org> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250128142152.9889-1-philmd@linaro.org> References: <20250128142152.9889-1-philmd@linaro.org> Precedence: bulk X-Mailing-List: kvm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Richard Henderson --- hw/core/cpu-common.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/hw/core/cpu-common.c b/hw/core/cpu-common.c index cb79566cc51..9ee44a00277 100644 --- a/hw/core/cpu-common.c +++ b/hw/core/cpu-common.c @@ -219,6 +219,14 @@ static void cpu_common_realizefn(DeviceState *dev, Error **errp) /* NOTE: latest generic point where the cpu is fully realized */ } +static void cpu_common_wire(DeviceState *dev) +{ +} + +static void cpu_common_unwire(DeviceState *dev) +{ +} + static void cpu_common_unrealizefn(DeviceState *dev) { CPUState *cpu = CPU(dev); @@ -311,6 +319,8 @@ static void cpu_common_class_init(ObjectClass *klass, void *data) k->gdb_write_register = cpu_common_gdb_write_register; set_bit(DEVICE_CATEGORY_CPU, dc->categories); dc->realize = cpu_common_realizefn; + dc->wire = cpu_common_wire; + dc->unwire = cpu_common_unwire; dc->unrealize = cpu_common_unrealizefn; rc->phases.hold = cpu_common_reset_hold; cpu_class_init_props(dc); From patchwork Tue Jan 28 14:21:49 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 13952601 Received: from mail-wm1-f46.google.com (mail-wm1-f46.google.com [209.85.128.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A01201A8407 for ; Tue, 28 Jan 2025 14:22:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738074148; cv=none; b=HPz5iWybirgdFTsBaMMl3kOrjxNaExB3cTr12wKV+nA4IExrcTSPTUU18blQMv/HMMgqJ2P1sooKUZkNkNa9siI5aBEqd8BBoseZS3WmaNA9dOlVgOy693g5PAoHm02uQ0iKXIhKrdvf1jGty2P19a3zPcQXIF5hkSwSMgDwuPs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738074148; c=relaxed/simple; bh=b5pmYrFAmwtCJg8B2cUet21qlaBWJzq176CYmqC1/Es=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=sOaV39rooMv0TR+AUHe1434LcwTj3ZuJ+pGai0vXEqebcBB+z38L6CR7xCP3tsOYh55FFIpJ4JJtp3IASEokVgm6OEEJwmzMLy14KRzmQHbBuAJC1CB2p5bREpX9JIClZbS6kArC9QBrnC0s2d0cIzrFLPHX3pVKJGDsCM1zEhI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=GnJijNKS; arc=none smtp.client-ip=209.85.128.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="GnJijNKS" Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-436249df846so38370535e9.3 for ; Tue, 28 Jan 2025 06:22:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1738074145; x=1738678945; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Tw046dW5+uhhYJLaed8H1nN+PEtNbdWPjJLIYS364MM=; b=GnJijNKSe828VJJaNQXenZs1ajoM+/738CP0f0+4PZEQOLRNxBGeKDhgxNjbNx1yrr QHQ2+RcYor+oiMvdlmTdDfhvc6SsFvT3xrUcb3Z20lG2vYSW+bBq7/wA8kv/+DShe15a q8+TP4+yYNQecqFAUY260/7n2EAz9wunzuJ3Rw3WjaYPqK4puB/GeauI+98pYH3wwefC NesPe/stnRKHI4HFo0ljlBH1iZTwEXre/9BuYoZwPnOKFrF5RnedvW87sxrl2uXnE028 cANoOV8lgbC7DNemum+FZDAQwIKe+aJJI+3HwNWgG9AthBhbnn754UdUMEl01S+pM5HM IuRg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738074145; x=1738678945; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Tw046dW5+uhhYJLaed8H1nN+PEtNbdWPjJLIYS364MM=; b=xLL9WarKfbxUyCj/hXATwvlpHD9lWLWvpFl4ZfmB/4lj8eyd/Yxi0zlj8AXDdoRnsm dom/5V61OHntSTBP6OvfAilYchrhqpz3mjsrBQeu55kkgZYulok8TCxsm1gMqCR6eyU4 nuqxnhvpz0frX3bUg1DeuW0yl5ktkBQ1JG3i5iO3Y/O8M4bBspR2Rqxy2Rkldii1vhzN BnPZxAxzaAmTZe5IR28Tb7zaOLc7grHKSOD0dpoSNegzeucYmLSGfPnoJBYTu416cC2B hd34qAAqgV/joDyfQtPa24QGYMV3ovClf/G/Dm9XEFYSCpbQsMQznUxj2KTDemp+GA2r dMTw== X-Forwarded-Encrypted: i=1; AJvYcCUyw5bTCCsdHjlm0ZXTgmdmiaD+hRBce4so745gy/igZgoYWPPWiCkewI45JaT5Dj0MzV0=@vger.kernel.org X-Gm-Message-State: AOJu0YwftUuNVpUapoF2+6KEZIHcJY/ge/j/qyUMVeAkuR0AwfelIHvU fuagu5luPhuNNlgxU6Q73NOW18zqq4Cs+a2xEbt94GrbS5Mr74omHbJbn1zr+fJx2Kn/6FpqMwf +k4Y= X-Gm-Gg: ASbGncvL2DwJOF1R1Qki+/FJtGs+BfKlL4nschjR4G2Y2p92ILvE7G51HnKXMuch6g9 gVIc+L6+71cURm5n6V4Al8bcdCTPinHvk8QXwzJ7qspSPRcaPG/7vrMjLcaK0X+Wp1MrSpUvezd dyPwaLEsLabNRz2d5BzclcLi1iKZyTBswjFUT/lcKx17UXAnSzFbziI66qc1urnkTB+Bd+SWhQf S6eq014+7DumWnQvlXr5QWYce8LmBKyffmt1TphwD2+JXJpaCJfcC5Qwmfgwplwi8SzN01qM7vc IkjMWG/TiTGXnRa5Pm3M5sS0bOn8Nv4SFzGV4tiNbNE9IBee39bT3y4AORz59ro8cw== X-Google-Smtp-Source: AGHT+IEyyaAAlYQ5I3ppwUr7kelaVWlDzVIFlhZYrwH74VA7sdBpE5YrUhEnY7P3LEg7nQWsma+f4A== X-Received: by 2002:a5d:47ac:0:b0:38b:e919:4053 with SMTP id ffacd0b85a97d-38bf57a993dmr44371093f8f.44.1738074144814; Tue, 28 Jan 2025 06:22:24 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38c2a1bad92sm14282474f8f.61.2025.01.28.06.22.23 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 28 Jan 2025 06:22:24 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Peter Maydell , Yanan Wang , Eduardo Habkost , Harsh Prateek Bora , kvm@vger.kernel.org, Zhao Liu , =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= , Markus Armbruster , Igor Mammedov , Marcel Apfelbaum , Peter Xu , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Paolo Bonzini , Richard Henderson Subject: [PATCH 6/9] cpus: Call hotplug handlers in DeviceWire() Date: Tue, 28 Jan 2025 15:21:49 +0100 Message-ID: <20250128142152.9889-7-philmd@linaro.org> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250128142152.9889-1-philmd@linaro.org> References: <20250128142152.9889-1-philmd@linaro.org> Precedence: bulk X-Mailing-List: kvm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 To call the hotplug handlers with REALIZED vCPU, we can use the DeviceWire handler. Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Richard Henderson --- hw/core/cpu-common.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/hw/core/cpu-common.c b/hw/core/cpu-common.c index 9ee44a00277..8a02ac146f6 100644 --- a/hw/core/cpu-common.c +++ b/hw/core/cpu-common.c @@ -211,16 +211,17 @@ static void cpu_common_realizefn(DeviceState *dev, Error **errp) } } - if (dev->hotplugged) { - cpu_synchronize_post_init(cpu); - cpu_resume(cpu); - } - /* NOTE: latest generic point where the cpu is fully realized */ } static void cpu_common_wire(DeviceState *dev) { + CPUState *cpu = CPU(dev); + + if (dev->hotplugged) { + cpu_synchronize_post_init(cpu); + cpu_resume(cpu); + } } static void cpu_common_unwire(DeviceState *dev) From patchwork Tue Jan 28 14:21:50 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 13952602 Received: from mail-wm1-f44.google.com (mail-wm1-f44.google.com [209.85.128.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 845CD1A9B3B for ; Tue, 28 Jan 2025 14:22:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738074153; cv=none; b=B05N1kW41OTHXK3FTNtoeWXrQ/5EPNhmKQcwNkLpOshigtzuvAEGpBnO56r1TmbPe+k7mU8qXOfUIm0TR29wpMQiq9WDz1S8lddFVALh/3Btzm1Kep1h5FDGvTrL6pqNHlan8Y2cPsHcInY1BwibP2sHN23Tf8u4AE3HirpFefU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738074153; c=relaxed/simple; bh=9qP2M/5pQU70znx9jB98YFuJ8vLrfb0v8LfsmSWQm3o=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=Wk1LyMePpJEmboyN9KdUVLrPWLH5mmI9gjwH97i4zQRPhvCPxWiLOTc6NGSFRnh4hb8WjUuIL4AZzr+Vs3LQ8Vy+ay7jP/8fARFNLU8YmZtf9CfLG+MHzUD4otUjaeuSGhOPdpNhIAPRgRU+Kr63f4FMCyNjQAlJB1NDy3zflTk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=KMNUKHYX; arc=none smtp.client-ip=209.85.128.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="KMNUKHYX" Received: by mail-wm1-f44.google.com with SMTP id 5b1f17b1804b1-4361b6f9faeso36461495e9.1 for ; Tue, 28 Jan 2025 06:22:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1738074150; x=1738678950; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=fwXtzSsp3Wrsq7TzutaYeT0jWiU8kps8I7b8yY/9nhU=; b=KMNUKHYXkhrlj47HVz39v4tGii7rq6/Ags6fDa+K3WrUnV3lbUyKHNAnDgAT+rk0xD 8r4qP2ZaudcS6LhTd6rhxUKmZ3ERcRq9juZzGDcq4u4/1O54d7YKq//susknX44U4WE2 03RsNcgkoCDF/+kJ22sHAqBAhmBPm4eZ3dtMGLf3sY12AuolSUoztMHjNlUP/sKq7EP3 dIy4n1QuupitBosQ4tHbfIBSSsRerfyCMh6d3JB3KKIsqpm+YDtXhnNAG8xnqCa1Jgoa O5OgOIYoQVaRrjbysapIgdZzJpBPBEYeE7hBhYfliAe1w5wN0rS4AdNE2qkFd0F9yoQ1 JSdw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738074150; x=1738678950; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=fwXtzSsp3Wrsq7TzutaYeT0jWiU8kps8I7b8yY/9nhU=; b=fco4C6KaMBXSiloGcjvUgFplRmrENqvp6m9duZQQ9zvPbxx+VzasuPk/wT+3Ou+r8x bdi/WAf9zlQiuHOQ+INC1uHR2/Gt8KPjq34sipacGykWk8+ErNAjJ94nX52NwN7pMo1q KdDF1WaY9oSKHqKHqvT5Tob9Vbkrw/Gvjc6luHpGLuhpSCqxIGbU037KPAztMkr8Ai9u lDxkVdiwKCGm9KpmvR0519w1+CUW0YsqosDzbD4PZz43zr+BfD8LBmWJ+9v1+swR+ysm +zMDAX/6Dp2XNq/CBpaSsnsAUtle9ykpLhp4rprX21iMnkPsldvAVzAYLEhofi4c8+8x IloQ== X-Forwarded-Encrypted: i=1; AJvYcCUsjfkM9lVP+v9rIJF3S0PfYV5sgRbh50JC1qH5DtAJKGRMNIT2q5qaDekDR2DA45/UynI=@vger.kernel.org X-Gm-Message-State: AOJu0Yy92opnlRfyNyX/dDgAMrgGxbT+RBB3XDviaOXbKuv/8O6Nlz0H 6RrQuTObIycXhBUD3kbzs7RfRoqcCn0shL2gI3ADfTHn5kxrwWMOUt5iSRHV8g0= X-Gm-Gg: ASbGncvsWW9foEx0YJm6lvrVQ4pdrFW/iYlEmc5+XTa8j8ilSTUKeGOc82HI8ndrA1y 66xWcgHX0Uu/av6yRioqw7lO62dP4tkD4BcQAqRY6m6yg75vM0yDM2S36ZSSlMRFTy34tvacUU8 d5JfpishA/XWXE+cCMf1d34ReeDGCHI5t5BlL49mlbgKKQcvBIVJhBqQIAahsR0q9KH+qPouAmQ H+lrNrLzZRAPiptrozNk23Uj+UmNT97Q85Ynp9ZWx1gX9Vf6ZiypK64kwkPP0XYMaCxTPCwKCXD Sic/3bG30CLNLIHEfGXoWPdxZKpb5yeZALbL1ld303Bi6O+qsTqO6t+R1tFVIW2EpA== X-Google-Smtp-Source: AGHT+IGJgZU4Cp2hilxwmoMaixsHyforairgw/17QEoYqTReWbKeDv+qCHMAqmyxnXcqNHDKAhm1lA== X-Received: by 2002:a05:600c:46d2:b0:434:f1bd:1e40 with SMTP id 5b1f17b1804b1-438d596d1bamr27108845e9.6.1738074149822; Tue, 28 Jan 2025 06:22:29 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38c2a17d7bfsm14358242f8f.35.2025.01.28.06.22.28 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 28 Jan 2025 06:22:29 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Peter Maydell , Yanan Wang , Eduardo Habkost , Harsh Prateek Bora , kvm@vger.kernel.org, Zhao Liu , =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= , Markus Armbruster , Igor Mammedov , Marcel Apfelbaum , Peter Xu , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Paolo Bonzini , Richard Henderson Subject: [RFC PATCH 7/9] cpus: Only expose REALIZED vCPUs to global &cpus_queue Date: Tue, 28 Jan 2025 15:21:50 +0100 Message-ID: <20250128142152.9889-8-philmd@linaro.org> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250128142152.9889-1-philmd@linaro.org> References: <20250128142152.9889-1-philmd@linaro.org> Precedence: bulk X-Mailing-List: kvm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 cpu_list_add() was doing 2 distinct things: - assign some index to vCPU - add unrealized (thus in inconsistent state) vcpu to &cpus_queue Code using CPU_FOREACH() macro would iterate over possibly unrealized vCPUs, often dealt with special casing. In order to avoid that, we move the addition of vCPU to global queue to the DeviceWire handler, which is called just before switching the vCPU to REALIZED state. This ensure all &cpus_queue users (like via &first_cpu or CPU_FOREACH) get a realized vCPU in consistent state. Similarly we remove it from the global queue at DeviceUnwire phase, just after marking the vCPU UNREALIZED. Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Richard Henderson --- cpu-common.c | 2 -- hw/core/cpu-common.c | 5 +++++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/cpu-common.c b/cpu-common.c index 4248b2d727e..72ee8dc414e 100644 --- a/cpu-common.c +++ b/cpu-common.c @@ -91,7 +91,6 @@ void cpu_list_add(CPUState *cpu) } else { assert(!cpu_index_auto_assigned); } - QTAILQ_INSERT_TAIL_RCU(&cpus_queue, cpu, node); cpu_list_generation_id++; } @@ -103,7 +102,6 @@ void cpu_list_remove(CPUState *cpu) return; } - QTAILQ_REMOVE_RCU(&cpus_queue, cpu, node); cpu->cpu_index = UNASSIGNED_CPU_INDEX; cpu_list_generation_id++; } diff --git a/hw/core/cpu-common.c b/hw/core/cpu-common.c index 8a02ac146f6..df7a6913603 100644 --- a/hw/core/cpu-common.c +++ b/hw/core/cpu-common.c @@ -218,6 +218,8 @@ static void cpu_common_wire(DeviceState *dev) { CPUState *cpu = CPU(dev); + QTAILQ_INSERT_TAIL_RCU(&cpus_queue, cpu, node); + if (dev->hotplugged) { cpu_synchronize_post_init(cpu); cpu_resume(cpu); @@ -226,6 +228,9 @@ static void cpu_common_wire(DeviceState *dev) static void cpu_common_unwire(DeviceState *dev) { + CPUState *cpu = CPU(dev); + + QTAILQ_REMOVE_RCU(&cpus_queue, cpu, node); } static void cpu_common_unrealizefn(DeviceState *dev) From patchwork Tue Jan 28 14:21:51 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 13952603 Received: from mail-wr1-f46.google.com (mail-wr1-f46.google.com [209.85.221.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 879031A9B28 for ; Tue, 28 Jan 2025 14:22:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738074158; cv=none; b=X8f2pjlOZDO9j/iQ6V/N1KJr8exSQ84Bb74Xl5s3joCk57EC9Z1dsayDeJoDIEYCU1xA/A3Hfmoj/e9qi+FSLevN8O4J2l0gEj0LdPYiiz345KuLzGwDARjix+8eZdiF/+cixSb0AoG4AI1OhK0eJMWRjAguxSl3pri+nDWAT0M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738074158; c=relaxed/simple; bh=0Ue3vKaJ3drYPDwFKIjK40ldGlBOO+Z0YsClyzcq0yw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=mHh50xu3tJ6WCDlvyFu6fq33LlhkCuDSwHK3IozOezToh74606R4cGTb6ArwukYNKW+IXzPV+cNHWwsB5pFhqtWI800CtFveS7CuiCy8CnJPoCxHR0EWFi0MPrzBXh+wewFg6uIP6hCgkqj2JKYY4oLk4JOXluFlijW2GEk8UkU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=XYSQSlpK; arc=none smtp.client-ip=209.85.221.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="XYSQSlpK" Received: by mail-wr1-f46.google.com with SMTP id ffacd0b85a97d-385e06af753so3114147f8f.2 for ; Tue, 28 Jan 2025 06:22:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1738074155; x=1738678955; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=YRDTHlfvyOrER0eUl5RKITSLiEo3HyKeVBvSp+Og3D8=; b=XYSQSlpKGN1IUscoiZrAC3yzQD8wD0U6+eSv/egVxyA86D2YngaNmLx8wQ1xFOirJG a6D3/jEwAOAeqXSYvNY9+WO9czvyClQDBs313uZ7nbBbtE1KrSfcyf3edYYSCUnvzCX0 OCs5NKldU3wZGSpJR9jDLm5kefNhBAhRpyrcNpi9sKziQvujYnAhpm1k1am3kv4+VED5 ZUxqGaZ9pfhSGt/sFsxdX414N756urdReOA4kXVD2hUnpJq4fxph41sdeTgRL66za7bq 6hMGzxufCDnw1JzaaIMJLC+GIiBVOCDeoFiCTg+c42tVCNHeAERq7ECzuumBV3JxYcXs Syew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738074155; x=1738678955; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=YRDTHlfvyOrER0eUl5RKITSLiEo3HyKeVBvSp+Og3D8=; b=kkg7Hnf2i/Sth00So9Z2EIZ075SOz8yWtBG0qeZI4Y6eF5qgeRC5mDil0T9VTRg7uN 7g/uJTCwKZLY29nLw8h2ECoIGtPjQth+L2GMEwKBA24sa49y2nwS1H7PN5JuZJIDPFrZ agn2NBIIIWe9ErJJJhFY6GxvMN3FRBiXApKwSpuRADI2UT4I6h+CZx6+Ija/xkHpdIQK HkjEnnqKSd5Gbutozo13U5Coq5yZGevFmw1v+jtQSkhdk3sZVBx4/iRhScrlGqCXlrU7 3MSK/o8ZiPYDN7IeamQHeej78LJB1yfljbBvJL6NQvlyLoAVg+O5tZWfZtWuHMuTjq00 8Y6g== X-Forwarded-Encrypted: i=1; AJvYcCUjgONJ6wxdyrmFu6D6coujvI/bQQ/1Y7irwh+SAwhySU9k0LV0cdiiaK87txag7nFcfpA=@vger.kernel.org X-Gm-Message-State: AOJu0YywMT1/3H2hHFRmzDb17385B2BxVkRuLo1HVtYMNHT777c/ijIS L78Htc6GLcl4oSc6wxeEkL1StUOmwRm5xlvz7bHumy9qGbSw0JqyM9IytPzBNe8= X-Gm-Gg: ASbGncvaVTTER7s+ALpDRtz6/crz4PECX/Qhn1Wo82J9xdS2aEb0qEey2Ft7AzTGOO+ ioIes6jAnvD+6OfxmtYULcBoHbLcCV/RINffW76CC2APBL0bxKOSN3JZeKNCmXfc6AcQ3HXXhf2 R6sn5Zv0SMISI+nryJlGmKYjh9xJEZLW1XJE39RmwikKEJGN10QQgUIxxNCvcTWiKkugzv616Zg oBRjDGLM6BswczND9hCr1BS4NrFMlnZE5oeTdfqOLAQ0Bx9KIb7hUYd7bVPNSwDys5P1cDC23yV sFgni9FJMX/6QkwNWBXFMYIu8UeUHA0of5wJaHEjWPOpWlP03pFGTTHi80soxNLR4Q== X-Google-Smtp-Source: AGHT+IGUPaLAqP3HpLzD0IitgxG+YT9FIQ6tbXwdivHVU4DsFGAjOBMGO6K9Ad7biFURl7kv8n/Uug== X-Received: by 2002:a5d:6c65:0:b0:38a:888c:676f with SMTP id ffacd0b85a97d-38bf565f13bmr45683211f8f.15.1738074154855; Tue, 28 Jan 2025 06:22:34 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38c2a1c3fedsm13952511f8f.85.2025.01.28.06.22.33 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 28 Jan 2025 06:22:34 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Peter Maydell , Yanan Wang , Eduardo Habkost , Harsh Prateek Bora , kvm@vger.kernel.org, Zhao Liu , =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= , Markus Armbruster , Igor Mammedov , Marcel Apfelbaum , Peter Xu , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Paolo Bonzini , Richard Henderson Subject: [PATCH 8/9] accel/kvm: Assert vCPU is created when calling kvm_dirty_ring_reap*() Date: Tue, 28 Jan 2025 15:21:51 +0100 Message-ID: <20250128142152.9889-9-philmd@linaro.org> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250128142152.9889-1-philmd@linaro.org> References: <20250128142152.9889-1-philmd@linaro.org> Precedence: bulk X-Mailing-List: kvm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Previous commits made sure vCPUs are realized before accelerators (such KVM) use them. Ensure that by asserting the vCPU is created, no need to return. For more context, see commit 56adee407fc ("kvm: dirty-ring: Fix race with vcpu creation"). Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Richard Henderson --- accel/kvm/kvm-all.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c index c65b790433c..cb56d120a91 100644 --- a/accel/kvm/kvm-all.c +++ b/accel/kvm/kvm-all.c @@ -831,13 +831,11 @@ static uint32_t kvm_dirty_ring_reap_one(KVMState *s, CPUState *cpu) uint32_t count = 0, fetch = cpu->kvm_fetch_index; /* - * It's possible that we race with vcpu creation code where the vcpu is + * It's not possible that we race with vcpu creation code where the vcpu is * put onto the vcpus list but not yet initialized the dirty ring - * structures. If so, skip it. + * structures. */ - if (!cpu->created) { - return 0; - } + assert(cpu->created); assert(dirty_gfns && ring_size); trace_kvm_dirty_ring_reap_vcpu(cpu->cpu_index); From patchwork Tue Jan 28 14:21:52 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 13952604 Received: from mail-wr1-f45.google.com (mail-wr1-f45.google.com [209.85.221.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 56B65BE40 for ; Tue, 28 Jan 2025 14:22:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738074163; cv=none; b=RbMwjR5yCNhuvZnFwUqdgVbOPMj9E+mkgoY6B/LvEqqIZHEpmugKNDUlj6BJ93pv6Jb1pyR30ZN/kiEkl+Z8+vNBraybg1Ky8rQREAYjl3CYz1t1mn9H6+vtlLZ01E63cfaOgv7k5DXRYttxeHqIzIH5KsfSgl+zQEk3HrMVDrs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738074163; c=relaxed/simple; bh=5TgS81tlmP8UtIxJAetvffRGOG/PZQxZ0zBesx5Pcss=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=LEFt3TnMnXXkw6OYwp7iiUICvcvUvbsECetHfLwcVf1Jlgm2NCc01RKzsT17zoX9f6EaH1X6lKwX1/PWZlvEiWBTn9d74vz46sfJ8ezPrY4ZsV1ckZDoBzW1JIwfHezZeDfA8E2Yv5M2c+T00mi01hPYrdTCwbVHgrFVecNXoOQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=mZayt+7/; arc=none smtp.client-ip=209.85.221.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="mZayt+7/" Received: by mail-wr1-f45.google.com with SMTP id ffacd0b85a97d-385e27c75f4so4969959f8f.2 for ; Tue, 28 Jan 2025 06:22:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1738074159; x=1738678959; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=jN7tNGrfnQkH1jp+7zEAfhWZCNwGy2KakJL6oRXbHIo=; b=mZayt+7/17lpfZGHjJRp1UjG77qZDfPZmSeiRBg4BZv5bqc5P/8S+LtHxeuAtMaErh 4ZPcKarGw+6z3Rij7CcFGV5HQ5CDXVfQpQBJFTq94+oqOluA4qU6y1tTEhNWs6OmKDs3 AtjGE3D/ey6/01oTTVh1mjGJKyG+IBFCBlSi2nZkfJKF0Undz3YHQlqFJJW9iMLJRb4k 3Zf251fqCIyZkDFJxNQpEH9/5US02R/3D4aBQG1d8BqxVf6HAiSRS6EFQJpmpXfIwwyw zyF/9DClhnokYbImwf3Q/o1vUjDMasyYwTdnlUzaXSyUQveg7DcB87CHdruu59sAf1Dw ikRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738074159; x=1738678959; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=jN7tNGrfnQkH1jp+7zEAfhWZCNwGy2KakJL6oRXbHIo=; b=gEFfEAXasj4GGS88LSCM7ZGE/F+7qESOF4JHFdb5uNBA92XrGabRtek6EbUxd0/OER DxsGD80Q4rYB96zKiY0vADQ3llp8QRdhxxrhZTEHd8tH7X6Veahq10OiWU0j6EUd2w2H zOeNKFpm7YhzqersJ0/hlSahRc8/EmufD3fHMJ+1FLGsgQ9W0DyJWgJwKS+a7ZAj1UhE 007Lo2hQ2abTQvrU63ObE9hug43VoDqicHtdMXv+wy5ocvM8ofZTgrSD7bhS4BqBxKn8 kTO3XUoGlENG6wdOTc3V/vO27ac6ZTFR4fJIH+bewLo4IVMRAwcRcSmGnTosF0Qyxjhu ZVkA== X-Forwarded-Encrypted: i=1; AJvYcCVybEZYB3LM6AjqaT6rxd3D6skJIl7rVdqM5OIpUVFfsYfiFlvlg2VOMHg8RBQe+YQsc30=@vger.kernel.org X-Gm-Message-State: AOJu0Yw4ytCdB7xmXkST0MDY4al3uAeuR1xcw18bW/kB8wfuDTjzQYQ8 2X/ezXU0Coa1LVKsiCThqhRcLVNQ1+8dI94Lw61/93Gyk3ZxZV0M6FXXECksYPI= X-Gm-Gg: ASbGncsJM9zA6Qu62S3ST62I8mW6zxjRk5ytIkua6sxsQF64WsU8DxskyS5KlW1omoJ NhaElUaevqugTsfvCEnbU8UTVZzMc3HU+brk5tdwC5azHHrj5NSMgIhW4fCTxSW8oNVMJorNDoH XIo77UkbuJL2rvUGYjE+Qz32BXWQvHVDUCVJZ3AOMnOdWMqJpAdfjdR6j9PdblI9OSVcxkWzy94 VPo/GpWEQNx0pSy903rXxwFDIBRJwNZClJV/PXdilNlkbgoB9BYMsPlD8ZI/JYt+ULJ8bAUYlCo 41Cjs+rsAYDWHExuEvZazoGUmrDfaKWw2sl8ovuGttqtMiukXd024NJhN5IMu8kiZA== X-Google-Smtp-Source: AGHT+IHfjGCtubVM9RMAK88E03g9Q6/raB5p2ips8Ty3wdrHPHY423HNQ2wht5Ir+apIlpYx+7iAnw== X-Received: by 2002:a5d:64e9:0:b0:38a:88bc:bae4 with SMTP id ffacd0b85a97d-38bf5784ab8mr43777014f8f.18.1738074159686; Tue, 28 Jan 2025 06:22:39 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38c2a176434sm14462219f8f.13.2025.01.28.06.22.38 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 28 Jan 2025 06:22:39 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Peter Maydell , Yanan Wang , Eduardo Habkost , Harsh Prateek Bora , kvm@vger.kernel.org, Zhao Liu , =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= , Markus Armbruster , Igor Mammedov , Marcel Apfelbaum , Peter Xu , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Paolo Bonzini , Richard Henderson Subject: [PATCH 9/9] accel/kvm: Remove unreachable assertion in kvm_dirty_ring_reap*() Date: Tue, 28 Jan 2025 15:21:52 +0100 Message-ID: <20250128142152.9889-10-philmd@linaro.org> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250128142152.9889-1-philmd@linaro.org> References: <20250128142152.9889-1-philmd@linaro.org> Precedence: bulk X-Mailing-List: kvm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Previous commit passed all our CI tests, this assertion being never triggered. Remove it as dead code. Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Richard Henderson --- accel/kvm/kvm-all.c | 7 ------- 1 file changed, 7 deletions(-) diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c index cb56d120a91..814b1a53eb8 100644 --- a/accel/kvm/kvm-all.c +++ b/accel/kvm/kvm-all.c @@ -830,13 +830,6 @@ static uint32_t kvm_dirty_ring_reap_one(KVMState *s, CPUState *cpu) uint32_t ring_size = s->kvm_dirty_ring_size; uint32_t count = 0, fetch = cpu->kvm_fetch_index; - /* - * It's not possible that we race with vcpu creation code where the vcpu is - * put onto the vcpus list but not yet initialized the dirty ring - * structures. - */ - assert(cpu->created); - assert(dirty_gfns && ring_size); trace_kvm_dirty_ring_reap_vcpu(cpu->cpu_index);