PCI Hotplug core: add 'name' param pci_hp_register interface
authorAlex Chiang <achiang@hp.com>
Mon, 20 Oct 2008 23:40:42 +0000 (17:40 -0600)
committerJesse Barnes <jbarnes@virtuousgeek.org>
Wed, 22 Oct 2008 23:42:37 +0000 (16:42 -0700)
Update pci_hp_register() to take a const char *name parameter.

The motivation for this is to clean up the individual hotplug
drivers so that each one does not have to manage its own name.
The PCI core should be the place where we manage the name.

We update the interface and all callsites first, in a
"no functional change" manner, and clean up the drivers later.

Cc: kristen.c.accardi@intel.com
Acked-by: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
Reviewed-by: Matthew Wilcox <willy@linux.intel.com>
Signed-off-by: Alex Chiang <achiang@hp.com>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
drivers/pci/hotplug/acpiphp_core.c
drivers/pci/hotplug/cpci_hotplug_core.c
drivers/pci/hotplug/cpqphp_core.c
drivers/pci/hotplug/fakephp.c
drivers/pci/hotplug/ibmphp_ebda.c
drivers/pci/hotplug/pci_hotplug_core.c
drivers/pci/hotplug/pciehp_core.c
drivers/pci/hotplug/rpaphp_slot.c
drivers/pci/hotplug/sgi_hotplug.c
drivers/pci/hotplug/shpchp_core.c
include/linux/pci_hotplug.h

index 0e496e866a84dc51480d4cb3194e1ea6b62023c8..e9841765339f22775341e9434d24d569ae178ec5 100644 (file)
@@ -340,7 +340,8 @@ int acpiphp_register_hotplug_slot(struct acpiphp_slot *acpiphp_slot)
 
        retval = pci_hp_register(slot->hotplug_slot,
                                        acpiphp_slot->bridge->pci_bus,
-                                       acpiphp_slot->device);
+                                       acpiphp_slot->device,
+                                       slot->name);
        if (retval == -EBUSY)
                goto error_hpslot;
        if (retval) {
index 935947991dc98649dfaa8794fb55604ee12cb895..5e5dee85763c7f2f74ee3644273449c89e4fbd28 100644 (file)
@@ -285,7 +285,8 @@ cpci_hp_register_bus(struct pci_bus *bus, u8 first, u8 last)
                info->attention_status = cpci_get_attention_status(slot);
 
                dbg("registering slot %s", slot->hotplug_slot->name);
-               status = pci_hp_register(slot->hotplug_slot, bus, i);
+               status = pci_hp_register(slot->hotplug_slot, bus, i,
+                                        slot->hotplug_slot->name);
                if (status) {
                        err("pci_hp_register failed with error %d", status);
                        goto error_name;
index 54defec51d0895f7dd2136230fa56e87e8feac3b..a7fe4584f00bbaaa8a616e08f686ddbdaac6dc55 100644 (file)
@@ -436,7 +436,8 @@ static int ctrl_slot_setup(struct controller *ctrl,
                                slot_number);
                result = pci_hp_register(hotplug_slot,
                                         ctrl->pci_dev->subordinate,
-                                        slot->device);
+                                        slot->device,
+                                        hotplug_slot->name);
                if (result) {
                        err("pci_hp_register failed with error %d\n", result);
                        goto error_name;
index 146ca9cd1567f20858b521dc1b552c1da3362f17..3069f215383288b2812f1b03e9586a24f29a89b3 100644 (file)
@@ -126,7 +126,8 @@ static int add_slot(struct pci_dev *dev)
        slot->release = &dummy_release;
        slot->private = dslot;
 
-       retval = pci_hp_register(slot, dev->bus, PCI_SLOT(dev->devfn));
+       retval = pci_hp_register(slot, dev->bus, PCI_SLOT(dev->devfn),
+                                slot->name);
        if (retval) {
                err("pci_hp_register failed with error %d\n", retval);
                goto error_dslot;
index 8cfd1c4926c8c4b4c1e36ff1a39266df8a8a62e0..342d3e8f77c8c95eca53edcf5b7daf85b8003d95 100644 (file)
@@ -966,7 +966,8 @@ static int __init ebda_rsrc_controller (void)
        list_for_each_entry(tmp_slot, &ibmphp_slot_head, ibm_slot_list) {
                snprintf (tmp_slot->hotplug_slot->name, 30, "%s", create_file_name (tmp_slot));
                pci_hp_register(tmp_slot->hotplug_slot,
-                       pci_find_bus(0, tmp_slot->bus), tmp_slot->device);
+                       pci_find_bus(0, tmp_slot->bus), tmp_slot->device,
+                       tmp_slot->hotplug_slot->name);
        }
 
        print_ebda_hpc ();
index 2e6c4474644eb9e27f3f61773280838a5e351580..02b1ae12a2e6df4ef0222b5bdfd22d8b131c5daf 100644 (file)
@@ -547,13 +547,15 @@ out:
  * @bus: bus this slot is on
  * @slot: pointer to the &struct hotplug_slot to register
  * @slot_nr: slot number
+ * @name: name registered with kobject core
  *
  * Registers a hotplug slot with the pci hotplug subsystem, which will allow
  * userspace interaction to the slot.
  *
  * Returns 0 if successful, anything else for an error.
  */
-int pci_hp_register(struct hotplug_slot *slot, struct pci_bus *bus, int slot_nr)
+int pci_hp_register(struct hotplug_slot *slot, struct pci_bus *bus, int slot_nr,
+                       const char *name)
 {
        int result;
        struct pci_slot *pci_slot;
@@ -569,7 +571,7 @@ int pci_hp_register(struct hotplug_slot *slot, struct pci_bus *bus, int slot_nr)
        }
 
        /* Check if we have already registered a slot with the same name. */
-       if (get_slot_from_name(slot->name))
+       if (get_slot_from_name(name))
                return -EEXIST;
 
        /*
@@ -577,7 +579,7 @@ int pci_hp_register(struct hotplug_slot *slot, struct pci_bus *bus, int slot_nr)
         * driver and call it here again. If we've already created the
         * pci_slot, the interface will simply bump the refcount.
         */
-       pci_slot = pci_create_slot(bus, slot_nr, slot->name);
+       pci_slot = pci_create_slot(bus, slot_nr, name);
        if (IS_ERR(pci_slot))
                return PTR_ERR(pci_slot);
 
@@ -593,8 +595,8 @@ int pci_hp_register(struct hotplug_slot *slot, struct pci_bus *bus, int slot_nr)
        /*
         * Allow pcihp drivers to override the ACPI_PCI_SLOT name.
         */
-       if (strcmp(kobject_name(&pci_slot->kobj), slot->name)) {
-               result = kobject_rename(&pci_slot->kobj, slot->name);
+       if (strcmp(kobject_name(&pci_slot->kobj), name)) {
+               result = kobject_rename(&pci_slot->kobj, name);
                if (result) {
                        pci_destroy_slot(pci_slot);
                        return result;
@@ -607,8 +609,7 @@ int pci_hp_register(struct hotplug_slot *slot, struct pci_bus *bus, int slot_nr)
 
        result = fs_add_slot(pci_slot);
        kobject_uevent(&pci_slot->kobj, KOBJ_ADD);
-       dbg("Added slot %s to the list\n", slot->name);
-
+       dbg("Added slot %s to the list\n", name);
 
        return result;
 }
index c748a19db89d5dd44f8a4217d7f5e574db85ed17..3ace5e057601f4b2cc64e6102903f0108a6f7e01 100644 (file)
@@ -226,7 +226,8 @@ static int init_slots(struct controller *ctrl)
 duplicate_name:
                retval = pci_hp_register(hotplug_slot,
                                         ctrl->pci_dev->subordinate,
-                                        slot->device);
+                                        slot->device,
+                                        slot->name);
                if (retval) {
                        /*
                         * If slot N already exists, we'll try to create
index 50884507b8be5005cd4767c65407edb7b4599db8..736d3b43ed0b312ec8088a58ff5438e433f8bd7b 100644 (file)
@@ -137,7 +137,7 @@ int rpaphp_register_slot(struct slot *slot)
                slotno = PCI_SLOT(PCI_DN(slot->dn->child)->devfn);
        else
                slotno = -1;
-       retval = pci_hp_register(php_slot, slot->bus, slotno);
+       retval = pci_hp_register(php_slot, slot->bus, slotno, slot->name);
        if (retval) {
                err("pci_hp_register failed with error %d\n", retval);
                return retval;
index 410fe0394a8ea63fb8de8542654d514d2ec36992..6d20bbd4359aae18f41d160a65697a73ca047582 100644 (file)
@@ -653,7 +653,8 @@ static int sn_hotplug_slot_register(struct pci_bus *pci_bus)
                bss_hotplug_slot->ops = &sn_hotplug_slot_ops;
                bss_hotplug_slot->release = &sn_release_slot;
 
-               rc = pci_hp_register(bss_hotplug_slot, pci_bus, device);
+               rc = pci_hp_register(bss_hotplug_slot, pci_bus, device,
+                                    bss_hotplug_slot->name);
                if (rc)
                        goto register_err;
 
index cc38615395f1087f10a07764fe8d402524a9830b..bf5096612aaba9b33ab055fc9c7d2964b6f23aa6 100644 (file)
@@ -146,7 +146,8 @@ static int init_slots(struct controller *ctrl)
                    slot->hp_slot, slot->number, ctrl->slot_device_offset);
 duplicate_name:
                retval = pci_hp_register(slot->hotplug_slot,
-                               ctrl->pci_dev->subordinate, slot->device);
+                               ctrl->pci_dev->subordinate, slot->device,
+                               hotplug_slot->name);
                if (retval) {
                        /*
                         * If slot N already exists, we'll try to create
index a08cd06b541a190975d04ee7d1cdd8af73e0a9f5..5efba6671865e8047732ece8662680293d8d17bd 100644 (file)
@@ -165,7 +165,8 @@ struct hotplug_slot {
 };
 #define to_hotplug_slot(n) container_of(n, struct hotplug_slot, kobj)
 
-extern int pci_hp_register(struct hotplug_slot *, struct pci_bus *, int nr);
+extern int pci_hp_register(struct hotplug_slot *, struct pci_bus *, int nr,
+                          const char *name);
 extern int pci_hp_deregister(struct hotplug_slot *slot);
 extern int __must_check pci_hp_change_slot_info        (struct hotplug_slot *slot,
                                                 struct hotplug_slot_info *info);