firmware
firmware copied to clipboard
Any Linux distro fails to install on Lenovo Thinkpad 11e: mmc0: timeout waiting for hardware interrupt
Hello! Hopefully this is the right place for this, if not please let me know and I'll continue my search elsewhere!
I've been trying for the past few months to get some form of Linux installed on my Chromebook (Lenovo Thinkpad 11e Yoga), but no matter what I try, it always has issues with the integrated emmc. Windows installs perfectly fine, ran it off of the emmc for a couple weeks with no drive issues. However, when I try and install any linux distro, I get this message:
mmc0: timeout waiting for hardware interrupt
and a state dump. I can install to the SD card slot (mmc1) without issue - just the integrated one that has problems.
I'm running it off an arch USB at the moment, I will be happy to provide any more info if necessary!
what board name is shown in the UEFI firmware header?
Possibly this is what you're talking about:
Lenovo Thinkpad 11e/Yoga Chromebook (G3) ()
since that's what the UEFI header says, unless I'm mistaken on what you're referring to there.
(upon looking further it seems that other people usually have the board name where the empty parenthesis are on mine...)
it doesn't say ULTIMA inside the parentheses? odd.
I don't know why you'd be getting eMMC errors unless the eMMC is dying. Assuming you're trying to boot a relatively recent distro?
Nope, just an empty set of parentheses. Tried doing it in the linux terminal with dmidecode too, but most slots were empty, if that matters.
It works fine on chromeOS, unless it's just hiding errors from me. It's the the arch from 2 days ago, yesterday's galliumOS release, Ubuntu 20.04, and the most recent CloudReady.
The drive's only ~4 years old by now, so I don't know how it would be dying - is there any way to check that to be sure, though? All I see are disk/ssd tests.
Also, thought it might be worth a mention that I tried to install neverware cloudready today it it was throwing errors about a bad GPT partition table, but never gave me the emmc timeout message.
edit: wait, is this MORPHIUS and you're using RW_LEGACY/AltFw? If so, that makes sense, and nothing can be done currently other than adding a NVMe drive as that works properly
Since I've had this since 2019, I don't believe it's a morphius. Going off of this chart it's about a year too early. (sorry for all the editing with the dates, I had to figure out when I got this)
Also, just since you had said so initially, I've done this a couple of times and both times just given up on it and gone back to chromeOS. No trouble there. I have an old photo of the boot screen from an earlier try and it had the same thing, empty parentheses.
when running my script from ChromeOS, what board name is reported? I wonder if the string is simply too long and so the insertion of the board name fails...
Running the script in galliumos live image to reinstall chromeOS, it says ULTIMA
in the parentheses. Is that enough, or should I completely reinstall chromeOS to run the script from there? (would have to find my firmware backup, it's on a USB somewhere in here, not sure if OS changes anything)
no, that's enough - it tells me it's just a display bug and not something more serious.
this is the first time anyone has reported an issue with ULTIMA's eMMC. I'll see if there's any tweaking to be done on the firmware side. Does the issue occur when using the stock firmware + RW_LEGACY to boot Linux?
It works perfectly on Legacy! Absolutely no issues, gallium install running off of eMMC. I'll hold off installing all my arch stuff until testing is done, so you can do whatever you need to.
Edit: Decided to test arch just to see if it'd work too, just not a full install with my stuff, and noticed something - on the full UEFI firmware, the drive is listed as mmcblk0, while on the stock+Legacy firmware, it's listed as mmcblk1. Thought it worth a mention, might be something.
Another edit: More testing, put in an SD card and that's mmcblk0. There wasn't anything in the slot when I was testing with full UEFI.
having this exact issue on ULTIMA with the latest full uefi firmware. windows 10 installs and works fine, but linux distros on kernel 5+ fails to install with this error "mmc0: Timeout waiting for hardware cmd interrupt." (ubuntu 22.04, 20.04, debian bullseye)
there is a debian bug with similar symptoms, it seems like aspm
handling between the bios and os might be an issue. the suggested fix debug_quirks=0x40 debug_quirks2=0x4
did not work on ULTIMA unfortunately.
any updates on this? I am having the same issue on the latest full ROM firmware
I'm pretty sure this isn't a firmware issue - either a Linux kernel or a hardware one
ah, that sucks. I ended up just installing Tiny10 and it works fine
I just got a 11e chromebook and I get the same problem. When I booted into chromeos it reported the board name as "ULTIMA" but in the coreboot settings the heading is "Lenovo Thinkpad 11e/Yoga Chromebook (G3) ()" (empty parens). I've tried installing alpine linux and during installation it freezes (I think while it's copying files to the disk) and dmesg contains "mmc0: timeout waiting for hardware interrupt".
coreboot settings the heading is "Lenovo Thinkpad 11e/Yoga Chromebook (G3) ()" (empty parens).
UEFI settings, not coreboot. And 'ULTIMA' isn't shown because the string is too long for the field, not a big deal.
without having one of these on hand, going to be very time consuming to try and figure out what's wrong with the eMMC on some of them with the UEFI Full ROM firmware
@MrChromebox I’ve got a few of these 11e 3rd gens being retired from fleet. Happy to powerwash one and donate it to you?
@Yorper sounds good, drop me an email at mrchromebox at gmail
@MrChromebox email sent 👍
Any updates?
Given this bug, it would be nice to add the legacy firmware option back to the firmware scripts, as the coreboot option is not really usable today.
I would like to resurrect this issue. I have done a little digging and have a lead.
TLDNR:
The kernel is looking for " (dmi_match(DMI_BIOS_VENDOR, "LENOVO") ". My theory is our machines have the Google code names
GOOGLE != LENOVO and so the timeout occurs.
I see there is/was a Set Hardware ID function in the MrChromebox script, but I do not see it in the 4.22 version (or maybe its only available to some machines). Then again maybe its not that easy of a fix.
Research: From this post someone found using an older Ubuntu 18.04 (not 18.04.5) allowed successful install. (I have confirmed). Freezing the kernel allowed update further. (https://www.reddit.com/r/chrultrabook/comments/13iydpr/mmc0_timeout_waiting_for_hardware_interrupt/?sort=new) From this post there was a similar issue found for Ubuntu. (https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1848883). And a hacky kernel patch was applied. This has made it into the mainline Linux. (https://github.com/torvalds/linux/commit/afd7f30886b0b445a4240a99020458a9772f2b89)
In theory if I changed the DMI vendor to LENOVO it should match, but looking at the patch, it's only going to match on the Geminilake eMMC controller, not Braswell, since they have different PCI IDs. What I should do is see if it can be disabled in the firmware init
Good catch. I missed that GLK is Geminilake. Probably means the workaround kernel patch did not capture the true issue. Or the kernel parch needs an additional OR in the evaluation. Wonder if it affects Appolo Lake Lenovos as well (between Braswell and Gemini)
AFAIK, Ultima is the only device with the issue, or at least no one else has reported a problem.
This really does seem like a hardware + kernel driver issue, and I don't see a good way to work around it in firmware -- the capabilities registers are read only.
Research: From this post someone found using an older Ubuntu 18.04 (not 18.04.5) allowed successful install. (I have confirmed). Freezing the kernel allowed update further. (https://www.reddit.com/r/chrultrabook/comments/13iydpr/mmc0_timeout_waiting_for_hardware_interrupt/?sort=new) From this post there was a similar issue found for Ubuntu. (https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1848883). And a hacky kernel patch was applied. This has made it into the mainline Linux. (torvalds/linux@afd7f30)
I made that comment about 18.04 on that post (I own the SrebrnyBrek64 account), this was pretty hacky and it took like an entire day to do the upgrades.
So I can also confirm a custom version of windose 10 works on this device; However because of storage constraints you'll always run into issues.
Also I have noticed the SD card gets corrupted for extra storage, I believe there's a bug in the coreboot firmware IMO. Didn't some give MrChromebox one of these to play around with?
At the end of the day I was just trying to save the device from being landfill.
SD Card seems to work fine on my machine, no corruption there. The only thing that happens it sometimes isn't mounted automatically on boot but that's about it.
I had a bit of time, I heard Linux works on rw_legacy so I decided to test it. And it seems to work. I had to edit the script because you can't use rw_legacy on eol devices. I know it's unsupported, but still it does work.