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: 6cb9441bfe ("ACPI: APEI: EINJ: Transition to the faux device interface")
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Reviewed-by: Ben Cheatham <benjamin.cheatham@amd.com>
Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Link: https://patch.msgid.link/20250607033228.1475625-4-dan.j.williams@intel.com
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
committed by
Rafael J. Wysocki
parent
ff53a6e247
commit
162457f585
@@ -883,19 +883,16 @@ static int __init einj_init(void)
|
||||
}
|
||||
|
||||
einj_dev = faux_device_create("acpi-einj", NULL, &einj_device_ops);
|
||||
if (!einj_dev)
|
||||
return -ENODEV;
|
||||
|
||||
einj_initialized = true;
|
||||
if (einj_dev)
|
||||
einj_initialized = true;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void __exit einj_exit(void)
|
||||
{
|
||||
if (einj_initialized)
|
||||
faux_device_destroy(einj_dev);
|
||||
|
||||
faux_device_destroy(einj_dev);
|
||||
}
|
||||
|
||||
module_init(einj_init);
|
||||
|
||||
Reference in New Issue
Block a user