mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	PCI: acpiphp: Keep driver loaded even if no slots found
Could have root bus hot-added later and there may be slots that need acpiphp. The result returned by acpiphp_get_num_slots() is meaningless, because the bridge the slots are under may be added after this function has been called, so drop acpiphp_get_num_slots() and the code using it. Signed-off-by: Yinghai Lu <yinghai@kernel.org> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
		
							parent
							
								
									121b090e7d
								
							
						
					
					
						commit
						d59f53bc9b
					
				
					 3 changed files with 2 additions and 44 deletions
				
			
		| 
						 | 
				
			
			@ -193,7 +193,6 @@ extern void acpiphp_unregister_hotplug_slot(struct acpiphp_slot *slot);
 | 
			
		|||
/* acpiphp_glue.c */
 | 
			
		||||
extern int acpiphp_glue_init (void);
 | 
			
		||||
extern void acpiphp_glue_exit (void);
 | 
			
		||||
extern int acpiphp_get_num_slots (void);
 | 
			
		||||
typedef int (*acpiphp_callback)(struct acpiphp_slot *slot, void *data);
 | 
			
		||||
 | 
			
		||||
extern int acpiphp_enable_slot (struct acpiphp_slot *slot);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -50,7 +50,6 @@
 | 
			
		|||
bool acpiphp_debug;
 | 
			
		||||
 | 
			
		||||
/* local variables */
 | 
			
		||||
static int num_slots;
 | 
			
		||||
static struct acpiphp_attention_info *attention_info;
 | 
			
		||||
 | 
			
		||||
#define DRIVER_VERSION	"0.5"
 | 
			
		||||
| 
						 | 
				
			
			@ -272,25 +271,6 @@ static int get_adapter_status(struct hotplug_slot *hotplug_slot, u8 *value)
 | 
			
		|||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int __init init_acpi(void)
 | 
			
		||||
{
 | 
			
		||||
	int retval;
 | 
			
		||||
 | 
			
		||||
	/* initialize internal data structure etc. */
 | 
			
		||||
	retval = acpiphp_glue_init();
 | 
			
		||||
 | 
			
		||||
	/* read initial number of slots */
 | 
			
		||||
	if (!retval) {
 | 
			
		||||
		num_slots = acpiphp_get_num_slots();
 | 
			
		||||
		if (num_slots == 0) {
 | 
			
		||||
			acpiphp_glue_exit();
 | 
			
		||||
			retval = -ENODEV;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return retval;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * release_slot - free up the memory used by a slot
 | 
			
		||||
 * @hotplug_slot: slot to free
 | 
			
		||||
| 
						 | 
				
			
			@ -379,7 +359,8 @@ static int __init acpiphp_init(void)
 | 
			
		|||
		return 0;
 | 
			
		||||
 | 
			
		||||
	/* read all the ACPI info from the system */
 | 
			
		||||
	return init_acpi();
 | 
			
		||||
	/* initialize internal data structure etc. */
 | 
			
		||||
	return acpiphp_glue_init();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1416,28 +1416,6 @@ void  acpiphp_glue_exit(void)
 | 
			
		|||
	acpi_pci_unregister_driver(&acpi_pci_hp_driver);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * acpiphp_get_num_slots - count number of slots in a system
 | 
			
		||||
 */
 | 
			
		||||
int __init acpiphp_get_num_slots(void)
 | 
			
		||||
{
 | 
			
		||||
	struct acpiphp_bridge *bridge;
 | 
			
		||||
	int num_slots = 0;
 | 
			
		||||
 | 
			
		||||
	list_for_each_entry(bridge, &bridge_list, list) {
 | 
			
		||||
		dbg("Bus %04x:%02x has %d slot%s\n",
 | 
			
		||||
				pci_domain_nr(bridge->pci_bus),
 | 
			
		||||
				bridge->pci_bus->number, bridge->nr_slots,
 | 
			
		||||
				bridge->nr_slots == 1 ? "" : "s");
 | 
			
		||||
		num_slots += bridge->nr_slots;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	dbg("Total %d slots\n", num_slots);
 | 
			
		||||
	return num_slots;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * acpiphp_enable_slot - power on slot
 | 
			
		||||
 * @slot: ACPI PHP slot
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue