From patchwork Fri Mar 27 07:31:13 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Taku Izumi X-Patchwork-Id: 14687 Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by demeter.kernel.org (8.14.2/8.14.2) with ESMTP id n2R7VOqd008765 for ; Fri, 27 Mar 2009 07:31:24 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752526AbZC0HbY (ORCPT ); Fri, 27 Mar 2009 03:31:24 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1752994AbZC0HbY (ORCPT ); Fri, 27 Mar 2009 03:31:24 -0400 Received: from fgwmail5.fujitsu.co.jp ([192.51.44.35]:49849 "EHLO fgwmail5.fujitsu.co.jp" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752526AbZC0HbY (ORCPT ); Fri, 27 Mar 2009 03:31:24 -0400 Received: from m5.gw.fujitsu.co.jp ([10.0.50.75]) by fgwmail5.fujitsu.co.jp (Fujitsu Gateway) with ESMTP id n2R7VIWL008446 for (envelope-from izumi.taku@jp.fujitsu.com); Fri, 27 Mar 2009 16:31:18 +0900 Received: from smail (m5 [127.0.0.1]) by outgoing.m5.gw.fujitsu.co.jp (Postfix) with ESMTP id 7EE0B45DE4F for ; Fri, 27 Mar 2009 16:31:18 +0900 (JST) Received: from s5.gw.fujitsu.co.jp (s5.gw.fujitsu.co.jp [10.0.50.95]) by m5.gw.fujitsu.co.jp (Postfix) with ESMTP id 3C72B45DE56 for ; Fri, 27 Mar 2009 16:31:18 +0900 (JST) Received: from s5.gw.fujitsu.co.jp (localhost.localdomain [127.0.0.1]) by s5.gw.fujitsu.co.jp (Postfix) with ESMTP id EF2881DB805D for ; Fri, 27 Mar 2009 16:31:17 +0900 (JST) Received: from ml14.s.css.fujitsu.com (ml14.s.css.fujitsu.com [10.249.87.104]) by s5.gw.fujitsu.co.jp (Postfix) with ESMTP id 9F417E08009 for ; Fri, 27 Mar 2009 16:31:17 +0900 (JST) Received: from ml14.css.fujitsu.com (ml14 [127.0.0.1]) by ml14.s.css.fujitsu.com (Postfix) with ESMTP id 7A9079F5FC5; Fri, 27 Mar 2009 16:31:17 +0900 (JST) Received: from [127.0.0.1] (unknown [10.124.100.133]) by ml14.s.css.fujitsu.com (Postfix) with ESMTP id 773B09F5FC0; Fri, 27 Mar 2009 16:31:16 +0900 (JST) Message-ID: <49CC80C1.2090101@jp.fujitsu.com> Date: Fri, 27 Mar 2009 16:31:13 +0900 From: Taku Izumi User-Agent: Thunderbird 1.5.0.8 (Windows/20061025) MIME-Version: 1.0 To: linux-pci@vger.kernel.org CC: jbarnes@virtuousgeek.org, kaneshige.kenji@jp.fujitsu.com, greg@kroah.com Subject: pci_hotplug: create the symlink to the hotplug driver at the hotplug slot directory Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org This patch creates the symlink to the hotplug driver at the hotplug slot directory (/sys/bus/pci/slots/). As a result, we can know easily what driver manages the hotplug slot. Signed-off-by: Taku Izumi --- drivers/pci/hotplug/pci_hotplug_core.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Index: linux-next.29rc6/drivers/pci/hotplug/pci_hotplug_core.c =================================================================== --- linux-next.29rc6.orig/drivers/pci/hotplug/pci_hotplug_core.c +++ linux-next.29rc6/drivers/pci/hotplug/pci_hotplug_core.c @@ -420,9 +420,20 @@ static int has_test_file(struct pci_slot return -ENOENT; } +static int has_owner_file(struct pci_slot *pci_slot) +{ + struct hotplug_slot *slot = pci_slot->hotplug; + if ((!slot) || (!slot->ops)) + return -ENODEV; + if (slot->ops->owner) + return 0; + return -ENOENT; +} + static int fs_add_slot(struct pci_slot *slot) { int retval = 0; + struct hotplug_slot *hotplug = slot->hotplug; if (has_power_file(slot) == 0) { retval = sysfs_create_file(&slot->kobj, &hotplug_slot_attr_power.attr); @@ -472,8 +483,20 @@ static int fs_add_slot(struct pci_slot * goto exit_test; } + if (has_owner_file(slot) == 0) { + retval = sysfs_create_link(&slot->kobj, + &hotplug->ops->owner->mkobj.kobj, + hotplug->ops->owner->name); + if (retval) + goto exit_owner; + } + goto exit; +exit_owner: + if (has_test_file(slot) == 0) + sysfs_remove_file(&slot->kobj, &hotplug_slot_attr_test.attr); + exit_test: if (has_cur_bus_speed_file(slot) == 0) sysfs_remove_file(&slot->kobj, &hotplug_slot_attr_cur_bus_speed.attr); @@ -524,6 +547,9 @@ static void fs_remove_slot(struct pci_sl if (has_test_file(slot) == 0) sysfs_remove_file(&slot->kobj, &hotplug_slot_attr_test.attr); + + if (has_owner_file(slot) == 0) + sysfs_remove_link(&slot->kobj, slot->hotplug->ops->owner->name); } static struct hotplug_slot *get_slot_from_name (const char *name)