lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20080211175844.3358a49b@crazy>
Date:	Mon, 11 Feb 2008 17:58:44 +0100
From:	Thomas Petazzoni <thomas.petazzoni@...e-electrons.com>
To:	Andrew Morton <akpm@...ux-foundation.org>,
	Ingo Molnar <mingo@...e.hu>,
	Thomas Gleixner <tglx@...utronix.de>,
	"H. Anvin" <hpa@...or.com>, Matt Mackall <mpm@...enic.com>
Cc:	Linux-tiny@...enic.com, linux-kernel@...r.kernel.org
Subject: [PATCH] Configure out DMI scanning code

Hi,

The enclosed patch allows to remove the DMI scanning code when
CONFIG_EMBEDDED is defined. It's basically the dma_blacklist patch of
Linux-Tiny ported to 2.6.25-rc1, with the required modifications. It
allows to remove ~10k from the kernel code/data size.

On top of this patch, I've tested if removing the big dmi tables in the
code (for example in arch/x86/kernel/reboot.c) would allow to make more
space optimizations. However, it seems that simply defining
dmi_check_system() to an empty static inlined function already allows
gcc to optimize out the dmi tables, because there are not present in
the code. Is that possible, or is my understanding incorrect ?

Of course, your comments on this patch are more than welcome.

Thanks!

Thomas

---

Turn CONFIG_DMI into a selectable option if EMBEDDED is defined, in
order to be able to remove the DMI table scanning code if it's not
needed, and then reduce the kernel code size.

With CONFIG_DMI (i.e before) :

   text    data     bss     dec     hex filename
1076076  128656   98304 1303036  13e1fc vmlinux

Without CONFIG_DMI (i.e after) :

   text    data     bss     dec     hex filename
1068092  126308   98304 1292704  13b9a0 vmlinux

Result:

   text    data     bss     dec     hex filename
  -7984   -2348       0  -10332   -285c vmlinux

The new option appears in "Processor type and features", only when
CONFIG_EMBEDDED is defined.

Signed-Off-By: Thomas Petazzoni <thomas.petazzoni@...e-electrons.com>
---
 arch/x86/Kconfig    |   12 +++++++++---
 include/linux/dmi.h |    1 +
 2 files changed, 10 insertions(+), 3 deletions(-)

Index: linux/arch/x86/Kconfig
===================================================================
--- linux.orig/arch/x86/Kconfig	2008-02-11 16:51:50.000000000 +0100
+++ linux/arch/x86/Kconfig	2008-02-11 17:48:15.000000000 +0100
@@ -88,9 +88,6 @@
 config ARCH_MAY_HAVE_PC_FDC
 	def_bool y
 
-config DMI
-	def_bool y
-
 config RWSEM_GENERIC_SPINLOCK
 	def_bool !X86_XADD
 
@@ -433,6 +430,15 @@
 
 # Mark as embedded because too many people got it wrong.
 # The code disables itself when not needed.
+config DMI
+	default y
+	bool "Enable DMI scanning" if EMBEDDED
+	help
+	  Enabled scanning of DMI to identify machine quirks. Say Y
+	  here unless you have verified that your setup is not
+	  affected by entries in the DMI blacklist. Required by PNP
+	  BIOS code.
+
 config GART_IOMMU
 	bool "GART IOMMU support" if EMBEDDED
 	default y
Index: linux/include/linux/dmi.h
===================================================================
--- linux.orig/include/linux/dmi.h	2008-02-11 16:51:30.000000000 +0100
+++ linux/include/linux/dmi.h	2008-02-11 17:40:31.000000000 +0100
@@ -90,6 +90,7 @@
 static inline const char * dmi_get_system_info(int field) { return NULL; }
 static inline const struct dmi_device * dmi_find_device(int type, const char *name,
 	const struct dmi_device *from) { return NULL; }
+static inline void dmi_scan_machine(void) { return; }
 static inline int dmi_get_year(int year) { return 0; }
 static inline int dmi_name_in_vendors(const char *s) { return 0; }
 #define dmi_available 0


-- 
Thomas Petazzoni, Free Electrons
Free Embedded Linux Training Materials
on http://free-electrons.com/training
(More than 1500 pages!)

Download attachment "signature.asc" of type "application/pgp-signature" (190 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