-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ACPI: HMAT: refactor hmat_register_target_device to hmem_register_device
In preparation for exposing "Soft Reserved" memory ranges without an HMAT, move the hmem device registration to its own compilation unit and make the implementation generic. The generic implementation drops usage acpi_map_pxm_to_online_node() that was translating ACPI proximity domain values and instead relies on numa_map_to_online_node() to determine the numa node for the device. [joao.m.martins@oracle.com: CONFIG_DEV_DAX_HMEM_DEVICES should depend on CONFIG_DAX=y] Link: https://lkml.kernel.org/r/8f34727f-ec2d-9395-cb18-969ec8a5d0d4@oracle.com Signed-off-by: Dan Williams <dan.j.williams@intel.com> Signed-off-by: Joao Martins <joao.m.martins@oracle.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Cc: Andy Lutomirski <luto@kernel.org> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Ben Skeggs <bskeggs@redhat.com> Cc: Borislav Petkov <bp@alien8.de> Cc: Brice Goglin <Brice.Goglin@inria.fr> Cc: Catalin Marinas <catalin.marinas@arm.com> Cc: Daniel Vetter <daniel@ffwll.ch> Cc: Dave Hansen <dave.hansen@linux.intel.com> Cc: Dave Jiang <dave.jiang@intel.com> Cc: David Airlie <airlied@linux.ie> Cc: David Hildenbrand <david@redhat.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: "H. Peter Anvin" <hpa@zytor.com> Cc: Ingo Molnar <mingo@redhat.com> Cc: Ira Weiny <ira.weiny@intel.com> Cc: Jason Gunthorpe <jgg@mellanox.com> Cc: Jeff Moyer <jmoyer@redhat.com> Cc: Jia He <justin.he@arm.com> Cc: Joao Martins <joao.m.martins@oracle.com> Cc: Jonathan Cameron <Jonathan.Cameron@huawei.com> Cc: Michael Ellerman <mpe@ellerman.id.au> Cc: Mike Rapoport <rppt@linux.ibm.com> Cc: Paul Mackerras <paulus@ozlabs.org> Cc: Pavel Tatashin <pasha.tatashin@soleen.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Tom Lendacky <thomas.lendacky@amd.com> Cc: Vishal Verma <vishal.l.verma@intel.com> Cc: Wei Yang <richard.weiyang@linux.alibaba.com> Cc: Will Deacon <will@kernel.org> Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> Cc: Ard Biesheuvel <ardb@kernel.org> Cc: Bjorn Helgaas <bhelgaas@google.com> Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com> Cc: Hulk Robot <hulkci@huawei.com> Cc: Jason Yan <yanaijie@huawei.com> Cc: "Jérôme Glisse" <jglisse@redhat.com> Cc: Juergen Gross <jgross@suse.com> Cc: kernel test robot <lkp@intel.com> Cc: Randy Dunlap <rdunlap@infradead.org> Cc: Stefano Stabellini <sstabellini@kernel.org> Cc: Vivek Goyal <vgoyal@redhat.com> Link: https://lkml.kernel.org/r/159643096584.4062302.5035370788475153738.stgit@dwillia2-desk3.amr.corp.intel.com Link: https://lore.kernel.org/r/158318761484.2216124.2049322072599482736.stgit@dwillia2-desk3.amr.corp.intel.com Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
- Loading branch information
Dan Williams
authored and
Linus Torvalds
committed
Oct 14, 2020
1 parent
88e9a5b
commit c01044c
Showing
7 changed files
with
90 additions
and
65 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
# SPDX-License-Identifier: GPL-2.0 | ||
obj-$(CONFIG_DEV_DAX_HMEM) += dax_hmem.o | ||
obj-$(CONFIG_DEV_DAX_HMEM_DEVICES) += device.o | ||
|
||
dax_hmem-y := hmem.o |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
// SPDX-License-Identifier: GPL-2.0 | ||
#include <linux/platform_device.h> | ||
#include <linux/memregion.h> | ||
#include <linux/module.h> | ||
#include <linux/dax.h> | ||
#include <linux/mm.h> | ||
|
||
void hmem_register_device(int target_nid, struct resource *r) | ||
{ | ||
/* define a clean / non-busy resource for the platform device */ | ||
struct resource res = { | ||
.start = r->start, | ||
.end = r->end, | ||
.flags = IORESOURCE_MEM, | ||
}; | ||
struct platform_device *pdev; | ||
struct memregion_info info; | ||
int rc, id; | ||
|
||
rc = region_intersects(res.start, resource_size(&res), IORESOURCE_MEM, | ||
IORES_DESC_SOFT_RESERVED); | ||
if (rc != REGION_INTERSECTS) | ||
return; | ||
|
||
id = memregion_alloc(GFP_KERNEL); | ||
if (id < 0) { | ||
pr_err("memregion allocation failure for %pr\n", &res); | ||
return; | ||
} | ||
|
||
pdev = platform_device_alloc("hmem", id); | ||
if (!pdev) { | ||
pr_err("hmem device allocation failure for %pr\n", &res); | ||
goto out_pdev; | ||
} | ||
|
||
pdev->dev.numa_node = numa_map_to_online_node(target_nid); | ||
info = (struct memregion_info) { | ||
.target_node = target_nid, | ||
}; | ||
rc = platform_device_add_data(pdev, &info, sizeof(info)); | ||
if (rc < 0) { | ||
pr_err("hmem memregion_info allocation failure for %pr\n", &res); | ||
goto out_pdev; | ||
} | ||
|
||
rc = platform_device_add_resources(pdev, &res, 1); | ||
if (rc < 0) { | ||
pr_err("hmem resource allocation failure for %pr\n", &res); | ||
goto out_resource; | ||
} | ||
|
||
rc = platform_device_add(pdev); | ||
if (rc < 0) { | ||
dev_err(&pdev->dev, "device add failed for %pr\n", &res); | ||
goto out_resource; | ||
} | ||
|
||
return; | ||
|
||
out_resource: | ||
put_device(&pdev->dev); | ||
out_pdev: | ||
memregion_free(id); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters