27 Sep, 2006

18 commits

  • Signed-off-by: Adrian Bunk
    Acked-by: MUNEDA Takahiro
    Signed-off-by: Andrew Morton
    Signed-off-by: Greg Kroah-Hartman

    Adrian Bunk
     
  • There are numerous drivers that can use multithreaded probing but having
    some kind of global flag as the way to control this makes migration to
    threaded probing hard and since it enables it everywhere and is almost
    as likely to cause serious pain as holding a clog dance in a minefield.

    If we have a pci_driver multithread_probe flag to inherit you can turn
    it on for one driver at a time.

    From playing so far however I think we need a different model at the
    device layer which serializes until the called probe function says "ok
    you can start another one now". That would need some kind of flag and
    semaphore plus a helper function.

    Anyway in the absence of that this is a starting point to usefully play
    with this stuff

    Signed-off-by: Alan Cox
    Signed-off-by: Greg Kroah-Hartman

    Alan Cox
     
  • Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     
  • Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     
  • Cc: Kristen Carlson Accardi
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     
  • Patch 4 implements error handlers for pcie_portdrv.

    Signed-off-by: Zhang Yanmin
    Signed-off-by: Greg Kroah-Hartman

    Zhang, Yanmin
     
  • Patch 3 implements the core part of PCI-Express AER and aerdrv
    port service driver.

    When a root port service device is probed, the aerdrv will call
    request_irq to register irq handler for AER error interrupt.

    When a device sends an PCI-Express error message to the root port,
    the root port will trigger an interrupt, by either MSI or IO-APIC,
    then kernel would run the irq handler. The handler collects root
    error status register and schedules a work. The work will call
    the core part to process the error based on its type
    (Correctable/non-fatal/fatal).

    As for Correctable errors, the patch chooses to just clear the correctable
    error status register of the device.

    As for the non-fatal error, the patch follows generic PCI error handler
    rules to call the error callback functions of the endpoint's driver. If
    the device is a bridge, the patch chooses to broadcast the error to
    downstream devices.

    As for the fatal error, the patch resets the pci-express link and
    follows generic PCI error handler rules to call the error callback
    functions of the endpoint's driver. If the device is a bridge, the patch
    chooses to broadcast the error to downstream devices.

    Signed-off-by: Zhang Yanmin
    Signed-off-by: Greg Kroah-Hartman

    Zhang, Yanmin
     
  • Patch 2 exports pcie_port_bus_type.

    Signed-off-by: Zhang Yanmin
    Signed-off-by: Greg Kroah-Hartman

    Zhang, Yanmin
     
  • PCI-Express AER (Advanced Error Reporting) provides more robust error reporting.
    The series of patches enable kernel support to AER.

    The initial patches were written by Tom Long Nguyen. I ported them to the kernel
    2.6.18-rc3. Many thanks to Rajesh Shah and Narayanan Chandramouli for their great
    review comments and testing help.

    Patch 1 consists of the pciaer-howto.txt document.

    Signed-off-by: Zhang Yanmin
    Signed-off-by: Greg Kroah-Hartman

    Zhang, Yanmin
     
  • Have pcie_port_bus_register() notice and return errors.
    Mark it __must_check so that its caller(s) must check its return value.

    Signed-off-by: Randy Dunlap
    Signed-off-by: Greg Kroah-Hartman

    Randy Dunlap
     
  • Introduce msi_ht_cap_enabled() to check the MSI capability in the
    Hypertransport configuration space.
    It is used in a generic quirk quirk_msi_ht_cap() to check whether
    MSI is enabled on hypertransport chipset, and a nVidia specific quirk
    quirk_nvidia_ck804_msi_ht_cap() where two 2 HT MSI mappings have to
    be checked.
    Both quirks set the PCI_BUS_FLAGS_NO_MSI bus flag when MSI is disabled.

    Signed-off-by: Brice Goglin
    Signed-off-by: Greg Kroah-Hartman

    Brice Goglin
     
  • 0x08 is the HT capability, while PCI_CAP_ID_HT_IRQCONF would be
    the subtype 0x80 that mpic_scan_ht_pic() uses.
    Rename PCI_CAP_ID_HT_IRQCONF into PCI_CAP_ID_HT.

    And by the way, use it in the ipath driver instead of defining its
    own HT_CAPABILITY_ID.

    Signed-off-by: Brice Goglin
    Signed-off-by: Greg Kroah-Hartman

    Brice Goglin
     
  • Export the PCI_BUS_FLAGS_NO_MSI flag of a PCI bus in the sysfs files
    of its parent device and make it writable. Could be used to:
    * disable MSI on a device which has not been blacklisted yet
    * allow MSI when some setpci hacks enable MSI support (for instance
    on the ServerWorks HT2000 chipset where the MSI HT cap is disabled
    by default).
    Architecture where some bus have no parent chipset cannot use this
    strategy to change MSI support.

    If the chipset does not have a subordinate bus, its 'bus_msi' file
    is empty.

    Also document and warn about the possible danger of changing the flag.

    Signed-off-by: Brice Goglin
    Signed-off-by: Greg Kroah-Hartman

    Brice Goglin
     
  • pci_enable_msi() and pci_enable_msix() use the same code to detect
    whether MSI might be enabled on this device. Factorize this code in
    pci_msi_supported(). And improve the documentation about the fact
    that only the root chipset must support MSI, but it is hard to
    find the root bus so we check all parent busses MSI flags.

    Signed-off-by: Brice Goglin
    Signed-off-by: Greg Kroah-Hartman

    Brice Goglin
     
  • Move MSI quirks in CONFIG_PCI_MSI, document why the serverworks quirk
    does not simply set PCI_BUS_FLAGS_NO_MSI, and create a generic quirk
    for other chipsets where setting PCI_BUS_FLAGS_NO_MSI is fine.

    Signed-off-by: Brice Goglin
    Signed-off-by: Greg Kroah-Hartman

    Brice Goglin
     
  • If you have two resources which aree exactly the same size,
    insert_resource() currently inserts the new one below the existing one.
    This is wrong because there's no way to insert a resource of the same size
    above an existing one.

    I took this opportunity to rewrite the initial loop to be a for-loop
    instead of a goto-loop and fix the documentation.

    Signed-off-by: Matthew Wilcox
    Cc: Ivan Kokshaysky
    Cc: Dominik Brodowski
    Signed-off-by: Andrew Morton
    Signed-off-by: Greg Kroah-Hartman

    Matthew Wilcox
     
  • * 'for-linus' of git://one.firstfloor.org/home/andi/git/linux-2.6: (225 commits)
    [PATCH] Don't set calgary iommu as default y
    [PATCH] i386/x86-64: New Intel feature flags
    [PATCH] x86: Add a cumulative thermal throttle event counter.
    [PATCH] i386: Make the jiffies compares use the 64bit safe macros.
    [PATCH] x86: Refactor thermal throttle processing
    [PATCH] Add 64bit jiffies compares (for use with get_jiffies_64)
    [PATCH] Fix unwinder warning in traps.c
    [PATCH] x86: Allow disabling early pci scans with pci=noearly or disallowing conf1
    [PATCH] x86: Move direct PCI scanning functions out of line
    [PATCH] i386/x86-64: Make all early PCI scans dependent on CONFIG_PCI
    [PATCH] Don't leak NT bit into next task
    [PATCH] i386/x86-64: Work around gcc bug with noreturn functions in unwinder
    [PATCH] Fix some broken white space in ia32_signal.c
    [PATCH] Initialize argument registers for 32bit signal handlers.
    [PATCH] Remove all traces of signal number conversion
    [PATCH] Don't synchronize time reading on single core AMD systems
    [PATCH] Remove outdated comment in x86-64 mmconfig code
    [PATCH] Use string instructions for Core2 copy/clear
    [PATCH] x86: - restore i8259A eoi status on resume
    [PATCH] i386: Split multi-line printk in oops output.
    ...

    Linus Torvalds
     
  • * master.kernel.org:/pub/scm/linux/kernel/git/gregkh/driver-2.6: (47 commits)
    Driver core: Don't call put methods while holding a spinlock
    Driver core: Remove unneeded routines from driver core
    Driver core: Fix potential deadlock in driver core
    PCI: enable driver multi-threaded probe
    Driver Core: add ability for drivers to do a threaded probe
    sysfs: add proper sysfs_init() prototype
    drivers/base: check errors
    drivers/base: Platform notify needs to occur before drivers attach to the device
    v4l-dev2: handle __must_check
    add CONFIG_ENABLE_MUST_CHECK
    add __must_check to device management code
    Driver core: fixed add_bind_files() definition
    Driver core: fix comments in drivers/base/power/resume.c
    sysfs_remove_bin_file: no return value, dump_stack on error
    kobject: must_check fixes
    Driver core: add ability for devices to create and remove bin files
    Class: add support for class interfaces for devices
    Driver core: create devices/virtual/ tree
    Driver core: add device_rename function
    Driver core: add ability for classes to handle devices properly
    ...

    Linus Torvalds
     

