diff options
-rw-r--r-- | drivers/pci/hotplug/cpqphp.h | 13 | ||||
-rw-r--r-- | drivers/pci/hotplug/cpqphp_core.c | 42 |
2 files changed, 24 insertions, 31 deletions
diff --git a/drivers/pci/hotplug/cpqphp.h b/drivers/pci/hotplug/cpqphp.h index b1decfa88b7a..afaf8f69f73e 100644 --- a/drivers/pci/hotplug/cpqphp.h +++ b/drivers/pci/hotplug/cpqphp.h | |||
@@ -449,6 +449,11 @@ extern u8 cpqhp_disk_irq; | |||
449 | 449 | ||
450 | /* inline functions */ | 450 | /* inline functions */ |
451 | 451 | ||
452 | static inline char *slot_name(struct slot *slot) | ||
453 | { | ||
454 | return hotplug_slot_name(slot->hotplug_slot); | ||
455 | } | ||
456 | |||
452 | /* | 457 | /* |
453 | * return_resource | 458 | * return_resource |
454 | * | 459 | * |
@@ -696,14 +701,6 @@ static inline int get_presence_status(struct controller *ctrl, struct slot *slot | |||
696 | return presence_save; | 701 | return presence_save; |
697 | } | 702 | } |
698 | 703 | ||
699 | #define SLOT_NAME_SIZE 10 | ||
700 | |||
701 | static inline void make_slot_name(char *buffer, int buffer_size, struct slot *slot) | ||
702 | { | ||
703 | snprintf(buffer, buffer_size, "%d", slot->number); | ||
704 | } | ||
705 | |||
706 | |||
707 | static inline int wait_for_ctrl_irq(struct controller *ctrl) | 704 | static inline int wait_for_ctrl_irq(struct controller *ctrl) |
708 | { | 705 | { |
709 | DECLARE_WAITQUEUE(wait, current); | 706 | DECLARE_WAITQUEUE(wait, current); |
diff --git a/drivers/pci/hotplug/cpqphp_core.c b/drivers/pci/hotplug/cpqphp_core.c index a7fe4584f00b..724d42c4adbc 100644 --- a/drivers/pci/hotplug/cpqphp_core.c +++ b/drivers/pci/hotplug/cpqphp_core.c | |||
@@ -315,14 +315,15 @@ static void release_slot(struct hotplug_slot *hotplug_slot) | |||
315 | { | 315 | { |
316 | struct slot *slot = hotplug_slot->private; | 316 | struct slot *slot = hotplug_slot->private; |
317 | 317 | ||
318 | dbg("%s - physical_slot = %s\n", __func__, hotplug_slot->name); | 318 | dbg("%s - physical_slot = %s\n", __func__, slot_name(slot)); |
319 | 319 | ||
320 | kfree(slot->hotplug_slot->info); | 320 | kfree(slot->hotplug_slot->info); |
321 | kfree(slot->hotplug_slot->name); | ||
322 | kfree(slot->hotplug_slot); | 321 | kfree(slot->hotplug_slot); |
323 | kfree(slot); | 322 | kfree(slot); |
324 | } | 323 | } |
325 | 324 | ||
325 | #define SLOT_NAME_SIZE 10 | ||
326 | |||
326 | static int ctrl_slot_setup(struct controller *ctrl, | 327 | static int ctrl_slot_setup(struct controller *ctrl, |
327 | void __iomem *smbios_start, | 328 | void __iomem *smbios_start, |
328 | void __iomem *smbios_table) | 329 | void __iomem *smbios_table) |
@@ -335,6 +336,7 @@ static int ctrl_slot_setup(struct controller *ctrl, | |||
335 | u8 slot_number; | 336 | u8 slot_number; |
336 | u8 ctrl_slot; | 337 | u8 ctrl_slot; |
337 | u32 tempdword; | 338 | u32 tempdword; |
339 | char name[SLOT_NAME_SIZE]; | ||
338 | void __iomem *slot_entry= NULL; | 340 | void __iomem *slot_entry= NULL; |
339 | int result = -ENOMEM; | 341 | int result = -ENOMEM; |
340 | 342 | ||
@@ -363,16 +365,12 @@ static int ctrl_slot_setup(struct controller *ctrl, | |||
363 | if (!hotplug_slot->info) | 365 | if (!hotplug_slot->info) |
364 | goto error_hpslot; | 366 | goto error_hpslot; |
365 | hotplug_slot_info = hotplug_slot->info; | 367 | hotplug_slot_info = hotplug_slot->info; |
366 | hotplug_slot->name = kmalloc(SLOT_NAME_SIZE, GFP_KERNEL); | ||
367 | |||
368 | if (!hotplug_slot->name) | ||
369 | goto error_info; | ||
370 | 368 | ||
371 | slot->ctrl = ctrl; | 369 | slot->ctrl = ctrl; |
372 | slot->bus = ctrl->bus; | 370 | slot->bus = ctrl->bus; |
373 | slot->device = slot_device; | 371 | slot->device = slot_device; |
374 | slot->number = slot_number; | 372 | slot->number = slot_number; |
375 | dbg("slot->number = %d\n", slot->number); | 373 | dbg("slot->number = %u\n", slot->number); |
376 | 374 | ||
377 | slot_entry = get_SMBIOS_entry(smbios_start, smbios_table, 9, | 375 | slot_entry = get_SMBIOS_entry(smbios_start, smbios_table, 9, |
378 | slot_entry); | 376 | slot_entry); |
@@ -418,9 +416,9 @@ static int ctrl_slot_setup(struct controller *ctrl, | |||
418 | /* register this slot with the hotplug pci core */ | 416 | /* register this slot with the hotplug pci core */ |
419 | hotplug_slot->release = &release_slot; | 417 | hotplug_slot->release = &release_slot; |
420 | hotplug_slot->private = slot; | 418 | hotplug_slot->private = slot; |
421 | make_slot_name(hotplug_slot->name, SLOT_NAME_SIZE, slot); | 419 | snprintf(name, SLOT_NAME_SIZE, "%u", slot->number); |
422 | hotplug_slot->ops = &cpqphp_hotplug_slot_ops; | 420 | hotplug_slot->ops = &cpqphp_hotplug_slot_ops; |
423 | 421 | ||
424 | hotplug_slot_info->power_status = get_slot_enabled(ctrl, slot); | 422 | hotplug_slot_info->power_status = get_slot_enabled(ctrl, slot); |
425 | hotplug_slot_info->attention_status = | 423 | hotplug_slot_info->attention_status = |
426 | cpq_get_attention_status(ctrl, slot); | 424 | cpq_get_attention_status(ctrl, slot); |
@@ -437,10 +435,10 @@ static int ctrl_slot_setup(struct controller *ctrl, | |||
437 | result = pci_hp_register(hotplug_slot, | 435 | result = pci_hp_register(hotplug_slot, |
438 | ctrl->pci_dev->subordinate, | 436 | ctrl->pci_dev->subordinate, |
439 | slot->device, | 437 | slot->device, |
440 | hotplug_slot->name); | 438 | name); |
441 | if (result) { | 439 | if (result) { |
442 | err("pci_hp_register failed with error %d\n", result); | 440 | err("pci_hp_register failed with error %d\n", result); |
443 | goto error_name; | 441 | goto error_info; |
444 | } | 442 | } |
445 | 443 | ||
446 | slot->next = ctrl->slot; | 444 | slot->next = ctrl->slot; |
@@ -452,8 +450,6 @@ static int ctrl_slot_setup(struct controller *ctrl, | |||
452 | } | 450 | } |
453 | 451 | ||
454 | return 0; | 452 | return 0; |
455 | error_name: | ||
456 | kfree(hotplug_slot->name); | ||
457 | error_info: | 453 | error_info: |
458 | kfree(hotplug_slot_info); | 454 | kfree(hotplug_slot_info); |
459 | error_hpslot: | 455 | error_hpslot: |
@@ -639,7 +635,7 @@ static int set_attention_status (struct hotplug_slot *hotplug_slot, u8 status) | |||
639 | u8 device; | 635 | u8 device; |
640 | u8 function; | 636 | u8 function; |
641 | 637 | ||
642 | dbg("%s - physical_slot = %s\n", __func__, hotplug_slot->name); | 638 | dbg("%s - physical_slot = %s\n", __func__, slot_name(slot)); |
643 | 639 | ||
644 | if (cpqhp_get_bus_dev(ctrl, &bus, &devfn, slot->number) == -1) | 640 | if (cpqhp_get_bus_dev(ctrl, &bus, &devfn, slot->number) == -1) |
645 | return -ENODEV; | 641 | return -ENODEV; |
@@ -666,7 +662,7 @@ static int process_SI(struct hotplug_slot *hotplug_slot) | |||
666 | u8 device; | 662 | u8 device; |
667 | u8 function; | 663 | u8 function; |
668 | 664 | ||
669 | dbg("%s - physical_slot = %s\n", __func__, hotplug_slot->name); | 665 | dbg("%s - physical_slot = %s\n", __func__, slot_name(slot)); |
670 | 666 | ||
671 | if (cpqhp_get_bus_dev(ctrl, &bus, &devfn, slot->number) == -1) | 667 | if (cpqhp_get_bus_dev(ctrl, &bus, &devfn, slot->number) == -1) |
672 | return -ENODEV; | 668 | return -ENODEV; |
@@ -698,7 +694,7 @@ static int process_SS(struct hotplug_slot *hotplug_slot) | |||
698 | u8 device; | 694 | u8 device; |
699 | u8 function; | 695 | u8 function; |
700 | 696 | ||
701 | dbg("%s - physical_slot = %s\n", __func__, hotplug_slot->name); | 697 | dbg("%s - physical_slot = %s\n", __func__, slot_name(slot)); |
702 | 698 | ||
703 | if (cpqhp_get_bus_dev(ctrl, &bus, &devfn, slot->number) == -1) | 699 | if (cpqhp_get_bus_dev(ctrl, &bus, &devfn, slot->number) == -1) |
704 | return -ENODEV; | 700 | return -ENODEV; |
@@ -721,7 +717,7 @@ static int hardware_test(struct hotplug_slot *hotplug_slot, u32 value) | |||
721 | struct slot *slot = hotplug_slot->private; | 717 | struct slot *slot = hotplug_slot->private; |
722 | struct controller *ctrl = slot->ctrl; | 718 | struct controller *ctrl = slot->ctrl; |
723 | 719 | ||
724 | dbg("%s - physical_slot = %s\n", __func__, hotplug_slot->name); | 720 | dbg("%s - physical_slot = %s\n", __func__, slot_name(slot)); |
725 | 721 | ||
726 | return cpqhp_hardware_test(ctrl, value); | 722 | return cpqhp_hardware_test(ctrl, value); |
727 | } | 723 | } |
@@ -732,7 +728,7 @@ static int get_power_status(struct hotplug_slot *hotplug_slot, u8 *value) | |||
732 | struct slot *slot = hotplug_slot->private; | 728 | struct slot *slot = hotplug_slot->private; |
733 | struct controller *ctrl = slot->ctrl; | 729 | struct controller *ctrl = slot->ctrl; |
734 | 730 | ||
735 | dbg("%s - physical_slot = %s\n", __func__, hotplug_slot->name); | 731 | dbg("%s - physical_slot = %s\n", __func__, slot_name(slot)); |
736 | 732 | ||
737 | *value = get_slot_enabled(ctrl, slot); | 733 | *value = get_slot_enabled(ctrl, slot); |
738 | return 0; | 734 | return 0; |
@@ -743,7 +739,7 @@ static int get_attention_status(struct hotplug_slot *hotplug_slot, u8 *value) | |||
743 | struct slot *slot = hotplug_slot->private; | 739 | struct slot *slot = hotplug_slot->private; |
744 | struct controller *ctrl = slot->ctrl; | 740 | struct controller *ctrl = slot->ctrl; |
745 | 741 | ||
746 | dbg("%s - physical_slot = %s\n", __func__, hotplug_slot->name); | 742 | dbg("%s - physical_slot = %s\n", __func__, slot_name(slot)); |
747 | 743 | ||
748 | *value = cpq_get_attention_status(ctrl, slot); | 744 | *value = cpq_get_attention_status(ctrl, slot); |
749 | return 0; | 745 | return 0; |
@@ -754,7 +750,7 @@ static int get_latch_status(struct hotplug_slot *hotplug_slot, u8 *value) | |||
754 | struct slot *slot = hotplug_slot->private; | 750 | struct slot *slot = hotplug_slot->private; |
755 | struct controller *ctrl = slot->ctrl; | 751 | struct controller *ctrl = slot->ctrl; |
756 | 752 | ||
757 | dbg("%s - physical_slot = %s\n", __func__, hotplug_slot->name); | 753 | dbg("%s - physical_slot = %s\n", __func__, slot_name(slot)); |
758 | 754 | ||
759 | *value = cpq_get_latch_status(ctrl, slot); | 755 | *value = cpq_get_latch_status(ctrl, slot); |
760 | 756 | ||
@@ -766,7 +762,7 @@ static int get_adapter_status(struct hotplug_slot *hotplug_slot, u8 *value) | |||
766 | struct slot *slot = hotplug_slot->private; | 762 | struct slot *slot = hotplug_slot->private; |
767 | struct controller *ctrl = slot->ctrl; | 763 | struct controller *ctrl = slot->ctrl; |
768 | 764 | ||
769 | dbg("%s - physical_slot = %s\n", __func__, hotplug_slot->name); | 765 | dbg("%s - physical_slot = %s\n", __func__, slot_name(slot)); |
770 | 766 | ||
771 | *value = get_presence_status(ctrl, slot); | 767 | *value = get_presence_status(ctrl, slot); |
772 | 768 | ||
@@ -778,7 +774,7 @@ static int get_max_bus_speed (struct hotplug_slot *hotplug_slot, enum pci_bus_sp | |||
778 | struct slot *slot = hotplug_slot->private; | 774 | struct slot *slot = hotplug_slot->private; |
779 | struct controller *ctrl = slot->ctrl; | 775 | struct controller *ctrl = slot->ctrl; |
780 | 776 | ||
781 | dbg("%s - physical_slot = %s\n", __func__, hotplug_slot->name); | 777 | dbg("%s - physical_slot = %s\n", __func__, slot_name(slot)); |
782 | 778 | ||
783 | *value = ctrl->speed_capability; | 779 | *value = ctrl->speed_capability; |
784 | 780 | ||
@@ -790,7 +786,7 @@ static int get_cur_bus_speed (struct hotplug_slot *hotplug_slot, enum pci_bus_sp | |||
790 | struct slot *slot = hotplug_slot->private; | 786 | struct slot *slot = hotplug_slot->private; |
791 | struct controller *ctrl = slot->ctrl; | 787 | struct controller *ctrl = slot->ctrl; |
792 | 788 | ||
793 | dbg("%s - physical_slot = %s\n", __func__, hotplug_slot->name); | 789 | dbg("%s - physical_slot = %s\n", __func__, slot_name(slot)); |
794 | 790 | ||
795 | *value = ctrl->speed; | 791 | *value = ctrl->speed; |
796 | 792 | ||