18 Jul, 2007

7 commits

  • Mark variables with uninitialized_var() if such a warning appears,
    and analysis proves that the var is initialized properly on all paths
    it is used.

    Signed-off-by: Jeff Garzik

    Jeff Garzik
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/avi/kvm: (80 commits)
    KVM: Use CPU_DYING for disabling virtualization
    KVM: Tune hotplug/suspend IPIs
    KVM: Keep track of which cpus have virtualization enabled
    SMP: Allow smp_call_function_single() to current cpu
    i386: Allow smp_call_function_single() to current cpu
    x86_64: Allow smp_call_function_single() to current cpu
    HOTPLUG: Adapt thermal throttle to CPU_DYING
    HOTPLUG: Adapt cpuset hotplug callback to CPU_DYING
    HOTPLUG: Add CPU_DYING notifier
    KVM: Clean up #includes
    KVM: Remove kvmfs in favor of the anonymous inodes source
    KVM: SVM: Reliably detect if SVM was disabled by BIOS
    KVM: VMX: Remove unnecessary code in vmx_tlb_flush()
    KVM: MMU: Fix Wrong tlb flush order
    KVM: VMX: Reinitialize the real-mode tss when entering real mode
    KVM: Avoid useless memory write when possible
    KVM: Fix x86 emulator writeback
    KVM: Add support for in-kernel pio handlers
    KVM: VMX: Fix interrupt checking on lightweight exit
    KVM: Adds support for in-kernel mmio handlers
    ...

    Linus Torvalds
     
  • Avoid dirtying remote cpu's memory if it already has the correct value.

    Cc: Andi Kleen
    Cc: Konrad Rzeszutek
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andrew Morton
     
  • Identical implementations of PTRACE_POKEDATA go into generic_ptrace_pokedata()
    function.

    AFAICS, fix bug on xtensa where successful PTRACE_POKEDATA will nevertheless
    return EPERM.

    Signed-off-by: Alexey Dobriyan
    Cc: Christoph Hellwig
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alexey Dobriyan
     
  • Identical implementations of PTRACE_PEEKDATA go into generic_ptrace_peekdata()
    function.

    Signed-off-by: Alexey Dobriyan
    Cc: Christoph Hellwig
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alexey Dobriyan
     
  • If the kernel OOPSed or BUGed then it probably should be considered as
    tainted. Thus, all subsequent OOPSes and SysRq dumps will report the
    tainted kernel. This saves a lot of time explaining oddities in the
    calltraces.

    Signed-off-by: Pavel Emelianov
    Acked-by: Randy Dunlap
    Cc:
    Signed-off-by: Andrew Morton
    [ Added parisc patch from Matthew Wilson -Linus ]
    Signed-off-by: Linus Torvalds

    Pavel Emelianov
     
  • Currently, the freezer treats all tasks as freezable, except for the kernel
    threads that explicitly set the PF_NOFREEZE flag for themselves. This
    approach is problematic, since it requires every kernel thread to either
    set PF_NOFREEZE explicitly, or call try_to_freeze(), even if it doesn't
    care for the freezing of tasks at all.

    It seems better to only require the kernel threads that want to or need to
    be frozen to use some freezer-related code and to remove any
    freezer-related code from the other (nonfreezable) kernel threads, which is
    done in this patch.

    The patch causes all kernel threads to be nonfreezable by default (ie. to
    have PF_NOFREEZE set by default) and introduces the set_freezable()
    function that should be called by the freezable kernel threads in order to
    unset PF_NOFREEZE. It also makes all of the currently freezable kernel
    threads call set_freezable(), so it shouldn't cause any (intentional)
    change of behaviour to appear. Additionally, it updates documentation to
    describe the freezing of tasks more accurately.

    [akpm@linux-foundation.org: build fixes]
    Signed-off-by: Rafael J. Wysocki
    Acked-by: Nigel Cunningham
    Cc: Pavel Machek
    Cc: Oleg Nesterov
    Cc: Gautham R Shenoy
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Rafael J. Wysocki
     

17 Jul, 2007

