From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: Paul Mackerras <paulus@samba.org>
Cc: Greg KH <greg@kroah.com>,
linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org,
linas@austin.ibm.com
Subject: Re: [PATCH] Add pci_walk_bus function to PCI core (nonrecursive)
Date: Thu, 18 Aug 2005 14:58:28 +1000 [thread overview]
Message-ID: <1124341108.8849.75.camel@gaston> (raw)
In-Reply-To: <17156.3965.483826.692623@cargo.ozlabs.ibm.com>
On Thu, 2005-08-18 at 14:33 +1000, Paul Mackerras wrote:
> The PCI error recovery infrastructure needs to be able to contact all
> the drivers affected by a PCI error event, which may mean traversing
> all the devices under a given PCI-PCI bridge. This patch adds a
> function to the PCI core that traverses all the PCI devices on a PCI
> bus and under any PCI-PCI bridges on that bus (and so on), calling a
> given function for each device. This provides a way for the error
> recovery code to iterate through all devices that are affected by an
> error event.
.../...
Note that it's racy vs. removal of devices, but I suspect a good bunch
of the PCI code is. The whole idea that list*_safe routines pay you
anything in that regard need to be shot. Afaik, they are only safe about
the caller removing the current element.
I wonder if it's finally time to implement proper race free list
iterators in the kernel. Not that difficult... A small struct iterator
with a list head and the current elem pointer, and the "interated" list
containing the list itself, a list of iterators and a lock. Iterators
can then be "fixed" up on element removal with a fine grained lock on
list structure access.
Ben.
next prev parent reply other threads:[~2005-08-18 5:01 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-08-18 4:33 [PATCH] Add pci_walk_bus function to PCI core (nonrecursive) Paul Mackerras
2005-08-18 4:58 ` Benjamin Herrenschmidt [this message]
2005-08-18 5:13 ` Greg KH
2005-08-18 8:02 ` Benjamin Herrenschmidt
2005-08-19 16:30 ` Linas Vepstas
2005-08-20 0:10 ` Benjamin Herrenschmidt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1124341108.8849.75.camel@gaston \
--to=benh@kernel.crashing.org \
--cc=greg@kroah.com \
--cc=linas@austin.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=paulus@samba.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.