On Sat, 2008-01-26 at 00:18 +0100, Ingo Molnar wrote:
> * Greg KH <[EMAIL PROTECTED]> wrote:
> 
> > > Please! :-)
> > 
> > Yes, I do agree that this is important, I'll work to not let this 
> > happen again.  Especially now that I have your build scripts, I'm 
> > working on setting up something like that myself here.
> 
> btw., Harvey Harrison has cleaned them up some more, and has told me 
> about KCONFIG_ALLCONFIG, which is very useful when you want to tailor 
> randconfig builds to different testsystems (which might have different 
> minimum driver requirements and different distro requirements for kernel 
> features). Harvey, could you send the latest version of those 
> auto-Kconfig cleanups?

Sorry, I've been a bit laid up with illness to pull out any upstreamable
pieces.  Attached is the original version I sent to you that still has
the Ingo-specific need_config file.  Hopefully I'll be back in action
and can finish this soon.

This is functionally equivalent to Ingo's patch at:

http://people.redhat.com/mingo/auto-qa-patches/Kconfig-qa.patch

Instead, create a need_config file and invoke randconfig as:

make randconfig KCONFIG_ALLCONFIG=need_config

Signed-off-by: Harvey Harrison <[EMAIL PROTECTED]>
---
Ingo, your QA patch ends up being much smaller and works exactly the
same as long as you invoke randconfig with the above.  I've included
a need_config file that has all of the options I removed from your patch
suitable for the above KCONFIG_ALLCONFIG use.

Cheers,

Harvey

 arch/x86/Kconfig        |   74 +++++++++++++++++++++++++++++++++++
 arch/x86/Kconfig.needed |   99
+++++++++++++++++++++++++++++++++++++++++++++++
 drivers/atm/Kconfig     |    1 +
 drivers/base/core.c     |    3 +
 init/Kconfig            |   13 ++++++
 init/main.c             |   56 ++++++++++++++++++++++++++
 kernel/time/Kconfig     |   13 ++++++
 lib/Kconfig             |    3 +
 need_config             |   85 ++++++++++++++++++++++++++++++++++++++++
 9 files changed, 347 insertions(+), 0 deletions(-)

diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 665e4b1..9061f77 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -164,6 +164,12 @@ config X86_TRAMPOLINE
 
 config KTIME_SCALAR
        def_bool X86_32
+
+config BOOTPARAM_SUPPORT
+       bool "bootparam support"
+       help
+         support for boot command-line parameters via .config
+
 source "init/Kconfig"
 
 menu "Processor type and features"
@@ -1204,6 +1210,66 @@ config COMPAT_VDSO
 
          If unsure, say Y.
 
+config BOOTPARAM_NMI_WATCHDOG_BIT_0
+       bool "bootparam: nmi_watchdog=X default value - bit 0"
+       depends on BOOTPARAM_SUPPORT
+       help
+         NMI watchdog default, bit 0. Useful for automated testing.
+
+config BOOTPARAM_NMI_WATCHDOG_BIT_1
+       bool "bootparam: nmi_watchdog=X default value - bit 1"
+       depends on BOOTPARAM_SUPPORT
+       help
+         NMI watchdog default, bit 1. Useful for automated testing.
+
+config BOOTPARAM_NOAPIC
+       bool "bootparam: noapic"
+       depends on BOOTPARAM_SUPPORT
+       help
+         if enabled, it has the effect as "noapic" on the boot line
+
+config BOOTPARAM_NOLAPIC
+       bool "bootparam: nolapic"
+       depends on BOOTPARAM_SUPPORT
+       help
+         if enabled, it has the effect as "nolapic" on the boot line
+
+config BOOTPARAM_LAPIC
+       bool "bootparam: lapic"
+       depends on BOOTPARAM_SUPPORT
+       help
+         if enabled, it has the effect as "lapic" on the boot line
+
+config BOOTPARAM_HPET_DISABLE
+       bool "bootparam: hpet=disable"
+       depends on BOOTPARAM_SUPPORT
+       help
+         if enabled, it has the effect as "hpet=disable" on the boot
line
+
+config BOOTPARAM_IDLE_MWAIT
+       bool "bootparam: idle=mwait"
+       depends on BOOTPARAM_SUPPORT
+       help
+         if enabled, it has the effect as "idle=mwait" on the boot line
+
+config BOOTPARAM_IDLE_POLL
+       bool "bootparam: idle=poll"
+       depends on BOOTPARAM_SUPPORT
+       help
+         if enabled, it has the effect as "idle=poll" on the boot line
+
+config BOOTPARAM_HIGHMEM_512M
+       bool "bootparam: highmem=512m"
+       depends on BOOTPARAM_SUPPORT
+       help
+         highmem=512m boot parameter. Useful for automated testing.
+
+config BOOTPARAM_NOPAT
+       bool "bootparam: nopat"
+       depends on BOOTPARAM_SUPPORT
+       help
+         if enabled, it has the effect as "nopat" on the boot line
+
 endmenu
 
 config ARCH_ENABLE_MEMORY_HOTPLUG