3 commits

  • The current generic bug implementation has a call to dump_stack() in case a
    WARN_ON(whatever) gets hit. Since report_bug(), which calls dump_stack(),
    gets called from an exception handler we can do better: just pass the
    pt_regs structure to report_bug() and pass it to show_regs() in case of a
    warning. This will give more debug informations like register contents,
    etc... In addition this avoids some pointless lines that dump_stack()
    emits, since it includes a stack backtrace of the exception handler which
    is of no interest in case of a warning. E.g. on s390 the following lines
    are currently always present in a stack backtrace if dump_stack() gets
    called from report_bug():

    [] show_trace+0x92/0xe8)
    [] show_stack+0xa0/0xd0
    [] dump_stack+0x2e/0x3c
    [] report_bug+0x98/0xf8
    [] illegal_op+0x1fc/0x21c
    [] sysc_return+0x0/0x10

    Acked-by: Jeremy Fitzhardinge
    Acked-by: Haavard Skinnemoen
    Cc: Andi Kleen
    Cc: Kyle McMartin
    Cc: Paul Mackerras
    Cc: Paul Mundt
    Cc: Martin Schwidefsky
    Signed-off-by: Heiko Carstens
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Heiko Carstens
     
  • This follows a suggestion from Chuck Ebbert on how to make seccomp
    absolutely zerocost in schedule too. The only remaining footprint of
    seccomp is in terms of the bzImage size that becomes a few bytes (perhaps
    even a few kbytes) larger, measure it if you care in the embedded.

    Signed-off-by: Andrea Arcangeli
    Cc: Andi Kleen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andrea Arcangeli
     
  • Needed to get fixed virtual address for USB debug and earlycon with mmio.

    Signed-off-by: Eric W. Biderman
    Signed-off-by: Yinghai Lu
    Cc: Andi Kleen
    Cc: Bjorn Helgaas
    Cc: Russell King
    Cc: Gerd Hoffmann
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric W. Biderman
     

16 Jul, 2007

2 commits


13 Jul, 2007

