* [BK PATCH] PCI fixes for 2.6.0-test6 @ 2003-09-30 22:34 Greg KH 2003-09-30 22:35 ` [PATCH] " Greg KH 0 siblings, 1 reply; 10+ messages in thread From: Greg KH @ 2003-09-30 22:34 UTC (permalink / raw) To: torvalds; +Cc: linux-kernel Hi, Here are some PCI patches against 2.6.0-test6. They mainly clean up the pci power code by removing it entirely, as it is now done by the driver core. There are a few other minor janitorial fixes in here too. Please pull from: bk://kernel.bkbits.net/gregkh/linux/pci-2.6 thanks, greg k-h p.s. I'll send these as patches in response to this email to lkml for those who want to see them. drivers/pci/power.c | 159 --------------------------------- drivers/ide/pci/sc1200.c | 61 ++++++------ drivers/net/irda/vlsi_ir.c | 10 -- drivers/pci/Makefile | 1 drivers/pci/hotplug/cpqphp.h | 1 drivers/pci/hotplug/pci_hotplug.h | 1 drivers/pci/hotplug/pci_hotplug_core.c | 15 +-- drivers/pci/pool.c | 1 drivers/pci/quirks.c | 3 drivers/scsi/nsp32.c | 10 -- include/linux/pci.h | 1 11 files changed, 42 insertions(+), 221 deletions(-) ----- <lxiep:us.ibm.com>: o PCI Hotplug: export hotplug_slots subsys <rtjohnso:eecs.berkeley.edu>: o PCI: __init documetation Alexey Dobriyan: o PCI: Remove setting TASK_RUNNING after schedule_timeout in /drivers/pci/ Patrick Mochel: o Remove ->save_state() in sc1200.c o Remove ->save_state() from vlsi_ir.c o Remove ->save_state() in nsp32.c o [pci] Really delete drivers/pci/power.c o [pci] Remove ->save_state() from struct pci_driver o [pci] Remove drivers/pci/power.c ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH] PCI fixes for 2.6.0-test6 2003-09-30 22:34 [BK PATCH] PCI fixes for 2.6.0-test6 Greg KH @ 2003-09-30 22:35 ` Greg KH 2003-09-30 22:35 ` Greg KH 0 siblings, 1 reply; 10+ messages in thread From: Greg KH @ 2003-09-30 22:35 UTC (permalink / raw) To: linux-kernel ChangeSet 1.1305.5.1, 2003/09/26 09:11:22-07:00, mochel@osdl.org [pci] Remove drivers/pci/power.c The old-school method of power management, using the pm_send() interface, is superceded by the centralized driver model, which handles walking the tree and calling each device's suspend/resume methods. drivers/pci/Makefile | 1 - 1 files changed, 1 deletion(-) diff -Nru a/drivers/pci/Makefile b/drivers/pci/Makefile --- a/drivers/pci/Makefile Tue Sep 30 15:21:18 2003 +++ b/drivers/pci/Makefile Tue Sep 30 15:21:18 2003 @@ -4,7 +4,6 @@ obj-y += access.o bus.o probe.o remove.o pci.o pool.o quirks.o \ names.o pci-driver.o search.o pci-sysfs.o -obj-$(CONFIG_PM) += power.o obj-$(CONFIG_PROC_FS) += proc.o ifndef CONFIG_SPARC64 ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] PCI fixes for 2.6.0-test6 2003-09-30 22:35 ` [PATCH] " Greg KH @ 2003-09-30 22:35 ` Greg KH 2003-09-30 22:35 ` Greg KH 0 siblings, 1 reply; 10+ messages in thread From: Greg KH @ 2003-09-30 22:35 UTC (permalink / raw) To: linux-kernel ChangeSet 1.1305.5.2, 2003/09/26 09:18:44-07:00, mochel@osdl.org [pci] Remove ->save_state() from struct pci_driver. It is not called, and unused. include/linux/pci.h | 1 - 1 files changed, 1 deletion(-) diff -Nru a/include/linux/pci.h b/include/linux/pci.h --- a/include/linux/pci.h Tue Sep 30 15:21:11 2003 +++ b/include/linux/pci.h Tue Sep 30 15:21:11 2003 @@ -515,7 +515,6 @@ const struct pci_device_id *id_table; /* must be non-NULL for probe to be called */ int (*probe) (struct pci_dev *dev, const struct pci_device_id *id); /* New device inserted */ void (*remove) (struct pci_dev *dev); /* Device removed (NULL if not a hot-plug capable driver) */ - int (*save_state) (struct pci_dev *dev, u32 state); /* Save Device Context */ int (*suspend) (struct pci_dev *dev, u32 state); /* Device suspended */ int (*resume) (struct pci_dev *dev); /* Device woken up */ int (*enable_wake) (struct pci_dev *dev, u32 state, int enable); /* Enable wake event */ ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] PCI fixes for 2.6.0-test6 2003-09-30 22:35 ` Greg KH @ 2003-09-30 22:35 ` Greg KH 2003-09-30 22:35 ` Greg KH 0 siblings, 1 reply; 10+ messages in thread From: Greg KH @ 2003-09-30 22:35 UTC (permalink / raw) To: linux-kernel ChangeSet 1.1305.5.3, 2003/09/26 09:38:37-07:00, mochel@osdl.org [pci] Really delete drivers/pci/power.c drivers/pci/power.c | 159 ---------------------------------------------------- 1 files changed, 159 deletions(-) diff -Nru a/drivers/pci/power.c b/drivers/pci/power.c --- a/drivers/pci/power.c Tue Sep 30 15:21:04 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,159 +0,0 @@ -#include <linux/pci.h> -#include <linux/pm.h> -#include <linux/init.h> - -/* - * PCI Power management.. - * - * This needs to be done centralized, so that we power manage PCI - * devices in the right order: we should not shut down PCI bridges - * before we've shut down the devices behind them, and we should - * not wake up devices before we've woken up the bridge to the - * device.. Eh? - * - * We do not touch devices that don't have a driver that exports - * a suspend/resume function. That is just too dangerous. If the default - * PCI suspend/resume functions work for a device, the driver can - * easily implement them (ie just have a suspend function that calls - * the pci_set_power_state() function). - */ - -static int pci_pm_save_state_device(struct pci_dev *dev, u32 state) -{ - int error = 0; - if (dev) { - struct pci_driver *driver = dev->driver; - if (driver && driver->save_state) - error = driver->save_state(dev,state); - } - return error; -} - -static int pci_pm_suspend_device(struct pci_dev *dev, u32 state) -{ - int error = 0; - if (dev) { - struct pci_driver *driver = dev->driver; - if (driver && driver->suspend) - error = driver->suspend(dev,state); - } - return error; -} - -static int pci_pm_resume_device(struct pci_dev *dev) -{ - int error = 0; - if (dev) { - struct pci_driver *driver = dev->driver; - if (driver && driver->resume) - error = driver->resume(dev); - } - return error; -} - -static int pci_pm_save_state_bus(struct pci_bus *bus, u32 state) -{ - struct list_head *list; - int error = 0; - - list_for_each(list, &bus->children) { - error = pci_pm_save_state_bus(pci_bus_b(list),state); - if (error) return error; - } - list_for_each(list, &bus->devices) { - error = pci_pm_save_state_device(pci_dev_b(list),state); - if (error) return error; - } - return 0; -} - -static int pci_pm_suspend_bus(struct pci_bus *bus, u32 state) -{ - struct list_head *list; - - /* Walk the bus children list */ - list_for_each(list, &bus->children) - pci_pm_suspend_bus(pci_bus_b(list),state); - - /* Walk the device children list */ - list_for_each(list, &bus->devices) - pci_pm_suspend_device(pci_dev_b(list),state); - return 0; -} - -static int pci_pm_resume_bus(struct pci_bus *bus) -{ - struct list_head *list; - - /* Walk the device children list */ - list_for_each(list, &bus->devices) - pci_pm_resume_device(pci_dev_b(list)); - - /* And then walk the bus children */ - list_for_each(list, &bus->children) - pci_pm_resume_bus(pci_bus_b(list)); - return 0; -} - -static int pci_pm_save_state(u32 state) -{ - struct pci_bus *bus = NULL; - int error = 0; - - while ((bus = pci_find_next_bus(bus)) != NULL) { - error = pci_pm_save_state_bus(bus,state); - if (!error) - error = pci_pm_save_state_device(bus->self,state); - } - return error; -} - -static int pci_pm_suspend(u32 state) -{ - struct pci_bus *bus = NULL; - - while ((bus = pci_find_next_bus(bus)) != NULL) { - pci_pm_suspend_bus(bus,state); - pci_pm_suspend_device(bus->self,state); - } - return 0; -} - -static int pci_pm_resume(void) -{ - struct pci_bus *bus = NULL; - - while ((bus = pci_find_next_bus(bus)) != NULL) { - pci_pm_resume_device(bus->self); - pci_pm_resume_bus(bus); - } - return 0; -} - -static int -pci_pm_callback(struct pm_dev *pm_device, pm_request_t rqst, void *data) -{ - int error = 0; - - switch (rqst) { - case PM_SAVE_STATE: - error = pci_pm_save_state((unsigned long)data); - break; - case PM_SUSPEND: - error = pci_pm_suspend((unsigned long)data); - break; - case PM_RESUME: - error = pci_pm_resume(); - break; - default: break; - } - return error; -} - -static int __init pci_pm_init(void) -{ - pm_register(PM_PCI_DEV, 0, pci_pm_callback); - return 0; -} - -subsys_initcall(pci_pm_init); ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] PCI fixes for 2.6.0-test6 2003-09-30 22:35 ` Greg KH @ 2003-09-30 22:35 ` Greg KH 2003-09-30 22:35 ` Greg KH 0 siblings, 1 reply; 10+ messages in thread From: Greg KH @ 2003-09-30 22:35 UTC (permalink / raw) To: linux-kernel ChangeSet 1.1344, 2003/09/26 16:33:35-07:00, mochel@osdl.org [PATCH] Remove ->save_state() in nsp32.c Remove the uncalled and unneeded struct pci_driver::save_state() in drivers/scsi/nsp32.c drivers/scsi/nsp32.c | 10 ---------- 1 files changed, 10 deletions(-) diff -Nru a/drivers/scsi/nsp32.c b/drivers/scsi/nsp32.c --- a/drivers/scsi/nsp32.c Tue Sep 30 15:20:57 2003 +++ b/drivers/scsi/nsp32.c Tue Sep 30 15:20:57 2003 @@ -3435,15 +3435,6 @@ * Power Management */ #ifdef CONFIG_PM -/* Save Device Context */ -static int nsp32_save_state(struct pci_dev *pdev, u32 state) -{ - struct Scsi_Host *host = pci_get_drvdata(pdev); - - nsp32_msg(KERN_INFO, "pci-save_state: stub, pdev=0x%p, state=%ld, slot=%s, host=0x%p", pdev, state, pci_name(pdev), host); - - return 0; -} /* Device suspended */ static int nsp32_suspend(struct pci_dev *pdev, u32 state) @@ -3573,7 +3564,6 @@ .probe = nsp32_probe, .remove = __devexit_p(nsp32_remove), #ifdef CONFIG_PM - .save_state = nsp32_save_state, .suspend = nsp32_suspend, .resume = nsp32_resume, .enable_wake = nsp32_enable_wake, ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] PCI fixes for 2.6.0-test6 2003-09-30 22:35 ` Greg KH @ 2003-09-30 22:35 ` Greg KH 2003-09-30 22:35 ` Greg KH 0 siblings, 1 reply; 10+ messages in thread From: Greg KH @ 2003-09-30 22:35 UTC (permalink / raw) To: linux-kernel ChangeSet 1.1345, 2003/09/26 16:34:09-07:00, mochel@osdl.org [PATCH] Remove ->save_state() from vlsi_ir.c Remove the unneeded and uncalled struct pci_driver::save_state(). drivers/net/irda/vlsi_ir.c | 10 ---------- 1 files changed, 10 deletions(-) diff -Nru a/drivers/net/irda/vlsi_ir.c b/drivers/net/irda/vlsi_ir.c --- a/drivers/net/irda/vlsi_ir.c Tue Sep 30 15:20:50 2003 +++ b/drivers/net/irda/vlsi_ir.c Tue Sep 30 15:20:50 2003 @@ -1859,15 +1859,6 @@ * otherwise we might get cheated by pci-pm. */ -static int vlsi_irda_save_state(struct pci_dev *pdev, u32 state) -{ - if (state < 1 || state > 3 ) { - ERROR("%s - %s: invalid pm state request: %u\n", - __FUNCTION__, PCIDEV_NAME(pdev), state); - return -1; - } - return 0; -} static int vlsi_irda_suspend(struct pci_dev *pdev, u32 state) { @@ -1970,7 +1961,6 @@ .probe = vlsi_irda_probe, .remove = __devexit_p(vlsi_irda_remove), #ifdef CONFIG_PM - .save_state = vlsi_irda_save_state, .suspend = vlsi_irda_suspend, .resume = vlsi_irda_resume, #endif ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] PCI fixes for 2.6.0-test6 2003-09-30 22:35 ` Greg KH @ 2003-09-30 22:35 ` Greg KH 2003-09-30 22:35 ` Greg KH 0 siblings, 1 reply; 10+ messages in thread From: Greg KH @ 2003-09-30 22:35 UTC (permalink / raw) To: linux-kernel ChangeSet 1.1346, 2003/09/26 16:34:55-07:00, mochel@osdl.org [PATCH] Remove ->save_state() in sc1200.c This removes the uncalled and unneeded method struct pci_driver::save_state(). The contents of ->save_state() were folded into ->suspend(), though the semantics don't seem exactly right - the hwifs should not be iterated over there; the driver core should take care of that. But, that code will never get executed as is, since neither function should ever be called with (state == 0). drivers/ide/pci/sc1200.c | 61 +++++++++++++++++++++++------------------------ 1 files changed, 30 insertions(+), 31 deletions(-) diff -Nru a/drivers/ide/pci/sc1200.c b/drivers/ide/pci/sc1200.c --- a/drivers/ide/pci/sc1200.c Tue Sep 30 15:20:43 2003 +++ b/drivers/ide/pci/sc1200.c Tue Sep 30 15:20:43 2003 @@ -396,44 +396,44 @@ __u32 regs[4]; } sc1200_saved_state_t; -static int sc1200_save_state (struct pci_dev *dev, u32 state) + +static int sc1200_suspend (struct pci_dev *dev, u32 state) { ide_hwif_t *hwif = NULL; -printk("SC1200: save_state(%u)\n", state); - if (state != 0) - return 0; // we only save state when going from full power to less - // - // Loop over all interfaces that are part of this PCI device: - // - while ((hwif = lookup_pci_dev(hwif, dev)) != NULL) { - sc1200_saved_state_t *ss; - unsigned int basereg, r; - // - // allocate a permanent save area, if not already allocated - // - ss = (sc1200_saved_state_t *)hwif->config_data; - if (ss == NULL) { - ss = kmalloc(sizeof(sc1200_saved_state_t), GFP_KERNEL); - if (ss == NULL) - return -ENOMEM; - (sc1200_saved_state_t *)hwif->config_data = ss; - } - ss = (sc1200_saved_state_t *)hwif->config_data; + printk("SC1200: suspend(%u)\n", state); + + if (state == 0) { + // we only save state when going from full power to less + // - // Save timing registers: this may be unnecessary if BIOS also does it + // Loop over all interfaces that are part of this PCI device: // - basereg = hwif->channel ? 0x50 : 0x40; - for (r = 0; r < 4; ++r) { - pci_read_config_dword (hwif->pci_dev, basereg + (r<<2), &ss->regs[r]); + while ((hwif = lookup_pci_dev(hwif, dev)) != NULL) { + sc1200_saved_state_t *ss; + unsigned int basereg, r; + // + // allocate a permanent save area, if not already allocated + // + ss = (sc1200_saved_state_t *)hwif->config_data; + if (ss == NULL) { + ss = kmalloc(sizeof(sc1200_saved_state_t), GFP_KERNEL); + if (ss == NULL) + return -ENOMEM; + (sc1200_saved_state_t *)hwif->config_data = ss; + } + ss = (sc1200_saved_state_t *)hwif->config_data; + // + // Save timing registers: this may be unnecessary if + // BIOS also does it + // + basereg = hwif->channel ? 0x50 : 0x40; + for (r = 0; r < 4; ++r) { + pci_read_config_dword (hwif->pci_dev, basereg + (r<<2), &ss->regs[r]); + } } } - return 0; -} -static int sc1200_suspend (struct pci_dev *dev, u32 state) -{ - printk("SC1200: suspend(%u)\n", state); /* You don't need to iterate over disks -- sysfs should have done that for you already */ pci_disable_device(dev); @@ -572,7 +572,6 @@ .name = "SC1200 IDE", .id_table = sc1200_pci_tbl, .probe = sc1200_init_one, - .save_state = sc1200_save_state, .suspend = sc1200_suspend, .resume = sc1200_resume, }; ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] PCI fixes for 2.6.0-test6 2003-09-30 22:35 ` Greg KH @ 2003-09-30 22:35 ` Greg KH 2003-09-30 22:35 ` Greg KH 0 siblings, 1 reply; 10+ messages in thread From: Greg KH @ 2003-09-30 22:35 UTC (permalink / raw) To: linux-kernel ChangeSet 1.1347, 2003/09/29 12:23:22-07:00, lxiep@us.ibm.com [PATCH] PCI Hotplug: export hotplug_slots subsys This is needed for the PPC64 PCI hotplug driver. drivers/pci/hotplug/pci_hotplug.h | 1 + drivers/pci/hotplug/pci_hotplug_core.c | 15 ++++++++------- 2 files changed, 9 insertions(+), 7 deletions(-) diff -Nru a/drivers/pci/hotplug/pci_hotplug.h b/drivers/pci/hotplug/pci_hotplug.h --- a/drivers/pci/hotplug/pci_hotplug.h Tue Sep 30 15:20:35 2003 +++ b/drivers/pci/hotplug/pci_hotplug.h Tue Sep 30 15:20:35 2003 @@ -145,6 +145,7 @@ extern int pci_hp_deregister (struct hotplug_slot *slot); extern int pci_hp_change_slot_info (struct hotplug_slot *slot, struct hotplug_slot_info *info); +extern struct subsystem pci_hotplug_slots_subsys; #endif diff -Nru a/drivers/pci/hotplug/pci_hotplug_core.c b/drivers/pci/hotplug/pci_hotplug_core.c --- a/drivers/pci/hotplug/pci_hotplug_core.c Tue Sep 30 15:20:35 2003 +++ b/drivers/pci/hotplug/pci_hotplug_core.c Tue Sep 30 15:20:35 2003 @@ -69,7 +69,7 @@ static LIST_HEAD(pci_hotplug_slot_list); -static struct subsystem hotplug_slots_subsys; +struct subsystem pci_hotplug_slots_subsys; static ssize_t hotplug_slot_attr_show(struct kobject *kobj, struct attribute *attr, char *buf) @@ -104,7 +104,7 @@ .release = &hotplug_slot_release, }; -static decl_subsys(hotplug_slots, &hotplug_slot_ktype, NULL); +decl_subsys(pci_hotplug_slots, &hotplug_slot_ktype, NULL); /* these strings match up with the values in pci_bus_speed */ @@ -534,7 +534,7 @@ return -EINVAL; strlcpy(slot->kobj.name, slot->name, KOBJ_NAME_LEN); - kobj_set_kset_s(slot, hotplug_slots_subsys); + kobj_set_kset_s(slot, pci_hotplug_slots_subsys); /* this can fail if we have already registered a slot with the same name */ if (kobject_register(&slot->kobj)) { @@ -629,8 +629,8 @@ { int result; - kset_set_kset_s(&hotplug_slots_subsys, pci_bus_type.subsys); - result = subsystem_register(&hotplug_slots_subsys); + kset_set_kset_s(&pci_hotplug_slots_subsys, pci_bus_type.subsys); + result = subsystem_register(&pci_hotplug_slots_subsys); if (result) { err("Register subsys with error %d\n", result); goto exit; @@ -645,7 +645,7 @@ goto exit; err_subsys: - subsystem_unregister(&hotplug_slots_subsys); + subsystem_unregister(&pci_hotplug_slots_subsys); exit: return result; } @@ -653,7 +653,7 @@ static void __exit pci_hotplug_exit (void) { cpci_hotplug_exit(); - subsystem_unregister(&hotplug_slots_subsys); + subsystem_unregister(&pci_hotplug_slots_subsys); } module_init(pci_hotplug_init); @@ -665,6 +665,7 @@ MODULE_PARM(debug, "i"); MODULE_PARM_DESC(debug, "Debugging mode enabled or not"); +EXPORT_SYMBOL_GPL(pci_hotplug_slots_subsys); EXPORT_SYMBOL_GPL(pci_hp_register); EXPORT_SYMBOL_GPL(pci_hp_deregister); EXPORT_SYMBOL_GPL(pci_hp_change_slot_info); ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] PCI fixes for 2.6.0-test6 2003-09-30 22:35 ` Greg KH @ 2003-09-30 22:35 ` Greg KH 2003-09-30 22:35 ` Greg KH 0 siblings, 1 reply; 10+ messages in thread From: Greg KH @ 2003-09-30 22:35 UTC (permalink / raw) To: linux-kernel ChangeSet 1.1349, 2003/09/29 12:48:49-07:00, adobriyan@mail.ru [PATCH] PCI: Remove setting TASK_RUNNING after schedule_timeout in /drivers/pci/ drivers/pci/hotplug/cpqphp.h | 1 - drivers/pci/pool.c | 1 - 2 files changed, 2 deletions(-) diff -Nru a/drivers/pci/hotplug/cpqphp.h b/drivers/pci/hotplug/cpqphp.h --- a/drivers/pci/hotplug/cpqphp.h Tue Sep 30 15:20:28 2003 +++ b/drivers/pci/hotplug/cpqphp.h Tue Sep 30 15:20:28 2003 @@ -766,7 +766,6 @@ set_current_state(TASK_INTERRUPTIBLE); /* Sleep for up to 1 second to wait for the LED to change. */ schedule_timeout(1*HZ); - set_current_state(TASK_RUNNING); remove_wait_queue(&ctrl->queue, &wait); if (signal_pending(current)) retval = -EINTR; diff -Nru a/drivers/pci/pool.c b/drivers/pci/pool.c --- a/drivers/pci/pool.c Tue Sep 30 15:20:28 2003 +++ b/drivers/pci/pool.c Tue Sep 30 15:20:28 2003 @@ -296,7 +296,6 @@ schedule_timeout (POOL_TIMEOUT_JIFFIES); - current->state = TASK_RUNNING; remove_wait_queue (&pool->waitq, &wait); goto restart; } ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] PCI fixes for 2.6.0-test6 2003-09-30 22:35 ` Greg KH @ 2003-09-30 22:35 ` Greg KH 0 siblings, 0 replies; 10+ messages in thread From: Greg KH @ 2003-09-30 22:35 UTC (permalink / raw) To: linux-kernel ChangeSet 1.1351, 2003/09/30 15:19:11-07:00, rtjohnso@eecs.berkeley.edu [PATCH] PCI: __init documetation It might not have prevented me from reporting the potential bug, but I would've known you'd thought about it, it might help future developers, and it's unlikely to become dangerously wrong. drivers/pci/quirks.c | 3 +++ 1 files changed, 3 insertions(+) diff -Nru a/drivers/pci/quirks.c b/drivers/pci/quirks.c --- a/drivers/pci/quirks.c Tue Sep 30 15:20:20 2003 +++ b/drivers/pci/quirks.c Tue Sep 30 15:20:20 2003 @@ -750,6 +750,9 @@ /* * The main table of quirks. + * + * Note: any hooks for hotpluggable devices in this table must _NOT_ + * be declared __init. */ static struct pci_fixup pci_fixups[] __devinitdata = { ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2003-09-30 23:01 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2003-09-30 22:34 [BK PATCH] PCI fixes for 2.6.0-test6 Greg KH 2003-09-30 22:35 ` [PATCH] " Greg KH 2003-09-30 22:35 ` Greg KH 2003-09-30 22:35 ` Greg KH 2003-09-30 22:35 ` Greg KH 2003-09-30 22:35 ` Greg KH 2003-09-30 22:35 ` Greg KH 2003-09-30 22:35 ` Greg KH 2003-09-30 22:35 ` Greg KH 2003-09-30 22:35 ` Greg KH
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox