Skip to content

Commit

Permalink
PCI Hotplug core: add 'name' param pci_hp_register interface
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Alex Chiang authored and Jesse Barnes committed Oct 22, 2008
1 parent 48ff96c commit 1359f27
Show file tree
Hide file tree
Showing 11 changed files with 27 additions and 17 deletions.
3 changes: 2 additions & 1 deletion drivers/pci/hotplug/acpiphp_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
3 changes: 2 additions & 1 deletion drivers/pci/hotplug/cpci_hotplug_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
3 changes: 2 additions & 1 deletion drivers/pci/hotplug/cpqphp_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
3 changes: 2 additions & 1 deletion drivers/pci/hotplug/fakephp.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
3 changes: 2 additions & 1 deletion drivers/pci/hotplug/ibmphp_ebda.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 ();
Expand Down
15 changes: 8 additions & 7 deletions drivers/pci/hotplug/pci_hotplug_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -547,13 +547,15 @@ static struct hotplug_slot *get_slot_from_name (const char *name)
* @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;
Expand All @@ -569,15 +571,15 @@ 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;

/*
* No problems if we call this interface from both ACPI_PCI_SLOT
* 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);

Expand All @@ -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;
Expand All @@ -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;
}
Expand Down
3 changes: 2 additions & 1 deletion drivers/pci/hotplug/pciehp_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion drivers/pci/hotplug/rpaphp_slot.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
3 changes: 2 additions & 1 deletion drivers/pci/hotplug/sgi_hotplug.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
3 changes: 2 additions & 1 deletion drivers/pci/hotplug/shpchp_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
3 changes: 2 additions & 1 deletion include/linux/pci_hotplug.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down

0 comments on commit 1359f27

Please sign in to comment.