31 Aug, 2007

1 commit

  • Dependencies of CONFIG_SUSPEND and CONFIG_HIBERNATION introduced by commit
    296699de6bdc717189a331ab6bbe90e05c94db06 "Introduce CONFIG_SUSPEND for
    suspend-to-Ram and standby" are incorrect, as they don't cover the facts that
    (1) not all architectures support suspend and (2) SMP hibernation is only
    possible on X86 and PPC64 (if CONFIG_PPC64_SWSUSP is set).

    Signed-off-by: Rafael J. Wysocki
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Rafael J. Wysocki
     

25 Aug, 2007

1 commit


21 Aug, 2007

1 commit

  • In MPS mode, "nosmp" and "maxcpus=0" boot a UP kernel with IOAPIC disabled.
    However, in ACPI mode, these parameters didn't completely disable
    the IO APIC initialization code and boot failed.

    init/main.c:
    Disable the IO_APIC if "nosmp" or "maxcpus=0"
    undefine disable_ioapic_setup() when it doesn't apply.

    i386:
    delete ioapic_setup(), it was a duplicate of parse_noapic()
    delete undefinition of disable_ioapic_setup()

    x86_64:
    rename disable_ioapic_setup() to parse_noapic() to match i386
    define disable_ioapic_setup() in header to match i386

    http://bugzilla.kernel.org/show_bug.cgi?id=1641

    Acked-by: Andi Kleen
    Signed-off-by: Len Brown

    Len Brown
     

19 Aug, 2007

4 commits

  • Very old 64bit binutils have .cfi_startproc/endproc, but
    no .cfi_rel_offset. Check for .cfi_rel_offset too.

    Cc: Jan Beulich
    Cc: Sam Ravnborg
    Signed-off-by: Linus Torvalds

    Andi Kleen
     
  • Very old binutils (2.12.90...) seem to have trouble with newlines
    in assembler macro invocation. They put them into the resulting
    argument expansion. In this case this lead to a parse error because
    a .rept expression ended up spread over multiple lines. Change the PMDS()
    invocation to a single line.

    Signed-off-by: Andi Kleen
    Signed-off-by: Linus Torvalds

    Andi Kleen
     
  • Fixed wrong expression which enabled watchdogs even if nmi_watchdog kernel
    parameter wasn't set. This regression got slightly introduced with commit
    b7471c6da94d30d3deadc55986cc38d1ff57f9ca.

    Introduced NMI_DISABLED (-1) which allows to switch the value of NMI_DEFAULT
    without breaking the APIC NMI watchdog code (again).

    Fixes:
    https://bugzilla.novell.com/show_bug.cgi?id=298084
    http://bugzilla.kernel.org/show_bug.cgi?id=7839
    And likely some more nmi_watchdog=0 related issues.

    Signed-off-by: Daniel Gollub
    Signed-off-by: Andi Kleen
    Signed-off-by: Linus Torvalds

    Daniel Gollub
     
  • This should fix an oops with PCMCIA PATA devices

    http://bugzilla.kernel.org/show_bug.cgi?id=8424

    This is not a full fix for the problem, but probably
    still the right thing to do.

    [ I'm almost certain it's *not* the right thing to do, but it avoids an
    oops, and I want comments from others on what the right thing would
    actually be.. I suspect we should just remove the use of dma_mask
    entirely in this function, and just use coherent_dma_mask. - Linus ]

    Signed-off-by: Andi Kleen
    Signed-off-by: Linus Torvalds

    Andi Kleen
     

13 Aug, 2007

1 commit


12 Aug, 2007