12 commits

  • Based on a patch from Joachim which didn't apply, so I fixed
    it up by hand, and also corrected the surrounding indentation
    a little.

    Signed-off-by: Joachim.Deguara
    Acked-by: Mark Langsdorf
    Signed-off-by: Dave Jones

    Dave Jones
     
  • Make it compile on UP.

    Signed-off-by: Andrew Morton
    Signed-off-by: Dave Jones

    Andrew Morton
     
  • This patch contains the overdue removal of X86_SPEEDSTEP_CENTRINO_ACPI.

    Signed-off-by: Adrian Bunk
    Acked-by: Venkatesh Pallipadi
    Signed-off-by: Dave Jones

    Adrian Bunk
     
  • On some motherboards ACPI C3 is available, but it isn't
    causing frequency transition on VIA Nehemiah. Longhaul
    wasn't working at all earlier, but due to
    scaling_cur_speed returning true CPU frequency now, it
    looks like CPU is getting stuck at highest frequency
    since 2.6.21. I didn't find a reason. Halt is causing
    frequency transition.

    Signed-off-by: Rafal Bilski
    Signed-off-by: Dave Jones

    Rafał Bilski
     
  • * master.kernel.org:/pub/scm/linux/kernel/git/davej/cpufreq:
    [CPUFREQ] Fix sysfs_create_file return value handling
    [CPUFREQ] ondemand: fix tickless accounting and software coordination bug
    [CPUFREQ] ondemand: add a check to avoid negative load calculation
    [CPUFREQ] Keep userspace governor quiet when it is not being used
    [CPUFREQ] Longhaul - Proper register access
    [CPUFREQ] Kconfig powernow-k8 driver should depend on ACPI P-States driver
    [CPUFREQ] Longhaul - Replace ACPI functions with direct I/O
    [CPUFREQ] Longhaul - Remove duplicate multipliers
    [CPUFREQ] Longhaul - Embedded "conservative"
    [CPUFREQ] acpi-cpufreq: Proper ReadModifyWrite of PERF_CTL MSR
    [CPUFREQ] check return value of sysfs_create_file
    [CPUFREQ] Longhaul - Check ACPI "BM DMA in progress" bit
    [CPUFREQ] Longhaul - Move old_ratio to correct place
    [CPUFREQ] Longhaul - VT8237 support
    [CPUFREQ] Longhaul - Use all kinds of support
    [CPUFREQ] powernow-k8: clarify number of cores.

    Linus Torvalds
     
  • * master.kernel.org:/pub/scm/linux/kernel/git/gregkh/pci-2.6: (34 commits)
    PCI: Only build PCI syscalls on architectures that want them
    PCI: limit pci_get_bus_and_slot to domain 0
    PCI: hotplug: acpiphp: avoid acpiphp "cannot get bridge info" PCI hotplug failure
    PCI: hotplug: acpiphp: remove hot plug parameter write to PCI host bridge
    PCI: hotplug: acpiphp: fix slot poweroff problem on systems without _PS3
    PCI: hotplug: pciehp: wait for 1 second after power off slot
    PCI: pci_set_power_state(): check for PM capabilities earlier
    PCI: cpci_hotplug: Convert to use the kthread API
    PCI: add pci_try_set_mwi
    PCI: pcie: remove SPIN_LOCK_UNLOCKED
    PCI: ROUND_UP macro cleanup in drivers/pci
    PCI: remove pci_dac_dma_... APIs
    PCI: pci-x-pci-express-read-control-interfaces cleanups
    PCI: Fix typo in include/linux/pci.h
    PCI: pci_ids, remove double or more empty lines
    PCI: pci_ids, add atheros and 3com_2 vendors
    PCI: pci_ids, reorder some entries
    PCI: i386: traps, change VENDOR to DEVICE
    PCI: ATM: lanai, change VENDOR to DEVICE
    PCI: Change all drivers to use pci_device->revision
    ...

    Linus Torvalds
     
  • This removes the old i386 setup code. This is done as a separate patch
    to avoid breaking git bisect as some of the i386 code was also used by
    the old x86-64 code.

    Signed-off-by: H. Peter Anvin
    Signed-off-by: Linus Torvalds

    H. Peter Anvin
     
  • Make struct boot_params a real structure, and remove the handling of
    some obsolete fields, in particular hd*_info, which was only used by
    the ST-506 driver, and likely to be wrong for that driver on any
    modern BIOS.

    Signed-off-by: H. Peter Anvin
    Signed-off-by: Linus Torvalds

    H. Peter Anvin
     
  • Make definitions for struct e820entry and struct e820map
    consistent between i386 and x86-64.

    Signed-off-by: H. Peter Anvin
    Signed-off-by: Linus Torvalds

    H. Peter Anvin
     
  • Some Intel features are spread around in different CPUID leafs like 0x5,
    0x6 and 0xA. Make this feature detection code common across i386 and
    x86_64.

    Display Intel Dynamic Acceleration feature in /proc/cpuinfo. This feature
    will be enabled automatically by current acpi-cpufreq driver.

    Refer to Intel Software Developer's Manual for more details about the feature.

    Thanks to hpa (H Peter Anvin) for the making the actual code detecting the
    scattered features data-driven.

    Signed-off-by: Venkatesh Pallipadi
    Signed-off-by: H. Peter Anvin
    Signed-off-by: Linus Torvalds

    Venki Pallipadi
     
  • The X86_MINIMUM_CPU_MODEL name isn't really right, so change it to
    X86_MINIMUM_CPU_FAMILY. Also, the default minimum should be 3, not 0.

    Signed-off-by: H. Peter Anvin
    Signed-off-by: Linus Torvalds

    H. Peter Anvin
     
  • Unify the handling of the CPU features vectors between i386 and x86-64.
    This also adopts the collapsing of features which are required at
    compile-time into constant tests from x86-64 to i386.

    Signed-off-by: H. Peter Anvin
    Signed-off-by: Linus Torvalds

    H. Peter Anvin
     

12 Jul, 2007

1 commit

  • Instead of all drivers reading pci config space to get the revision
    ID, they can now use the pci_device->revision member.

    This exposes some issues where drivers where reading a word or a dword
    for the revision number, and adding useless error-handling around the
    read. Some drivers even just read it for no purpose of all.

    In devices where the revision ID is being copied over and used in what
    appears to be the equivalent of hotpath, I have left the copy code
    and the cached copy as not to influence the driver's performance.

    Compile tested with make all{yes,mod}config on x86_64 and i386.

    Signed-off-by: Auke Kok
    Acked-by: Dave Jones
    Signed-off-by: Greg Kroah-Hartman

    Auke Kok
     

10 Jul, 2007

2 commits

  • track TSC-unstable events and propagate it to the scheduler code.
    Also allow sched_clock() to be used when the TSC is unstable,
    the rq_clock() wrapper creates a reliable clock out of it.

    Signed-off-by: Ingo Molnar

    Ingo Molnar
     
  • the SMP load-balancer uses the boot-time migration-cost estimation
    code to attempt to improve the quality of balancing. The reason for
    this code is that the discrete priority queues do not preserve
    the order of scheduling accurately, so the load-balancer skips
    tasks that were running on a CPU 'recently'.

    this code is fundamental fragile: the boot-time migration cost detector
    doesnt really work on systems that had large L3 caches, it caused boot
    delays on large systems and the whole cache-hot concept made the
    balancing code pretty undeterministic as well.

    (and hey, i wrote most of it, so i can say it out loud that it sucks ;-)

    under CFS the same purpose of cache affinity can be achieved without
    any special cache-hot special-case: tasks are sorted in the 'timeline'
    tree and the SMP balancer picks tasks from the left side of the
    tree, thus the most cache-cold task is balanced automatically.

    Signed-off-by: Ingo Molnar

    Ingo Molnar
     

