Message ID | 1602241050-24051-4-git-send-email-yangtiezhu@loongson.cn (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | Avoid build error, clean up numa.c and add /proc/boardinfo | expand |
在 2020/10/9 下午6:57, Tiezhu Yang 写道: > Add /proc/boardinfo to get mainboard and BIOS info easily on the Loongson > platform, this is useful to point out the current used mainboard type and > BIOS version when there exists problems related with hardware or firmware. Hi Tiezhu, You're touching Kernel userspace API and I believe it should be documented. Also linux-api list should be informed. Also I'd like to know if it's really useful for mainline kernel. For user who wants to check board information, dmidecode is already useful enough. Thanks. - Jiaxun > > E.g. with this patch: > > [loongson@linux ~]$ cat /proc/boardinfo > Board Info > Manufacturer : LEMOTE > Board Name : LEMOTE-LS3A4000-7A1000-1w-V01-pc > Family : LOONGSON3 > > BIOS Info > Vendor : Kunlun > Version : Kunlun-A1901-V4.1.3-20200414093938 > ROM Size : 4 KB > Release Date : 2020-04-14 > > Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn> > --- >
On 10/10/2020 04:01 PM, Jiaxun Yang wrote: > > > 在 2020/10/9 下午6:57, Tiezhu Yang 写道: >> Add /proc/boardinfo to get mainboard and BIOS info easily on the >> Loongson >> platform, this is useful to point out the current used mainboard type >> and >> BIOS version when there exists problems related with hardware or >> firmware. > > Hi Tiezhu, > > You're touching Kernel userspace API and I believe it should be > documented. Also linux-api list > should be informed. [RESEND due to the following reason: Can not connect to recipient's server because of unstable network or firewall filter. rcpt handle timeout,last handle info: Host vger.kernel.org(23.128.96.18) command RCPT TO respond timeout or disconnected] Hi Jiaxun, Thanks for your suggestion. I will do it as soon as possible and then send v2. > > Also I'd like to know if it's really useful for mainline kernel. > For user who wants to check board information, dmidecode is already > useful enough. There is no SMBIOS and dmidecode can see nothing on some machines, like this: [root@linux loongson]# dmidecode # dmidecode 2.12 # No SMBIOS nor DMI entry point found, sorry. So I think it is useful. Thanks, Tiezhu Yang > > Thanks. > > - Jiaxun > >> >> E.g. with this patch: >> >> [loongson@linux ~]$ cat /proc/boardinfo >> Board Info >> Manufacturer : LEMOTE >> Board Name : LEMOTE-LS3A4000-7A1000-1w-V01-pc >> Family : LOONGSON3 >> >> BIOS Info >> Vendor : Kunlun >> Version : Kunlun-A1901-V4.1.3-20200414093938 >> ROM Size : 4 KB >> Release Date : 2020-04-14 >> >> Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn> >> --- >>
Hi! > Add /proc/boardinfo to get mainboard and BIOS info easily on the Loongson > platform, this is useful to point out the current used mainboard type and > BIOS version when there exists problems related with hardware or firmware. > > E.g. with this patch: > > [loongson@linux ~]$ cat /proc/boardinfo > Board Info > Manufacturer : LEMOTE > Board Name : LEMOTE-LS3A4000-7A1000-1w-V01-pc > Family : LOONGSON3 > > BIOS Info > Vendor : Kunlun > Version : Kunlun-A1901-V4.1.3-20200414093938 > ROM Size : 4 KB > Release Date : 2020-04-14 Please put this into /sys somewhere, with usual rules. This is hard to extend/parse. Pavel
On 10/16/2020 09:11 PM, Pavel Machek wrote: > Hi! > >> Add /proc/boardinfo to get mainboard and BIOS info easily on the Loongson >> platform, this is useful to point out the current used mainboard type and >> BIOS version when there exists problems related with hardware or firmware. >> >> E.g. with this patch: >> >> [loongson@linux ~]$ cat /proc/boardinfo >> Board Info >> Manufacturer : LEMOTE >> Board Name : LEMOTE-LS3A4000-7A1000-1w-V01-pc >> Family : LOONGSON3 >> >> BIOS Info >> Vendor : Kunlun >> Version : Kunlun-A1901-V4.1.3-20200414093938 >> ROM Size : 4 KB >> Release Date : 2020-04-14 > Please put this into /sys somewhere, with usual rules. This is hard to > extend/parse. Hi Pavel, Thanks for your suggestion. I submitted a new version some days ago. [1/2] MIPS: Loongson64: Add /sys/firmware/lefi/boardinfo https://lore.kernel.org/patchwork/patch/1320574/ [2/2] Documentation: ABI: Add /sys/firmware/lefi/boardinfo description for Loongson64 https://lore.kernel.org/patchwork/patch/1320573/ Thanks, Tiezhu > > Pavel >
diff --git a/arch/mips/include/asm/mach-loongson64/boot_param.h b/arch/mips/include/asm/mach-loongson64/boot_param.h index afc92b7..4592841 100644 --- a/arch/mips/include/asm/mach-loongson64/boot_param.h +++ b/arch/mips/include/asm/mach-loongson64/boot_param.h @@ -228,6 +228,10 @@ struct loongson_system_configuration { extern struct efi_memory_map_loongson *loongson_memmap; extern struct loongson_system_configuration loongson_sysconf; +extern struct board_devices *eboard; +extern struct interface_info *einter; +extern struct loongson_special_attribute *especial; + extern u32 node_id_offset; extern void ls7a_early_config(void); extern void rs780e_early_config(void); diff --git a/arch/mips/loongson64/Makefile b/arch/mips/loongson64/Makefile index 39c06f5..bc77b5a 100644 --- a/arch/mips/loongson64/Makefile +++ b/arch/mips/loongson64/Makefile @@ -3,7 +3,7 @@ # Makefile for Loongson-3 family machines # obj-$(CONFIG_MACH_LOONGSON64) += cop2-ex.o platform.o dma.o \ - setup.o init.o env.o time.o reset.o \ + setup.o init.o env.o time.o reset.o boardinfo.o\ obj-$(CONFIG_SMP) += smp.o obj-$(CONFIG_NUMA) += numa.o diff --git a/arch/mips/loongson64/boardinfo.c b/arch/mips/loongson64/boardinfo.c new file mode 100644 index 0000000..2e8086b --- /dev/null +++ b/arch/mips/loongson64/boardinfo.c @@ -0,0 +1,40 @@ +// SPDX-License-Identifier: GPL-2.0 +#include <linux/fs.h> +#include <linux/init.h> +#include <linux/proc_fs.h> +#include <linux/seq_file.h> +#include <linux/module.h> +#include <boot_param.h> + +static int loongson_boardinfo_proc_show(struct seq_file *m, void *v) +{ + char board_manufacturer[64] = {0}; + char *tmp_board_manufacturer = board_manufacturer; + char bios_vendor[64] = {0}; + char *tmp_bios_vendor = bios_vendor; + + strcpy(board_manufacturer, eboard->name); + strcpy(bios_vendor, einter->description); + + seq_puts(m, "Board Info\n"); + seq_printf(m, "Manufacturer\t\t: %s\n", strsep(&tmp_board_manufacturer, "-")); + seq_printf(m, "Board Name\t\t: %s\n", eboard->name); + seq_puts(m, "Family\t\t\t: LOONGSON3\n"); + seq_puts(m, "\n"); + + seq_puts(m, "BIOS Info\n"); + seq_printf(m, "Vendor\t\t\t: %s\n", strsep(&tmp_bios_vendor, "-")); + seq_printf(m, "Version\t\t\t: %s\n", einter->description); + seq_printf(m, "ROM Size\t\t: %d KB\n", einter->size); + seq_printf(m, "Release Date\t\t: %s\n", especial->special_name); + + return 0; +} + +static int __init proc_boardinfo_init(void) +{ + proc_create_single("boardinfo", 0, NULL, loongson_boardinfo_proc_show); + return 0; +} + +module_init(proc_boardinfo_init); diff --git a/arch/mips/loongson64/env.c b/arch/mips/loongson64/env.c index 134cb8e..51a5d05 100644 --- a/arch/mips/loongson64/env.c +++ b/arch/mips/loongson64/env.c @@ -28,6 +28,10 @@ EXPORT_SYMBOL(cpu_clock_freq); struct efi_memory_map_loongson *loongson_memmap; struct loongson_system_configuration loongson_sysconf; +struct board_devices *eboard; +struct interface_info *einter; +struct loongson_special_attribute *especial; + u64 loongson_chipcfg[MAX_PACKAGES] = {0xffffffffbfc00180}; u64 loongson_chiptemp[MAX_PACKAGES]; u64 loongson_freqctrl[MAX_PACKAGES]; @@ -57,6 +61,12 @@ void __init prom_init_env(void) ((u64)loongson_p + loongson_p->system_offset); ecpu = (struct efi_cpuinfo_loongson *) ((u64)loongson_p + loongson_p->cpu_offset); + eboard = (struct board_devices *) + ((u64)loongson_p + loongson_p->boarddev_table_offset); + einter = (struct interface_info *) + ((u64)loongson_p + loongson_p->interface_offset); + especial = (struct loongson_special_attribute *) + ((u64)loongson_p + loongson_p->special_offset); eirq_source = (struct irq_source_routing_table *) ((u64)loongson_p + loongson_p->irq_offset); loongson_memmap = (struct efi_memory_map_loongson *)
Add /proc/boardinfo to get mainboard and BIOS info easily on the Loongson platform, this is useful to point out the current used mainboard type and BIOS version when there exists problems related with hardware or firmware. E.g. with this patch: [loongson@linux ~]$ cat /proc/boardinfo Board Info Manufacturer : LEMOTE Board Name : LEMOTE-LS3A4000-7A1000-1w-V01-pc Family : LOONGSON3 BIOS Info Vendor : Kunlun Version : Kunlun-A1901-V4.1.3-20200414093938 ROM Size : 4 KB Release Date : 2020-04-14 Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn> --- arch/mips/include/asm/mach-loongson64/boot_param.h | 4 +++ arch/mips/loongson64/Makefile | 2 +- arch/mips/loongson64/boardinfo.c | 40 ++++++++++++++++++++++ arch/mips/loongson64/env.c | 10 ++++++ 4 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 arch/mips/loongson64/boardinfo.c