Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d37a14bb authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'core-resources-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull ram resource handling changes from Ingo Molnar:
 "Core kernel resource handling changes to support NVDIMM error
  injection.

  This tree introduces a new I/O resource type, IORESOURCE_SYSTEM_RAM,
  for System RAM while keeping the current IORESOURCE_MEM type bit set
  for all memory-mapped ranges (including System RAM) for backward
  compatibility.

  With this resource flag it no longer takes a strcmp() loop through the
  resource tree to find "System RAM" resources.

  The new resource type is then used to extend ACPI/APEI error injection
  facility to also support NVDIMM"

* 'core-resources-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  ACPI/EINJ: Allow memory error injection to NVDIMM
  resource: Kill walk_iomem_res()
  x86/kexec: Remove walk_iomem_res() call with GART type
  x86, kexec, nvdimm: Use walk_iomem_res_desc() for iomem search
  resource: Add walk_iomem_res_desc()
  memremap: Change region_intersects() to take @flags and @desc
  arm/samsung: Change s3c_pm_run_res() to use System RAM type
  resource: Change walk_system_ram() to use System RAM type
  drivers: Initialize resource entry to zero
  xen, mm: Set IORESOURCE_SYSTEM_RAM to System RAM
  kexec: Set IORESOURCE_SYSTEM_RAM for System RAM
  arch: Set IORESOURCE_SYSTEM_RAM flag for System RAM
  ia64: Set System RAM type and descriptor
  x86/e820: Set System RAM type and descriptor
  resource: Add I/O resource descriptor
  resource: Handle resource flags properly
  resource: Add System RAM resource type
parents b562e44f bc94b996
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -176,13 +176,13 @@ static struct resource mem_res[] = {
		.name = "Kernel code",
		.start = 0,
		.end = 0,
		.flags = IORESOURCE_MEM
		.flags = IORESOURCE_SYSTEM_RAM
	},
	{
		.name = "Kernel data",
		.start = 0,
		.end = 0,
		.flags = IORESOURCE_MEM
		.flags = IORESOURCE_SYSTEM_RAM
	}
};

@@ -851,7 +851,7 @@ static void __init request_standard_resources(const struct machine_desc *mdesc)
		res->name  = "System RAM";
		res->start = __pfn_to_phys(memblock_region_memory_base_pfn(region));
		res->end = __pfn_to_phys(memblock_region_memory_end_pfn(region)) - 1;
		res->flags = IORESOURCE_MEM | IORESOURCE_BUSY;
		res->flags = IORESOURCE_SYSTEM_RAM | IORESOURCE_BUSY;

		request_resource(&iomem_resource, res);

+2 −2
Original line number Diff line number Diff line
@@ -53,8 +53,8 @@ static void s3c_pm_run_res(struct resource *ptr, run_fn_t fn, u32 *arg)
		if (ptr->child != NULL)
			s3c_pm_run_res(ptr->child, fn, arg);

		if ((ptr->flags & IORESOURCE_MEM) &&
		    strcmp(ptr->name, "System RAM") == 0) {
		if ((ptr->flags & IORESOURCE_SYSTEM_RAM)
				== IORESOURCE_SYSTEM_RAM) {
			S3C_PMDBG("Found system RAM at %08lx..%08lx\n",
				  (unsigned long)ptr->start,
				  (unsigned long)ptr->end);
+3 −3
Original line number Diff line number Diff line
@@ -73,13 +73,13 @@ static struct resource mem_res[] = {
		.name = "Kernel code",
		.start = 0,
		.end = 0,
		.flags = IORESOURCE_MEM
		.flags = IORESOURCE_SYSTEM_RAM
	},
	{
		.name = "Kernel data",
		.start = 0,
		.end = 0,
		.flags = IORESOURCE_MEM
		.flags = IORESOURCE_SYSTEM_RAM
	}
};

@@ -210,7 +210,7 @@ static void __init request_standard_resources(void)
		res->name  = "System RAM";
		res->start = __pfn_to_phys(memblock_region_memory_base_pfn(region));
		res->end = __pfn_to_phys(memblock_region_memory_end_pfn(region)) - 1;
		res->flags = IORESOURCE_MEM | IORESOURCE_BUSY;
		res->flags = IORESOURCE_SYSTEM_RAM | IORESOURCE_BUSY;

		request_resource(&iomem_resource, res);

+3 −3
Original line number Diff line number Diff line
@@ -49,13 +49,13 @@ static struct resource __initdata kernel_data = {
	.name	= "Kernel data",
	.start	= 0,
	.end	= 0,
	.flags	= IORESOURCE_MEM,
	.flags	= IORESOURCE_SYSTEM_RAM,
};
static struct resource __initdata kernel_code = {
	.name	= "Kernel code",
	.start	= 0,
	.end	= 0,
	.flags	= IORESOURCE_MEM,
	.flags	= IORESOURCE_SYSTEM_RAM,
	.sibling = &kernel_data,
};

@@ -134,7 +134,7 @@ add_physical_memory(resource_size_t start, resource_size_t end)
	new->start = start;
	new->end = end;
	new->name = "System RAM";
	new->flags = IORESOURCE_MEM;
	new->flags = IORESOURCE_SYSTEM_RAM;

	*pprev = new;
}
+10 −3
Original line number Diff line number Diff line
@@ -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);
Loading