Maemo does not boot on emulated N800

Bug #1734474 reported by MVoloshin
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
QEMU
Fix Released
Undecided
Unassigned

Bug Description

I start QEMU with qemu-system-arm-m 130 -M n800 -kernel zImage.1 -mtdblock maemo.img -append "root=/dev/mtdblock3 rootfstype=jffs2"
On QEMU 1.2.0 see "NOKIA" logo and then desktop appears, but on 1.5.0 and newer (including latest versions) I see only white screen and no signs of life. Was this caused by regression or any syntax change?

Revision history for this message
MVoloshin (mvoloshin) wrote :

UPD: Maemo will boot on the second attempt if I reset the emulator manually.

Revision history for this message
Peter Maydell (pmaydell) wrote :

That's a regression, but unfortunately the n800 boards aren't really maintained (I don't have any test images to hand, and the hardware is long-gone these days). You could try a git bisect to see what commit broke, if you want to investigate.

Revision history for this message
Peter Maydell (pmaydell) wrote :

Oops, I should have asked for the image to reproduce with back in 2017 when this bug was first filed :-( I don't suppose you still have it ?

Revision history for this message
MVoloshin (mvoloshin) wrote :
Revision history for this message
Peter Maydell (pmaydell) wrote :

Thanks. I can confirm that there's been a regression since 1.2.0 that's still not fixed in master.

Changed in qemu:
status: New → Confirmed
Revision history for this message
Peter Maydell (pmaydell) wrote :

Bisection thinks commit cb5ef3fa1871522a08 is the cause.

Revision history for this message
Peter Maydell (pmaydell) wrote :

This change on current head-of-git, which is effectively just reverting the logic-change part of commit cb5ef3fa1871522a08, is sufficient to allow the n800 image to boot again.
But that commit was trying to fix a bug, so we probably need to look more carefully at the logic rather than just reverting it...

diff --git a/hw/misc/tmp105.c b/hw/misc/tmp105.c
index b47120492a..1813477268 100644
--- a/hw/misc/tmp105.c
+++ b/hw/misc/tmp105.c
@@ -161,14 +161,12 @@ static int tmp105_tx(I2CSlave *i2c, uint8_t data)
 {
     TMP105State *s = TMP105(i2c);

- if (s->len == 0) {
+ if (!s->len++) {
         s->pointer = data;
- s->len++;
     } else {
         if (s->len <= 2) {
             s->buf[s->len - 1] = data;
         }
- s->len++;
         tmp105_write(s);
     }

Revision history for this message
Peter Maydell (pmaydell) wrote :

Should be fixed by this patch series:
https://<email address hidden>/

Commit cb5ef3fa1871522a08 is correct -- it just exposed an underlying bug in the TMP105 temperature sensor device.

Changed in qemu:
status: Confirmed → In Progress
Thomas Huth (th-huth)
tags: removed: qemu
Revision history for this message
Philippe Mathieu-Daudé (philmd) wrote :

Fixed in v5.2.0?
ab135622cf4 ("tmp105: Correct handling of temperature limit checks")
e1919889ef7 ("hw/misc/tmp105: reset the T_low and T_High registers")

Revision history for this message
Thomas Huth (th-huth) wrote :

Yes, I think we can close this now.

Changed in qemu:
status: In Progress → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.