7 commits

  • apply_alternatives uses memcpy() to apply alternatives. Which has the
    unfortunate effect that while applying memcpy alternative to memcpy
    itself it tries to overwrite itself with nops - which causes #UD fault
    as it overwrites half of an instruction in copy loop, and from this
    point on only possible outcome is triplefault and reboot.

    So let's overwrite only first two instructions of memcpy - as long as
    the main memcpy loop is not in first two bytes it will work fine.

    Signed-off-by: Petr Vandrovec
    Signed-off-by: Linus Torvalds

    Petr Vandrovec
     
  • Create arch/x86_64/vdso/.gitignore and put vdso.lds into it.

    Signed-off-by: Pete Zaitcev
    Signed-off-by: Andi Kleen
    Signed-off-by: Linus Torvalds

    Pete Zaitcev
     
  • VT is very picky about when it can enter execution.
    Get all segments setup and get LDT and TR into valid state to allow
    VT execution under VMware and KVM (untested).

    This makes the boot decompression run under VT, which makes it several
    orders of magnitude faster on 64-bit Intel hardware.

    Before, I was seeing times up to a minute or more to decompress a 1.3MB kernel
    on a very fast box.

    Signed-off-by: Zachary Amsden
    Signed-off-by: Andi Kleen
    Signed-off-by: Linus Torvalds

    Zachary Amsden
     
  • It turns out CLFLUSH support is still not complete; we
    flush the wrong pages. Again disable it for the release.
    Noticed by Jan Beulich who then also noticed a stupid typo later.

    Signed-off-by: Andi Kleen
    Signed-off-by: Linus Torvalds

    Andi Kleen
     
  • Current code assumed that devices were directly connected to a Calgary
    bridge, as it tried to get the iommu table directly from the parent bus
    controller.

    When we have another bridge between the Calgary/CalIOC2 bridge and the
    device we should look upwards until we get to the top (Calgary/CalIOC2
    bridge), where the iommu table resides.

    Signed-off-by: Murillo Fernandes Bernardes
    Signed-off-by: Muli Ben-Yehuda
    Signed-off-by: Andi Kleen
    Signed-off-by: Linus Torvalds

    Murillo Fernandes Bernardes
     
  • Some broken devices have been discovered to require %al/%ax/%eax registers
    for MMIO config space accesses. Modify mmconfig.c to use these registers
    explicitly (rather than modify the global readb/writeb/etc inlines).

    AK: also changed i386 to always use eax
    AK: moved change to extended space probing to different patch
    AK: reworked with inlines according to Linus' requirements.
    AK: improve comments.

    Signed-off-by: dean gaudet
    Signed-off-by: Andi Kleen
    Signed-off-by: Linus Torvalds

    dean gaudet
     
  • I have had four seperate system lockups attributable to this exact problem
    in two days of testing. Instead of trying to handle all the weird end
    cases and wrap, how about changing it to look for exactly what we appear
    to want.

    The following patch removes a couple races in setup_APIC_timer. One occurs
    when the HPET advances the COUNTER past the T0_CMP value between the time
    the T0_CMP was originally read and when COUNTER is read. This results in
    a delay waiting for the counter to wrap. The other results from the counter
    wrapping.

    This change takes a snapshot of T0_CMP at the beginning of the loop and
    simply loops until T0_CMP has changed (a tick has happened).

    I have one small concern about the patch. I am not sure it meets the intent
    as well as it should. I think we are trying to match APIC timer interrupts up
    with the hpet counter increment. The event which appears to be disturbing
    this loop in our test environment is the NMI watchdog. What we believe has
    been happening with the existing code is the setup_APIC_timer loop has read
    the CMP value, and the NMI watchdog code fires for the first time. This
    results in a series of icache miss slowdowns and by the time we get back to
    things it has wrapped.

    I think this code is trying to get the CMP as close to the counter value as
    possible. If that is the intent, maybe we should really be testing against a
    "window" around the CMP. Something like COUNTER = CMP+/2. It appears COUNTER
    should get advanced every 89nSec (IIRC). The above seems like an unreasonably
    small window, but may be necessary. Without documentation, I am not sure of
    the original intent with this code.

    In summary, this code fixes my boot hangs, but since I am not certain of the
    intent of the existing code, I am not certain this has not introduced new bugs
    or unexpected behaviors.

    Signed-off-by: Robin Holt
    Acked-by: Andi Kleen
    Cc: Vojtech Pavlik
    Cc: "Aaron Durbin"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Robin Holt
     

