You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge branch 'simplify_PRT' into release
Conflicts:
drivers/acpi/pci_irq.c
Note that this merge disables
e1d3a90846
pci, acpi: reroute PCI interrupt to legacy boot interrupt equivalent
Signed-off-by: Len Brown <len.brown@intel.com>
This commit is contained in:
+38
-52
@@ -99,7 +99,7 @@ acpi_status acpi_get_pci_id(acpi_handle handle, struct acpi_pci_id *id)
|
||||
*/
|
||||
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_INFO,
|
||||
"Device %s has PCI address %02x:%02x:%02x.%02x\n",
|
||||
"Device %s has PCI address %04x:%02x:%02x.%d\n",
|
||||
acpi_device_bid(device), id->segment, id->bus,
|
||||
id->device, id->function));
|
||||
|
||||
@@ -111,12 +111,11 @@ EXPORT_SYMBOL(acpi_get_pci_id);
|
||||
int acpi_pci_bind(struct acpi_device *device)
|
||||
{
|
||||
int result = 0;
|
||||
acpi_status status = AE_OK;
|
||||
struct acpi_pci_data *data = NULL;
|
||||
struct acpi_pci_data *pdata = NULL;
|
||||
char *pathname = NULL;
|
||||
struct acpi_buffer buffer = { 0, NULL };
|
||||
acpi_handle handle = NULL;
|
||||
acpi_status status;
|
||||
struct acpi_pci_data *data;
|
||||
struct acpi_pci_data *pdata;
|
||||
struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL };
|
||||
acpi_handle handle;
|
||||
struct pci_dev *dev;
|
||||
struct pci_bus *bus;
|
||||
|
||||
@@ -124,21 +123,18 @@ int acpi_pci_bind(struct acpi_device *device)
|
||||
if (!device || !device->parent)
|
||||
return -EINVAL;
|
||||
|
||||
pathname = kzalloc(ACPI_PATHNAME_MAX, GFP_KERNEL);
|
||||
if (!pathname)
|
||||
return -ENOMEM;
|
||||
buffer.length = ACPI_PATHNAME_MAX;
|
||||
buffer.pointer = pathname;
|
||||
|
||||
data = kzalloc(sizeof(struct acpi_pci_data), GFP_KERNEL);
|
||||
if (!data) {
|
||||
kfree(pathname);
|
||||
if (!data)
|
||||
return -ENOMEM;
|
||||
|
||||
status = acpi_get_name(device->handle, ACPI_FULL_PATHNAME, &buffer);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
kfree(data);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
acpi_get_name(device->handle, ACPI_FULL_PATHNAME, &buffer);
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Binding PCI device [%s]...\n",
|
||||
pathname));
|
||||
(char *)buffer.pointer));
|
||||
|
||||
/*
|
||||
* Segment & Bus
|
||||
@@ -166,7 +162,7 @@ int acpi_pci_bind(struct acpi_device *device)
|
||||
data->id.device = device->pnp.bus_address >> 16;
|
||||
data->id.function = device->pnp.bus_address & 0xFFFF;
|
||||
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_INFO, "...to %02x:%02x:%02x.%02x\n",
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_INFO, "...to %04x:%02x:%02x.%d\n",
|
||||
data->id.segment, data->id.bus, data->id.device,
|
||||
data->id.function));
|
||||
|
||||
@@ -196,7 +192,7 @@ int acpi_pci_bind(struct acpi_device *device)
|
||||
}
|
||||
if (!data->dev) {
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_INFO,
|
||||
"Device %02x:%02x:%02x.%02x not present in PCI namespace\n",
|
||||
"Device %04x:%02x:%02x.%d not present in PCI namespace\n",
|
||||
data->id.segment, data->id.bus,
|
||||
data->id.device, data->id.function));
|
||||
result = -ENODEV;
|
||||
@@ -204,7 +200,7 @@ int acpi_pci_bind(struct acpi_device *device)
|
||||
}
|
||||
if (!data->dev->bus) {
|
||||
printk(KERN_ERR PREFIX
|
||||
"Device %02x:%02x:%02x.%02x has invalid 'bus' field\n",
|
||||
"Device %04x:%02x:%02x.%d has invalid 'bus' field\n",
|
||||
data->id.segment, data->id.bus,
|
||||
data->id.device, data->id.function);
|
||||
result = -ENODEV;
|
||||
@@ -219,7 +215,7 @@ int acpi_pci_bind(struct acpi_device *device)
|
||||
*/
|
||||
if (data->dev->subordinate) {
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_INFO,
|
||||
"Device %02x:%02x:%02x.%02x is a PCI bridge\n",
|
||||
"Device %04x:%02x:%02x.%d is a PCI bridge\n",
|
||||
data->id.segment, data->id.bus,
|
||||
data->id.device, data->id.function));
|
||||
data->bus = data->dev->subordinate;
|
||||
@@ -262,7 +258,7 @@ int acpi_pci_bind(struct acpi_device *device)
|
||||
}
|
||||
|
||||
end:
|
||||
kfree(pathname);
|
||||
kfree(buffer.pointer);
|
||||
if (result)
|
||||
kfree(data);
|
||||
|
||||
@@ -272,25 +268,21 @@ int acpi_pci_bind(struct acpi_device *device)
|
||||
static int acpi_pci_unbind(struct acpi_device *device)
|
||||
{
|
||||
int result = 0;
|
||||
acpi_status status = AE_OK;
|
||||
struct acpi_pci_data *data = NULL;
|
||||
char *pathname = NULL;
|
||||
struct acpi_buffer buffer = { 0, NULL };
|
||||
acpi_status status;
|
||||
struct acpi_pci_data *data;
|
||||
struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL };
|
||||
|
||||
|
||||
if (!device || !device->parent)
|
||||
return -EINVAL;
|
||||
|
||||
pathname = kzalloc(ACPI_PATHNAME_MAX, GFP_KERNEL);
|
||||
if (!pathname)
|
||||
return -ENOMEM;
|
||||
status = acpi_get_name(device->handle, ACPI_FULL_PATHNAME, &buffer);
|
||||
if (ACPI_FAILURE(status))
|
||||
return -ENODEV;
|
||||
|
||||
buffer.length = ACPI_PATHNAME_MAX;
|
||||
buffer.pointer = pathname;
|
||||
acpi_get_name(device->handle, ACPI_FULL_PATHNAME, &buffer);
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Unbinding PCI device [%s]...\n",
|
||||
pathname));
|
||||
kfree(pathname);
|
||||
(char *) buffer.pointer));
|
||||
kfree(buffer.pointer);
|
||||
|
||||
status =
|
||||
acpi_get_data(device->handle, acpi_pci_data_handler,
|
||||
@@ -322,50 +314,44 @@ acpi_pci_bind_root(struct acpi_device *device,
|
||||
struct acpi_pci_id *id, struct pci_bus *bus)
|
||||
{
|
||||
int result = 0;
|
||||
acpi_status status = AE_OK;
|
||||
acpi_status status;
|
||||
struct acpi_pci_data *data = NULL;
|
||||
char *pathname = NULL;
|
||||
struct acpi_buffer buffer = { 0, NULL };
|
||||
|
||||
pathname = kzalloc(ACPI_PATHNAME_MAX, GFP_KERNEL);
|
||||
if (!pathname)
|
||||
return -ENOMEM;
|
||||
|
||||
buffer.length = ACPI_PATHNAME_MAX;
|
||||
buffer.pointer = pathname;
|
||||
struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL };
|
||||
|
||||
if (!device || !id || !bus) {
|
||||
kfree(pathname);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
data = kzalloc(sizeof(struct acpi_pci_data), GFP_KERNEL);
|
||||
if (!data) {
|
||||
kfree(pathname);
|
||||
if (!data)
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
data->id = *id;
|
||||
data->bus = bus;
|
||||
device->ops.bind = acpi_pci_bind;
|
||||
device->ops.unbind = acpi_pci_unbind;
|
||||
|
||||
acpi_get_name(device->handle, ACPI_FULL_PATHNAME, &buffer);
|
||||
status = acpi_get_name(device->handle, ACPI_FULL_PATHNAME, &buffer);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
kfree (data);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Binding PCI root bridge [%s] to "
|
||||
"%02x:%02x\n", pathname, id->segment, id->bus));
|
||||
"%04x:%02x\n", (char *)buffer.pointer,
|
||||
id->segment, id->bus));
|
||||
|
||||
status = acpi_attach_data(device->handle, acpi_pci_data_handler, data);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
ACPI_EXCEPTION((AE_INFO, status,
|
||||
"Unable to attach ACPI-PCI context to device %s",
|
||||
pathname));
|
||||
(char *)buffer.pointer));
|
||||
result = -ENODEV;
|
||||
goto end;
|
||||
}
|
||||
|
||||
end:
|
||||
kfree(pathname);
|
||||
kfree(buffer.pointer);
|
||||
if (result != 0)
|
||||
kfree(data);
|
||||
|
||||
|
||||
+130
-342
File diff suppressed because it is too large
Load Diff
@@ -71,9 +71,6 @@
|
||||
#define ACPI_EXPORT_SYMBOL(symbol) EXPORT_SYMBOL(symbol);
|
||||
#define strtoul simple_strtoul
|
||||
|
||||
/* Full namespace pathname length limit - arbitrary */
|
||||
#define ACPI_PATHNAME_MAX 256
|
||||
|
||||
#else /* !__KERNEL__ */
|
||||
|
||||
#include <stdarg.h>
|
||||
|
||||
@@ -131,22 +131,6 @@ extern int acpi_get_override_irq(int bus_irq, int *trigger, int *polarity);
|
||||
*/
|
||||
void acpi_unregister_gsi (u32 gsi);
|
||||
|
||||
struct acpi_prt_entry {
|
||||
struct list_head node;
|
||||
struct acpi_pci_id id;
|
||||
u8 pin;
|
||||
struct {
|
||||
acpi_handle handle;
|
||||
u32 index;
|
||||
} link;
|
||||
u32 irq;
|
||||
};
|
||||
|
||||
struct acpi_prt_list {
|
||||
int count;
|
||||
struct list_head entries;
|
||||
};
|
||||
|
||||
struct pci_dev;
|
||||
|
||||
int acpi_pci_irq_enable (struct pci_dev *dev);
|
||||
|
||||
Reference in New Issue
Block a user