ACPICA: Resources: Provide common part for struct acpi_resource_address structures.
struct acpi_resource_address and struct acpi_resource_extended_address64 share substracts just at different offsets. To unify the parsing functions, OSPMs like Linux need a new ACPI_ADDRESS64_ATTRIBUTE as their substructs, so they can extract the shared data. This patch also synchronizes the structure changes to the Linux kernel. The usages are searched by matching the following keywords: 1. acpi_resource_address 2. acpi_resource_extended_address 3. ACPI_RESOURCE_TYPE_ADDRESS 4. ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS And we found and fixed the usages in the following files: arch/ia64/kernel/acpi-ext.c arch/ia64/pci/pci.c arch/x86/pci/acpi.c arch/x86/pci/mmconfig-shared.c drivers/xen/xen-acpi-memhotplug.c drivers/acpi/acpi_memhotplug.c drivers/acpi/pci_root.c drivers/acpi/resource.c drivers/char/hpet.c drivers/pnp/pnpacpi/rsparser.c drivers/hv/vmbus_drv.c Build tests are passed with defconfig/allnoconfig/allyesconfig and defconfig+CONFIG_ACPI=n. Original-by: Thomas Gleixner <tglx@linutronix.de> Original-by: Jiang Liu <jiang.liu@linux.intel.com> Signed-off-by: Lv Zheng <lv.zheng@intel.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:

committed by
Rafael J. Wysocki

parent
e044d8f92f
commit
a45de93eb1
@@ -231,23 +231,23 @@ static acpi_status resource_to_addr(struct acpi_resource *resource,
|
||||
case ACPI_RESOURCE_TYPE_MEMORY24:
|
||||
memory24 = &resource->data.memory24;
|
||||
addr->resource_type = ACPI_MEMORY_RANGE;
|
||||
addr->minimum = memory24->minimum;
|
||||
addr->address_length = memory24->address_length;
|
||||
addr->maximum = addr->minimum + addr->address_length - 1;
|
||||
addr->address.minimum = memory24->minimum;
|
||||
addr->address.address_length = memory24->address_length;
|
||||
addr->address.maximum = addr->address.minimum + addr->address.address_length - 1;
|
||||
return AE_OK;
|
||||
case ACPI_RESOURCE_TYPE_MEMORY32:
|
||||
memory32 = &resource->data.memory32;
|
||||
addr->resource_type = ACPI_MEMORY_RANGE;
|
||||
addr->minimum = memory32->minimum;
|
||||
addr->address_length = memory32->address_length;
|
||||
addr->maximum = addr->minimum + addr->address_length - 1;
|
||||
addr->address.minimum = memory32->minimum;
|
||||
addr->address.address_length = memory32->address_length;
|
||||
addr->address.maximum = addr->address.minimum + addr->address.address_length - 1;
|
||||
return AE_OK;
|
||||
case ACPI_RESOURCE_TYPE_FIXED_MEMORY32:
|
||||
fixed_memory32 = &resource->data.fixed_memory32;
|
||||
addr->resource_type = ACPI_MEMORY_RANGE;
|
||||
addr->minimum = fixed_memory32->address;
|
||||
addr->address_length = fixed_memory32->address_length;
|
||||
addr->maximum = addr->minimum + addr->address_length - 1;
|
||||
addr->address.minimum = fixed_memory32->address;
|
||||
addr->address.address_length = fixed_memory32->address_length;
|
||||
addr->address.maximum = addr->address.minimum + addr->address.address_length - 1;
|
||||
return AE_OK;
|
||||
case ACPI_RESOURCE_TYPE_ADDRESS16:
|
||||
case ACPI_RESOURCE_TYPE_ADDRESS32:
|
||||
@@ -256,7 +256,7 @@ static acpi_status resource_to_addr(struct acpi_resource *resource,
|
||||
if (ACPI_SUCCESS(status) &&
|
||||
(addr->resource_type == ACPI_MEMORY_RANGE ||
|
||||
addr->resource_type == ACPI_IO_RANGE) &&
|
||||
addr->address_length > 0) {
|
||||
addr->address.address_length > 0) {
|
||||
return AE_OK;
|
||||
}
|
||||
break;
|
||||
@@ -298,8 +298,8 @@ static acpi_status setup_resource(struct acpi_resource *acpi_res, void *data)
|
||||
} else
|
||||
return AE_OK;
|
||||
|
||||
start = addr.minimum + addr.translation_offset;
|
||||
orig_end = end = addr.maximum + addr.translation_offset;
|
||||
start = addr.address.minimum + addr.address.translation_offset;
|
||||
orig_end = end = addr.address.maximum + addr.address.translation_offset;
|
||||
|
||||
/* Exclude non-addressable range or non-addressable portion of range */
|
||||
end = min(end, (u64)iomem_resource.end);
|
||||
@@ -320,7 +320,7 @@ static acpi_status setup_resource(struct acpi_resource *acpi_res, void *data)
|
||||
res->flags = flags;
|
||||
res->start = start;
|
||||
res->end = end;
|
||||
info->res_offset[info->res_num] = addr.translation_offset;
|
||||
info->res_offset[info->res_num] = addr.address.translation_offset;
|
||||
info->res_num++;
|
||||
|
||||
if (!pci_use_crs)
|
||||
|
Reference in New Issue
Block a user