01 Aug, 2007

4 commits

  • C files should include the header files that prototype their functions.

    Eliminates a sparse warning:
    warning: symbol 'check_bugs' was not declared. Should it be static?

    Signed-off-by: Josh Triplett
    Cc: Andi Kleen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Josh Triplett
     
  • Revert 7e92b4fc345f5b6f57585fbe5ffdb0f24d7c9b26. It broke Sébastien Dugué's
    machine and Jeff said (persuasively)

    This seems like it will break decades-long-working stuff, in favor of
    breaking new ground in our favorite area, "trusting the BIOS."

    It's just not worth it for serial ports, IMO. Serial ports are something
    that just shouldn't break at this late stage in the game. My new Intel
    platform boxes don't even have serial ports, so I question the value of
    messing with serial port probing even more... because... just wait a year,
    and your box won't have a serial port either! :)

    I certainly don't object to the use of platform devices (or isa_driver),
    but the probe change seems questionable. That's sorta analagous to
    rewriting the floppy driver probe routine. Sure you could do it... but why
    risk all that damage and go through debugging all over again?

    It seems clear from this report that we cannot, should not, trust BIOS for
    something (a) so simple and (b) that has been working for over a decade.

    Much discussion ensued and we've decided to have another go at all of this.

    Cc: Sébastien Dugué
    Cc: Bjorn Helgaas
    Cc: Len Brown
    Cc: Adam Belay
    Cc: Matthew Garrett
    Cc: Russell King
    Cc: Jeff Garzik
    Acked-by: Alan Cox
    Cc: Michal Piotrowski
    Cc: Sascha Sommer
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andrew Morton
     
  • Remove unused TIF_NOTIFY_RESUME flag for all processor architectures. The
    flag was not used excecpt on IA-64 where the patch replaces it with
    TIF_PERFMON_WORK.

    Signed-off-by: stephane eranian
    Cc:
    Cc: "Luck, Tony"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stephane Eranian
     
  • Fix section mismatch warnings:
    these functions are called only from __init functions.

    WARNING: vmlinux.o(.text+0x1861c): Section mismatch: reference to .init.text:free_bootmem (between 'free_tce_table' and 'build_tce_table')
    WARNING: vmlinux.o(.text+0x187e5): Section mismatch: reference to .init.text:__alloc_bootmem_low (between 'alloc_tce_table' and 'kretprobe_trampoline_holder')

    Signed-off-by: Randy Dunlap
    Signed-off-by: Muli Ben-Yehuda
    Cc: Andi Kleen
    Cc: Sam Ravnborg
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Randy Dunlap
     

30 Jul, 2007

