ARM: fix amba_get_enable_vcore()'s handling of probe deferral
PATCH 1/1 ARM: fix amba_get_enable_vcore()'s handling of probe deferral
From: Domenico Andreoli <[email protected]>
With v3.4-rc1 my board's console started to have problems. earlyprintk revealed that the PL011 serial driver deferred the initialization and never attempted it again. This resulted in console not being bound to any physical device.
The error in probing the serial was due to amba_get_enable_vcore() not ignoring the -EPROBE_DEFER got from regulator_get(), which has been recently updated to ask for probe deferral in case the regulator is not available (yet).
This fix makes amba_get_enable_vcore() consistently handle the new -EPROBE_DEFER error case.
--- drivers/amba/bus.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/amba/bus.c +1 -1
@@ -363,7 +363,7 @@ static int amba_get_enable_vcore(structif (IS_ERR (vcore)) {/* It is OK not to supply a vcore regulator */ -if (PTR_ERR (vcore) == -ENODEV ) +if (PTR_ERR (vcore) == -EPROBE_DEFER )return 0 ;return PTR_ERR (vcore); }
PATCH 1/1 ARM: fix amba_get_enable_vcore()'s handling of probe deferral
Quoted 7 lines · Domenico Andreoli
From: Domenico Andreoli <[email protected]>
With v3.4-rc1 my board's console started to have problems. earlyprintk revealed that the PL011 serial driver deferred the initialization and never attempted it again. This resulted in console not being bound to any physical device.
Quoted 7 lines
The error in probing the serial was due to
amba_get_enable_vcore()not ignoring the -EPROBE_DEFER got fromregulator_get(), which has been recently updated to ask for probe deferral in case the regulator is not available (yet).This fix makes
amba_get_enable_vcore()consistently handle the new -EPROBE_DEFER error case.
As discussed in the other thread where Shawn proposed the same fix this is not a good fix (and the original code is not a good idea either), it makes things very dependant on probe ordering which is fragile and prone to error. With the code as-is platforms not using this feature really should be stubbing out the regulator rather than ignoring failures to acquire the regulator.
Russell just applied a patch removing this feature entirely (in favour of implementing it in power domains on platforms that want it) which avoids these issues.
PATCH 1/1 ARM: fix amba_get_enable_vcore()'s handling of probe deferral
Quoted 23 lines · Mark Brown
Quoted 7 lines · Domenico Andreoli
From: Domenico Andreoli <[email protected]>
With v3.4-rc1 my board's console started to have problems. earlyprintk revealed that the PL011 serial driver deferred the initialization and never attempted it again. This resulted in console not being bound to any physical device.
Quoted 7 lines
The error in probing the serial was due to
amba_get_enable_vcore()not ignoring the -EPROBE_DEFER got fromregulator_get(), which has been recently updated to ask for probe deferral in case the regulator is not available (yet).This fix makes
amba_get_enable_vcore()consistently handle the new -EPROBE_DEFER error case.As discussed in the other thread where Shawn proposed the same fix this is not a good fix (and the original code is not a good idea either), it makes things very dependant on probe ordering which is fragile and prone to error. With the code as-is platforms not using this feature really should be stubbing out the regulator rather than ignoring failures to acquire the regulator.
Quoted 3 lines
Russell just applied a patch removing this feature entirely (in favour of implementing it in power domains on platforms that want it) which avoids these issues.
Yes, I should have spent few minutes reading the ml instead of digging for a night into the code - but my board had also other issues ;)
thanks,
Domenico