From: Conor Dooley <conor@kernel.org>
To: Yunhui Cui <cuiyunhui@bytedance.com>
Cc: mark.rutland@arm.com, allen-kh.cheng@mediatek.com,
rafael@kernel.org, lpieralisi@kernel.org, jdelvare@suse.com,
linux-riscv@lists.infradead.org, ardb@kernel.org,
geshijian@bytedance.com, tinghan.shen@mediatek.com,
pierre-louis.bossart@linux.intel.com, linux-acpi@vger.kernel.org,
lenb@kernel.org, aou@eecs.berkeley.edu, alexghiti@rivosinc.com,
paul.walmsley@sifive.com,
angelogioacchino.delregno@collabora.com,
weidong.wd@bytedance.com, linux-kernel@vger.kernel.org,
rminnich@gmail.com, palmer@dabbelt.com, yc.hung@mediatek.com
Subject: Re: [PATCH v2 1/3] riscv: obtain ACPI RSDP from FFI.
Date: Sun, 2 Jul 2023 14:47:41 +0100 [thread overview]
Message-ID: <20230702-headway-dreamlike-d7ba39ac4910@spud> (raw)
In-Reply-To: <20230702095735.860-1-cuiyunhui@bytedance.com>
[-- Attachment #1.1: Type: text/plain, Size: 6925 bytes --]
Hey,
%subject: riscv: obtain ACPI RSDP from FFI.
This subject is a bit unhelpful because FFI would commonly mean "foreign
function interface" & you have not yet introduced it. It seems like it
would be better to do s/FFI/devicetree/ or similar.
Please also drop the full stop from the commit messages ;)
Please use a cover letter for multi-patch series & include changelogs.
+CC Sunil, Alex:
Can you guys please take a look at this & see if it is something that we
want to do (ACPI without EFI)?
On Sun, Jul 02, 2023 at 05:57:32PM +0800, Yunhui Cui wrote:
> 1. We need to enable the ACPI function on RISC-V.
RISC-V already supports ACPI, the "we" in this commit message is
confusing. Who is "we"? Bytedance?
> 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.
We support ACPI, so this seems inaccurate. Could you explain it better
please?
> 2. Based on this, we have added an interface for obtaining firmware
> information transfer through FDT, named FFI.
Please use the long form of "FFI" before using the short form, since you
are inventing this & noone knows what it means yet.
> 3. We not only use FFI to pass ACPI RSDP, but also pass other
> firmware information as an extension.
This patch doesn't do that though?
> +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
Please add this in alphabetical order, these entries have recently been
resorted. That said, maintainers entry for a trivial file in arch code
seems a wee bit odd, seems like it would be better suited rolled up into
your other entry for the interface, like how Ard's one looks for EFI?
> 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.
I don't understand your Kconfig setup. Why don't you just have one
option (the one from patch 2/3), instead of adding 2 different but
similarly named options?
> 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 <asm/ffi.h>
> +
> 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
How come this is not set in Kconfig like HAVE_FOO options usually are?
> +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;
/stuff/linux/drivers/acpi/osl.c:178:22: error: redefinition of 'acpi_rsdp' with a different type: 'unsigned long' vs 'u64' (aka 'unsigned long long')
Fails to build when Kexec is enabled.
> +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
This file uses tabs for alignment, not spaces.
> 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 <linux/of.h>
> +#include <linux/of_fdt.h>
> +#include <linux/libfdt.h>
> +
> +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);
Same comments here about undocumented DT properties and pr_*()s that
likely are not wanted (or correct).
> +}
> +
> +void __init ffi_init(void)
> +{
> + ffi_acpi_root_pointer();
What happens if, on a system with "normal" ACPI support, ffi_init() is
called & ffi_acpi_root_pointer() calls things like fdt_path_offset()?
> +}
> 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 <asm/thread_info.h>
> #include <asm/kasan.h>
> #include <asm/efi.h>
> +#include <asm/ffi.h>
>
> #include "head.h"
>
> @@ -279,6 +280,7 @@ void __init setup_arch(char **cmdline_p)
> parse_early_param();
>
> efi_init();
> + ffi_init();
What provides ffi_init() if CONFIG_FFI is disabled?
> paging_init();
>
> /* Parse the ACPI tables for possible boot-time configuration */
Cheers,
Conor.
[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
[-- Attachment #2: Type: text/plain, Size: 161 bytes --]
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
next prev parent reply other threads:[~2023-07-02 13:48 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-07-02 9:57 [PATCH v2 1/3] riscv: obtain ACPI RSDP from FFI Yunhui Cui
2023-07-02 9:57 ` [PATCH v2 2/3] firmware: introduce FFI for SMBIOS entry Yunhui Cui
2023-07-02 12:41 ` Conor Dooley
2023-07-03 8:23 ` [External] " 运辉崔
2023-07-03 8:34 ` Conor Dooley
2023-07-03 12:41 ` 运辉崔
2023-07-03 13:02 ` Conor Dooley
2023-07-03 13:26 ` 运辉崔
2023-07-02 9:57 ` [PATCH v2 3/3] riscv: obtain SMBIOS entry from FFI Yunhui Cui
2023-07-02 12:42 ` Conor Dooley
2023-07-03 7:50 ` [External] " 运辉崔
2023-07-03 8:16 ` Conor Dooley
2023-07-02 13:47 ` Conor Dooley [this message]
2023-07-03 4:21 ` [PATCH v2 1/3] riscv: obtain ACPI RSDP " Sunil V L
2023-07-03 6:19 ` [External] " 运辉崔
2023-07-03 7:19 ` 运辉崔
2023-07-03 8:12 ` Conor Dooley
2023-07-03 10:16 ` 运辉崔
2023-07-03 12:18 ` Conor Dooley
2023-07-03 13:04 ` 运辉崔
2023-07-03 13:01 ` Andrew Jones
2023-07-03 13:30 ` [External] " 运辉崔
2023-07-03 14:17 ` Andrew Jones
2023-07-03 14:23 ` Conor Dooley
2023-07-03 18:58 ` Emil Renner Berthing
2023-07-03 21:32 ` [External] " Jessica Clarke
2023-07-05 14:42 ` Björn Töpel
2023-07-06 2:24 ` 运辉崔
2023-07-06 8:52 ` Björn Töpel
[not found] ` <CAP6exY+gTSxU95nDK14z-Y1suKeXPkLzZ_BZqr-vRVGO9qmcxg@mail.gmail.com>
2023-07-07 9:05 ` Björn Töpel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230702-headway-dreamlike-d7ba39ac4910@spud \
--to=conor@kernel.org \
--cc=alexghiti@rivosinc.com \
--cc=allen-kh.cheng@mediatek.com \
--cc=angelogioacchino.delregno@collabora.com \
--cc=aou@eecs.berkeley.edu \
--cc=ardb@kernel.org \
--cc=cuiyunhui@bytedance.com \
--cc=geshijian@bytedance.com \
--cc=jdelvare@suse.com \
--cc=lenb@kernel.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-riscv@lists.infradead.org \
--cc=lpieralisi@kernel.org \
--cc=mark.rutland@arm.com \
--cc=palmer@dabbelt.com \
--cc=paul.walmsley@sifive.com \
--cc=pierre-louis.bossart@linux.intel.com \
--cc=rafael@kernel.org \
--cc=rminnich@gmail.com \
--cc=tinghan.shen@mediatek.com \
--cc=weidong.wd@bytedance.com \
--cc=yc.hung@mediatek.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox