Loading arch/ia64/sn/kernel/io_acpi_init.c +22 −22 Original line number Original line Diff line number Diff line Loading @@ -53,12 +53,15 @@ sal_ioif_init(u64 *result) } } /* /* * sn_hubdev_add - The 'add' function of the acpi_sn_hubdev_driver. * sn_acpi_hubdev_init() - This function is called by acpi_ns_get_device_callback() * Called for every "SGIHUB" or "SGITIO" device defined * for all SGIHUB and SGITIO acpi devices defined in the * in the ACPI namespace. * DSDT. It obtains the hubdev_info pointer from the * ACPI vendor resource, which the PROM setup, and sets up the * hubdev_info in the pda. */ */ static int __init sn_hubdev_add(struct acpi_device *device) static acpi_status __init sn_acpi_hubdev_init(acpi_handle handle, u32 depth, void *context, void **ret) { { struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL }; struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL }; u64 addr; u64 addr; Loading @@ -67,18 +70,19 @@ sn_hubdev_add(struct acpi_device *device) int i; int i; u64 nasid; u64 nasid; struct acpi_resource *resource; struct acpi_resource *resource; int ret = 0; acpi_status status; acpi_status status; struct acpi_resource_vendor_typed *vendor; struct acpi_resource_vendor_typed *vendor; extern void sn_common_hubdev_init(struct hubdev_info *); extern void sn_common_hubdev_init(struct hubdev_info *); status = acpi_get_vendor_resource(device->handle, METHOD_NAME__CRS, status = acpi_get_vendor_resource(handle, METHOD_NAME__CRS, &sn_uuid, &buffer); &sn_uuid, &buffer); if (ACPI_FAILURE(status)) { if (ACPI_FAILURE(status)) { printk(KERN_ERR printk(KERN_ERR "sn_hubdev_add: acpi_get_vendor_resource() failed: %d\n", "sn_acpi_hubdev_init: acpi_get_vendor_resource() " status); "(0x%x) failed for: ", status); return 1; acpi_ns_print_node_pathname(handle, NULL); printk("\n"); return AE_OK; /* Continue walking namespace */ } } resource = buffer.pointer; resource = buffer.pointer; Loading @@ -86,9 +90,10 @@ sn_hubdev_add(struct acpi_device *device) if ((vendor->byte_length - sizeof(struct acpi_vendor_uuid)) != if ((vendor->byte_length - sizeof(struct acpi_vendor_uuid)) != sizeof(struct hubdev_info *)) { sizeof(struct hubdev_info *)) { printk(KERN_ERR printk(KERN_ERR "sn_hubdev_add: Invalid vendor data length: %d\n", "sn_acpi_hubdev_init: Invalid vendor data length: %d for: ", vendor->byte_length); vendor->byte_length); ret = 1; acpi_ns_print_node_pathname(handle, NULL); printk("\n"); goto exit; goto exit; } } Loading @@ -103,7 +108,7 @@ sn_hubdev_add(struct acpi_device *device) exit: exit: kfree(buffer.pointer); kfree(buffer.pointer); return ret; return AE_OK; /* Continue walking namespace */ } } /* /* Loading Loading @@ -441,14 +446,6 @@ sn_acpi_slot_fixup(struct pci_dev *dev) EXPORT_SYMBOL(sn_acpi_slot_fixup); EXPORT_SYMBOL(sn_acpi_slot_fixup); static struct acpi_driver acpi_sn_hubdev_driver = { .name = "SGI HUBDEV Driver", .ids = "SGIHUB,SGITIO", .ops = { .add = sn_hubdev_add, }, }; /* /* * sn_acpi_bus_fixup - Perform SN specific setup of software structs * sn_acpi_bus_fixup - Perform SN specific setup of software structs Loading Loading @@ -492,7 +489,10 @@ sn_io_acpi_init(void) /* SN Altix does not follow the IOSAPIC IRQ routing model */ /* SN Altix does not follow the IOSAPIC IRQ routing model */ acpi_irq_model = ACPI_IRQ_MODEL_PLATFORM; acpi_irq_model = ACPI_IRQ_MODEL_PLATFORM; acpi_bus_register_driver(&acpi_sn_hubdev_driver); /* Setup hubdev_info for all SGIHUB/SGITIO devices */ acpi_get_devices("SGIHUB", sn_acpi_hubdev_init, NULL, NULL); acpi_get_devices("SGITIO", sn_acpi_hubdev_init, NULL, NULL); status = sal_ioif_init(&result); status = sal_ioif_init(&result); if (status || result) if (status || result) panic("sal_ioif_init failed: [%lx] %s\n", panic("sal_ioif_init failed: [%lx] %s\n", Loading arch/ia64/sn/kernel/setup.c +2 −0 Original line number Original line Diff line number Diff line Loading @@ -397,6 +397,8 @@ void __init sn_setup(char **cmdline_p) ia64_sn_set_os_feature(OSF_PCISEGMENT_ENABLE); ia64_sn_set_os_feature(OSF_PCISEGMENT_ENABLE); ia64_sn_set_os_feature(OSF_ACPI_ENABLE); ia64_sn_set_os_feature(OSF_ACPI_ENABLE); /* Load the new DSDT and SSDT tables into the global table list. */ acpi_table_init(); #if defined(CONFIG_VT) && defined(CONFIG_VGA_CONSOLE) #if defined(CONFIG_VT) && defined(CONFIG_VGA_CONSOLE) /* /* Loading Loading
arch/ia64/sn/kernel/io_acpi_init.c +22 −22 Original line number Original line Diff line number Diff line Loading @@ -53,12 +53,15 @@ sal_ioif_init(u64 *result) } } /* /* * sn_hubdev_add - The 'add' function of the acpi_sn_hubdev_driver. * sn_acpi_hubdev_init() - This function is called by acpi_ns_get_device_callback() * Called for every "SGIHUB" or "SGITIO" device defined * for all SGIHUB and SGITIO acpi devices defined in the * in the ACPI namespace. * DSDT. It obtains the hubdev_info pointer from the * ACPI vendor resource, which the PROM setup, and sets up the * hubdev_info in the pda. */ */ static int __init sn_hubdev_add(struct acpi_device *device) static acpi_status __init sn_acpi_hubdev_init(acpi_handle handle, u32 depth, void *context, void **ret) { { struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL }; struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL }; u64 addr; u64 addr; Loading @@ -67,18 +70,19 @@ sn_hubdev_add(struct acpi_device *device) int i; int i; u64 nasid; u64 nasid; struct acpi_resource *resource; struct acpi_resource *resource; int ret = 0; acpi_status status; acpi_status status; struct acpi_resource_vendor_typed *vendor; struct acpi_resource_vendor_typed *vendor; extern void sn_common_hubdev_init(struct hubdev_info *); extern void sn_common_hubdev_init(struct hubdev_info *); status = acpi_get_vendor_resource(device->handle, METHOD_NAME__CRS, status = acpi_get_vendor_resource(handle, METHOD_NAME__CRS, &sn_uuid, &buffer); &sn_uuid, &buffer); if (ACPI_FAILURE(status)) { if (ACPI_FAILURE(status)) { printk(KERN_ERR printk(KERN_ERR "sn_hubdev_add: acpi_get_vendor_resource() failed: %d\n", "sn_acpi_hubdev_init: acpi_get_vendor_resource() " status); "(0x%x) failed for: ", status); return 1; acpi_ns_print_node_pathname(handle, NULL); printk("\n"); return AE_OK; /* Continue walking namespace */ } } resource = buffer.pointer; resource = buffer.pointer; Loading @@ -86,9 +90,10 @@ sn_hubdev_add(struct acpi_device *device) if ((vendor->byte_length - sizeof(struct acpi_vendor_uuid)) != if ((vendor->byte_length - sizeof(struct acpi_vendor_uuid)) != sizeof(struct hubdev_info *)) { sizeof(struct hubdev_info *)) { printk(KERN_ERR printk(KERN_ERR "sn_hubdev_add: Invalid vendor data length: %d\n", "sn_acpi_hubdev_init: Invalid vendor data length: %d for: ", vendor->byte_length); vendor->byte_length); ret = 1; acpi_ns_print_node_pathname(handle, NULL); printk("\n"); goto exit; goto exit; } } Loading @@ -103,7 +108,7 @@ sn_hubdev_add(struct acpi_device *device) exit: exit: kfree(buffer.pointer); kfree(buffer.pointer); return ret; return AE_OK; /* Continue walking namespace */ } } /* /* Loading Loading @@ -441,14 +446,6 @@ sn_acpi_slot_fixup(struct pci_dev *dev) EXPORT_SYMBOL(sn_acpi_slot_fixup); EXPORT_SYMBOL(sn_acpi_slot_fixup); static struct acpi_driver acpi_sn_hubdev_driver = { .name = "SGI HUBDEV Driver", .ids = "SGIHUB,SGITIO", .ops = { .add = sn_hubdev_add, }, }; /* /* * sn_acpi_bus_fixup - Perform SN specific setup of software structs * sn_acpi_bus_fixup - Perform SN specific setup of software structs Loading Loading @@ -492,7 +489,10 @@ sn_io_acpi_init(void) /* SN Altix does not follow the IOSAPIC IRQ routing model */ /* SN Altix does not follow the IOSAPIC IRQ routing model */ acpi_irq_model = ACPI_IRQ_MODEL_PLATFORM; acpi_irq_model = ACPI_IRQ_MODEL_PLATFORM; acpi_bus_register_driver(&acpi_sn_hubdev_driver); /* Setup hubdev_info for all SGIHUB/SGITIO devices */ acpi_get_devices("SGIHUB", sn_acpi_hubdev_init, NULL, NULL); acpi_get_devices("SGITIO", sn_acpi_hubdev_init, NULL, NULL); status = sal_ioif_init(&result); status = sal_ioif_init(&result); if (status || result) if (status || result) panic("sal_ioif_init failed: [%lx] %s\n", panic("sal_ioif_init failed: [%lx] %s\n", Loading
arch/ia64/sn/kernel/setup.c +2 −0 Original line number Original line Diff line number Diff line Loading @@ -397,6 +397,8 @@ void __init sn_setup(char **cmdline_p) ia64_sn_set_os_feature(OSF_PCISEGMENT_ENABLE); ia64_sn_set_os_feature(OSF_PCISEGMENT_ENABLE); ia64_sn_set_os_feature(OSF_ACPI_ENABLE); ia64_sn_set_os_feature(OSF_ACPI_ENABLE); /* Load the new DSDT and SSDT tables into the global table list. */ acpi_table_init(); #if defined(CONFIG_VT) && defined(CONFIG_VGA_CONSOLE) #if defined(CONFIG_VT) && defined(CONFIG_VGA_CONSOLE) /* /* Loading