03 May, 2007

6 commits

  • Unless we finally completely remove it, people will always add new users.

    Signed-off-by: Adrian Bunk
    Signed-off-by: Greg Kroah-Hartman

    Adrian Bunk
     
  • Now that we keep a list of msi descriptors, we don't need first_msi_irq
    in the pci dev.

    If we somehow have zero MSIs configured list_entry() will give us weird
    oopes or nice memory corruption bugs. So be paranoid. Add BUG_ONs and also
    a check in pci_msi_check_device() to make sure nvec > 0.

    Signed-off-by: Michael Ellerman
    Signed-off-by: Greg Kroah-Hartman

    Michael Ellerman
     
  • The msi descriptors are linked together with what looks a lot like
    a linked list, but isn't a struct list_head list. Make it one.

    The only complication is that previously we walked a list of irqs, and
    got the descriptor for each with get_irq_msi(). Now we have a list of
    descriptors and need to get the irq out of it, so it needs to be in the
    actual struct msi_desc. We use 0 to indicate no irq is setup.

    Signed-off-by: Michael Ellerman
    Signed-off-by: Greg Kroah-Hartman

    Michael Ellerman
     
  • There are currently several places in the kernel where we kmalloc()
    a struct pci_dev and start initialising it. It'd be preferable to
    have an allocator so we can ensure the pci_dev is correctly initialised
    in one place.

    Signed-off-by: Michael Ellerman
    Signed-off-by: Greg Kroah-Hartman

    Michael Ellerman
     
  • Balance declarations of pci_request_regions() and pci_release_regions() with
    empty inline definitions for the CONFIG_PCI=n case -- otherwise my patch to
    drivers/net/3c59x.c in the -mm tree doesn't compile. :-)

    Signed-off-by: Sergei Shtylyov
    Signed-off-by: Greg Kroah-Hartman

    Sergei Shtylyov
     
  • Adds a new API which can be used to issue various types
    of PCI-E reset, including PCI-E warm reset and PCI-E hot reset.
    This is needed for an ipr PCI-E adapter which does not properly
    implement BIST. Running BIST on this adapter results in PCI-E
    errors. The only reliable reset mechanism that exists on this
    hardware is PCI Fundamental reset (warm reset). Since driving
    this type of reset is architecture unique, this provides the
    necessary hooks for architectures to add this support.

    Signed-off-by: Brian King
    Acked-by: Linas Vepstas
    Signed-off-by: Greg Kroah-Hartman

    Brian King
     

29 Apr, 2007

1 commit


28 Apr, 2007

1 commit

  • Make multithreaded probing work per subsystem instead of per driver.

    It doesn't make much sense to probe the same device for multiple drivers in
    parallel (after all, only one driver can bind to the device). Instead, create
    a probing thread for each device that probes the drivers one after another.
    Also make the decision to use multi-threaded probe per bus instead of per
    device and adapt the pci code.

    Signed-off-by: Cornelia Huck
    Cc: Benjamin Herrenschmidt
    Signed-off-by: Andrew Morton
    Signed-off-by: Greg Kroah-Hartman

    Cornelia Huck
     

13 Mar, 2007

1 commit

  • Because we do not reserve space for the pci-x and pci-e state in struct
    pci dev we need to dynamically allocate it. However because we need
    to support restore being called multiple times after a single save
    it is never safe to free the buffers we have allocated to hold the
    state.

    So this patch modifies the save routines to first check to see
    if we have already allocated a state buffer before allocating
    a new one. Then the restore routines are modified to not free
    the state after restoring it. Simple and it fixes some subtle
    error path handling bugs, that are hard to test for.

    Signed-off-by: Eric W. Biederman
    Signed-off-by: Greg Kroah-Hartman
    Acked-by: Auke Kok
    Signed-off-by: Linus Torvalds

    Eric W. Biederman
     

05 Mar, 2007

1 commit

  • In some cases when we are not using msi we need a way to ensure that the
    hardware does not have an msi capability enabled. Currently the code has been
    calling disable_msi_mode to try and achieve that. However disable_msi_mode
    has several other side effects and is only available when msi support is
    compiled in so it isn't really appropriate.

    Instead this patch implements pci_msi_off which disables all msi and msix
    capabilities unconditionally with no additional side effects.

    pci_disable_device was redundantly clearing the bus master enable flag and
    clearing the msi enable bit. A device that is not allowed to perform bus
    mastering operations cannot generate intx or msi interrupt messages as those
    are essentially a special case of dma, and require bus mastering. So the call
    in pci_disable_device to disable msi capabilities was redundant.

    quirk_pcie_pxh also called disable_msi_mode and is updated to use pci_msi_off.

    Signed-off-by: Eric W. Biederman
    Cc: Michael Ellerman
    Cc: Paul Mackerras
    Cc: Benjamin Herrenschmidt
    Cc: Greg KH
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric W. Biederman
     

