From nobody Sat Sep 26 20:03:11 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789613284132837.7824071676794; Wed, 16 Sep 2026 19:48:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x729H-0006O0-DD; Wed, 16 Sep 2026 22:46:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x7292-0006L1-Tw for qemu-devel@nongnu.org; Wed, 16 Sep 2026 22:46:41 -0400 Received: from mail.loongson.cn ([114.242.206.163]) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x7290-000591-N6 for qemu-devel@nongnu.org; Wed, 16 Sep 2026 22:46:40 -0400 Received: from loongson.cn (unknown [10.40.46.54]) by gateway (Coremail) with SMTP id _____8Axj9GIVKtqBuEMAA--.37807S3; Thu, 17 Sep 2026 10:46:32 +0800 (CST) Received: from fedora.loongson.cn (unknown [10.40.46.54]) by front1 (Coremail) with SMTP id qMiowJCx+c18VKtqA60hAA--.39456S3; Thu, 17 Sep 2026 10:46:31 +0800 (CST) From: Bibo Mao To: qemu-devel@nongnu.org Cc: Miao Wang , Xianglai Li Subject: [PULL 01/11] target/loongarch: Fix data race in CSR_ESTAT Date: Thu, 17 Sep 2026 10:47:32 +0800 Message-ID: <20260917024742.200257-2-maobibo@loongson.cn> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260917024742.200257-1-maobibo@loongson.cn> References: <20260917024742.200257-1-maobibo@loongson.cn> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: qMiowJCx+c18VKtqA60hAA--.39456S3 X-CM-SenderInfo: xpdruxter6z05rqj20fqof0/ X-Coremail-Antispam: 1Uk129KBj93XoW7ZFy7tw1fWrW8CF15Cr1DCFX_yoW8Kr1kpr y7uryYqw4kGrZxZ3s5Ga9xXFn8ZF4fWF1IvanIkryfuFW5Jw45Wryvyas7XF1Du34rWF40 9FWrJFW5WF4UCFgCm3ZEXasCq-sJn29KB7ZKAUJUUUUU529EdanIXcx71UUUUU7KY7ZEXa sCq-sGcSsGvfJ3Ic02F40EFcxC0VAKzVAqx4xG6I80ebIjqfuFe4nvWSU5nxnvy29KBjDU 0xBIdaVrnRJUUUkjb4IE77IF4wAFF20E14v26r1j6r4UM7CY07I20VC2zVCF04k26cxKx2 IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M28lY4IEw2IIxxk0rwA2F7IY1VAKz4vEj48v e4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_JFI_Gr1l84ACjcxK6xIIjxv20xvEc7CjxVAFwI 0_Gr0_Cr1l84ACjcxK6I8E87Iv67AKxVW8JVWxJwA2z4x0Y4vEx4A2jsIEc7CjxVAFwI0_ Gr0_Gr1UM2AIxVAIcxkEcVAq07x20xvEncxIr21l57IF6xkI12xvs2x26I8E6xACxx1l5I 8CrVACY4xI64kE6c02F40Ex7xfMcIj6xIIjxv20xvE14v26r106r15McIj6I8E87Iv67AK xVWUJVW8JwAm72CE4IkC6x0Yz7v_Jr0_Gr1lF7xvr2IYc2Ij64vIr41l42xK82IYc2Ij64 vIr41l4I8I3I0E4IkC6x0Yz7v_Jr0_Gr1lx2IqxVAqx4xG67AKxVWUJVWUGwC20s026x8G jcxK67AKxVWUGVWUWwC2zVAF1VAY17CE14v26r1Y6r17MIIYrxkI7VAKI48JMIIF0xvE2I x0cI8IcVAFwI0_Jr0_JF4lIxAIcVC0I7IYx2IY6xkF7I0E14v26r1j6r4UMIIF0xvE42xK 8VAvwI8IcIk0rVWUJVWUCwCI42IY6I8E87Iv67AKxVWUJVW8JwCI42IY6I8E87Iv6xkF7I 0E14v26r1j6r4UYxBIdaVFxhVjvjDU0xZFpf9x07UWHqcUUUUU= 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+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=114.242.206.163; envelope-from=maobibo@loongson.cn; helo=mail.loongson.cn X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1789613284678158500 Content-Type: text/plain; charset="utf-8" The CSR_ESTAT register of a CPU can be read and written by both the CPU thread and other threads (e.g., the interrupt controller thread). Currently the possible readers and writers of CSR_ESTAT are: The access from the CPU thread is not synchronized with the access from other threads, which may lead to data races. The above readers and writers shall all run on the corresponding CPU thread except for loongarch_cpu_set_irq(). To fix this, the access to CSR_ESTAT in loongarch_cpu_set_irq() is moved to the CPU thread by using async_run_on_cpu(). Signed-off-by: Miao Wang Signed-off-by: Bibo Mao Reviewed-by: Xianglai Li --- target/loongarch/cpu.c | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/target/loongarch/cpu.c b/target/loongarch/cpu.c index 18d73ebc1b..cd39572b5c 100644 --- a/target/loongarch/cpu.c +++ b/target/loongarch/cpu.c @@ -75,13 +75,26 @@ void loongarch_cpu_update_irq(LoongArchCPU *cpu, uint64= _t old) } } =20 -void loongarch_cpu_set_irq(void *opaque, int irq, int level) +static void loongarch_cpu_self_set_irq(CPUState *cs, run_on_cpu_data data) { - LoongArchCPU *cpu =3D opaque; - CPULoongArchState *env =3D &cpu->env; + LoongArchCPU *cpu =3D LOONGARCH_CPU(cs); + CPULoongArchState *env =3D cpu_env(cs); CPUSysState *sys =3D env_sys(env); + int irq, level; uint64_t old; =20 + irq =3D data.host_int & ~BIT(31); + level =3D (data.host_int >> 31) & 1; + old =3D sys->CSR_ESTAT; + sys->CSR_ESTAT =3D deposit64(sys->CSR_ESTAT, irq, 1, level !=3D 0); + loongarch_cpu_update_irq(cpu, old); +} + +void loongarch_cpu_set_irq(void *opaque, int irq, int level) +{ + LoongArchCPU *cpu =3D opaque; + CPUState *cs =3D CPU(cpu); + if (irq < 0 || irq >=3D N_IRQS) { return; } @@ -89,9 +102,9 @@ void loongarch_cpu_set_irq(void *opaque, int irq, int le= vel) if (kvm_enabled()) { kvm_loongarch_set_interrupt(cpu, irq, level); } else if (tcg_enabled()) { - old =3D sys->CSR_ESTAT; - sys->CSR_ESTAT =3D deposit64(sys->CSR_ESTAT, irq, 1, level !=3D 0); - loongarch_cpu_update_irq(cpu, old); + irq |=3D (level & 1) << 31; + async_run_on_cpu(cs, loongarch_cpu_self_set_irq, + RUN_ON_CPU_HOST_INT(irq)); } } =20 --=20 2.54.0 From nobody Sat Sep 26 20:03:11 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178961324653946.39890775330355; Wed, 16 Sep 2026 19:47:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x7299-0006N5-Pi; Wed, 16 Sep 2026 22:46:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x7294-0006Le-C8 for qemu-devel@nongnu.org; Wed, 16 Sep 2026 22:46:42 -0400 Received: from mail.loongson.cn ([114.242.206.163]) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x728y-00058h-ND for qemu-devel@nongnu.org; Wed, 16 Sep 2026 22:46:42 -0400 Received: from loongson.cn (unknown [10.40.46.54]) by gateway (Coremail) with SMTP id _____8BxLNKIVKtqCOEMAA--.37639S3; Thu, 17 Sep 2026 10:46:32 +0800 (CST) Received: from fedora.loongson.cn (unknown [10.40.46.54]) by front1 (Coremail) with SMTP id qMiowJCx+c18VKtqA60hAA--.39456S4; Thu, 17 Sep 2026 10:46:32 +0800 (CST) From: Bibo Mao To: qemu-devel@nongnu.org Cc: Xianglai Li Subject: [PULL 02/11] target/loongarch: Remove CSR registers relative MERR Date: Thu, 17 Sep 2026 10:47:33 +0800 Message-ID: <20260917024742.200257-3-maobibo@loongson.cn> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260917024742.200257-1-maobibo@loongson.cn> References: <20260917024742.200257-1-maobibo@loongson.cn> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: qMiowJCx+c18VKtqA60hAA--.39456S4 X-CM-SenderInfo: xpdruxter6z05rqj20fqof0/ X-Coremail-Antispam: 1Uk129KBj93XoW7KryftryUAFy8tr48AFy5GFX_yoW8KrWkpr ZrZrWDKF48XryDCw15Jas0v34DXF47G3y2qa1fC340vrZ8A3yjgr4rtFyvgFyrJay5Jry0 9F1kZr92vF4xJ3XCm3ZEXasCq-sJn29KB7ZKAUJUUUUU529EdanIXcx71UUUUU7KY7ZEXa sCq-sGcSsGvfJ3Ic02F40EFcxC0VAKzVAqx4xG6I80ebIjqfuFe4nvWSU5nxnvy29KBjDU 0xBIdaVrnRJUUUkYb4IE77IF4wAFF20E14v26r1j6r4UM7CY07I20VC2zVCF04k26cxKx2 IYs7xG6rWj6s0DM7CIcVAFz4kK6r106r15M28lY4IEw2IIxxk0rwA2F7IY1VAKz4vEj48v e4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_JFI_Gr1l84ACjcxK6xIIjxv20xvEc7CjxVAFwI 0_Gr0_Cr1l84ACjcxK6I8E87Iv67AKxVWxJVW8Jr1l84ACjcxK6I8E87Iv6xkF7I0E14v2 6r4UJVWxJr1le2I262IYc4CY6c8Ij28IcVAaY2xG8wAqjxCEc2xF0cIa020Ex4CE44I27w Aqx4xG64xvF2IEw4CE5I8CrVC2j2WlYx0E2Ix0cI8IcVAFwI0_Jrv_JF1lYx0Ex4A2jsIE 14v26r1j6r4UMcvjeVCFs4IE7xkEbVWUJVW8JwACjcxG0xvY0x0EwIxGrwCF04k20xvY0x 0EwIxGrwCFx2IqxVCFs4IE7xkEbVWUJVW8JwC20s026c02F40E14v26r1j6r18MI8I3I0E 7480Y4vE14v26r106r1rMI8E67AF67kF1VAFwI0_Jrv_JF1lIxkGc2Ij64vIr41lIxAIcV C0I7IYx2IY67AKxVWUJVWUCwCI42IY6xIIjxv20xvEc7CjxVAFwI0_Jr0_Gr1lIxAIcVCF 04k26cxKx2IYs7xG6r1j6r1xMIIF0xvEx4A2jsIE14v26r1j6r4UMIIF0xvEx4A2jsIEc7 CjxVAFwI0_Jr0_GrUvcSsGvfC2KfnxnUUI43ZEXa7IU8r9N3UUUUU== 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+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=114.242.206.163; envelope-from=maobibo@loongson.cn; helo=mail.loongson.cn X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1789613250426158500 Content-Type: text/plain; charset="utf-8" Registers relative with MERR are used for HW error handling, such as CPU cache etc now both KVM and TCG do not support MERR. Remove these CSR registers, vmstate keeps unchanged for compatibility. Signed-off-by: Bibo Mao Reviewed-by: Xianglai Li --- target/loongarch/cpu.c | 6 ------ target/loongarch/csr.c | 6 ------ target/loongarch/disas.c | 6 ------ 3 files changed, 18 deletions(-) diff --git a/target/loongarch/cpu.c b/target/loongarch/cpu.c index cd39572b5c..614d6a9542 100644 --- a/target/loongarch/cpu.c +++ b/target/loongarch/cpu.c @@ -153,12 +153,6 @@ static void loongarch_la464_init_csr(DeviceState *dev) } set_csr_flag(LOONGARCH_CSR_IMPCTL1, CSRFL_UNUSED); set_csr_flag(LOONGARCH_CSR_IMPCTL2, CSRFL_UNUSED); - set_csr_flag(LOONGARCH_CSR_MERRCTL, CSRFL_UNUSED); - set_csr_flag(LOONGARCH_CSR_MERRINFO1, CSRFL_UNUSED); - set_csr_flag(LOONGARCH_CSR_MERRINFO2, CSRFL_UNUSED); - set_csr_flag(LOONGARCH_CSR_MERRENTRY, CSRFL_UNUSED); - set_csr_flag(LOONGARCH_CSR_MERRERA, CSRFL_UNUSED); - set_csr_flag(LOONGARCH_CSR_MERRSAVE, CSRFL_UNUSED); set_csr_flag(LOONGARCH_CSR_CTAG, CSRFL_UNUSED); =20 for (i =3D env->perf_event_num; i < MAX_PERF_EVENTS; i++) { diff --git a/target/loongarch/csr.c b/target/loongarch/csr.c index 309b826ca9..d2ac39dee9 100644 --- a/target/loongarch/csr.c +++ b/target/loongarch/csr.c @@ -82,12 +82,6 @@ static CSRInfo csr_info[] =3D { CSR_OFF(TLBRELO1), CSR_OFF(TLBREHI), CSR_OFF(TLBRPRMD), - CSR_OFF(MERRCTL), - CSR_OFF(MERRINFO1), - CSR_OFF(MERRINFO2), - CSR_OFF(MERRENTRY), - CSR_OFF(MERRERA), - CSR_OFF(MERRSAVE), CSR_OFF(CTAG), CSR_OFF_ARRAY(DMW, 0), CSR_OFF_ARRAY(DMW, 1), diff --git a/target/loongarch/disas.c b/target/loongarch/disas.c index 3249ab7ac6..928b8b94c2 100644 --- a/target/loongarch/disas.c +++ b/target/loongarch/disas.c @@ -98,12 +98,6 @@ static const char * const csr_names[] =3D { CSR_NAME(TLBRELO1), CSR_NAME(TLBREHI), CSR_NAME(TLBRPRMD), - CSR_NAME(MERRCTL), - CSR_NAME(MERRINFO1), - CSR_NAME(MERRINFO2), - CSR_NAME(MERRENTRY), - CSR_NAME(MERRERA), - CSR_NAME(MERRSAVE), CSR_NAME(CTAG), CSR_NAME(DMW(0)), CSR_NAME(DMW(1)), --=20 2.54.0 From nobody Sat Sep 26 20:03:11 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789613246168944.092592663047; Wed, 16 Sep 2026 19:47:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x7299-0006Mh-JU; Wed, 16 Sep 2026 22:46:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x7291-0006Kx-Rd for qemu-devel@nongnu.org; Wed, 16 Sep 2026 22:46:41 -0400 Received: from mail.loongson.cn ([114.242.206.163]) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x728z-00058f-M9 for qemu-devel@nongnu.org; Wed, 16 Sep 2026 22:46:39 -0400 Received: from loongson.cn (unknown [10.40.46.54]) by gateway (Coremail) with SMTP id _____8DxC9KJVKtqCeEMAA--.37653S3; Thu, 17 Sep 2026 10:46:33 +0800 (CST) Received: from fedora.loongson.cn (unknown [10.40.46.54]) by front1 (Coremail) with SMTP id qMiowJCx+c18VKtqA60hAA--.39456S5; Thu, 17 Sep 2026 10:46:32 +0800 (CST) From: Bibo Mao To: qemu-devel@nongnu.org Cc: Xianglai Li Subject: [PULL 03/11] target/loongarch: Rename function name constant_timer with timer Date: Thu, 17 Sep 2026 10:47:34 +0800 Message-ID: <20260917024742.200257-4-maobibo@loongson.cn> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260917024742.200257-1-maobibo@loongson.cn> References: <20260917024742.200257-1-maobibo@loongson.cn> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: qMiowJCx+c18VKtqA60hAA--.39456S5 X-CM-SenderInfo: xpdruxter6z05rqj20fqof0/ X-Coremail-Antispam: 1Uk129KBj93XoWxur4fGFWkXrykZF17Ar17XFc_yoW7Gr18pr Wxury7Kr48trZ8Wa4kJ3s8WF1DXr42ga42v3WftrWIkrs7Xrn7Ww18trsFgF45Aa48Wry2 qFn5Z3WUXF47ZwbCm3ZEXasCq-sJn29KB7ZKAUJUUUUU529EdanIXcx71UUUUU7KY7ZEXa sCq-sGcSsGvfJ3Ic02F40EFcxC0VAKzVAqx4xG6I80ebIjqfuFe4nvWSU5nxnvy29KBjDU 0xBIdaVrnRJUUUkYb4IE77IF4wAFF20E14v26r1j6r4UM7CY07I20VC2zVCF04k26cxKx2 IYs7xG6rWj6s0DM7CIcVAFz4kK6r1Y6r17M28lY4IEw2IIxxk0rwA2F7IY1VAKz4vEj48v e4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_Gr0_Xr1l84ACjcxK6xIIjxv20xvEc7CjxVAFwI 0_Gr0_Cr1l84ACjcxK6I8E87Iv67AKxVWxJVW8Jr1l84ACjcxK6I8E87Iv6xkF7I0E14v2 6r4UJVWxJr1le2I262IYc4CY6c8Ij28IcVAaY2xG8wAqjxCEc2xF0cIa020Ex4CE44I27w Aqx4xG64xvF2IEw4CE5I8CrVC2j2WlYx0E2Ix0cI8IcVAFwI0_JF0_Jw1lYx0Ex4A2jsIE 14v26r1j6r4UMcvjeVCFs4IE7xkEbVWUJVW8JwACjcxG0xvY0x0EwIxGrwCF04k20xvY0x 0EwIxGrwCFx2IqxVCFs4IE7xkEbVWUJVW8JwC20s026c02F40E14v26r1j6r18MI8I3I0E 7480Y4vE14v26r106r1rMI8E67AF67kF1VAFwI0_Jrv_JF1lIxkGc2Ij64vIr41lIxAIcV C0I7IYx2IY67AKxVWUJVWUCwCI42IY6xIIjxv20xvEc7CjxVAFwI0_Jr0_Gr1lIxAIcVCF 04k26cxKx2IYs7xG6r1j6r1xMIIF0xvEx4A2jsIE14v26r1j6r4UMIIF0xvEx4A2jsIEc7 CjxVAFwI0_Jr0_GrUvcSsGvfC2KfnxnUUI43ZEXa7IU82g43UUUUU== 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+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=114.242.206.163; envelope-from=maobibo@loongson.cn; helo=mail.loongson.cn X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1789613249724158500 Content-Type: text/plain; charset="utf-8" There is only one timer type on LoongArch, its frequency is fixed at 100MHZ. Here rename function name constant_timer_xxx with timer_xxx for simplity. Signed-off-by: Bibo Mao Reviewed-by: Xianglai Li --- target/loongarch/cpu.c | 2 +- target/loongarch/internals.h | 9 ++++----- target/loongarch/tcg/constant_timer.c | 9 ++++----- target/loongarch/tcg/csr_helper.c | 4 ++-- target/loongarch/tcg/op_helper.c | 2 +- 5 files changed, 12 insertions(+), 14 deletions(-) diff --git a/target/loongarch/cpu.c b/target/loongarch/cpu.c index 614d6a9542..ab37a9e2e6 100644 --- a/target/loongarch/cpu.c +++ b/target/loongarch/cpu.c @@ -731,7 +731,7 @@ static void loongarch_cpu_init(Object *obj) qdev_init_gpio_in(DEVICE(cpu), loongarch_cpu_set_irq, N_IRQS); #ifdef CONFIG_TCG timer_init_ns(&cpu->timer, QEMU_CLOCK_VIRTUAL, - &loongarch_constant_timer_cb, cpu); + &cpu_loongarch_timer_cb, cpu); #endif #endif } diff --git a/target/loongarch/internals.h b/target/loongarch/internals.h index 0b670f9466..8c5f095782 100644 --- a/target/loongarch/internals.h +++ b/target/loongarch/internals.h @@ -34,11 +34,10 @@ extern const VMStateDescription vmstate_loongarch_cpu; void loongarch_cpu_update_irq(LoongArchCPU *cpu, uint64_t old); void loongarch_cpu_set_irq(void *opaque, int irq, int level); =20 -void loongarch_constant_timer_cb(void *opaque); -uint64_t cpu_loongarch_get_constant_timer_counter(LoongArchCPU *cpu); -uint64_t cpu_loongarch_get_constant_timer_ticks(LoongArchCPU *cpu); -void cpu_loongarch_store_constant_timer_config(LoongArchCPU *cpu, - uint64_t value); +void cpu_loongarch_timer_cb(void *opaque); +uint64_t cpu_loongarch_get_timer_counter(LoongArchCPU *cpu); +uint64_t cpu_loongarch_get_timer_ticks(LoongArchCPU *cpu); +void cpu_loongarch_set_timer_config(LoongArchCPU *cpu, uint64_t value); bool loongarch_cpu_has_work(CPUState *cs); bool cpu_loongarch_hw_interrupts_pending(CPULoongArchState *env); #endif /* !CONFIG_USER_ONLY */ diff --git a/target/loongarch/tcg/constant_timer.c b/target/loongarch/tcg/c= onstant_timer.c index b91ad1de69..a25312b9ab 100644 --- a/target/loongarch/tcg/constant_timer.c +++ b/target/loongarch/tcg/constant_timer.c @@ -15,12 +15,12 @@ #define CONSTANT_TIMER_TICK_MASK 0xfffffffffffcUL #define CONSTANT_TIMER_ENABLE 0x1UL =20 -uint64_t cpu_loongarch_get_constant_timer_counter(LoongArchCPU *cpu) +uint64_t cpu_loongarch_get_timer_counter(LoongArchCPU *cpu) { return qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) / TIMER_PERIOD; } =20 -uint64_t cpu_loongarch_get_constant_timer_ticks(LoongArchCPU *cpu) +uint64_t cpu_loongarch_get_timer_ticks(LoongArchCPU *cpu) { CPULoongArchState *env =3D &cpu->env; CPUSysState *sys =3D env_sys(env); @@ -36,8 +36,7 @@ uint64_t cpu_loongarch_get_constant_timer_ticks(LoongArch= CPU *cpu) return sys->CSR_TVAL; } =20 -void cpu_loongarch_store_constant_timer_config(LoongArchCPU *cpu, - uint64_t value) +void cpu_loongarch_set_timer_config(LoongArchCPU *cpu, uint64_t value) { CPULoongArchState *env =3D &cpu->env; CPUSysState *sys =3D env_sys(env); @@ -55,7 +54,7 @@ void cpu_loongarch_store_constant_timer_config(LoongArchC= PU *cpu, } } =20 -void loongarch_constant_timer_cb(void *opaque) +void cpu_loongarch_timer_cb(void *opaque) { LoongArchCPU *cpu =3D opaque; CPULoongArchState *env =3D &cpu->env; diff --git a/target/loongarch/tcg/csr_helper.c b/target/loongarch/tcg/csr_h= elper.c index 155482efc6..b1a0b005e9 100644 --- a/target/loongarch/tcg/csr_helper.c +++ b/target/loongarch/tcg/csr_helper.c @@ -74,7 +74,7 @@ target_ulong helper_csrrd_tval(CPULoongArchState *env) { LoongArchCPU *cpu =3D env_archcpu(env); =20 - return cpu_loongarch_get_constant_timer_ticks(cpu); + return cpu_loongarch_get_timer_ticks(cpu); } =20 target_ulong helper_csrrd_msgir(CPULoongArchState *env) @@ -139,7 +139,7 @@ target_ulong helper_csrwr_tcfg(CPULoongArchState *env, = target_ulong val) CPUSysState *sys =3D env_sys(env); int64_t old_v =3D sys->CSR_TCFG; =20 - cpu_loongarch_store_constant_timer_config(cpu, val); + cpu_loongarch_set_timer_config(cpu, val); =20 return old_v; } diff --git a/target/loongarch/tcg/op_helper.c b/target/loongarch/tcg/op_hel= per.c index f41f0cb1e6..c090d5b12e 100644 --- a/target/loongarch/tcg/op_helper.c +++ b/target/loongarch/tcg/op_helper.c @@ -81,7 +81,7 @@ uint64_t helper_rdtime_d(CPULoongArchState *env) do_raise_exception(env, EXCCODE_IPE, GETPC()); } =20 - return cpu_loongarch_get_constant_timer_counter(cpu); + return cpu_loongarch_get_timer_counter(cpu); #endif } =20 --=20 2.54.0 From nobody Sat Sep 26 20:03:11 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789613287331529.1453165493919; Wed, 16 Sep 2026 19:48:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x729c-0006Qp-R7; Wed, 16 Sep 2026 22:47:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x7291-0006Kw-6Q for qemu-devel@nongnu.org; Wed, 16 Sep 2026 22:46:41 -0400 Received: from mail.loongson.cn ([114.242.206.163]) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x728z-00058s-7z for qemu-devel@nongnu.org; Wed, 16 Sep 2026 22:46:38 -0400 Received: from loongson.cn (unknown [10.40.46.54]) by gateway (Coremail) with SMTP id _____8CxQNGLVKtqC+EMAA--.37948S3; Thu, 17 Sep 2026 10:46:35 +0800 (CST) Received: from fedora.loongson.cn (unknown [10.40.46.54]) by front1 (Coremail) with SMTP id qMiowJBxKs6LVKtqCq0hAA--.39703S2; Thu, 17 Sep 2026 10:46:35 +0800 (CST) From: Bibo Mao To: qemu-devel@nongnu.org Cc: Xianglai Li Subject: [PULL 04/11] target/loongarch: Rename filename constant_timer.c with timer.c Date: Thu, 17 Sep 2026 10:47:35 +0800 Message-ID: <20260917024742.200257-5-maobibo@loongson.cn> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260917024742.200257-1-maobibo@loongson.cn> References: <20260917024742.200257-1-maobibo@loongson.cn> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: qMiowJBxKs6LVKtqCq0hAA--.39703S2 X-CM-SenderInfo: xpdruxter6z05rqj20fqof0/ X-Coremail-Antispam: 1Uk129KBj9xXoWruw4rGw47JF1UAFW3Gr4fCrX_yoWDZwc_WF 4xJF1kCrsrW3Wxt3yYvry5Jrs8Jr18KFnakFWUXF4xGas8Ka1YkrWDK3WkCFyYyr45ZFs8 A3ySqryruF1YyosvyTuYvTs0mTUanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUj1kv1TuYvT s0mT0YCTnIWjqI5I8CrVACY4xI64kE6c02F40Ex7xfYxn0WfASr-VFAUDa7-sFnT9fnUUI cSsGvfJTRUUUb7kYFVCjjxCrM7AC8VAFwI0_Jr0_Gr1l1xkIjI8I6I8E6xAIw20EY4v20x vaj40_Wr0E3s1l1IIY67AEw4v_JrI_Jryl8cAvFVAK0II2c7xJM28CjxkF64kEwVA0rcxS w2x7M28EF7xvwVC0I7IYx2IY67AKxVW8JVW5JwA2z4x0Y4vE2Ix0cI8IcVCY1x0267AKxV W8JVWxJwA2z4x0Y4vEx4A2jsIE14v26F4j6r4UJwA2z4x0Y4vEx4A2jsIEc7CjxVAFwI0_ Gr1j6F4UJwAS0I0E0xvYzxvE52x082IY62kv0487Mc804VCY07AIYIkI8VC2zVCFFI0UMc 02F40EFcxC0VAKzVAqx4xG6I80ewAv7VC0I7IYx2IY67AKxVWUAVWUtwAv7VC2z280aVAF wI0_Jr0_Gr1lOx8S6xCaFVCjc4AY6r1j6r4UM4x0Y48IcxkI7VAKI48JMxAIw28IcxkI7V AKI48JMxC20s026xCaFVCjc4AY6r1j6r4UMI8I3I0E5I8CrVAFwI0_Jr0_Jr4lx2IqxVCj r7xvwVAFwI0_JrI_JrWlx4CE17CEb7AF67AKxVWUXVWUAwCIc40Y0x0EwIxGrwCI42IY6x IIjxv20xvE14v26r1I6r4UMIIF0xvE2Ix0cI8IcVCY1x0267AKxVWUJVW8JwCI42IY6xAI w20EY4v20xvaj40_Jr0_JF4lIxAIcVC2z280aVAFwI0_Jr0_Gr1lIxAIcVC2z280aVCY1x 0267AKxVWUJVW8JbIYCTnIWIevJa73UjIFyTuYvjxU7MmhUUUUU 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+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=114.242.206.163; envelope-from=maobibo@loongson.cn; helo=mail.loongson.cn X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1789613288708158500 Content-Type: text/plain; charset="utf-8" For simplity rename filename constant_timer.c with timer.c on LoongArch. Signed-off-by: Bibo Mao Reviewed-by: Xianglai Li --- target/loongarch/tcg/meson.build | 2 +- target/loongarch/tcg/{constant_timer.c =3D> timer.c} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename target/loongarch/tcg/{constant_timer.c =3D> timer.c} (100%) diff --git a/target/loongarch/tcg/meson.build b/target/loongarch/tcg/meson.= build index b7adfe46f1..0b013875cc 100644 --- a/target/loongarch/tcg/meson.build +++ b/target/loongarch/tcg/meson.build @@ -13,7 +13,7 @@ loongarch_ss.add(files( )) =20 loongarch_system_ss.add(files( - 'constant_timer.c', + 'timer.c', 'csr_helper.c', 'iocsr_helper.c', 'tlb_helper.c', diff --git a/target/loongarch/tcg/constant_timer.c b/target/loongarch/tcg/t= imer.c similarity index 100% rename from target/loongarch/tcg/constant_timer.c rename to target/loongarch/tcg/timer.c --=20 2.54.0 From nobody Sat Sep 26 20:03:11 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789613329885318.64136189079466; Wed, 16 Sep 2026 19:48:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x7298-0006M7-1P; Wed, 16 Sep 2026 22:46:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x7292-0006L0-U0 for qemu-devel@nongnu.org; Wed, 16 Sep 2026 22:46:41 -0400 Received: from mail.loongson.cn ([114.242.206.163]) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x728z-00058u-QY for qemu-devel@nongnu.org; Wed, 16 Sep 2026 22:46:40 -0400 Received: from loongson.cn (unknown [10.40.46.54]) by gateway (Coremail) with SMTP id _____8DxjdKLVKtqDOEMAA--.37407S3; Thu, 17 Sep 2026 10:46:35 +0800 (CST) Received: from fedora.loongson.cn (unknown [10.40.46.54]) by front1 (Coremail) with SMTP id qMiowJBxKs6LVKtqCq0hAA--.39703S3; Thu, 17 Sep 2026 10:46:35 +0800 (CST) From: Bibo Mao To: qemu-devel@nongnu.org Cc: Xianglai Li Subject: [PULL 05/11] target/loongarch: Add CPUTimerState structure Date: Thu, 17 Sep 2026 10:47:36 +0800 Message-ID: <20260917024742.200257-6-maobibo@loongson.cn> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260917024742.200257-1-maobibo@loongson.cn> References: <20260917024742.200257-1-maobibo@loongson.cn> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: qMiowJBxKs6LVKtqCq0hAA--.39703S3 X-CM-SenderInfo: xpdruxter6z05rqj20fqof0/ X-Coremail-Antispam: 1Uk129KBj93XoWxKFyfWw4UCrWDGr45Gw1UXFc_yoWfXrW5pr W2kry7Kr18JrZrAwn3ta98WF1DXr17Ww129a1SyrWIkan7Jr4rua4kt39FgFWDu3yrWrW2 qFn5A3W5XFW7XacCm3ZEXasCq-sJn29KB7ZKAUJUUUUU529EdanIXcx71UUUUU7KY7ZEXa sCq-sGcSsGvfJ3Ic02F40EFcxC0VAKzVAqx4xG6I80ebIjqfuFe4nvWSU5nxnvy29KBjDU 0xBIdaVrnRJUUUkYb4IE77IF4wAFF20E14v26r1j6r4UM7CY07I20VC2zVCF04k26cxKx2 IYs7xG6rWj6s0DM7CIcVAFz4kK6r106r15M28lY4IEw2IIxxk0rwA2F7IY1VAKz4vEj48v e4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_Gr0_Xr1l84ACjcxK6xIIjxv20xvEc7CjxVAFwI 0_Gr0_Cr1l84ACjcxK6I8E87Iv67AKxVWxJVW8Jr1l84ACjcxK6I8E87Iv6xkF7I0E14v2 6r4UJVWxJr1le2I262IYc4CY6c8Ij28IcVAaY2xG8wAqjxCEc2xF0cIa020Ex4CE44I27w Aqx4xG64xvF2IEw4CE5I8CrVC2j2WlYx0E2Ix0cI8IcVAFwI0_JF0_Jw1lYx0Ex4A2jsIE 14v26r1j6r4UMcvjeVCFs4IE7xkEbVWUJVW8JwACjcxG0xvY0x0EwIxGrwCF04k20xvY0x 0EwIxGrwCFx2IqxVCFs4IE7xkEbVWUJVW8JwC20s026c02F40E14v26r1j6r18MI8I3I0E 7480Y4vE14v26r106r1rMI8E67AF67kF1VAFwI0_Jrv_JF1lIxkGc2Ij64vIr41lIxAIcV C0I7IYx2IY67AKxVWUCVW8JwCI42IY6xIIjxv20xvEc7CjxVAFwI0_Jr0_Gr1lIxAIcVCF 04k26cxKx2IYs7xG6r1j6r1xMIIF0xvEx4A2jsIE14v26r1j6r4UMIIF0xvEx4A2jsIEc7 CjxVAFwI0_Jr0_GrUvcSsGvfC2KfnxnUUI43ZEXa7IU8wNVDUUUUU== 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+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=114.242.206.163; envelope-from=maobibo@loongson.cn; helo=mail.loongson.cn X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1789613330834158500 Content-Type: text/plain; charset="utf-8" Structure CPUTimerState is added in structure CPUSysState, QEMUTimer and IRQ number is included, so it is easy to add another separate timer if LVZ feature is supported. Signed-off-by: Bibo Mao Reviewed-by: Xianglai Li --- target/loongarch/cpu.c | 11 +++++++++-- target/loongarch/cpu.h | 15 ++++++++++++++- target/loongarch/internals.h | 6 +++--- target/loongarch/tcg/csr_helper.c | 14 ++++++-------- target/loongarch/tcg/op_helper.c | 6 +++--- target/loongarch/tcg/timer.c | 27 ++++++++++++--------------- 6 files changed, 47 insertions(+), 32 deletions(-) diff --git a/target/loongarch/cpu.c b/target/loongarch/cpu.c index ab37a9e2e6..b8e95750bb 100644 --- a/target/loongarch/cpu.c +++ b/target/loongarch/cpu.c @@ -727,11 +727,18 @@ static void loongarch_cpu_init(Object *obj) { #ifndef CONFIG_USER_ONLY LoongArchCPU *cpu =3D LOONGARCH_CPU(obj); +#ifdef CONFIG_TCG + CPULoongArchState *env =3D &cpu->env; + CPUTimerState *timer; +#endif =20 qdev_init_gpio_in(DEVICE(cpu), loongarch_cpu_set_irq, N_IRQS); #ifdef CONFIG_TCG - timer_init_ns(&cpu->timer, QEMU_CLOCK_VIRTUAL, - &cpu_loongarch_timer_cb, cpu); + timer =3D env_timer(env); + timer->irq =3D IRQ_TIMER; + timer->cs =3D CPU(obj); + timer_init_ns(&timer->timer, QEMU_CLOCK_VIRTUAL, + &cpu_loongarch_timer_cb, timer); #endif #endif } diff --git a/target/loongarch/cpu.h b/target/loongarch/cpu.h index d83dcef6f8..c592f69885 100644 --- a/target/loongarch/cpu.h +++ b/target/loongarch/cpu.h @@ -315,6 +315,12 @@ typedef struct LoongArchBT { uint32_t ftop; } lbt_t; =20 +typedef struct CPUTimerState { + QEMUTimer timer; + int irq; + CPUState *cs; +} CPUTimerState; + #define CPU_VENDOR_LOONGSON "Loongson" #define CPU_MODEL_3A5000 "3A5000" #define CPU_MODEL_1C101 "1C101" @@ -384,6 +390,9 @@ typedef struct CPUSysState { uint64_t CSR_PRCFG1; uint64_t CSR_PRCFG2; uint64_t CSR_PRCFG3; +#ifdef CONFIG_TCG + CPUTimerState timer_state; +#endif } CPUSysState; =20 typedef struct CPUArchState { @@ -446,7 +455,6 @@ struct ArchCPU { CPUState parent_obj; =20 CPULoongArchState env; - QEMUTimer timer; uint32_t phy_id; OnOffAuto lbt; OnOffAuto pmu; @@ -504,6 +512,11 @@ static inline void set_sys_state(CPULoongArchState *en= v, CPUSysState *sys) env->sys_state =3D sys; } =20 +static inline CPUTimerState *env_timer(CPULoongArchState *env) +{ + return &env->sys_states[0].timer_state; +} + static inline bool is_la64(CPULoongArchState *env) { return FIELD_EX32(env->cpucfg[1], CPUCFG1, ARCH) =3D=3D CPUCFG1_ARCH_L= A64; diff --git a/target/loongarch/internals.h b/target/loongarch/internals.h index 8c5f095782..f9a0680fe0 100644 --- a/target/loongarch/internals.h +++ b/target/loongarch/internals.h @@ -35,9 +35,9 @@ void loongarch_cpu_update_irq(LoongArchCPU *cpu, uint64_t= old); void loongarch_cpu_set_irq(void *opaque, int irq, int level); =20 void cpu_loongarch_timer_cb(void *opaque); -uint64_t cpu_loongarch_get_timer_counter(LoongArchCPU *cpu); -uint64_t cpu_loongarch_get_timer_ticks(LoongArchCPU *cpu); -void cpu_loongarch_set_timer_config(LoongArchCPU *cpu, uint64_t value); +uint64_t cpu_loongarch_get_timer_counter(CPUTimerState *timer); +uint64_t cpu_loongarch_get_timer_ticks(CPUTimerState *timer); +void cpu_loongarch_set_timer_config(CPUTimerState *timer, uint64_t value); bool loongarch_cpu_has_work(CPUState *cs); bool cpu_loongarch_hw_interrupts_pending(CPULoongArchState *env); #endif /* !CONFIG_USER_ONLY */ diff --git a/target/loongarch/tcg/csr_helper.c b/target/loongarch/tcg/csr_h= elper.c index b1a0b005e9..88656b5344 100644 --- a/target/loongarch/tcg/csr_helper.c +++ b/target/loongarch/tcg/csr_helper.c @@ -72,9 +72,7 @@ target_ulong helper_csrrd_cpuid(CPULoongArchState *env) =20 target_ulong helper_csrrd_tval(CPULoongArchState *env) { - LoongArchCPU *cpu =3D env_archcpu(env); - - return cpu_loongarch_get_timer_ticks(cpu); + return cpu_loongarch_get_timer_ticks(env_timer(env)); } =20 target_ulong helper_csrrd_msgir(CPULoongArchState *env) @@ -135,23 +133,23 @@ target_ulong helper_csrwr_asid(CPULoongArchState *env= , target_ulong val) =20 target_ulong helper_csrwr_tcfg(CPULoongArchState *env, target_ulong val) { - LoongArchCPU *cpu =3D env_archcpu(env); - CPUSysState *sys =3D env_sys(env); + CPUTimerState *timer =3D env_timer(env); + CPUSysState *sys =3D container_of(timer, CPUSysState, timer_state); int64_t old_v =3D sys->CSR_TCFG; =20 - cpu_loongarch_set_timer_config(cpu, val); + cpu_loongarch_set_timer_config(timer, val); =20 return old_v; } =20 target_ulong helper_csrwr_ticlr(CPULoongArchState *env, target_ulong val) { - LoongArchCPU *cpu =3D env_archcpu(env); + CPUTimerState *timer =3D env_timer(env); int64_t old_v =3D 0; =20 if (val & 0x1) { bql_lock(); - loongarch_cpu_set_irq(cpu, IRQ_TIMER, 0); + loongarch_cpu_set_irq(LOONGARCH_CPU(timer->cs), timer->irq, 0); bql_unlock(); } return old_v; diff --git a/target/loongarch/tcg/op_helper.c b/target/loongarch/tcg/op_hel= per.c index c090d5b12e..f98fe4d4a1 100644 --- a/target/loongarch/tcg/op_helper.c +++ b/target/loongarch/tcg/op_helper.c @@ -73,15 +73,15 @@ uint64_t helper_rdtime_d(CPULoongArchState *env) return cpu_get_host_ticks(); #else uint64_t plv; - LoongArchCPU *cpu =3D env_archcpu(env); - CPUSysState *sys =3D env_sys(env); + CPUTimerState *timer =3D env_timer(env); + CPUSysState *sys =3D container_of(timer, CPUSysState, timer_state); =20 plv =3D FIELD_EX64(sys->CSR_CRMD, CSR_CRMD, PLV); if (extract64(sys->CSR_MISC, R_CSR_MISC_DRDTL_SHIFT + plv, 1)) { do_raise_exception(env, EXCCODE_IPE, GETPC()); } =20 - return cpu_loongarch_get_timer_counter(cpu); + return cpu_loongarch_get_timer_counter(timer); #endif } =20 diff --git a/target/loongarch/tcg/timer.c b/target/loongarch/tcg/timer.c index a25312b9ab..6a96dfd429 100644 --- a/target/loongarch/tcg/timer.c +++ b/target/loongarch/tcg/timer.c @@ -15,60 +15,57 @@ #define CONSTANT_TIMER_TICK_MASK 0xfffffffffffcUL #define CONSTANT_TIMER_ENABLE 0x1UL =20 -uint64_t cpu_loongarch_get_timer_counter(LoongArchCPU *cpu) +uint64_t cpu_loongarch_get_timer_counter(CPUTimerState *timer) { return qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) / TIMER_PERIOD; } =20 -uint64_t cpu_loongarch_get_timer_ticks(LoongArchCPU *cpu) +uint64_t cpu_loongarch_get_timer_ticks(CPUTimerState *timer) { - CPULoongArchState *env =3D &cpu->env; - CPUSysState *sys =3D env_sys(env); + CPUSysState *sys =3D container_of(timer, CPUSysState, timer_state); uint64_t now, expire; =20 if ((sys->CSR_TCFG & CONSTANT_TIMER_ENABLE) && (sys->CSR_TVAL < sys->CSR_TCFG)) { now =3D qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL); - expire =3D timer_expire_time_ns(&cpu->timer); + expire =3D timer_expire_time_ns(&timer->timer); sys->CSR_TVAL =3D (expire - now) / TIMER_PERIOD; } =20 return sys->CSR_TVAL; } =20 -void cpu_loongarch_set_timer_config(LoongArchCPU *cpu, uint64_t value) +void cpu_loongarch_set_timer_config(CPUTimerState *timer, uint64_t value) { - CPULoongArchState *env =3D &cpu->env; - CPUSysState *sys =3D env_sys(env); + CPUSysState *sys =3D container_of(timer, CPUSysState, timer_state); uint64_t now, next; =20 sys->CSR_TCFG =3D value; if (value & CONSTANT_TIMER_ENABLE) { now =3D qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL); next =3D now + (value & CONSTANT_TIMER_TICK_MASK) * TIMER_PERIOD; - timer_mod(&cpu->timer, next); + timer_mod(&timer->timer, next); sys->CSR_TVAL =3D sys->CSR_TCFG & CONSTANT_TIMER_TICK_MASK; } else { - timer_del(&cpu->timer); + timer_del(&timer->timer); sys->CSR_TVAL =3D 0; } } =20 void cpu_loongarch_timer_cb(void *opaque) { - LoongArchCPU *cpu =3D opaque; - CPULoongArchState *env =3D &cpu->env; - CPUSysState *sys =3D env_sys(env); + CPUTimerState *timer =3D opaque; + CPUSysState *sys =3D container_of(timer, CPUSysState, timer_state); uint64_t now, next; =20 if (FIELD_EX64(sys->CSR_TCFG, CSR_TCFG, PERIODIC)) { now =3D qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL); next =3D now + (sys->CSR_TCFG & CONSTANT_TIMER_TICK_MASK) * TIMER_= PERIOD; - timer_mod(&cpu->timer, next); + timer_mod(&timer->timer, next); sys->CSR_TVAL =3D sys->CSR_TCFG & CONSTANT_TIMER_TICK_MASK; } else { sys->CSR_TVAL =3D CONSTANT_TIMER_TICK_MASK; } =20 - loongarch_cpu_set_irq(opaque, IRQ_TIMER, 1); + loongarch_cpu_set_irq(LOONGARCH_CPU(timer->cs), timer->irq, 1); } --=20 2.54.0 From nobody Sat Sep 26 20:03:11 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789613289197790.1292180290092; Wed, 16 Sep 2026 19:48:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x7297-0006Ly-TJ; Wed, 16 Sep 2026 22:46:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x7293-0006L3-Bk for qemu-devel@nongnu.org; Wed, 16 Sep 2026 22:46:41 -0400 Received: from mail.loongson.cn ([114.242.206.163]) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x7291-00059C-Gr for qemu-devel@nongnu.org; Wed, 16 Sep 2026 22:46:41 -0400 Received: from loongson.cn (unknown [10.40.46.54]) by gateway (Coremail) with SMTP id _____8DxTtONVKtqEOEMAA--.37253S3; Thu, 17 Sep 2026 10:46:37 +0800 (CST) Received: from fedora.loongson.cn (unknown [10.40.46.54]) by front1 (Coremail) with SMTP id qMiowJBxKs6LVKtqCq0hAA--.39703S4; Thu, 17 Sep 2026 10:46:35 +0800 (CST) From: Bibo Mao To: qemu-devel@nongnu.org Cc: Song Gao <17746591750@163.com> Subject: [PULL 06/11] hw/intc/loongarch_dintc: Check irqchip in kernel mode firstly Date: Thu, 17 Sep 2026 10:47:37 +0800 Message-ID: <20260917024742.200257-7-maobibo@loongson.cn> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260917024742.200257-1-maobibo@loongson.cn> References: <20260917024742.200257-1-maobibo@loongson.cn> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: qMiowJBxKs6LVKtqCq0hAA--.39703S4 X-CM-SenderInfo: xpdruxter6z05rqj20fqof0/ X-Coremail-Antispam: 1Uk129KBj93XoW7Cr1xJrW5Jw17ury3trW8GrX_yoW8Xry3pr W7C390gF4rZ3s8Jrs3ta48Zr15Crsa9342qFsIkFyxCF48Xr1DWr1xJr17XFyUK34Uuayj vr1rG3W5uF15AFcCm3ZEXasCq-sJn29KB7ZKAUJUUUU8529EdanIXcx71UUUUU7KY7ZEXa sCq-sGcSsGvfJ3Ic02F40EFcxC0VAKzVAqx4xG6I80ebIjqfuFe4nvWSU5nxnvy29KBjDU 0xBIdaVrnRJUUUkYb4IE77IF4wAFF20E14v26r1j6r4UM7CY07I20VC2zVCF04k26cxKx2 IYs7xG6rWj6s0DM7CIcVAFz4kK6r106r15M28lY4IEw2IIxxk0rwA2F7IY1VAKz4vEj48v e4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_Gr0_Xr1l84ACjcxK6xIIjxv20xvEc7CjxVAFwI 0_Gr0_Cr1l84ACjcxK6I8E87Iv67AKxVWxJVW8Jr1l84ACjcxK6I8E87Iv6xkF7I0E14v2 6r4UJVWxJr1le2I262IYc4CY6c8Ij28IcVAaY2xG8wAqjxCEc2xF0cIa020Ex4CE44I27w Aqx4xG64xvF2IEw4CE5I8CrVC2j2WlYx0E2Ix0cI8IcVAFwI0_Jw0_WrylYx0Ex4A2jsIE 14v26r1j6r4UMcvjeVCFs4IE7xkEbVWUJVW8JwACjcxG0xvY0x0EwIxGrwCF04k20xvY0x 0EwIxGrwCFx2IqxVCFs4IE7xkEbVWUJVW8JwC20s026c02F40E14v26r1j6r18MI8I3I0E 7480Y4vE14v26r106r1rMI8E67AF67kF1VAFwI0_Jrv_JF1lIxkGc2Ij64vIr41lIxAIcV C0I7IYx2IY67AKxVWUCVW8JwCI42IY6xIIjxv20xvEc7CjxVAFwI0_Jr0_Gr1lIxAIcVCF 04k26cxKx2IYs7xG6r1j6r1xMIIF0xvEx4A2jsIE14v26r1j6r4UMIIF0xvEx4A2jsIEc7 CjxVAFwI0_Jr0_GrUvcSsGvfC2KfnxnUUI43ZEXa7IU8xOz3UUUUU== 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+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=114.242.206.163; envelope-from=maobibo@loongson.cn; helo=mail.loongson.cn X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1789613290572158500 Content-Type: text/plain; charset="utf-8" when inject MSI interrupt, check irqchip in kernel mode at first and then check validity of MSI message in TCG mode, since irqchip in kernel is used at most popular. Signed-off-by: Bibo Mao Reviewed-by: Song Gao <17746591750@163.com> --- hw/intc/loongarch_dintc.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/hw/intc/loongarch_dintc.c b/hw/intc/loongarch_dintc.c index 1bedfbce43..674f5d1357 100644 --- a/hw/intc/loongarch_dintc.c +++ b/hw/intc/loongarch_dintc.c @@ -72,6 +72,15 @@ static void loongarch_dintc_mem_write(void *opaque, hwad= dr addr, DINTCCore *core; CPUState *cs; =20 + if (kvm_irqchip_in_kernel()) { + MSIMessage msg; + + msg.address =3D msg_addr; + msg.data =3D val; + kvm_irqchip_send_msi(kvm_state, msg); + return; + } + arch_id =3D FIELD_EX64(msg_addr, MSG_ADDR, CPU_NUM); core =3D loongarch_dintc_cpu_by_arch_id(s, arch_id); if (!core || !core->cpu) { @@ -83,16 +92,6 @@ static void loongarch_dintc_mem_write(void *opaque, hwad= dr addr, cpu_num =3D core - s->cpu; cs =3D core->cpu; irq_num =3D FIELD_EX64(msg_addr, MSG_ADDR, IRQ_NUM); - - if (kvm_irqchip_in_kernel()) { - MSIMessage msg; - - msg.address =3D msg_addr; - msg.data =3D val; - kvm_irqchip_send_msi(kvm_state, msg); - return; - } - async_run_on_cpu(cs, do_set_vcpu_dintc_irq, RUN_ON_CPU_HOST_INT(irq_num)); qemu_set_irq(s->cpu[cpu_num].parent_irq, 1); --=20 2.54.0 From nobody Sat Sep 26 20:03:11 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789613294185230.89340964420137; Wed, 16 Sep 2026 19:48:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x729D-0006Np-IO; Wed, 16 Sep 2026 22:46:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x7295-0006Lx-9c for qemu-devel@nongnu.org; Wed, 16 Sep 2026 22:46:45 -0400 Received: from mail.loongson.cn ([114.242.206.163]) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x7293-00059S-CG for qemu-devel@nongnu.org; Wed, 16 Sep 2026 22:46:43 -0400 Received: from loongson.cn (unknown [10.40.46.54]) by gateway (Coremail) with SMTP id _____8AxS_CPVKtqEuEMAA--.37832S3; Thu, 17 Sep 2026 10:46:39 +0800 (CST) Received: from fedora.loongson.cn (unknown [10.40.46.54]) by front1 (Coremail) with SMTP id qMiowJBxKs6LVKtqCq0hAA--.39703S5; Thu, 17 Sep 2026 10:46:37 +0800 (CST) From: Bibo Mao To: qemu-devel@nongnu.org Cc: Song Gao <17746591750@163.com> Subject: [PULL 07/11] target/loongarch/kvm: Check LoongArch Instruction Set version 1.1 Date: Thu, 17 Sep 2026 10:47:38 +0800 Message-ID: <20260917024742.200257-8-maobibo@loongson.cn> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260917024742.200257-1-maobibo@loongson.cn> References: <20260917024742.200257-1-maobibo@loongson.cn> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: qMiowJBxKs6LVKtqCq0hAA--.39703S5 X-CM-SenderInfo: xpdruxter6z05rqj20fqof0/ X-Coremail-Antispam: 1Uk129KBj93XoWxWry7ZF18ury7AFy3Gr4DGFX_yoW5AF48pr 4UCrs0grWrtFZ7Cwn3JrWqvrs8ZF48K3yIyFyxArySvwn8JrnrZFyIya1DZFn8G34rZrs3 WF4kAFZ8uF1DAwcCm3ZEXasCq-sJn29KB7ZKAUJUUUU8529EdanIXcx71UUUUU7KY7ZEXa sCq-sGcSsGvfJ3Ic02F40EFcxC0VAKzVAqx4xG6I80ebIjqfuFe4nvWSU5nxnvy29KBjDU 0xBIdaVrnRJUUUkFb4IE77IF4wAFF20E14v26r1j6r4UM7CY07I20VC2zVCF04k26cxKx2 IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M28lY4IEw2IIxxk0rwA2F7IY1VAKz4vEj48v e4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_Gr0_Xr1l84ACjcxK6xIIjxv20xvEc7CjxVAFwI 0_Gr0_Cr1l84ACjcxK6I8E87Iv67AKxVWxJVW8Jr1l84ACjcxK6I8E87Iv6xkF7I0E14v2 6r4UJVWxJr1le2I262IYc4CY6c8Ij28IcVAaY2xG8wAqjxCEc2xF0cIa020Ex4CE44I27w Aqx4xG64xvF2IEw4CE5I8CrVC2j2WlYx0E2Ix0cI8IcVAFwI0_Jw0_WrylYx0Ex4A2jsIE 14v26r4j6F4UMcvjeVCFs4IE7xkEbVWUJVW8JwACjcxG0xvY0x0EwIxGrwCF04k20xvY0x 0EwIxGrwCFx2IqxVCFs4IE7xkEbVWUJVW8JwC20s026c02F40E14v26r1j6r18MI8I3I0E 7480Y4vE14v26r106r1rMI8E67AF67kF1VAFwI0_Jrv_JF1lIxkGc2Ij64vIr41lIxAIcV C0I7IYx2IY67AKxVW8JVW5JwCI42IY6xIIjxv20xvEc7CjxVAFwI0_Gr0_Cr1lIxAIcVCF 04k26cxKx2IYs7xG6r1j6r1xMIIF0xvEx4A2jsIE14v26r4j6F4UMIIF0xvEx4A2jsIEc7 CjxVAFwI0_Gr0_Gr1UYxBIdaVFxhVjvjDU0xZFpf9x07j8CztUUUUU= 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+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=114.242.206.163; envelope-from=maobibo@loongson.cn; helo=mail.loongson.cn X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1789613294637158500 Content-Type: text/plain; charset="utf-8" Besides PTW and DINTC features, there are some small features about LoongArch Instruction Set version 1.1, mainly they are about atomic instruction enhancement. For these features, there are no special property selection, and they are enabled from CPU type selection such as host or max CPU type. Here adds these features if host supports and they are enabled from the specified CPU type. Signed-off-by: Bibo Mao Reviewed-by: Song Gao <17746591750@163.com> --- target/loongarch/kvm/kvm.c | 65 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/target/loongarch/kvm/kvm.c b/target/loongarch/kvm/kvm.c index 15082a01f8..0626c553d5 100644 --- a/target/loongarch/kvm/kvm.c +++ b/target/loongarch/kvm/kvm.c @@ -1234,6 +1234,65 @@ static int kvm_cpu_check_msgint(CPUState *cs, Error = **errp) return 0; } =20 +/* Check LoongArch Instruction Set 1.1 others feature */ +static int kvm_cpu_check_misc_v1_1(CPUState *cs, Error **errp) +{ + int ret; + uint64_t val, field; + struct kvm_device_attr attr; + LoongArchCPU *cpu =3D LOONGARCH_CPU(cs); + uint32_t data; + + val =3D 0; + attr.group =3D KVM_LOONGARCH_VCPU_CPUCFG; + attr.attr =3D 2; + attr.addr =3D (uint64_t)&val; + ret =3D kvm_vcpu_ioctl(cs, KVM_HAS_DEVICE_ATTR, &attr); + if (!ret) { + ret =3D kvm_vcpu_ioctl(cs, KVM_GET_DEVICE_ATTR, &attr); + } + + /* Disable LA 1.1 features if host cpucfg2 get not supported */ + if (ret) { + val =3D 0; + } + + data =3D cpu->env.cpucfg[2]; + val &=3D data; + field =3D FIELD_EX32((uint32_t)val, CPUCFG2, FRECIPE); + data =3D FIELD_DP32(data, CPUCFG2, FRECIPE, field); + field =3D FIELD_EX32((uint32_t)val, CPUCFG2, LAM_BH); + data =3D FIELD_DP32(data, CPUCFG2, LAM_BH, field); + field =3D FIELD_EX32((uint32_t)val, CPUCFG2, LAMCAS); + data =3D FIELD_DP32(data, CPUCFG2, LAMCAS, field); + field =3D FIELD_EX32((uint32_t)val, CPUCFG2, LLACQ_SCREL); + data =3D FIELD_DP32(data, CPUCFG2, LLACQ_SCREL, field); + field =3D FIELD_EX32((uint32_t)val, CPUCFG2, SCQ); + data =3D FIELD_DP32(data, CPUCFG2, SCQ, field); + cpu->env.cpucfg[2] =3D data; + + val =3D 0; + attr.group =3D KVM_LOONGARCH_VCPU_CPUCFG; + attr.attr =3D 3; + attr.addr =3D (uint64_t)&val; + ret =3D kvm_vcpu_ioctl(cs, KVM_HAS_DEVICE_ATTR, &attr); + if (!ret) { + ret =3D kvm_vcpu_ioctl(cs, KVM_GET_DEVICE_ATTR, &attr); + } + + /* Disable LA 1.1 features if host cpucfg3 get not supported */ + if (ret) { + val =3D 0; + } + + data =3D cpu->env.cpucfg[3]; + val &=3D data; + field =3D FIELD_EX32((uint32_t)val, CPUCFG3, DBAR_HINTS); + data =3D FIELD_DP32(data, CPUCFG3, DBAR_HINTS, field); + cpu->env.cpucfg[3] =3D data; + return 0; +} + int kvm_arch_pre_create_vcpu(CPUState *cpu, Error **errp) { return 0; @@ -1295,6 +1354,12 @@ int kvm_arch_init_vcpu(CPUState *cs) return ret; } =20 + ret =3D kvm_cpu_check_misc_v1_1(cs, &local_err); + if (ret < 0) { + error_report_err(local_err); + return ret; + } + return 0; } =20 --=20 2.54.0 From nobody Sat Sep 26 20:03:11 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789613255457343.33283362307816; Wed, 16 Sep 2026 19:47:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x729a-0006QD-L3; Wed, 16 Sep 2026 22:47:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x7298-0006M8-1H for qemu-devel@nongnu.org; Wed, 16 Sep 2026 22:46:46 -0400 Received: from mail.loongson.cn ([114.242.206.163]) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x7296-00059y-4g for qemu-devel@nongnu.org; Wed, 16 Sep 2026 22:46:45 -0400 Received: from loongson.cn (unknown [10.40.46.54]) by gateway (Coremail) with SMTP id _____8CxQNGSVKtqFOEMAA--.37951S3; Thu, 17 Sep 2026 10:46:42 +0800 (CST) Received: from fedora.loongson.cn (unknown [10.40.46.54]) by front1 (Coremail) with SMTP id qMiowJCxe86QVKtqDK0hAA--.39741S2; Thu, 17 Sep 2026 10:46:40 +0800 (CST) From: Bibo Mao To: qemu-devel@nongnu.org Cc: Song Gao <17746591750@163.com> Subject: [PULL 08/11] target/loongarch: Enable LoongArch Instruction Set version 1.1 Date: Thu, 17 Sep 2026 10:47:39 +0800 Message-ID: <20260917024742.200257-9-maobibo@loongson.cn> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260917024742.200257-1-maobibo@loongson.cn> References: <20260917024742.200257-1-maobibo@loongson.cn> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: qMiowJCxe86QVKtqDK0hAA--.39741S2 X-CM-SenderInfo: xpdruxter6z05rqj20fqof0/ X-Coremail-Antispam: 1Uk129KBj93XoW7Kry7Wr4DArW8Cr1DGF4xKrX_yoW8uw18pr ZrArsIg39rtF4xAwnrJayYvrn5XF4xGw42yF4xtrW7Zw4DXFn7Xa4kJa10yF9Fy3s5AF4I 9FW8AFW5GFs8AFcCm3ZEXasCq-sJn29KB7ZKAUJUUUU8529EdanIXcx71UUUUU7KY7ZEXa sCq-sGcSsGvfJ3Ic02F40EFcxC0VAKzVAqx4xG6I80ebIjqfuFe4nvWSU5nxnvy29KBjDU 0xBIdaVrnRJUUUkFb4IE77IF4wAFF20E14v26r1j6r4UM7CY07I20VC2zVCF04k26cxKx2 IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M28lY4IEw2IIxxk0rwA2F7IY1VAKz4vEj48v e4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_Gr0_Xr1l84ACjcxK6xIIjxv20xvEc7CjxVAFwI 0_Gr0_Cr1l84ACjcxK6I8E87Iv67AKxVWxJVW8Jr1l84ACjcxK6I8E87Iv6xkF7I0E14v2 6r4UJVWxJr1le2I262IYc4CY6c8Ij28IcVAaY2xG8wAqjxCEc2xF0cIa020Ex4CE44I27w Aqx4xG64xvF2IEw4CE5I8CrVC2j2WlYx0E2Ix0cI8IcVAFwI0_Jw0_WrylYx0Ex4A2jsIE 14v26r4j6F4UMcvjeVCFs4IE7xkEbVWUJVW8JwACjcxG0xvY0x0EwIxGrwCF04k20xvY0x 0EwIxGrwCFx2IqxVCFs4IE7xkEbVWUJVW8JwC20s026c02F40E14v26r1j6r18MI8I3I0E 7480Y4vE14v26r106r1rMI8E67AF67kF1VAFwI0_Jrv_JF1lIxkGc2Ij64vIr41lIxAIcV C0I7IYx2IY67AKxVW8JVW5JwCI42IY6xIIjxv20xvEc7CjxVAFwI0_Gr0_Cr1lIxAIcVCF 04k26cxKx2IYs7xG6r1j6r1xMIIF0xvEx4A2jsIE14v26r4j6F4UMIIF0xvEx4A2jsIEc7 CjxVAFwI0_Gr0_Gr1UYxBIdaVFxhVjvjDU0xZFpf9x07j8CztUUUUU= 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+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=114.242.206.163; envelope-from=maobibo@loongson.cn; helo=mail.loongson.cn X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1789613256589158500 Content-Type: text/plain; charset="utf-8" Now LoongArch Instruction Set version 1.1 is enabled in TCG mode, disabled in KVM mode. After LoongArch Instruction Set version 1.1 detection is added in KVM mode, it can be enabled with max cpu type. Signed-off-by: Bibo Mao Reviewed-by: Song Gao <17746591750@163.com> --- target/loongarch/cpu.c | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/target/loongarch/cpu.c b/target/loongarch/cpu.c index b8e95750bb..2d58277549 100644 --- a/target/loongarch/cpu.c +++ b/target/loongarch/cpu.c @@ -467,6 +467,8 @@ static void loongarch_la132_initfn(Object *obj) static void loongarch_max_initfn(Object *obj) { LoongArchCPU *cpu =3D LOONGARCH_CPU(obj); + uint32_t data; + /* '-cpu max': use it for max supported CPU features */ loongarch_la464_initfn(obj); =20 @@ -474,20 +476,25 @@ static void loongarch_max_initfn(Object *obj) if (kvm_enabled()){ cpu->msgint=3DON_OFF_AUTO_OFF; } + + /* Enable LA v1.1 instructions */ + data =3D cpu->env.cpucfg[2]; + data =3D FIELD_DP32(data, CPUCFG2, FRECIPE, 1); + data =3D FIELD_DP32(data, CPUCFG2, LAM_BH, 1); + data =3D FIELD_DP32(data, CPUCFG2, LAMCAS, 1); + data =3D FIELD_DP32(data, CPUCFG2, LLACQ_SCREL, 1); + data =3D FIELD_DP32(data, CPUCFG2, SCQ, 1); + cpu->env.cpucfg[2] =3D data; + + data =3D cpu->env.cpucfg[3]; + data =3D FIELD_DP32(data, CPUCFG3, DBAR_HINTS, 1); + cpu->env.cpucfg[3] =3D data; + if (tcg_enabled()) { - uint32_t data =3D cpu->env.cpucfg[2]; + data =3D cpu->env.cpucfg[2]; data =3D FIELD_DP32(data, CPUCFG2, HPTW, 1); - /* Enable LA v1.1 instructions */ - data =3D FIELD_DP32(data, CPUCFG2, FRECIPE, 1); - data =3D FIELD_DP32(data, CPUCFG2, LAM_BH, 1); - data =3D FIELD_DP32(data, CPUCFG2, LAMCAS, 1); - data =3D FIELD_DP32(data, CPUCFG2, LLACQ_SCREL, 1); - data =3D FIELD_DP32(data, CPUCFG2, SCQ, 1); cpu->env.cpucfg[2] =3D data; =20 - data =3D cpu->env.cpucfg[3]; - data =3D FIELD_DP32(data, CPUCFG3, DBAR_HINTS, 1); - cpu->env.cpucfg[3] =3D data; cpu->env.cpucfg[1] =3D FIELD_DP32(cpu->env.cpucfg[1], CPUCFG1, MSG_INT, = 1); cpu->msgint =3D ON_OFF_AUTO_AUTO; } --=20 2.54.0 From nobody Sat Sep 26 20:03:11 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789613347154673.6712914371943; Wed, 16 Sep 2026 19:49:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x729Y-0006Pw-Ha; Wed, 16 Sep 2026 22:47:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x7298-0006MA-63 for qemu-devel@nongnu.org; Wed, 16 Sep 2026 22:46:46 -0400 Received: from mail.loongson.cn ([114.242.206.163]) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x7296-0005A5-EY for qemu-devel@nongnu.org; Wed, 16 Sep 2026 22:46:45 -0400 Received: from loongson.cn (unknown [10.40.46.54]) by gateway (Coremail) with SMTP id _____8CxPtOSVKtqFeEMAA--.37412S3; Thu, 17 Sep 2026 10:46:42 +0800 (CST) Received: from fedora.loongson.cn (unknown [10.40.46.54]) by front1 (Coremail) with SMTP id qMiowJCxe86QVKtqDK0hAA--.39741S3; Thu, 17 Sep 2026 10:46:42 +0800 (CST) From: Bibo Mao To: qemu-devel@nongnu.org Cc: Song Gao <17746591750@163.com> Subject: [PULL 09/11] target/loongarch: Set msgint property with auto detected Date: Thu, 17 Sep 2026 10:47:40 +0800 Message-ID: <20260917024742.200257-10-maobibo@loongson.cn> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260917024742.200257-1-maobibo@loongson.cn> References: <20260917024742.200257-1-maobibo@loongson.cn> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: qMiowJCxe86QVKtqDK0hAA--.39741S3 X-CM-SenderInfo: xpdruxter6z05rqj20fqof0/ X-Coremail-Antispam: 1Uk129KBj9xXoWrKw4fXFWxWw18uryxAFykXrc_yoWkKFg_Xa 47tasagF1DCas8Kr429r95J34rCry8GFnakF4DWF1fAr1UAF15Zr409rWDA3ZFqw4UZF15 urW3A34rCw1jyosvyTuYvTs0mTUanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUj1kv1TuYvT s0mT0YCTnIWjqI5I8CrVACY4xI64kE6c02F40Ex7xfYxn0WfASr-VFAUDa7-sFnT9fnUUI cSsGvfJTRUUUb7AYFVCjjxCrM7AC8VAFwI0_Jr0_Gr1l1xkIjI8I6I8E6xAIw20EY4v20x vaj40_Wr0E3s1l1IIY67AEw4v_Jr0_Jr4l8cAvFVAK0II2c7xJM28CjxkF64kEwVA0rcxS w2x7M28EF7xvwVC0I7IYx2IY67AKxVW8JVW5JwA2z4x0Y4vE2Ix0cI8IcVCY1x0267AKxV W8JVWxJwA2z4x0Y4vEx4A2jsIE14v26F4j6r4UJwA2z4x0Y4vEx4A2jsIEc7CjxVAFwI0_ Gr1j6F4UJwAS0I0E0xvYzxvE52x082IY62kv0487Mc804VCY07AIYIkI8VC2zVCFFI0UMc 02F40EFcxC0VAKzVAqx4xG6I80ewAv7VC0I7IYx2IY67AKxVWUtVWrXwAv7VC2z280aVAF wI0_Gr0_Cr1lOx8S6xCaFVCjc4AY6r1j6r4UM4x0Y48IcxkI7VAKI48JMxAIw28IcxkI7V AKI48JMxC20s026xCaFVCjc4AY6r1j6r4UMI8I3I0E5I8CrVAFwI0_Jr0_Jr4lx2IqxVCj r7xvwVAFwI0_JrI_JrWlx4CE17CEb7AF67AKxVWUXVWUAwCIc40Y0x0EwIxGrwCI42IY6x IIjxv20xvE14v26r4j6ryUMIIF0xvE2Ix0cI8IcVCY1x0267AKxVW8JVWxJwCI42IY6xAI w20EY4v20xvaj40_Jr0_JF4lIxAIcVC2z280aVAFwI0_Gr0_Cr1lIxAIcVC2z280aVCY1x 0267AKxVW8JVW8JrUvcSsGvfC2KfnxnUUI43ZEXa7IU84xRDUUUUU== 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+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=114.242.206.163; envelope-from=maobibo@loongson.cn; helo=mail.loongson.cn X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1789613348764158500 Content-Type: text/plain; charset="utf-8" Linux kernel and KVM has supported msgint irqchip, set msgint property with value ON_OFF_AUTO_AUTO with max CPU type in both KVM and TCG mode. Signed-off-by: Bibo Mao Reviewed-by: Song Gao <17746591750@163.com> --- target/loongarch/cpu.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/target/loongarch/cpu.c b/target/loongarch/cpu.c index 2d58277549..99499034ed 100644 --- a/target/loongarch/cpu.c +++ b/target/loongarch/cpu.c @@ -473,9 +473,8 @@ static void loongarch_max_initfn(Object *obj) loongarch_la464_initfn(obj); =20 cpu->ptw =3D ON_OFF_AUTO_AUTO; - if (kvm_enabled()){ - cpu->msgint=3DON_OFF_AUTO_OFF; - } + cpu->env.cpucfg[1] =3D FIELD_DP32(cpu->env.cpucfg[1], CPUCFG1, MSG_INT= , 1); + cpu->msgint =3D ON_OFF_AUTO_AUTO; =20 /* Enable LA v1.1 instructions */ data =3D cpu->env.cpucfg[2]; @@ -494,9 +493,6 @@ static void loongarch_max_initfn(Object *obj) data =3D cpu->env.cpucfg[2]; data =3D FIELD_DP32(data, CPUCFG2, HPTW, 1); cpu->env.cpucfg[2] =3D data; - - cpu->env.cpucfg[1] =3D FIELD_DP32(cpu->env.cpucfg[1], CPUCFG1, MSG_INT, = 1); - cpu->msgint =3D ON_OFF_AUTO_AUTO; } } =20 --=20 2.54.0 From nobody Sat Sep 26 20:03:11 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178961328275785.60978086559749; Wed, 16 Sep 2026 19:48:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x729Y-0006PK-Et; Wed, 16 Sep 2026 22:47:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x7299-0006Mj-57 for qemu-devel@nongnu.org; Wed, 16 Sep 2026 22:46:47 -0400 Received: from mail.loongson.cn ([114.242.206.163]) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x7297-0005AA-0F for qemu-devel@nongnu.org; Wed, 16 Sep 2026 22:46:46 -0400 Received: from loongson.cn (unknown [10.40.46.54]) by gateway (Coremail) with SMTP id _____8CxQNGTVKtqGOEMAA--.37954S3; Thu, 17 Sep 2026 10:46:43 +0800 (CST) Received: from fedora.loongson.cn (unknown [10.40.46.54]) by front1 (Coremail) with SMTP id qMiowJCxe86QVKtqDK0hAA--.39741S4; Thu, 17 Sep 2026 10:46:42 +0800 (CST) From: Bibo Mao To: qemu-devel@nongnu.org Cc: Song Gao <17746591750@163.com> Subject: [PULL 10/11] target/loongarch: Enable HW PTW feature by default Date: Thu, 17 Sep 2026 10:47:41 +0800 Message-ID: <20260917024742.200257-11-maobibo@loongson.cn> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260917024742.200257-1-maobibo@loongson.cn> References: <20260917024742.200257-1-maobibo@loongson.cn> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: qMiowJCxe86QVKtqDK0hAA--.39741S4 X-CM-SenderInfo: xpdruxter6z05rqj20fqof0/ X-Coremail-Antispam: 1Uk129KBj93XoW7CFWrXF4kJr47ZFyxZF4kKrX_yoW8CF1Dpr ZxZw12grW3trZrAw1kJa90qrs8Xr47Gr42va4ftrW7Aan8XF17uFyktan3tF9rA3s5AFyI qFW0yrs8WF4DJabCm3ZEXasCq-sJn29KB7ZKAUJUUUUU529EdanIXcx71UUUUU7KY7ZEXa sCq-sGcSsGvfJ3Ic02F40EFcxC0VAKzVAqx4xG6I80ebIjqfuFe4nvWSU5nxnvy29KBjDU 0xBIdaVrnRJUUUkFb4IE77IF4wAFF20E14v26r1j6r4UM7CY07I20VC2zVCF04k26cxKx2 IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M28lY4IEw2IIxxk0rwA2F7IY1VAKz4vEj48v e4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_Xr0_Ar1l84ACjcxK6xIIjxv20xvEc7CjxVAFwI 0_Gr0_Cr1l84ACjcxK6I8E87Iv67AKxVWxJVW8Jr1l84ACjcxK6I8E87Iv6xkF7I0E14v2 6r4UJVWxJr1le2I262IYc4CY6c8Ij28IcVAaY2xG8wAqjxCEc2xF0cIa020Ex4CE44I27w Aqx4xG64xvF2IEw4CE5I8CrVC2j2WlYx0E2Ix0cI8IcVAFwI0_Jw0_WrylYx0Ex4A2jsIE 14v26r4j6F4UMcvjeVCFs4IE7xkEbVWUJVW8JwACjcxG0xvY0x0EwIxGrwCF04k20xvY0x 0EwIxGrwCFx2IqxVCFs4IE7xkEbVWUJVW8JwC20s026c02F40E14v26r1j6r18MI8I3I0E 7480Y4vE14v26r106r1rMI8E67AF67kF1VAFwI0_Jrv_JF1lIxkGc2Ij64vIr41lIxAIcV C0I7IYx2IY67AKxVW8JVW5JwCI42IY6xIIjxv20xvEc7CjxVAFwI0_Gr0_Cr1lIxAIcVCF 04k26cxKx2IYs7xG6r1j6r1xMIIF0xvEx4A2jsIE14v26r4j6F4UMIIF0xvEx4A2jsIEc7 CjxVAFwI0_Gr0_Gr1UYxBIdaVFxhVjvjDU0xZFpf9x07j8CztUUUUU= 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+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=114.242.206.163; envelope-from=maobibo@loongson.cn; helo=mail.loongson.cn X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1789613284678158501 Content-Type: text/plain; charset="utf-8" With max CPU type, PTW feature is enabled in TCG mode and auto detected in KVM mode. Enable this feature in both TCG and KVM mode in the beginning, and detect it in late with KVM mode. Signed-off-by: Bibo Mao Reviewed-by: Song Gao <17746591750@163.com> --- target/loongarch/cpu.c | 7 +------ target/loongarch/kvm/kvm.c | 1 + 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/target/loongarch/cpu.c b/target/loongarch/cpu.c index 99499034ed..4a75d53f7e 100644 --- a/target/loongarch/cpu.c +++ b/target/loongarch/cpu.c @@ -472,6 +472,7 @@ static void loongarch_max_initfn(Object *obj) /* '-cpu max': use it for max supported CPU features */ loongarch_la464_initfn(obj); =20 + cpu->env.cpucfg[2] =3D FIELD_DP32(cpu->env.cpucfg[2], CPUCFG2, HPTW, 1= ); cpu->ptw =3D ON_OFF_AUTO_AUTO; cpu->env.cpucfg[1] =3D FIELD_DP32(cpu->env.cpucfg[1], CPUCFG1, MSG_INT= , 1); cpu->msgint =3D ON_OFF_AUTO_AUTO; @@ -488,12 +489,6 @@ static void loongarch_max_initfn(Object *obj) data =3D cpu->env.cpucfg[3]; data =3D FIELD_DP32(data, CPUCFG3, DBAR_HINTS, 1); cpu->env.cpucfg[3] =3D data; - - if (tcg_enabled()) { - data =3D cpu->env.cpucfg[2]; - data =3D FIELD_DP32(data, CPUCFG2, HPTW, 1); - cpu->env.cpucfg[2] =3D data; - } } =20 #if defined(CONFIG_KVM) diff --git a/target/loongarch/kvm/kvm.c b/target/loongarch/kvm/kvm.c index 0626c553d5..941142305e 100644 --- a/target/loongarch/kvm/kvm.c +++ b/target/loongarch/kvm/kvm.c @@ -1150,6 +1150,7 @@ static int kvm_cpu_check_ptw(CPUState *cs, Error **er= rp) CPULoongArchState *env =3D cpu_env(cs); bool kvm_supported; =20 + env->cpucfg[2] =3D FIELD_DP32(env->cpucfg[2], CPUCFG2, HPTW, 0); kvm_supported =3D kvm_feature_supported(cs, LOONGARCH_FEATURE_PTW); if (cpu->ptw =3D=3D ON_OFF_AUTO_ON) { if (!kvm_supported) { --=20 2.54.0 From nobody Sat Sep 26 20:03:11 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1789613354896656.331298631903; Wed, 16 Sep 2026 19:49:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x729c-0006QH-1X; Wed, 16 Sep 2026 22:47:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1x729J-0006OI-2I for qemu-devel@nongnu.org; Wed, 16 Sep 2026 22:46:57 -0400 Received: from mail.loongson.cn ([114.242.206.163]) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x729H-0005AD-7X for qemu-devel@nongnu.org; Wed, 16 Sep 2026 22:46:56 -0400 Received: from loongson.cn (unknown [10.40.46.54]) by gateway (Coremail) with SMTP id _____8DxC9KTVKtqGuEMAA--.37657S3; Thu, 17 Sep 2026 10:46:43 +0800 (CST) Received: from fedora.loongson.cn (unknown [10.40.46.54]) by front1 (Coremail) with SMTP id qMiowJCxe86QVKtqDK0hAA--.39741S5; Thu, 17 Sep 2026 10:46:43 +0800 (CST) From: Bibo Mao To: qemu-devel@nongnu.org Cc: Song Gao <17746591750@163.com> Subject: [PULL 11/11] target/loongarch: Add la664 CPU type Date: Thu, 17 Sep 2026 10:47:42 +0800 Message-ID: <20260917024742.200257-12-maobibo@loongson.cn> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260917024742.200257-1-maobibo@loongson.cn> References: <20260917024742.200257-1-maobibo@loongson.cn> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: qMiowJCxe86QVKtqDK0hAA--.39741S5 X-CM-SenderInfo: xpdruxter6z05rqj20fqof0/ X-Coremail-Antispam: 1Uk129KBj93XoW7CrW8KF1UKr4rtw4DJw15WrX_yoW8ArWDpF 9xuw4agFW8JFZrAa4kAa909rs8Jr4fW3y2vF9xtw48AFs3Xry7X3WkJ398ZF1DK3y8WF1I vw40y3WY9a1UJ3XCm3ZEXasCq-sJn29KB7ZKAUJUUUU8529EdanIXcx71UUUUU7KY7ZEXa sCq-sGcSsGvfJ3Ic02F40EFcxC0VAKzVAqx4xG6I80ebIjqfuFe4nvWSU5nxnvy29KBjDU 0xBIdaVrnRJUUUkFb4IE77IF4wAFF20E14v26r1j6r4UM7CY07I20VC2zVCF04k26cxKx2 IYs7xG6rWj6s0DM7CIcVAFz4kK6r106r15M28lY4IEw2IIxxk0rwA2F7IY1VAKz4vEj48v e4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_Xr0_Ar1l84ACjcxK6xIIjxv20xvEc7CjxVAFwI 0_Gr0_Cr1l84ACjcxK6I8E87Iv67AKxVWxJVW8Jr1l84ACjcxK6I8E87Iv6xkF7I0E14v2 6r4UJVWxJr1le2I262IYc4CY6c8Ij28IcVAaY2xG8wAqjxCEc2xF0cIa020Ex4CE44I27w Aqx4xG64xvF2IEw4CE5I8CrVC2j2WlYx0E2Ix0cI8IcVAFwI0_Jw0_WrylYx0Ex4A2jsIE 14v26r4j6F4UMcvjeVCFs4IE7xkEbVWUJVW8JwACjcxG0xvY0x0EwIxGrwCF04k20xvY0x 0EwIxGrwCFx2IqxVCFs4IE7xkEbVWUJVW8JwC20s026c02F40E14v26r1j6r18MI8I3I0E 7480Y4vE14v26r106r1rMI8E67AF67kF1VAFwI0_Jrv_JF1lIxkGc2Ij64vIr41lIxAIcV C0I7IYx2IY67AKxVW8JVW5JwCI42IY6xIIjxv20xvEc7CjxVAFwI0_Gr0_Cr1lIxAIcVCF 04k26cxKx2IYs7xG6r1j6r1xMIIF0xvEx4A2jsIE14v26r4j6F4UMIIF0xvEx4A2jsIEc7 CjxVAFwI0_Gr0_Gr1UYxBIdaVFxhVjvjDU0xZFpf9x07jOdb8UUUUU= 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+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=114.242.206.163; envelope-from=maobibo@loongson.cn; helo=mail.loongson.cn X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, 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: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1789613356884158500 Content-Type: text/plain; charset="utf-8" Most features about la664 CPU hardware is finished in TCG and KVM mode, add la664 CPU type and it is similar with max CPU type. Signed-off-by: Bibo Mao Reviewed-by: Song Gao <17746591750@163.com> --- target/loongarch/cpu.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/target/loongarch/cpu.c b/target/loongarch/cpu.c index 4a75d53f7e..f22f64efb8 100644 --- a/target/loongarch/cpu.c +++ b/target/loongarch/cpu.c @@ -464,12 +464,11 @@ static void loongarch_la132_initfn(Object *obj) cpu->ptw =3D ON_OFF_AUTO_OFF; } =20 -static void loongarch_max_initfn(Object *obj) +static void loongarch_la664_initfn(Object *obj) { LoongArchCPU *cpu =3D LOONGARCH_CPU(obj); uint32_t data; =20 - /* '-cpu max': use it for max supported CPU features */ loongarch_la464_initfn(obj); =20 cpu->env.cpucfg[2] =3D FIELD_DP32(cpu->env.cpucfg[2], CPUCFG2, HPTW, 1= ); @@ -491,6 +490,12 @@ static void loongarch_max_initfn(Object *obj) cpu->env.cpucfg[3] =3D data; } =20 +static void loongarch_max_initfn(Object *obj) +{ + /* '-cpu max': use it for max supported CPU features */ + loongarch_la664_initfn(obj); +} + #if defined(CONFIG_KVM) static int read_cpuinfo(const char *field, char *value, int len) { @@ -954,6 +959,8 @@ static const TypeInfo loongarch_cpu_type_infos[] =3D { .abstract =3D true, .class_init =3D loongarch64_cpu_class_init, }, + + DEFINE_LOONGARCH_CPU_TYPE(64, "la664", loongarch_la664_initfn), DEFINE_LOONGARCH_CPU_TYPE(64, "la464", loongarch_la464_initfn), DEFINE_LOONGARCH_CPU_TYPE(32, "la132", loongarch_la132_initfn), DEFINE_LOONGARCH_CPU_TYPE(64, "max", loongarch_max_initfn), --=20 2.54.0