19 Oct, 2007

14 commits

  • Signed-off-by: Eric W. Biederman
    Cc: Alexey Dobriyan
    Cc: Andi Kleen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric W. Biederman
     
  • - Fix resource leakage in error case within detect_cache_attributes()

    - Don't register hotcpu notifier when cache_add_dev() returns error

    - Introduce cache_dev_map cpumask to track whether cache interface for
    CPU is successfully added by cache_add_dev() or not.

    cache_add_dev() may fail with out of memory error. In order to
    avoid cache_remove_dev() with that uninitialized cache interface when
    CPU_DEAD event is delivered we need to have the cache_dev_map cpumask.

    (We cannot change cache_add_dev() from CPU_ONLINE event handler
    to CPU_UP_PREPARE event handler. Because cache_add_dev() needs
    to do cpuid and store the results with its CPU online.)

    [nix.or.die@googlemail.com: fix a section mismatch warning]
    Cc: Ashok Raj
    Signed-off-by: Akinobu Mita
    Cc: Gautham R Shenoy
    Cc: Oleg Nesterov
    Cc: Andi Kleen
    Cc: Jan Beulich
    Signed-off-by: Gabriel Craciunescu
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Akinobu Mita
     
  • - Clear kobject in percpu device_mce before calling sysdev_register() with

    Because mce_create_device() may fail and it leaves kobject filled with
    junk. It will be the problem when mce_create_device() will be called
    next time.

    - Fix error handling in mce_create_device()

    Error handling should not do sysdev_remove_file() with not yet added
    attributes.

    - Don't register hotcpu notifier when mce_create_device() returns error

    - Do mce_create_device() in CPU_UP_PREPARE instead of CPU_ONLINE

    Cc: Andi Kleen
    Signed-off-by: Akinobu Mita
    Cc: Gautham R Shenoy
    Cc: Oleg Nesterov
    Cc: Andi Kleen
    Cc: Jan Beulich
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Akinobu Mita
     
  • Do msr_device_create() in CPU_UP_PREPARE instead of CPU_ONLINE.

    Cc: "H. Peter Anvin"
    Signed-off-by: Akinobu Mita
    Cc: Gautham R Shenoy
    Cc: Oleg Nesterov
    Cc: Andi Kleen
    Cc: Jan Beulich
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Akinobu Mita
     
  • Do thermal_throttle_add_dev() in CPU_UP_PREPARE instead of CPU_ONLINE.

    Cc: Dmitriy Zavin
    Signed-off-by: Akinobu Mita
    Cc: Gautham R Shenoy
    Cc: Oleg Nesterov
    Cc: Andi Kleen
    Cc: Jan Beulich
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Akinobu Mita
     
  • On platforms that copy sys_tz into the vdso (currently only x86_64, soon to
    include powerpc), it is possible for the vdso to get out of sync if a user
    calls (admittedly unusual) settimeofday(NULL, ptr).

    This patch adds a hook for architectures that set
    CONFIG_GENERIC_TIME_VSYSCALL to ensure when sys_tz is updated they can also
    updatee their copy in the vdso.

    Signed-off-by: Tony Breeds
    Cc: Andi Kleen
    Cc: Tony Luck
    Acked-by: John Stultz
    Cc: Paul Mackerras
    Cc: Benjamin Herrenschmidt
    Cc: Thomas Gleixner
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Tony Breeds
     
  • Use temporary page tables for the kernel text mapping during hibernation
    restore on x86_64.

    Without the patch, the original boot kernel's page tables that represent the
    kernel text mapping are used while the core of the image kernel is being
    restored. However, in principle, if the boot kernel is not identical to the
    image kernel, the location of these page tables in the image kernel need not
    be the same, so we should create a safe copy of the kernel text mapping prior
    to restoring the core of the image kernel.

    Signed-off-by: Rafael J. Wysocki
    Acked-by: Pavel Machek
    Cc: Andi Kleen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Rafael J. Wysocki
     
  • Since we already pass the address of restore_registers() in the image header,
    we can also pass the value of the CR3 register from before the hibernation in
    the same way. This will allow us to avoid using init_level4_pgt page tables
    during the restore.

    Signed-off-by: Rafael J. Wysocki
    Acked-by: Pavel Machek
    Cc: Andi Kleen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Rafael J. Wysocki
     
  • Make it possible to restore a hibernation image on x86_64 with the help of a
    kernel different from the one in the image.

    The idea is to split the core restoration code into two separate parts and to
    place each of them in a different page.  The first part belongs to the boot
    kernel and is executed as the last step of the image kernel's memory
    restoration procedure.  Before being executed, it is relocated to a safe page
    that won't be overwritten while copying the image kernel pages.

    The final operation performed by it is a jump to the second part of the core
    restoration code that belongs to the image kernel and has just been restored.
    This code makes the CPU switch to the image kernel's page tables and restores
    the state of general purpose registers (including the stack pointer) from
    before the hibernation.

    The main issue with this idea is that in order to jump to the second part of
    the core restoration code the boot kernel needs to know its address.
     However, this address may be passed to it in the image header.  Namely, the
    part of the image header previously used for checking if the version of the
    image kernel is correct can be replaced with some architecture specific data
    that will allow the boot kernel to jump to the right address within the image
    kernel.  These data should also be used for checking if the image kernel is
    compatible with the boot kernel (as far as the memory restroration procedure
    is concerned). It can be done, for example, with the help of a "magic" value
    that has to be equal in both kernels, so that they can be regarded as
    compatible.

    Signed-off-by: Rafael J. Wysocki
    Acked-by: Pavel Machek
    Cc: Andi Kleen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Rafael J. Wysocki
     
  • This removes old debugging stuff, that should be no longer neccessary. It
    accessed VGA hardware (which may not be ready at this point), and used LEDs
    at port 80 for debugging.

    Signed-off-by: Pavel Machek
    Acked-by: Rafael J. Wysocki
    Cc: Andi Kleen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Pavel Machek
     
  • Currently, there's a CONFIG_DISABLE_CONSOLE_SUSPEND that allows one to stop
    the serial console from being suspended when the rest of the machine goes
    to sleep. This is incredibly useful for debugging power management-related
    things; however, having it as a compile-time option has proved to be
    incredibly inconvenient for us (OLPC). There are plenty of times that we
    want serial console to not suspend, but for the most part we'd like serial
    console to be suspended.

    This drops CONFIG_DISABLE_CONSOLE_SUSPEND, and replaces it with a kernel
    boot parameter (no_console_suspend). By default, the serial console will
    be suspended along with the rest of the system; by passing
    'no_console_suspend' to the kernel during boot, serial console will remain
    alive during suspend.

    For now, this is pretty serial console specific; further fixes could be
    applied to make this work for things like netconsole.

    Signed-off-by: Andres Salomon
    Acked-by: "Rafael J. Wysocki"
    Acked-by: Pavel Machek
    Cc: Nigel Cunningham
    Cc: Russell King
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andres Salomon
     
  • There is no reason why the .prepare() and .finish() methods in 'struct
    platform_suspend_ops' should take any arguments, since architectures don't use
    these methods' argument in any practically meaningful way (ie. either the
    target system sleep state is conveyed to the platform by .set_target(), or
    there is only one suspend state supported and it is indicated to the PM core
    by .valid(), or .prepare() and .finish() aren't defined at all).  There also
    is no reason why .finish() should return any result.

    Signed-off-by: Rafael J. Wysocki
    Acked-by: Pavel Machek
    Cc: Len Brown
    Cc: Greg KH
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Rafael J. Wysocki
     
  • The name of 'struct pm_ops' suggests that it is related to the power
    management in general, but in fact it is only related to suspend.  Moreover,
    its name should indicate what this structure is used for, so it seems
    reasonable to change it to 'struct platform_suspend_ops'.  In that case, the
    name of the global variable of this type used by the PM core and the names of
    related functions should be changed accordingly.

    Signed-off-by: Rafael J. Wysocki
    Acked-by: Pavel Machek
    Cc: Len Brown
    Cc: Greg KH
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Rafael J. Wysocki
     
  • Move the definition of 'struct pm_ops' and related functions from
    to .

    There are, at least, the following reasons to do that:
    * 'struct pm_ops' is specifically related to suspend and not to the power
    management in general.
    * As long as 'struct pm_ops' is defined in , any modification of it
    causes the entire kernel to be recompiled, which is unnecessary and annoying.
    * Some suspend-related features are already defined in , so it
    is logical to move the definition of 'struct pm_ops' into there.
    * 'struct hibernation_ops', being the hibernation-related counterpart of
    'struct pm_ops', is defined in .

    Signed-off-by: Rafael J. Wysocki
    Acked-by: Pavel Machek
    Cc: Len Brown
    Cc: Greg KH
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Rafael J. Wysocki
     

