From patchwork Mon Aug 28 09:37:03 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Haibo Xu X-Patchwork-Id: 1826679 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=I6eiYm0i; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ubuntu.com (client-ip=185.125.189.65; helo=lists.ubuntu.com; envelope-from=fwts-devel-bounces@lists.ubuntu.com; receiver=patchwork.ozlabs.org) Received: from lists.ubuntu.com (lists.ubuntu.com [185.125.189.65]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RZ4wN4rD7z1yfX for ; Mon, 28 Aug 2023 19:27:48 +1000 (AEST) Received: from localhost ([127.0.0.1] helo=lists.ubuntu.com) by lists.ubuntu.com with esmtp (Exim 4.86_2) (envelope-from ) id 1qaYX4-0002jw-PW; Mon, 28 Aug 2023 09:27:38 +0000 Received: from mgamail.intel.com ([192.55.52.115]) by lists.ubuntu.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1qaYX2-0002je-1F for fwts-devel@lists.ubuntu.com; Mon, 28 Aug 2023 09:27:36 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1693214856; x=1724750856; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=o2DH10LM5VH9zfCgMzOsqSbN2tE39pVA1iJMeFavBUg=; b=I6eiYm0iQvBajEw2RLBvRUGK2uZgG8KhRKAYz3pHceda7rubVGWp1QNb NsnQGwAebV9UwK/ZYnhhEdeaq6FijJ4HtEENFQ62vapLdY/s1M6nB7EJc jDu7+w6nDzPaAKXwPmsDTDcmi6BRXAjf2Ljp8LW1SjAVvV+mqQRnjsA+1 lXBnKSw/0+n95Y4vfSSBdlr/xPXdMH/N0eQtZc8haVeCeeIT6MqMV9hNW U7rm7ziANRNZKgdeSMmyrRTjNyNwFf5tSVxqBZvYxHwUUniF8nAo2TPiC wwW9BWGqSx56UupWZA5hP02BhZPHhp4CFZIpmw1gUiOzzLA8VNh3I5rDR g==; X-IronPort-AV: E=McAfee;i="6600,9927,10815"; a="375028369" X-IronPort-AV: E=Sophos;i="6.02,207,1688454000"; d="scan'208";a="375028369" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Aug 2023 02:27:29 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10815"; a="738187287" X-IronPort-AV: E=Sophos;i="6.02,207,1688454000"; d="scan'208";a="738187287" Received: from haibo-optiplex-7090.sh.intel.com ([10.239.159.132]) by orsmga002-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Aug 2023 02:27:27 -0700 From: Haibo Xu To: fwts-devel@lists.ubuntu.com Subject: [RFC PATCH 1/2] acpi: update madt revisions to ACPI 6.5.next Date: Mon, 28 Aug 2023 17:37:03 +0800 Message-Id: <7106e6c0372debb29b3a4fd2d7bb1bcfa8ef1796.1693215246.git.haibo1.xu@intel.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 X-BeenThere: fwts-devel@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Firmware Test Suite Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: heinrich.schuchardt@canonical.com Errors-To: fwts-devel-bounces@lists.ubuntu.com Sender: "fwts-devel" Add risc-v madt subtable types which were accepted in ACPI 6.5.next[1]. [1] https://github.com/riscv-non-isa/riscv-acpi/wiki/ACPI-ASWG-ECR-Process --- src/acpi/madt/madt.c | 14 +++++++++- src/lib/include/fwts_acpi.h | 55 +++++++++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+), 1 deletion(-) diff --git a/src/acpi/madt/madt.c b/src/acpi/madt/madt.c index 05f93ed8..2b857a08 100644 --- a/src/acpi/madt/madt.c +++ b/src/acpi/madt/madt.c @@ -122,7 +122,7 @@ #define SUBTABLE_UNDEFINED 0x00 #define SUBTABLE_VARIABLE 0xff -#define NUM_SUBTABLE_TYPES 24 +#define NUM_SUBTABLE_TYPES 28 #define MAX_IO_APIC_ID 256 /* IO APIC ID field is 1 byte */ #define SBBR_ACPI_MAJOR_VERSION 6 @@ -250,6 +250,18 @@ static struct acpi_madt_subtable_lengths spec_info[] = { SUBTABLE_VARIABLE, SUBTABLE_VARIABLE, SUBTABLE_VARIABLE } }, + { /* for ACPI 6.5.next */ + .major_version = 6, + .minor_version = 5, + .madt_version = 6, + .num_types = 28, + .lengths = { 8, 12, 10, 8, 6, 12, 16, SUBTABLE_VARIABLE, + 16, 16, 12, 82, 24, 24, 16, 20, 16, + SUBTABLE_VARIABLE, SUBTABLE_VARIABLE, + SUBTABLE_VARIABLE, SUBTABLE_VARIABLE, + SUBTABLE_VARIABLE, SUBTABLE_VARIABLE, + SUBTABLE_VARIABLE, 36, 16, 36, 36 } + }, { /* terminator */ .major_version = 0, .minor_version = 0, diff --git a/src/lib/include/fwts_acpi.h b/src/lib/include/fwts_acpi.h index eb958b0e..510addb4 100644 --- a/src/lib/include/fwts_acpi.h +++ b/src/lib/include/fwts_acpi.h @@ -531,6 +531,10 @@ typedef enum { FWTS_MADT_MSI_PIC, FWTS_MADT_BIO_PIC, FWTS_MADT_LPC_PIC, + FWTS_MADT_RINTC, + FWTS_MADT_IMSIC, + FWTS_MADT_APLIC, + FWTS_MADT_PLIC, FWTS_MADT_RESERVED, /* does not have defined structure */ FWTS_MADT_OEM /* does not have defined structure */ } fwts_acpi_madt_type; @@ -691,6 +695,57 @@ typedef struct { uint64_t mail_box_address; } __attribute__ ((packed)) fwts_acpi_madt_mp_wakeup; +/* Type 24, FWTS_MADT_RINTC */ +typedef struct { + uint8_t version; + uint8_t reserved; + uint32_t flags; + uint64_t hart_id; + uint32_t uid; + uint32_t ext_intc_id; + uint64_t imsic_addr; + uint32_t imsic_size; +} __attribute__ ((packed)) fwts_acpi_madt_rintc; + +/* Type 25, FWTS_MADT_IMSIC */ +typedef struct { + uint8_t version; + uint8_t reserved; + uint32_t flags; + uint16_t num_ids; + uint16_t num_guest_ids; + uint8_t guest_index_bits; + uint8_t hart_index_bits; + uint8_t group_index_bits; + uint8_t group_index_shift; +} __attribute__ ((packed)) fwts_acpi_madt_imsic; + +/* Type 26, FWTS_MADT_APLIC */ +typedef struct { + uint8_t version; + uint8_t id; + uint32_t flags; + uint8_t hw_id[8]; + uint16_t num_idcs; + uint16_t num_sources; + uint32_t gsi_base; + uint64_t addr; + uint32_t size; +} __attribute__ ((packed)) fwts_acpi_madt_aplic; + +/* Type 27, FWTS_MADT_PLIC */ +typedef struct { + uint8_t version; + uint8_t id; + uint8_t hw_id[8]; + uint16_t num_irqs; + uint16_t max_prio; + uint32_t flags; + uint32_t size; + uint64_t base_addr; + uint32_t gsi_base; +} __attribute__ ((packed)) fwts_acpi_madt_plic; + /* * ACPI TCPA (Trusted Computing Platform Alliance Capabilities Table) * http://www.kuro5hin.org/story/2002/10/27/16622/530,