Commit 162457f5 authored by Dan Williams's avatar Dan Williams Committed by Rafael J. Wysocki
Browse files

ACPI: APEI: EINJ: Do not fail einj_init() on faux_device_create() failure



CXL has a symbol dependency on einj_core.ko, so if einj_init() fails then
cxl_core.ko fails to load. Prior to the faux_device_create() conversion,
einj_probe() failures were tracked by the einj_initialized flag without
failing einj_init().

Revert to that behavior and always succeed einj_init() given there is no
way, and no pressing need, to discern faux device-create vs device-probe
failures.

This situation arose because CXL knows proper kernel named objects to
trigger errors against, but acpi-einj knows how to perform the error
injection. The injection mechanism is shared with non-CXL use cases. The
result is CXL now has a module dependency on einj-core.ko, and init/probe
failures are handled at runtime.

Fixes: 6cb9441b ("ACPI: APEI: EINJ: Transition to the faux device interface")
Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
Reviewed-by: default avatarBen Cheatham <benjamin.cheatham@amd.com>
Acked-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Link: https://patch.msgid.link/20250607033228.1475625-4-dan.j.williams@intel.com


Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent ff53a6e2
Loading
Loading
Loading
Loading
+3 −6
Original line number Diff line number Diff line
@@ -883,9 +883,8 @@ static int __init einj_init(void)
	}

	einj_dev = faux_device_create("acpi-einj", NULL, &einj_device_ops);
	if (!einj_dev)
		return -ENODEV;

	if (einj_dev)
		einj_initialized = true;

	return 0;
@@ -893,9 +892,7 @@ static int __init einj_init(void)

static void __exit einj_exit(void)
{
	if (einj_initialized)
	faux_device_destroy(einj_dev);

}

module_init(einj_init);