3 commits

  • Remove fs.h from mm.h. For this,
    1) Uninline vma_wants_writenotify(). It's pretty huge anyway.
    2) Add back fs.h or less bloated headers (err.h) to files that need it.

    As result, on x86_64 allyesconfig, fs.h dependencies cut down from 3929 files
    rebuilt down to 3444 (-12.3%).

    Cross-compile tested without regressions on my two usual configs and (sigh):

    alpha arm-mx1ads mips-bigsur powerpc-ebony
    alpha-allnoconfig arm-neponset mips-capcella powerpc-g5
    alpha-defconfig arm-netwinder mips-cobalt powerpc-holly
    alpha-up arm-netx mips-db1000 powerpc-iseries
    arm arm-ns9xxx mips-db1100 powerpc-linkstation
    arm-assabet arm-omap_h2_1610 mips-db1200 powerpc-lite5200
    arm-at91rm9200dk arm-onearm mips-db1500 powerpc-maple
    arm-at91rm9200ek arm-picotux200 mips-db1550 powerpc-mpc7448_hpc2
    arm-at91sam9260ek arm-pleb mips-ddb5477 powerpc-mpc8272_ads
    arm-at91sam9261ek arm-pnx4008 mips-decstation powerpc-mpc8313_rdb
    arm-at91sam9263ek arm-pxa255-idp mips-e55 powerpc-mpc832x_mds
    arm-at91sam9rlek arm-realview mips-emma2rh powerpc-mpc832x_rdb
    arm-ateb9200 arm-realview-smp mips-excite powerpc-mpc834x_itx
    arm-badge4 arm-rpc mips-fulong powerpc-mpc834x_itxgp
    arm-carmeva arm-s3c2410 mips-ip22 powerpc-mpc834x_mds
    arm-cerfcube arm-shannon mips-ip27 powerpc-mpc836x_mds
    arm-clps7500 arm-shark mips-ip32 powerpc-mpc8540_ads
    arm-collie arm-simpad mips-jazz powerpc-mpc8544_ds
    arm-corgi arm-spitz mips-jmr3927 powerpc-mpc8560_ads
    arm-csb337 arm-trizeps4 mips-malta powerpc-mpc8568mds
    arm-csb637 arm-versatile mips-mipssim powerpc-mpc85xx_cds
    arm-ebsa110 i386 mips-mpc30x powerpc-mpc8641_hpcn
    arm-edb7211 i386-allnoconfig mips-msp71xx powerpc-mpc866_ads
    arm-em_x270 i386-defconfig mips-ocelot powerpc-mpc885_ads
    arm-ep93xx i386-up mips-pb1100 powerpc-pasemi
    arm-footbridge ia64 mips-pb1500 powerpc-pmac32
    arm-fortunet ia64-allnoconfig mips-pb1550 powerpc-ppc64
    arm-h3600 ia64-bigsur mips-pnx8550-jbs powerpc-prpmc2800
    arm-h7201 ia64-defconfig mips-pnx8550-stb810 powerpc-ps3
    arm-h7202 ia64-gensparse mips-qemu powerpc-pseries
    arm-hackkit ia64-sim mips-rbhma4200 powerpc-up
    arm-integrator ia64-sn2 mips-rbhma4500 s390
    arm-iop13xx ia64-tiger mips-rm200 s390-allnoconfig
    arm-iop32x ia64-up mips-sb1250-swarm s390-defconfig
    arm-iop33x ia64-zx1 mips-sead s390-up
    arm-ixp2000 m68k mips-tb0219 sparc
    arm-ixp23xx m68k-amiga mips-tb0226 sparc-allnoconfig
    arm-ixp4xx m68k-apollo mips-tb0287 sparc-defconfig
    arm-jornada720 m68k-atari mips-workpad sparc-up
    arm-kafa m68k-bvme6000 mips-wrppmc sparc64
    arm-kb9202 m68k-hp300 mips-yosemite sparc64-allnoconfig
    arm-ks8695 m68k-mac parisc sparc64-defconfig
    arm-lart m68k-mvme147 parisc-allnoconfig sparc64-up
    arm-lpd270 m68k-mvme16x parisc-defconfig um-x86_64
    arm-lpd7a400 m68k-q40 parisc-up x86_64
    arm-lpd7a404 m68k-sun3 powerpc x86_64-allnoconfig
    arm-lubbock m68k-sun3x powerpc-cell x86_64-defconfig
    arm-lusl7200 mips powerpc-celleb x86_64-up
    arm-mainstone mips-atlas powerpc-chrp32

    Signed-off-by: Alexey Dobriyan
    Signed-off-by: Linus Torvalds

    Alexey Dobriyan
     
  • Restore the 2.6.22 CONFIG_ACPI_SLEEP build option, but now shadowing the
    new CONFIG_PM_SLEEP option.

    Signed-off-by: Len Brown
    [ Modified to work with the PM config setup changes. ]
    Signed-off-by: Linus Torvalds

    Len Brown
     
  • Replace CONFIG_SOFTWARE_SUSPEND with CONFIG_HIBERNATION to avoid
    confusion (among other things, with CONFIG_SUSPEND introduced in the
    next patch).

    Signed-off-by: Rafael J. Wysocki
    Signed-off-by: Linus Torvalds

    Rafael J. Wysocki
     

28 Jul, 2007

1 commit

  • b716395e2b8e450e294537de0c91476ded2f0395 added code to handle
    a compatability issue with 32bit quota tools, but the new compat
    routines are only needed when CONFIG_COMPAT=y (and with this set
    to 'n' there are compilation problems since some new typedefs are
    not visible).

    Reported by Doug Chapman. Fix tuned by a cast of thousands (Andi,
    Andreas, Arthur, HPA, Willy)

    Signed-off-by: Tony Luck

    Tony Luck
     

27 Jul, 2007

4 commits

  • This reverts most of commit 19d36ccdc34f5ed444f8a6af0cbfdb6790eb1177.

    The way to DEBUG_RODATA interactions with KPROBES and CPU hotplug is to
    just not mark the text as being write-protected in the first place.
    Both of those facilities depend on rewriting instructions.

    Having "helpful" debug facilities that just cause more problem is not
    being helpful. It just adds complexity and bugs. Not worth it.

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

    Linus Torvalds
     
  • tsc_unstable is declared twice.

    Signed-off-by: Thomas Gleixner
    Cc: Andi Kleen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Thomas Gleixner
     
  • Fix the following two section mismatch warnings:

    WARNING: vmlinux.o(.text+0x1ce84): Section mismatch: reference to .init.text:free_bootmem (between 'free_tce_table' and 'build_tce_table')
    WARNING: vmlinux.o(.text+0x1d04d): Section mismatch: reference to .init.text:__alloc_bootmem_low (between 'alloc_tce_table' and 'kretprobe_trampoline_holder')

    In both cases the functions was used only from __init
    context so mark them __init.

    Signed-off-by: Sam Ravnborg
    Cc: Andi Kleen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Sam Ravnborg
     
  • The function arch_vma_name() is declared weak and thus it was
    not noticed that x86_64 had two almost identical implementations.

    It was introduced in syscall32.c by: c633090e3105e779c97d4978e5e3d7d66b291cfb
    It was introduced in mm/init.c by: 2aae950b21e4bc789d1fc6668faf67e8748300b7

    Signed-off-by: Roland McGrath
    Acked-by: Sam Ravnborg
    Cc: Andi Kleen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Roland McGrath
     

25 Jul, 2007

1 commit


23 Jul, 2007