26 Sep, 2006

22 commits

  • Convert cmm's usage of kernel_thread to kthread_run. Also create the
    cmmthread at module load time, so it is possible to check if creation of
    the thread fails.

    In addition the cmmthread now gets terminated when the module gets unloaded
    instead of leaving a stale kernel thread. Also check the return values of
    other registration functions at module load and handle their return values
    appropriately.

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

    Heiko Carstens
     
  • Include the host architecture's ptrace-abi.h instead of ptrace.h.

    There was some cpp mangling of names around the ptrace.h include to avoid
    symbol clashes between UML and the host architecture. Most of these can go
    away. The exception is struct pt_regs, which is convenient to have in
    userspace, but must be renamed in order that UML can define its own.

    ptrace-x86_64.h needed to have some now-obsolete cpp cruft and a declaration
    removed.

    Signed-off-by: Jeff Dike
    Cc: David Woodhouse
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     
  • The use of SEGMENT_RPL_MASK in the i386 ptrace.h introduced by
    x86-allow-a-kernel-to-not-be-in-ring-0.patch broke the UML build, as UML
    includes the underlying architecture's ptrace.h, but has no easy access to the
    x86 segment definitions.

    Rather than kludging around this, as in the past, this patch splits the
    userspace-usable parts, which are the bits that UML needs, of ptrace.h into
    ptrace-abi.h, which is included back into ptrace.h. Thus, there is no net
    effect on i386.

    As a side-effect, this creates a ptrace header which is close to being usable
    in /usr/include.

    x86_64 is also treated in this way for consistency. There was some trailing
    whitespace there, which is cleaned up.

    Signed-off-by: Jeff Dike
    Cc: David Woodhouse
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     
  • Ensure current->signal->tty doesn't get freed during log_exec().

    Signed-off-by: Alan Cox
    Acked-by: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alan Cox
     
  • The KSTK_* macros used an inordinate amount of stack. In order to overcome
    an impedance mismatch between their interface, which just returns a single
    register value, and the interface of get_thread_regs, which took a full
    pt_regs, the implementation created an on-stack pt_regs, filled it in, and
    returned one field. do_task_stat calls KSTK_* twice, resulting in two
    local pt_regs, blowing out the stack.

    This patch changes the interface (and name) of get_thread_regs to just
    return a single register from a jmp_buf.

    The include of archsetjmp.h" in registers.h to get the definition of
    jmp_buf exposed a bogus include of in start_up.c.
    shouldn't be used anywhere any more since UML uses the klibc
    setjmp/longjmp.

    Signed-off-by: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     
  • Clean set_ether_mac usage. Maybe could also be removed, but surely it can't
    be a global function taking a void* argument.

    Signed-off-by: Paolo 'Blaisorblade' Giarrusso
    Acked-by: Jeff Dike
    Cc: Jeff Garzik
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Paolo 'Blaisorblade' Giarrusso
     
  • timer_irq_inited was useless, so it is removed.

    Signed-off-by: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     
  • set_interval returns an error instead of panicing if setitimer fails. Some of
    its callers now check the return.

    enable_timer is largely tt-mode-specific, so it is marked as such, and the
    only skas-mode caller is made to call set-interval instead.

    user_time_init was a no-value-added wrapper around set_interval, so it is
    gone.

    Since set_interval is now called from kernel code, callers no longer pass
    ITIMER_* to it. Instead, they pass a flag which is converted into ITIMER_REAL
    or ITIMER_VIRTUAL.

    Signed-off-by: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     
  • Have most signals go through an arch-provided handler which recovers the
    sigcontext and then calls a generic handler. This replaces the
    ARCH_GET_SIGCONTEXT macro, which was somewhat fragile. On x86_64, recovering
    %rdx (which holds the sigcontext pointer) must be the first thing that
    happens. sig_handler duly invokes that first, but there is no guarantee that
    I can see that instructions won't be reordered such that %rdx is used before
    that. Having the arch provide the handler seems much more robust.

    Some signals in some parts of UML require their own handlers - these places
    don't call set_handler any more. They call sigaction or signal themselves.

    Signed-off-by: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     
  • - Various cleanups in the sigio code.

    - Removed explicit zero-initializations of a few structures.

    - Improved some error messages.

    - An API change - there was an asymmetry between reactivate_fd calling
    maybe_sigio_broken, which goes through all the machinery of figuring out if
    a file descriptor supports SIGIO and applying the workaround to it if not,
    and deactivate_fd, which just turns off the descriptor.

    This is changed so that only activate_fd calls maybe_sigio_broken, when
    the descriptor is first seen. reactivate_fd now calls add_sigio_fd, which
    is symmetric with ignore_sigio_fd.

    This removes a recursion which makes a critical section look more critical
    than it really was, obsoleting a big comment to that effect. This requires
    keeping track of all descriptors which are getting the SIGIO treatment, not
    just the ones being polled at any given moment, so that reactivate_fd,
    through add_sigio_fd, doesn't try to tell the SIGIO thread about descriptors
    it doesn't care about.

    Signed-off-by: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     
  • UML can get a SIGBUS anywhere if the tmpfs mount being used for its memory
    runs out of space. This patch adds a printk before the panic to provide a
    clue as to what likely went wrong.

    Signed-off-by: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     
  • There were some bugs in handling failures to exec helper programs. errno was
    passed back from the child with the wrong sign. It was also ignored. In the
    case where it mattered, the errno from the (successful) read in the parent was
    used instead.

    Signed-off-by: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     
  • arch/um/kernel/tlb.c had some pretty serious whitespace problems. I also
    fixed some returns.

    Signed-off-by: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     
  • Stack randomization needs to be conditional on the personality allowing it.

    Signed-off-by: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     
  • There were a bunch of missed ARRAY_SIZE opportunities.

    Also, some formatting fixes in the affected areas of code.

    Signed-off-by: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     
  • This patch adds an implementation of setjmp and longjmp to UML, allowing
    access to the inside of a jmpbuf without needing the access macros formerly
    provided by libc.

    The implementation is stolen from klibc. I copy the relevant files into
    arch/um. I have another patch which avoids the copying, but requires klibc be
    in the tree.

    setjmp and longjmp users required some tweaking. Includes of were
    removed and includes of the UML longjmp.h were added where necessary. There
    are also replacements of siglongjmp with UML_LONGJMP which I somehow missed
    earlier.

    Signed-off-by: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     
  • Add the pm_trace attribute in /sys/power which has to be explicitly set to
    one to really enable the "PM tracing" code compiled in when CONFIG_PM_TRACE
    is set (which modifies the machine's CMOS clock in unpredictable ways).

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

    Rafael J. Wysocki
     
  • Detect the situations in which the time after a resume from disk would be
    earlier than the time before the suspend and prevent them from happening on
    i386.

    Signed-off-by: Rafael J. Wysocki
    Acked-by: John Stultz
    Acked-by: Pavel Machek
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Rafael J. Wysocki
     
  • Hack uart_suspend_port() and uart_resume_port() so that serial console
    ports are not suspended if CONFIG_DISABLE_CONSOLE_SUSPEND is set.

    This makes it possible to debug the suspend and resume routines of all
    device drivers as well as the lowest-level swsusp code with the help of the
    serial console.

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

    Rafael J. Wysocki
     
  • Change suspend_console() so that it waits for all consoles to flush the
    remaining messages and make it possible to switch the console suspending off
    with the help of a Kconfig option.

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

    Rafael J. Wysocki
     
  • Make swsusp use memory bitmaps to store its internal information during the
    resume phase of the suspend-resume cycle.

    If the pfns of saveable pages are saved during the suspend phase instead of
    the kernel virtual addresses of these pages, we can use them during the resume
    phase directly to set the corresponding bits in a memory bitmap. Then, this
    bitmap is used to mark the page frames corresponding to the pages that were
    saveable before the suspend (aka "unsafe" page frames).

    Next, we allocate as many page frames as needed to store the entire suspend
    image and make sure that there will be some extra free "safe" page frames for
    the list of PBEs constructed later. Subsequently, the image is loaded and, if
    possible, the data loaded from it are written into their "original" page
    frames (ie. the ones they had occupied before the suspend).

    The image data that cannot be written into their "original" page frames are
    loaded into "safe" page frames and their "original" kernel virtual addresses,
    as well as the addresses of the "safe" pages containing their copies, are
    stored in a list of PBEs. Finally, the list of PBEs is used to copy the
    remaining image data into their "original" page frames (this is done
    atomically, by the architecture-dependent parts of swsusp).

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

    Rafael J. Wysocki
     
  • Introduce the memory bitmap data structure and make swsusp use in the suspend
    phase.

    The current swsusp's internal data structure is not very efficient from the
    memory usage point of view, so it seems reasonable to replace it with a data
    structure that will require less memory, such as a pair of bitmaps.

    The idea is to use bitmaps that may be allocated as sets of individual pages,
    so that we can avoid making allocations of order greater than 0. For this
    reason the memory bitmap structure consists of several linked lists of objects
    that contain pointers to memory pages with the actual bitmap data. Still, for
    a typical system all of these lists fit in a single page, so it's reasonable
    to introduce an additional mechanism allowing us to allocate all of them
    efficiently without sacrificing the generality of the design. This is done
    with the help of the chain_allocator structure and associated functions.

    We need to use two memory bitmaps during the suspend phase of the
    suspend-resume cycle. One of them is necessary for marking the saveable
    pages, and the second is used to mark the pages in which to store the copies
    of them (aka image pages).

    First, the bitmaps are created and we allocate as many image pages as needed
    (the corresponding bits in the second bitmap are set as soon as the pages are
    allocated). Second, the bits corresponding to the saveable pages are set in
    the first bitmap and the saveable pages are copied to the image pages.
    Finally, the first bitmap is used to save the kernel virtual addresses of the
    saveable pages and the second one is used to save the contents of the image
    pages.

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

    Rafael J. Wysocki