@@ -1612,3 +1678,11 @@ source "security/Kconfig"
 source "crypto/Kconfig"
 
 source "lib/Kconfig"
+
+config X86_32_ALWAYS_ON
+       bool
+       default y
+       depends on X86_32
+       select X86_PC
+       select PCI_GOANY
+
diff --git a/arch/x86/Kconfig.needed b/arch/x86/Kconfig.needed
new file mode 100644
index 0000000..b1f7ff0
--- /dev/null
+++ b/arch/x86/Kconfig.needed
@@ -0,0 +1,99 @@
+config FORCE_MINIMAL_CONFIG
+       bool
+       default y
+
+       select EXPERIMENTAL
+
+       select EXT3_FS
+       select EXT3_FS_XATTR
+       select EXT3_FS_POSIX_ACL
+       select EXT3_FS_SECURITY
+       select BLOCK
+       select HOTPLUG
+#select INOTIFY
+#select INOTIFY_USER
+
+       # so that capset() works (sudo, etc.):
+       select SECURITY
+       select SECURITY_CAPABILITIES
+       select BINFMT_ELF
+
+       select MSDOS_PARTITION
+       select PARTITION_ADVANCED
+       select BSD_DISKLABEL
+
+       select SYSFS
+       select SYSFS_DEPRECATED
+       select PROC_FS
+       select FUTEX
+
+select PACKET
+
+select NETPOLL
+select NETCONSOLE
+select NET_POLL_CONTROLLER
+select INET
+select NET
+select UNIX
+select NETDEVICES
+
+select SERIAL_8250
+select SERIAL_8250_CONSOLE
+select MAGIC_SYSRQ
+
+select INPUT
+select INPUT_MOUSEDEV
+select INPUT_POLLDEV
+select INPUT_KEYBOARD
+select KEYBOARD_ATKBD
+select SERIO
+select SERIO_I8042
+
+select VT
+select VT_CONSOLE
+select HW_CONSOLE
+select VGA_CONSOLE
+select EARLY_PRINTK
+select PRINTK
+select UNIX98_PTYS
+select STANDALONE
+select PREVENT_FIRMWARE_BUILD
+
+config FORCE_MINIMAL_CONFIG_64
+       bool
+       default y
+       depends on X86_64
+       select IA32_EMULATION
+
+config FORCE_MINIMAL_CONFIG_PHYS
+       bool
+       default y
+       depends on X86_64 || X86_32
+
+       select ATA
+       select SATA_AHCI
+       select ATA_PIIX
+       select PATA_AMD
+       select PATA_OLDPIIX
+       select BLK_DEV_SD
+
+       select E100
+       select E1000
+       select NET_ETHERNET
+       select NET_PCI
+       select MII
+       select CRC32
+
+       select 8139TOO
+       select FORCEDETH
+
+       select USB
+       select USB_MOUSE
+       select USB_EHCI_HCD
+       select USB_OHCI_HCD
+       select USB_UHCI_HCD
+       select USB_SUPPORT
+
+       select PCI
+
+
diff --git a/drivers/atm/Kconfig b/drivers/atm/Kconfig
index b554eda..caf4d20 100644
--- a/drivers/atm/Kconfig
+++ b/drivers/atm/Kconfig
@@ -344,6 +344,7 @@ config ATM_FORE200E_MAYBE
 config ATM_FORE200E_PCA
        bool "PCA-200E support"
        depends on ATM_FORE200E_MAYBE && PCI
+       select ATM_FORE200E_PCA_DEFAULT_FW if PREVENT_FIRMWARE_BUILD
        help
          Say Y here if you want your PCA-200E cards to be probed.
 
diff --git a/drivers/base/core.c b/drivers/base/core.c
index 2683eac..84e61f5 100644
--- a/drivers/base/core.c
+++ b/drivers/base/core.c
@@ -104,7 +104,10 @@ static void device_release(struct kobject * kobj)
                printk(KERN_ERR "Device '%s' does not have a release()
function, "
                        "it is broken and must be fixed.\n",
                        dev->bus_id);
