From: linas@austin.ibm.com
To: greg@kroah.com
Cc: linuxppc64-dev@lists.linuxppc.org, linux-kernel@vger.kernel.org,
pcihpd-discuss@lists.sourceforge.net
Subject: [PATCH] 2.6 PCI Hotplug: receive PPC64 EEH events
Date: Wed, 7 Jul 2004 15:59:07 -0500 [thread overview]
Message-ID: <20040707155907.G21634@forte.austin.ibm.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 495 bytes --]
Greg,
This patch implements the catching of EEH events by the hotplug subsystem.
Its preliminary in that it doesn't do much with these events; right now,
my goal is to stub-in the required interfaces so that development can occur
on both the arch/ppc64 tree and the drivers/pci/hotplug tree without
excessive co-dependency of patches. I'm hoping to have these routines
do a whole lot more once some firmware issues get resolved.
Signed-off-by: Linas Vepstas <linas@linas.org>
--linas
[-- Attachment #2: eeh-notifier-rpaphp.patch --]
[-- Type: text/plain, Size: 4038 bytes --]
===== drivers/pci/hotplug/rpaphp.h 1.9 vs edited =====
--- 1.9/drivers/pci/hotplug/rpaphp.h Fri Jul 2 11:14:11 2004
+++ edited/drivers/pci/hotplug/rpaphp.h Wed Jul 7 15:44:35 2004
@@ -124,7 +124,8 @@
extern int register_pci_slot(struct slot *slot);
extern int rpaphp_unconfig_pci_adapter(struct slot *slot);
extern int rpaphp_get_pci_adapter_status(struct slot *slot, int is_init, u8 * value);
-extern struct hotplug_slot *rpaphp_find_hotplug_slot(struct pci_dev *dev);
+extern void init_eeh_handler (void);
+extern void exit_eeh_handler (void);
/* rpaphp_core.c */
extern int rpaphp_add_slot(struct device_node *dn);
===== drivers/pci/hotplug/rpaphp_core.c 1.14 vs edited =====
--- 1.14/drivers/pci/hotplug/rpaphp_core.c Tue Jun 8 17:53:59 2004
+++ edited/drivers/pci/hotplug/rpaphp_core.c Wed Jul 7 13:50:20 2004
@@ -54,8 +54,6 @@
MODULE_DESCRIPTION(DRIVER_DESC);
MODULE_LICENSE("GPL");
-void eeh_register_disable_func(int (*)(struct pci_dev *));
-
module_param(debug, bool, 0644);
static int enable_slot(struct hotplug_slot *slot);
@@ -65,7 +63,6 @@
static int get_attention_status(struct hotplug_slot *slot, u8 * value);
static int get_adapter_status(struct hotplug_slot *slot, u8 * value);
static int get_max_bus_speed(struct hotplug_slot *hotplug_slot, enum pci_bus_speed *value);
-static int rpaphp_disable_slot(struct pci_dev *dev);
struct hotplug_slot_ops rpaphp_hotplug_slot_ops = {
.owner = THIS_MODULE,
@@ -407,8 +404,8 @@
{
info(DRIVER_DESC " version: " DRIVER_VERSION "\n");
- /* let EEH know they can use hotplug */
- eeh_register_disable_func(&rpaphp_disable_slot);
+ /* Get set to handle EEH events */
+ init_eeh_handler();
/* read all the PRA info from the system */
return init_rpa();
@@ -416,8 +413,8 @@
static void __exit rpaphp_exit(void)
{
- /* let EEH know we are going away */
- eeh_register_disable_func(NULL);
+ /* Stop handling EEH events */
+ exit_eeh_handler();
cleanup_slots();
}
@@ -448,11 +445,6 @@
exit:
dbg("%s - Exit: rc[%d]\n", __FUNCTION__, retval);
return retval;
-}
-
-static int rpaphp_disable_slot(struct pci_dev *dev)
-{
- return disable_slot(rpaphp_find_hotplug_slot(dev));
}
static int disable_slot(struct hotplug_slot *hotplug_slot)
===== drivers/pci/hotplug/rpaphp_pci.c 1.9 vs edited =====
--- 1.9/drivers/pci/hotplug/rpaphp_pci.c Thu Jul 1 18:31:49 2004
+++ edited/drivers/pci/hotplug/rpaphp_pci.c Wed Jul 7 13:56:25 2004
@@ -22,7 +22,9 @@
* Send feedback to <lxie@us.ibm.com>
*
*/
+#include <linux/notifier.h>
#include <linux/pci.h>
+#include <asm/eeh.h>
#include <asm/pci-bridge.h>
#include "../pci.h" /* for pci_add_new_bus */
@@ -227,7 +229,7 @@
}
sprintf(child_bus->name, "PCI Bus #%02x", child_bus->number);
/* do pci_scan_child_bus */
- pci_scan_child_bus(child_bus);
+ // pci_scan_child_bus(child_bus);
list_for_each_entry(child_dev, &child_bus->devices, bus_list) {
eeh_add_device_late(child_dev);
@@ -503,7 +505,7 @@
return retval;
}
-struct hotplug_slot *rpaphp_find_hotplug_slot(struct pci_dev *dev)
+static struct slot *rpaphp_find_slot(struct pci_dev *dev)
{
struct list_head *tmp, *n;
struct slot *slot;
@@ -528,11 +530,34 @@
for (ln = bus->devices.next; ln != &bus->devices; ln = ln->next) {
struct pci_dev *pdev = pci_dev_b(ln);
if (pdev == dev)
- return slot->hotplug_slot;
+ return slot;
}
}
return NULL;
}
-EXPORT_SYMBOL_GPL(rpaphp_find_hotplug_slot);
+int handle_eeh_events (struct notifier_block *self,
+ unsigned long reason, void *ev)
+{
+ struct eeh_event *event = ev;
+
+ /* Just turn it off for now */
+ rpaphp_unconfig_pci_adapter (rpaphp_find_slot(event->dev));
+ return 0;
+}
+
+static struct notifier_block eeh_block;
+
+void __init init_eeh_handler (void)
+{
+ eeh_block.notifier_call = handle_eeh_events;
+ eeh_register_notifier (&eeh_block);
+}
+
+void __exit exit_eeh_handler (void)
+{
+ eeh_block.notifier_call = handle_eeh_events;
+ eeh_register_notifier (&eeh_block);
+}
+
next reply other threads:[~2004-07-07 21:03 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-07-07 20:59 linas [this message]
2004-07-07 21:16 ` [Pcihpd-discuss] [PATCH] 2.6 PCI Hotplug: receive PPC64 EEH events Greg KH
2004-07-07 21:47 ` linas
2004-07-08 5:26 ` Greg KH
2004-07-08 15:04 ` linas
2004-07-08 15:12 ` Greg KH
2004-07-08 0:49 ` Linda Xie
2004-07-08 0:06 ` linas
2004-07-08 6:09 ` Greg KH
2004-07-08 15:24 ` linas
2004-07-08 15:28 ` Greg KH
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=20040707155907.G21634@forte.austin.ibm.com \
--to=linas@austin.ibm.com \
--cc=greg@kroah.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc64-dev@lists.linuxppc.org \
--cc=pcihpd-discuss@lists.sourceforge.net \
/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.