1
Patches for rc1: nothing major, just some minor bugfixes and
1
Hi; here's a relatively small target-arm queue, pretty much all
2
code cleanups.
2
bug fixes. (There are a few non-arm patches that I've thrown in
3
there too for my convenience :-))
3
4
5
thanks
4
-- PMM
6
-- PMM
5
7
6
The following changes since commit f7e1914adad8885a5d4c70239ab90d901ed97e9f:
8
The following changes since commit 278238505d28d292927bff7683f39fb4fbca7fd1:
7
9
8
Merge remote-tracking branch 'remotes/alistair/tags/pull-riscv-to-apply-20201109' into staging (2020-11-10 09:24:56 +0000)
10
Merge tag 'pull-tcg-20230511-2' of https://gitlab.com/rth7680/qemu into staging (2023-05-11 11:44:23 +0100)
9
11
10
are available in the Git repository at:
12
are available in the Git repository at:
11
13
12
https://git.linaro.org/people/pmaydell/qemu-arm.git tags/pull-target-arm-20201110
14
https://git.linaro.org/people/pmaydell/qemu-arm.git tags/pull-target-arm-20230512
13
15
14
for you to fetch changes up to b6c56c8a9a4064ea783f352f43c5df6231a110fa:
16
for you to fetch changes up to 478dccbb99db0bf8f00537dd0b4d0de88d5cb537:
15
17
16
target/arm/translate-neon.c: Handle VTBL UNDEF case before VFP access check (2020-11-10 11:03:48 +0000)
18
target/arm: Correct AArch64.S2MinTxSZ 32-bit EL1 input size check (2023-05-12 16:01:25 +0100)
17
19
18
----------------------------------------------------------------
20
----------------------------------------------------------------
19
target-arm queue:
21
target-arm queue:
20
* hw/arm/Kconfig: ARM_V7M depends on PTIMER
22
* More refactoring of files into tcg/
21
* Minor coding style fixes
23
* Don't allow stage 2 page table walks to downgrade to NS
22
* docs: add some notes on the sbsa-ref machine
24
* Fix handling of SW and NSW bits for stage 2 walks
23
* hw/arm/virt: Remove dependency on Cortex-A15 MPCore peripherals
25
* MAINTAINERS: Update Akihiko Odaki's email address
24
* target/arm: Fix neon VTBL/VTBX for len > 1
26
* ui: Fix pixel colour channel order for PNG screenshots
25
* hw/arm/armsse: Correct expansion MPC interrupt lines
27
* docs: Remove unused weirdly-named cross-reference targets
26
* hw/misc/stm32f2xx_syscfg: Remove extraneous IRQ
28
* hw/mips/malta: Fix minor dead code issue
27
* hw/arm/nseries: Remove invalid/unnecessary n8x0_uart_setup()
29
* Fixes for the "allow CONFIG_TCG=n" changes
28
* hw/arm/musicpal: Don't connect two qemu_irqs directly to the same input
30
* tests/qtest: Don't run cdrom boot tests if no accelerator is present
29
* hw/arm/musicpal: Only use qdev_get_gpio_in() when necessary
31
* target/arm: Correct AArch64.S2MinTxSZ 32-bit EL1 input size check
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
32
34
----------------------------------------------------------------
33
----------------------------------------------------------------
35
Alex Bennée (1):
34
Akihiko Odaki (1):
36
docs: add some notes on the sbsa-ref machine
35
MAINTAINERS: Update Akihiko Odaki's email address
37
36
38
AlexChen (1):
37
Fabiano Rosas (3):
39
ssi: Fix bad printf format specifiers
38
target/arm: Select SEMIHOSTING when using TCG
39
target/arm: Select CONFIG_ARM_V7M when TCG is enabled
40
tests/qtest: Don't run cdrom boot tests if no accelerator is present
40
41
41
Andrew Jones (1):
42
Peter Maydell (6):
42
hw/arm/Kconfig: ARM_V7M depends on PTIMER
43
target/arm: Don't allow stage 2 page table walks to downgrade to NS
44
target/arm: Fix handling of SW and NSW bits for stage 2 walks
45
ui: Fix pixel colour channel order for PNG screenshots
46
docs: Remove unused weirdly-named cross-reference targets
47
hw/mips/malta: Fix minor dead code issue
48
target/arm: Correct AArch64.S2MinTxSZ 32-bit EL1 input size check
43
49
44
Havard Skinnemoen (1):
50
Richard Henderson (2):
45
tests/qtest/npcm7xx_rng-test: count runs properly
51
target/arm: Move translate-a32.h, arm_ldst.h, sve_ldst_internal.h to tcg/
52
target/arm: Move helper-{a64,mve,sme,sve}.h to tcg/
46
53
47
Peter Maydell (2):
54
MAINTAINERS | 4 +-
48
hw/arm/nseries: Check return value from load_image_targphys()
55
docs/system/devices/igb.rst | 2 +-
49
target/arm/translate-neon.c: Handle VTBL UNDEF case before VFP access check
56
docs/system/devices/ivshmem.rst | 2 -
50
57
docs/system/devices/net.rst | 2 +-
51
Philippe Mathieu-Daudé (6):
58
docs/system/devices/usb.rst | 2 -
52
hw/arm/virt: Remove dependency on Cortex-A15 MPCore peripherals
59
docs/system/keys.rst | 2 +-
53
hw/arm/armsse: Correct expansion MPC interrupt lines
60
docs/system/linuxboot.rst | 2 +-
54
hw/misc/stm32f2xx_syscfg: Remove extraneous IRQ
61
docs/system/target-i386.rst | 4 --
55
hw/arm/nseries: Remove invalid/unnecessary n8x0_uart_setup()
62
target/arm/helper.h | 8 +--
56
hw/arm/musicpal: Don't connect two qemu_irqs directly to the same input
63
target/arm/internals.h | 12 +++-
57
hw/arm/musicpal: Only use qdev_get_gpio_in() when necessary
64
target/arm/{ => tcg}/arm_ldst.h | 0
58
65
target/arm/{ => tcg}/helper-a64.h | 0
59
Richard Henderson (1):
66
target/arm/{ => tcg}/helper-mve.h | 0
60
target/arm: Fix neon VTBL/VTBX for len > 1
67
target/arm/{ => tcg}/helper-sme.h | 0
61
68
target/arm/{ => tcg}/helper-sve.h | 0
62
Xinhao Zhang (3):
69
target/arm/{ => tcg}/sve_ldst_internal.h | 0
63
target/arm: add spaces around operator
70
target/arm/{ => tcg}/translate-a32.h | 0
64
target/arm: Don't use '#' flag of printf format
71
hw/mips/malta.c | 5 +-
65
target/arm: add space before the open parenthesis '('
72
target/arm/gdbstub64.c | 2 +-
66
73
target/arm/helper.c | 15 ++++-
67
docs/system/arm/sbsa.rst | 32 ++++++++++++++++++++++
74
target/arm/ptw.c | 95 +++++++++++++++++++-------------
68
docs/system/target-arm.rst | 1 +
75
target/arm/tcg/pauth_helper.c | 6 +-
69
include/hw/misc/stm32f2xx_syscfg.h | 2 --
76
tests/qtest/cdrom-test.c | 10 ++++
70
target/arm/helper.h | 2 +-
77
ui/console.c | 4 +-
71
hw/arm/armsse.c | 3 +-
78
target/arm/Kconfig | 9 +--
72
hw/arm/musicpal.c | 40 +++++++++++++++++----------
79
25 files changed, 109 insertions(+), 77 deletions(-)
73
hw/arm/nseries.c | 26 ++++++++----------
80
rename target/arm/{ => tcg}/arm_ldst.h (100%)
74
hw/arm/stm32f205_soc.c | 1 -
81
rename target/arm/{ => tcg}/helper-a64.h (100%)
75
hw/misc/stm32f2xx_syscfg.c | 2 --
82
rename target/arm/{ => tcg}/helper-mve.h (100%)
76
hw/ssi/imx_spi.c | 2 +-
83
rename target/arm/{ => tcg}/helper-sme.h (100%)
77
hw/ssi/xilinx_spi.c | 2 +-
84
rename target/arm/{ => tcg}/helper-sve.h (100%)
78
target/arm/arch_dump.c | 8 +++---
85
rename target/arm/{ => tcg}/sve_ldst_internal.h (100%)
79
target/arm/arm-semi.c | 8 +++---
86
rename target/arm/{ => tcg}/translate-a32.h (100%)
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
1
From: Philippe Mathieu-Daudé <f4bug@amsat.org>
1
From: Richard Henderson <richard.henderson@linaro.org>
2
2
3
We don't need to fill the full pic[] array if we only use
3
These files got missed when populating tcg/.
4
few of the interrupt lines. Directly call qdev_get_gpio_in()
4
Because they are included with "", no change to the users required.
5
when necessary.
6
5
7
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
6
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
8
Message-id: 20201107193403.436146-6-f4bug@amsat.org
7
Reviewed-by: Fabiano Rosas <farosas@suse.de>
9
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
8
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
9
Message-id: 20230504110412.1892411-2-richard.henderson@linaro.org
10
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
10
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
11
---
11
---
12
hw/arm/musicpal.c | 25 +++++++++++++------------
12
target/arm/{ => tcg}/arm_ldst.h | 0
13
1 file changed, 13 insertions(+), 12 deletions(-)
13
target/arm/{ => tcg}/sve_ldst_internal.h | 0
14
target/arm/{ => tcg}/translate-a32.h | 0
15
3 files changed, 0 insertions(+), 0 deletions(-)
16
rename target/arm/{ => tcg}/arm_ldst.h (100%)
17
rename target/arm/{ => tcg}/sve_ldst_internal.h (100%)
18
rename target/arm/{ => tcg}/translate-a32.h (100%)
14
19
15
diff --git a/hw/arm/musicpal.c b/hw/arm/musicpal.c
20
diff --git a/target/arm/arm_ldst.h b/target/arm/tcg/arm_ldst.h
16
index XXXXXXX..XXXXXXX 100644
21
similarity index 100%
17
--- a/hw/arm/musicpal.c
22
rename from target/arm/arm_ldst.h
18
+++ b/hw/arm/musicpal.c
23
rename to target/arm/tcg/arm_ldst.h
19
@@ -XXX,XX +XXX,XX @@ static struct arm_boot_info musicpal_binfo = {
24
diff --git a/target/arm/sve_ldst_internal.h b/target/arm/tcg/sve_ldst_internal.h
20
static void musicpal_init(MachineState *machine)
25
similarity index 100%
21
{
26
rename from target/arm/sve_ldst_internal.h
22
ARMCPU *cpu;
27
rename to target/arm/tcg/sve_ldst_internal.h
23
- qemu_irq pic[32];
28
diff --git a/target/arm/translate-a32.h b/target/arm/tcg/translate-a32.h
24
DeviceState *dev;
29
similarity index 100%
25
+ DeviceState *pic;
30
rename from target/arm/translate-a32.h
26
DeviceState *uart_orgate;
31
rename to target/arm/tcg/translate-a32.h
27
DeviceState *i2c_dev;
28
DeviceState *lcd_dev;
29
@@ -XXX,XX +XXX,XX @@ static void musicpal_init(MachineState *machine)
30
&error_fatal);
31
memory_region_add_subregion(address_space_mem, MP_SRAM_BASE, sram);
32
33
- dev = sysbus_create_simple(TYPE_MV88W8618_PIC, MP_PIC_BASE,
34
+ pic = sysbus_create_simple(TYPE_MV88W8618_PIC, MP_PIC_BASE,
35
qdev_get_gpio_in(DEVICE(cpu), ARM_CPU_IRQ));
36
- for (i = 0; i < 32; i++) {
37
- pic[i] = qdev_get_gpio_in(dev, i);
38
- }
39
- sysbus_create_varargs(TYPE_MV88W8618_PIT, MP_PIT_BASE, pic[MP_TIMER1_IRQ],
40
- pic[MP_TIMER2_IRQ], pic[MP_TIMER3_IRQ],
41
- pic[MP_TIMER4_IRQ], NULL);
42
+ sysbus_create_varargs(TYPE_MV88W8618_PIT, MP_PIT_BASE,
43
+ qdev_get_gpio_in(pic, MP_TIMER1_IRQ),
44
+ qdev_get_gpio_in(pic, MP_TIMER2_IRQ),
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
--
32
--
86
2.20.1
33
2.34.1
87
34
88
35
diff view generated by jsdifflib
1
From: Richard Henderson <richard.henderson@linaro.org>
1
From: Richard Henderson <richard.henderson@linaro.org>
2
2
3
The helper function did not get updated when we reorganized
3
While we cannot move the main "helper.h" out of target/arm/,
4
the vector register file for SVE. Since then, the neon dregs
4
due to usage by generic code, we can move the sub-includes.
5
are non-sequential and cannot be simply indexed.
6
5
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>
6
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
13
[PMM: use aa32_vfp_dreg() rather than opencoding]
7
Reviewed-by: Fabiano Rosas <farosas@suse.de>
14
Message-id: 20201105171126.88014-1-richard.henderson@linaro.org
8
Message-id: 20230504110412.1892411-3-richard.henderson@linaro.org
15
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
9
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
16
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
10
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
17
---
11
---
18
target/arm/helper.h | 2 +-
12
target/arm/helper.h | 8 ++++----
19
target/arm/op_helper.c | 23 +++++++++--------
13
target/arm/{ => tcg}/helper-a64.h | 0
20
target/arm/translate-neon.c.inc | 44 +++++++++++----------------------
14
target/arm/{ => tcg}/helper-mve.h | 0
21
3 files changed, 29 insertions(+), 40 deletions(-)
15
target/arm/{ => tcg}/helper-sme.h | 0
16
target/arm/{ => tcg}/helper-sve.h | 0
17
5 files changed, 4 insertions(+), 4 deletions(-)
18
rename target/arm/{ => tcg}/helper-a64.h (100%)
19
rename target/arm/{ => tcg}/helper-mve.h (100%)
20
rename target/arm/{ => tcg}/helper-sme.h (100%)
21
rename target/arm/{ => tcg}/helper-sve.h (100%)
22
22
23
diff --git a/target/arm/helper.h b/target/arm/helper.h
23
diff --git a/target/arm/helper.h b/target/arm/helper.h
24
index XXXXXXX..XXXXXXX 100644
24
index XXXXXXX..XXXXXXX 100644
25
--- a/target/arm/helper.h
25
--- a/target/arm/helper.h
26
+++ b/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)
27
@@ -XXX,XX +XXX,XX @@ DEF_HELPER_FLAGS_5(gvec_uclamp_d, TCG_CALL_NO_RWG,
28
DEF_HELPER_FLAGS_2(rsqrte_f64, TCG_CALL_NO_RWG, f64, f64, ptr)
28
void, ptr, ptr, ptr, ptr, i32)
29
DEF_HELPER_FLAGS_1(recpe_u32, TCG_CALL_NO_RWG, i32, i32)
29
30
DEF_HELPER_FLAGS_1(rsqrte_u32, TCG_CALL_NO_RWG, i32, i32)
30
#ifdef TARGET_AARCH64
31
-DEF_HELPER_FLAGS_4(neon_tbl, TCG_CALL_NO_RWG, i32, i32, i32, ptr, i32)
31
-#include "helper-a64.h"
32
+DEF_HELPER_FLAGS_4(neon_tbl, TCG_CALL_NO_RWG, i64, env, i32, i64, i64)
32
-#include "helper-sve.h"
33
33
-#include "helper-sme.h"
34
DEF_HELPER_3(shl_cc, i32, env, i32, i32)
34
+#include "tcg/helper-a64.h"
35
DEF_HELPER_3(shr_cc, i32, env, i32, i32)
35
+#include "tcg/helper-sve.h"
36
diff --git a/target/arm/op_helper.c b/target/arm/op_helper.c
36
+#include "tcg/helper-sme.h"
37
index XXXXXXX..XXXXXXX 100644
37
#endif
38
--- a/target/arm/op_helper.c
38
39
+++ b/target/arm/op_helper.c
39
-#include "helper-mve.h"
40
@@ -XXX,XX +XXX,XX @@ void raise_exception_ra(CPUARMState *env, uint32_t excp, uint32_t syndrome,
40
+#include "tcg/helper-mve.h"
41
cpu_loop_exit_restore(cs, ra);
41
diff --git a/target/arm/helper-a64.h b/target/arm/tcg/helper-a64.h
42
}
42
similarity index 100%
43
43
rename from target/arm/helper-a64.h
44
-uint32_t HELPER(neon_tbl)(uint32_t ireg, uint32_t def, void *vn,
44
rename to target/arm/tcg/helper-a64.h
45
- uint32_t maxindex)
45
diff --git a/target/arm/helper-mve.h b/target/arm/tcg/helper-mve.h
46
+uint64_t HELPER(neon_tbl)(CPUARMState *env, uint32_t desc,
46
similarity index 100%
47
+ uint64_t ireg, uint64_t def)
47
rename from target/arm/helper-mve.h
48
{
48
rename to target/arm/tcg/helper-mve.h
49
- uint32_t val, shift;
49
diff --git a/target/arm/helper-sme.h b/target/arm/tcg/helper-sme.h
50
- uint64_t *table = vn;
50
similarity index 100%
51
+ uint64_t tmp, val = 0;
51
rename from target/arm/helper-sme.h
52
+ uint32_t maxindex = ((desc & 3) + 1) * 8;
52
rename to target/arm/tcg/helper-sme.h
53
+ uint32_t base_reg = desc >> 2;
53
diff --git a/target/arm/helper-sve.h b/target/arm/tcg/helper-sve.h
54
+ uint32_t shift, index, reg;
54
similarity index 100%
55
55
rename from target/arm/helper-sve.h
56
- val = 0;
56
rename to target/arm/tcg/helper-sve.h
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
--
57
--
149
2.20.1
58
2.34.1
150
59
151
60
diff view generated by jsdifflib
1
The nseries machines have a codepath that allows them to load a
1
Bit 63 in a Table descriptor is only the NSTable bit for stage 1
2
secondary bootloader. This code wasn't checking that the
2
translations; in stage 2 it is RES0. We were incorrectly looking at
3
load_image_targphys() succeeded. Check the return value and report
3
it all the time.
4
the error to the user.
5
4
6
While we're in the vicinity, fix the comment style of the
5
This causes problems if:
7
comment documenting what this image load is doing.
6
* the stage 2 table descriptor was incorrectly setting the RES0 bit
7
* we are doing a stage 2 translation in Secure address space for
8
a NonSecure stage 1 regime -- in this case we would incorrectly
9
do an immediate downgrade to NonSecure
8
10
9
Fixes: Coverity CID 1192904
11
A bug elsewhere in the code currently prevents us from getting
12
to the second situation, but when we fix that it will be possible.
13
14
Cc: qemu-stable@nongnu.org
10
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
15
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
11
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
16
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
12
Message-id: 20201103114918.11807-1-peter.maydell@linaro.org
17
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
18
Message-id: 20230504135425.2748672-2-peter.maydell@linaro.org
13
---
19
---
14
hw/arm/nseries.c | 15 +++++++++++----
20
target/arm/ptw.c | 5 +++--
15
1 file changed, 11 insertions(+), 4 deletions(-)
21
1 file changed, 3 insertions(+), 2 deletions(-)
16
22
17
diff --git a/hw/arm/nseries.c b/hw/arm/nseries.c
23
diff --git a/target/arm/ptw.c b/target/arm/ptw.c
18
index XXXXXXX..XXXXXXX 100644
24
index XXXXXXX..XXXXXXX 100644
19
--- a/hw/arm/nseries.c
25
--- a/target/arm/ptw.c
20
+++ b/hw/arm/nseries.c
26
+++ b/target/arm/ptw.c
21
@@ -XXX,XX +XXX,XX @@ static void n8x0_init(MachineState *machine,
27
@@ -XXX,XX +XXX,XX @@ static bool get_phys_addr_lpae(CPUARMState *env, S1Translate *ptw,
22
/* No, wait, better start at the ROM. */
28
descaddrmask &= ~indexmask_grainsize;
23
s->mpu->cpu->env.regs[15] = OMAP2_Q2_BASE + 0x400000;
29
24
30
/*
25
- /* This is intended for loading the `secondary.bin' program from
31
- * Secure accesses start with the page table in secure memory and
26
+ /*
32
+ * Secure stage 1 accesses start with the page table in secure memory and
27
+ * This is intended for loading the `secondary.bin' program from
33
* can be downgraded to non-secure at any step. Non-secure accesses
28
* Nokia images (the NOLO bootloader). The entry point seems
34
* remain non-secure. We implement this by just ORing in the NSTable/NS
29
* to be at OMAP2_Q2_BASE + 0x400000.
35
* bits at each step.
30
*
36
+ * Stage 2 never gets this kind of downgrade.
31
@@ -XXX,XX +XXX,XX @@ static void n8x0_init(MachineState *machine,
37
*/
32
* for them the entry point needs to be set to OMAP2_SRAM_BASE.
38
tableattrs = is_secure ? 0 : (1 << 4);
33
*
39
34
* The code above is for loading the `zImage' file from Nokia
40
next_level:
35
- * images. */
41
descaddr |= (address >> (stride * (4 - level))) & indexmask;
36
- load_image_targphys(option_rom[0].name, OMAP2_Q2_BASE + 0x400000,
42
descaddr &= ~7ULL;
37
- machine->ram_size - 0x400000);
43
- nstable = extract32(tableattrs, 4, 1);
38
+ * images.
44
+ nstable = !regime_is_stage2(mmu_idx) && extract32(tableattrs, 4, 1);
39
+ */
45
if (nstable) {
40
+ if (load_image_targphys(option_rom[0].name,
46
/*
41
+ OMAP2_Q2_BASE + 0x400000,
47
* Stage2_S -> Stage2 or Phys_S -> Phys_NS
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
--
48
--
51
2.20.1
49
2.34.1
52
50
53
51
diff view generated by jsdifflib
1
From: Philippe Mathieu-Daudé <f4bug@amsat.org>
1
We currently don't correctly handle the VSTCR_EL2.SW and VTCR_EL2.NSW
2
configuration bits. These allow configuration of whether the stage 2
3
page table walks for Secure IPA and NonSecure IPA should do their
4
descriptor reads from Secure or NonSecure physical addresses. (This
5
is separate from how the translation table base address and other
6
parameters are set: an NS IPA always uses VTTBR_EL2 and VTCR_EL2
7
for its base address and walk parameters, regardless of the NSW bit,
8
and similarly for Secure.)
2
9
3
omap2420_mpu_init() introduced in commit 827df9f3c5f ("Add basic
10
Provide a new function ptw_idx_for_stage_2() which returns the
4
OMAP2 chip support") takes care of creating the 3 UARTs.
11
MMU index to use for descriptor reads, and use it to set up
12
the .in_ptw_idx wherever we call get_phys_addr_lpae().
5
13
6
Then commit 58a26b477e9 ("Emulate a serial bluetooth HCI with H4+
14
For a stage 2 walk, wherever we call get_phys_addr_lpae():
7
extensions and attach to n8x0's UART") added n8x0_uart_setup()
15
* .in_ptw_idx should be ptw_idx_for_stage_2() of the .in_mmu_idx
8
which create the UART and connects it to an IRQ output,
16
* .in_secure should be true if .in_mmu_idx is Stage2_S
9
overwritting the existing peripheral and its IRQ connection.
10
This is incorrect.
11
17
12
Fortunately we don't need to fix this, because commit 6da68df7f9b
18
This allows us to correct S1_ptw_translate() so that it consistently
13
("hw/arm/nseries: Replace the bluetooth chardev with a "null"
19
always sets its (out_secure, out_phys) to the result it gets from the
14
chardev") removed the use of this peripheral. We can simply
20
S2 walk (either by calling get_phys_addr_lpae() or by TLB lookup).
15
remove the code.
21
This makes better conceptual sense because the S2 walk should return
22
us an (address space, address) tuple, not an address that we then
23
randomly assign to S or NS.
16
24
17
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
25
Our previous handling of SW and NSW was broken, so guest code
18
Message-id: 20201107193403.436146-4-f4bug@amsat.org
26
trying to use these bits to put the s2 page tables in the "other"
19
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
27
address space wouldn't work correctly.
28
29
Cc: qemu-stable@nongnu.org
30
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1600
20
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
31
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
32
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
33
Message-id: 20230504135425.2748672-3-peter.maydell@linaro.org
21
---
34
---
22
hw/arm/nseries.c | 11 -----------
35
target/arm/ptw.c | 76 ++++++++++++++++++++++++++++++++----------------
23
1 file changed, 11 deletions(-)
36
1 file changed, 51 insertions(+), 25 deletions(-)
24
37
25
diff --git a/hw/arm/nseries.c b/hw/arm/nseries.c
38
diff --git a/target/arm/ptw.c b/target/arm/ptw.c
26
index XXXXXXX..XXXXXXX 100644
39
index XXXXXXX..XXXXXXX 100644
27
--- a/hw/arm/nseries.c
40
--- a/target/arm/ptw.c
28
+++ b/hw/arm/nseries.c
41
+++ b/target/arm/ptw.c
29
@@ -XXX,XX +XXX,XX @@ static void n8x0_cbus_setup(struct n800_s *s)
42
@@ -XXX,XX +XXX,XX @@ ARMMMUIdx arm_stage1_mmu_idx(CPUARMState *env)
30
cbus_attach(cbus, s->tahvo = tahvo_init(tahvo_irq, 1));
43
return stage_1_mmu_idx(arm_mmu_idx(env));
31
}
44
}
32
45
33
-static void n8x0_uart_setup(struct n800_s *s)
46
+/*
34
-{
47
+ * Return where we should do ptw loads from for a stage 2 walk.
35
- Chardev *radio = qemu_chr_new("bt-dummy-uart", "null", NULL);
48
+ * This depends on whether the address we are looking up is a
36
- /*
49
+ * Secure IPA or a NonSecure IPA, which we know from whether this is
37
- * Note: We used to connect N8X0_BT_RESET_GPIO and N8X0_BT_WKUP_GPIO
50
+ * Stage2 or Stage2_S.
38
- * here, but this code has been removed with the bluetooth backend.
51
+ * If this is the Secure EL1&0 regime we need to check the NSW and SW bits.
39
- */
52
+ */
40
- omap_uart_attach(s->mpu->uart[BT_UART], radio);
53
+static ARMMMUIdx ptw_idx_for_stage_2(CPUARMState *env, ARMMMUIdx stage2idx)
41
-}
54
+{
42
-
55
+ bool s2walk_secure;
43
static void n8x0_usb_setup(struct n800_s *s)
56
+
57
+ /*
58
+ * We're OK to check the current state of the CPU here because
59
+ * (1) we always invalidate all TLBs when the SCR_EL3.NS bit changes
60
+ * (2) there's no way to do a lookup that cares about Stage 2 for a
61
+ * different security state to the current one for AArch64, and AArch32
62
+ * never has a secure EL2. (AArch32 ATS12NSO[UP][RW] allow EL3 to do
63
+ * an NS stage 1+2 lookup while the NS bit is 0.)
64
+ */
65
+ if (!arm_is_secure_below_el3(env) || !arm_el_is_aa64(env, 3)) {
66
+ return ARMMMUIdx_Phys_NS;
67
+ }
68
+ if (stage2idx == ARMMMUIdx_Stage2_S) {
69
+ s2walk_secure = !(env->cp15.vstcr_el2 & VSTCR_SW);
70
+ } else {
71
+ s2walk_secure = !(env->cp15.vtcr_el2 & VTCR_NSW);
72
+ }
73
+ return s2walk_secure ? ARMMMUIdx_Phys_S : ARMMMUIdx_Phys_NS;
74
+
75
+}
76
+
77
static bool regime_translation_big_endian(CPUARMState *env, ARMMMUIdx mmu_idx)
44
{
78
{
45
SysBusDevice *dev;
79
return (regime_sctlr(env, mmu_idx) & SCTLR_EE) != 0;
46
@@ -XXX,XX +XXX,XX @@ static void n8x0_init(MachineState *machine,
80
@@ -XXX,XX +XXX,XX @@ static bool S1_ptw_translate(CPUARMState *env, S1Translate *ptw,
47
n8x0_spi_setup(s);
81
ARMMMUIdx mmu_idx = ptw->in_mmu_idx;
48
n8x0_dss_setup(s);
82
ARMMMUIdx s2_mmu_idx = ptw->in_ptw_idx;
49
n8x0_cbus_setup(s);
83
uint8_t pte_attrs;
50
- n8x0_uart_setup(s);
84
- bool pte_secure;
51
if (machine_usb(machine)) {
85
52
n8x0_usb_setup(s);
86
ptw->out_virt = addr;
87
88
@@ -XXX,XX +XXX,XX @@ static bool S1_ptw_translate(CPUARMState *env, S1Translate *ptw,
89
if (regime_is_stage2(s2_mmu_idx)) {
90
S1Translate s2ptw = {
91
.in_mmu_idx = s2_mmu_idx,
92
- .in_ptw_idx = is_secure ? ARMMMUIdx_Phys_S : ARMMMUIdx_Phys_NS,
93
- .in_secure = is_secure,
94
+ .in_ptw_idx = ptw_idx_for_stage_2(env, s2_mmu_idx),
95
+ .in_secure = s2_mmu_idx == ARMMMUIdx_Stage2_S,
96
.in_debug = true,
97
};
98
GetPhysAddrResult s2 = { };
99
@@ -XXX,XX +XXX,XX @@ static bool S1_ptw_translate(CPUARMState *env, S1Translate *ptw,
100
}
101
ptw->out_phys = s2.f.phys_addr;
102
pte_attrs = s2.cacheattrs.attrs;
103
- pte_secure = s2.f.attrs.secure;
104
+ ptw->out_secure = s2.f.attrs.secure;
105
} else {
106
/* Regime is physical. */
107
ptw->out_phys = addr;
108
pte_attrs = 0;
109
- pte_secure = is_secure;
110
+ ptw->out_secure = s2_mmu_idx == ARMMMUIdx_Phys_S;
111
}
112
ptw->out_host = NULL;
113
ptw->out_rw = false;
114
@@ -XXX,XX +XXX,XX @@ static bool S1_ptw_translate(CPUARMState *env, S1Translate *ptw,
115
ptw->out_phys = full->phys_addr | (addr & ~TARGET_PAGE_MASK);
116
ptw->out_rw = full->prot & PAGE_WRITE;
117
pte_attrs = full->pte_attrs;
118
- pte_secure = full->attrs.secure;
119
+ ptw->out_secure = full->attrs.secure;
120
#else
121
g_assert_not_reached();
122
#endif
123
@@ -XXX,XX +XXX,XX @@ static bool S1_ptw_translate(CPUARMState *env, S1Translate *ptw,
124
}
125
}
126
127
- /* Check if page table walk is to secure or non-secure PA space. */
128
- ptw->out_secure = (is_secure
129
- && !(pte_secure
130
- ? env->cp15.vstcr_el2 & VSTCR_SW
131
- : env->cp15.vtcr_el2 & VTCR_NSW));
132
ptw->out_be = regime_translation_big_endian(env, mmu_idx);
133
return true;
134
135
@@ -XXX,XX +XXX,XX @@ static bool get_phys_addr_twostage(CPUARMState *env, S1Translate *ptw,
136
hwaddr ipa;
137
int s1_prot, s1_lgpgsz;
138
bool is_secure = ptw->in_secure;
139
- bool ret, ipa_secure, s2walk_secure;
140
+ bool ret, ipa_secure;
141
ARMCacheAttrs cacheattrs1;
142
bool is_el0;
143
uint64_t hcr;
144
@@ -XXX,XX +XXX,XX @@ static bool get_phys_addr_twostage(CPUARMState *env, S1Translate *ptw,
145
146
ipa = result->f.phys_addr;
147
ipa_secure = result->f.attrs.secure;
148
- if (is_secure) {
149
- /* Select TCR based on the NS bit from the S1 walk. */
150
- s2walk_secure = !(ipa_secure
151
- ? env->cp15.vstcr_el2 & VSTCR_SW
152
- : env->cp15.vtcr_el2 & VTCR_NSW);
153
- } else {
154
- assert(!ipa_secure);
155
- s2walk_secure = false;
156
- }
157
158
is_el0 = ptw->in_mmu_idx == ARMMMUIdx_Stage1_E0;
159
- ptw->in_mmu_idx = s2walk_secure ? ARMMMUIdx_Stage2_S : ARMMMUIdx_Stage2;
160
- ptw->in_ptw_idx = s2walk_secure ? ARMMMUIdx_Phys_S : ARMMMUIdx_Phys_NS;
161
- ptw->in_secure = s2walk_secure;
162
+ ptw->in_mmu_idx = ipa_secure ? ARMMMUIdx_Stage2_S : ARMMMUIdx_Stage2;
163
+ ptw->in_secure = ipa_secure;
164
+ ptw->in_ptw_idx = ptw_idx_for_stage_2(env, ptw->in_mmu_idx);
165
166
/*
167
* S1 is done, now do S2 translation.
168
@@ -XXX,XX +XXX,XX @@ static bool get_phys_addr_with_struct(CPUARMState *env, S1Translate *ptw,
169
ptw->in_ptw_idx = is_secure ? ARMMMUIdx_Stage2_S : ARMMMUIdx_Stage2;
170
break;
171
172
+ case ARMMMUIdx_Stage2:
173
+ case ARMMMUIdx_Stage2_S:
174
+ /*
175
+ * Second stage lookup uses physical for ptw; whether this is S or
176
+ * NS may depend on the SW/NSW bits if this is a stage 2 lookup for
177
+ * the Secure EL2&0 regime.
178
+ */
179
+ ptw->in_ptw_idx = ptw_idx_for_stage_2(env, mmu_idx);
180
+ break;
181
+
182
case ARMMMUIdx_E10_0:
183
s1_mmu_idx = ARMMMUIdx_Stage1_E0;
184
goto do_twostage;
185
@@ -XXX,XX +XXX,XX @@ static bool get_phys_addr_with_struct(CPUARMState *env, S1Translate *ptw,
186
/* fall through */
187
188
default:
189
- /* Single stage and second stage uses physical for ptw. */
190
+ /* Single stage uses physical for ptw. */
191
ptw->in_ptw_idx = is_secure ? ARMMMUIdx_Phys_S : ARMMMUIdx_Phys_NS;
192
break;
53
}
193
}
54
--
194
--
55
2.20.1
195
2.34.1
56
57
diff view generated by jsdifflib
1
From: Xinhao Zhang <zhangxinhao1@huawei.com>
1
From: Akihiko Odaki <akihiko.odaki@gmail.com>
2
2
3
Fix code style. Don't use '#' flag of printf format ('%#') in
3
I am now employed by Daynix. Although my role as a reviewer of
4
format strings, use '0x' prefix instead
4
macOS-related change is not very relevant to the employment, I decided
5
to use the company email address to avoid confusions from different
6
addresses.
5
7
6
Signed-off-by: Xinhao Zhang <zhangxinhao1@huawei.com>
8
Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
7
Signed-off-by: Kai Deng <dengkai1@huawei.com>
9
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
8
Message-id: 20201103114529.638233-2-zhangxinhao1@huawei.com
10
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
9
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
11
Message-id: 20230506072333.32510-1-akihiko.odaki@daynix.com
10
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
12
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
11
---
13
---
12
target/arm/translate-a64.c | 4 ++--
14
MAINTAINERS | 4 ++--
13
1 file changed, 2 insertions(+), 2 deletions(-)
15
1 file changed, 2 insertions(+), 2 deletions(-)
14
16
15
diff --git a/target/arm/translate-a64.c b/target/arm/translate-a64.c
17
diff --git a/MAINTAINERS b/MAINTAINERS
16
index XXXXXXX..XXXXXXX 100644
18
index XXXXXXX..XXXXXXX 100644
17
--- a/target/arm/translate-a64.c
19
--- a/MAINTAINERS
18
+++ b/target/arm/translate-a64.c
20
+++ b/MAINTAINERS
19
@@ -XXX,XX +XXX,XX @@ static void disas_simd_three_reg_same_fp16(DisasContext *s, uint32_t insn)
21
@@ -XXX,XX +XXX,XX @@ Core Audio framework backend
20
gen_helper_advsimd_acgt_f16(tcg_res, tcg_op1, tcg_op2, fpst);
22
M: Gerd Hoffmann <kraxel@redhat.com>
21
break;
23
M: Philippe Mathieu-Daudé <philmd@linaro.org>
22
default:
24
R: Christian Schoenebeck <qemu_oss@crudebyte.com>
23
- fprintf(stderr, "%s: insn %#04x, fpop %#2x @ %#" PRIx64 "\n",
25
-R: Akihiko Odaki <akihiko.odaki@gmail.com>
24
+ fprintf(stderr, "%s: insn 0x%04x, fpop 0x%2x @ 0x%" PRIx64 "\n",
26
+R: Akihiko Odaki <akihiko.odaki@daynix.com>
25
__func__, insn, fpopcode, s->pc_curr);
27
S: Odd Fixes
26
g_assert_not_reached();
28
F: audio/coreaudio.c
27
}
29
28
@@ -XXX,XX +XXX,XX @@ static void disas_simd_two_reg_misc_fp16(DisasContext *s, uint32_t insn)
30
@@ -XXX,XX +XXX,XX @@ F: docs/devel/ui.rst
29
case 0x7f: /* FSQRT (vector) */
31
Cocoa graphics
30
break;
32
M: Peter Maydell <peter.maydell@linaro.org>
31
default:
33
M: Philippe Mathieu-Daudé <philmd@linaro.org>
32
- fprintf(stderr, "%s: insn %#04x fpop %#2x\n", __func__, insn, fpop);
34
-R: Akihiko Odaki <akihiko.odaki@gmail.com>
33
+ fprintf(stderr, "%s: insn 0x%04x fpop 0x%2x\n", __func__, insn, fpop);
35
+R: Akihiko Odaki <akihiko.odaki@daynix.com>
34
g_assert_not_reached();
36
S: Odd Fixes
35
}
37
F: ui/cocoa.m
36
38
37
--
39
--
38
2.20.1
40
2.34.1
39
41
40
42
diff view generated by jsdifflib
1
From: Philippe Mathieu-Daudé <f4bug@amsat.org>
1
When we take a PNG screenshot the ordering of the colour channels in
2
the data is not correct, resulting in the image having weird
3
colouring compared to the actual display. (Specifically, on a
4
little-endian host the blue and red channels are swapped; on
5
big-endian everything is wrong.)
2
6
3
The MusicPal board code connects both of the IRQ outputs of the UART
7
This happens because the pixman idea of the pixel data and the libpng
4
to the same INTC qemu_irq. Connecting two qemu_irqs outputs directly
8
idea differ. PIXMAN_a8r8g8b8 defines that pixels are 32-bit values,
5
to the same input is not valid as it produces subtly wrong behaviour
9
with A in bits 24-31, R in bits 16-23, G in bits 8-15 and B in bits
6
(for instance if both the IRQ lines are high, and then one goes
10
0-7. This means that on little-endian systems the bytes in memory
7
low, the INTC input will see this as a high-to-low transition
11
are
8
even though the second IRQ line should still be holding it high).
12
B G R A
13
and on big-endian systems they are
14
A R G B
9
15
10
This kind of wiring needs an explicitly created OR gate; add one.
16
libpng, on the other hand, thinks of pixels as being a series of
17
values for each channel, so its format PNG_COLOR_TYPE_RGB_ALPHA
18
always wants bytes in the order
19
R G B A
11
20
12
Inspired-by: Peter Maydell <peter.maydell@linaro.org>
21
This isn't the same as the pixman order for either big or little
13
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
22
endian hosts.
14
Message-id: 20201107193403.436146-5-f4bug@amsat.org
23
15
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
24
The alpha channel is also unnecessary bulk in the output PNG file,
25
because there is no alpha information in a screenshot.
26
27
To handle the endianness issue, we already define in ui/qemu-pixman.h
28
various PIXMAN_BE_* and PIXMAN_LE_* values that give consistent
29
byte-order pixel channel formats. So we can use PIXMAN_BE_r8g8b8 and
30
PNG_COLOR_TYPE_RGB, which both have an in-memory byte order of
31
R G B
32
and 3 bytes per pixel.
33
34
(PPM format screenshots get this right; they already use the
35
PIXMAN_BE_r8g8b8 format.)
36
37
Cc: qemu-stable@nongnu.org
38
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1622
39
Fixes: 9a0a119a382867 ("Added parameter to take screenshot with screendump as PNG")
16
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
40
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
41
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
42
Message-id: 20230502135548.2451309-1-peter.maydell@linaro.org
17
---
43
---
18
hw/arm/musicpal.c | 17 +++++++++++++----
44
ui/console.c | 4 ++--
19
hw/arm/Kconfig | 1 +
45
1 file changed, 2 insertions(+), 2 deletions(-)
20
2 files changed, 14 insertions(+), 4 deletions(-)
21
46
22
diff --git a/hw/arm/musicpal.c b/hw/arm/musicpal.c
47
diff --git a/ui/console.c b/ui/console.c
23
index XXXXXXX..XXXXXXX 100644
48
index XXXXXXX..XXXXXXX 100644
24
--- a/hw/arm/musicpal.c
49
--- a/ui/console.c
25
+++ b/hw/arm/musicpal.c
50
+++ b/ui/console.c
26
@@ -XXX,XX +XXX,XX @@
51
@@ -XXX,XX +XXX,XX @@ static bool png_save(int fd, pixman_image_t *image, Error **errp)
27
#include "ui/console.h"
52
png_struct *png_ptr;
28
#include "hw/i2c/i2c.h"
53
png_info *info_ptr;
29
#include "hw/irq.h"
54
g_autoptr(pixman_image_t) linebuf =
30
+#include "hw/or-irq.h"
55
- qemu_pixman_linebuf_create(PIXMAN_a8r8g8b8, width);
31
#include "hw/audio/wm8750.h"
56
+ qemu_pixman_linebuf_create(PIXMAN_BE_r8g8b8, width);
32
#include "sysemu/block-backend.h"
57
uint8_t *buf = (uint8_t *)pixman_image_get_data(linebuf);
33
#include "sysemu/runstate.h"
58
FILE *f = fdopen(fd, "wb");
34
@@ -XXX,XX +XXX,XX @@
59
int y;
35
#define MP_TIMER4_IRQ 7
60
@@ -XXX,XX +XXX,XX @@ static bool png_save(int fd, pixman_image_t *image, Error **errp)
36
#define MP_EHCI_IRQ 8
61
png_init_io(png_ptr, f);
37
#define MP_ETH_IRQ 9
62
38
-#define MP_UART1_IRQ 11
63
png_set_IHDR(png_ptr, info_ptr, width, height, 8,
39
-#define MP_UART2_IRQ 11
64
- PNG_COLOR_TYPE_RGB_ALPHA, PNG_INTERLACE_NONE,
40
+#define MP_UART_SHARED_IRQ 11
65
+ PNG_COLOR_TYPE_RGB, PNG_INTERLACE_NONE,
41
#define MP_GPIO_IRQ 12
66
PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE);
42
#define MP_RTC_IRQ 28
67
43
#define MP_AUDIO_IRQ 30
68
png_write_info(png_ptr, info_ptr);
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
--
69
--
85
2.20.1
70
2.34.1
86
71
87
72
diff view generated by jsdifflib
1
From: Havard Skinnemoen <hskinnemoen@google.com>
1
In the doc sources, we have a few cross-reference targets with odd
2
names "pcsys_005fxyz". These are the legacy of the semi-automated
3
conversion of the old info docs to rST (the '005f' is because ASCII
4
0x5f is '_' and the old info link names had underscores in them).
2
5
3
The number of runs is equal to the number of 0-1 and 1-0 transitions,
6
Remove the targets which nothing links to, and rename the two targets
4
plus one. Currently, it's counting the number of times these transitions
7
which are used to something a bit more descriptive.
5
do _not_ happen, plus one.
6
8
7
Source:
9
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
8
https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-22r1a.pdf
10
Message-id: 20230421163642.1151904-1-peter.maydell@linaro.org
9
section 2.3.4 point (3).
11
Reviewed-by: Markus Armbruster <armbru@redhat.com>
12
---
13
docs/system/devices/igb.rst | 2 +-
14
docs/system/devices/ivshmem.rst | 2 --
15
docs/system/devices/net.rst | 2 +-
16
docs/system/devices/usb.rst | 2 --
17
docs/system/keys.rst | 2 +-
18
docs/system/linuxboot.rst | 2 +-
19
docs/system/target-i386.rst | 4 ----
20
7 files changed, 4 insertions(+), 12 deletions(-)
10
21
11
Signed-off-by: Havard Skinnemoen <hskinnemoen@google.com>
22
diff --git a/docs/system/devices/igb.rst b/docs/system/devices/igb.rst
12
Message-id: 20201103011457.2959989-2-hskinnemoen@google.com
13
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
14
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
15
---
16
tests/qtest/npcm7xx_rng-test.c | 2 +-
17
1 file changed, 1 insertion(+), 1 deletion(-)
18
19
diff --git a/tests/qtest/npcm7xx_rng-test.c b/tests/qtest/npcm7xx_rng-test.c
20
index XXXXXXX..XXXXXXX 100644
23
index XXXXXXX..XXXXXXX 100644
21
--- a/tests/qtest/npcm7xx_rng-test.c
24
--- a/docs/system/devices/igb.rst
22
+++ b/tests/qtest/npcm7xx_rng-test.c
25
+++ b/docs/system/devices/igb.rst
23
@@ -XXX,XX +XXX,XX @@ static double calc_runs_p(const unsigned long *buf, unsigned int nr_bits)
26
@@ -XXX,XX +XXX,XX @@ Using igb
24
pi = (double)nr_ones / nr_bits;
27
=========
25
28
26
for (k = 0; k < nr_bits - 1; k++) {
29
Using igb should be nothing different from using another network device. See
27
- vn_obs += !(test_bit(k, buf) ^ test_bit(k + 1, buf));
30
-:ref:`pcsys_005fnetwork` in general.
28
+ vn_obs += (test_bit(k, buf) ^ test_bit(k + 1, buf));
31
+:ref:`Network_emulation` in general.
29
}
32
30
vn_obs += 1;
33
However, you may also need to perform additional steps to activate SR-IOV
34
feature on your guest. For Linux, refer to [4]_.
35
diff --git a/docs/system/devices/ivshmem.rst b/docs/system/devices/ivshmem.rst
36
index XXXXXXX..XXXXXXX 100644
37
--- a/docs/system/devices/ivshmem.rst
38
+++ b/docs/system/devices/ivshmem.rst
39
@@ -XXX,XX +XXX,XX @@
40
-.. _pcsys_005fivshmem:
41
-
42
Inter-VM Shared Memory device
43
-----------------------------
44
45
diff --git a/docs/system/devices/net.rst b/docs/system/devices/net.rst
46
index XXXXXXX..XXXXXXX 100644
47
--- a/docs/system/devices/net.rst
48
+++ b/docs/system/devices/net.rst
49
@@ -XXX,XX +XXX,XX @@
50
-.. _pcsys_005fnetwork:
51
+.. _Network_Emulation:
52
53
Network emulation
54
-----------------
55
diff --git a/docs/system/devices/usb.rst b/docs/system/devices/usb.rst
56
index XXXXXXX..XXXXXXX 100644
57
--- a/docs/system/devices/usb.rst
58
+++ b/docs/system/devices/usb.rst
59
@@ -XXX,XX +XXX,XX @@
60
-.. _pcsys_005fusb:
61
-
62
USB emulation
63
-------------
64
65
diff --git a/docs/system/keys.rst b/docs/system/keys.rst
66
index XXXXXXX..XXXXXXX 100644
67
--- a/docs/system/keys.rst
68
+++ b/docs/system/keys.rst
69
@@ -XXX,XX +XXX,XX @@
70
-.. _pcsys_005fkeys:
71
+.. _GUI_keys:
72
73
Keys in the graphical frontends
74
-------------------------------
75
diff --git a/docs/system/linuxboot.rst b/docs/system/linuxboot.rst
76
index XXXXXXX..XXXXXXX 100644
77
--- a/docs/system/linuxboot.rst
78
+++ b/docs/system/linuxboot.rst
79
@@ -XXX,XX +XXX,XX @@ virtual serial port and the QEMU monitor to the console with the
80
-append "root=/dev/hda console=ttyS0" -nographic
81
82
Use Ctrl-a c to switch between the serial console and the monitor (see
83
-:ref:`pcsys_005fkeys`).
84
+:ref:`GUI_keys`).
85
diff --git a/docs/system/target-i386.rst b/docs/system/target-i386.rst
86
index XXXXXXX..XXXXXXX 100644
87
--- a/docs/system/target-i386.rst
88
+++ b/docs/system/target-i386.rst
89
@@ -XXX,XX +XXX,XX @@
90
x86 System emulator
91
-------------------
92
93
-.. _pcsys_005fdevices:
94
-
95
Board-specific documentation
96
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
97
98
@@ -XXX,XX +XXX,XX @@ Architectural features
99
i386/sgx
100
i386/amd-memory-encryption
101
102
-.. _pcsys_005freq:
103
-
104
OS requirements
105
~~~~~~~~~~~~~~~
31
106
32
--
107
--
33
2.20.1
108
2.34.1
34
35
diff view generated by jsdifflib
1
Checks for UNDEF cases should go before the "is VFP enabled?" access
1
Coverity points out (in CID 1508390) that write_bootloader has
2
check, except in special cases. Move a stray UNDEF check in the VTBL
2
some dead code, where we assign to 'p' and then in the following
3
trans function up above the access check.
3
line assign to it again. This happened as a result of the
4
refactoring in commit cd5066f8618b.
5
6
Fix the dead code by removing the 'void *v' variable entirely and
7
instead adding a cast when calling bl_setup_gt64120_jump_kernel(), as
8
we do at its other callsite in write_bootloader_nanomips().
4
9
5
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
10
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
6
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
11
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
7
Message-id: 20201109145324.2859-1-peter.maydell@linaro.org
8
---
12
---
9
target/arm/translate-neon.c.inc | 8 ++++----
13
hw/mips/malta.c | 5 +----
10
1 file changed, 4 insertions(+), 4 deletions(-)
14
1 file changed, 1 insertion(+), 4 deletions(-)
11
15
12
diff --git a/target/arm/translate-neon.c.inc b/target/arm/translate-neon.c.inc
16
diff --git a/hw/mips/malta.c b/hw/mips/malta.c
13
index XXXXXXX..XXXXXXX 100644
17
index XXXXXXX..XXXXXXX 100644
14
--- a/target/arm/translate-neon.c.inc
18
--- a/hw/mips/malta.c
15
+++ b/target/arm/translate-neon.c.inc
19
+++ b/hw/mips/malta.c
16
@@ -XXX,XX +XXX,XX @@ static bool trans_VTBL(DisasContext *s, arg_VTBL *a)
20
@@ -XXX,XX +XXX,XX @@ static void write_bootloader(uint8_t *base, uint64_t run_addr,
17
return false;
21
uint64_t kernel_entry)
18
}
22
{
19
23
uint32_t *p;
20
- if (!vfp_access_check(s)) {
24
- void *v;
21
- return true;
25
22
- }
26
/* Small bootloader */
23
-
27
p = (uint32_t *)base;
24
if ((a->vn + a->len + 1) > 32) {
28
@@ -XXX,XX +XXX,XX @@ static void write_bootloader(uint8_t *base, uint64_t run_addr,
25
/*
29
*
26
* This is UNPREDICTABLE; we choose to UNDEF to avoid the
30
*/
27
@@ -XXX,XX +XXX,XX @@ static bool trans_VTBL(DisasContext *s, arg_VTBL *a)
31
28
return false;
32
- v = p;
29
}
33
- bl_setup_gt64120_jump_kernel(&v, run_addr, kernel_entry);
30
34
- p = v;
31
+ if (!vfp_access_check(s)) {
35
+ bl_setup_gt64120_jump_kernel((void **)&p, run_addr, kernel_entry);
32
+ return true;
36
33
+ }
37
/* YAMON subroutines */
34
+
38
p = (uint32_t *) (base + 0x800);
35
desc = tcg_const_i32((a->vn << 2) | a->len);
36
def = tcg_temp_new_i64();
37
if (a->op) {
38
--
39
--
39
2.20.1
40
2.34.1
40
41
41
42
diff view generated by jsdifflib
1
From: Philippe Mathieu-Daudé <f4bug@amsat.org>
1
From: Fabiano Rosas <farosas@suse.de>
2
2
3
The system configuration controller (SYSCFG) doesn't have
3
Semihosting has been made a 'default y' entry in Kconfig, which does
4
any output IRQ (and the INTC input #71 belongs to the UART6).
4
not work because when building --without-default-devices, the
5
Remove the invalid code.
5
semihosting code would not be available.
6
6
7
Fixes: db635521a02 ("stm32f205: Add the stm32f205 SoC")
7
Make semihosting unconditional when TCG is present.
8
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
8
9
Message-id: 20201107193403.436146-3-f4bug@amsat.org
9
Fixes: 29d9efca16 ("arm/Kconfig: Do not build TCG-only boards on a KVM-only build")
10
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
10
Signed-off-by: Fabiano Rosas <farosas@suse.de>
11
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
12
Message-id: 20230508181611.2621-2-farosas@suse.de
11
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
13
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
12
---
14
---
13
include/hw/misc/stm32f2xx_syscfg.h | 2 --
15
target/arm/Kconfig | 8 +-------
14
hw/arm/stm32f205_soc.c | 1 -
16
1 file changed, 1 insertion(+), 7 deletions(-)
15
hw/misc/stm32f2xx_syscfg.c | 2 --
16
3 files changed, 5 deletions(-)
17
17
18
diff --git a/include/hw/misc/stm32f2xx_syscfg.h b/include/hw/misc/stm32f2xx_syscfg.h
18
diff --git a/target/arm/Kconfig b/target/arm/Kconfig
19
index XXXXXXX..XXXXXXX 100644
19
index XXXXXXX..XXXXXXX 100644
20
--- a/include/hw/misc/stm32f2xx_syscfg.h
20
--- a/target/arm/Kconfig
21
+++ b/include/hw/misc/stm32f2xx_syscfg.h
21
+++ b/target/arm/Kconfig
22
@@ -XXX,XX +XXX,XX @@ struct STM32F2XXSyscfgState {
22
@@ -XXX,XX +XXX,XX @@
23
uint32_t syscfg_exticr3;
23
config ARM
24
uint32_t syscfg_exticr4;
24
bool
25
uint32_t syscfg_cmpcr;
25
+ select ARM_COMPATIBLE_SEMIHOSTING if TCG
26
27
config AARCH64
28
bool
29
select ARM
26
-
30
-
27
- qemu_irq irq;
31
-# This config exists just so we can make SEMIHOSTING default when TCG
28
};
32
-# is selected without also changing it for other architectures.
29
33
-config ARM_SEMIHOSTING
30
#endif /* HW_STM32F2XX_SYSCFG_H */
34
- bool
31
diff --git a/hw/arm/stm32f205_soc.c b/hw/arm/stm32f205_soc.c
35
- default y if TCG && ARM
32
index XXXXXXX..XXXXXXX 100644
36
- select ARM_COMPATIBLE_SEMIHOSTING
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
--
37
--
57
2.20.1
38
2.34.1
58
59
diff view generated by jsdifflib
1
From: Andrew Jones <drjones@redhat.com>
1
From: Fabiano Rosas <farosas@suse.de>
2
2
3
commit 32bd322a0134 ("hw/timer/armv7m_systick: Rewrite to use ptimers")
3
We cannot allow this config to be disabled at the moment as not all of
4
changed armv7m_systick to build on ptimers. Make sure we have ptimers
4
the relevant code is protected by it.
5
in the build when building armv7m_systick.
6
5
7
Signed-off-by: Andrew Jones <drjones@redhat.com>
6
Commit 29d9efca16 ("arm/Kconfig: Do not build TCG-only boards on a
8
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
7
KVM-only build") moved the CONFIGs of several boards to Kconfig, so it
9
Message-id: 20201104103343.30392-1-drjones@redhat.com
8
is now possible that nothing selects ARM_V7M (e.g. when doing a
9
--without-default-devices build).
10
11
Return the CONFIG_ARM_V7M entry to a state where it is always selected
12
whenever TCG is available.
13
14
Fixes: 29d9efca16 ("arm/Kconfig: Do not build TCG-only boards on a KVM-only build")
15
Signed-off-by: Fabiano Rosas <farosas@suse.de>
16
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
17
Message-id: 20230508181611.2621-3-farosas@suse.de
10
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
18
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
11
---
19
---
12
hw/arm/Kconfig | 1 +
20
target/arm/Kconfig | 1 +
13
1 file changed, 1 insertion(+)
21
1 file changed, 1 insertion(+)
14
22
15
diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig
23
diff --git a/target/arm/Kconfig b/target/arm/Kconfig
16
index XXXXXXX..XXXXXXX 100644
24
index XXXXXXX..XXXXXXX 100644
17
--- a/hw/arm/Kconfig
25
--- a/target/arm/Kconfig
18
+++ b/hw/arm/Kconfig
26
+++ b/target/arm/Kconfig
19
@@ -XXX,XX +XXX,XX @@ config ZYNQ
27
@@ -XXX,XX +XXX,XX @@
20
28
config ARM
21
config ARM_V7M
22
bool
29
bool
23
+ select PTIMER
30
select ARM_COMPATIBLE_SEMIHOSTING if TCG
24
31
+ select ARM_V7M if TCG
25
config ALLWINNER_A10
32
33
config AARCH64
26
bool
34
bool
27
--
35
--
28
2.20.1
36
2.34.1
29
30
diff view generated by jsdifflib
Deleted patch
1
From: AlexChen <alex.chen@huawei.com>
2
1
3
We should use printf format specifier "%u" instead of "%d" for
4
argument of type "unsigned int".
5
6
Reported-by: Euler Robot <euler.robot@huawei.com>
7
Signed-off-by: Alex Chen <alex.chen@huawei.com>
8
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
9
Message-id: 5FA280F5.8060902@huawei.com
10
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
11
---
12
hw/ssi/imx_spi.c | 2 +-
13
hw/ssi/xilinx_spi.c | 2 +-
14
2 files changed, 2 insertions(+), 2 deletions(-)
15
16
diff --git a/hw/ssi/imx_spi.c b/hw/ssi/imx_spi.c
17
index XXXXXXX..XXXXXXX 100644
18
--- a/hw/ssi/imx_spi.c
19
+++ b/hw/ssi/imx_spi.c
20
@@ -XXX,XX +XXX,XX @@ static const char *imx_spi_reg_name(uint32_t reg)
21
case ECSPI_MSGDATA:
22
return "ECSPI_MSGDATA";
23
default:
24
- sprintf(unknown, "%d ?", reg);
25
+ sprintf(unknown, "%u ?", reg);
26
return unknown;
27
}
28
}
29
diff --git a/hw/ssi/xilinx_spi.c b/hw/ssi/xilinx_spi.c
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
}
42
--
43
2.20.1
44
45
diff view generated by jsdifflib
1
From: Philippe Mathieu-Daudé <f4bug@amsat.org>
1
From: Fabiano Rosas <farosas@suse.de>
2
2
3
We can use one MPC per SRAM bank, but we currently only wire the
3
On a build configured with: --disable-tcg --enable-xen it is possible
4
IRQ from the first expansion MPC to the IRQ splitter. Fix that.
4
to produce a QEMU binary with no TCG nor KVM support. Skip the cdrom
5
boot tests if that's the case.
5
6
6
Fixes: bb75e16d5e6 ("hw/arm/iotkit: Wire up MPC interrupt lines")
7
Fixes: 0c1ae3ff9d ("tests/qtest: Fix tests when no KVM or TCG are present")
7
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
8
Signed-off-by: Fabiano Rosas <farosas@suse.de>
8
Message-id: 20201107193403.436146-2-f4bug@amsat.org
9
Reviewed-by: Thomas Huth <thuth@redhat.com>
9
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
10
Message-id: 20230508181611.2621-4-farosas@suse.de
10
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
11
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
11
---
12
---
12
hw/arm/armsse.c | 3 ++-
13
tests/qtest/cdrom-test.c | 10 ++++++++++
13
1 file changed, 2 insertions(+), 1 deletion(-)
14
1 file changed, 10 insertions(+)
14
15
15
diff --git a/hw/arm/armsse.c b/hw/arm/armsse.c
16
diff --git a/tests/qtest/cdrom-test.c b/tests/qtest/cdrom-test.c
16
index XXXXXXX..XXXXXXX 100644
17
index XXXXXXX..XXXXXXX 100644
17
--- a/hw/arm/armsse.c
18
--- a/tests/qtest/cdrom-test.c
18
+++ b/hw/arm/armsse.c
19
+++ b/tests/qtest/cdrom-test.c
19
@@ -XXX,XX +XXX,XX @@ static void armsse_realize(DeviceState *dev, Error **errp)
20
@@ -XXX,XX +XXX,XX @@ static void test_cdboot(gconstpointer data)
20
qdev_get_gpio_in(dev_splitter, 0));
21
21
qdev_connect_gpio_out(dev_splitter, 0,
22
static void add_x86_tests(void)
22
qdev_get_gpio_in_named(dev_secctl,
23
{
23
- "mpc_status", 0));
24
+ if (!qtest_has_accel("tcg") && !qtest_has_accel("kvm")) {
24
+ "mpc_status",
25
+ g_test_skip("No KVM or TCG accelerator available, skipping boot tests");
25
+ i - IOTS_NUM_EXP_MPC));
26
+ return;
26
}
27
+ }
27
28
+
28
qdev_connect_gpio_out(dev_splitter, 1,
29
qtest_add_data_func("cdrom/boot/default", "-cdrom ", test_cdboot);
30
qtest_add_data_func("cdrom/boot/virtio-scsi",
31
"-device virtio-scsi -device scsi-cd,drive=cdr "
32
@@ -XXX,XX +XXX,XX @@ static void add_x86_tests(void)
33
34
static void add_s390x_tests(void)
35
{
36
+ if (!qtest_has_accel("tcg") && !qtest_has_accel("kvm")) {
37
+ g_test_skip("No KVM or TCG accelerator available, skipping boot tests");
38
+ return;
39
+ }
40
+
41
qtest_add_data_func("cdrom/boot/default", "-cdrom ", test_cdboot);
42
qtest_add_data_func("cdrom/boot/virtio-scsi",
43
"-device virtio-scsi -device scsi-cd,drive=cdr "
29
--
44
--
30
2.20.1
45
2.34.1
31
32
diff view generated by jsdifflib
1
From: Xinhao Zhang <zhangxinhao1@huawei.com>
1
In check_s2_mmu_setup() we have a check that is attempting to
2
implement the part of AArch64.S2MinTxSZ that is specific to when EL1
3
is AArch32:
2
4
3
Fix code style. Operator needs spaces both sides.
5
if !s1aarch64 then
6
// EL1 is AArch32
7
min_txsz = Min(min_txsz, 24);
4
8
5
Signed-off-by: Xinhao Zhang <zhangxinhao1@huawei.com>
9
Unfortunately we got this wrong in two ways:
6
Signed-off-by: Kai Deng <dengkai1@huawei.com>
10
7
Message-id: 20201103114529.638233-1-zhangxinhao1@huawei.com
11
(1) The minimum txsz corresponds to a maximum inputsize, but we got
8
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
12
the sense of the comparison wrong and were faulting for all
13
inputsizes less than 40 bits
14
15
(2) We try to implement this as an extra check that happens after
16
we've done the same txsz checks we would do for an AArch64 EL1, but
17
in fact the pseudocode is *loosening* the requirements, so that txsz
18
values that would fault for an AArch64 EL1 do not fault for AArch32
19
EL1, because it does Min(old_min, 24), not Max(old_min, 24).
20
21
You can see this also in the text of the Arm ARM in table D8-8, which
22
shows that where the implemented PA size is less than 40 bits an
23
AArch32 EL1 is still OK with a configured stage2 T0SZ for a 40 bit
24
IPA, whereas if EL1 is AArch64 then the T0SZ must be big enough to
25
constrain the IPA to the implemented PA size.
26
27
Because of part (2), we can't do this as a separate check, but
28
have to integrate it into aa64_va_parameters(). Add a new argument
29
to that function to indicate that EL1 is 32-bit. All the existing
30
callsites except the one in get_phys_addr_lpae() can pass 'false',
31
because they are either doing a lookup for a stage 1 regime or
32
else they don't care about the tsz/tsz_oob fields.
33
34
Cc: qemu-stable@nongnu.org
35
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1627
9
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
36
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
37
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
38
Message-id: 20230509092059.3176487-1-peter.maydell@linaro.org
10
---
39
---
11
target/arm/arch_dump.c | 8 ++++----
40
target/arm/internals.h | 12 +++++++++++-
12
target/arm/arm-semi.c | 8 ++++----
41
target/arm/gdbstub64.c | 2 +-
13
target/arm/helper.c | 2 +-
42
target/arm/helper.c | 15 +++++++++++++--
14
3 files changed, 9 insertions(+), 9 deletions(-)
43
target/arm/ptw.c | 14 ++------------
44
target/arm/tcg/pauth_helper.c | 6 +++---
45
5 files changed, 30 insertions(+), 19 deletions(-)
15
46
16
diff --git a/target/arm/arch_dump.c b/target/arm/arch_dump.c
47
diff --git a/target/arm/internals.h b/target/arm/internals.h
17
index XXXXXXX..XXXXXXX 100644
48
index XXXXXXX..XXXXXXX 100644
18
--- a/target/arm/arch_dump.c
49
--- a/target/arm/internals.h
19
+++ b/target/arm/arch_dump.c
50
+++ b/target/arm/internals.h
20
@@ -XXX,XX +XXX,XX @@ static int aarch64_write_elf64_prfpreg(WriteCoreDumpFunction f,
51
@@ -XXX,XX +XXX,XX @@ typedef struct ARMVAParameters {
21
52
ARMGranuleSize gran : 2;
22
for (i = 0; i < 32; ++i) {
53
} ARMVAParameters;
23
uint64_t *q = aa64_vfp_qreg(env, i);
54
24
- note.vfp.vregs[2*i + 0] = cpu_to_dump64(s, q[0]);
55
+/**
25
- note.vfp.vregs[2*i + 1] = cpu_to_dump64(s, q[1]);
56
+ * aa64_va_parameters: Return parameters for an AArch64 virtual address
26
+ note.vfp.vregs[2 * i + 0] = cpu_to_dump64(s, q[0]);
57
+ * @env: CPU
27
+ note.vfp.vregs[2 * i + 1] = cpu_to_dump64(s, q[1]);
58
+ * @va: virtual address to look up
28
}
59
+ * @mmu_idx: determines translation regime to use
29
60
+ * @data: true if this is a data access
30
if (s->dump_info.d_endian == ELFDATA2MSB) {
61
+ * @el1_is_aa32: true if we are asking about stage 2 when EL1 is AArch32
31
@@ -XXX,XX +XXX,XX @@ static int aarch64_write_elf64_prfpreg(WriteCoreDumpFunction f,
62
+ * (ignored if @mmu_idx is for a stage 1 regime; only affects tsz/tsz_oob)
32
*/
63
+ */
33
for (i = 0; i < 32; ++i) {
64
ARMVAParameters aa64_va_parameters(CPUARMState *env, uint64_t va,
34
uint64_t tmp = note.vfp.vregs[2*i];
65
- ARMMMUIdx mmu_idx, bool data);
35
- note.vfp.vregs[2*i] = note.vfp.vregs[2*i+1];
66
+ ARMMMUIdx mmu_idx, bool data,
36
- note.vfp.vregs[2*i+1] = tmp;
67
+ bool el1_is_aa32);
37
+ note.vfp.vregs[2 * i] = note.vfp.vregs[2 * i + 1];
68
38
+ note.vfp.vregs[2 * i + 1] = tmp;
69
int aa64_va_parameter_tbi(uint64_t tcr, ARMMMUIdx mmu_idx);
70
int aa64_va_parameter_tbid(uint64_t tcr, ARMMMUIdx mmu_idx);
71
diff --git a/target/arm/gdbstub64.c b/target/arm/gdbstub64.c
72
index XXXXXXX..XXXXXXX 100644
73
--- a/target/arm/gdbstub64.c
74
+++ b/target/arm/gdbstub64.c
75
@@ -XXX,XX +XXX,XX @@ int aarch64_gdb_get_pauth_reg(CPUARMState *env, GByteArray *buf, int reg)
76
ARMMMUIdx mmu_idx = arm_stage1_mmu_idx(env);
77
ARMVAParameters param;
78
79
- param = aa64_va_parameters(env, -is_high, mmu_idx, is_data);
80
+ param = aa64_va_parameters(env, -is_high, mmu_idx, is_data, false);
81
return gdb_get_reg64(buf, pauth_ptr_mask(param));
39
}
82
}
40
}
83
default:
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
84
diff --git a/target/arm/helper.c b/target/arm/helper.c
83
index XXXXXXX..XXXXXXX 100644
85
index XXXXXXX..XXXXXXX 100644
84
--- a/target/arm/helper.c
86
--- a/target/arm/helper.c
85
+++ b/target/arm/helper.c
87
+++ b/target/arm/helper.c
86
@@ -XXX,XX +XXX,XX @@ uint32_t HELPER(usad8)(uint32_t a, uint32_t b)
88
@@ -XXX,XX +XXX,XX @@ static TLBIRange tlbi_aa64_get_range(CPUARMState *env, ARMMMUIdx mmuidx,
87
uint32_t sum;
89
unsigned int page_size_granule, page_shift, num, scale, exponent;
88
sum = do_usad(a, b);
90
/* Extract one bit to represent the va selector in use. */
89
sum += do_usad(a >> 8, b >> 8);
91
uint64_t select = sextract64(value, 36, 1);
90
- sum += do_usad(a >> 16, b >>16);
92
- ARMVAParameters param = aa64_va_parameters(env, select, mmuidx, true);
91
+ sum += do_usad(a >> 16, b >> 16);
93
+ ARMVAParameters param = aa64_va_parameters(env, select, mmuidx, true, false);
92
sum += do_usad(a >> 24, b >> 24);
94
TLBIRange ret = { };
93
return sum;
95
ARMGranuleSize gran;
96
97
@@ -XXX,XX +XXX,XX @@ static ARMGranuleSize sanitize_gran_size(ARMCPU *cpu, ARMGranuleSize gran,
98
}
99
100
ARMVAParameters aa64_va_parameters(CPUARMState *env, uint64_t va,
101
- ARMMMUIdx mmu_idx, bool data)
102
+ ARMMMUIdx mmu_idx, bool data,
103
+ bool el1_is_aa32)
104
{
105
uint64_t tcr = regime_tcr(env, mmu_idx);
106
bool epd, hpd, tsz_oob, ds, ha, hd;
107
@@ -XXX,XX +XXX,XX @@ ARMVAParameters aa64_va_parameters(CPUARMState *env, uint64_t va,
108
}
109
}
110
111
+ if (stage2 && el1_is_aa32) {
112
+ /*
113
+ * For AArch32 EL1 the min txsz (and thus max IPA size) requirements
114
+ * are loosened: a configured IPA of 40 bits is permitted even if
115
+ * the implemented PA is less than that (and so a 40 bit IPA would
116
+ * fault for an AArch64 EL1). See R_DTLMN.
117
+ */
118
+ min_tsz = MIN(min_tsz, 24);
119
+ }
120
+
121
if (tsz > max_tsz) {
122
tsz = max_tsz;
123
tsz_oob = true;
124
diff --git a/target/arm/ptw.c b/target/arm/ptw.c
125
index XXXXXXX..XXXXXXX 100644
126
--- a/target/arm/ptw.c
127
+++ b/target/arm/ptw.c
128
@@ -XXX,XX +XXX,XX @@ static int check_s2_mmu_setup(ARMCPU *cpu, bool is_aa64, uint64_t tcr,
129
130
sl0 = extract32(tcr, 6, 2);
131
if (is_aa64) {
132
- /*
133
- * AArch64.S2InvalidTxSZ: While we checked tsz_oob near the top of
134
- * get_phys_addr_lpae, that used aa64_va_parameters which apply
135
- * to aarch64. If Stage1 is aarch32, the min_txsz is larger.
136
- * See AArch64.S2MinTxSZ, where min_tsz is 24, translated to
137
- * inputsize is 64 - 24 = 40.
138
- */
139
- if (iasize < 40 && !arm_el_is_aa64(&cpu->env, 1)) {
140
- goto fail;
141
- }
142
-
143
/*
144
* AArch64.S2InvalidSL: Interpretation of SL depends on the page size,
145
* so interleave AArch64.S2StartLevel.
146
@@ -XXX,XX +XXX,XX @@ static bool get_phys_addr_lpae(CPUARMState *env, S1Translate *ptw,
147
int ps;
148
149
param = aa64_va_parameters(env, address, mmu_idx,
150
- access_type != MMU_INST_FETCH);
151
+ access_type != MMU_INST_FETCH,
152
+ !arm_el_is_aa64(env, 1));
153
level = 0;
154
155
/*
156
diff --git a/target/arm/tcg/pauth_helper.c b/target/arm/tcg/pauth_helper.c
157
index XXXXXXX..XXXXXXX 100644
158
--- a/target/arm/tcg/pauth_helper.c
159
+++ b/target/arm/tcg/pauth_helper.c
160
@@ -XXX,XX +XXX,XX @@ static uint64_t pauth_addpac(CPUARMState *env, uint64_t ptr, uint64_t modifier,
161
ARMPACKey *key, bool data)
162
{
163
ARMMMUIdx mmu_idx = arm_stage1_mmu_idx(env);
164
- ARMVAParameters param = aa64_va_parameters(env, ptr, mmu_idx, data);
165
+ ARMVAParameters param = aa64_va_parameters(env, ptr, mmu_idx, data, false);
166
uint64_t pac, ext_ptr, ext, test;
167
int bot_bit, top_bit;
168
169
@@ -XXX,XX +XXX,XX @@ static uint64_t pauth_auth(CPUARMState *env, uint64_t ptr, uint64_t modifier,
170
ARMPACKey *key, bool data, int keynumber)
171
{
172
ARMMMUIdx mmu_idx = arm_stage1_mmu_idx(env);
173
- ARMVAParameters param = aa64_va_parameters(env, ptr, mmu_idx, data);
174
+ ARMVAParameters param = aa64_va_parameters(env, ptr, mmu_idx, data, false);
175
int bot_bit, top_bit;
176
uint64_t pac, orig_ptr, test;
177
178
@@ -XXX,XX +XXX,XX @@ static uint64_t pauth_auth(CPUARMState *env, uint64_t ptr, uint64_t modifier,
179
static uint64_t pauth_strip(CPUARMState *env, uint64_t ptr, bool data)
180
{
181
ARMMMUIdx mmu_idx = arm_stage1_mmu_idx(env);
182
- ARMVAParameters param = aa64_va_parameters(env, ptr, mmu_idx, data);
183
+ ARMVAParameters param = aa64_va_parameters(env, ptr, mmu_idx, data, false);
184
185
return pauth_original_ptr(ptr, param);
94
}
186
}
95
--
187
--
96
2.20.1
188
2.34.1
97
98
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