From patchwork Sun Jul 2 09:57:32 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: yunhui cui X-Patchwork-Id: 115074 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp11476384vqr; Sun, 2 Jul 2023 03:06:37 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ7QoNWzGdtTZ6zwhzveDCy3UVal8jKfFww8giu4C2Eut+DenX/6I4UK9dOA48AmEylUlVZm X-Received: by 2002:a05:6a20:9695:b0:127:4fb0:d448 with SMTP id hp21-20020a056a20969500b001274fb0d448mr6081350pzc.9.1688292397052; Sun, 02 Jul 2023 03:06:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1688292397; cv=none; d=google.com; s=arc-20160816; b=QBy8zkfjWN3fLjLdq5bqP+U9+4rxbNJyWU8mm9uxuCbpYZlViDSCKfshos14QH5nfq qQEjxq06ZsyoGk5dkawOFWA6mG3hER6oUIRsjOdfDimTKrQvBMLmqRu9Oz87PF9kqslB OFrcuMOiARke7BxnR8c2ehXozyNejkB5WvVTE28RWBngZ+c3K5j7uAJlsOm0ySED78sq dp6qoFjLbD7wjbTUnNUFp+2lDiMiL/R6K6DukcfYg8gaTfjAf0LCHro+590ChkdNrvls T0woRezHlgIkgH2CBDZOUIt4thGw90u6n6Rq/SVJeDVPYXMxud8Eo+GRmUUiIB/gLior kWYw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:to:from:dkim-signature; bh=XF2+x8StAqIQZEEXXA77vQxRC4bKZrb2UmGw9jTVMxg=; fh=fI97KO8K/QT07pLH0ngJK3tXQari6q4ZtMqoDk0XOd0=; b=TbvFkh6UCIz/afLjs2bi+GguRA265gcUXkJK3Jy9xIeeD8r2OMVsVnYSvwOSvINKz3 EpDP1IhBLrpBZBTzphGU0V2sWmsc54oXiYXfhgVUWJOalD8m043l5BGTaNimLg0fpc8B UTFC5QgE0mf+mNRJxSQ4D5NhKdPzXGhL8HBjaZAW14j/qVa7b41JcPbdfYyOhIiRmn18 fljffu1eQMLEr4dZCHZw9gIz3Z4hrSdk75fRBbOSG+0TvzBFjYPWkBTjrpjVuQWqpDbf fkUN5px+hZZoOSbFcloXlRmJ+uJzQno90Ah5nzudMN/FSJJ8gR/I686M5P3RMpdQNjJ3 yfwA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@bytedance.com header.s=google header.b=C8mJIVmo; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=bytedance.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id k62-20020a638441000000b0055b79986063si2813369pgd.300.2023.07.02.03.06.22; Sun, 02 Jul 2023 03:06:37 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@bytedance.com header.s=google header.b=C8mJIVmo; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=bytedance.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229638AbjGBJ6A (ORCPT + 99 others); Sun, 2 Jul 2023 05:58:00 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45172 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229908AbjGBJ55 (ORCPT ); Sun, 2 Jul 2023 05:57:57 -0400 Received: from mail-pg1-x530.google.com (mail-pg1-x530.google.com [IPv6:2607:f8b0:4864:20::530]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C197CE54 for ; Sun, 2 Jul 2023 02:57:55 -0700 (PDT) Received: by mail-pg1-x530.google.com with SMTP id 41be03b00d2f7-54fd6aa3b0dso1785940a12.2 for ; Sun, 02 Jul 2023 02:57:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1688291875; x=1690883875; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:from:to:cc:subject:date:message-id:reply-to; bh=XF2+x8StAqIQZEEXXA77vQxRC4bKZrb2UmGw9jTVMxg=; b=C8mJIVmo9Gt8KrJx133l1TXUl96CjQQdawYTJqjV0B/dmrVnXbEotILm4dSXCEO+LE 9Ej+UK5HJQrDCB7aDdtABsSPT1gpEHjUABBtbOKkrTOnXS+OtygyvUJnmMUti2fldsuk LYuM+dNsVpvyn4VRdWlnqWoLRubroBSgNcRzK3Loq3wizKTdyajAHSbzjtTG5BPh00Ys njN7jgXWvlJfMrw1ZFIIR4kvKAqQ5TCf94B/vkUVxpiDCWmI5J515CPvcj5cOBDrNX7x 20EwZMgumErRPjsjQPjjzOdyrCNEI6qDtDdu0oda8rhwk1EFVuDeKFlL8tHtqbgJrxlX tV2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688291875; x=1690883875; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=XF2+x8StAqIQZEEXXA77vQxRC4bKZrb2UmGw9jTVMxg=; b=DE97EGPmN3Md8FsLpdeK8PC5Qbs1AMXhwySEfPuVhDgqYZFYg5vJlLj+wxlhIbeoUf ZqL7rh51HZx6Brce8qE1pbunMcHYjxlodYfBjH5IfrpPLZdVIVVhxLG04r0+XR+f2N6E ur9GR+imctpvp/W7k3twZVbAYwmUBak9g84WetPsr89mFQRqO0cNNAv5/ETZ6JHgi+zi kPrMIZh5N+4gVn97h1R9RYZf1wHLdyVW1DGqgEQqageWWS4dyMxlXZkn99aGjn4Xpqd3 J5Utq0l2J6YrN7LdWBDnClTjtttEbgeDzW5uRUDonWiDPRvgGDV8boB7NY1MPBTGeYyc 3p7g== X-Gm-Message-State: ABy/qLYgIX3adz0qmACILdzv8srVY+kvVZnGp/70WvxR99n3IgkvLjSu ytuEVlvT7MLv0C0EHmy7v7UOdA== X-Received: by 2002:a05:6a20:3257:b0:12c:1193:a563 with SMTP id hm23-20020a056a20325700b0012c1193a563mr5325675pzc.58.1688291875230; Sun, 02 Jul 2023 02:57:55 -0700 (PDT) Received: from PF2E59YH-BKX.inc.bytedance.com ([139.177.225.251]) by smtp.gmail.com with ESMTPSA id u26-20020a62ed1a000000b006827d86ca0csm1605095pfh.55.2023.07.02.02.57.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 02 Jul 2023 02:57:54 -0700 (PDT) From: Yunhui Cui To: ardb@kernel.org, palmer@dabbelt.com, paul.walmsley@sifive.com, aou@eecs.berkeley.edu, linux-riscv@lists.infradead.org, rminnich@gmail.com, mark.rutland@arm.com, lpieralisi@kernel.org, rafael@kernel.org, lenb@kernel.org, jdelvare@suse.com, yc.hung@mediatek.com, angelogioacchino.delregno@collabora.com, allen-kh.cheng@mediatek.com, pierre-louis.bossart@linux.intel.com, tinghan.shen@mediatek.com, linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org, geshijian@bytedance.com, weidong.wd@bytedance.com, cuiyunhui@bytedance.com Subject: [PATCH v2 1/3] riscv: obtain ACPI RSDP from FFI. Date: Sun, 2 Jul 2023 17:57:32 +0800 Message-Id: <20230702095735.860-1-cuiyunhui@bytedance.com> X-Mailer: git-send-email 2.37.3.windows.1 MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1770302888463763254?= X-GMAIL-MSGID: =?utf-8?q?1770302888463763254?= 1. We need to enable the ACPI function on RISC-V. When booting with Coreboot, we encounter two problems: a. Coreboot does not support EFI b. On RISC-V, only the DTS channel can be used. 2. Based on this, we have added an interface for obtaining firmware information transfer through FDT, named FFI. 3. We not only use FFI to pass ACPI RSDP, but also pass other firmware information as an extension. Signed-off-by: Yunhui Cui --- MAINTAINERS | 6 ++++++ arch/riscv/Kconfig | 10 ++++++++++ arch/riscv/include/asm/acpi.h | 9 +++++++++ arch/riscv/include/asm/ffi.h | 9 +++++++++ arch/riscv/kernel/Makefile | 1 + arch/riscv/kernel/ffi.c | 37 +++++++++++++++++++++++++++++++++++ arch/riscv/kernel/setup.c | 2 ++ 7 files changed, 74 insertions(+) create mode 100644 arch/riscv/include/asm/ffi.h create mode 100644 arch/riscv/kernel/ffi.c diff --git a/MAINTAINERS b/MAINTAINERS index cd5388a33410..e592f489e757 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -18363,6 +18363,12 @@ F: arch/riscv/boot/dts/ X: arch/riscv/boot/dts/allwinner/ X: arch/riscv/boot/dts/renesas/ +RISC-V FDT FIRMWARE INTERFACE (FFI) SUPPORT +M: Yunhui Cui cuiyunhui@bytedance.com +S: Maintained +F: arch/riscv/include/asm/ffi.h +F: arch/riscv/kernel/ffi.c + RISC-V PMU DRIVERS M: Atish Patra R: Anup Patel diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig index b49793cf34eb..2e1c40fb2300 100644 --- a/arch/riscv/Kconfig +++ b/arch/riscv/Kconfig @@ -785,6 +785,16 @@ config EFI allow the kernel to be booted as an EFI application. This is only useful on systems that have UEFI firmware. +config FFI + bool "Fdt firmware interface" + depends on OF + default y + help + Added an interface to obtain firmware information transfer + through FDT, named FFI. Some bootloaders do not support EFI, + such as coreboot. + We can pass firmware information through FFI, such as ACPI. + config CC_HAVE_STACKPROTECTOR_TLS def_bool $(cc-option,-mstack-protector-guard=tls -mstack-protector-guard-reg=tp -mstack-protector-guard-offset=0) diff --git a/arch/riscv/include/asm/acpi.h b/arch/riscv/include/asm/acpi.h index f71ce21ff684..f9d1625dd159 100644 --- a/arch/riscv/include/asm/acpi.h +++ b/arch/riscv/include/asm/acpi.h @@ -15,6 +15,8 @@ /* Basic configuration for ACPI */ #ifdef CONFIG_ACPI +#include + typedef u64 phys_cpuid_t; #define PHYS_CPUID_INVALID INVALID_HARTID @@ -66,6 +68,13 @@ int acpi_get_riscv_isa(struct acpi_table_header *table, unsigned int cpu, const char **isa); static inline int acpi_numa_get_nid(unsigned int cpu) { return NUMA_NO_NODE; } + +#define ACPI_HAVE_ARCH_GET_ROOT_POINTER +static inline u64 acpi_arch_get_root_pointer(void) +{ + return acpi_rsdp; +} + #else static inline void acpi_init_rintc_map(void) { } static inline struct acpi_madt_rintc *acpi_cpu_get_madt_rintc(int cpu) diff --git a/arch/riscv/include/asm/ffi.h b/arch/riscv/include/asm/ffi.h new file mode 100644 index 000000000000..847af02abd87 --- /dev/null +++ b/arch/riscv/include/asm/ffi.h @@ -0,0 +1,9 @@ +/* SPDX-License-Identifier: GPL-2.0 */ + +#ifndef _ASM_FFI_H +#define _ASM_FFI_H + +extern u64 acpi_rsdp; +extern void ffi_init(void); + +#endif /* _ASM_FFI_H */ diff --git a/arch/riscv/kernel/Makefile b/arch/riscv/kernel/Makefile index 506cc4a9a45a..274e06f4da33 100644 --- a/arch/riscv/kernel/Makefile +++ b/arch/riscv/kernel/Makefile @@ -92,6 +92,7 @@ obj-$(CONFIG_CRASH_CORE) += crash_core.o obj-$(CONFIG_JUMP_LABEL) += jump_label.o obj-$(CONFIG_EFI) += efi.o +obj-$(CONFIG_FFI) += ffi.o obj-$(CONFIG_COMPAT) += compat_syscall_table.o obj-$(CONFIG_COMPAT) += compat_signal.o obj-$(CONFIG_COMPAT) += compat_vdso/ diff --git a/arch/riscv/kernel/ffi.c b/arch/riscv/kernel/ffi.c new file mode 100644 index 000000000000..c5ac2b5d9148 --- /dev/null +++ b/arch/riscv/kernel/ffi.c @@ -0,0 +1,37 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * ffi.c - FDT FIRMWARE INTERFACE + */ + +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + +#include +#include +#include + +u64 acpi_rsdp; + +void __init ffi_acpi_root_pointer(void) +{ + int cfgtbl, len; + fdt64_t *prop; + + cfgtbl = fdt_path_offset(initial_boot_params, "/cfgtables"); + if (cfgtbl < 0) { + pr_info("firmware table not found.\n"); + return; + } + + prop = fdt_getprop_w(initial_boot_params, cfgtbl, "acpi_phy_ptr", &len); + if (!prop || len != sizeof(u64)) + pr_info("acpi_rsdp not found.\n"); + else + acpi_rsdp = fdt64_to_cpu(*prop); + + pr_debug("acpi rsdp: %llx\n", acpi_rsdp); +} + +void __init ffi_init(void) +{ + ffi_acpi_root_pointer(); +} diff --git a/arch/riscv/kernel/setup.c b/arch/riscv/kernel/setup.c index 971fe776e2f8..5a933d6b6acb 100644 --- a/arch/riscv/kernel/setup.c +++ b/arch/riscv/kernel/setup.c @@ -36,6 +36,7 @@ #include #include #include +#include #include "head.h" @@ -279,6 +280,7 @@ void __init setup_arch(char **cmdline_p) parse_early_param(); efi_init(); + ffi_init(); paging_init(); /* Parse the ACPI tables for possible boot-time configuration */ From patchwork Sun Jul 2 09:57:33 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: yunhui cui X-Patchwork-Id: 115078 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp11481753vqr; Sun, 2 Jul 2023 03:21:35 -0700 (PDT) X-Google-Smtp-Source: APBJJlHatMO2yNSnle8Xdrn5053h3ua7XCLf20wFYwrEPyrGNqXgjuNlf3TOpB5mHWMRouDPvmju X-Received: by 2002:a17:902:da92:b0:1b6:6e3a:77fb with SMTP id j18-20020a170902da9200b001b66e3a77fbmr8966900plx.2.1688293295232; Sun, 02 Jul 2023 03:21:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1688293295; cv=none; d=google.com; s=arc-20160816; b=zEDAZXM/xKxLc10ddbz7dpGzcfNaFF3XdKccep6t/v0cE/qu57zRKIz5pvWdIjflqy u90nRi4ApyOdXXbGMBQMY5QsuSultTuFlQ+hngKi1nzSxes4hS+5Afid4reLkGr8ggXl O5MwK1DAasxg5/qt0/cFfR4vPGu4287h8EYA3rFYOf0lQbdnSG8u/d8QWrydely75Des WHs9cBLx/sBnmtowvck9aMRtzLw3EWIxzrDMageeFS5DZLOKCHTzI3TSG6At5dkv4mtk Vr/TTaHXe/z/3Rs601mSGJ/Z8abH1Gzjc5I8+KN4CJXlDb95YwkUdmB3q0CJGOOEmv/p iUbw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=HYya50tJlu2Jrm7C5TXSsOJP4LQItfiIbIJ4JgEwpvU=; fh=fI97KO8K/QT07pLH0ngJK3tXQari6q4ZtMqoDk0XOd0=; b=Igzw+L6LVA7YhzSakxig8sWwKqNDrFdqKzrxXJWlLmpXZc0ZsZ8VD30pglCsWn9Z97 DcdNVvH+ZVFPn0Xmh+6ulRYAeTeg1fXLmc8EWbZMpElddFoH73oVCy+pLSINMLf6bskg tHGBvUU6htgZdQsQBSet7w04vqoiT4Mz/T9gnMGi0fY+cis+/buyOfK0N6OMWkbuZ1xK oaQD6TQo4HVcZbB7Njzk8AxFmlMhbzkOZUdNhOQqL37hlkXjG+GvSYgi7Lbt/qzfAebV 1Dv5xxl5kN+T0CDeVm1nmBqnTdIIAXhiqOAe0dPgkjtm6yJ72jtjIoXtCFTEljeS5mRG efow== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@bytedance.com header.s=google header.b=dzNuDndr; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=bytedance.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id b15-20020a17090a7acf00b002634977e6e7si7363171pjl.102.2023.07.02.03.21.21; Sun, 02 Jul 2023 03:21:35 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@bytedance.com header.s=google header.b=dzNuDndr; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=bytedance.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229995AbjGBJ6c (ORCPT + 99 others); Sun, 2 Jul 2023 05:58:32 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45186 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229914AbjGBJ62 (ORCPT ); Sun, 2 Jul 2023 05:58:28 -0400 Received: from mail-pf1-x432.google.com (mail-pf1-x432.google.com [IPv6:2607:f8b0:4864:20::432]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5D145E6F for ; Sun, 2 Jul 2023 02:58:03 -0700 (PDT) Received: by mail-pf1-x432.google.com with SMTP id d2e1a72fcca58-666fb8b1bc8so2898573b3a.1 for ; Sun, 02 Jul 2023 02:58:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1688291883; x=1690883883; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=HYya50tJlu2Jrm7C5TXSsOJP4LQItfiIbIJ4JgEwpvU=; b=dzNuDndr8OWQUYpcU4HBzRoL+dFRpF38ULyIKffCwwmFwEkqZUg68qO63QTl2NQyjm l2xUZLlLcqNHMuPSoLs1p4guToErWKm36lUkbve/lgDYYHao3X9Dtr3t+FJS7J3UAf0A zOfPjY2zeKIkh5UNg9OhPcRuECi0coMOY4qxPoOtIywALalB/NB/IOm8Lnv2hF/GRXN/ Gywkv9Pe7pmsqYQYqbbGPfgz2HidIpRStPKtO1uoYCvht0hi0HbBi3EZz192GmZ5vnCC Q9aBUBY8238CSLdJntuG4ABygKt3itorUNa5c6juQBqnAQ5NMA9GApqvXEYJlSclb5yI ePvQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688291883; x=1690883883; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=HYya50tJlu2Jrm7C5TXSsOJP4LQItfiIbIJ4JgEwpvU=; b=bIAOEDeY+T95ghZjj7SuTsfcgOoRDdgGEb/F7UdVW8PoKNA+Yj9yA2vRoZw2CxBzl0 ugLFfPAk0XzhM4INkOdL8GgTn5FJBpEXbHrrQZW4yz0RoArKHhYJia1qpmFaUEW30u18 enMn2e6LnF7ihFiS8ia1nN/33wkYWGzvFMOcS+3UJgFk2rhu5j7zwTG+ZCx5ygp7ucLO DXsLhRc194Av8uuslr5VHiWXMPzHnn740JOJXXwT84nYcj8ivU3E94WzfizuzVy5uCLa oly6gUEPV/Ul6hVdc7DajobC/Mw5P4P0L/q+lMcA2nXLvnrMThgOh1kS80p5h1n8YMiM Tk4Q== X-Gm-Message-State: ABy/qLa9KxsXbXm/Na7GWxPMuq/zIuFLo7tKe33+duoo9vuFj5h+5Io0 y0t0wy++LBl2pA8kBKOIRoxJLw== X-Received: by 2002:a05:6a20:6a22:b0:12e:6ba3:1f6f with SMTP id p34-20020a056a206a2200b0012e6ba31f6fmr963985pzk.23.1688291882787; Sun, 02 Jul 2023 02:58:02 -0700 (PDT) Received: from PF2E59YH-BKX.inc.bytedance.com ([139.177.225.251]) by smtp.gmail.com with ESMTPSA id u26-20020a62ed1a000000b006827d86ca0csm1605095pfh.55.2023.07.02.02.57.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 02 Jul 2023 02:58:02 -0700 (PDT) From: Yunhui Cui To: ardb@kernel.org, palmer@dabbelt.com, paul.walmsley@sifive.com, aou@eecs.berkeley.edu, linux-riscv@lists.infradead.org, rminnich@gmail.com, mark.rutland@arm.com, lpieralisi@kernel.org, rafael@kernel.org, lenb@kernel.org, jdelvare@suse.com, yc.hung@mediatek.com, angelogioacchino.delregno@collabora.com, allen-kh.cheng@mediatek.com, pierre-louis.bossart@linux.intel.com, tinghan.shen@mediatek.com, linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org, geshijian@bytedance.com, weidong.wd@bytedance.com, cuiyunhui@bytedance.com Subject: [PATCH v2 2/3] firmware: introduce FFI for SMBIOS entry. Date: Sun, 2 Jul 2023 17:57:33 +0800 Message-Id: <20230702095735.860-2-cuiyunhui@bytedance.com> X-Mailer: git-send-email 2.37.3.windows.1 In-Reply-To: <20230702095735.860-1-cuiyunhui@bytedance.com> References: <20230702095735.860-1-cuiyunhui@bytedance.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1770303830526768427?= X-GMAIL-MSGID: =?utf-8?q?1770303830526768427?= 1. Some bootloaders do not support EFI, and the transfer of firmware information can only be done through DTS, such as Coreboot. 2. Some arches do not have a reserved address segment that can be used to pass firmware parameters like x86. 3. Based on this, we have added an interface to obtain firmware information through FDT, named FFI. 4. We not only use FFI to pass SMBIOS entry, but also pass other firmware information as an extension. Signed-off-by: Yunhui Cui --- MAINTAINERS | 6 ++ drivers/firmware/Kconfig | 11 ++++ drivers/firmware/Makefile | 1 + drivers/firmware/dmi_scan.c | 128 +++++++++++++++++------------------- drivers/firmware/ffi.c | 36 ++++++++++ include/linux/ffi.h | 15 +++++ 6 files changed, 128 insertions(+), 69 deletions(-) create mode 100644 drivers/firmware/ffi.c create mode 100644 include/linux/ffi.h diff --git a/MAINTAINERS b/MAINTAINERS index e592f489e757..9b886ef36587 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -7871,6 +7871,12 @@ F: arch/x86/platform/efi/ F: drivers/firmware/efi/ F: include/linux/efi*.h +FDT FIRMWARE INTERFACE (FFI) +M: Yunhui Cui cuiyunhui@bytedance.com +S: Maintained +F: drivers/firmware/ffi.c +F: include/linux/ffi.h + EXTERNAL CONNECTOR SUBSYSTEM (EXTCON) M: MyungJoo Ham M: Chanwoo Choi diff --git a/drivers/firmware/Kconfig b/drivers/firmware/Kconfig index b59e3041fd62..ea0149fb4683 100644 --- a/drivers/firmware/Kconfig +++ b/drivers/firmware/Kconfig @@ -303,6 +303,17 @@ config TURRIS_MOX_RWTM other manufacturing data and also utilize the Entropy Bit Generator for hardware random number generation. +config FDT_FW_INTERFACE + bool "An interface for passing firmware info through FDT" + depends on OF && OF_FLATTREE + default n + help + When some bootloaders do not support EFI, and the arch does not + support SMBIOS_ENTRY_POINT_SCAN_START, then you can enable this option + to support the transfer of firmware information, such as smbios tables. + + Say Y here if you want to pass firmware information by FDT. + source "drivers/firmware/arm_ffa/Kconfig" source "drivers/firmware/broadcom/Kconfig" source "drivers/firmware/cirrus/Kconfig" diff --git a/drivers/firmware/Makefile b/drivers/firmware/Makefile index 28fcddcd688f..3b8b5d0868a6 100644 --- a/drivers/firmware/Makefile +++ b/drivers/firmware/Makefile @@ -33,6 +33,7 @@ obj-y += cirrus/ obj-y += meson/ obj-$(CONFIG_GOOGLE_FIRMWARE) += google/ obj-y += efi/ +obj-$(CONFIG_FDT_FW_INTERFACE) += ffi.o obj-y += imx/ obj-y += psci/ obj-y += smccc/ diff --git a/drivers/firmware/dmi_scan.c b/drivers/firmware/dmi_scan.c index 015c95a825d3..64c1ceffe373 100644 --- a/drivers/firmware/dmi_scan.c +++ b/drivers/firmware/dmi_scan.c @@ -6,6 +6,7 @@ #include #include #include +#include #include #include #include @@ -628,31 +629,56 @@ static int __init dmi_present(const u8 *buf) } /* - * Check for the SMBIOS 3.0 64-bit entry point signature. Unlike the legacy - * 32-bit entry point, there is no embedded DMI header (_DMI_) in here. + * According to the DMTF SMBIOS reference spec v3.0.0, it is + * allowed to define both the 64-bit entry point (smbios3) and + * the 32-bit entry point (smbios), in which case they should + * either both point to the same SMBIOS structure table, or the + * table pointed to by the 64-bit entry point should contain a + * superset of the table contents pointed to by the 32-bit entry + * point (section 5.2) + * This implies that the 64-bit entry point should have + * precedence if it is defined and supported by the OS. If we + * have the 64-bit entry point, but fail to decode it, fall + * back to the legacy one (if available) */ -static int __init dmi_smbios3_present(const u8 *buf) +static int __init dmi_sacn_smbios(unsigned long smbios3, unsigned long smbios) { - if (memcmp(buf, "_SM3_", 5) == 0 && - buf[6] >= 24 && buf[6] <= 32 && - dmi_checksum(buf, buf[6])) { - dmi_ver = get_unaligned_be24(buf + 7); - dmi_num = 0; /* No longer specified */ - dmi_len = get_unaligned_le32(buf + 12); - dmi_base = get_unaligned_le64(buf + 16); - smbios_entry_point_size = buf[6]; - memcpy(smbios_entry_point, buf, smbios_entry_point_size); + char __iomem *p; + char buf[32]; + #define INVALID_TABLE_ADDR (~0UL) - if (dmi_walk_early(dmi_decode) == 0) { - pr_info("SMBIOS %d.%d.%d present.\n", - dmi_ver >> 16, (dmi_ver >> 8) & 0xFF, - dmi_ver & 0xFF); - dmi_format_ids(dmi_ids_string, sizeof(dmi_ids_string)); - pr_info("DMI: %s\n", dmi_ids_string); + if (smbios3 != INVALID_TABLE_ADDR) { + p = dmi_early_remap(smbios3, 32); + if (p == NULL) + return -1; + memcpy_fromio(buf, p, 32); + dmi_early_unmap(p, 32); + + if (!dmi_smbios3_present(buf)) { + dmi_available = 1; return 0; } } - return 1; + + if (smbios == INVALID_TABLE_ADDR) + return -1; + + /* + * This is called as a core_initcall() because it isn't + * needed during early boot. This also means we can + * iounmap the space when we're done with it. + */ + p = dmi_early_remap(smbios, 32); + if (p == NULL) + return -1; + memcpy_fromio(buf, p, 32); + dmi_early_unmap(p, 32); + + if (!dmi_present(buf)) { + dmi_available = 1; + return 0; + } + return -1; } static void __init dmi_scan_machine(void) @@ -660,58 +686,22 @@ static void __init dmi_scan_machine(void) char __iomem *p, *q; char buf[32]; +#ifdef CONFIG_FDT_FW_INTERFACE + if (dmi_sacn_smbios(ffi.smbios3, ffi.smbios)) + goto error; +#endif if (efi_enabled(EFI_CONFIG_TABLES)) { - /* - * According to the DMTF SMBIOS reference spec v3.0.0, it is - * allowed to define both the 64-bit entry point (smbios3) and - * the 32-bit entry point (smbios), in which case they should - * either both point to the same SMBIOS structure table, or the - * table pointed to by the 64-bit entry point should contain a - * superset of the table contents pointed to by the 32-bit entry - * point (section 5.2) - * This implies that the 64-bit entry point should have - * precedence if it is defined and supported by the OS. If we - * have the 64-bit entry point, but fail to decode it, fall - * back to the legacy one (if available) - */ - if (efi.smbios3 != EFI_INVALID_TABLE_ADDR) { - p = dmi_early_remap(efi.smbios3, 32); - if (p == NULL) - goto error; - memcpy_fromio(buf, p, 32); - dmi_early_unmap(p, 32); - - if (!dmi_smbios3_present(buf)) { - dmi_available = 1; - return; - } - } - if (efi.smbios == EFI_INVALID_TABLE_ADDR) + if (dmi_sacn_smbios(efi.smbios3, efi.smbios)) goto error; - - /* This is called as a core_initcall() because it isn't - * needed during early boot. This also means we can - * iounmap the space when we're done with it. - */ - p = dmi_early_remap(efi.smbios, 32); - if (p == NULL) - goto error; - memcpy_fromio(buf, p, 32); - dmi_early_unmap(p, 32); - - if (!dmi_present(buf)) { - dmi_available = 1; - return; - } } else if (IS_ENABLED(CONFIG_DMI_SCAN_MACHINE_NON_EFI_FALLBACK)) { p = dmi_early_remap(SMBIOS_ENTRY_POINT_SCAN_START, 0x10000); if (p == NULL) goto error; /* - * Same logic as above, look for a 64-bit entry point - * first, and if not found, fall back to 32-bit entry point. - */ + * Same logic as above, look for a 64-bit entry point + * first, and if not found, fall back to 32-bit entry point. + */ memcpy_fromio(buf, p, 16); for (q = p + 16; q < p + 0x10000; q += 16) { memcpy_fromio(buf + 16, q, 16); @@ -724,12 +714,12 @@ static void __init dmi_scan_machine(void) } /* - * Iterate over all possible DMI header addresses q. - * Maintain the 32 bytes around q in buf. On the - * first iteration, substitute zero for the - * out-of-range bytes so there is no chance of falsely - * detecting an SMBIOS header. - */ + * Iterate over all possible DMI header addresses q. + * Maintain the 32 bytes around q in buf. On the + * first iteration, substitute zero for the + * out-of-range bytes so there is no chance of falsely + * detecting an SMBIOS header. + */ memset(buf, 0, 16); for (q = p; q < p + 0x10000; q += 16) { memcpy_fromio(buf + 16, q, 16); diff --git a/drivers/firmware/ffi.c b/drivers/firmware/ffi.c new file mode 100644 index 000000000000..169802b4a7a8 --- /dev/null +++ b/drivers/firmware/ffi.c @@ -0,0 +1,36 @@ +// SPDX-License-Identifier: GPL-2.0-only + +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + +#include +#include +#include +#include + +#define FFI_INVALID_TABLE_ADDR (~0UL) + +struct ffi __read_mostly ffi = { + .smbios = FFI_INVALID_TABLE_ADDR, + .smbios3 = FFI_INVALID_TABLE_ADDR, +}; +EXPORT_SYMBOL(ffi); + +void __init ffi_smbios_root_pointer(void) +{ + int cfgtbl, len; + fdt64_t *prop; + + cfgtbl = fdt_path_offset(initial_boot_params, "/cfgtables"); + if (cfgtbl < 0) { + pr_info("firmware table not found.\n"); + return; + } + prop = fdt_getprop_w(initial_boot_params, cfgtbl, "smbios_phy_ptr", &len); + if (!prop || len != sizeof(u64)) + pr_info("smbios entry point not found.\n"); + else + ffi.smbios = fdt64_to_cpu(*prop); + + pr_info("smbios root pointer: %lx\n", ffi.smbios); +} + diff --git a/include/linux/ffi.h b/include/linux/ffi.h new file mode 100644 index 000000000000..95298a805222 --- /dev/null +++ b/include/linux/ffi.h @@ -0,0 +1,15 @@ +/* SPDX-License-Identifier: GPL-2.0 */ + +#ifndef _LINUX_FFI_H +#define _LINUX_FFI_H + +extern struct ffi { + unsigned long smbios; /* SMBIOS table (32 bit entry point) */ + unsigned long smbios3; /* SMBIOS table (64 bit entry point) */ + unsigned long flags; + +} ffi; + +void ffi_smbios_root_pointer(void); + +#endif /* _LINUX_FFI_H */ From patchwork Sun Jul 2 09:57:34 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: yunhui cui X-Patchwork-Id: 115080 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp11485350vqr; Sun, 2 Jul 2023 03:33:04 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ7EnZw/9JMhr4RQuuNKhkcD9PlMG3ihC/eGbSx7cMra08mE8LsQagtqj4VusVgD2PK8HB8y X-Received: by 2002:a05:6a20:4322:b0:122:cb38:636a with SMTP id h34-20020a056a20432200b00122cb38636amr7241277pzk.33.1688293984335; Sun, 02 Jul 2023 03:33:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1688293984; cv=none; d=google.com; s=arc-20160816; b=l61OBCvZE83ZFu30KwvcrsBSxaWKYqhQ5jqqLafMVxvAt2Kj6+YMwSOY2gLg4g/8tq HhAXba2dx+RoOynoaPHuggOFB9IXEyMjLsqqoR4JmvFBCe/JdBgu1wQGOyKbkWsy1bT1 5iYxkP8Zl4J7M2Z4iFBvOnQIji0Qya3oe7dP8i6nbwbttkYU7DbzyUvu9Vc4bVYZGV+2 E+kA3NR9ZSo2S6J9WBOjlRJ/T3HhICs0v01FBJHsXeMEMqgND4mgf5hi/ezLXDbqxpy4 uDCHvICAi2cCKcn60LXJAAW1JZYxKRKKEcS5Ny2P2eKvRHeSyif+3XXn21g/imstcmGz 0AMg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=kkAY8od4kopgBrvcbw1hFpjzgJzWLikggNI5ytXC3Uk=; fh=fI97KO8K/QT07pLH0ngJK3tXQari6q4ZtMqoDk0XOd0=; b=I5EBQJYOJ67gAJS7OM3lSaGta0IRhtTT3hkEQTr1+Yque7FHvcRKzFWvrZiLhfeQmq bH1euNk9wuoTJ3MkkUK3762netGrusHUrKBKzsKoBdAdJ4d6oeCJOjxJj5xlDYpB1o3A OxvWkcy1TqKyqVtWn4dsMAw3MoyOIwuOBvLx4y2gjOsI2ixkp6qOtIEmpy66jEv1sGY3 KulACljdCo6LAvga3mb+SfxnTxLFXEL230/zby/DdCMbKz/VVZ+Oz0SVS/gQfaYYahmq 8jdaOpbVbuPsXs6O5l8ch6Vwl8LAcMe+tYyD8eHG9bPnuQDmRbrQ0Hwgu3jthDTTCy+G Th+w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@bytedance.com header.s=google header.b=loY2CFs4; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=bytedance.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id w10-20020a056a0014ca00b006828c76a9f1si661473pfu.74.2023.07.02.03.32.49; Sun, 02 Jul 2023 03:33:04 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@bytedance.com header.s=google header.b=loY2CFs4; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=bytedance.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229913AbjGBJ6O (ORCPT + 99 others); Sun, 2 Jul 2023 05:58:14 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45250 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229941AbjGBJ6N (ORCPT ); Sun, 2 Jul 2023 05:58:13 -0400 Received: from mail-pf1-x42c.google.com (mail-pf1-x42c.google.com [IPv6:2607:f8b0:4864:20::42c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0BEC610D0 for ; Sun, 2 Jul 2023 02:58:10 -0700 (PDT) Received: by mail-pf1-x42c.google.com with SMTP id d2e1a72fcca58-666eba6f3d6so1684079b3a.3 for ; Sun, 02 Jul 2023 02:58:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1688291890; x=1690883890; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=kkAY8od4kopgBrvcbw1hFpjzgJzWLikggNI5ytXC3Uk=; b=loY2CFs4lCMCrbHrZ0yHjXW0d09bE4yUX16zdqny9IfQYSrLVevitIgjVjuraQ1Gi1 WAmfNin9IKUl2GQp00jw/CWIWhYqGbAHp8jvoeWHdW2tcmtEKvfGCCrVB8hx6Q4Sjqqf HIaVcB+YtGA+M3GO+XfmBpZplhMaqD7hiiyflwP4RFdvBAZ38PNOqc3mzDurTK86p+je M1nxappZcfZ3mae9G8be5IBvNUlyRsR6sVYEV+W25NJWKZ4q+aoamrJnQ3X1ZRNQGXL6 Qmj/bbGQGyhVgTzIthLGGC/bHbI5sBzTGrTmwXacCHk2kbdGKz+PNnTZBecgIiHh5zI9 UFTg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688291890; x=1690883890; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=kkAY8od4kopgBrvcbw1hFpjzgJzWLikggNI5ytXC3Uk=; b=LJS/movjWqoUHqTUf2XpxpuSTlC7QDb4JYRoJuFGiusbFvFrW69OLCepGGPeVvDV8Z aGG1IVBDfrS/JeqUMsclLugEUoVR/cOR8NHY1R459as6zTe9rIbJTLoDexqvLYDmzOye nWDOvZtSKcOMEX0mlXZiEv53BT3ANjreVku2AKjTVdPBG7iJo9ga22lEdKELRXGs7xJg wdXXM99awvTfeNpAY4MzyJhOXGTGSoQLuKjUJathzI3eaGIU8LN+o78V8GeuaX0YIG7m 2kJYFDLhWyyNrzHE+rTGZJGkDtH1VDLFHPLjVApoRJwexPDeH90eoHf8cTuM2rqiw5Yk QKRw== X-Gm-Message-State: ABy/qLbnEJs2nYi2KLZHfEF7i5Wj6HPv5r1BJSg5pyIp5C/Jw7+RvvYc dW0yDdkKAlPKpoNxd+/qPkF3eA== X-Received: by 2002:a05:6a00:2d87:b0:682:4de1:adcc with SMTP id fb7-20020a056a002d8700b006824de1adccmr7473435pfb.12.1688291890230; Sun, 02 Jul 2023 02:58:10 -0700 (PDT) Received: from PF2E59YH-BKX.inc.bytedance.com ([139.177.225.251]) by smtp.gmail.com with ESMTPSA id u26-20020a62ed1a000000b006827d86ca0csm1605095pfh.55.2023.07.02.02.58.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 02 Jul 2023 02:58:09 -0700 (PDT) From: Yunhui Cui To: ardb@kernel.org, palmer@dabbelt.com, paul.walmsley@sifive.com, aou@eecs.berkeley.edu, linux-riscv@lists.infradead.org, rminnich@gmail.com, mark.rutland@arm.com, lpieralisi@kernel.org, rafael@kernel.org, lenb@kernel.org, jdelvare@suse.com, yc.hung@mediatek.com, angelogioacchino.delregno@collabora.com, allen-kh.cheng@mediatek.com, pierre-louis.bossart@linux.intel.com, tinghan.shen@mediatek.com, linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org, geshijian@bytedance.com, weidong.wd@bytedance.com, cuiyunhui@bytedance.com Subject: [PATCH v2 3/3] riscv: obtain SMBIOS entry from FFI. Date: Sun, 2 Jul 2023 17:57:34 +0800 Message-Id: <20230702095735.860-3-cuiyunhui@bytedance.com> X-Mailer: git-send-email 2.37.3.windows.1 In-Reply-To: <20230702095735.860-1-cuiyunhui@bytedance.com> References: <20230702095735.860-1-cuiyunhui@bytedance.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1770304553050678317?= X-GMAIL-MSGID: =?utf-8?q?1770304553050678317?= When we bringup with coreboot on riscv, we need to obtain the entry address of SMBIOS through the FFI scheme. Signed-off-by: Yunhui Cui --- arch/riscv/kernel/ffi.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/arch/riscv/kernel/ffi.c b/arch/riscv/kernel/ffi.c index c5ac2b5d9148..c44f943a1cb5 100644 --- a/arch/riscv/kernel/ffi.c +++ b/arch/riscv/kernel/ffi.c @@ -8,6 +8,7 @@ #include #include #include +#include u64 acpi_rsdp; @@ -34,4 +35,7 @@ void __init ffi_acpi_root_pointer(void) void __init ffi_init(void) { ffi_acpi_root_pointer(); +#if CONFIG_FDT_FW_INTERFACE + ffi_smbios_root_pointer(); +#endif }