]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
PCI: ibmphp: stop managing hotplug_slot->name
authorAlex Chiang <achiang@hp.com>
Mon, 1 Dec 2008 20:09:59 +0000 (13:09 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 5 Dec 2008 18:55:17 +0000 (10:55 -0800)
commit a32615a1a661f83661e8a26c3bc7763f716da8f3 upstream.

We no longer need to manage our version of hotplug_slot->name
since the PCI and hotplug core manage it on our behalf.

Now, we simply advise the PCI core of the name that we would
like, and let the core take care of the rest.

Additionally, slightly rearrange the members of struct slot
so they are naturally aligned to eliminate holes.

Cc: kristen.c.accardi@intel.com
Acked-by: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
Signed-off-by: Alex Chiang <achiang@hp.com>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/pci/hotplug/ibmphp.h
drivers/pci/hotplug/ibmphp_ebda.c

index 612d96301509c8e9d2fbb003d1a751b46e339cd7..a8d391a4957db86ccd7bd41dd02ccfa67831e8e7 100644 (file)
@@ -707,17 +707,16 @@ struct slot {
        u8 device;
        u8 number;
        u8 real_physical_slot_num;
-       char name[100];
        u32 capabilities;
        u8 supported_speed;
        u8 supported_bus_mode;
+       u8 flag;                /* this is for disable slot and polling */
+       u8 ctlr_index;
        struct hotplug_slot *hotplug_slot;
        struct controller *ctrl;
        struct pci_func *func;
        u8 irq[4];
-       u8 flag;                /* this is for disable slot and polling */
        int bit_mode;           /* 0 = 32, 1 = 64 */
-       u8 ctlr_index;
        struct bus_info *bus_on;
        struct list_head ibm_slot_list;
        u8 status;
index 46deff3e13e25eb40ee380eaa99ec2a86893469a..8431246e2eb7d382f51779fc622fd2c4b9e3b6c4 100644 (file)
@@ -620,11 +620,14 @@ static u8 calculate_first_slot (u8 slot_num)
        return first_slot + 1;
 
 }
+
+#define SLOT_NAME_SIZE 30
+
 static char *create_file_name (struct slot * slot_cur)
 {
        struct opt_rio *opt_vg_ptr = NULL;
        struct opt_rio_lo *opt_lo_ptr = NULL;
-       static char str[30];
+       static char str[SLOT_NAME_SIZE];
        int which = 0; /* rxe = 1, chassis = 0 */
        u8 number = 1; /* either chassis or rxe # */
        u8 first_slot = 1;
@@ -736,7 +739,6 @@ static void release_slot(struct hotplug_slot *hotplug_slot)
 
        slot = hotplug_slot->private;
        kfree(slot->hotplug_slot->info);
-       kfree(slot->hotplug_slot->name);
        kfree(slot->hotplug_slot);
        slot->ctrl = NULL;
        slot->bus_on = NULL;
@@ -768,6 +770,7 @@ static int __init ebda_rsrc_controller (void)
        int rc;
        struct slot *tmp_slot;
        struct list_head *list;
+       char name[SLOT_NAME_SIZE];
 
        addr = hpc_list_ptr->phys_addr;
        for (ctlr = 0; ctlr < hpc_list_ptr->num_ctlrs; ctlr++) {
@@ -931,12 +934,6 @@ static int __init ebda_rsrc_controller (void)
                                goto error_no_hp_info;
                        }
 
-                       hp_slot_ptr->name = kmalloc(30, GFP_KERNEL);
-                       if (!hp_slot_ptr->name) {
-                               rc = -ENOMEM;
-                               goto error_no_hp_name;
-                       }
-
                        tmp_slot = kzalloc(sizeof(*tmp_slot), GFP_KERNEL);
                        if (!tmp_slot) {
                                rc = -ENOMEM;
@@ -1000,10 +997,9 @@ static int __init ebda_rsrc_controller (void)
        list_for_each (list, &ibmphp_slot_head) {
                tmp_slot = list_entry (list, struct slot, ibm_slot_list);
 
-               snprintf (tmp_slot->hotplug_slot->name, 30, "%s", create_file_name (tmp_slot));
+               snprintf(name, SLOT_NAME_SIZE, "%s", create_file_name(tmp_slot));
                pci_hp_register(tmp_slot->hotplug_slot,
-                       pci_find_bus(0, tmp_slot->bus), tmp_slot->device,
-                       tmp_slot->hotplug_slot->name);
+                       pci_find_bus(0, tmp_slot->bus), tmp_slot->device, name);
        }
 
        print_ebda_hpc ();
@@ -1013,8 +1009,6 @@ static int __init ebda_rsrc_controller (void)
 error:
        kfree (hp_slot_ptr->private);
 error_no_slot:
-       kfree (hp_slot_ptr->name);
-error_no_hp_name:
        kfree (hp_slot_ptr->info);
 error_no_hp_info:
        kfree (hp_slot_ptr);