17 Feb, 2007

1 commit

  • CARDBUS_MEM_SIZE was increased to 64MB on 2.6.20-rc2, but larger size might
    result in allocation failure for the reserving itself on some platforms
    (for example typical 32bit MIPS). Make it (and CARDBUS_IO_SIZE too)
    customizable by "pci=" option for such platforms.

    Signed-off-by: Atsushi Nemoto
    Cc: Daniel Ritz
    Cc: Ralf Baechle
    Cc: Ivan Kokshaysky
    Cc: Dominik Brodowski
    Signed-off-by: Andrew Morton
    Signed-off-by: Greg Kroah-Hartman

    Atsushi Nemoto
     

12 Feb, 2007

1 commit

  • * Split the implementation-agnostic stuff in separate files.
    * Make sure that targets using non-default request_irq() pull
    kernel/irq/devres.o
    * Introduce new symbols (HAS_IOPORT and HAS_IOMEM) defaulting to positive;
    allow architectures to turn them off (we needed these symbols anyway for
    dependencies of quite a few drivers).
    * protect the ioport-related parts of lib/devres.o with CONFIG_HAS_IOPORT.

    Signed-off-by: Al Viro
    Signed-off-by: Linus Torvalds

    Al Viro
     

10 Feb, 2007

1 commit

  • Implement device resource management, in short, devres. A device
    driver can allocate arbirary size of devres data which is associated
    with a release function. On driver detach, release function is
    invoked on the devres data, then, devres data is freed.

    devreses are typed by associated release functions. Some devreses are
    better represented by single instance of the type while others need
    multiple instances sharing the same release function. Both usages are
    supported.

    devreses can be grouped using devres group such that a device driver
    can easily release acquired resources halfway through initialization
    or selectively release resources (e.g. resources for port 1 out of 4
    ports).

    This patch adds devres core including documentation and the following
    managed interfaces.

    * alloc/free : devm_kzalloc(), devm_kzfree()
    * IO region : devm_request_region(), devm_release_region()
    * IRQ : devm_request_irq(), devm_free_irq()
    * DMA : dmam_alloc_coherent(), dmam_free_coherent(),
    dmam_declare_coherent_memory(), dmam_pool_create(),
    dmam_pool_destroy()
    * PCI : pcim_enable_device(), pcim_pin_device(), pci_is_managed()
    * iomap : devm_ioport_map(), devm_ioport_unmap(), devm_ioremap(),
    devm_ioremap_nocache(), devm_iounmap(), pcim_iomap_table(),
    pcim_iomap(), pcim_iounmap()

    Signed-off-by: Tejun Heo
    Signed-off-by: Jeff Garzik

    Tejun Heo
     

08 Feb, 2007

