arm64: dmi: Add SMBIOS/DMI support
SMBIOS is important for server hardware vendors. It implements a spec for providing descriptive information about the platform. Things like serial numbers, physical layout of the ports, build configuration data, and the like. Signed-off-by: Yi Li <yi.li@linaro.org> Tested-by: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com> Tested-by: Leif Lindholm <leif.lindholm@linaro.org> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
This commit is contained in:
parent
fc43026278
commit
d1ae8c0057
|
@ -401,6 +401,17 @@ config EFI
|
||||||
allow the kernel to be booted as an EFI application. This
|
allow the kernel to be booted as an EFI application. This
|
||||||
is only useful on systems that have UEFI firmware.
|
is only useful on systems that have UEFI firmware.
|
||||||
|
|
||||||
|
config DMI
|
||||||
|
bool "Enable support for SMBIOS (DMI) tables"
|
||||||
|
depends on EFI
|
||||||
|
default y
|
||||||
|
help
|
||||||
|
This enables SMBIOS/DMI feature for systems.
|
||||||
|
|
||||||
|
This option is only useful on systems that have UEFI firmware.
|
||||||
|
However, even with this option, the resultant kernel should
|
||||||
|
continue to boot on existing non-UEFI platforms.
|
||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
menu "Userspace binary formats"
|
menu "Userspace binary formats"
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
/*
|
||||||
|
* arch/arm64/include/asm/dmi.h
|
||||||
|
*
|
||||||
|
* Copyright (C) 2013 Linaro Limited.
|
||||||
|
* Written by: Yi Li (yi.li@linaro.org)
|
||||||
|
*
|
||||||
|
* based on arch/ia64/include/asm/dmi.h
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __ASM_DMI_H
|
||||||
|
#define __ASM_DMI_H
|
||||||
|
|
||||||
|
#include <linux/io.h>
|
||||||
|
#include <linux/slab.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* According to section 2.3.6 of the UEFI spec, the firmware should not
|
||||||
|
* request a virtual mapping for configuration tables such as SMBIOS.
|
||||||
|
* This means we have to map them before use.
|
||||||
|
*/
|
||||||
|
#define dmi_early_remap(x, l) ioremap_cache(x, l)
|
||||||
|
#define dmi_early_unmap(x, l) iounmap(x)
|
||||||
|
#define dmi_remap(x, l) ioremap_cache(x, l)
|
||||||
|
#define dmi_unmap(x) iounmap(x)
|
||||||
|
#define dmi_alloc(l) kzalloc(l, GFP_KERNEL)
|
||||||
|
|
||||||
|
#endif
|
|
@ -11,6 +11,7 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <linux/dmi.h>
|
||||||
#include <linux/efi.h>
|
#include <linux/efi.h>
|
||||||
#include <linux/export.h>
|
#include <linux/export.h>
|
||||||
#include <linux/memblock.h>
|
#include <linux/memblock.h>
|
||||||
|
@ -469,3 +470,15 @@ err_unmap:
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
early_initcall(arm64_enter_virtual_mode);
|
early_initcall(arm64_enter_virtual_mode);
|
||||||
|
|
||||||
|
static int __init arm64_dmi_init(void)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* On arm64, DMI depends on UEFI, and dmi_scan_machine() needs to
|
||||||
|
* be called early because dmi_id_init(), which is an arch_initcall
|
||||||
|
* itself, depends on dmi_scan_machine() having been called already.
|
||||||
|
*/
|
||||||
|
dmi_scan_machine();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
core_initcall(arm64_dmi_init);
|
||||||
|
|
Loading…
Reference in New Issue