Re: [PATCH v2 3/4 RESEND] MIPS: Loongson64: Add /proc/boardinfo

From: Jiaxun Yang
Date: Mon Oct 12 2020 - 22:40:57 EST




于 2020年10月12日 GMT+08:00 下午8:02:25, Tiezhu Yang <yangtiezhu@xxxxxxxxxxx> 写到:
>On 10/12/2020 06:38 PM, Thomas Bogendoerfer wrote:
>> On Sun, Oct 11, 2020 at 07:47:53AM +0800, Tiezhu Yang wrote:
>>> 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
>> Why does Loongson64 need this extra file no other architecture or MIPS
>> platform need ? Do others provide this information via a different method ?
>> If yes, why can't Loongson64 do the same ?
>
>Hi Thomas,
>
>This is related with the implementation of firmware.
>
>Using dmidecode command can get the similar info if there exists SMBIOS
>in firmware, but the fact is there is no SMBIOS on some machines, we can
>see nothing when execute dmidecode, like this:
>
>[root@linux loongson]# dmidecode
># dmidecode 2.12
># No SMBIOS nor DMI entry point found, sorry.
>
>The following three structures are already defined in the interface
>specification about firmware and kernel on the Loongson platform,
>this is common requirement and specific for Loongson64, so add a
>new boardinfo.c file in arch/mips/loongson64.
>
>arch/mips/include/asm/mach-loongson64/boot_param.h
>struct interface_info {
> u16 vers; /* version of the specificition */
> u16 size;
> u8 flag;
> char description[64];
>} __packed;
>
>struct board_devices {
> char name[64]; /* hold the device name */
> u32 num_resources; /* number of device_resource */
> /* for each device's resource */
> struct resource_loongson resource[MAX_RESOURCE_NUMBER];
> /* arch specific additions */
> struct archdev_data archdata;
>};
>
>struct loongson_special_attribute {
> u16 vers; /* version of this special */
> char special_name[64]; /* special_atribute_name */
> u32 loongson_special_type; /* type of special device */
> /* for each device's resource */
> struct resource_loongson resource[MAX_RESOURCE_NUMBER];
>};

Hi Tiezhu,

Through I don't think touching top level of proc would be a good idea. It's all about API consistency.

If you intend to provide user an interface then I guess /sys/firmware/lefi
like what DMI did or somewhere less critical is better.

There is no guarantee that Loongson64 device would come with LEFI,
although it's mandatory for now.

Thanks.

- Jiaxun

>
>Thanks,
>Tiezhu
>
>>
>> Thomas.
>>