08 Jul, 2007

1 commit

  • The printk level in this printk is bogus, as the previous printk
    didn't have a terminating \n resulting in ..

    Intel E7520/7320/7525 detected.Disabling irq balancing and affinity

    It also never printed a \n at all in the case where we didn't do
    the quirk.

    Change it to only make noise if it actually does something useful.

    Signed-off-by: Dave Jones
    Signed-off-by: Linus Torvalds

    Dave Jones
     

07 Jul, 2007

3 commits

  • Writing to MSR 0x51400017 forces a hard reset on CS5536-based machines,
    this has the reboot fixup do just that if such a board is detected.

    Acked-by: Jordan Crouse
    Signed-off-by: Andres Salomon
    Cc: Alan Cox
    Cc: Andi Kleen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andres Salomon
     
  • Processors synchronization in set_mtrr requires the .gate field to be set
    after .count field is properly initialized. Without an explicit barrier,
    the compiler was reordering those memory stores. That was sometimes
    causing a processor (in ipi_handler) to see the .gate change and decrement
    .count before the latter is set by set_mtrr() (which then hangs in a
    infinite loop with irqs disabled).

    Signed-off-by: Loic Prylli
    Cc: Andi Kleen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Loic Prylli
     
  • The commit 635cf99a80f4ebee59d70eb64bb85ce829e4591f introduced a
    regression. Executing a ptrace single step after certain int80
    accesses will infinitely loop and never advance the PC.

    The TIF_SINGLESTEP check should be done on the return from the syscall
    and not before it.

    I loops on each single step on the pop right after the int80 which writes out
    to the console. At that point you can issue as many single steps as you want
    and it will not advance any further.

    The test case is below:

    /* Test whether singlestep through an int80 syscall works.
    */
    #define _GNU_SOURCE
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include

    static int child, status;
    static struct user_regs_struct regs;

    static void do_child()
    {
    char str[80] = "child: int80 test\n";

    ptrace(PTRACE_TRACEME, 0, 0, 0);
    kill(getpid(), SIGUSR1);
    write(fileno(stdout),str,strlen(str));
    asm ("int $0x80" : : "a" (20)); /* getpid */
    }

    static void do_parent()
    {
    unsigned long eip, expected = 0;
    again:
    waitpid(child, &status, 0);
    if (WIFEXITED(status) || WIFSIGNALED(status))
    return;

    if (WIFSTOPPED(status)) {
    ptrace(PTRACE_GETREGS, child, 0, ®s);
    eip = regs.eip;
    if (expected)
    fprintf(stderr, "child stop @ %08lx, expected %08lx %s\n",
    eip, expected,
    eip == expected ? "" : "
    Cc: Jeremy Fitzhardinge
    Cc:
    Cc: Chuck Ebbert
    Acked-by: Andi Kleen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jason Wessel
     

04 Jul, 2007

3 commits

  • When Andi reverted the HPET resource reservation (in commit
    0f8dc2f06560e2ca126d1670a24126ba08357d38), he didn't remove the now
    unused variables, which just causes gcc to be noisy.

    Signed-off-by: Linus Torvalds

    Linus Torvalds
     
  • With this change it works again when the nmi watchdog is disabled.

    Signed-off-by: Andi Kleen
    Cc: Björn Steinbrink
    Cc: Stephane Eranian
    Cc: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andi Kleen
     
  • Matthias Lenk reports that the PCI subsystem would move the HPET on
    SB400/SB600-based systems, where the HPET is in BAR1 of the SMbus
    controller.

    The reason? The ACPI layer registered the PCI MMIO range as being busy
    too early, before PCI enumeration had happened, causing the PCI layer to
    decide that it should relocate the resources somewhere else.

    Firmware resources should be marked busy _after_ the PCI enumeration and
    probing has happened, not before.

    Remove the too-early reservation, we'll fix it up to do it properly
    later. In the meantime, this solves the regression.

    Tested-by: Matthias Lenk
    Cc: Aaron Durbin
    Cc: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andi Kleen
     

02 Jul, 2007

2 commits

  • Commit 3ebad5905609476a4ff1151a66b21d9794009961 ("[PATCH] x86: Save and
    restore the fixed-range MTRRs of the BSP when suspending") added mtrr
    operations without verifying that the CPU has MTRRs. Crashes transmeta
    CPUs.

    Cc: "H. Peter Anvin"
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andrew Morton
     
  • Commit 9215da33209b861b01c51382254b178a3fe92a30 "fixed" the MTRR range
    check to not allow any MTRR's under the 1MB mark (since that's where the
    fixed MTRR's are active).

    However, that was totally bogus, since it's normal (and almost required)
    to have a large variable MTRR that starts at 0, and covers some large
    percentage of the whole RAM, and then using the fixed MTRR's to override
    that large MTRR to handle the special ISA hole in the 640k-1M region.

    The old check was bogus too (checking that no variable MTRR is used that
    is entirely under the 1MB range), but at least it wasn't actively
    detrimental, because no sane situation would ever trigger such MTRR
    usage in the first place.

    That said, the whole notion of not allowing variable MTRR's in the low
    1MB is just stupid, so rather than revert the commit, this just removes
    the whole sad and unnecessary check entirely.

    Cc: Jan Beulich
    Cc: Andi Kleen
    Cc: Andrew Morton
    Tested-by: Luca Palermo
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     

29 Jun, 2007

1 commit

  • main.c::mtrr_add() or mtrr_del() [exported]
    calls main.c::mtrr_add_page() or mtrr_del_page() or mtrr_restore() [resume]
    calls main.c::set_mtrr()
    calls main.c::ipi_handler()
    calls main.c::mtrr_if->set_all() == which can be cyrix_set_all

    WARNING: arch/i386/kernel/built-in.o(.text+0x8657): Section mismatch: reference to .init.data: (between 'cyrix_set_all' and 'centaur_get_free_region')
    WARNING: arch/i386/kernel/built-in.o(.text+0x866b): Section mismatch: reference to .init.data: (between 'cyrix_set_all' and 'centaur_get_free_region')
    WARNING: arch/i386/kernel/built-in.o(.text+0x867e): Section mismatch: reference to .init.data: (between 'cyrix_set_all' and 'centaur_get_free_region')
    WARNING: arch/i386/kernel/built-in.o(.text+0x8684): Section mismatch: reference to .init.data: (between 'cyrix_set_all' and 'centaur_get_free_region')
    WARNING: arch/i386/kernel/built-in.o(.text+0x868a): Section mismatch: reference to .init.data: (between 'cyrix_set_all' and 'centaur_get_free_region')

    Signed-off-by: Randy Dunlap
    Cc: Andi Kleen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Randy Dunlap
     

24 Jun, 2007

1 commit

  • Register %ebx serves as the "global offset table base register" for
    position-independent code. For absolute code, %ebx serves as a local
    register and has no specified role in the function calling sequence. In
    either case, a function must preserve the register value for the caller.

    acpi_copy_wakeup_routine overrides %ebx without saving it, this may corrupt
    the called data.

    Kevin found that most time the value of Sx is saved in %esi, however
    sometimes compiler also uses %ebx. When this happens, suspends fails since
    sleep value in ebx is changed by acpi_copy_wakeup_routine.

    The same funtion in X86_64 doesn't have this problem.

    Signed-off-by: Zhang Rui
    Looks-okay-to: Pavel Machek
    Signed-off-by: Rafael J. Wysocki
    Cc: Len Brown
    Acked-by: Andi Kleen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Tian Kevin
     

22 Jun, 2007

1 commit


21 Jun, 2007

1 commit

  • WARNING: arch/x86_64/kernel/built-in.o(.text+0xace9): Section mismatch: reference to .init.text: (between 'get_mtrr_state' and 'mtrr_wrmsr')
    WARNING: arch/x86_64/kernel/built-in.o(.text+0xad09): Section mismatch: reference to .init.text: (between 'get_mtrr_state' and 'mtrr_wrmsr')
    WARNING: arch/x86_64/kernel/built-in.o(.text+0xad38): Section mismatch: reference to .init.text: (between 'get_mtrr_state' and 'mtrr_wrmsr')
    WARNING: drivers/built-in.o(.text+0x3a680): Section mismatch: reference to .init.text:acpi_map_pxm_to_node (between 'acpi_get_node' and 'acpi_lock_ac_dir')

    AK: also marked mtrr_bp_init __init to avoid some more warnings

    Signed-off-by: Yinghai Lu
    Signed-off-by: Andi Kleen
    Acked-by: Jan Beulich
    Signed-off-by: Linus Torvalds

    Yinghai Lu