18 Oct, 2007

26 commits

  • arch/ia64/kernel/machine_kexec.c: In function `arch_crash_save_vmcoreinfo':
    arch/ia64/kernel/machine_kexec.c:131: error: `pgdat_list' undeclared (first use in this function)
    arch/ia64/kernel/machine_kexec.c:131: error: (Each undeclared identifier is reported only once
    arch/ia64/kernel/machine_kexec.c:131: error: for each function it appears in.)
    arch/ia64/kernel/machine_kexec.c:134: error: `node_memblk' undeclared (first use in this function)
    arch/ia64/kernel/machine_kexec.c:135: error: `NR_NODE_MEMBLKS' undeclared (first use in this function)
    arch/ia64/kernel/machine_kexec.c:136: error: invalid application of `sizeof' to incomplete type `node_memblk_s'
    arch/ia64/kernel/machine_kexec.c:137: error: dereferencing pointer to incomplete type
    arch/ia64/kernel/machine_kexec.c:138: error: dereferencing pointer to incomplete type
    make[1]: *** [arch/ia64/kernel/machine_kexec.o] Error 1

    Signed-off-by: Andrew Morton
    Signed-off-by: Tony Luck

    Andrew Morton
     
  • * ssh://master.kernel.org/pub/scm/linux/kernel/git/tglx/linux-2.6-x86: (114 commits)
    x86: delete vsyscall files during make clean
    kbuild: fix typo SRCARCH in find_sources
    x86: fix kernel rebuild due to vsyscall fallout
    .gitignore update for x86 arch
    x86: unify include/asm/debugreg_32/64.h
    x86: unify include/asm/unwind_32/64.h
    x86: unify include/asm/types_32/64.h
    x86: unify include/asm/tlb_32/64.h
    x86: unify include/asm/siginfo_32/64.h
    x86: unify include/asm/bug_32/64.h
    x86: unify include/asm/mman_32/64.h
    x86: unify include/asm/agp_32/64.h
    x86: unify include/asm/kdebug_32/64.h
    x86: unify include/asm/ioctls_32/64.h
    x86: unify include/asm/floppy_32/64.h
    x86: apply missing DMA/OOM prevention to floppy_32.h
    x86: unify include/asm/cache_32/64.h
    x86: unify include/asm/cache_32/64.h
    x86: unify include/asm/dmi_32/64.h
    x86: unify include/asm/delay_32/64.h
    ...

    Linus Torvalds
     
  • make clean failed to delete a few files in
    x86/kernel. This is because kbuild does not
    see the correct/full kernel/Makefile.

    As a workaround until the Makefiles are merged specify
    the files to be deleted in the common Makefile.

    Reported by Mike Galbraith

    Signed-off-by: Sam Ravnborg
    Cc: Mike Galbraith
    Signed-off-by: Thomas Gleixner

    Sam Ravnborg
     
  • Fix rebuild of kernel when there is no changes.
    This happened for i386.
    Using make V=2 hinted that the output files were
    not assigned to targets - fixed by this patch.

    Reported by: Boaz Harrosh

    Signed-off-by: Sam Ravnborg
    Signed-off-by: Thomas Gleixner

    Sam Ravnborg
     
  • This patch:
    - makes .gitignore files visible to git
    - makes arch/x86/kernel/vsyscall_32.lds and arch/i386/boot invisible

    Signed-off-by: Denis V. Lunev
    Signed-off-by: Thomas Gleixner

    Denis V. Lunev
     
  • I can't see the reason ". = VDSO_PRELINK + 0x900;" was ever there in
    the linker script for the x86_64 vDSO. I can't find anything that
    depends on this magic offset, or that should care at all about the
    particular location of of the .data section (all from vvar.c) in the
    vDSO image. If it is really desireable to place .data at 0x900, then it
    should be after all the other sections so they fill in the space up to
    0x900.

    This removes the 0x900 magic and cleans up the output sections generally
    in the vDSO linker script. This saves a few hundred bytes in the size
    of the vDSO file, bringing it back well under 4kb total so that its vma
    only needs one page.

    Signed-off-by: Roland McGrath
    Cc: Andi Kleen
    Signed-off-by: Andrew Morton
    Signed-off-by: Ingo Molnar
    Signed-off-by: Thomas Gleixner

    Roland McGrath
     
  • convert mm_context_t semaphore to a mutex.

    Signed-off-by: Luiz Fernando N. Capitulino
    Cc: Andi Kleen
    Signed-off-by: Andrew Morton
    Signed-off-by: Ingo Molnar
    Signed-off-by: Thomas Gleixner

    Luiz Fernando N. Capitulino
     
  • Add support for and use the multi-byte NOPs recently documented to be
    available on all PentiumPro and later processors.

    This patch only applies cleanly on top of the "x86: misc.
    constifications" patch sent earlier.

    [ tglx: arch/x86 adaptation ]

    Signed-off-by: Jan Beulich
    Signed-off-by: Andi Kleen
    Signed-off-by: Ingo Molnar
    Signed-off-by: Thomas Gleixner

    arch/x86/kernel/alternative.c | 23 ++++++++++++++++++++++-
    include/asm-x86/processor_32.h | 22 ++++++++++++++++++++++
    include/asm-x86/processor_64.h | 22 ++++++++++++++++++++++
    3 files changed, 66 insertions(+), 1 deletion(-)

    Jan Beulich
     
  • Spotted by Chuck Ebbert

    [ tglx: arch/x86 adaptation ]

    Signed-off-by: Andi Kleen
    Signed-off-by: Ingo Molnar
    Signed-off-by: Thomas Gleixner

    Andi Kleen
     
  • Oleg Nesterov pointed out that the set_fs() calls in setup_frame()
    and setup_rt_frame() were superfluous.

    [ tglx: arch/x86 adaptation ]

    Signed-off-by: Ingo Molnar
    Signed-off-by: Andi Kleen
    Cc: Oleg Nesterov
    Cc: Chuck Ebbert
    Signed-off-by: Andrew Morton
    Signed-off-by: Thomas Gleixner

    Ingo Molnar
     
  • [ tglx: arch/x86 adaptation ]

    Signed-off-by: Luiz Fernando N. Capitulino
    Signed-off-by: Andi Kleen
    Signed-off-by: Ingo Molnar
    Signed-off-by: Thomas Gleixner

    Luiz Fernando N. Capitulino
     
  • [ tglx: arch/x86 adaptation ]

    Signed-off-by: Andi Kleen
    Signed-off-by: Ingo Molnar
    Signed-off-by: Thomas Gleixner

    Andi Kleen
     
  • Normally we will have two segment not connected pin pin0, and pin after
    15...

    So we need to print out "not connected\n" for previous segment, before
    printing out connected pins info...

    Signed-off-by: Yinghai Lu
    Cc: Andi Kleen
    Signed-off-by: Andrew Morton

    Yinghai Lu
     
  • improve early fault output.

    old format:

    Int 14: CR2 010001e3 err 00000002 EIP c011f2f9 CS 00000060 flags 00010046
    Stack: c073695e c0791c10 00000000 ffffffff 00000000 01000000 00001000 c0791c10

    new format:

    BUG: Int 14: CR2 010001e3
    EDI c1000000 ESI c0693c10 EBP c0637f9c ESP c0637f08
    EBX 00000000 EDX 0000000e ECX 00000000 EAX 010001e3
    err 00000002 EIP c0123119 CS 00000060 flg 00010046
    Stack: c064d589 c0693000 00000000 c0637f60 00c001e3 01000000 00038000 00000163
    00000000 00000163 00000000 ffffffff 00038000 00000000 00000000 00001000
    00001000 00000000 c0637f88 c06509be c0a2ae60 00001000 00001000 00000000

    Signed-off-by: Ingo Molnar
    Signed-off-by: Thomas Gleixner

    Ingo Molnar
     
  • It doesn't seem to make sense to hide these, even if their counts
    can't change at the point in time they're being displayed.

    [ tglx: arch/x86 adaptation ]

    Signed-off-by: Jan Beulich
    Signed-off-by: Andi Kleen
    Signed-off-by: Ingo Molnar
    Signed-off-by: Thomas Gleixner

    Jan Beulich
     
  • Add missing IRQs and IRQ descriptions to /proc/interrupts.

    /proc/interrupts is most useful when it displays every IRQ vector in use by
    the system, not just those somebody thought would be interesting.

    This patch inserts the following vector displays to the i386 and x86_64
    platforms, as appropriate:

    rescheduling interrupts
    TLB flush interrupts
    function call interrupts
    thermal event interrupts
    threshold interrupts
    spurious interrupts

    A threshold interrupt occurs when ECC memory correction is occuring at too
    high a frequency. Thresholds are used by the ECC hardware as occasional
    ECC failures are part of normal operation, but long sequences of ECC
    failures usually indicate a memory chip that is about to fail.

    Thermal event interrupts occur when a temperature threshold has been
    exceeded for some CPU chip. IIRC, a thermal interrupt is also generated
    when the temperature drops back to a normal level.

    A spurious interrupt is an interrupt that was raised then lowered by the
    device before it could be fully processed by the APIC. Hence the apic sees
    the interrupt but does not know what device it came from. For this case
    the APIC hardware will assume a vector of 0xff.

    Rescheduling, call, and TLB flush interrupts are sent from one CPU to
    another per the needs of the OS. Typically, their statistics would be used
    to discover if an interrupt flood of the given type has been occuring.

    AK: merged v2 and v4 which had some more tweaks
    AK: replace Local interrupts with Local timer interrupts
    AK: Fixed description of interrupt types.

    [ tglx: arch/x86 adaptation ]
    [ mingo: small cleanup ]

    Signed-off-by: Joe Korty
    Signed-off-by: Andi Kleen
    Cc: Tim Hockin
    Cc: Andi Kleen
    Cc: Ingo Molnar
    Cc: "H. Peter Anvin"
    Signed-off-by: Andrew Morton
    Signed-off-by: Ingo Molnar
    Signed-off-by: Thomas Gleixner

    Joe Korty
     
  • Typically the oops first lines look like this:

    BUG: unable to handle kernel NULL pointer dereference at virtual address 00000000
    printing eip:
    c049dfbd
    *pde = 00000000
    Oops: 0002 [#1]
    PREEMPT SMP
    ...

    Such output is gained with some ugly if (!nl) printk("\n"); code and
    besides being a waste of lines, this is also annoying to read. The
    following output looks better (and it is how it looks on x86_64):

    BUG: unable to handle kernel NULL pointer dereference at virtual address 00000000
    printing eip: c049dfbd *pde = 00000000
    Oops: 0002 [#1] PREEMPT SMP
    ...

    [ tglx: arch/x86 adaptation ]

    Signed-off-by: Pavel Emelyanov
    Signed-off-by: Andrew Morton
    Signed-off-by: Andi Kleen
    Signed-off-by: Ingo Molnar
    Signed-off-by: Thomas Gleixner

    Pavel Emelyanov
     
  • Some BIOSes set the C1E flag only on the second core. Print a warning so
    the Firmware Toolkit can check for it.

    mingo: fix C1E build bug on 32-bit

    Signed-off-by: Thomas Gleixner
    Signed-off-by: Ingo Molnar

    Thomas Gleixner
     
  • Call cache_add_dev() from cache_sysfs_init() explicitly, instead of
    referencing the CPU notifier callback directly from generic startup
    code. Looks cleaner (to me at least) this way, and also makes it
    possible to use other tricks to replace __cpuinit{data} annotations, as
    recently discussed on this list.

    Signed-off-by: Satyam Sharma
    Cc: Andi Kleen
    Cc: Venkatesh Pallipadi
    Signed-off-by: Andrew Morton
    Signed-off-by: Ingo Molnar
    Signed-off-by: Thomas Gleixner

    Satyam Sharma
     
  • The dmi const-ification missed acer_cpu_freq_pst. Fix it.

    Signed-off-by: Thomas Gleixner
    Signed-off-by: Ingo Molnar

    Thomas Gleixner
     
  • This adds a const to the definitions vvar.c makes, so that the vdso_*
    variables go into .rodata instead of .data. This is essentially a
    cosmetic change, just giving the section headers in the vDSO file more
    pleasing flags. These variables are read-only from the perspective of
    the vDSO itself and user mode, even though the contents of the DSO image
    were adjusted at boot.

    Signed-off-by: Roland McGrath
    Cc: Andi Kleen
    Signed-off-by: Andrew Morton
    Signed-off-by: Ingo Molnar
    Signed-off-by: Thomas Gleixner

    Roland McGrath
     
  • Now that we check for translation enabled/disabled based on the presence
    of the IOMMU translation table, we can get rid of translate_phb.

    Signed-off-by: Muli Ben-Yehuda
    Signed-off-by: Andrew Morton
    Signed-off-by: Ingo Molnar
    Signed-off-by: Thomas Gleixner

    Muli Ben-Yehuda
     
  • In x86_64 and i386 architectures most arrays that are sized using
    NR_CPUS lay in local memory on node 0. Not only will most (99%?) of the
    systems not use all the slots in these arrays, particularly when NR_CPUS
    is increased to accommodate future very high cpu count systems, but a
    number of cache lines are passed unnecessarily on the system bus when
    these arrays are referenced by cpus on other nodes.

    Typically, the values in these arrays are referenced by the cpu
    accessing it's own values, though when passing IPI interrupts, the cpu
    does access the data relevant to the targeted cpu/node. Of course, if
    the referencing cpu is not on node 0, then the reference will still
    require cross node exchanges of cache lines. A common use of this is
    for an interrupt service routine to pass the interrupt to other cpus
    local to that node.

    Ideally, all the elements in these arrays should be moved to the per_cpu
    data area. In some cases (such as x86_cpu_to_apicid) the array is
    referenced before the per_cpu data areas are setup. In this case, a
    static array is declared in the __initdata area and initialized by the
    booting cpu (BSP). The values are then moved to the per_cpu area after
    it is initialized and the original static array is freed with the rest
    of the __initdata.

    This patch:

    Fix four instances where cpu_to_node is referenced by array instead of
    via the cpu_to_node macro. This is preparation to moving it to the
    per_cpu data area.

    Signed-off-by: Mike Travis
    Cc: Andi Kleen
    Cc: Christoph Lameter
    Cc: "Siddha, Suresh B"
    Signed-off-by: Andrew Morton
    Signed-off-by: Ingo Molnar
    Signed-off-by: Thomas Gleixner

    Mike Travis
     
  • It needs to be automatic. The HPET legacy interrupt mode disconnects
    the RTC interrupt and connects the interrupt of the second HPET channel.

    [ tglx: arch/x86 adaptation and comment fixup]

    Signed-off-by: Stefan Richter
    Signed-off-by: Andi Kleen
    Signed-off-by: Ingo Molnar
    Signed-off-by: Thomas Gleixner

    Stefan Richter
     
  • .. as they're, with a single exception, never written to.

    [ tglx: arch/x86 adaptation ]

    Signed-off-by: Jan Beulich
    Signed-off-by: Andi Kleen
    Signed-off-by: Ingo Molnar
    Signed-off-by: Thomas Gleixner

    Jan Beulich
     
  • Move the = into the __setup line.
    Document the option in kernel-parameters.txt by adding a pointer
    to the x86-64 specific documentation.

    [ tglx: arch/x86 adaptation ]

    Pointed out by Robert Day
    Signed-off-by: Andi Kleen
    Signed-off-by: Ingo Molnar
    Signed-off-by: Thomas Gleixner

    Andi Kleen