Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0b188d57 authored by Yi Li's avatar Yi Li Committed by Kees Cook
Browse files

UPSTREAM: 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: default avatarYi Li <yi.li@linaro.org>
Tested-by: default avatarSuravee Suthikulpanit <suravee.suthikulpanit@amd.com>
Tested-by: default avatarLeif Lindholm <leif.lindholm@linaro.org>
Signed-off-by: default avatarArd Biesheuvel <ard.biesheuvel@linaro.org>

(cherry picked from commit d1ae8c0057921681ca489bba7efbfacbb60d0f28)
Signed-off-by: default avatarTomasz Figa <tfiga@chromium.org>

Bug: 24475017

Change-Id: Ia4495a2335bab1b5e626a6bcd5df4ab1d287a27d
Signed-off-by: default avatarKees Cook <keescook@google.com>
parent 9390abcd
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -520,6 +520,17 @@ config BUILD_ARM64_APPENDED_DTB_IMAGE_NAMES
	  Space separated list of names of dtbs to append when
	  building a concatenated Image.gz-dtb.

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

menu "Userspace binary formats"
+31 −0
Original line number Diff line number Diff line
/*
 * 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
+13 −0
Original line number Diff line number Diff line
@@ -11,6 +11,7 @@
 *
 */

#include <linux/dmi.h>
#include <linux/efi.h>
#include <linux/export.h>
#include <linux/memblock.h>
@@ -469,3 +470,15 @@ err_unmap:
	return -1;
}
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);