+#if 0
+               // not a real bug:
                WARN_ON(1);
+#endif
        }
 }
 
diff --git a/init/Kconfig b/init/Kconfig
index b9d11a8..add6333 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -324,6 +324,19 @@ config CPUSETS
 
          Say N if unsure.
 
+config BOOTPARAM_MAXCPUS_1
+       bool "bootparam: maxcpus=1"
+       depends on BOOTPARAM_SUPPORT
+       help
+         if enabled, it has the effect as "maxcpus=1" on the boot line
+
+config BOOTPARAM_NOSMP
+       bool "bootparam: nosmp"
+       depends on BOOTPARAM_SUPPORT
+       help
+         if enabled, it has the effect as "nosmp" on the boot line
+
+
 config FAIR_GROUP_SCHED
        bool "Fair group CPU scheduler"
        default y
diff --git a/init/main.c b/init/main.c
index 7f57f7a..495dd7e 100644
--- a/init/main.c
+++ b/init/main.c
@@ -126,6 +126,58 @@ static char *static_command_line;
 static char *execute_command;
 static char *ramdisk_execute_command;
 
+const char bootparam_command_line [] =
+""
+#ifdef CONFIG_BOOTPARAM_MAXCPUS_1
+" maxcpus=1"
+#endif
+#ifdef CONFIG_BOOTPARAM_NOSMP
+" nosmp"
+#endif
+#ifdef CONFIG_BOOTPARAM_NO_HZ_OFF
+" no_hz=off"
+#endif
+#ifdef CONFIG_BOOTPARAM_HIGHRES_OFF
+" highres=0"
+#endif
+#if defined(CONFIG_BOOTPARAM_NMI_WATCHDOG_BIT_0) && \
+    !defined(CONFIG_BOOTPARAM_NMI_WATCHDOG_BIT_1)
+" nmi_watchdog=0"
+#endif
+#if !defined(CONFIG_BOOTPARAM_NMI_WATCHDOG_BIT_0) && \
+    defined(CONFIG_BOOTPARAM_NMI_WATCHDOG_BIT_1)
+" nmi_watchdog=1"
+#endif
+#if defined(CONFIG_BOOTPARAM_NMI_WATCHDOG_BIT_0) && \
+    defined(CONFIG_BOOTPARAM_NMI_WATCHDOG_BIT_1)
+" nmi_watchdog=2"
+#endif
+#ifdef CONFIG_BOOTPARAM_NOAPIC
+" noapic"
+#endif
+#ifdef CONFIG_BOOTPARAM_NOLAPIC
+" nolapic"
+#endif
+#ifdef CONFIG_BOOTPARAM_LAPIC
+" lapic"
+#endif
+#ifdef CONFIG_BOOTPARAM_HPET_DISABLE
+" hpet=disable"
+#endif
+#ifdef CONFIG_BOOTPARAM_IDLE_MWAIT
+" idle=mwait"
+#endif
+#ifdef CONFIG_BOOTPARAM_IDLE_POLL
+" idle=poll"
+#endif
+#ifdef CONFIG_BOOTPARAM_HIGHMEM_512M
+" highmem=512m"
+#endif
+#ifdef CONFIG_BOOTPARAM_NOPAT
+" nopat"
+#endif
+;
+
 #ifdef CONFIG_SMP
 /* Setup configured maximum number of CPUs to activate */
 unsigned int __initdata setup_max_cpus = NR_CPUS;
@@ -484,6 +536,7 @@ void __init parse_early_param(void)
        /* All fall through to do_early_param. */
        strlcpy(tmp_cmdline, boot_command_line, COMMAND_LINE_SIZE);
        parse_args("early options", tmp_cmdline, NULL, 0,
do_early_param);
+
        done = 1;
 }
 
@@ -511,6 +564,9 @@ asmlinkage void __init start_kernel(void)
 
        smp_setup_processor_id();
 
