up(&acpi_link_lock); 
acpi_pci_link_add (	struct acpi_device *device){	int			result = 0;	struct acpi_pci_link	*link = NULL;	int			i = 0;	int			found = 0;	ACPI_FUNCTION_TRACE("acpi_pci_link_add");	if (!device)		return_VALUE(-EINVAL);	link = kmalloc(sizeof(struct acpi_pci_link), GFP_KERNEL);	if (!link)		return_VALUE(-ENOMEM);	memset(link, 0, sizeof(struct acpi_pci_link));	link->device = device;	link->handle = device->handle;	strcpy(acpi_device_name(device), ACPI_PCI_LINK_DEVICE_NAME);	strcpy(acpi_device_class(device), ACPI_PCI_LINK_CLASS);	acpi_driver_data(device) = link;	result = acpi_pci_link_get_possible(link);	if (result)		goto end;	/* query and set link->irq.active */	acpi_pci_link_get_current(link);	printk(PREFIX "%s [%s] (IRQs", acpi_device_name(device),		acpi_device_bid(device));	for (i = 0; i < link->irq.possible_count; i++) {		if (link->irq.active == link->irq.possible[i]) {			printk(" *%d", link->irq.possible[i]);			found = 1;		}		else			printk(" %d", link->irq.possible[i]);	}	printk(")");	if (!found)		printk(" *%d", link->irq.active);	if(!link->device->status.enabled)		printk(", disabled.");	printk("\n");	/* TBD: Acquire/release lock */	list_add_tail(&link->node, &acpi_link.entries);	acpi_link.count++;end:	/* disable all links -- to be activated on use */	acpi_ut_evaluate_object(link->handle, "_DIS", 0, NULL);	if (result)		kfree(link);	return_VALUE(result);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/87bec66b9691522414862dd8d41e430b063735ef/pci_link.c/clean/drivers/acpi/pci_link.c