1 | v2: dropped a couple of cadence_gem changes to ID regs that | 1 | Just one bugfix patch for this rc: |
---|---|---|---|
2 | caused new clang sanitizer warnings. | ||
3 | 2 | ||
4 | -- PMM | 3 | The following changes since commit ca5f3d4df1b47d7f66a109cdb504e83dfd7ec433: |
5 | 4 | ||
6 | The following changes since commit dddb37495b844270088e68e3bf30b764d48d863f: | 5 | Merge tag 'pull-la-20220808' of https://gitlab.com/rth7680/qemu into staging (2022-08-08 19:51:12 -0700) |
7 | |||
8 | Merge remote-tracking branch 'remotes/awilliam/tags/vfio-updates-20181015.0' into staging (2018-10-15 18:44:04 +0100) | ||
9 | 6 | ||
10 | are available in the Git repository at: | 7 | are available in the Git repository at: |
11 | 8 | ||
12 | https://git.linaro.org/people/pmaydell/qemu-arm.git tags/pull-target-arm-20181016-1 | 9 | https://git.linaro.org/people/pmaydell/qemu-arm.git tags/pull-target-arm-20220809 |
13 | 10 | ||
14 | for you to fetch changes up to 2ef297af07196c29446556537861f8e7dfeeae7b: | 11 | for you to fetch changes up to c7f26ded6d5065e4116f630f6a490b55f6c5f58e: |
15 | 12 | ||
16 | coccinelle: new inplace-byteswaps.cocci to remove inplace-byteswapping calls (2018-10-16 17:14:55 +0100) | 13 | icount: Take iothread lock when running QEMU timers (2022-08-09 10:55:14 +0100) |
17 | 14 | ||
18 | ---------------------------------------------------------------- | 15 | ---------------------------------------------------------------- |
19 | target-arm queue: | 16 | target-arm queue: |
20 | * hw/arm/virt: add DT property /secure-chosen/stdout-path indicating secure UART | 17 | * icount: Take iothread lock when running QEMU timers |
21 | * target/arm: Fix aarch64_sve_change_el wrt EL0 | ||
22 | * target/arm: Define fields of ISAR registers | ||
23 | * target/arm: Align cortex-r5 id_isar0 | ||
24 | * target/arm: Fix cortex-a7 id_isar0 | ||
25 | * net/cadence_gem: Fix various bugs, add support for new | ||
26 | features that will be used by the Xilinx Versal board | ||
27 | * target-arm: powerctl: Enable HVC when starting CPUs to EL2 | ||
28 | * target/arm: Add the Cortex-A72 | ||
29 | * target/arm: Mark PMINTENCLR and PMINTENCLR_EL1 accesses as possibly doing IO | ||
30 | * target/arm: Mask PMOVSR writes based on supported counters | ||
31 | * target/arm: Initialize ARMMMUFaultInfo in v7m_stack_read/write | ||
32 | * coccinelle: new inplace-byteswaps.cocci to remove inplace-byteswapping calls | ||
33 | 18 | ||
34 | ---------------------------------------------------------------- | 19 | ---------------------------------------------------------------- |
35 | Aaron Lindsay (2): | 20 | Peter Maydell (1): |
36 | target/arm: Mark PMINTENCLR and PMINTENCLR_EL1 accesses as possibly doing IO | 21 | icount: Take iothread lock when running QEMU timers |
37 | target/arm: Mask PMOVSR writes based on supported counters | ||
38 | 22 | ||
39 | Edgar E. Iglesias (8): | 23 | accel/tcg/tcg-accel-ops-icount.c | 6 ++++++ |
40 | net: cadence_gem: Disable TSU feature bit | 24 | 1 file changed, 6 insertions(+) |
41 | net: cadence_gem: Use uint32_t for 32bit descriptor words | ||
42 | net: cadence_gem: Add macro with max number of descriptor words | ||
43 | net: cadence_gem: Add support for extended descriptors | ||
44 | net: cadence_gem: Add support for selecting the DMA MemoryRegion | ||
45 | net: cadence_gem: Implement support for 64bit descriptor addresses | ||
46 | target-arm: powerctl: Enable HVC when starting CPUs to EL2 | ||
47 | target/arm: Add the Cortex-A72 | ||
48 | |||
49 | Jerome Forissier (1): | ||
50 | hw/arm/virt: add DT property /secure-chosen/stdout-path indicating secure UART | ||
51 | |||
52 | Peter Maydell (2): | ||
53 | target/arm: Initialize ARMMMUFaultInfo in v7m_stack_read/write | ||
54 | coccinelle: new inplace-byteswaps.cocci to remove inplace-byteswapping calls | ||
55 | |||
56 | Richard Henderson (4): | ||
57 | target/arm: Fix aarch64_sve_change_el wrt EL0 | ||
58 | target/arm: Define fields of ISAR registers | ||
59 | target/arm: Align cortex-r5 id_isar0 | ||
60 | target/arm: Fix cortex-a7 id_isar0 | ||
61 | |||
62 | include/hw/net/cadence_gem.h | 7 +- | ||
63 | target/arm/cpu.h | 95 ++++++++++++++- | ||
64 | hw/arm/virt.c | 4 + | ||
65 | hw/net/cadence_gem.c | 185 ++++++++++++++++++++--------- | ||
66 | target/arm/arm-powerctl.c | 10 ++ | ||
67 | target/arm/cpu.c | 7 +- | ||
68 | target/arm/cpu64.c | 66 +++++++++- | ||
69 | target/arm/helper.c | 27 +++-- | ||
70 | target/arm/op_helper.c | 6 +- | ||
71 | scripts/coccinelle/inplace-byteswaps.cocci | 65 ++++++++++ | ||
72 | 10 files changed, 402 insertions(+), 70 deletions(-) | ||
73 | create mode 100644 scripts/coccinelle/inplace-byteswaps.cocci | ||
74 | diff view generated by jsdifflib |
New patch | |||
---|---|---|---|
1 | The function icount_prepare_for_run() is called with the iothread | ||
2 | unlocked, but it can call icount_notify_aio_contexts() which will | ||
3 | run qemu timer handlers. Those are supposed to be run only with | ||
4 | the iothread lock held, so take the lock while we do that. | ||
1 | 5 | ||
6 | Since icount mode runs everything on a single thread anyway, | ||
7 | not holding the lock is likely mostly not going to introduce | ||
8 | races, but it can cause us to trip over assertions that we | ||
9 | do hold the lock, such as the one reported in issue 1130. | ||
10 | |||
11 | Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1130 | ||
12 | Signed-off-by: Peter Maydell <peter.maydell@linaro.org> | ||
13 | Reviewed-by: Richard Henderson <richard.henderson@linaro.org> | ||
14 | Tested-by: Pavel Dovgalyuk <Pavel.Dovgalyuk@ispras.ru> | ||
15 | Message-id: 20220801164527.3134765-1-peter.maydell@linaro.org | ||
16 | --- | ||
17 | accel/tcg/tcg-accel-ops-icount.c | 6 ++++++ | ||
18 | 1 file changed, 6 insertions(+) | ||
19 | |||
20 | diff --git a/accel/tcg/tcg-accel-ops-icount.c b/accel/tcg/tcg-accel-ops-icount.c | ||
21 | index XXXXXXX..XXXXXXX 100644 | ||
22 | --- a/accel/tcg/tcg-accel-ops-icount.c | ||
23 | +++ b/accel/tcg/tcg-accel-ops-icount.c | ||
24 | @@ -XXX,XX +XXX,XX @@ void icount_prepare_for_run(CPUState *cpu) | ||
25 | replay_mutex_lock(); | ||
26 | |||
27 | if (cpu->icount_budget == 0) { | ||
28 | + /* | ||
29 | + * We're called without the iothread lock, so must take it while | ||
30 | + * we're calling timer handlers. | ||
31 | + */ | ||
32 | + qemu_mutex_lock_iothread(); | ||
33 | icount_notify_aio_contexts(); | ||
34 | + qemu_mutex_unlock_iothread(); | ||
35 | } | ||
36 | } | ||
37 | |||
38 | -- | ||
39 | 2.25.1 | diff view generated by jsdifflib |