|
@@ -1178,7 +1178,7 @@ efi_initialize_iomem_resources(struct resource *code_resource,
|
|
|
efi_memory_desc_t *md;
|
|
|
u64 efi_desc_size;
|
|
|
char *name;
|
|
|
- unsigned long flags;
|
|
|
+ unsigned long flags, desc;
|
|
|
|
|
|
efi_map_start = __va(ia64_boot_param->efi_memmap);
|
|
|
efi_map_end = efi_map_start + ia64_boot_param->efi_memmap_size;
|
|
@@ -1193,6 +1193,8 @@ efi_initialize_iomem_resources(struct resource *code_resource,
|
|
|
continue;
|
|
|
|
|
|
flags = IORESOURCE_MEM | IORESOURCE_BUSY;
|
|
|
+ desc = IORES_DESC_NONE;
|
|
|
+
|
|
|
switch (md->type) {
|
|
|
|
|
|
case EFI_MEMORY_MAPPED_IO:
|
|
@@ -1207,14 +1209,17 @@ efi_initialize_iomem_resources(struct resource *code_resource,
|
|
|
if (md->attribute & EFI_MEMORY_WP) {
|
|
|
name = "System ROM";
|
|
|
flags |= IORESOURCE_READONLY;
|
|
|
- } else if (md->attribute == EFI_MEMORY_UC)
|
|
|
+ } else if (md->attribute == EFI_MEMORY_UC) {
|
|
|
name = "Uncached RAM";
|
|
|
- else
|
|
|
+ } else {
|
|
|
name = "System RAM";
|
|
|
+ flags |= IORESOURCE_SYSRAM;
|
|
|
+ }
|
|
|
break;
|
|
|
|
|
|
case EFI_ACPI_MEMORY_NVS:
|
|
|
name = "ACPI Non-volatile Storage";
|
|
|
+ desc = IORES_DESC_ACPI_NV_STORAGE;
|
|
|
break;
|
|
|
|
|
|
case EFI_UNUSABLE_MEMORY:
|
|
@@ -1224,6 +1229,7 @@ efi_initialize_iomem_resources(struct resource *code_resource,
|
|
|
|
|
|
case EFI_PERSISTENT_MEMORY:
|
|
|
name = "Persistent Memory";
|
|
|
+ desc = IORES_DESC_PERSISTENT_MEMORY;
|
|
|
break;
|
|
|
|
|
|
case EFI_RESERVED_TYPE:
|
|
@@ -1246,6 +1252,7 @@ efi_initialize_iomem_resources(struct resource *code_resource,
|
|
|
res->start = md->phys_addr;
|
|
|
res->end = md->phys_addr + efi_md_size(md) - 1;
|
|
|
res->flags = flags;
|
|
|
+ res->desc = desc;
|
|
|
|
|
|
if (insert_resource(&iomem_resource, res) < 0)
|
|
|
kfree(res);
|