1
Patches for rc1: nothing major, just some minor bugfixes and
1
This pullreq has:
2
code cleanups.
2
* two arm bug fixes which fix some "Linux fails to boot" bugs
3
* a docs typo-fixing patch
4
* a couple of compile failure/warning issues
3
5
6
I think they're all pretty safe and worth having in rc3.
7
8
thanks
4
-- PMM
9
-- PMM
5
10
6
The following changes since commit f7e1914adad8885a5d4c70239ab90d901ed97e9f:
11
The following changes since commit a6b1c53e79d08a99a28cc3e67a3e1a7c34102d6b:
7
12
8
Merge remote-tracking branch 'remotes/alistair/tags/pull-riscv-to-apply-20201109' into staging (2020-11-10 09:24:56 +0000)
13
Merge tag 'linux-user-for-7.1-pull-request' of https://gitlab.com/laurent_vivier/qemu into staging (2022-08-10 10:26:57 -0700)
9
14
10
are available in the Git repository at:
15
are available in the Git repository at:
11
16
12
https://git.linaro.org/people/pmaydell/qemu-arm.git tags/pull-target-arm-20201110
17
https://git.linaro.org/people/pmaydell/qemu-arm.git tags/pull-target-arm-20220812
13
18
14
for you to fetch changes up to b6c56c8a9a4064ea783f352f43c5df6231a110fa:
19
for you to fetch changes up to 4311682ea8293f720730f260e8a7601117d79e65:
15
20
16
target/arm/translate-neon.c: Handle VTBL UNDEF case before VFP access check (2020-11-10 11:03:48 +0000)
21
cutils: Add missing dyld(3) include on macOS (2022-08-12 11:33:52 +0100)
17
22
18
----------------------------------------------------------------
23
----------------------------------------------------------------
19
target-arm queue:
24
target-arm queue:
20
* hw/arm/Kconfig: ARM_V7M depends on PTIMER
25
* Don't report Statistical Profiling Extension in ID registers
21
* Minor coding style fixes
26
* virt ACPI tables: Present the GICR structure properly for GICv4
22
* docs: add some notes on the sbsa-ref machine
27
* Fix some typos in documentation
23
* hw/arm/virt: Remove dependency on Cortex-A15 MPCore peripherals
28
* tests/unit: fix a -Wformat-truncation warning
24
* target/arm: Fix neon VTBL/VTBX for len > 1
29
* cutils: Add missing dyld(3) include on macOS
25
* hw/arm/armsse: Correct expansion MPC interrupt lines
26
* hw/misc/stm32f2xx_syscfg: Remove extraneous IRQ
27
* hw/arm/nseries: Remove invalid/unnecessary n8x0_uart_setup()
28
* hw/arm/musicpal: Don't connect two qemu_irqs directly to the same input
29
* hw/arm/musicpal: Only use qdev_get_gpio_in() when necessary
30
* hw/arm/nseries: Check return value from load_image_targphys()
31
* tests/qtest/npcm7xx_rng-test: count runs properly
32
* target/arm/translate-neon.c: Handle VTBL UNDEF case before VFP access check
33
30
34
----------------------------------------------------------------
31
----------------------------------------------------------------
35
Alex Bennée (1):
32
Marc-André Lureau (1):
36
docs: add some notes on the sbsa-ref machine
33
tests/unit: fix a -Wformat-truncation warning
37
34
38
AlexChen (1):
35
Peter Maydell (1):
39
ssi: Fix bad printf format specifiers
36
target/arm: Don't report Statistical Profiling Extension in ID registers
40
37
41
Andrew Jones (1):
38
Philippe Mathieu-Daudé (1):
42
hw/arm/Kconfig: ARM_V7M depends on PTIMER
39
cutils: Add missing dyld(3) include on macOS
43
40
44
Havard Skinnemoen (1):
41
Stefan Weil (1):
45
tests/qtest/npcm7xx_rng-test: count runs properly
42
Fix some typos in documentation (most of them found by codespell)
46
43
47
Peter Maydell (2):
44
Zenghui Yu (1):
48
hw/arm/nseries: Check return value from load_image_targphys()
45
hw/arm/virt-acpi-build: Present the GICR structure properly for GICv4
49
target/arm/translate-neon.c: Handle VTBL UNDEF case before VFP access check
50
46
51
Philippe Mathieu-Daudé (6):
47
docs/about/deprecated.rst | 2 +-
52
hw/arm/virt: Remove dependency on Cortex-A15 MPCore peripherals
48
docs/specs/acpi_erst.rst | 4 ++--
53
hw/arm/armsse: Correct expansion MPC interrupt lines
49
docs/system/devices/canokey.rst | 8 ++++----
54
hw/misc/stm32f2xx_syscfg: Remove extraneous IRQ
50
docs/system/devices/cxl.rst | 12 ++++++------
55
hw/arm/nseries: Remove invalid/unnecessary n8x0_uart_setup()
51
hw/arm/virt-acpi-build.c | 4 ++--
56
hw/arm/musicpal: Don't connect two qemu_irqs directly to the same input
52
target/arm/cpu.c | 11 +++++++++++
57
hw/arm/musicpal: Only use qdev_get_gpio_in() when necessary
53
tests/unit/test-qobject-input-visitor.c | 3 +--
54
util/cutils.c | 4 ++++
55
util/oslib-posix.c | 4 ----
56
9 files changed, 31 insertions(+), 21 deletions(-)
58
57
59
Richard Henderson (1):
60
target/arm: Fix neon VTBL/VTBX for len > 1
61
62
Xinhao Zhang (3):
63
target/arm: add spaces around operator
64
target/arm: Don't use '#' flag of printf format
65
target/arm: add space before the open parenthesis '('
66
67
docs/system/arm/sbsa.rst | 32 ++++++++++++++++++++++
68
docs/system/target-arm.rst | 1 +
69
include/hw/misc/stm32f2xx_syscfg.h | 2 --
70
target/arm/helper.h | 2 +-
71
hw/arm/armsse.c | 3 +-
72
hw/arm/musicpal.c | 40 +++++++++++++++++----------
73
hw/arm/nseries.c | 26 ++++++++----------
74
hw/arm/stm32f205_soc.c | 1 -
75
hw/misc/stm32f2xx_syscfg.c | 2 --
76
hw/ssi/imx_spi.c | 2 +-
77
hw/ssi/xilinx_spi.c | 2 +-
78
target/arm/arch_dump.c | 8 +++---
79
target/arm/arm-semi.c | 8 +++---
80
target/arm/helper.c | 2 +-
81
target/arm/op_helper.c | 23 +++++++++-------
82
target/arm/translate-a64.c | 4 +--
83
target/arm/translate.c | 2 +-
84
tests/qtest/npcm7xx_rng-test.c | 2 +-
85
hw/arm/Kconfig | 3 +-
86
target/arm/translate-neon.c.inc | 56 ++++++++++++++------------------------
87
20 files changed, 123 insertions(+), 98 deletions(-)
88
create mode 100644 docs/system/arm/sbsa.rst
89
diff view generated by jsdifflib
Deleted patch
1
From: Andrew Jones <drjones@redhat.com>
2
1
3
commit 32bd322a0134 ("hw/timer/armv7m_systick: Rewrite to use ptimers")
4
changed armv7m_systick to build on ptimers. Make sure we have ptimers
5
in the build when building armv7m_systick.
6
7
Signed-off-by: Andrew Jones <drjones@redhat.com>
8
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
9
Message-id: 20201104103343.30392-1-drjones@redhat.com
10
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
11
---
12
hw/arm/Kconfig | 1 +
13
1 file changed, 1 insertion(+)
14
15
diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig
16
index XXXXXXX..XXXXXXX 100644
17
--- a/hw/arm/Kconfig
18
+++ b/hw/arm/Kconfig
19
@@ -XXX,XX +XXX,XX @@ config ZYNQ
20
21
config ARM_V7M
22
bool
23
+ select PTIMER
24
25
config ALLWINNER_A10
26
bool
27
--
28
2.20.1
29
30
diff view generated by jsdifflib
1
Checks for UNDEF cases should go before the "is VFP enabled?" access
1
The newly added neoverse-n1 CPU has ID register values which indicate
2
check, except in special cases. Move a stray UNDEF check in the VTBL
2
the presence of the Statistical Profiling Extension, because the real
3
trans function up above the access check.
3
hardware has this feature. QEMU's TCG emulation does not yet
4
implement SPE, though (not even as a minimal stub implementation), so
5
guests will crash if they try to use it because the SPE system
6
registers don't exist.
4
7
8
Force ID_AA64DFR0_EL1.PMSVer to 0 in CPU realize for TCG, so that
9
we don't advertise to the guest a feature that doesn't exist.
10
11
(We could alternatively do this by editing the value that
12
aarch64_neoverse_n1_initfn() sets for this ID register, but
13
suppressing the field in realize means we won't re-introduce this bug
14
when we add other CPUs that have SPE in hardware, such as the
15
Neoverse-V1.)
16
17
An example of a non-booting guest is current mainline Linux (5.19),
18
when booting in EL2 on the virt board (ie with -machine
19
virtualization=on).
20
21
Reported-by: Zenghui Yu <yuzenghui@huawei.com>
5
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
22
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
6
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
23
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
7
Message-id: 20201109145324.2859-1-peter.maydell@linaro.org
24
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
25
Reviewed-by: Zenghui Yu <yuzenghui@huawei.com>
26
Message-id: 20220811131127.947334-1-peter.maydell@linaro.org
8
---
27
---
9
target/arm/translate-neon.c.inc | 8 ++++----
28
target/arm/cpu.c | 11 +++++++++++
10
1 file changed, 4 insertions(+), 4 deletions(-)
29
1 file changed, 11 insertions(+)
11
30
12
diff --git a/target/arm/translate-neon.c.inc b/target/arm/translate-neon.c.inc
31
diff --git a/target/arm/cpu.c b/target/arm/cpu.c
13
index XXXXXXX..XXXXXXX 100644
32
index XXXXXXX..XXXXXXX 100644
14
--- a/target/arm/translate-neon.c.inc
33
--- a/target/arm/cpu.c
15
+++ b/target/arm/translate-neon.c.inc
34
+++ b/target/arm/cpu.c
16
@@ -XXX,XX +XXX,XX @@ static bool trans_VTBL(DisasContext *s, arg_VTBL *a)
35
@@ -XXX,XX +XXX,XX @@ static void arm_cpu_realizefn(DeviceState *dev, Error **errp)
17
return false;
18
}
36
}
19
37
#endif
20
- if (!vfp_access_check(s)) {
38
21
- return true;
39
+ if (tcg_enabled()) {
22
- }
40
+ /*
23
-
41
+ * Don't report the Statistical Profiling Extension in the ID
24
if ((a->vn + a->len + 1) > 32) {
42
+ * registers, because TCG doesn't implement it yet (not even a
25
/*
43
+ * minimal stub version) and guests will fall over when they
26
* This is UNPREDICTABLE; we choose to UNDEF to avoid the
44
+ * try to access the non-existent system registers for it.
27
@@ -XXX,XX +XXX,XX @@ static bool trans_VTBL(DisasContext *s, arg_VTBL *a)
45
+ */
28
return false;
46
+ cpu->isar.id_aa64dfr0 =
29
}
47
+ FIELD_DP64(cpu->isar.id_aa64dfr0, ID_AA64DFR0, PMSVER, 0);
30
31
+ if (!vfp_access_check(s)) {
32
+ return true;
33
+ }
48
+ }
34
+
49
+
35
desc = tcg_const_i32((a->vn << 2) | a->len);
50
/* MPU can be configured out of a PMSA CPU either by setting has-mpu
36
def = tcg_temp_new_i64();
51
* to false or by setting pmsav7-dregion to 0.
37
if (a->op) {
52
*/
38
--
53
--
39
2.20.1
54
2.25.1
40
55
41
56
diff view generated by jsdifflib
1
From: Havard Skinnemoen <hskinnemoen@google.com>
1
From: Stefan Weil <sw@weilnetz.de>
2
2
3
The number of runs is equal to the number of 0-1 and 1-0 transitions,
3
Signed-off-by: Stefan Weil <sw@weilnetz.de>
4
plus one. Currently, it's counting the number of times these transitions
4
Reviewed-by: Hongren (Zenithal) Zheng <i@zenithal.me>
5
do _not_ happen, plus one.
5
Message-id: 20220812075642.1200578-1-sw@weilnetz.de
6
7
Source:
8
https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-22r1a.pdf
9
section 2.3.4 point (3).
10
11
Signed-off-by: Havard Skinnemoen <hskinnemoen@google.com>
12
Message-id: 20201103011457.2959989-2-hskinnemoen@google.com
13
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
6
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
14
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
7
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
15
---
8
---
16
tests/qtest/npcm7xx_rng-test.c | 2 +-
9
docs/about/deprecated.rst | 2 +-
17
1 file changed, 1 insertion(+), 1 deletion(-)
10
docs/specs/acpi_erst.rst | 4 ++--
11
docs/system/devices/canokey.rst | 8 ++++----
12
docs/system/devices/cxl.rst | 12 ++++++------
13
4 files changed, 13 insertions(+), 13 deletions(-)
18
14
19
diff --git a/tests/qtest/npcm7xx_rng-test.c b/tests/qtest/npcm7xx_rng-test.c
15
diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst
20
index XXXXXXX..XXXXXXX 100644
16
index XXXXXXX..XXXXXXX 100644
21
--- a/tests/qtest/npcm7xx_rng-test.c
17
--- a/docs/about/deprecated.rst
22
+++ b/tests/qtest/npcm7xx_rng-test.c
18
+++ b/docs/about/deprecated.rst
23
@@ -XXX,XX +XXX,XX @@ static double calc_runs_p(const unsigned long *buf, unsigned int nr_bits)
19
@@ -XXX,XX +XXX,XX @@ by using ``-machine graphics=off``.
24
pi = (double)nr_ones / nr_bits;
20
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
25
21
26
for (k = 0; k < nr_bits - 1; k++) {
22
In QEMU versions 6.1, 6.2 and 7.0, the ``nvme-ns`` generates an EUI-64
27
- vn_obs += !(test_bit(k, buf) ^ test_bit(k + 1, buf));
23
-identifer that is not globally unique. If an EUI-64 identifer is required, the
28
+ vn_obs += (test_bit(k, buf) ^ test_bit(k + 1, buf));
24
+identifier that is not globally unique. If an EUI-64 identifier is required, the
29
}
25
user must set it explicitly using the ``nvme-ns`` device parameter ``eui64``.
30
vn_obs += 1;
26
31
27
``-device nvme,use-intel-id=on|off`` (since 7.1)
28
diff --git a/docs/specs/acpi_erst.rst b/docs/specs/acpi_erst.rst
29
index XXXXXXX..XXXXXXX 100644
30
--- a/docs/specs/acpi_erst.rst
31
+++ b/docs/specs/acpi_erst.rst
32
@@ -XXX,XX +XXX,XX @@ Slot 0 contains a backend storage header that identifies the contents
33
as ERST and also facilitates efficient access to the records.
34
Depending upon the size of the backend storage, additional slots will
35
be designated to be a part of the slot 0 header. For example, at 8KiB,
36
-the slot 0 header can accomodate 1021 records. Thus a storage size
37
+the slot 0 header can accommodate 1021 records. Thus a storage size
38
of 8MiB (8KiB * 1024) requires an additional slot for use by the
39
header. In this scenario, slot 0 and slot 1 form the backend storage
40
header, and records can be stored starting at slot 2.
41
@@ -XXX,XX +XXX,XX @@ References
42
[2] "Unified Extensible Firmware Interface Specification",
43
version 2.1, October 2008.
44
45
-[3] "Windows Hardware Error Architecture", specfically
46
+[3] "Windows Hardware Error Architecture", specifically
47
"Error Record Persistence Mechanism".
48
diff --git a/docs/system/devices/canokey.rst b/docs/system/devices/canokey.rst
49
index XXXXXXX..XXXXXXX 100644
50
--- a/docs/system/devices/canokey.rst
51
+++ b/docs/system/devices/canokey.rst
52
@@ -XXX,XX +XXX,XX @@ With the same software configuration as a hardware key,
53
the guest OS can use all the functionalities of a secure key as if
54
there was actually an hardware key plugged in.
55
56
-CanoKey QEMU provides much convenience for debuging:
57
+CanoKey QEMU provides much convenience for debugging:
58
59
-* libcanokey-qemu supports debuging output thus developers can
60
+* libcanokey-qemu supports debugging output thus developers can
61
inspect what happens inside a secure key
62
* CanoKey QEMU supports trace event thus event
63
* QEMU USB stack supports pcap thus USB packet between the guest
64
@@ -XXX,XX +XXX,XX @@ and find CanoKey QEMU there:
65
66
You may setup the key as guided in [6]_. The console for the key is at [7]_.
67
68
-Debuging
69
-========
70
+Debugging
71
+=========
72
73
CanoKey QEMU consists of two parts, ``libcanokey-qemu.so`` and ``canokey.c``,
74
the latter of which resides in QEMU. The former provides core functionality
75
diff --git a/docs/system/devices/cxl.rst b/docs/system/devices/cxl.rst
76
index XXXXXXX..XXXXXXX 100644
77
--- a/docs/system/devices/cxl.rst
78
+++ b/docs/system/devices/cxl.rst
79
@@ -XXX,XX +XXX,XX @@ CXL Fixed Memory Windows (CFMW)
80
A CFMW consists of a particular range of Host Physical Address space
81
which is routed to particular CXL Host Bridges. At time of generic
82
software initialization it will have a particularly interleaving
83
-configuration and associated Quality of Serice Throtling Group (QTG).
84
+configuration and associated Quality of Service Throttling Group (QTG).
85
This information is available to system software, when making
86
decisions about how to configure interleave across available CXL
87
memory devices. It is provide as CFMW Structures (CFMWS) in
88
@@ -XXX,XX +XXX,XX @@ specification defined register interface called CXL Host Bridge
89
Component Registers (CHBCR). The location of this CHBCR MMIO
90
space is described to system software via a CXL Host Bridge
91
Structure (CHBS) in the CEDT ACPI table. The actual interfaces
92
-are identical to those used for other parts of the CXL heirarchy
93
+are identical to those used for other parts of the CXL hierarchy
94
as CXL Component Registers in PCI BARs.
95
96
Interfaces provided include:
97
@@ -XXX,XX +XXX,XX @@ CXL Memory Devices - Type 3
98
~~~~~~~~~~~~~~~~~~~~~~~~~~~
99
CXL type 3 devices use a PCI class code and are intended to be supported
100
by a generic operating system driver. They have HDM decoders
101
-though in these EP devices, the decoder is reponsible not for
102
+though in these EP devices, the decoder is responsible not for
103
routing but for translation of the incoming host physical address (HPA)
104
into a Device Physical Address (DPA).
105
106
@@ -XXX,XX +XXX,XX @@ Notes:
107
ranges of the system physical address map. Each CFMW has
108
particular interleave setup across the CXL Host Bridges (HB)
109
CFMW0 provides uninterleaved access to HB0, CFW2 provides
110
- uninterleaved acess to HB1. CFW1 provides interleaved memory access
111
+ uninterleaved access to HB1. CFW1 provides interleaved memory access
112
across HB0 and HB1.
113
114
(2) **Two CXL Host Bridges**. Each of these has 2 CXL Root Ports and
115
@@ -XXX,XX +XXX,XX @@ Example topology involving a switch::
116
---------------------------------------------------
117
| Switch 0 USP as PCI 0d:00.0 |
118
| USP has HDM decoder which direct traffic to |
119
- | appropiate downstream port |
120
+ | appropriate downstream port |
121
| Switch BUS appears as 0e |
122
|x__________________________________________________|
123
| | | |
124
@@ -XXX,XX +XXX,XX @@ An example of 4 devices below a switch suitable for 1, 2 or 4 way interleave::
125
Kernel Configuration Options
126
----------------------------
127
128
-In Linux 5.18 the followings options are necessary to make use of
129
+In Linux 5.18 the following options are necessary to make use of
130
OS management of CXL memory devices as described here.
131
132
* CONFIG_CXL_BUS
32
--
133
--
33
2.20.1
134
2.25.1
34
35
diff view generated by jsdifflib
1
From: AlexChen <alex.chen@huawei.com>
1
From: Marc-André Lureau <marcandre.lureau@redhat.com>
2
2
3
We should use printf format specifier "%u" instead of "%d" for
3
../tests/test-qobject-input-visitor.c: In function ‘test_visitor_in_list’:
4
argument of type "unsigned int".
4
../tests/test-qobject-input-visitor.c:454:49: warning: ‘%d’ directive output may be truncated writing between 1 and 10 bytes into a region of size 6 [-Wformat-truncation=]
5
454 | snprintf(string, sizeof(string), "string%d", i);
6
| ^~
7
../tests/test-qobject-input-visitor.c:454:42: note: directive argument in the range [0, 2147483606]
8
454 | snprintf(string, sizeof(string), "string%d", i);
9
| ^~~~~~~~~~
10
../tests/test-qobject-input-visitor.c:454:9: note: ‘snprintf’ output between 8 and 17 bytes into a destination of size 12
11
454 | snprintf(string, sizeof(string), "string%d", i);
12
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5
13
6
Reported-by: Euler Robot <euler.robot@huawei.com>
14
Rather than trying to be clever, since this is called 3 times during
7
Signed-off-by: Alex Chen <alex.chen@huawei.com>
15
tests, let's simply use g_strdup_printf().
8
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
16
9
Message-id: 5FA280F5.8060902@huawei.com
17
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
18
Reviewed-by: Markus Armbruster <armbru@redhat.com>
19
Message-id: 20220810121513.1356081-1-marcandre.lureau@redhat.com
20
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
21
[PMM: fixed commit message typos]
10
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
22
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
11
---
23
---
12
hw/ssi/imx_spi.c | 2 +-
24
tests/unit/test-qobject-input-visitor.c | 3 +--
13
hw/ssi/xilinx_spi.c | 2 +-
25
1 file changed, 1 insertion(+), 2 deletions(-)
14
2 files changed, 2 insertions(+), 2 deletions(-)
15
26
16
diff --git a/hw/ssi/imx_spi.c b/hw/ssi/imx_spi.c
27
diff --git a/tests/unit/test-qobject-input-visitor.c b/tests/unit/test-qobject-input-visitor.c
17
index XXXXXXX..XXXXXXX 100644
28
index XXXXXXX..XXXXXXX 100644
18
--- a/hw/ssi/imx_spi.c
29
--- a/tests/unit/test-qobject-input-visitor.c
19
+++ b/hw/ssi/imx_spi.c
30
+++ b/tests/unit/test-qobject-input-visitor.c
20
@@ -XXX,XX +XXX,XX @@ static const char *imx_spi_reg_name(uint32_t reg)
31
@@ -XXX,XX +XXX,XX @@ static void test_visitor_in_list(TestInputVisitorData *data,
21
case ECSPI_MSGDATA:
32
g_assert(head != NULL);
22
return "ECSPI_MSGDATA";
33
23
default:
34
for (i = 0, item = head; item; item = item->next, i++) {
24
- sprintf(unknown, "%d ?", reg);
35
- char string[12];
25
+ sprintf(unknown, "%u ?", reg);
36
+ g_autofree char *string = g_strdup_printf("string%d", i);
26
return unknown;
37
27
}
38
- snprintf(string, sizeof(string), "string%d", i);
28
}
39
g_assert_cmpstr(item->value->string, ==, string);
29
diff --git a/hw/ssi/xilinx_spi.c b/hw/ssi/xilinx_spi.c
40
g_assert_cmpint(item->value->integer, ==, 42 + i);
30
index XXXXXXX..XXXXXXX 100644
31
--- a/hw/ssi/xilinx_spi.c
32
+++ b/hw/ssi/xilinx_spi.c
33
@@ -XXX,XX +XXX,XX @@ static void xlx_spi_update_irq(XilinxSPI *s)
34
irq chain unless things really changed. */
35
if (pending != s->irqline) {
36
s->irqline = pending;
37
- DB_PRINT("irq_change of state %d ISR:%x IER:%X\n",
38
+ DB_PRINT("irq_change of state %u ISR:%x IER:%X\n",
39
pending, s->regs[R_IPISR], s->regs[R_IPIER]);
40
qemu_set_irq(s->irq, pending);
41
}
41
}
42
--
42
--
43
2.20.1
43
2.25.1
44
44
45
45
diff view generated by jsdifflib
Deleted patch
1
From: Xinhao Zhang <zhangxinhao1@huawei.com>
2
1
3
Fix code style. Operator needs spaces both sides.
4
5
Signed-off-by: Xinhao Zhang <zhangxinhao1@huawei.com>
6
Signed-off-by: Kai Deng <dengkai1@huawei.com>
7
Message-id: 20201103114529.638233-1-zhangxinhao1@huawei.com
8
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
9
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
10
---
11
target/arm/arch_dump.c | 8 ++++----
12
target/arm/arm-semi.c | 8 ++++----
13
target/arm/helper.c | 2 +-
14
3 files changed, 9 insertions(+), 9 deletions(-)
15
16
diff --git a/target/arm/arch_dump.c b/target/arm/arch_dump.c
17
index XXXXXXX..XXXXXXX 100644
18
--- a/target/arm/arch_dump.c
19
+++ b/target/arm/arch_dump.c
20
@@ -XXX,XX +XXX,XX @@ static int aarch64_write_elf64_prfpreg(WriteCoreDumpFunction f,
21
22
for (i = 0; i < 32; ++i) {
23
uint64_t *q = aa64_vfp_qreg(env, i);
24
- note.vfp.vregs[2*i + 0] = cpu_to_dump64(s, q[0]);
25
- note.vfp.vregs[2*i + 1] = cpu_to_dump64(s, q[1]);
26
+ note.vfp.vregs[2 * i + 0] = cpu_to_dump64(s, q[0]);
27
+ note.vfp.vregs[2 * i + 1] = cpu_to_dump64(s, q[1]);
28
}
29
30
if (s->dump_info.d_endian == ELFDATA2MSB) {
31
@@ -XXX,XX +XXX,XX @@ static int aarch64_write_elf64_prfpreg(WriteCoreDumpFunction f,
32
*/
33
for (i = 0; i < 32; ++i) {
34
uint64_t tmp = note.vfp.vregs[2*i];
35
- note.vfp.vregs[2*i] = note.vfp.vregs[2*i+1];
36
- note.vfp.vregs[2*i+1] = tmp;
37
+ note.vfp.vregs[2 * i] = note.vfp.vregs[2 * i + 1];
38
+ note.vfp.vregs[2 * i + 1] = tmp;
39
}
40
}
41
42
diff --git a/target/arm/arm-semi.c b/target/arm/arm-semi.c
43
index XXXXXXX..XXXXXXX 100644
44
--- a/target/arm/arm-semi.c
45
+++ b/target/arm/arm-semi.c
46
@@ -XXX,XX +XXX,XX @@ target_ulong do_arm_semihosting(CPUARMState *env)
47
if (use_gdb_syscalls()) {
48
arm_semi_open_guestfd = guestfd;
49
ret = arm_gdb_syscall(cpu, arm_semi_open_cb, "open,%s,%x,1a4", arg0,
50
- (int)arg2+1, gdb_open_modeflags[arg1]);
51
+ (int)arg2 + 1, gdb_open_modeflags[arg1]);
52
} else {
53
ret = set_swi_errno(env, open(s, open_modeflags[arg1], 0644));
54
if (ret == (uint32_t)-1) {
55
@@ -XXX,XX +XXX,XX @@ target_ulong do_arm_semihosting(CPUARMState *env)
56
GET_ARG(1);
57
if (use_gdb_syscalls()) {
58
ret = arm_gdb_syscall(cpu, arm_semi_cb, "unlink,%s",
59
- arg0, (int)arg1+1);
60
+ arg0, (int)arg1 + 1);
61
} else {
62
s = lock_user_string(arg0);
63
if (!s) {
64
@@ -XXX,XX +XXX,XX @@ target_ulong do_arm_semihosting(CPUARMState *env)
65
GET_ARG(3);
66
if (use_gdb_syscalls()) {
67
return arm_gdb_syscall(cpu, arm_semi_cb, "rename,%s,%s",
68
- arg0, (int)arg1+1, arg2, (int)arg3+1);
69
+ arg0, (int)arg1 + 1, arg2, (int)arg3 + 1);
70
} else {
71
char *s2;
72
s = lock_user_string(arg0);
73
@@ -XXX,XX +XXX,XX @@ target_ulong do_arm_semihosting(CPUARMState *env)
74
GET_ARG(1);
75
if (use_gdb_syscalls()) {
76
return arm_gdb_syscall(cpu, arm_semi_cb, "system,%s",
77
- arg0, (int)arg1+1);
78
+ arg0, (int)arg1 + 1);
79
} else {
80
s = lock_user_string(arg0);
81
if (!s) {
82
diff --git a/target/arm/helper.c b/target/arm/helper.c
83
index XXXXXXX..XXXXXXX 100644
84
--- a/target/arm/helper.c
85
+++ b/target/arm/helper.c
86
@@ -XXX,XX +XXX,XX @@ uint32_t HELPER(usad8)(uint32_t a, uint32_t b)
87
uint32_t sum;
88
sum = do_usad(a, b);
89
sum += do_usad(a >> 8, b >> 8);
90
- sum += do_usad(a >> 16, b >>16);
91
+ sum += do_usad(a >> 16, b >> 16);
92
sum += do_usad(a >> 24, b >> 24);
93
return sum;
94
}
95
--
96
2.20.1
97
98
diff view generated by jsdifflib
1
From: Xinhao Zhang <zhangxinhao1@huawei.com>
1
From: Zenghui Yu <yuzenghui@huawei.com>
2
2
3
Fix code style. Don't use '#' flag of printf format ('%#') in
3
With the introduction of the new TCG GICv4, build_madt() is badly broken
4
format strings, use '0x' prefix instead
4
as we do not present any GIC Redistributor structure in MADT for GICv4
5
guests, so that they have no idea about where the Redistributor
6
register frames are. This fixes a Linux guest crash at boot time with
7
ACPI enabled and '-machine gic-version=4'.
5
8
6
Signed-off-by: Xinhao Zhang <zhangxinhao1@huawei.com>
9
While at it, let's convert the remaining hard coded gic_version into
7
Signed-off-by: Kai Deng <dengkai1@huawei.com>
10
enumeration VIRT_GIC_VERSION_2 for consistency.
8
Message-id: 20201103114529.638233-2-zhangxinhao1@huawei.com
11
12
Signed-off-by: Zenghui Yu <yuzenghui@huawei.com>
13
Message-id: 20220812022018.1069-1-yuzenghui@huawei.com
9
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
14
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
10
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
15
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
11
---
16
---
12
target/arm/translate-a64.c | 4 ++--
17
hw/arm/virt-acpi-build.c | 4 ++--
13
1 file changed, 2 insertions(+), 2 deletions(-)
18
1 file changed, 2 insertions(+), 2 deletions(-)
14
19
15
diff --git a/target/arm/translate-a64.c b/target/arm/translate-a64.c
20
diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c
16
index XXXXXXX..XXXXXXX 100644
21
index XXXXXXX..XXXXXXX 100644
17
--- a/target/arm/translate-a64.c
22
--- a/hw/arm/virt-acpi-build.c
18
+++ b/target/arm/translate-a64.c
23
+++ b/hw/arm/virt-acpi-build.c
19
@@ -XXX,XX +XXX,XX @@ static void disas_simd_three_reg_same_fp16(DisasContext *s, uint32_t insn)
24
@@ -XXX,XX +XXX,XX @@ build_madt(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms)
20
gen_helper_advsimd_acgt_f16(tcg_res, tcg_op1, tcg_op2, fpst);
25
uint32_t pmu_interrupt = arm_feature(&armcpu->env, ARM_FEATURE_PMU) ?
21
break;
26
PPI(VIRTUAL_PMU_IRQ) : 0;
22
default:
27
23
- fprintf(stderr, "%s: insn %#04x, fpop %#2x @ %#" PRIx64 "\n",
28
- if (vms->gic_version == 2) {
24
+ fprintf(stderr, "%s: insn 0x%04x, fpop 0x%2x @ 0x%" PRIx64 "\n",
29
+ if (vms->gic_version == VIRT_GIC_VERSION_2) {
25
__func__, insn, fpopcode, s->pc_curr);
30
physical_base_address = memmap[VIRT_GIC_CPU].base;
26
g_assert_not_reached();
31
gicv = memmap[VIRT_GIC_VCPU].base;
27
}
32
gich = memmap[VIRT_GIC_HYP].base;
28
@@ -XXX,XX +XXX,XX @@ static void disas_simd_two_reg_misc_fp16(DisasContext *s, uint32_t insn)
33
@@ -XXX,XX +XXX,XX @@ build_madt(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms)
29
case 0x7f: /* FSQRT (vector) */
34
build_append_int_noprefix(table_data, armcpu->mp_affinity, 8);
30
break;
31
default:
32
- fprintf(stderr, "%s: insn %#04x fpop %#2x\n", __func__, insn, fpop);
33
+ fprintf(stderr, "%s: insn 0x%04x fpop 0x%2x\n", __func__, insn, fpop);
34
g_assert_not_reached();
35
}
35
}
36
36
37
- if (vms->gic_version == 3) {
38
+ if (vms->gic_version != VIRT_GIC_VERSION_2) {
39
build_append_gicr(table_data, memmap[VIRT_GIC_REDIST].base,
40
memmap[VIRT_GIC_REDIST].size);
41
if (virt_gicv3_redist_region_count(vms) == 2) {
37
--
42
--
38
2.20.1
43
2.25.1
39
40
diff view generated by jsdifflib
Deleted patch
1
From: Xinhao Zhang <zhangxinhao1@huawei.com>
2
1
3
Fix code style. Space required before the open parenthesis '('.
4
5
Signed-off-by: Xinhao Zhang <zhangxinhao1@huawei.com>
6
Signed-off-by: Kai Deng <dengkai1@huawei.com>
7
Message-id: 20201103114529.638233-3-zhangxinhao1@huawei.com
8
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
9
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
10
---
11
target/arm/translate.c | 2 +-
12
1 file changed, 1 insertion(+), 1 deletion(-)
13
14
diff --git a/target/arm/translate.c b/target/arm/translate.c
15
index XXXXXXX..XXXXXXX 100644
16
--- a/target/arm/translate.c
17
+++ b/target/arm/translate.c
18
@@ -XXX,XX +XXX,XX @@ static void arm_tr_tb_stop(DisasContextBase *dcbase, CPUState *cpu)
19
- Hardware watchpoints.
20
Hardware breakpoints have already been handled and skip this code.
21
*/
22
- switch(dc->base.is_jmp) {
23
+ switch (dc->base.is_jmp) {
24
case DISAS_NEXT:
25
case DISAS_TOO_MANY:
26
gen_goto_tb(dc, 1, dc->base.pc_next);
27
--
28
2.20.1
29
30
diff view generated by jsdifflib
Deleted patch
1
From: Alex Bennée <alex.bennee@linaro.org>
2
1
3
We should at least document what this machine is about.
4
5
Reviewed-by: Graeme Gregory <graeme@nuviainc.com>
6
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
7
Message-id: 20201104165254.24822-1-alex.bennee@linaro.org
8
Cc: Leif Lindholm <leif@nuviainc.com>
9
Cc: Shashi Mallela <shashi.mallela@linaro.org>
10
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
11
[PMM: fixed filename mismatch]
12
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
13
---
14
docs/system/arm/sbsa.rst | 32 ++++++++++++++++++++++++++++++++
15
docs/system/target-arm.rst | 1 +
16
2 files changed, 33 insertions(+)
17
create mode 100644 docs/system/arm/sbsa.rst
18
19
diff --git a/docs/system/arm/sbsa.rst b/docs/system/arm/sbsa.rst
20
new file mode 100644
21
index XXXXXXX..XXXXXXX
22
--- /dev/null
23
+++ b/docs/system/arm/sbsa.rst
24
@@ -XXX,XX +XXX,XX @@
25
+Arm Server Base System Architecture Reference board (``sbsa-ref``)
26
+==================================================================
27
+
28
+While the `virt` board is a generic board platform that doesn't match
29
+any real hardware the `sbsa-ref` board intends to look like real
30
+hardware. The `Server Base System Architecture
31
+<https://developer.arm.com/documentation/den0029/latest>` defines a
32
+minimum base line of hardware support and importantly how the firmware
33
+reports that to any operating system. It is a static system that
34
+reports a very minimal DT to the firmware for non-discoverable
35
+information about components affected by the qemu command line (i.e.
36
+cpus and memory). As a result it must have a firmware specifically
37
+built to expect a certain hardware layout (as you would in a real
38
+machine).
39
+
40
+It is intended to be a machine for developing firmware and testing
41
+standards compliance with operating systems.
42
+
43
+Supported devices
44
+"""""""""""""""""
45
+
46
+The sbsa-ref board supports:
47
+
48
+ - A configurable number of AArch64 CPUs
49
+ - GIC version 3
50
+ - System bus AHCI controller
51
+ - System bus EHCI controller
52
+ - CDROM and hard disc on AHCI bus
53
+ - E1000E ethernet card on PCIe bus
54
+ - VGA display adaptor on PCIe bus
55
+ - A generic SBSA watchdog device
56
+
57
diff --git a/docs/system/target-arm.rst b/docs/system/target-arm.rst
58
index XXXXXXX..XXXXXXX 100644
59
--- a/docs/system/target-arm.rst
60
+++ b/docs/system/target-arm.rst
61
@@ -XXX,XX +XXX,XX @@ undocumented; you can get a complete list by running
62
arm/mps2
63
arm/musca
64
arm/realview
65
+ arm/sbsa
66
arm/versatile
67
arm/vexpress
68
arm/aspeed
69
--
70
2.20.1
71
72
diff view generated by jsdifflib
Deleted patch
1
From: Philippe Mathieu-Daudé <philmd@redhat.com>
2
1
3
When using a Cortex-A15, the Virt machine does not use any
4
MPCore peripherals. Remove the dependency.
5
6
Fixes: 7951c7b7c05 ("hw/arm: Express dependencies of the virt machine with Kconfig")
7
Reported-by: Miroslav Rezanina <mrezanin@redhat.com>
8
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
9
Message-id: 20201107114852.271922-1-philmd@redhat.com
10
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
11
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
12
---
13
hw/arm/Kconfig | 1 -
14
1 file changed, 1 deletion(-)
15
16
diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig
17
index XXXXXXX..XXXXXXX 100644
18
--- a/hw/arm/Kconfig
19
+++ b/hw/arm/Kconfig
20
@@ -XXX,XX +XXX,XX @@ config ARM_VIRT
21
imply VFIO_PLATFORM
22
imply VFIO_XGMAC
23
imply TPM_TIS_SYSBUS
24
- select A15MPCORE
25
select ACPI
26
select ARM_SMMUV3
27
select GPIO_KEY
28
--
29
2.20.1
30
31
diff view generated by jsdifflib
Deleted patch
1
From: Richard Henderson <richard.henderson@linaro.org>
2
1
3
The helper function did not get updated when we reorganized
4
the vector register file for SVE. Since then, the neon dregs
5
are non-sequential and cannot be simply indexed.
6
7
At the same time, make the helper function operate on 64-bit
8
quantities so that we do not have to call it twice.
9
10
Fixes: c39c2b9043e
11
Reported-by: Ard Biesheuvel <ardb@kernel.org>
12
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
13
[PMM: use aa32_vfp_dreg() rather than opencoding]
14
Message-id: 20201105171126.88014-1-richard.henderson@linaro.org
15
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
16
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
17
---
18
target/arm/helper.h | 2 +-
19
target/arm/op_helper.c | 23 +++++++++--------
20
target/arm/translate-neon.c.inc | 44 +++++++++++----------------------
21
3 files changed, 29 insertions(+), 40 deletions(-)
22
23
diff --git a/target/arm/helper.h b/target/arm/helper.h
24
index XXXXXXX..XXXXXXX 100644
25
--- a/target/arm/helper.h
26
+++ b/target/arm/helper.h
27
@@ -XXX,XX +XXX,XX @@ DEF_HELPER_FLAGS_2(rsqrte_f32, TCG_CALL_NO_RWG, f32, f32, ptr)
28
DEF_HELPER_FLAGS_2(rsqrte_f64, TCG_CALL_NO_RWG, f64, f64, ptr)
29
DEF_HELPER_FLAGS_1(recpe_u32, TCG_CALL_NO_RWG, i32, i32)
30
DEF_HELPER_FLAGS_1(rsqrte_u32, TCG_CALL_NO_RWG, i32, i32)
31
-DEF_HELPER_FLAGS_4(neon_tbl, TCG_CALL_NO_RWG, i32, i32, i32, ptr, i32)
32
+DEF_HELPER_FLAGS_4(neon_tbl, TCG_CALL_NO_RWG, i64, env, i32, i64, i64)
33
34
DEF_HELPER_3(shl_cc, i32, env, i32, i32)
35
DEF_HELPER_3(shr_cc, i32, env, i32, i32)
36
diff --git a/target/arm/op_helper.c b/target/arm/op_helper.c
37
index XXXXXXX..XXXXXXX 100644
38
--- a/target/arm/op_helper.c
39
+++ b/target/arm/op_helper.c
40
@@ -XXX,XX +XXX,XX @@ void raise_exception_ra(CPUARMState *env, uint32_t excp, uint32_t syndrome,
41
cpu_loop_exit_restore(cs, ra);
42
}
43
44
-uint32_t HELPER(neon_tbl)(uint32_t ireg, uint32_t def, void *vn,
45
- uint32_t maxindex)
46
+uint64_t HELPER(neon_tbl)(CPUARMState *env, uint32_t desc,
47
+ uint64_t ireg, uint64_t def)
48
{
49
- uint32_t val, shift;
50
- uint64_t *table = vn;
51
+ uint64_t tmp, val = 0;
52
+ uint32_t maxindex = ((desc & 3) + 1) * 8;
53
+ uint32_t base_reg = desc >> 2;
54
+ uint32_t shift, index, reg;
55
56
- val = 0;
57
- for (shift = 0; shift < 32; shift += 8) {
58
- uint32_t index = (ireg >> shift) & 0xff;
59
+ for (shift = 0; shift < 64; shift += 8) {
60
+ index = (ireg >> shift) & 0xff;
61
if (index < maxindex) {
62
- uint32_t tmp = (table[index >> 3] >> ((index & 7) << 3)) & 0xff;
63
- val |= tmp << shift;
64
+ reg = base_reg + (index >> 3);
65
+ tmp = *aa32_vfp_dreg(env, reg);
66
+ tmp = ((tmp >> ((index & 7) << 3)) & 0xff) << shift;
67
} else {
68
- val |= def & (0xff << shift);
69
+ tmp = def & (0xffull << shift);
70
}
71
+ val |= tmp;
72
}
73
return val;
74
}
75
diff --git a/target/arm/translate-neon.c.inc b/target/arm/translate-neon.c.inc
76
index XXXXXXX..XXXXXXX 100644
77
--- a/target/arm/translate-neon.c.inc
78
+++ b/target/arm/translate-neon.c.inc
79
@@ -XXX,XX +XXX,XX @@ static bool trans_VEXT(DisasContext *s, arg_VEXT *a)
80
81
static bool trans_VTBL(DisasContext *s, arg_VTBL *a)
82
{
83
- int n;
84
- TCGv_i32 tmp, tmp2, tmp3, tmp4;
85
- TCGv_ptr ptr1;
86
+ TCGv_i64 val, def;
87
+ TCGv_i32 desc;
88
89
if (!arm_dc_feature(s, ARM_FEATURE_NEON)) {
90
return false;
91
@@ -XXX,XX +XXX,XX @@ static bool trans_VTBL(DisasContext *s, arg_VTBL *a)
92
return true;
93
}
94
95
- n = a->len + 1;
96
- if ((a->vn + n) > 32) {
97
+ if ((a->vn + a->len + 1) > 32) {
98
/*
99
* This is UNPREDICTABLE; we choose to UNDEF to avoid the
100
* helper function running off the end of the register file.
101
*/
102
return false;
103
}
104
- n <<= 3;
105
- tmp = tcg_temp_new_i32();
106
- if (a->op) {
107
- read_neon_element32(tmp, a->vd, 0, MO_32);
108
- } else {
109
- tcg_gen_movi_i32(tmp, 0);
110
- }
111
- tmp2 = tcg_temp_new_i32();
112
- read_neon_element32(tmp2, a->vm, 0, MO_32);
113
- ptr1 = vfp_reg_ptr(true, a->vn);
114
- tmp4 = tcg_const_i32(n);
115
- gen_helper_neon_tbl(tmp2, tmp2, tmp, ptr1, tmp4);
116
117
+ desc = tcg_const_i32((a->vn << 2) | a->len);
118
+ def = tcg_temp_new_i64();
119
if (a->op) {
120
- read_neon_element32(tmp, a->vd, 1, MO_32);
121
+ read_neon_element64(def, a->vd, 0, MO_64);
122
} else {
123
- tcg_gen_movi_i32(tmp, 0);
124
+ tcg_gen_movi_i64(def, 0);
125
}
126
- tmp3 = tcg_temp_new_i32();
127
- read_neon_element32(tmp3, a->vm, 1, MO_32);
128
- gen_helper_neon_tbl(tmp3, tmp3, tmp, ptr1, tmp4);
129
- tcg_temp_free_i32(tmp);
130
- tcg_temp_free_i32(tmp4);
131
- tcg_temp_free_ptr(ptr1);
132
+ val = tcg_temp_new_i64();
133
+ read_neon_element64(val, a->vm, 0, MO_64);
134
135
- write_neon_element32(tmp2, a->vd, 0, MO_32);
136
- write_neon_element32(tmp3, a->vd, 1, MO_32);
137
- tcg_temp_free_i32(tmp2);
138
- tcg_temp_free_i32(tmp3);
139
+ gen_helper_neon_tbl(val, cpu_env, desc, val, def);
140
+ write_neon_element64(val, a->vd, 0, MO_64);
141
+
142
+ tcg_temp_free_i64(def);
143
+ tcg_temp_free_i64(val);
144
+ tcg_temp_free_i32(desc);
145
return true;
146
}
147
148
--
149
2.20.1
150
151
diff view generated by jsdifflib
Deleted patch
1
From: Philippe Mathieu-Daudé <f4bug@amsat.org>
2
1
3
We can use one MPC per SRAM bank, but we currently only wire the
4
IRQ from the first expansion MPC to the IRQ splitter. Fix that.
5
6
Fixes: bb75e16d5e6 ("hw/arm/iotkit: Wire up MPC interrupt lines")
7
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
8
Message-id: 20201107193403.436146-2-f4bug@amsat.org
9
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
10
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
11
---
12
hw/arm/armsse.c | 3 ++-
13
1 file changed, 2 insertions(+), 1 deletion(-)
14
15
diff --git a/hw/arm/armsse.c b/hw/arm/armsse.c
16
index XXXXXXX..XXXXXXX 100644
17
--- a/hw/arm/armsse.c
18
+++ b/hw/arm/armsse.c
19
@@ -XXX,XX +XXX,XX @@ static void armsse_realize(DeviceState *dev, Error **errp)
20
qdev_get_gpio_in(dev_splitter, 0));
21
qdev_connect_gpio_out(dev_splitter, 0,
22
qdev_get_gpio_in_named(dev_secctl,
23
- "mpc_status", 0));
24
+ "mpc_status",
25
+ i - IOTS_NUM_EXP_MPC));
26
}
27
28
qdev_connect_gpio_out(dev_splitter, 1,
29
--
30
2.20.1
31
32
diff view generated by jsdifflib
Deleted patch
1
From: Philippe Mathieu-Daudé <f4bug@amsat.org>
2
1
3
The system configuration controller (SYSCFG) doesn't have
4
any output IRQ (and the INTC input #71 belongs to the UART6).
5
Remove the invalid code.
6
7
Fixes: db635521a02 ("stm32f205: Add the stm32f205 SoC")
8
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
9
Message-id: 20201107193403.436146-3-f4bug@amsat.org
10
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
11
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
12
---
13
include/hw/misc/stm32f2xx_syscfg.h | 2 --
14
hw/arm/stm32f205_soc.c | 1 -
15
hw/misc/stm32f2xx_syscfg.c | 2 --
16
3 files changed, 5 deletions(-)
17
18
diff --git a/include/hw/misc/stm32f2xx_syscfg.h b/include/hw/misc/stm32f2xx_syscfg.h
19
index XXXXXXX..XXXXXXX 100644
20
--- a/include/hw/misc/stm32f2xx_syscfg.h
21
+++ b/include/hw/misc/stm32f2xx_syscfg.h
22
@@ -XXX,XX +XXX,XX @@ struct STM32F2XXSyscfgState {
23
uint32_t syscfg_exticr3;
24
uint32_t syscfg_exticr4;
25
uint32_t syscfg_cmpcr;
26
-
27
- qemu_irq irq;
28
};
29
30
#endif /* HW_STM32F2XX_SYSCFG_H */
31
diff --git a/hw/arm/stm32f205_soc.c b/hw/arm/stm32f205_soc.c
32
index XXXXXXX..XXXXXXX 100644
33
--- a/hw/arm/stm32f205_soc.c
34
+++ b/hw/arm/stm32f205_soc.c
35
@@ -XXX,XX +XXX,XX @@ static void stm32f205_soc_realize(DeviceState *dev_soc, Error **errp)
36
}
37
busdev = SYS_BUS_DEVICE(dev);
38
sysbus_mmio_map(busdev, 0, 0x40013800);
39
- sysbus_connect_irq(busdev, 0, qdev_get_gpio_in(armv7m, 71));
40
41
/* Attach UART (uses USART registers) and USART controllers */
42
for (i = 0; i < STM_NUM_USARTS; i++) {
43
diff --git a/hw/misc/stm32f2xx_syscfg.c b/hw/misc/stm32f2xx_syscfg.c
44
index XXXXXXX..XXXXXXX 100644
45
--- a/hw/misc/stm32f2xx_syscfg.c
46
+++ b/hw/misc/stm32f2xx_syscfg.c
47
@@ -XXX,XX +XXX,XX @@ static void stm32f2xx_syscfg_init(Object *obj)
48
{
49
STM32F2XXSyscfgState *s = STM32F2XX_SYSCFG(obj);
50
51
- sysbus_init_irq(SYS_BUS_DEVICE(obj), &s->irq);
52
-
53
memory_region_init_io(&s->mmio, obj, &stm32f2xx_syscfg_ops, s,
54
TYPE_STM32F2XX_SYSCFG, 0x400);
55
sysbus_init_mmio(SYS_BUS_DEVICE(obj), &s->mmio);
56
--
57
2.20.1
58
59
diff view generated by jsdifflib
Deleted patch
1
From: Philippe Mathieu-Daudé <f4bug@amsat.org>
2
1
3
omap2420_mpu_init() introduced in commit 827df9f3c5f ("Add basic
4
OMAP2 chip support") takes care of creating the 3 UARTs.
5
6
Then commit 58a26b477e9 ("Emulate a serial bluetooth HCI with H4+
7
extensions and attach to n8x0's UART") added n8x0_uart_setup()
8
which create the UART and connects it to an IRQ output,
9
overwritting the existing peripheral and its IRQ connection.
10
This is incorrect.
11
12
Fortunately we don't need to fix this, because commit 6da68df7f9b
13
("hw/arm/nseries: Replace the bluetooth chardev with a "null"
14
chardev") removed the use of this peripheral. We can simply
15
remove the code.
16
17
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
18
Message-id: 20201107193403.436146-4-f4bug@amsat.org
19
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
20
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
21
---
22
hw/arm/nseries.c | 11 -----------
23
1 file changed, 11 deletions(-)
24
25
diff --git a/hw/arm/nseries.c b/hw/arm/nseries.c
26
index XXXXXXX..XXXXXXX 100644
27
--- a/hw/arm/nseries.c
28
+++ b/hw/arm/nseries.c
29
@@ -XXX,XX +XXX,XX @@ static void n8x0_cbus_setup(struct n800_s *s)
30
cbus_attach(cbus, s->tahvo = tahvo_init(tahvo_irq, 1));
31
}
32
33
-static void n8x0_uart_setup(struct n800_s *s)
34
-{
35
- Chardev *radio = qemu_chr_new("bt-dummy-uart", "null", NULL);
36
- /*
37
- * Note: We used to connect N8X0_BT_RESET_GPIO and N8X0_BT_WKUP_GPIO
38
- * here, but this code has been removed with the bluetooth backend.
39
- */
40
- omap_uart_attach(s->mpu->uart[BT_UART], radio);
41
-}
42
-
43
static void n8x0_usb_setup(struct n800_s *s)
44
{
45
SysBusDevice *dev;
46
@@ -XXX,XX +XXX,XX @@ static void n8x0_init(MachineState *machine,
47
n8x0_spi_setup(s);
48
n8x0_dss_setup(s);
49
n8x0_cbus_setup(s);
50
- n8x0_uart_setup(s);
51
if (machine_usb(machine)) {
52
n8x0_usb_setup(s);
53
}
54
--
55
2.20.1
56
57
diff view generated by jsdifflib
Deleted patch
1
From: Philippe Mathieu-Daudé <f4bug@amsat.org>
2
1
3
The MusicPal board code connects both of the IRQ outputs of the UART
4
to the same INTC qemu_irq. Connecting two qemu_irqs outputs directly
5
to the same input is not valid as it produces subtly wrong behaviour
6
(for instance if both the IRQ lines are high, and then one goes
7
low, the INTC input will see this as a high-to-low transition
8
even though the second IRQ line should still be holding it high).
9
10
This kind of wiring needs an explicitly created OR gate; add one.
11
12
Inspired-by: Peter Maydell <peter.maydell@linaro.org>
13
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
14
Message-id: 20201107193403.436146-5-f4bug@amsat.org
15
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
16
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
17
---
18
hw/arm/musicpal.c | 17 +++++++++++++----
19
hw/arm/Kconfig | 1 +
20
2 files changed, 14 insertions(+), 4 deletions(-)
21
22
diff --git a/hw/arm/musicpal.c b/hw/arm/musicpal.c
23
index XXXXXXX..XXXXXXX 100644
24
--- a/hw/arm/musicpal.c
25
+++ b/hw/arm/musicpal.c
26
@@ -XXX,XX +XXX,XX @@
27
#include "ui/console.h"
28
#include "hw/i2c/i2c.h"
29
#include "hw/irq.h"
30
+#include "hw/or-irq.h"
31
#include "hw/audio/wm8750.h"
32
#include "sysemu/block-backend.h"
33
#include "sysemu/runstate.h"
34
@@ -XXX,XX +XXX,XX @@
35
#define MP_TIMER4_IRQ 7
36
#define MP_EHCI_IRQ 8
37
#define MP_ETH_IRQ 9
38
-#define MP_UART1_IRQ 11
39
-#define MP_UART2_IRQ 11
40
+#define MP_UART_SHARED_IRQ 11
41
#define MP_GPIO_IRQ 12
42
#define MP_RTC_IRQ 28
43
#define MP_AUDIO_IRQ 30
44
@@ -XXX,XX +XXX,XX @@ static void musicpal_init(MachineState *machine)
45
ARMCPU *cpu;
46
qemu_irq pic[32];
47
DeviceState *dev;
48
+ DeviceState *uart_orgate;
49
DeviceState *i2c_dev;
50
DeviceState *lcd_dev;
51
DeviceState *key_dev;
52
@@ -XXX,XX +XXX,XX @@ static void musicpal_init(MachineState *machine)
53
pic[MP_TIMER2_IRQ], pic[MP_TIMER3_IRQ],
54
pic[MP_TIMER4_IRQ], NULL);
55
56
- serial_mm_init(address_space_mem, MP_UART1_BASE, 2, pic[MP_UART1_IRQ],
57
+ /* Logically OR both UART IRQs together */
58
+ uart_orgate = DEVICE(object_new(TYPE_OR_IRQ));
59
+ object_property_set_int(OBJECT(uart_orgate), "num-lines", 2, &error_fatal);
60
+ qdev_realize_and_unref(uart_orgate, NULL, &error_fatal);
61
+ qdev_connect_gpio_out(DEVICE(uart_orgate), 0, pic[MP_UART_SHARED_IRQ]);
62
+
63
+ serial_mm_init(address_space_mem, MP_UART1_BASE, 2,
64
+ qdev_get_gpio_in(uart_orgate, 0),
65
1825000, serial_hd(0), DEVICE_NATIVE_ENDIAN);
66
- serial_mm_init(address_space_mem, MP_UART2_BASE, 2, pic[MP_UART2_IRQ],
67
+ serial_mm_init(address_space_mem, MP_UART2_BASE, 2,
68
+ qdev_get_gpio_in(uart_orgate, 1),
69
1825000, serial_hd(1), DEVICE_NATIVE_ENDIAN);
70
71
/* Register flash */
72
diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig
73
index XXXXXXX..XXXXXXX 100644
74
--- a/hw/arm/Kconfig
75
+++ b/hw/arm/Kconfig
76
@@ -XXX,XX +XXX,XX @@ config MUSCA
77
78
config MUSICPAL
79
bool
80
+ select OR_IRQ
81
select BITBANG_I2C
82
select MARVELL_88W8618
83
select PTIMER
84
--
85
2.20.1
86
87
diff view generated by jsdifflib
1
From: Philippe Mathieu-Daudé <f4bug@amsat.org>
1
From: Philippe Mathieu-Daudé <f4bug@amsat.org>
2
2
3
We don't need to fill the full pic[] array if we only use
3
Commit 06680b15b4 moved qemu_*_exec_dir() to cutils but forgot
4
few of the interrupt lines. Directly call qdev_get_gpio_in()
4
to move the macOS dyld(3) include, resulting in the following
5
when necessary.
5
error (when building with Homebrew GCC on macOS Monterey 12.4):
6
6
7
[313/1197] Compiling C object libqemuutil.a.p/util_cutils.c.o
8
FAILED: libqemuutil.a.p/util_cutils.c.o
9
../../util/cutils.c:1039:13: error: implicit declaration of function '_NSGetExecutablePath' [-Werror=implicit-function-declaration]
10
1039 | if (_NSGetExecutablePath(fpath, &len) == 0) {
11
| ^~~~~~~~~~~~~~~~~~~~
12
../../util/cutils.c:1039:13: error: nested extern declaration of '_NSGetExecutablePath' [-Werror=nested-externs]
13
14
Fix by moving the include line to cutils.
15
16
Fixes: 06680b15b4 ("include: move qemu_*_exec_dir() to cutils")
7
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
17
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
8
Message-id: 20201107193403.436146-6-f4bug@amsat.org
18
Message-id: 20220809222046.30812-1-f4bug@amsat.org
9
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
19
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
10
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
20
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
11
---
21
---
12
hw/arm/musicpal.c | 25 +++++++++++++------------
22
util/cutils.c | 4 ++++
13
1 file changed, 13 insertions(+), 12 deletions(-)
23
util/oslib-posix.c | 4 ----
24
2 files changed, 4 insertions(+), 4 deletions(-)
14
25
15
diff --git a/hw/arm/musicpal.c b/hw/arm/musicpal.c
26
diff --git a/util/cutils.c b/util/cutils.c
16
index XXXXXXX..XXXXXXX 100644
27
index XXXXXXX..XXXXXXX 100644
17
--- a/hw/arm/musicpal.c
28
--- a/util/cutils.c
18
+++ b/hw/arm/musicpal.c
29
+++ b/util/cutils.c
19
@@ -XXX,XX +XXX,XX @@ static struct arm_boot_info musicpal_binfo = {
30
@@ -XXX,XX +XXX,XX @@
20
static void musicpal_init(MachineState *machine)
31
#include <kernel/image.h>
21
{
32
#endif
22
ARMCPU *cpu;
33
23
- qemu_irq pic[32];
34
+#ifdef __APPLE__
24
DeviceState *dev;
35
+#include <mach-o/dyld.h>
25
+ DeviceState *pic;
36
+#endif
26
DeviceState *uart_orgate;
37
+
27
DeviceState *i2c_dev;
38
#ifdef G_OS_WIN32
28
DeviceState *lcd_dev;
39
#include <pathcch.h>
29
@@ -XXX,XX +XXX,XX @@ static void musicpal_init(MachineState *machine)
40
#include <wchar.h>
30
&error_fatal);
41
diff --git a/util/oslib-posix.c b/util/oslib-posix.c
31
memory_region_add_subregion(address_space_mem, MP_SRAM_BASE, sram);
42
index XXXXXXX..XXXXXXX 100644
32
43
--- a/util/oslib-posix.c
33
- dev = sysbus_create_simple(TYPE_MV88W8618_PIC, MP_PIC_BASE,
44
+++ b/util/oslib-posix.c
34
+ pic = sysbus_create_simple(TYPE_MV88W8618_PIC, MP_PIC_BASE,
45
@@ -XXX,XX +XXX,XX @@
35
qdev_get_gpio_in(DEVICE(cpu), ARM_CPU_IRQ));
46
#include <lwp.h>
36
- for (i = 0; i < 32; i++) {
47
#endif
37
- pic[i] = qdev_get_gpio_in(dev, i);
48
38
- }
49
-#ifdef __APPLE__
39
- sysbus_create_varargs(TYPE_MV88W8618_PIT, MP_PIT_BASE, pic[MP_TIMER1_IRQ],
50
-#include <mach-o/dyld.h>
40
- pic[MP_TIMER2_IRQ], pic[MP_TIMER3_IRQ],
51
-#endif
41
- pic[MP_TIMER4_IRQ], NULL);
52
-
42
+ sysbus_create_varargs(TYPE_MV88W8618_PIT, MP_PIT_BASE,
53
#include "qemu/mmap-alloc.h"
43
+ qdev_get_gpio_in(pic, MP_TIMER1_IRQ),
54
44
+ qdev_get_gpio_in(pic, MP_TIMER2_IRQ),
55
#ifdef CONFIG_DEBUG_STACK_USAGE
45
+ qdev_get_gpio_in(pic, MP_TIMER3_IRQ),
46
+ qdev_get_gpio_in(pic, MP_TIMER4_IRQ), NULL);
47
48
/* Logically OR both UART IRQs together */
49
uart_orgate = DEVICE(object_new(TYPE_OR_IRQ));
50
object_property_set_int(OBJECT(uart_orgate), "num-lines", 2, &error_fatal);
51
qdev_realize_and_unref(uart_orgate, NULL, &error_fatal);
52
- qdev_connect_gpio_out(DEVICE(uart_orgate), 0, pic[MP_UART_SHARED_IRQ]);
53
+ qdev_connect_gpio_out(DEVICE(uart_orgate), 0,
54
+ qdev_get_gpio_in(pic, MP_UART_SHARED_IRQ));
55
56
serial_mm_init(address_space_mem, MP_UART1_BASE, 2,
57
qdev_get_gpio_in(uart_orgate, 0),
58
@@ -XXX,XX +XXX,XX @@ static void musicpal_init(MachineState *machine)
59
OBJECT(get_system_memory()), &error_fatal);
60
sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal);
61
sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, MP_ETH_BASE);
62
- sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, pic[MP_ETH_IRQ]);
63
+ sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0,
64
+ qdev_get_gpio_in(pic, MP_ETH_IRQ));
65
66
sysbus_create_simple("mv88w8618_wlan", MP_WLAN_BASE, NULL);
67
68
sysbus_create_simple(TYPE_MUSICPAL_MISC, MP_MISC_BASE, NULL);
69
70
dev = sysbus_create_simple(TYPE_MUSICPAL_GPIO, MP_GPIO_BASE,
71
- pic[MP_GPIO_IRQ]);
72
+ qdev_get_gpio_in(pic, MP_GPIO_IRQ));
73
i2c_dev = sysbus_create_simple("gpio_i2c", -1, NULL);
74
i2c = (I2CBus *)qdev_get_child_bus(i2c_dev, "i2c");
75
76
@@ -XXX,XX +XXX,XX @@ static void musicpal_init(MachineState *machine)
77
NULL);
78
sysbus_realize_and_unref(s, &error_fatal);
79
sysbus_mmio_map(s, 0, MP_AUDIO_BASE);
80
- sysbus_connect_irq(s, 0, pic[MP_AUDIO_IRQ]);
81
+ sysbus_connect_irq(s, 0, qdev_get_gpio_in(pic, MP_AUDIO_IRQ));
82
83
musicpal_binfo.ram_size = MP_RAM_DEFAULT_SIZE;
84
arm_load_kernel(cpu, machine, &musicpal_binfo);
85
--
56
--
86
2.20.1
57
2.25.1
87
58
88
59
diff view generated by jsdifflib
Deleted patch
1
The nseries machines have a codepath that allows them to load a
2
secondary bootloader. This code wasn't checking that the
3
load_image_targphys() succeeded. Check the return value and report
4
the error to the user.
5
1
6
While we're in the vicinity, fix the comment style of the
7
comment documenting what this image load is doing.
8
9
Fixes: Coverity CID 1192904
10
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
11
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
12
Message-id: 20201103114918.11807-1-peter.maydell@linaro.org
13
---
14
hw/arm/nseries.c | 15 +++++++++++----
15
1 file changed, 11 insertions(+), 4 deletions(-)
16
17
diff --git a/hw/arm/nseries.c b/hw/arm/nseries.c
18
index XXXXXXX..XXXXXXX 100644
19
--- a/hw/arm/nseries.c
20
+++ b/hw/arm/nseries.c
21
@@ -XXX,XX +XXX,XX @@ static void n8x0_init(MachineState *machine,
22
/* No, wait, better start at the ROM. */
23
s->mpu->cpu->env.regs[15] = OMAP2_Q2_BASE + 0x400000;
24
25
- /* This is intended for loading the `secondary.bin' program from
26
+ /*
27
+ * This is intended for loading the `secondary.bin' program from
28
* Nokia images (the NOLO bootloader). The entry point seems
29
* to be at OMAP2_Q2_BASE + 0x400000.
30
*
31
@@ -XXX,XX +XXX,XX @@ static void n8x0_init(MachineState *machine,
32
* for them the entry point needs to be set to OMAP2_SRAM_BASE.
33
*
34
* The code above is for loading the `zImage' file from Nokia
35
- * images. */
36
- load_image_targphys(option_rom[0].name, OMAP2_Q2_BASE + 0x400000,
37
- machine->ram_size - 0x400000);
38
+ * images.
39
+ */
40
+ if (load_image_targphys(option_rom[0].name,
41
+ OMAP2_Q2_BASE + 0x400000,
42
+ machine->ram_size - 0x400000) < 0) {
43
+ error_report("Failed to load secondary bootloader %s",
44
+ option_rom[0].name);
45
+ exit(EXIT_FAILURE);
46
+ }
47
48
n800_setup_nolo_tags(nolo_tags);
49
cpu_physical_memory_write(OMAP2_SRAM_BASE, nolo_tags, 0x10000);
50
--
51
2.20.1
52
53
diff view generated by jsdifflib