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-prev] [thread-next>] [day] [month] [year] [list]
Date:	Wed, 26 Sep 2007 11:42:16 -0700
From:	Jonathan Campbell <jon@...dgrounds.com>
To:	Randy Dunlap <randy.dunlap@...cle.com>
CC:	linux-kernel@...r.kernel.org
Subject: Re: [PATCH] Patches for tiny 386 kernels, again. Linux kernel 2.6.22.7

Here is the DMI patch again, written against linux-2.6.23-rc8,
with some of the #ifdef CONFIG_DMI's removed and moved
to include/linux/dmi.h. Putting them there in the way I've done
ensures that you don't have to put #ifdef CONFIG_DMI
around each dmi_check_machine() and that you don't
have to apply little patches to so many device drivers.

diff -u -r linux-2.6.23-rc8-old/arch/i386/Kconfig 
linux-2.6.23-rc8/arch/i386/Kconfig
--- linux-2.6.23-rc8-old/arch/i386/Kconfig    2007-09-21 
22:38:23.000000000 +0000
+++ linux-2.6.23-rc8/arch/i386/Kconfig    2007-09-26 00:01:48.000000000 
+0000
@@ -83,10 +83,6 @@
     bool
     default y
 
-config DMI
-    bool
-    default y
-
 source "init/Kconfig"
 
 menu "Processor type and features"
diff -u -r linux-2.6.23-rc8-old/arch/i386/kernel/acpi/boot.c 
linux-2.6.23-rc8/arch/i386/kernel/acpi/boot.c
--- linux-2.6.23-rc8-old/arch/i386/kernel/acpi/boot.c    2007-09-21 
22:38:23.000000000 +0000
+++ linux-2.6.23-rc8/arch/i386/kernel/acpi/boot.c    2007-09-26 
00:40:42.000000000 +0000
@@ -869,7 +869,7 @@
     return;
 }
 
-#ifdef __i386__
+#if defined(__i386__) && defined(CONFIG_DMI)
 
 static int __init disable_acpi_irq(struct dmi_system_id *d)
 {
@@ -1097,8 +1097,7 @@
      },
     {}
 };
-
-#endif                /* __i386__ */
+#endif /* CONFIG_DMI && __i386__ */
 
 /*
  * acpi_boot_table_init() and acpi_boot_init()
diff -u -r linux-2.6.23-rc8-old/arch/i386/kernel/acpi/sleep.c 
linux-2.6.23-rc8/arch/i386/kernel/acpi/sleep.c
--- linux-2.6.23-rc8-old/arch/i386/kernel/acpi/sleep.c    2007-09-21 
22:38:23.000000000 +0000
+++ linux-2.6.23-rc8/arch/i386/kernel/acpi/sleep.c    2007-09-25 
23:59:14.000000000 +0000
@@ -86,6 +86,7 @@
     return 0;
 }
 
+#ifdef CONFIG_DMI
 static __initdata struct dmi_system_id acpisleep_dmi_table[] = {
     {            /* Reset video mode after returning from ACPI S3 sleep */
      .callback = reset_videomode_after_s3,
@@ -104,3 +105,5 @@
 }
 
 core_initcall(acpisleep_dmi_init);
+#endif
+
diff -u -r 
linux-2.6.23-rc8-old/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c 
linux-2.6.23-rc8/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c
--- linux-2.6.23-rc8-old/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c    
2007-09-21 22:38:23.000000000 +0000
+++ linux-2.6.23-rc8/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c    
2007-09-26 00:59:26.000000000 +0000
@@ -535,7 +535,7 @@
     return 0;
 }
 
