Skip to content

Commit d9cdc3b

Browse files
committed
Merge tag 'powerpc-5.19-5' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux
Pull powerpc fix from Michael Ellerman: - On Power8 bare metal, fix creation of RNG platform devices, which are needed for the /dev/hwrng driver to probe correctly. Thanks to Jason A. Donenfeld, and Sachin Sant. * tag 'powerpc-5.19-5' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux: powerpc/powernv: delay rng platform device creation until later in boot
2 parents e5524c2 + 8875028 commit d9cdc3b

File tree

1 file changed

+10
-6
lines changed
  • arch/powerpc/platforms/powernv

1 file changed

+10
-6
lines changed

arch/powerpc/platforms/powernv/rng.c

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -176,12 +176,8 @@ static int __init pnv_get_random_long_early(unsigned long *v)
176176
NULL) != pnv_get_random_long_early)
177177
return 0;
178178

179-
for_each_compatible_node(dn, NULL, "ibm,power-rng") {
180-
if (rng_create(dn))
181-
continue;
182-
/* Create devices for hwrng driver */
183-
of_platform_device_create(dn, NULL, NULL);
184-
}
179+
for_each_compatible_node(dn, NULL, "ibm,power-rng")
180+
rng_create(dn);
185181

186182
if (!ppc_md.get_random_seed)
187183
return 0;
@@ -205,10 +201,18 @@ void __init pnv_rng_init(void)
205201

206202
static int __init pnv_rng_late_init(void)
207203
{
204+
struct device_node *dn;
208205
unsigned long v;
206+
209207
/* In case it wasn't called during init for some other reason. */
210208
if (ppc_md.get_random_seed == pnv_get_random_long_early)
211209
pnv_get_random_long_early(&v);
210+
211+
if (ppc_md.get_random_seed == powernv_get_random_long) {
212+
for_each_compatible_node(dn, NULL, "ibm,power-rng")
213+
of_platform_device_create(dn, NULL, NULL);
214+
}
215+
212216
return 0;
213217
}
214218
machine_subsys_initcall(powernv, pnv_rng_late_init);

0 commit comments

Comments
 (0)