Initialise rpi-firmware before clk-bcm2835
authorLuke Hinds <7058938+lukehinds@users.noreply.github.com>
Wed, 22 Jan 2020 16:03:00 +0000 (16:03 +0000)
committerPhil Elwell <pelwell@users.noreply.github.com>
Wed, 22 Jan 2020 16:03:00 +0000 (16:03 +0000)
The IMA (Integrity Measurement Architecture) looks for a TPM (Trusted
Platform Module) having been registered when it initialises; otherwise
it assumes there is no TPM. It has been observed on BCM2835 that IMA
is initialised before TPM, and that initialising the BCM2835 clock
driver before the firmware driver has the effect of reversing this
order.

Change the firmware driver to initialise at core_initcall, delaying the
BCM2835 clock driver to postcore_initcall.

See: https://github.com/raspberrypi/linux/issues/3291
     https://github.com/raspberrypi/linux/pull/3297

Signed-off-by: Luke Hinds <lhinds@redhat.com>
Co-authored-by: Phil Elwell <phil@raspberrypi.org>
drivers/clk/bcm/clk-bcm2835.c
drivers/firmware/raspberrypi.c

index 9dff41c..68917b3 100644 (file)
@@ -2388,7 +2388,7 @@ static int __init __bcm2835_clk_driver_init(void)
 {
        return platform_driver_register(&bcm2835_clk_driver);
 }
-core_initcall(__bcm2835_clk_driver_init);
+postcore_initcall(__bcm2835_clk_driver_init);
 
 MODULE_AUTHOR("Eric Anholt <eric@anholt.net>");
 MODULE_DESCRIPTION("BCM2835 clock driver");
index b61e89d..efb405c 100644 (file)
@@ -404,7 +404,7 @@ out2:
 out1:
        return ret;
 }
-subsys_initcall(rpi_firmware_init);
+core_initcall(rpi_firmware_init);
 
 static void __init rpi_firmware_exit(void)
 {