odroid xu4 won't boot with kernel parameter 'quiet'
-
- Posts: 6
- Joined: Wed Feb 08, 2017 7:05 am
- languages_spoken: english
- ODROIDs: XU4
- Has thanked: 0
- Been thanked: 0
- Contact:
odroid xu4 won't boot with kernel parameter 'quiet'
Hello everyone,
We noticed about half of our emmcs not booting if the kernel parameter 'quiet' is passed as a boot argument.
I also upgraded to the latest kernel (ubuntu image) and the same issue was present.
To replicate the bug:
in /medit/boot/boot.ini
setenv bootargs ... <--- add quiet, sync and reboot
In the serial output, I get:
Starting kernel ...
[ 0.148403] CPU4: Spectre v2: firmware did not set auxiliary control register IBE bit, system vulnerable
[ 0.168373] CPU5: Spectre v2: firmware did not set auxiliary control register IBE bit, system vulnerable
[ 0.176713] CPU6: Spectre v2: firmware did not set auxiliary control register IBE bit, system vulnerable
[ 0.184697] CPU7: Spectre v2: firmware did not set auxiliary control register IBE bit, system vulnerable
[ 1.167349] exynos-hdmi 14530000.hdmi: Failed to get supply 'vdd': -517
[ 1.182343] devfreq devfreq0: Couldn't update frequency transition information.
And that's it, board hangs in there; fan is always on, blue led is turned off.
My guess this is some kind of a timing issue masked by kernel delays during the boot logging ? Any clues on how to fix this ?
Cheers,
b0b0
We noticed about half of our emmcs not booting if the kernel parameter 'quiet' is passed as a boot argument.
I also upgraded to the latest kernel (ubuntu image) and the same issue was present.
To replicate the bug:
in /medit/boot/boot.ini
setenv bootargs ... <--- add quiet, sync and reboot
In the serial output, I get:
Starting kernel ...
[ 0.148403] CPU4: Spectre v2: firmware did not set auxiliary control register IBE bit, system vulnerable
[ 0.168373] CPU5: Spectre v2: firmware did not set auxiliary control register IBE bit, system vulnerable
[ 0.176713] CPU6: Spectre v2: firmware did not set auxiliary control register IBE bit, system vulnerable
[ 0.184697] CPU7: Spectre v2: firmware did not set auxiliary control register IBE bit, system vulnerable
[ 1.167349] exynos-hdmi 14530000.hdmi: Failed to get supply 'vdd': -517
[ 1.182343] devfreq devfreq0: Couldn't update frequency transition information.
And that's it, board hangs in there; fan is always on, blue led is turned off.
My guess this is some kind of a timing issue masked by kernel delays during the boot logging ? Any clues on how to fix this ?
Cheers,
b0b0
-
- Posts: 6
- Joined: Wed Feb 08, 2017 7:05 am
- languages_spoken: english
- ODROIDs: XU4
- Has thanked: 0
- Been thanked: 0
- Contact:
Re: odroid xu4 won't boot with kernel parameter 'quiet'
More updates:
Turns out, with the upgraded kernel, on a cold boot it works. However, the system hangs during a reboot (u-boot / kernel loads and starts but hangs) in all the cases.
Very strange bug.
Turns out, with the upgraded kernel, on a cold boot it works. However, the system hangs during a reboot (u-boot / kernel loads and starts but hangs) in all the cases.
Very strange bug.
- odroid
- Site Admin
- Posts: 41084
- Joined: Fri Feb 22, 2013 11:14 pm
- languages_spoken: English, Korean
- ODROIDs: ODROID
- Has thanked: 3194 times
- Been thanked: 1753 times
- Contact:
-
- Posts: 1584
- Joined: Fri Oct 02, 2015 1:44 pm
- languages_spoken: english
- ODROIDs: .
- Has thanked: 179 times
- Been thanked: 211 times
- Contact:
Re: odroid xu4 won't boot with kernel parameter 'quiet'
Hi b0b0tiken,
I've tried this issue and can easily reproduce it with "quiet" option.
I think it could be related to tiny DELAY caused by debug logs during booting and it can affect drivers' init process.
And I found this booting lock-up is caused by abnormal initialization of regulator driver during booting (especially reboot).
1. Kernel code : linux/drivers/regulator/core.c
https://github.com/hardkernel/linux/blo ... ore.c#L912
2. Booting log
To verify my assumption, I tried the following temporary ways.
(1) I modified that log before _regulator_do_set_voltage as rdev_err that shows logs via serial console ( make some delay )
or
(2) added some delay at the line, mdelay(10)
and then I can confirm booting works OK with "quiet" option for both of cold and warm booting.
It looks that some ramp_delay for regulator_enable_delay may be needed to run XU4 more stably.
As I checked the logic so far, there is no ramp_delay for regulator driver of exynos5422 XU4.
I'm planning to look into it more and make a patch the end of this week.
I've tried this issue and can easily reproduce it with "quiet" option.
I think it could be related to tiny DELAY caused by debug logs during booting and it can affect drivers' init process.
And I found this booting lock-up is caused by abnormal initialization of regulator driver during booting (especially reboot).
1. Kernel code : linux/drivers/regulator/core.c
https://github.com/hardkernel/linux/blo ... ore.c#L912
Code: Select all
if (target_min != current_uV || target_max != current_uV) {
rdev_info(rdev, "Bringing %duV into %d-%duV\n",
current_uV, target_min, target_max)
ret = _regulator_do_set_voltage(
rdev, target_min, target_max);
if (ret < 0) {
rdev_err(rdev,
"failed to apply %d-%duV constraint(%d)\n",
target_min, target_max, ret);
return ret;
}
}
Code: Select all
[ 1.300233] i2c /dev entries driver
[ 1.315758] vdd_ldo9: Bringing 3300000uV into 3000000-3000000uV
[ 1.333584] vdd_sd: Bringing 3300000uV into 2800000-2800000uV
[ 1.353212] vdd_ldo30: Bringing 1800000uV into 3300000-3300000uV
[ 1.381239] vdd_1.8v_ldo: Bringing 1850000uV into 1500000-1500000uV
(1) I modified that log before _regulator_do_set_voltage as rdev_err that shows logs via serial console ( make some delay )
or
(2) added some delay at the line, mdelay(10)
Code: Select all
if (target_min != current_uV || target_max != current_uV) {
rdev_info(rdev, "Bringing %duV into %d-%duV\n",
current_uV, target_min, target_max)
/* just for test */
mdelay(10);
It looks that some ramp_delay for regulator_enable_delay may be needed to run XU4 more stably.
As I checked the logic so far, there is no ramp_delay for regulator driver of exynos5422 XU4.
Code: Select all
Starting kernel ...
[ 0.148390] CPU4: Spectre v2: firmware did not set auxiliary control register IBE bit, system vulnerable
[ 0.168368] CPU5: Spectre v2: firmware did not set auxiliary control register IBE bit, system vulnerable
[ 0.176687] CPU6: Spectre v2: firmware did not set auxiliary control register IBE bit, system vulnerable
[ 0.184677] CPU7: Spectre v2: firmware did not set auxiliary control register IBE bit, system vulnerable
[ 1.184757] exynos-hdmi 14530000.hdmi: Failed to get supply 'vdd': -517
[ 1.199672] devfreq devfreq0: Couldn't update frequency transition information.
(<<------- here, OK)
[ 2.482327] s5p_mfc_load_firmware:73: Firmware is not present in the /lib/firmware directory nor compiled in kernel
[ 2.659931] OF: graph: no port node found in /soc/hdmi@14530000
e2fsck 1.44.1 (24-Mar-2018)
rootfs: clean, 172196/475136 files, 1317338/1875456 blocks
[FAILED] Failed to start Load Kernel Modules.
See 'systemctl status systemd-modules-load.service' for details.
[ OK ] Started Remount Root and Kernel File Systems.
Starting Load/Save Random Seed...
Starting Apply Kernel Variables...
Mounting Kernel Configuration File System...
Starting Create Static Device Nodes in /dev...
[ OK ] Started Set the console keyboard layout.
[ OK ] Started Load/Save Random Seed.
[ OK ] Started Apply Kernel Variables.
-
- Posts: 1584
- Joined: Fri Oct 02, 2015 1:44 pm
- languages_spoken: english
- ODROIDs: .
- Has thanked: 179 times
- Been thanked: 211 times
- Contact:
Re: odroid xu4 won't boot with kernel parameter 'quiet'
Hi b0b0tiken,
Here are some patches.
[ 1 ] Add ramp_delay for DCDC
This is a patch which can activate ramp_delay for buck1~4 and 6
and I've confirmed this fixes abnormal booting with quiet option.
[ 2 ] Add enable_time
Actually, based on my first approach using "mdelay", I thought that also regulator "enable_time" can be a solution, not "ramp_delay".
A bit different approach.
https://www.kernel.org/doc/html/v4.11/d ... lator.html
And this approach also can fix abnormal booting issue.
But in this case, adding enable_time for BUCK has no benefit.
Only enable_time for LDO works to remove this issue.
If you have available time, could you test these patches?
I attaches patch files.
Both of two approaches can fix this issue.
To narrow the cause and pick a better one, let's look into more and confirm it.
Here are some patches.
[ 1 ] Add ramp_delay for DCDC
This is a patch which can activate ramp_delay for buck1~4 and 6
and I've confirmed this fixes abnormal booting with quiet option.
Code: Select all
diff --git a/arch/arm/boot/dts/exynos5422-odroid-core.dtsi b/arch/arm/boot/dts/exynos5422-odroid-core.dtsi
index 6277562..78f8c44 100644
--- a/arch/arm/boot/dts/exynos5422-odroid-core.dtsi
+++ b/arch/arm/boot/dts/exynos5422-odroid-core.dtsi
@@ -307,6 +307,7 @@
regulator-max-microvolt = <1300000>;
regulator-always-on;
regulator-boot-on;
+ regulator-ramp-delay = <12500>;
};
buck2_reg: BUCK2 {
@@ -315,6 +316,7 @@
regulator-max-microvolt = <1500000>;
regulator-always-on;
regulator-boot-on;
+ regulator-ramp-delay = <12500>;
};
buck3_reg: BUCK3 {
@@ -323,6 +325,7 @@
regulator-max-microvolt = <1400000>;
regulator-always-on;
regulator-boot-on;
+ regulator-ramp-delay = <12500>;
};
buck4_reg: BUCK4 {
@@ -331,6 +334,7 @@
regulator-max-microvolt = <1400000>;
regulator-always-on;
regulator-boot-on;
+ regulator-ramp-delay = <12500>;
};
buck5_reg: BUCK5 {
@@ -347,6 +351,7 @@
regulator-max-microvolt = <1500000>;
regulator-always-on;
regulator-boot-on;
+ regulator-ramp-delay = <12500>;
};
buck7_reg: BUCK7 {
Actually, based on my first approach using "mdelay", I thought that also regulator "enable_time" can be a solution, not "ramp_delay".
A bit different approach.
https://www.kernel.org/doc/html/v4.11/d ... lator.html
And this approach also can fix abnormal booting issue.
Code: Select all
#define regulator_desc_s2mps11_ldo(num, step) { \
.name = "LDO"#num, \
.id = S2MPS11_LDO##num, \
.ops = &s2mps11_ldo_ops, \
.type = REGULATOR_VOLTAGE, \
.owner = THIS_MODULE, \
.ramp_delay = RAMP_DELAY_12_MVUS, \
.min_uV = MIN_800_MV, \
.uV_step = step, \
.n_voltages = S2MPS11_LDO_N_VOLTAGES, \
.vsel_reg = S2MPS11_REG_L1CTRL + num - 1, \
.vsel_mask = S2MPS11_LDO_VSEL_MASK, \
.enable_reg = S2MPS11_REG_L1CTRL + num - 1, \
.enable_mask = S2MPS11_ENABLE_MASK, \
.enable_time = 10 \
}
#define regulator_desc_s2mps11_buck1_4(num) { \
.name = "BUCK"#num, \
.id = S2MPS11_BUCK##num, \
.ops = &s2mps11_buck_ops, \
.type = REGULATOR_VOLTAGE, \
.owner = THIS_MODULE, \
.min_uV = MIN_600_MV, \
.uV_step = STEP_6_25_MV, \
.n_voltages = S2MPS11_BUCK_N_VOLTAGES, \
.ramp_delay = S2MPS11_RAMP_DELAY, \
.vsel_reg = S2MPS11_REG_B1CTRL2 + (num - 1) * 2, \
.vsel_mask = S2MPS11_BUCK_VSEL_MASK, \
.enable_reg = S2MPS11_REG_B1CTRL1 + (num - 1) * 2, \
.enable_mask = S2MPS11_ENABLE_MASK \
}
Code: Select all
diff --git a/drivers/regulator/s2mps11.c b/drivers/regulator/s2mps11.c
index 9e3f078..0a3d9e4 100755
--- a/drivers/regulator/s2mps11.c
+++ b/drivers/regulator/s2mps11.c
@@ -275,7 +275,8 @@
.vsel_reg = S2MPS11_REG_L1CTRL + num - 1, \
.vsel_mask = S2MPS11_LDO_VSEL_MASK, \
.enable_reg = S2MPS11_REG_L1CTRL + num - 1, \
- .enable_mask = S2MPS11_ENABLE_MASK \
+ .enable_mask = S2MPS11_ENABLE_MASK, \
+ .enable_time = 10 \
}
#define regulator_desc_s2mps11_buck1_4(num) { \
Only enable_time for LDO works to remove this issue.
If you have available time, could you test these patches?
I attaches patch files.
Both of two approaches can fix this issue.
To narrow the cause and pick a better one, let's look into more and confirm it.

