ACPI: Fix a bug in parsing ACPI Memory24 resource
authorJiang Liu <jiang.liu@linux.intel.com>
Mon, 2 Feb 2015 02:42:54 +0000 (10:42 +0800)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Tue, 3 Feb 2015 21:27:19 +0000 (22:27 +0100)
According to ACPI spec 5, section 6.4.3.1 "24-Bit Memory Range Descriptor",
minimum, maximum and address_length field in struct acpi_resource_memory24
is in granularity of 256-bytes. So shift 8-bit left to get correct address.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/acpi/resource.c

index 7ce00a63f6957610f1f059edabf19d79ef0c56f6..5544c6d26f320d2d67066b94804ec1e1f1a3dc57 100644 (file)
@@ -90,8 +90,8 @@ bool acpi_dev_resource_memory(struct acpi_resource *ares, struct resource *res)
        switch (ares->type) {
        case ACPI_RESOURCE_TYPE_MEMORY24:
                memory24 = &ares->data.memory24;
-               acpi_dev_get_memresource(res, memory24->minimum,
-                                        memory24->address_length,
+               acpi_dev_get_memresource(res, memory24->minimum << 8,
+                                        memory24->address_length << 8,
                                         memory24->write_protect);
                break;
        case ACPI_RESOURCE_TYPE_MEMORY32: