blob: d1bb421dc6806aefc818497d0983e038b683e985 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
boot: 0.640
device: 0.525
socket: 0.522
semantic: 0.484
other: 0.427
vnc: 0.351
instruction: 0.330
graphic: 0.282
mistranslation: 0.270
network: 0.245
KVM: 0.160
assembly: 0.083
Maemo does not boot on emulated N800
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?
UPD: Maemo will boot on the second attempt if I reset the emulator manually.
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.
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 ?
It's available here: https://4pda.ru/forum/index.php?showtopic=870847
Thanks. I can confirm that there's been a regression since 1.2.0 that's still not fixed in master.
Bisection thinks commit cb5ef3fa1871522a08 is the cause.
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);
}
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.
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")
Yes, I think we can close this now.
|