[PATCH 1/3] pciehp: hotplug: deal with pre-inserted ExpressCards

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: <kristen.c.accardi@...>
Cc: Linux Kernel <linux-kernel@...>, Andrew Morton <akpm@...>, Theodore Ts'o <tytso@...>, <greg@...>, <pcihpd-discuss@...>
Date: Wednesday, October 17, 2007 - 11:32 pm

(repost to conform with akpm's subject line conventions)

One of three patches to fix PCIe Hotplug so that it works with ExpressCard slots
on Dell notebooks (and others?) in conjunction with modparam of pciehp_force=1.

Fix pciehp_probe() to deal with ExpressCard cards
that were inserted prior to the driver being loaded.

Signed-off-by: Mark Lord <mlord@pobox.com>
---
--- a/drivers/pci/hotplug/pciehp_ctrl.c	2007-10-17 22:30:19.000000000 -0400
+++ b/drivers/pci/hotplug/pciehp_ctrl.c	2007-10-17 22:29:59.000000000 -0400
@@ -37,7 +37,6 @@
 #include "pciehp.h"
 
 static void interrupt_event_handler(struct work_struct *work);
-static int pciehp_enable_slot(struct slot *p_slot);
 static int pciehp_disable_slot(struct slot *p_slot);
 
 static int queue_interrupt_event(struct slot *p_slot, u32 event_type)
--- git12/drivers/pci/hotplug/pciehp.h	2007-10-17 22:30:19.000000000 -0400
+++ linux/drivers/pci/hotplug/pciehp.h	2007-10-17 22:29:59.000000000 -0400
@@ -161,6 +161,7 @@
 extern int pciehp_unconfigure_device(struct slot *p_slot);
 extern void pciehp_queue_pushbutton_work(struct work_struct *work);
 int pcie_init(struct controller *ctrl, struct pcie_device *dev);
+int pciehp_enable_slot(struct slot *p_slot);
 
 static inline struct slot *pciehp_find_slot(struct controller *ctrl, u8 device)
 {
--- git12/drivers/pci/hotplug/pciehp_core.c	2007-10-17 22:30:19.000000000 -0400
+++ linux/drivers/pci/hotplug/pciehp_core.c	2007-10-17 22:36:06.000000000 -0400
@@ -471,6 +471,11 @@
 	t_slot = pciehp_find_slot(ctrl, ctrl->slot_device_offset);
 
 	t_slot->hpc_ops->get_adapter_status(t_slot, &value); /* Check if slot is occupied */
+	if (value) {
+		rc = pciehp_enable_slot(t_slot);
+		if (rc)	/* -ENODEV: shouldn't happen, but deal with it */
+			value = 0;
+	}
 	if ((POWER_CTRL(ctrl->ctrlcap)) && !value) {
 		rc = t_slot->hpc_ops->power_off_slot(t_slot); /* Power off slot if not occupied*/
 		if (rc)
-
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[PATCH 0/3] Fix two PEIe hotplug issues, Mark Lord, (Wed Oct 17, 10:57 pm)
[PATCH] Fix PCIe double initialization bug, Mark Lord, (Sat Nov 17, 8:27 pm)
Re: [PATCH] Fix PCIe double initialization bug, Rafael J. Wysocki, (Sun Nov 18, 8:23 am)
Re: [PATCH] Fix PCIe double initialization bug, Mark Lord, (Sun Nov 18, 10:20 am)
Re: [PATCH] Fix PCIe double initialization bug, Mark Lord, (Sun Nov 18, 10:37 am)
[PATCH 1/3] pciehp: hotplug: deal with pre-inserted ExpressC..., Mark Lord, (Wed Oct 17, 11:32 pm)
Re: [PATCH 0/3] Fix two PEIe hotplug issues, Mark Lord, (Wed Oct 17, 11:09 pm)
Re: [PATCH 0/3] Fix two PEIe hotplug issues, Kristen Carlson Accardi, (Thu Oct 18, 12:13 pm)
Re: [PATCH 0/3] Fix two PEIe hotplug issues, Mark Lord, (Thu Oct 18, 1:06 pm)
Re: [PATCH 0/3] Fix two PEIe hotplug issues, Kristen Carlson Accardi, (Thu Oct 18, 1:06 pm)
Re: [PATCH 0/3] Fix two PEIe hotplug issues, Theodore Tso, (Thu Oct 18, 1:49 pm)
Re: [PATCH 0/3] Fix two PEIe hotplug issues, Mark Lord, (Thu Oct 18, 5:26 pm)
Re: [PATCH 0/3] Fix two PEIe hotplug issues, Kristen Carlson Accardi, (Thu Oct 18, 1:56 pm)
Re: [PATCH 0/3] Fix two PEIe hotplug issues, Mark Lord, (Thu Oct 18, 5:11 pm)
Re: [PATCH 0/3] Fix two PEIe hotplug issues, Mark Lord, (Wed Oct 17, 11:05 pm)
[PATCH 2/3] pciehp_split_pcie_init, Mark Lord, (Wed Oct 17, 11:04 pm)
[PATCH 1/3] pciehp_handle_preinserted_card, Mark Lord, (Wed Oct 17, 11:03 pm)
[PATCH 3/3] pciehp_resume_reinit_hardware, Mark Lord, (Wed Oct 17, 11:02 pm)
Re: [PATCH 2/3] pciehp_split_pcie_init, Mark Lord, (Wed Oct 17, 11:00 pm)
Re: [PATCH 1/3] pciehp_handle_preinserted_card, Mark Lord, (Wed Oct 17, 10:59 pm)