acpiphp: allocate resources for adapters with bridges
PATCH 1/2 acpiphp: allocate resources for adapters with bridges
Allocate resources for adapters with p2p bridges.
drivers/pci/hotplug/acpiphp_glue.c +11 -0
@@ -58,6 +58,9 @@ static LIST_HEAD(bridge_list);static void handle_hotplug_event_bridge (acpi_handle ,u32 ,void *);static void handle_hotplug_event_func (acpi_handle ,u32 ,void *); +static void acpiphp_sanitize_bus (struct pci_bus *bus); +static void acpiphp_set_hpp_values (acpi_handle handle,struct pci_bus *bus); +/* * initialization & terminatation routines
@@ -207,6 +210,9 @@ register_slot(acpi_handle handle, u32 lv slot->flags |= (SLOT_ENABLED |SLOT_POWEREDON ); } +/* store the handle in the slot for later. */ + slot->handle = handle; +/* install notify handler */ status = acpi_install_notify_handler(handle, ACPI_SYSTEM_NOTIFY,
@@ -796,7 +802,12 @@ static int enable_device(struct acpiphp_ } } +pci_bus_size_bridges (bus);pci_bus_assign_resources (bus); +acpiphp_sanitize_bus (bus); +acpiphp_set_hpp_values (slot->handle, bus); +pci_enable_bridges (bus); +acpiphp_configure_ioapics (slot->handle);pci_bus_add_devices (bus);/* associate pci_dev to our representation */
drivers/pci/hotplug/acpiphp.h +1 -0
@@ -119,6 +119,7 @@ struct acpiphp_slot {struct list_head funcs;/* one slot may have different objects (i.e. for each function) */ struct semaphore crit_sect; +acpi_handle handle;u32 id;/* slot id (serial #) for hotplug core */ u8 device;/* pci device# */
drivers/pci/hotplug/acpiphp_glue.c static LIST_HEAD(bridge_list); · line 62
Quoted 13 lines · Kristen Accardi
Allocate resources for adapters with p2p bridges.
Signed-off-by Kristen Carlson Accardi <[email protected]>diff -uprN -X linux-2.6.14-rc2/Documentation/dontdiff
linux-2.6.14-rc2/drivers/pci/hotplug/acpiphp_glue.clinux-2.6.14-rc2-kca1/drivers/pci/hotplug/acpiphp_glue.cdrivers/pci/hotplug/acpiphp_glue.c +2
-0@@ -58,6 +58,9 @@ static LIST_HEAD(bridge_list);static void handle_hotplug_event_bridge (acpi_handle ,u32 ,void *);static void handle_hotplug_event_func (acpi_handle ,u32 ,void *); +static void acpiphp_sanitize_bus (struct pci_bus *bus); +static void acpiphp_set_hpp_values (acpi_handle handle,struct pci_bus *bus);
These are not static functions, but functions somewhere else in the kernel. Please put their function prototypes in a header file somewhere. You also need to EXPORT_SYMBOL_GPL() them so that the hotplug driver can use them when it is loaded as a module.
thanks,
greg k-h
Quoted 20 lines · Greg KH
drivers/pci/hotplug/acpiphp_glue.c static LIST_HEAD(bridge_list); · line 62
Quoted 13 lines · Kristen Accardi
Allocate resources for adapters with p2p bridges.
Signed-off-by Kristen Carlson Accardi <[email protected]>diff -uprN -X linux-2.6.14-rc2/Documentation/dontdiff
linux-2.6.14-rc2/drivers/pci/hotplug/acpiphp_glue.clinux-2.6.14-rc2-kca1/drivers/pci/hotplug/acpiphp_glue.cdrivers/pci/hotplug/acpiphp_glue.c +2
-0@@ -58,6 +58,9 @@ static LIST_HEAD(bridge_list);static void handle_hotplug_event_bridge (acpi_handle ,u32 ,void *);static void handle_hotplug_event_func (acpi_handle ,u32 ,void *); +static void acpiphp_sanitize_bus (struct pci_bus *bus); +static void acpiphp_set_hpp_values (acpi_handle handle,struct pci_bus *bus);These are not static functions, but functions somewhere else in the kernel. Please put their function prototypes in a header file somewhere. You also need to
EXPORT_SYMBOL_GPL()them so that the hotplug driver can use them when it is loaded as a module.
Quoted 3 lines
thanks,
greg k-h
Actually, these functions are present as static functions in acpiphp_glue.c, and only used in acpiphp_glue.c, so I don't believe I need to export them or make them non static (they are static currently).
Quoted 21 lines · Kristen Accardi
Quoted 20 lines · Greg KH
drivers/pci/hotplug/acpiphp_glue.c static LIST_HEAD(bridge_list); · line 62
Quoted 13 lines · Kristen Accardi
Allocate resources for adapters with p2p bridges.
Signed-off-by Kristen Carlson Accardi <[email protected]>diff -uprN -X linux-2.6.14-rc2/Documentation/dontdiff
linux-2.6.14-rc2/drivers/pci/hotplug/acpiphp_glue.clinux-2.6.14-rc2-kca1/drivers/pci/hotplug/acpiphp_glue.cdrivers/pci/hotplug/acpiphp_glue.c +2
-0@@ -58,6 +58,9 @@ static LIST_HEAD(bridge_list);static void handle_hotplug_event_bridge (acpi_handle ,u32 ,void *);static void handle_hotplug_event_func (acpi_handle ,u32 ,void *); +static void acpiphp_sanitize_bus (struct pci_bus *bus); +static void acpiphp_set_hpp_values (acpi_handle handle,struct pci_bus *bus);These are not static functions, but functions somewhere else in the kernel. Please put their function prototypes in a header file somewhere. You also need to
EXPORT_SYMBOL_GPL()them so that the hotplug driver can use them when it is loaded as a module.
Quoted 7 lines
Quoted 3 lines
thanks,
greg k-h
Actually, these functions are present as static functions in
acpiphp_glue.c, and only used inacpiphp_glue.c, so I don't believe I need to export them or make them non static (they are static currently).
oops, sorry, you are right, I got those confused with the other acpi function you added.
greg k-h
Hi Kristen,
At Fri, 07 Oct 2005 10:45:46 -0700,
Quoted 45 lines · Kristen Accardi
Allocate resources for adapters with p2p bridges.
Signed-off-by Kristen Carlson Accardi <[email protected]>diff -uprN -X linux-2.6.14-rc2/Documentation/dontdiff
linux-2.6.14-rc2/drivers/pci/hotplug/acpiphp_glue.clinux-2.6.14-rc2-kca1/drivers/pci/hotplug/acpiphp_glue.cdrivers/pci/hotplug/acpiphp_glue.c +11
-0@@ -58,6 +58,9 @@ static LIST_HEAD(bridge_list);static void handle_hotplug_event_bridge (acpi_handle ,u32 ,void *);static void handle_hotplug_event_func (acpi_handle ,u32 ,void *); +static void acpiphp_sanitize_bus (struct pci_bus *bus); +static void acpiphp_set_hpp_values (acpi_handle handle,struct pci_bus *bus); +/* * initialization & terminatation routines @@ -207,6 +210,9 @@ register_slot(acpi_handle handle, u32 lv slot->flags |= (SLOT_ENABLED |SLOT_POWEREDON ); } +/* store the handle in the slot for later. */ + slot->handle = handle; +/* install notify handler */ status = acpi_install_notify_handler(handle, ACPI_SYSTEM_NOTIFY,@@ -796,7 +802,12 @@ static int enable_device(struct acpiphp_ } } +pci_bus_size_bridges (bus);pci_bus_assign_resources (bus); +acpiphp_sanitize_bus (bus); +acpiphp_set_hpp_values (slot->handle, bus); +pci_enable_bridges (bus); +acpiphp_configure_ioapics (slot->handle);pci_bus_add_devices (bus);/* associate pci_dev to our representation */ diff -uprN -X linux-2.6.14-rc2/Documentation/dontdiff
linux-2.6.14-rc2/drivers/pci/hotplug/acpiphp.hlinux-2.6.14-rc2-kca1/drivers/pci/hotplug/acpiphp.h
drivers/pci/hotplug/acpiphp.h struct acpiphp_slot { · line 125
Quoted 7 lines
drivers/pci/hotplug/acpiphp.h +1
-0@@ -119,6 +119,7 @@ struct acpiphp_slot {struct list_head funcs;/* one slot may have different objects (i.e. for each function) */ struct semaphore crit_sect; +acpi_handle handle;u32 id;/* slot id (serial #) for hotplug core */ u8 device;/* pci device# */
If the p2p bridge is one of the multi-function devices, the slot->handle would be over-written by the last found device's handle.
Is your adaptor is *non*-multifunctional?
I'm also working for p2p hotplug with acpiphp, and your code is almost same to mine. I could find some bugs in my patch by your patch. I'll update my patch.
Thanks,
MUNE
Signature · 1 line
MUNEDA Takahiro <[email protected]>
Allocate resources for adapters with bridges on them.
---
I changed the patch to not store the acpi_handle in the acpiphp_slot structure, but grab it out of the device structure instead. However, I don't have an adapter that will really test to see if this works properly, so if your adapter will work, then please give it a try and let me know if it fails.
drivers/pci/hotplug/acpiphp_glue.c +9 -1
@@ -58,6 +58,9 @@ static LIST_HEAD(bridge_list);static void handle_hotplug_event_bridge (acpi_handle ,u32 ,void *);static void handle_hotplug_event_func (acpi_handle ,u32 ,void *); +static void acpiphp_sanitize_bus (struct pci_bus *bus); +static void acpiphp_set_hpp_values (acpi_handle handle,struct pci_bus *bus); +/* * initialization & terminatation routines
@@ -796,9 +799,14 @@ static int enable_device(struct acpiphp_ } } +pci_bus_size_bridges (bus);pci_bus_assign_resources (bus); +acpiphp_sanitize_bus (bus); +pci_enable_bridges (bus);pci_bus_add_devices (bus); - +acpiphp_set_hpp_values (DEVICE_ACPI_HANDLE (&bus->self->dev), bus); +acpiphp_configure_ioapics (DEVICE_ACPI_HANDLE (&bus->self->dev)); +/* associate pci_dev to our representation */ list_for_each (l, &slot->funcs) { func = list_entry(l, struct acpiphp_func, sibling);
-------------------------------------------------------
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads, discussions, and more. http://solutions.newsforge.com/ibmarch.tmpl