+       /* Build-time simulated boot parameters: */
+       strncat(boot_command_line, bootparam_command_line,
COMMAND_LINE_SIZE);
+
        /*
         * Need to run as early as possible, to initialize the
         * lockdep hash:
diff --git a/kernel/time/Kconfig b/kernel/time/Kconfig
index 8d53106..a6b3b23 100644
--- a/kernel/time/Kconfig
+++ b/kernel/time/Kconfig
@@ -14,6 +14,12 @@ config NO_HZ
          only trigger on an as-needed basis both when the system is
          busy and when the system is idle.
 
+config BOOTPARAM_NO_HZ_OFF
+       bool "bootparam: no_hz"
+       depends on BOOTPARAM_SUPPORT
+       help
+         if enabled, it has the effect as "no_hz=off" on the boot line
+
 config HIGH_RES_TIMERS
        bool "High Resolution Timer Support"
        depends on GENERIC_TIME && GENERIC_CLOCKEVENTS
@@ -28,3 +34,10 @@ config GENERIC_CLOCKEVENTS_BUILD
        default y
        depends on GENERIC_CLOCKEVENTS || GENERIC_CLOCKEVENTS_MIGR
 
+config BOOTPARAM_HIGHRES_OFF
+       bool "bootparam: highres=0"
+       depends on BOOTPARAM_SUPPORT
+       help
+         if enabled, it has the effect as "highres=0" on the boot line
+
+
diff --git a/lib/Kconfig b/lib/Kconfig
index ba3d104..a4537df 100644
--- a/lib/Kconfig
+++ b/lib/Kconfig
@@ -142,3 +142,6 @@ config CHECK_SIGNATURE
        bool
 
 endmenu
+
+source "arch/x86/Kconfig.needed"
+
diff --git a/need_config b/need_config
new file mode 100644
index 0000000..fb57fec
--- /dev/null
+++ b/need_config
@@ -0,0 +1,85 @@
+# dangerous to boot on non-Elan CPUs
+CONFIG_X86_ELAN=n
+
+# hangs on bootup on non-Voyager platforms
+CONFIG_X86_VOYAGER=n
+
+# hangs on bootup on non-Numaq platforms
+CONFIG_X86_NUMAQ=n
+
+# hangs on bootup on non-VisWS platforms
+CONFIG_X86_VISWS=n
+
+# hangs on bootup on non-VisWS platforms (ES7000)
+CONFIG_X86_ES7000=n
+
+# hangs on bootup on non-PCIE systems
+CONFIG_PCI_GOMMCONFIG=n
+
+# the probe can hang during bootup on non-PARIDE boxes
+CONFIG_PARIDE=n
+
+# my test box expects /dev/sda, not /dev/hda
+CONFIG_IDE=n
+
+# unsafe and hangs on newer boxes
+CONFIG_BLK_DEV_HD_IDE=n
+
+# dangerous to enable - sometimes hangs on probe
+CONFIG_MTD=n
+
+# Can hang
+CONFIG_COPS=n
+
+# this creates a fake /dev/sda which confuses the bzImage bootup
+CONFIG_SCSI_DEBUG=n
+
+# can hang on a box without this hardware
+CONFIG_FB_CIRRUS=n
+CONFIG_FB_ASILIANT=n
+CONFIG_FB_VGA16=n
+CONFIG_FB_VESA=n
+CONFIG_FB_RADEON=n
+CONFIG_FB_CYBLA=n
+CONFIG_FB_VIRTUAL=n
+
+# can hang on a box without this hardware
+CONFIG_MDA_CONSOLE=n
+
+CONFIG_FRAMEBUFFER_CONSOLE=n
+
+# this ISA driver puts itself on IRQ10 - if IRQ10 happens to
+# trigger then that will cause a watchdog-initiated reboot
+CONFIG_EUROTECH_WDT=n
+
+# this ISA driver sits on IRQ11 by default - blocking forcedeth
+CONFIG_WDT=n
+
+# hangs a non-root-NFS box during bootup
+CONFIG_ROOT_NFS=n
+
+# auto-qa needs to see all messages
+CONFIG_LOG_BUF_SHIFT=20
+
+# Slows down bootup unnecessarily and does not catch bugs
+# by itself - so disable this.
+CONFIG_DEBUG_KOBJECT=n
+
+# too slow build in QA
+CONFIG_DEBUG_INFO=n
+
+# slow to build
+CONFIG_WANT_EXTRA_DEBUG_INFORMATION=n
+
+# fails with hard-to-debug "could not find init" boot failure
+CONFIG_SECURITY_ROOTPLUG=n
+
+# old system booted up with this cannot ssh out
+CONFIG_SECURITY_SELINUX_ENABLE_SECMARK_DEFAULT=n
+
+# may hang on non-hardware
+CONFIG_SND_MTPAV=n
+
+# obsolete drivers
+CONFIG_SOUND_OSS=n
+
-- 
1.5.4.rc3.1118.gf6754c






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

Reply via email to