- Attachments
-
- 0002_xu4_add_enable_time_for_ldo.diff.zip
- (664 Bytes) Downloaded 236 times
-
- 0001_xu4_add_ramp_delay.diff.zip
- (661 Bytes) Downloaded 238 times
- nicolasvila
- Posts: 7
- Joined: Thu Aug 04, 2016 11:23 pm
- languages_spoken: french, english
- ODROIDs: U3, XU4
- Location: Toulouse, France
- Has thanked: 0
- Been thanked: 0
- Contact:
Re: odroid xu4 won't boot with kernel parameter 'quiet'
Hi, I'm facing the issue and potentially some other parameters are causing issues. Adding "quiet" makes reboot impossible and only cold boot works. Adding "loglevel=3" prevents from rebooting too, but cold boot also work. I don't know if it is related or not.
Is there a way to update the PKGBUILD?
Is there a way to update the PKGBUILD?
-
- Posts: 31
- Joined: Sat Apr 23, 2016 10:56 am
- languages_spoken: English, Spanish, Estonian
- ODROIDs: 5 x ODROID XU4
- Location: Tallinn, Estonia
- Has thanked: 0
- Been thanked: 0
- Contact:
Re: odroid xu4 won't boot with kernel parameter 'quiet'
Same problem here.
Has anyone found a workaround that doesn't require manual kernel patching?
Has anyone found a workaround that doesn't require manual kernel patching?
-
- Posts: 3804
- Joined: Fri May 08, 2015 9:12 am
- languages_spoken: english
- ODROIDs: U-2,U3+,,XU-3,,XU3-LITE,,XU-4
C1+,,C-2,,,n2+2G and n2 4G
cloudshell I and shell II
N-1,,N-2,...other odroid acc`s as well..vu7 etc..all sorts of sbc`s these days - Has thanked: 69 times
- Been thanked: 52 times
- Contact:
Re: odroid xu4 won't boot with kernel parameter 'quiet'
if you have another board try the media on that board you may have a hardware fault
quiet should not be doing what fault your describing or flash another sd-card or what ever media you are using..your image may be broken some where...
pss dont have your machine on the web when flashing..nothing on the web is 100 % secure...
several cards leads me to think of a faulty flash image to start with...or maybe your writing system somewhere...electronics can be quite finicky at times..go to another place to down load your flashing image
in the first place in my o/p there should be no need for the patches...there is an underlying issue..i dont know exactly but the patches should not be necessary..although need in this case like i stated in the latter ..on this sentence///
only keaves 2 options hard ware or software..look out for spikes and so on maybe a un filterd power supply try changing for one with better regulation and mains filtering etc..etc..
quiet should not be doing what fault your describing or flash another sd-card or what ever media you are using..your image may be broken some where...
pss dont have your machine on the web when flashing..nothing on the web is 100 % secure...
several cards leads me to think of a faulty flash image to start with...or maybe your writing system somewhere...electronics can be quite finicky at times..go to another place to down load your flashing image
in the first place in my o/p there should be no need for the patches...there is an underlying issue..i dont know exactly but the patches should not be necessary..although need in this case like i stated in the latter ..on this sentence///
only keaves 2 options hard ware or software..look out for spikes and so on maybe a un filterd power supply try changing for one with better regulation and mains filtering etc..etc..
necessity the mother of all creation and invention..!!!..check out the world ...long live rock and roll.....
-
- Posts: 31
- Joined: Sat Apr 23, 2016 10:56 am
- languages_spoken: English, Spanish, Estonian
- ODROIDs: 5 x ODROID XU4
- Location: Tallinn, Estonia
- Has thanked: 0
- Been thanked: 0
- Contact:
Re: odroid xu4 won't boot with kernel parameter 'quiet'
Hi @phaseshifter!
Unfortunately, this is a reproducible issue on the XU4, not just a one-off (e.g. bad PSU). You could probably try it yourself.
In the end, I applied the kernel patch from above and now everything seems to work fine.
Unfortunately, this is a reproducible issue on the XU4, not just a one-off (e.g. bad PSU). You could probably try it yourself.
In the end, I applied the kernel patch from above and now everything seems to work fine.
Who is online
Users browsing this forum: No registered users and 1 guest