From nobody Mon Feb 9 23:01:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1692887619; cv=none; d=zohomail.com; s=zohoarc; b=LlzEmHM7naY95genHz4H9gZgkALGe2LeNPbinOyZA//b72mGdOfh7lcImTIuxD0QiluEgAGZ3n1nVaF+9M6HkoMOpcS2pvqRNwrY/3/+SsG5AVTOvGjm8Znn7Ib8+dIGLu+EwnPmsxFEIbn/4gTG78dli6lTfGEc3lBrCCXrfLw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1692887619; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=+vd2aBB1In0LC63LjX9eSja/NaZe9kRTvQdkij/XSFw=; b=l9sjO2D+vOUT0hjS2rRUo2Vld4kY+Un3MINStKGU26MXzZWHfFm31ZgRlmuk1BQzBoJTjPe5ni5a7R9uQddOSoQNiyeUT+D6x/EQCgS0snJkG0IzWK/aRCyi2OzGpioVlLDww55pdR9iyrNb82mhW/U++oFYd2ECYlUiUQWUhuQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1692887619854820.2125365714764; Thu, 24 Aug 2023 07:33:39 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qZBN7-00014d-5y; Thu, 24 Aug 2023 10:31:41 -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 1qZBMr-0000m1-AJ for qemu-devel@nongnu.org; Thu, 24 Aug 2023 10:31:27 -0400 Received: from mail-pg1-x52d.google.com ([2607:f8b0:4864:20::52d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qZBMn-0000jp-B7 for qemu-devel@nongnu.org; Thu, 24 Aug 2023 10:31:23 -0400 Received: by mail-pg1-x52d.google.com with SMTP id 41be03b00d2f7-564b6276941so4278662a12.3 for ; Thu, 24 Aug 2023 07:31:20 -0700 (PDT) Received: from sunil-pc.Dlink ([106.51.191.205]) by smtp.gmail.com with ESMTPSA id n6-20020a17090a2bc600b00262fc3d911esm1666864pje.28.2023.08.24.07.31.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Aug 2023 07:31:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ventanamicro.com; s=google; t=1692887480; x=1693492280; 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=+vd2aBB1In0LC63LjX9eSja/NaZe9kRTvQdkij/XSFw=; b=J1RYi3hkWKsAFjLg2anLcZMfY5VwYO+Ey1ug8CGEwGEgq2PLwDcSCr1DDCGFbwZ/vH IfDUSDS/h86Sz34YtMnwsm87eXjPl2YlQL//UUm5BjWqGvC8uE8IJgMApWN8bH4j7YSv sx0wWIV4jRJUo33Fesoa0/jzSTknwo4gZU/CDCzauWyQn2D9E4G6k0LtKKYriWAi9WK+ kpmpWZ40e1E32VFiCzww9/Z9trsECsphRl/wCyxX2zoVAuEZfNCJAiVgDkHnAXx2HWoS QDsXjZ8SsRoidwbZ+OuinuuilcLcEF3I9KHWY+10XZk44brb+iE3dGTri6Gth+s3JQII zYjg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1692887480; x=1693492280; 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=+vd2aBB1In0LC63LjX9eSja/NaZe9kRTvQdkij/XSFw=; b=M2HL9T/LSlKNaDRfJZCL67sY13syXlWQBXGl3BWaGlg/OS+FG2W8fyIKeJXSD4QWpq bFsyOke2fcfZ5vn18dEIzE+rSpYY9DOqdHZ2fJ5vEWIWAfAs1mgJMi76poTF4jhT7I8G c33M6N6Q8U2O935CiJoyWZbKNcTfzEBKAbsp4L7VHvllCNIkaZ4Uar9lvoGli/RZJrdU 9RCKVkYl7GwLDBX5KpxvdErL66IJUf5bkJswi4NwMsjtx8imwNEPDva9REN5Q4IStqFi W0LvtWD7HlbwOHwvsIDZrqw/hIG4eBt63uAD0Bv7WC27v6iRTAIBiipr7wLXpVYiMqv7 PZ8A== X-Gm-Message-State: AOJu0YzdjVr5wIrbRRP7zbxzDCccUPOVM/TB+hJGJFpLc1sHSgoRhzwr As4H5+1bJ4X/ac2zIdaBfRHDYw== X-Google-Smtp-Source: AGHT+IELwr30mKtXD+p/1zpPgEOG32XWKAQaMIEY22tiHPO63+XP7dyVgzGK9Qi8EJeyJr3/26hzRw== X-Received: by 2002:a17:90b:3690:b0:25c:8b5e:814 with SMTP id mj16-20020a17090b369000b0025c8b5e0814mr14473828pjb.44.1692887479491; Thu, 24 Aug 2023 07:31:19 -0700 (PDT) From: Sunil V L To: qemu-arm@nongnu.org, qemu-devel@nongnu.org, qemu-riscv@nongnu.org Cc: Shannon Zhao , Peter Maydell , "Michael S . Tsirkin" , Igor Mammedov , Ani Sinha , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Gerd Hoffmann , Paolo Bonzini , Palmer Dabbelt , Alistair Francis , Bin Meng , Weiwei Li , Daniel Henrique Barboza , Liu Zhiwei , Anup Patel , Andrew Jones , Atish Kumar Patra , Haibo Xu , Sunil V L Subject: [PATCH v2 07/12] hw/riscv/virt-acpi-build.c: Add CMO information in RHCT Date: Thu, 24 Aug 2023 19:59:37 +0530 Message-Id: <20230824142942.3983650-8-sunilvl@ventanamicro.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230824142942.3983650-1-sunilvl@ventanamicro.com> References: <20230824142942.3983650-1-sunilvl@ventanamicro.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52d; envelope-from=sunilvl@ventanamicro.com; helo=mail-pg1-x52d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, 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: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @ventanamicro.com) X-ZM-MESSAGEID: 1692887620509100001 Content-Type: text/plain; charset="utf-8" When CMO related extensions like Zicboz, Zicbom and Zicbop are enabled, the block size for those extensions need to be communicated via CMO node in RHCT. Add CMO node in RHCT if any of those CMO extensions are detected. Signed-off-by: Sunil V L Reviewed-by: Daniel Henrique Barboza --- hw/riscv/virt-acpi-build.c | 64 +++++++++++++++++++++++++++++++++----- 1 file changed, 56 insertions(+), 8 deletions(-) diff --git a/hw/riscv/virt-acpi-build.c b/hw/riscv/virt-acpi-build.c index 8fa358d034..72c2a3e45f 100644 --- a/hw/riscv/virt-acpi-build.c +++ b/hw/riscv/virt-acpi-build.c @@ -147,6 +147,7 @@ static void acpi_dsdt_add_cpus(Aml *scope, RISCVVirtSta= te *s) * 5.2.36 RISC-V Hart Capabilities Table (RHCT) * REF: https://github.com/riscv-non-isa/riscv-acpi/issues/16 * https://drive.google.com/file/d/1nP3nFiH4jkPMp6COOxP6123DCZKR-tia/= view + * https://drive.google.com/file/d/1sKbOa8m1UZw1JkquZYe3F1zQBN1xXsaf/= view */ static void build_rhct(GArray *table_data, BIOSLinker *linker, @@ -156,8 +157,8 @@ static void build_rhct(GArray *table_data, MachineState *ms =3D MACHINE(s); const CPUArchIdList *arch_ids =3D mc->possible_cpu_arch_ids(ms); size_t len, aligned_len; - uint32_t isa_offset, num_rhct_nodes; - RISCVCPU *cpu; + uint32_t isa_offset, num_rhct_nodes, cmo_offset =3D 0; + RISCVCPU *cpu =3D &s->soc[0].harts[0]; char *isa; =20 AcpiTable table =3D { .sig =3D "RHCT", .rev =3D 1, .oem_id =3D s->oem_= id, @@ -173,6 +174,9 @@ static void build_rhct(GArray *table_data, =20 /* ISA + N hart info */ num_rhct_nodes =3D 1 + ms->smp.cpus; + if (cpu->cfg.ext_icbom || cpu->cfg.ext_icboz) { + num_rhct_nodes++; + } =20 /* Number of RHCT nodes*/ build_append_int_noprefix(table_data, num_rhct_nodes, 4); @@ -184,7 +188,6 @@ static void build_rhct(GArray *table_data, isa_offset =3D table_data->len - table.table_offset; build_append_int_noprefix(table_data, 0, 2); /* Type 0 */ =20 - cpu =3D &s->soc[0].harts[0]; isa =3D riscv_isa_string(cpu); len =3D 8 + strlen(isa) + 1; aligned_len =3D (len % 2) ? (len + 1) : len; @@ -200,14 +203,59 @@ static void build_rhct(GArray *table_data, build_append_int_noprefix(table_data, 0x0, 1); /* Optional Paddi= ng */ } =20 + /* CMO node */ + if (cpu->cfg.ext_icbom || cpu->cfg.ext_icboz) { + cmo_offset =3D table_data->len - table.table_offset; + build_append_int_noprefix(table_data, 1, 2); /* Type */ + build_append_int_noprefix(table_data, 10, 2); /* Total Length */ + build_append_int_noprefix(table_data, 0x1, 2); /* Revision */ + build_append_int_noprefix(table_data, 0, 1); /* Reserved */ + + /* CBOM block size */ + if (cpu->cfg.cbom_blocksize) { + build_append_int_noprefix(table_data, + __builtin_ctz(cpu->cfg.cbom_blocksiz= e), + 1); + } else { + build_append_int_noprefix(table_data, 0, 1); + } + + /* CBOP block size */ + build_append_int_noprefix(table_data, 0, 1); + + /* CBOZ block size */ + if (cpu->cfg.cboz_blocksize) { + build_append_int_noprefix(table_data, + __builtin_ctz(cpu->cfg.cboz_blocksiz= e), + 1); + } else { + build_append_int_noprefix(table_data, 0, 1); + } + } + /* Hart Info Node */ for (int i =3D 0; i < arch_ids->len; i++) { + len =3D 16; + int num_offsets =3D 1; build_append_int_noprefix(table_data, 0xFFFF, 2); /* Type */ - build_append_int_noprefix(table_data, 16, 2); /* Length */ - build_append_int_noprefix(table_data, 0x1, 2); /* Revision */ - build_append_int_noprefix(table_data, 1, 2); /* Number of offse= ts */ - build_append_int_noprefix(table_data, i, 4); /* ACPI Processor = UID */ - build_append_int_noprefix(table_data, isa_offset, 4); /* Offsets[0= ] */ + + /* Length */ + if (cmo_offset) { + len +=3D 4; + num_offsets++; + } + + build_append_int_noprefix(table_data, len, 2); + build_append_int_noprefix(table_data, 0x1, 2); /* Revision */ + /* Number of offsets */ + build_append_int_noprefix(table_data, num_offsets, 2); + build_append_int_noprefix(table_data, i, 4); /* ACPI Processor U= ID */ + + /* Offsets */ + build_append_int_noprefix(table_data, isa_offset, 4); + if (cmo_offset) { + build_append_int_noprefix(table_data, cmo_offset, 4); + } } =20 acpi_table_end(linker, &table); --=20 2.39.2