mirror of
https://github.com/torvalds/linux.git
synced 2026-05-12 16:18:45 +02:00
dax/hmem: Request cxl_acpi and cxl_pci before walking Soft Reserved ranges
Ensure cxl_acpi has published CXL Window resources before HMEM walks Soft
Reserved ranges.
Replace MODULE_SOFTDEP("pre: cxl_acpi") with an explicit, synchronous
request_module("cxl_acpi"). MODULE_SOFTDEP() only guarantees eventual
loading, it does not enforce that the dependency has finished init
before the current module runs. This can cause HMEM to start before
cxl_acpi has populated the resource tree, breaking detection of overlaps
between Soft Reserved and CXL Windows.
Also, request cxl_pci before HMEM walks Soft Reserved ranges. Unlike
cxl_acpi, cxl_pci attach is asynchronous and creates dependent devices
that trigger further module loads. Asynchronous probe flushing
(wait_for_device_probe()) is added later in the series in a deferred
context before HMEM makes ownership decisions for Soft Reserved ranges.
Add an additional explicit Kconfig ordering so that CXL_ACPI and CXL_PCI
must be initialized before DEV_DAX_HMEM. This prevents HMEM from consuming
Soft Reserved ranges before CXL drivers have had a chance to claim them.
Signed-off-by: Smita Koralahalli <Smita.KoralahalliChannabasappa@amd.com>
Reviewed-by: Dave Jiang <dave.jiang@intel.com>
Reviewed-by: Jonathan Cameron <jonathan.cameron@huawei.com>
Reviewed-by: Alison Schofield <alison.schofield@intel.com>
Tested-by: Tomasz Wolski <tomasz.wolski@fujitsu.com>
Link: https://patch.msgid.link/20260322195343.206900-4-Smita.KoralahalliChannabasappa@amd.com
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: Dave Jiang <dave.jiang@intel.com>
This commit is contained in:
parent
116be1e112
commit
7b4bcaadfe
|
|
@ -48,6 +48,8 @@ config DEV_DAX_CXL
|
|||
tristate "CXL DAX: direct access to CXL RAM regions"
|
||||
depends on CXL_BUS && CXL_REGION && DEV_DAX
|
||||
default CXL_REGION && DEV_DAX
|
||||
depends on CXL_ACPI >= DEV_DAX_HMEM
|
||||
depends on CXL_PCI >= DEV_DAX_HMEM
|
||||
help
|
||||
CXL RAM regions are either mapped by platform-firmware
|
||||
and published in the initial system-memory map as "System RAM", mapped
|
||||
|
|
|
|||
|
|
@ -145,6 +145,16 @@ static __init int dax_hmem_init(void)
|
|||
{
|
||||
int rc;
|
||||
|
||||
/*
|
||||
* Ensure that cxl_acpi and cxl_pci have a chance to kick off
|
||||
* CXL topology discovery at least once before scanning the
|
||||
* iomem resource tree for IORES_DESC_CXL resources.
|
||||
*/
|
||||
if (IS_ENABLED(CONFIG_DEV_DAX_CXL)) {
|
||||
request_module("cxl_acpi");
|
||||
request_module("cxl_pci");
|
||||
}
|
||||
|
||||
rc = platform_driver_register(&dax_hmem_platform_driver);
|
||||
if (rc)
|
||||
return rc;
|
||||
|
|
@ -165,13 +175,6 @@ static __exit void dax_hmem_exit(void)
|
|||
module_init(dax_hmem_init);
|
||||
module_exit(dax_hmem_exit);
|
||||
|
||||
/* Allow for CXL to define its own dax regions */
|
||||
#if IS_ENABLED(CONFIG_CXL_REGION)
|
||||
#if IS_MODULE(CONFIG_CXL_ACPI)
|
||||
MODULE_SOFTDEP("pre: cxl_acpi");
|
||||
#endif
|
||||
#endif
|
||||
|
||||
MODULE_ALIAS("platform:hmem*");
|
||||
MODULE_ALIAS("platform:hmem_platform*");
|
||||
MODULE_DESCRIPTION("HMEM DAX: direct access to 'specific purpose' memory");
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user