26 Jun, 2005

40 commits

  • Signed-off-by: Alexey Dobriyan
    Signed-off-by: Domen Puncer
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Domen Puncer
     
  • Signed-off-by: Alexey Dobriyan
    Signed-off-by: Domen Puncer
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Domen Puncer
     
  • Signed-off-by: Alexey Dobriyan
    Signed-off-by: Domen Puncer
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Domen Puncer
     
  • Signed-off-by: Alexey Dobriyan
    Signed-off-by: Domen Puncer
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Domen Puncer
     
  • Signed-off-by: Alexey Dobriyan
    Signed-off-by: Domen Puncer
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Domen Puncer
     
  • The comment for msleep_interruptible() is wrong, as it will ignore
    wait-queue events, but will wake up early for signals.

    Signed-off-by: Nishanth Aravamudan
    Signed-off-by: Domen Puncer
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Domen Puncer
     
  • Use msleep_interruptible() instead of schedule_timeout() in send_break() to
    guarantee the task delays as expected. Change @duration's units to
    milliseconds, and modify arguments in callers appropriately. Patch is
    compile-tested.

    Signed-off-by: Nishanth Aravamudan
    Signed-off-by: Domen Puncer
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Domen Puncer
     
  • Not sure why any driver needs to sleep for *two* ticks, so let's fix it.

    Use msleep() instead of schedule_timeout() to guarantee the task delays as
    expected. Signals are never checked for by the callers or in the function
    itself, so use TASK_UNINTERRUPTIBLE instead of TASK_INTERRUPTIBLE. The
    delay is presumed to have been written when HZ==100, and thus has been
    multiplied by 10 to pass to msleep().

    Signed-off-by: Nishanth Aravamudan
    Signed-off-by: Domen Puncer
    Acked-by: Russell King
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Domen Puncer
     
  • Fix a bunch of whitespace oddities and use `unsigned long' for a
    jiffies-holding variable.

    Signed-off-by: M.Baris Demiray
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    M.Baris Demiray
     
  • au1100: use C99 struct init.

    Signed-off-by: randy_dunlap
    Acked-by: Russell King
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    randy_dunlap
     
  • Put function prototypes for memset() and memcpy() ahead of where
    there are used, to kill sparse warnings:

    arch/x86_64/boot/compressed/../../../../lib/inflate.c:317:3: warning: undefined identifier 'memset'
    arch/x86_64/boot/compressed/../../../../lib/inflate.c:601:11: warning: undefined identifier 'memcpy'
    arch/x86_64/boot/compressed/misc.c:151:2: warning: undefined identifier 'memcpy'
    arch/x86_64/boot/compressed/../../../../lib/inflate.c:317:3: warning: call with no type!
    arch/x86_64/boot/compressed/../../../../lib/inflate.c:601:17: warning: call with no type!
    arch/x86_64/boot/compressed/misc.c:151:9: warning: call with no type!

    Signed-off-by: randy_dunlap
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    randy_dunlap
     
  • This patch #if 0's an unused function.

    Signed-off-by: Adrian Bunk
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Adrian Bunk
     
  • This patch contains the following cleanups:
    - make some needlessly global functions static
    - b1dma.c __init/__exit the functions b1dma_{init,exit}

    Signed-off-by: Adrian Bunk
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Adrian Bunk
     
  • I didn't find any possible modular usage of mca_find_device_by_slot in
    the kernel, and this patch therefore removes the EXPORT_SYMBOL.

    This patch should be safe since mca-legacy is nothing drivers should
    move to.

    Signed-off-by: Adrian Bunk
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Adrian Bunk
     
  • This patch contains the following possible cleanups:
    - make needlessly global code static
    - remove the following unused global function:
    - isdn_audio.c: isdn_audio_2adpcm_flush
    - remove the following unused struct:
    - isdn_net.c: isdn_concap_demand_dial_dops

    Signed-off-by: Adrian Bunk
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Adrian Bunk
     
  • This patch contains the following possible cleanups:
    - make some needlessly global functions static
    - remove the following unused global functions:
    - callbacks.c: cb_out_3
    - capi.c: capi_decode_disc_conf

    Signed-off-by: Adrian Bunk
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Adrian Bunk
     
  • This patch contains the following possible cleanips:
    - make some needlessly global code static
    - remove the compiled but completely unused debug.c
    - remove or #if 0 the following unused global functions:
    - command.c: loopback
    - command.c: loadproc
    - init.c: irq_supported
    - packet.c: print_skb
    - shmem.c: memset_shmem
    - timer.c: trace_timer

    Signed-off-by: Adrian Bunk
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Adrian Bunk
     
  • I corrected a small error and enhanced the govenor.txt file with the
    ondemand daemon because the kernel configs link to the documentation but
    ondemand wasn't documentated. Feel free to include the patch in the
    attachment.

    Cc: Dominik Brodowski
    Cc: Dave Jones
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Nico Golde
     
  • Remove unneeded fbsysfs printk.

    Signed-off-by: Jon Smirl
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jon Smirl
     
  • We're accidentally selecting the new fonts by default. Don't.

    Signed-off-by: Jurriaan Kalkman
    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jurriaan on adsl-gate
     
  • vesafb will do really silly things like..

    mtrr: type mismatch for e0000000,8000000 old: write-back new: write-combining
    mtrr: type mismatch for e0000000,4000000 old: write-back new: write-combining
    mtrr: type mismatch for e0000000,2000000 old: write-back new: write-combining
    mtrr: type mismatch for e0000000,1000000 old: write-back new: write-combining
    mtrr: type mismatch for e0000000,800000 old: write-back new: write-combining
    mtrr: type mismatch for e0000000,400000 old: write-back new: write-combining
    mtrr: type mismatch for e0000000,200000 old: write-back new: write-combining
    mtrr: type mismatch for e0000000,100000 old: write-back new: write-combining
    mtrr: type mismatch for e0000000,80000 old: write-back new: write-combining
    mtrr: type mismatch for e0000000,40000 old: write-back new: write-combining
    mtrr: type mismatch for e0000000,20000 old: write-back new: write-combining
    mtrr: type mismatch for e0000000,10000 old: write-back new: write-combining
    mtrr: type mismatch for e0000000,8000 old: write-back new: write-combining
    mtrr: type mismatch for e0000000,4000 old: write-back new: write-combining
    mtrr: type mismatch for e0000000,2000 old: write-back new: write-combining
    mtrr: type mismatch for e0000000,1000 old: write-back new: write-combining
    mtrr: size and base must be multiples of 4 kiB
    mtrr: size: 0x800 base: 0xe0000000
    mtrr: size and base must be multiples of 4 kiB
    mtrr: size: 0x400 base: 0xe0000000
    mtrr: size and base must be multiples of 4 kiB
    mtrr: size: 0x200 base: 0xe0000000
    mtrr: size and base must be multiples of 4 kiB
    mtrr: size: 0x100 base: 0xe0000000
    mtrr: size and base must be multiples of 4 kiB
    mtrr: size: 0x80 base: 0xe0000000
    mtrr: size and base must be multiples of 4 kiB
    mtrr: size: 0x40 base: 0xe0000000
    mtrr: size and base must be multiples of 4 kiB
    mtrr: size: 0x20 base: 0xe0000000
    mtrr: size and base must be multiples of 4 kiB
    mtrr: size: 0x10 base: 0xe0000000
    mtrr: size and base must be multiples of 4 kiB
    mtrr: size: 0x8 base: 0xe0000000
    mtrr: size and base must be multiples of 4 kiB
    mtrr: size: 0x4 base: 0xe0000000
    mtrr: size and base must be multiples of 4 kiB
    mtrr: size: 0x2 base: 0xe0000000
    mtrr: size and base must be multiples of 4 kiB
    mtrr: size: 0x1 base: 0xe0000000

    Stop scaling down at PAGE_SIZE.
    Also fix up some broken indentation.

    Signed-off-by: Dave Jones
    Cc: Alexey Dobriyan
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Dave Jones
     
  • o Following patch provides purely cosmetic changes and corrects CodingStyle
    guide lines related certain issues like below in kexec related files

    o braces for one line "if" statements, "for" loops,
    o more than 80 column wide lines,
    o No space after "while", "for" and "switch" key words

    o Changes:
    o take-2: Removed the extra tab before "case" key words.
    o take-3: Put operator at the end of line and space before "*/"

    Signed-off-by: Maneesh Soni
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Maneesh Soni
     
  • If we are faulting in kernel it is quite possible this will lead to a
    panic. Save trap number, cr2 (in case of page fault) and error_code in the
    current thread (these fields already exist for signal delivery but are not
    used here).

    This helps later kdump crash analyzing from user-space (a script has been
    submitted to dig this info out in gdb).

    Signed-off-by: Alexander Nyberg
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alexander Nyberg
     
  • Makes kexec_crashdump() take a pt_regs * as an argument. This allows to
    get exact register state at the point of the crash. If we come from direct
    panic assertion NULL will be passed and the current registers saved before
    crashdump.

    This hooks into two places:
    die(): check the conditions under which we will panic when calling
    do_exit and go there directly with the pt_regs that caused the fatal
    fault.

    die_nmi(): If we receive an NMI lockup while in the kernel use the
    pt_regs and go directly to crash_kexec(). We're probably nested up badly
    at this point so this might be the only chance to escape with proper
    information.

    Signed-off-by: Alexander Nyberg
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alexander Nyberg
     
  • Add a sysrq-trigger mechanism for kexec based crashdumps. Alt-Sysrq-c
    triggers a kexec based crashdump.

    Signed-off-by: Hariprasad Nellitheertha
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Hariprasad Nellitheertha
     
  • Removed the dependency on backup region. Now all the information is encoded
    in ELF format. /dev/oldmem is a dummy interface. User space tool need to be
    intelligent enough to parse the elf headers and read the relevant memory areas
    with the help of /dev/oldmem.

    Signed-off-by: Vivek Goyal
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Vivek Goyal
     
  • Hariprasad Nellitheertha

    This patch contains the code that enables us to access the previous kernel's
    memory as /dev/oldmem.

    Signed-off-by: Eric Biederman
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Vivek Goyal
     
  • o Adds support for parsing core ELF32 headers.
    o I am expecting ELF32 support to go away down the line. This patch has been
    introduced for testing purposes as gdb can not parse ELF64 headers for
    i386. When a decent user space solution is available, ELF32 support
    can go away.

    Signed-off-by: Vivek Goyal
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Vivek Goyal
     
  • From: "Vivek Goyal"

    o Support for /proc/vmcore interface. This interface exports elf core image
    either in ELF32 or ELF64 format, depending on the format in which elf headers
    have been stored by crashed kernel.
    o Added support for CONFIG_VMCORE config option.
    o Removed the dependency on /proc/kcore.

    From: "Eric W. Biederman"

    This patch has been refactored to more closely match the prevailing style in
    the affected files. And to clearly indicate the dependency between
    /proc/kcore and proc/vmcore.c

    From: Hariprasad Nellitheertha

    This patch contains the code that provides an ELF format interface to the
    previous kernel's memory post kexec reboot.

    Signed off by Hariprasad Nellitheertha
    Signed-off-by: Eric Biederman
    Signed-off-by: Vivek Goyal
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Vivek Goyal
     
  • This patch adds support for retrieving the address of elf core header if one
    is passed in command line.

    Signed-off-by: Vivek Goyal
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Vivek Goyal
     
  • This patch provides the interfaces necessary to read the dump contents,
    treating it as a high memory device.

    Signed off by Hariprasad Nellitheertha
    Signed-off-by: Eric Biederman
    Signed-off-by: Vivek Goyal
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Vivek Goyal
     
  • - config option CONFIG_CRASH_DUMP

    - Made it dependent on HIGHMEM. This is required as capture kernel treats
    the previous kernel's memory as high memmory and stitches a PTE for
    accessing it.

    Signed-off-by: Vivek Goyal
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Vivek Goyal
     
  • This patch retrieves the max_pfn being used by previous kernel and stores it
    in a safe location (saved_max_pfn) before it is overwritten due to user
    defined memory map. This pfn is used to make sure that user does not try to
    read the physical memory beyond saved_max_pfn.

    Signed-off-by: Vivek Goyal
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Vivek Goyal
     
  • o Specify "irqpoll" command line option which loading second kernel. This
    helps in reducing driver initialization failures in second kernel due
    to shared interrupts.
    o Enabled LAPIC/IOAPIC support for UP kernels in second kernel. This reduces
    the chances of devices sharing the irq and hence reduces the chances of
    driver initialization failures in second kernel.
    o Build a UP capture kernel and disabled SMP support.

    Signed-off-by: Vivek Goyal
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Vivek Goyal
     
  • This patch contains the documentation for the kexec based crash dump tool.

    Quick kdump-howto
    ================================================================

    1) Download and build kexec-tools.

    2) Download and build the latest kexec/kdump (-mm) kernel patchset.
    Two kernels need to be built in order to get this feature working.

    A) First kernel:
    a) Enable "kexec system call" feature:
    CONFIG_KEXEC=y
    b) Physical load address (use default):
    CONFIG_PHYSICAL_START=0x100000
    c) Enable "sysfs file system support":
    CONFIG_SYSFS=y
    d) Boot into first kernel with the command line parameter "crashkernel=Y@X":
    For example: "crashkernel=64M@16M".

    B) Second kernel:
    a) Enable "kernel crash dumps" feature:
    CONFIG_CRASH_DUMP=y
    b) Physical load addreess, use same load address as X in "crashkernel"
    kernel parameter in d) above, e.g., 16 MB or 0x1000000.
    CONFIG_PHYSICAL_START=0x1000000
    c) Enable "/proc/vmcore support" (Optional, in Pseudo filesystems).
    CONFIG_PROC_VMCORE=y

    3) Boot into the first kernel.

    4) Load the second kernel to be booted using:

    kexec -p --crash-dump --args-linux --append="root=
    maxcpus=1 init 1"

    5) System reboots into the second kernel when a panic occurs. A module can be
    written to force the panic, for testing purposes.

    6) See Documentation/kdump.txt for how to read the first kernel's
    memory image and how to analyze it.

    Signed-off-by: Hariprasad Nellitheertha
    Signed-off-by: Eric Biederman
    Signed-off-by: Vivek Goyal
    Signed-off-by: randy_dunlap
    Signed-off-by: Maneesh Soni
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Vivek Goyal
     
  • o Problem: Kexec on panic hangs if first kernel is booted with nmi_watchdog
    command line parameter. This problem occurs because kexec crash shutdown
    code replaces the NMI callback handler. This handler saves the cpu register
    states and halts the cpu. If system is booted with nmi_watchdog parameter,
    then crashing cpu also runs this nmi handler and halts itself.

    o This patch fixes the problem by keeping a track of crashing cpu and not
    executing the new nmi handler on crashing cpu.

    o There is a dependence on smp_processor_id() function which might return
    insane value for cpu, if cpu field of thread_info is corrupted.

    Signed-off-by: Vivek Goyal
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Vivek Goyal
     
  • CPU does not save ss and esp on stack if execution was already in kernel mode
    at the time of NMI occurrence. This leads to saving of erractic values for ss
    and esp. This patch fixes the issue.

    Signed-off-by: Vivek Goyal
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Vivek Goyal
     
  • o Following patch exports kexec global variable "crash_notes" to user space
    through sysfs as kernel attribute in /sys/kernel.

    Signed-off-by: Maneesh Soni
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Vivek Goyal
     
  • Add kexec support for s390 architecture.

    From: Milton Miller

    - Fix passing of first argument to relocate_kernel assembly.
    - Fix Kconfig description.
    - Remove wrong comment and comments that describe obvious things.
    - Allow only KEXEC_TYPE_DEFAULT as image type -> dump not supported.

    Acked-by: Martin Schwidefsky
    Signed-off-by: Heiko Carstens
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Heiko Carstens
     
  • This patch implements the kexec support for ppc64 platforms.

    A couple of notes:

    1) We copy the pages in virtual mode, using the full base kernel
    and a statically allocated stack. At kexec_prepare time we
    scan the pages and if any overlap our (0, _end[]) range we
    return -ETXTBSY.

    On PowerPC 64 systems running in LPAR (logical partitioning)
    mode, only a small region of memory, referred to as the RMO,
    can be accessed in real mode. Since Linux runs with only one
    zone of memory in the memory allocator, and it can be orders of
    magnitude more memory than the RMO, looping until we allocate
    pages in the source region is not feasible. Copying in virtual
    means we don't have to write a hash table generation and call
    hypervisor to insert translations, instead we rely on the pinned
    kernel linear mapping. The kernel already has move to linked
    location built in, so there is no requirement to load it at 0.

    If we want to load something other than a kernel, then a stub
    can be written to copy a linear chunk in real mode.

    2) The start entry point gets passed parameters from the kernel.
    Slaves are started at a fixed address after copying code from
    the entry point.

    All CPUs get passed their firmware assigned physical id in r3
    (most calling conventions use this register for the first
    argument).

    This is used to distinguish each CPU from all other CPUs.
    Since firmware is not around, there is no other way to obtain
    this information other than to pass it somewhere.

    A single CPU, referred to here as the master and the one executing
    the kexec call, branches to start with the address of start in r4.
    While this can be calculated, we have to load it through a gpr to
    branch to this point so defining the register this is contained
    in is free. A stack of unspecified size is available at r1
    (also common calling convention).

    All remaining running CPUs are sent to start at absolute address
    0x60 after copying the first 0x100 bytes from start to address 0.
    This convention was chosen because it matches what the kernel
    has been doing itself. (only gpr3 is defined).

    Note: This is not quite the convention of the kexec bootblock v2
    in the kernel. A stub has been written to convert between them,
    and we may adjust the kernel in the future to allow this directly
    without any stub.

    3) Destination pages can be placed anywhere, even where they
    would not be accessible in real mode. This will allow us to
    place ram disks above the RMO if we choose.

    Signed-off-by: Milton Miller
    Signed-off-by: R Sharada
    Signed-off-by: Paul Mackerras
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    R Sharada