From patchwork Tue Oct 15 09:59:56 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Salil Mehta X-Patchwork-Id: 835404 Delivered-To: patch@linaro.org Received: by 2002:a5d:4c8f:0:b0:37d:45d0:187 with SMTP id z15csp150822wrs; Tue, 15 Oct 2024 03:06:07 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCVUSmvO8HL8X3ovT4Fo1nWfgqcmxvBGJETxO6nyYF0u2tStCUa/ebv3DChmNxYArHXvTZomZA==@linaro.org X-Google-Smtp-Source: AGHT+IH8rZu+RPGPcd8T8DuE6gE329CHgziA09HEszz/optAasLeb6z21j4kCv7HF/Sk1jDIQHL5 X-Received: by 2002:ac8:7c46:0:b0:458:2b69:9496 with SMTP id d75a77b69052e-4604bc2ddd3mr222951121cf.38.1728986767274; Tue, 15 Oct 2024 03:06:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1728986767; cv=none; d=google.com; s=arc-20240605; b=TYQXnNkP64QL8hHK55Rl4i//9kv79Pd5xEeRR2B/7ixAdU0W9E16OLKaTgI9B+p/pH 0nuIpZDQRKYcGcUdhiJNee9oa74DzBjo9EWPvyNhJn6AwQYaWA9TLTBlL44x+SyREHsn Ol+pVY7JNatg1jzr04aG1qArjbtL5fPuB4eVyVPkma8bc2BRhh8EqVoKcG201VrwluZ4 I384SZ+WLXimGoEoKidlzZaV6AtGMb+9nNNuTdLCFcyPlEhEvTC8MOB0jqT5jVmwd+Ru ONujdaLGNrJ0HVizAZpdPBU7bJSJWdXtl9ZVFRQIvTUDn5RL589sVy2Pjv20oPmOPRMs ohgQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:from:reply-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to; bh=dmMWluBFfNXWSPLgzxqwJtxFbzLb5gYHlmEHm2xxF8U=; fh=f7aqOn0Aylihzqer4hTA2kHSEaA8DU6KE1VFtniI5w4=; b=MmboA8CPy91Tl1g7WyLcLmE65OBNV62jRgBM2yboiscZrvOmXMXWl1Vffij0kgLd0i VM2euluHO/ZRO37jOCA61F5snA/mfV1Ymrz6aJHQO/qJXeD2V/huMVclHcrUqflUqpmB zJxZk1OD/Fcm+n9Co1t+yyenMyTL1QSrQtywbw+yj/t36D/eVuuaQ95f8yWnZFxPaKxI weCZ8G9e+b9qn6Kfev7s1Xu1RzPCATawGxQchInRWTzNu7ghwyQkkzRolmOcCN8EQrrQ nsXjMEm/o2o8+5qbjdmE+xE6r9iHvRMiHG+TamrDtLpGkcEsG/fSwEItnOBgjPeXKauC D8Bw==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id d75a77b69052e-4607b4cbc0csi10722501cf.616.2024.10.15.03.06.07 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Tue, 15 Oct 2024 03:06:07 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nongnu.org Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1t0eR3-0000et-SM; Tue, 15 Oct 2024 06:05:50 -0400 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 1t0eR1-0000ct-Q8; Tue, 15 Oct 2024 06:05:47 -0400 Received: from frasgout.his.huawei.com ([185.176.79.56]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1t0eR0-0001Yy-9F; Tue, 15 Oct 2024 06:05:47 -0400 Received: from mail.maildlp.com (unknown [172.18.186.216]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4XSV8Q1jZPz6K98P; Tue, 15 Oct 2024 18:05:10 +0800 (CST) Received: from frapeml500007.china.huawei.com (unknown [7.182.85.172]) by mail.maildlp.com (Postfix) with ESMTPS id 5F435140AA7; Tue, 15 Oct 2024 18:05:44 +0800 (CST) Received: from 00293818-MRGF.huawei.com (10.48.146.149) by frapeml500007.china.huawei.com (7.182.85.172) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.39; Tue, 15 Oct 2024 12:05:24 +0200 To: , , CC: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , Subject: [PATCH RFC V5 14/30] hw/acpi: Make _MAT method optional Date: Tue, 15 Oct 2024 10:59:56 +0100 Message-ID: <20241015100012.254223-15-salil.mehta@huawei.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20241015100012.254223-1-salil.mehta@huawei.com> References: <20241015100012.254223-1-salil.mehta@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.48.146.149] X-ClientProxiedBy: dggems702-chm.china.huawei.com (10.3.19.179) To frapeml500007.china.huawei.com (7.182.85.172) Received-SPF: pass client-ip=185.176.79.56; envelope-from=salil.mehta@huawei.com; helo=frasgout.his.huawei.com X-Spam_score_int: -41 X-Spam_score: -4.2 X-Spam_bar: ---- X-Spam_report: (-4.2 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham 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: , Reply-to: Salil Mehta X-Patchwork-Original-From: Salil Mehta via From: Salil Mehta Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org From: Jean-Philippe Brucker The GICC interface on arm64 vCPUs is statically defined in the MADT, and doesn't require a _MAT entry. Although the GICC is indicated as present by the MADT entry, it can only be used from vCPU sysregs, which aren't accessible until hot-add. Signed-off-by: Jean-Philippe Brucker Reviewed-by: Gavin Shan Signed-off-by: Salil Mehta --- hw/acpi/cpu.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/hw/acpi/cpu.c b/hw/acpi/cpu.c index d34c1e601e..2cbeedffe8 100644 --- a/hw/acpi/cpu.c +++ b/hw/acpi/cpu.c @@ -731,10 +731,13 @@ void build_cpus_aml(Aml *table, MachineState *machine, CPUHotplugFeatures opts, aml_append(dev, method); /* build _MAT object */ - build_madt_cpu(i, arch_ids, madt_buf, true); /* set enabled flag */ - aml_append(dev, aml_name_decl("_MAT", + if (build_madt_cpu) { + build_madt_cpu(i, arch_ids, madt_buf, + true); /* set enabled flag */ + aml_append(dev, aml_name_decl("_MAT", aml_buffer(madt_buf->len, (uint8_t *)madt_buf->data))); - g_array_free(madt_buf, true); + g_array_free(madt_buf, true); + } if (CPU(arch_ids->cpus[i].cpu) != first_cpu) { method = aml_method("_EJ0", 1, AML_NOTSERIALIZED); From patchwork Tue Oct 15 10:00:10 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Salil Mehta X-Patchwork-Id: 835405 Delivered-To: patch@linaro.org Received: by 2002:a5d:4c8f:0:b0:37d:45d0:187 with SMTP id z15csp152648wrs; Tue, 15 Oct 2024 03:11:13 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCV4cok6CBLaT4fIsGAIUU0K6iqcEJtPLd+Gm5pBslEa/4Ki5Nd9Qz9w689oJsaxQl46N7y7tw==@linaro.org X-Google-Smtp-Source: AGHT+IFYzMcsW45/WG3EBTiZuKEu71TpoAAi+Qrf3f7Gvlkp1eDMQqWxciayITejzTdKyTWmoPxa X-Received: by 2002:ac8:7d46:0:b0:458:2764:37d5 with SMTP id d75a77b69052e-4604bb93e90mr206418421cf.6.1728987073294; Tue, 15 Oct 2024 03:11:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1728987073; cv=none; d=google.com; s=arc-20240605; b=ZUcKD3W9K0W2co2igIY75MlnpuT5w9N0JRVGKYaxDUqXSsdJyuE+VVLdFUNqGGqmE+ QcWnIyjoh82M+tXf/zV+6e7LKwDoHPEnyKDtObzMptA4lyYFoBxHxtMGpK+zrwy+G8Pi wn6gRn7mXCSlUiqOi/LM+eVf7mFWrQQL134x4ym4/CjW+4JmmQiLrk1M06MiEyskevl5 QOahKLudBPH4kM2nlsjygcjUf+ZJd/zNGqYe//J8/r6WbIf3MWo0R9MVXMI1JpO1uyon lPFEKKJ1f3erR32ys16zTTngiardDM9wFa5n4z9Jlidr3bEuX5fPtJg4cnYqJJnqNU8u mdnw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:from:reply-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to; bh=J2WNTWDyB3vhBSXuQB5+cPu9YZDdBG5FQuH5c9nGpS4=; fh=f7aqOn0Aylihzqer4hTA2kHSEaA8DU6KE1VFtniI5w4=; b=e16uBYLc3SzGaH+hGR4Qc02xGRKrk/Z2vrc0lSXYMiOYMuaVuAT1J0Xpf4AhQDhbFW v1eJAf2599XIhu2B2i3wD8Sgs+SNFF27MzAAzavceHhb55IX81cIpzIleXqd67VZft73 GJ+VzyTPBe8H7kSrRnKyv1tFBoSpfc5n9hOEcwgCvqmIDO0gUyPG+CV2tfD8z1oDRuJD AMpr9AU/ZN24fVds2Pl83zdwS9Ym+nC4CMmFlnea/oMB/sNfE5A1Qx2SeOxK1P/l8uDY BvSIK3/UMOuI9wyIIqv2Do1QzJ8Rx7rb1caudT8QhT+a2/lz6v2UzcJxdm5Qp6LuAdCV So/g==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id d75a77b69052e-4607b12f6f8si10832611cf.221.2024.10.15.03.11.13 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Tue, 15 Oct 2024 03:11:13 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nongnu.org Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1t0eWD-0000ZF-6I; Tue, 15 Oct 2024 06:11:09 -0400 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 1t0eVZ-0007kQ-5i; Tue, 15 Oct 2024 06:10:31 -0400 Received: from frasgout.his.huawei.com ([185.176.79.56]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1t0eVW-0002oM-J9; Tue, 15 Oct 2024 06:10:28 -0400 Received: from mail.maildlp.com (unknown [172.18.186.231]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4XSVFp38SNz6K987; Tue, 15 Oct 2024 18:09:50 +0800 (CST) Received: from frapeml500007.china.huawei.com (unknown [7.182.85.172]) by mail.maildlp.com (Postfix) with ESMTPS id 92B7F140B63; Tue, 15 Oct 2024 18:10:24 +0800 (CST) Received: from 00293818-MRGF.huawei.com (10.48.146.149) by frapeml500007.china.huawei.com (7.182.85.172) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.39; Tue, 15 Oct 2024 12:10:04 +0200 To: , , CC: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , Subject: [PATCH RFC V5 28/30] target/arm/kvm: Write vCPU's state back to KVM on cold-reset Date: Tue, 15 Oct 2024 11:00:10 +0100 Message-ID: <20241015100012.254223-29-salil.mehta@huawei.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20241015100012.254223-1-salil.mehta@huawei.com> References: <20241015100012.254223-1-salil.mehta@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.48.146.149] X-ClientProxiedBy: dggems702-chm.china.huawei.com (10.3.19.179) To frapeml500007.china.huawei.com (7.182.85.172) Received-SPF: pass client-ip=185.176.79.56; envelope-from=salil.mehta@huawei.com; helo=frasgout.his.huawei.com X-Spam_score_int: -41 X-Spam_score: -4.2 X-Spam_bar: ---- X-Spam_report: (-4.2 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham 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: , Reply-to: Salil Mehta X-Patchwork-Original-From: Salil Mehta via From: Salil Mehta Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org From: Jean-Philippe Brucker Previously, all `PSCI_CPU_{ON, OFF}` calls were handled directly by KVM. However, with the introduction of vCPU hotplug, these hypervisor calls are now trapped to QEMU for policy checks. This shift can lead to inconsistent vCPU states between KVM and QEMU, particularly when the vCPU has been recently plugged in and is transitioning from the unparked state in QOM. Therefore, it is crucial to synchronize the vCPU state with KVM, especially in the context of a cold reset of the QOM vCPU. To ensure this synchronization, mark the QOM vCPU as "dirty" to trigger a call to `kvm_arch_put_registers()`. This guarantees that KVM’s `MP_STATE` is updated accordingly, forcing synchronization of the `mp_state` between QEMU and KVM. Signed-off-by: Jean-Philippe Brucker Signed-off-by: Salil Mehta --- target/arm/kvm.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/target/arm/kvm.c b/target/arm/kvm.c index 61ac7f6093..4a10e63877 100644 --- a/target/arm/kvm.c +++ b/target/arm/kvm.c @@ -1038,6 +1038,7 @@ void kvm_arm_cpu_post_load(ARMCPU *cpu) void kvm_arm_reset_vcpu(ARMCPU *cpu) { int ret; + CPUState *cs = CPU(cpu); /* Re-init VCPU so that all registers are set to * their respective reset values. @@ -1059,6 +1060,12 @@ void kvm_arm_reset_vcpu(ARMCPU *cpu) * for the same reason we do so in kvm_arch_get_registers(). */ write_list_to_cpustate(cpu); + + /* + * Ensure we call kvm_arch_put_registers(). The vCPU isn't marked dirty if + * it was parked in KVM and is now booting from a PSCI CPU_ON call. + */ + cs->vcpu_dirty = true; } void kvm_arm_create_host_vcpu(ARMCPU *cpu)