-#ifdef CONFIG_SMP
+#if defined(CONFIG_SMP) && defined(CONFIG_DMI)
 /*
  * Some BIOSes do SW_ANY coordination internally, either set it up in hw
  * or do it in BIOS firmware and won't inform about it to OS. If not
@@ -562,7 +562,9 @@
     },
     { }
 };
-#endif
+#else
+#  define bios_with_sw_any_bug 0
+#endif /* CONFIG_SMP && CONFIG_DMI */
 
 static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy)
 {
diff -u -r linux-2.6.23-rc8-old/arch/i386/kernel/reboot.c 
linux-2.6.23-rc8/arch/i386/kernel/reboot.c
--- linux-2.6.23-rc8-old/arch/i386/kernel/reboot.c    2007-09-21 
22:38:23.000000000 +0000
+++ linux-2.6.23-rc8/arch/i386/kernel/reboot.c    2007-09-26 
01:00:08.000000000 +0000
@@ -71,6 +71,7 @@
 
 __setup("reboot=", reboot_setup);
 
+#ifdef CONFIG_DMI
 /*
  * Reboot options and system auto-detection code provided by
  * Dell Inc. so their systems "just work". :-)
@@ -131,6 +132,7 @@
     },
     { }
 };
+#endif /* CONFIG_DMI */
 
 static int __init reboot_init(void)
 {
diff -u -r linux-2.6.23-rc8-old/arch/i386/kernel/tsc.c 
linux-2.6.23-rc8/arch/i386/kernel/tsc.c
--- linux-2.6.23-rc8-old/arch/i386/kernel/tsc.c    2007-09-21 
22:38:23.000000000 +0000
+++ linux-2.6.23-rc8/arch/i386/kernel/tsc.c    2007-09-26 
00:39:52.000000000 +0000
@@ -290,6 +290,7 @@
 }
 EXPORT_SYMBOL_GPL(mark_tsc_unstable);
 
+#ifdef CONFIG_DMI
 static int __init dmi_mark_tsc_unstable(struct dmi_system_id *d)
 {
     printk(KERN_NOTICE "%s detected: marking TSC unstable.\n",
@@ -310,6 +311,7 @@
      },
      {}
 };
+#endif
 
 /*
  * Make an educated guess if the TSC is trustworthy and synchronized
diff -u -r linux-2.6.23-rc8-old/arch/i386/mach-generic/bigsmp.c 
linux-2.6.23-rc8/arch/i386/mach-generic/bigsmp.c
--- linux-2.6.23-rc8-old/arch/i386/mach-generic/bigsmp.c    2007-09-21 
22:38:23.000000000 +0000
+++ linux-2.6.23-rc8/arch/i386/mach-generic/bigsmp.c    2007-09-26 
00:57:13.000000000 +0000
@@ -21,6 +21,7 @@
 
 static int dmi_bigsmp; /* can be set by dmi scanners */
 
+#ifdef CONFIG_DMI
 static int hp_ht_bigsmp(struct dmi_system_id *d)
 {
 #ifdef CONFIG_X86_GENERICARCH
@@ -30,7 +31,6 @@
     return 0;
 }
 
-
 static struct dmi_system_id bigsmp_dmi_table[] = {
     { hp_ht_bigsmp, "HP ProLiant DL760 G2", {
         DMI_MATCH(DMI_BIOS_VENDOR, "HP"),
@@ -43,7 +43,7 @@
      }},
      { }
 };
-
+#endif /* CONFIG_DMI */
 
 static int probe_bigsmp(void)
 {
diff -u -r linux-2.6.23-rc8-old/arch/i386/pci/fixup.c 
linux-2.6.23-rc8/arch/i386/pci/fixup.c
--- linux-2.6.23-rc8-old/arch/i386/pci/fixup.c    2007-09-21 
22:38:23.000000000 +0000
+++ linux-2.6.23-rc8/arch/i386/pci/fixup.c    2007-09-26 
01:17:23.000000000 +0000
@@ -367,6 +367,7 @@
  */
 static u16 toshiba_line_size;
 
+#ifdef CONFIG_DMI
 static struct dmi_system_id __devinitdata toshiba_ohci1394_dmi_table[] = {
     {
         .ident = "Toshiba PS5 based laptop",
@@ -391,6 +392,7 @@
     },
     { }
 };
+#endif
 
 static void __devinit pci_pre_fixup_toshiba_ohci1394(struct pci_dev *dev)
 {
diff -u -r linux-2.6.23-rc8-old/drivers/acpi/Kconfig 
linux-2.6.23-rc8/drivers/acpi/Kconfig
--- linux-2.6.23-rc8-old/drivers/acpi/Kconfig    2007-09-21 
22:38:23.000000000 +0000
+++ linux-2.6.23-rc8/drivers/acpi/Kconfig    2007-09-25 
23:59:14.000000000 +0000
@@ -263,6 +263,7 @@
 
 config ACPI_BLACKLIST_YEAR
     int "Disable ACPI for systems before Jan 1st this year" if X86_32
+    depends on DMI
     default 0
     help
       enter a 4-digit year, eg. 2001 to disable ACPI by default
diff -u -r linux-2.6.23-rc8-old/drivers/acpi/blacklist.c 
linux-2.6.23-rc8/drivers/acpi/blacklist.c
--- linux-2.6.23-rc8-old/drivers/acpi/blacklist.c    2007-09-21 
22:38:23.000000000 +0000
+++ linux-2.6.23-rc8/drivers/acpi/blacklist.c    2007-09-26 
01:06:59.000000000 +0000
@@ -73,7 +73,7 @@
     {""}
 };
 
-#if    CONFIG_ACPI_BLACKLIST_YEAR
+#if defined(CONFIG_ACPI_BLACKLIST_YEAR) && CONFIG_ACPI_BLACKLIST_YEAR > 0
 
 static int __init blacklist_by_year(void)
 {
diff -u -r linux-2.6.23-rc8-old/drivers/acpi/processor_idle.c 
linux-2.6.23-rc8/drivers/acpi/processor_idle.c
--- linux-2.6.23-rc8-old/drivers/acpi/processor_idle.c    2007-09-21 
22:38:23.000000000 +0000
+++ linux-2.6.23-rc8/drivers/acpi/processor_idle.c    2007-09-26 
01:08:00.000000000 +0000
@@ -85,6 +85,7 @@
                                 Power Management
    
-------------------------------------------------------------------------- 
*/
 
+#ifdef CONFIG_DMI
 /*
  * IBM ThinkPad R40e crashes mysteriously when going into C2 or C3.
  * For now disable this. Probably a bug somewhere else.
@@ -165,6 +166,7 @@
      (void *)2},
     {},
 };
+#endif // CONFIG_DMI
 
 static inline u32 ticks_elapsed(u32 t1, u32 t2)
 {
diff -u -r linux-2.6.23-rc8-old/drivers/input/mouse/Kconfig 
linux-2.6.23-rc8/drivers/input/mouse/Kconfig
--- linux-2.6.23-rc8-old/drivers/input/mouse/Kconfig    2007-09-21 
22:38:23.000000000 +0000
+++ linux-2.6.23-rc8/drivers/input/mouse/Kconfig    2007-09-26 
01:12:13.000000000 +0000
@@ -60,7 +60,7 @@
 config MOUSE_PS2_SYNAPTICS
     bool "Synaptics PS/2 mouse protocol extension" if EMBEDDED
     default y
-    depends on MOUSE_PS2
+    depends on MOUSE_PS2 && DMI
     help
       Say Y here if you have a Synaptics PS/2 TouchPad connected to
       your system.
@@ -70,7 +70,7 @@
 config MOUSE_PS2_LIFEBOOK
     bool "Fujitsu Lifebook PS/2 mouse protocol extension" if EMBEDDED
     default y
-    depends on MOUSE_PS2
+    depends on MOUSE_PS2 && DMI
     help
       Say Y here if you have a Fujitsu B-series Lifebook PS/2
       TouchScreen connected to your system.
diff -u -r linux-2.6.23-rc8-old/drivers/input/serio/i8042-x86ia64io.h 
linux-2.6.23-rc8/drivers/input/serio/i8042-x86ia64io.h
--- linux-2.6.23-rc8-old/drivers/input/serio/i8042-x86ia64io.h    
2007-09-21 22:38:23.000000000 +0000
+++ linux-2.6.23-rc8/drivers/input/serio/i8042-x86ia64io.h    2007-09-26 
01:19:54.000000000 +0000
@@ -63,7 +63,7 @@
     outb(val, I8042_COMMAND_REG);
 }
 
-#if defined(__i386__)
+#if defined(__i386__) && defined(CONFIG_DMI)
 
 #include <linux/dmi.h>
 
@@ -472,7 +472,7 @@
         i8042_reset = 1;
 #endif
 
-#if defined(__i386__)
+#if defined(__i386__) && defined(CONFIG_DMI)
     if (dmi_check_system(i8042_dmi_noloop_table))
         i8042_noloop = 1;
 
diff -u -r linux-2.6.23-rc8-old/include/linux/dmi.h 
linux-2.6.23-rc8/include/linux/dmi.h
--- linux-2.6.23-rc8-old/include/linux/dmi.h    2007-09-21 
22:38:23.000000000 +0000
+++ linux-2.6.23-rc8/include/linux/dmi.h    2007-09-26 
01:34:13.000000000 +0000
@@ -73,12 +73,24 @@
 
 #else
 
-static inline int dmi_check_system(struct dmi_system_id *list) { return 
0; }
+/* use the C preprocessor to toss out the DMI id list, and redirect
+ * to an inline function that reduces down to 0 (failure). this
+ * satisfies code using this in if () ... else ... statements that
+ * do not use brackets where #define dmi_check_list(list) 0 would
+ * give many "statement reduces to nothing" errors. { } is a
+ * possibility except that many parts of the kernel do in fact
+ * check the return value, { } would result in a syntax error.
+ * we toss out the param because the list is included only if
+ * #ifdef CONFIG_DMI. without DMI the id list is not used, and
+ * a waste of memory, so it is #ifdef'd out. */
+#define dmi_check_system(list) dmi_check_system_NOTHING()
+static inline int dmi_check_system_NOTHING(void) { return 0; }
+
 static inline char * dmi_get_system_info(int field) { return NULL; }
-static inline struct dmi_device * dmi_find_device(int type, const char 
*name,
-    struct dmi_device *from) { return NULL; }
-static inline int dmi_get_year(int year) { return 0; }
-static inline int dmi_name_in_vendors(char *s) { return 0; }
+#define dmi_find_device(type,name,from) NULL
+#define dmi_scan_machine() { }
+static inline int dmi_get_year(int field) { return 0; }
+static inline int dmi_name_in_vendors(char *str) { return 0; }
 
 #endif
 
diff -u -r linux-2.6.23-rc8-old/init/Kconfig linux-2.6.23-rc8/init/Kconfig
--- linux-2.6.23-rc8-old/init/Kconfig    2007-09-21 22:38:23.000000000 +0000
+++ linux-2.6.23-rc8/init/Kconfig    2007-09-26 00:03:05.000000000 +0000
@@ -542,6 +542,18 @@
       on EMBEDDED systems.  /proc/vmstat will only show page counts
       if VM event counters are disabled.
 
+config DMI
+    default y
+    bool "Enable DMI support" if EMBEDDED
+    depends on X86
+    help
+      This enables support for processing the Desktop Management
+      Interface structures present in most modern BIOSes. If you are
+      building a kernel for an older Pentium, 486, or 386 system and
+      memory is tight, you can disable this to help reduce the size
+      of your kernel by about 6K.
+      If unsure, say Y.
+
 config SLUB_DEBUG
     default y
     bool "Enable SLUB debugging support" if EMBEDDED

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