10 commits

  • This avoids a conflict with sparse builds.

    Reported by Alexey Dobriyan, fix suggested by Al Viro

    Signed-off-by: Andi Kleen
    Signed-off-by: Linus Torvalds

    Andi Kleen
     
  • 64bit code in there now since some time.

    Signed-off-by: Andi Kleen
    Signed-off-by: Linus Torvalds

    Andi Kleen
     
  • Get rid of warnings like

    WARNING: vmlinux.o(.bootstrap.text+0x1a8): Section mismatch: reference to .init.text:x86_64_start_kernel (between 'initial_code' and 'init_rsp')

    - Move initialization code into .text.head like i386 because modpost knows about this already
    - Mark initial_code .initdata

    Signed-off-by: Andi Kleen
    Signed-off-by: Linus Torvalds

    Andi Kleen
     
  • Fix following warning:
    WARNING: vmlinux.o(.text+0x188ea): Section mismatch: reference to .init.text:__alloc_bootmem_core (between 'alloc_bootmem_high_node' and 'get_gate_vma')

    alloc_bootmem_high_node() is only used from __init scope so declare it __init.
    And in addition declare the weak variant __init too.

    Signed-off-by: Sam Ravnborg
    Signed-off-by: Andi Kleen
    Signed-off-by: Linus Torvalds

    Sam Ravnborg
     
  • Fix following warnings:
    WARNING: vmlinux.o(.text+0x945e): Section mismatch: reference to .init.text:__set_fixmap (between 'hpet_arch_init' and 'hpet_mask_rtc_irq_bit')
    WARNING: vmlinux.o(.text+0x9474): Section mismatch: reference to .init.text:__set_fixmap (between 'hpet_arch_init' and 'hpet_mask_rtc_irq_bit')

    hpet_arch_init is only used from __init context so mark it __init.

    Signed-off-by: Sam Ravnborg
    Signed-off-by: Andi Kleen
    Signed-off-by: Linus Torvalds

    Sam Ravnborg
     
  • Previously this flag was only used on 32bit, but some shared code can use
    it now.

    Signed-off-by: Andi Kleen
    Signed-off-by: Linus Torvalds

    Andi Kleen
     
  • When a machine check or NMI occurs while multiple byte code is patched
    the CPU could theoretically see an inconsistent instruction and crash.
    Prevent this by temporarily disabling MCEs and returning early in the
    NMI handler.

    Based on discussion with Mathieu Desnoyers.

    Cc: Mathieu Desnoyers
    Cc: Jeremy Fitzhardinge
    Signed-off-by: Andi Kleen
    Signed-off-by: Linus Torvalds

    Andi Kleen
     
  • Reenable kprobes and alternative patching when the kernel text is write
    protected by DEBUG_RODATA

    Add a general utility function to change write protected text. The new
    function remaps the code using vmap to write it and takes care of CPU
    synchronization. It also does CLFLUSH to make icache recovery faster.

    There are some limitations on when the function can be used, see the
    comment.

    This is a newer version that also changes the paravirt_ops code.
    text_poke also supports multi byte patching now.

    Contains bug fixes from Zach Amsden and suggestions from Mathieu
    Desnoyers.

    Cc: Jan Beulich
    Cc: Jeremy Fitzhardinge
    Cc: Mathieu Desnoyers
    Cc: Zach Amsden
    Signed-off-by: Andi Kleen
    Signed-off-by: Linus Torvalds

    Andi Kleen
     
  • This patch uses the read and write functions provided at system.h
    for control registers instead of writting raw assembly over and
    over again in .c files. Functions to manipulate cr2 and cr8 were
    provided, as they were lacking.

    Also, removed some extra space after closing brackets

    Signed-off-by: Glauber de Oliveira Costa
    Signed-off-by: Andi Kleen
    Signed-off-by: Linus Torvalds

    Glauber de Oliveira Costa
     
  • This patch makes the i386 behave the same way that x86_64 does when a
    segfault happens. A line gets printed to the kernel log so that tools
    that need to check for failures can behave more uniformly between
    debug.show_unhandled_signals sysctl variable to 0 (or by doing echo 0 >
    /proc/sys/debug/exception-trace)

    Also, all of the lines being printed are now using printk_ratelimit() to
    deny the ability of DoS from a local user with a program like the
    following:

    main()
    {
    while (1)
    if (!fork()) *(int *)0 = 0;
    }

    This new revision also includes the fix that Andrew did which got rid of
    new sysctl that was added to the system in earlier versions of this.
    Also, 'show-unhandled-signals' sysctl has been renamed back to the old
    'exception-trace' to avoid breakage of people's scripts.

    AK: Enabling by default for i386 will be likely controversal, but let's see what happens
    AK: Really folks, before complaining just fix your segfaults
    AK: I bet this will find a lot of silent issues

    Signed-off-by: Masoud Sharbiani
    Signed-off-by: Andi Kleen
    [ Personally, I've found the complaints useful on x86-64, so I'm all for
    this. That said, I wonder if we could do it more prettily.. -Linus ]
    Signed-off-by: Linus Torvalds

    Masoud Asgharifard Sharbiani
     

22 Jul, 2007

2 commits