9 commits

  • * master.kernel.org:/pub/scm/linux/kernel/git/gregkh/pci-2.6: (41 commits)
    Revert "PCI: remove duplicate device id from ata_piix"
    msi: Make MSI useable more architectures
    msi: Kill the msi_desc array.
    msi: Remove attach_msi_entry.
    msi: Fix msi_remove_pci_irq_vectors.
    msi: Remove msi_lock.
    msi: Kill msi_lookup_irq
    MSI: Combine pci_(save|restore)_msi/msix_state
    MSI: Remove pci_scan_msi_device()
    MSI: Replace pci_msi_quirk with calls to pci_no_msi()
    PCI: remove duplicate device id from ipr
    PCI: remove duplicate device id from ata_piix
    PCI: power management: remove noise on non-manageable hw
    PCI: cleanup MSI code
    PCI: make isa_bridge Alpha-only
    PCI: remove quirk_sis_96x_compatible()
    PCI: Speed up the Intel SMBus unhiding quirk
    PCI Quirk: 1k I/O space IOBL_ADR fix on P64H2
    shpchp: delete trailing whitespace
    shpchp: remove DBG_XXX_ROUTINE
    ...

    Linus Torvalds
     
  • The function msi_lookup_irq was horrible. As a side effect of running
    it changed dev->irq, and then the callers would need to change it
    back. In addition it does a global scan through all of the irqs,
    which seems to be the sole justification of the msi_lock.

    To remove the neede for msi_lookup_irq I added first_msi_irq to struct
    pci_dev. Then depending on the context I replaced msi_lookup_irq with
    dev->first_msi_irq, dev->msi_enabled, or dev->msix_enabled.

    msi_enabled and msix_enabled were already present in pci_dev for other
    reasons.

    Signed-off-by: Eric W. Biederman
    Acked-by: Ingo Molnar
    Signed-off-by: Greg Kroah-Hartman

    Eric W. Biederman
     
  • pci_scan_msi_device() doesn't do anything anymore, so remove it.

    Signed-off-by: Michael Ellerman
    Signed-off-by: Greg Kroah-Hartman

    Michael Ellerman
     
  • Since isa_bridge is neither assigned any value !NULL nor used on !Alpha,
    there's no reason for providing it.

    Signed-off-by: Adrian Bunk
    Signed-off-by: Greg Kroah-Hartman

    Adrian Bunk
     
  • On Fri, Nov 17, 2006 at 09:32:36AM -0500, Alan Cox wrote:
    >
    > Soon we should deprecate pci_find_device as well

    So let's mark it as __deprecated now, which also has the side effect
    that noone can later whine that removing it might break some shiny
    external modules.

    Oh, and if anything starts complaining "But this adds some warnings to
    my kernel build!", he should either first fix the 200 kB (sic) of
    warnings I'm getting in 2.6.19-rc5-mm2 starting at MODPOST or go to hell.

    Signed-off-by: Adrian Bunk
    Acked-by: Alan Cox
    Signed-off-by: Greg Kroah-Hartman

    Adrian Bunk
     
  • This patch removes the no longer used pci_find_device_reverse().

    Signed-off-by: Adrian Bunk
    Acked-by: Alan Cox
    Signed-off-by: Greg Kroah-Hartman

    Adrian Bunk
     
  • Add very simple routine to indicate the pci channel error state.

    Signed-off-by: Linas Vepstas
    Signed-off-by: Greg Kroah-Hartman

    Linas Vepstas
     
  • This patch adds the following changes into generic PCI code especially
    for PCI legacy I/O port free drivers.

    - Added new pci_request_selected_regions() and
    pci_release_selected_regions() for PCI legacy I/O port free
    drivers in order to request/release only the selected regions.

    - Added helper routine pci_select_bars() which makes proper mask
    of BARs from the specified resource type. This would be very
    helpful for users of pci_enable_device_bars().

    Signed-off-by: Kenji Kaneshige
    Signed-off-by: Hidetoshi Seto
    Cc: Inaky Perez-Gonzalez
    Signed-off-by: Greg Kroah-Hartman

    Hidetoshi Seto
     
  • This adds the module name to all PCI drivers, if they are built into the
    kernel or not. It will show up in /sys/modules/MODULE_NAME/drivers/

    It also fixes up the IDE core, which was calling __pci_register_driver()
    directly.

    Cc: Kay Sievers
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     

21 Dec, 2006

4 commits

  • I don't see any good reason for exporting device IDs to userspace.

    Signed-off-by: Adrian Bunk
    Signed-off-by: Andrew Morton
    Signed-off-by: Greg Kroah-Hartman

    Adrian Bunk
     
  • This patch is designed to fix:
    - Disk eating corruptor on KT7 after resume from RAM
    - VIA IRQ handling
    - VIA fixups for bus lockups after resume from RAM

    The core of this is to add a table of resume fixups run at resume time.
    We need to do this for a variety of boards and features, but particularly
    we need to do this to get various critical VIA fixups done on resume.

    The second part of the problem is to handle VIA IRQ number rules which
    are a bit odd and need special handling for PIC interrupts. Various
    patches broke various boxes and while this one may not be perfect
    (hopefully it is) it ensures the workaround is applied to the right
    devices only.

    From: Jean Delvare

    Now that PCI quirks are replayed on software resume, we can safely
    re-enable the Asus SMBus unhiding quirk even when software suspend support
    is enabled.

    [akpm@osdl.org: fix const warning]
    Signed-off-by: Alan Cox
    Cc: Jean Delvare
    Signed-off-by: Andrew Morton
    Signed-off-by: Greg Kroah-Hartman

    Alan Cox
     
  • There are already several places in the kernel that want to search a PCI
    device for a given Hypertransport capability. Although this is possible
    using pci_find_capability() etc., it makes sense to encapsulate that
    logic in a helper - pci_find_ht_capability().

    To cater for searching exhaustively for a capability, we also provide
    pci_find_next_ht_capability().

    We also need to cater for the fact that the HT capability fields may be
    either 3 or 5 bits wide. pci_find_ht_capability() deals with this for you,
    but callers using the #defines directly must handle that themselves.

    Signed-off-by: Michael Ellerman
    Signed-off-by: Greg Kroah-Hartman

    Michael Ellerman
     
  • This works like pci_dev_present but instead of returning boolean returns
    the matching pci_device_id entry. This makes it much more useful. Code
    bloat is basically nil as the old boolean function is rewritten in terms of
    the new one.

    This will be used by the updated VIA PCI quirks for one

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

    Alan Cox
     

02 Dec, 2006

1 commit

  • Changes the pci_{enable,disable}_device() functions to work in a
    nested basis, so that eg, three calls to enable_device() require three
    calls to disable_device().

    The reason for this is to simplify PCI drivers for
    multi-interface/capability devices. These are devices that cram more
    than one interface in a single function. A relevant example of that is
    the Wireless [USB] Host Controller Interface (similar to EHCI) [see
    http://www.intel.com/technology/comms/wusb/whci.htm].

    In these kind of devices, multiple interfaces are accessed through a
    single bar and IRQ line. For that, the drivers map only the smallest
    area of the bar to access their register banks and use shared IRQ
    handlers.

    However, because the order at which those drivers load cannot be known
    ahead of time, the sequence in which the calls to pci_enable_device()
    and pci_disable_device() cannot be predicted. Thus:

    1. driverA starts pci_enable_device()
    2. driverB starts pci_enable_device()
    3. driverA shutdown pci_disable_device()
    4. driverB shutdown pci_disable_device()

    between steps 3 and 4, driver B would loose access to it's device,
    even if it didn't intend to.

    By using this modification, the device won't be disabled until all the
    callers to enable() have called disable().

    This is implemented by replacing 'struct pci_dev->is_enabled' from a
    bitfield to an atomic use count. Each caller to enable increments it,
    each caller to disable decrements it. When the count increments from 0
    to 1, __pci_enable_device() is called to actually enable the
    device. When it drops to zero, pci_disable_device() actually does the
    disabling.

    We keep the backend __pci_enable_device() for pci_default_resume() to
    use and also change the sysfs method implementation, so that userspace
    enabling/disabling the device doesn't disable it one time too much.

    Signed-off-by: Inaky Perez-Gonzalez
    Signed-off-by: Greg Kroah-Hartman

    Inaky Perez-Gonzalez
     

22 Oct, 2006

1 commit


19 Oct, 2006

2 commits

  • Problem:
    New Dell PowerEdge servers have 2 embedded ethernet ports, which are
    labeled NIC1 and NIC2 on the chassis, in the BIOS setup screens, and
    in the printed documentation. Assuming no other add-in ethernet ports
    in the system, Linux 2.4 kernels name these eth0 and eth1
    respectively. Many people have come to expect this naming. Linux 2.6
    kernels name these eth1 and eth0 respectively (backwards from
    expectations). I also have reports that various Sun and HP servers
    have similar behavior.

    Root cause:
    Linux 2.4 kernels walk the pci_devices list, which happens to be
    sorted in breadth-first order (or pcbios_find_device order on i386,
    which most often is breadth-first also). 2.6 kernels have both the
    pci_devices list and the pci_bus_type.klist_devices list, the latter
    is what is walked at driver load time to match the pci_id tables; this
    klist happens to be in depth-first order.

    On systems where, for physical routing reasons, NIC1 appears on a
    lower bus number than NIC2, but NIC2's bridge is discovered first in
    the depth-first ordering, NIC2 will be discovered before NIC1. If the
    list were sorted breadth-first, NIC1 would be discovered before NIC2.

    A PowerEdge 1955 system has the following topology which easily
    exhibits the difference between depth-first and breadth-first device
    lists.

    -[0000:00]-+-00.0 Intel Corporation 5000P Chipset Memory Controller Hub
    +-02.0-[0000:03-08]--+-00.0-[0000:04-07]--+-00.0-[0000:05-06]----00.0-[0000:06]----00.0 Broadcom Corporation NetXtreme II BCM5708S Gigabit Ethernet (labeled NIC2, 2.4 kernel name eth1, 2.6 kernel name eth0)
    +-1c.0-[0000:01-02]----00.0-[0000:02]----00.0 Broadcom Corporation NetXtreme II BCM5708S Gigabit Ethernet (labeled NIC1, 2.4 kernel name eth0, 2.6 kernel name eth1)

    Other factors, such as device driver load order and the presence of
    PCI slots at various points in the bus hierarchy further complicate
    this problem; I'm not trying to solve those here, just restore the
    device order, and thus basic behavior, that 2.4 kernels had.

    Solution:

    The solution can come in multiple steps.

    Suggested fix #1: kernel
    Patch below optionally sorts the two device lists into breadth-first
    ordering to maintain compatibility with 2.4 kernels. It adds two new
    command line options:
    pci=bfsort
    pci=nobfsort
    to force the sort order, or not, as you wish. It also adds DMI checks
    for the specific Dell systems which exhibit "backwards" ordering, to
    make them "right".

    Suggested fix #2: udev rules from userland
    Many people also have the expectation that embedded NICs are always
    discovered before add-in NICs (which this patch does not try to do).
    Using the PCI IRQ Routing Table provided by system BIOS, it's easy to
    determine which PCI devices are embedded, or if add-in, which PCI slot
    they're in. I'm working on a tool that would allow udev to name
    ethernet devices in ascending embedded, slot 1 .. slot N order,
    subsort by PCI bus/dev/fn breadth-first. It'll be possible to use it
    independent of udev as well for those distributions that don't use
    udev in their installers.

    Suggested fix #3: system board routing rules
    One can constrain the system board layout to put NIC1 ahead of NIC2
    regardless of breadth-first or depth-first discovery order. This adds
    a significant level of complexity to board routing, and may not be
    possible in all instances (witness the above systems from several
    major manufacturers). I don't want to encourage this particular train
    of thought too far, at the expense of not doing #1 or #2 above.

    Feedback appreciated. Patch tested on a Dell PowerEdge 1955 blade
    with 2.6.18.

    You'll also note I took some liberty and temporarily break the klist
    abstraction to simplify and speed up the sort algorithm. I think
    that's both safe and appropriate in this instance.

    Signed-off-by: Matt Domsch
    Signed-off-by: Greg Kroah-Hartman

    Matt Domsch
     
  • In order to finish converting to pci_get_* interfaces we need to add a couple
    of bits of missing functionaility

    pci_get_bus_and_slot() provides the equivalent to pci_find_slot()
    (pci_get_slot is already taken as a name for something similar but not the
    same)

    pci_get_device_reverse() is the equivalent of pci_find_device_reverse but
    refcounting

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

    Alan Cox
     

04 Oct, 2006

5 commits

  • This moves the declarations for the architecture helpers into
    include/linux/htirq.h from the generic include/linux/pci.h. Hopefully this
    will make this distinction clearer.

    htirq.h is included where it is needed.

    The dependency on the msi code is fixed and removed.

    The Makefile is tidied up.

    Signed-off-by: Eric W. Biederman
    Cc: Ingo Molnar
    Cc: Tony Luck
    Cc: Andi Kleen
    Cc: Thomas Gleixner
    Cc: Greg KH
    Cc: Benjamin Herrenschmidt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric W. Biederman
     
  • It turns out msi_ops was simply not enough to abstract the architecture
    specific details of msi. So I have moved the resposibility of constructing
    the struct irq_chip to the architectures, and have two architecture specific
    functions arch_setup_msi_irq, and arch_teardown_msi_irq.

    For simple architectures those functions can do all of the work. For
    architectures with platform dependencies they can call into the appropriate
    platform code.

    With this msi.c is finally free of assuming you have an apic, and this
    actually takes less code.

    The helpers for the architecture specific code are declared in the linux/msi.h
    to keep them separate from the msi functions used by drivers in linux/pci.h

    Signed-off-by: Eric W. Biederman
    Cc: Ingo Molnar
    Cc: Tony Luck
    Cc: Andi Kleen
    Cc: Thomas Gleixner
    Cc: Greg KH
    Cc: Benjamin Herrenschmidt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric W. Biederman
     
  • This patch implements two functions ht_create_irq and ht_destroy_irq for
    use by drivers. Several other functions are implemented as helpers for
    arch specific irq_chip handlers.

    The driver for the card I tested this on isn't yet ready to be merged.
    However this code is and hypertransport irqs are in use in a few other
    places in the kernel. Not that any of this will get merged before 2.6.19

    Because the ipath-ht400 is slightly out of spec this code will need to be
    generalized to work there.

    I think all of the powerpc uses are for a plain interrupt controller in a
    chipset so support for native hypertransport devices is a little less
    interesting.

    However I think this is a half way decent model on how to separate arch
    specific and generic helper code, and I think this is a functional model of
    how to get the architecture dependencies out of the msi code.

    [akpm@osdl.org: Kconfig fix]
    Signed-off-by: Eric W. Biederman
    Cc: Greg KH
    Cc: Andi Kleen
    Cc: Benjamin Herrenschmidt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric W. Biederman
     
  • The current msi_ops are short sighted in a number of ways, this patch attempts
    to fix the glaring deficiences.

    - Report in msi_ops if a 64bit address is needed in the msi message, so we
    can fail 32bit only msi structures.

    - Send and receive a full struct msi_msg in both setup and target. This is
    a little cleaner and allows for architectures that need to modify the data
    to retarget the msi interrupt to a different cpu.

    - In target pass in the full cpu mask instead of just the first cpu in case
    we can make use of the full cpu mask.

    - Operate in terms of irqs and not vectors, currently there is still a 1-1
    relationship but on architectures other than ia64 I expect this will change.

    Signed-off-by: Eric W. Biederman
    Cc: Ingo Molnar
    Cc: Thomas Gleixner
    Cc: Benjamin Herrenschmidt
    Cc: Rajesh Shah
    Cc: Andi Kleen
    Cc: "Protasevich, Natalie"
    Cc: "Luck, Tony"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric W. Biederman
     
  • In support of this I also add a struct msi_msg that captures the the two
    address and one data field ina typical msi message, and I remember the pos and
    if the address is 64bit in struct msi_desc.

    This makes the code a little more readable and easier to maintain, and paves
    the way to further simplfications.

    Signed-off-by: Eric W. Biederman
    Cc: Ingo Molnar
    Cc: Thomas Gleixner
    Cc: Benjamin Herrenschmidt
    Cc: Rajesh Shah
    Cc: Andi Kleen
    Cc: "Protasevich, Natalie"
    Cc: "Luck, Tony"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric W. Biederman
     

01 Oct, 2006

1 commit

  • This fixes two things

    Firstly someone mistakenly used "errata" for the singular. This causes
    Dave Woodhouse to emit diagnostics whenever the string is read, and so
    should be fixed.

    Secondly the AMD AGP tunnel has an erratum which causes hangs if you try
    and do direct PCI to AGP transfers in some cases. We have a flag for
    PCI/PCI failures but we need a different flag for this really as in this
    case we don't want to stop PCI/PCI transfers using things like IOAT and the
    new RAID offload work.

    I'll post some updates to make proper use of the PCIAGP flag in the
    media/video drivers to Mauro.

    Signed-off-by: Alan Cox
    Cc: David Woodhouse
    Signed-off-by: Greg Kroah-Hartman
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alan Cox
     

27 Sep, 2006

3 commits

  • This patch adds pci_stop_bus_device() which stops a PCI device (detach
    the driver, remove from the global list and so on) and any children.
    This is needed for ACPI based PCI-to-PCI bridge hot-remove, and it will
    be also needed for ACPI based PCI root bridge hot-remove.

    Signed-off-by: Kenji Kaneshige
    Signed-off-by: MUNEDA Takahiro
    Signed-off-by: Satoru Takeuchi
    Signed-off-by: Kristen Carlson Accardi
    Signed-off-by: Greg Kroah-Hartman

    Satoru Takeuchi
     
  • 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
     

26 Sep, 2006

1 commit

  • We're getting a lot of crashes in the sysfs/kobject/device/bus/class code and
    they're very hard to diagnose.

    I'm suspecting that in some cases this is because drivers aren't checking
    return values and aren't handling errors correctly. So the code blithely
    blunders on and crashes later in very obscure ways.

    There's just no reason to ignore errors which can and do occur. So the patch
    sprinkles __must_check all over these APIs.

    Causes 1,513 new warnings. Heh.

    Signed-off-by: Andrew Morton
    Signed-off-by: Greg Kroah-Hartman

    Andrew Morton