1 | Handful of arm fixes for the rc. | 1 | For some reason the xilinx can bus patches built in my local config |
---|---|---|---|
2 | but not in the merge-test ones; dropped those. | ||
2 | 3 | ||
3 | The following changes since commit 555249a59e9cdd6b58da103aba5cf3a2d45c899f: | 4 | -- PMM |
4 | 5 | ||
5 | Merge remote-tracking branch 'remotes/ehabkost-gl/tags/x86-next-pull-request' into staging (2021-04-10 16:58:56 +0100) | 6 | The following changes since commit a68694cd1f3e5448cca814ff39b871f9ebd71ed5: |
7 | |||
8 | Merge remote-tracking branch 'remotes/philmd-gitlab/tags/edk2-next-20200914' into staging (2020-09-14 12:18:58 +0100) | ||
6 | 9 | ||
7 | are available in the Git repository at: | 10 | are available in the Git repository at: |
8 | 11 | ||
9 | https://git.linaro.org/people/pmaydell/qemu-arm.git tags/pull-target-arm-20210412 | 12 | https://git.linaro.org/people/pmaydell/qemu-arm.git tags/pull-target-arm-20200914-1 |
10 | 13 | ||
11 | for you to fetch changes up to 52c01ada86611136e3122dd139788dbcbc292d86: | 14 | for you to fetch changes up to 4fe986dd4480308ecf07200cfbd3c3d494a0f639: |
12 | 15 | ||
13 | exec: Fix overlap of PAGE_ANON and PAGE_TARGET_1 (2021-04-12 11:06:24 +0100) | 16 | tests/acceptance: console boot tests for quanta-gsj (2020-09-14 14:24:59 +0100) |
14 | 17 | ||
15 | ---------------------------------------------------------------- | 18 | ---------------------------------------------------------------- |
16 | target-arm queue: | 19 | * hw/misc/a9scu: Do not allow invalid CPU count |
17 | * hw/arm/virt-acpi-build: Fix GSIV values of the {GERR, Sync} interrupts | 20 | * hw/misc/a9scu: Minor cleanups |
18 | * hw/arm/smmuv3: Emulate CFGI_STE_RANGE for an aligned range of StreamIDs | 21 | * hw/timer/armv7m_systick: assert that board code set system_clock_scale |
19 | * accel/tcg: Preserve PAGE_ANON when changing page permissions | 22 | * decodetree: Improve identifier matching |
20 | * target/arm: Check PAGE_WRITE_ORG for MTE writeability | 23 | * target/arm: Clean up neon fp insn size field decode |
21 | * exec: Fix overlap of PAGE_ANON and PAGE_TARGET_1 | 24 | * target/arm: Remove KVM support for 32-bit Arm hosts |
25 | * hw/arm/mps2: New board models mps2-an386, mps2-an500 | ||
26 | * Deprecate Unicore32 port | ||
27 | * Deprecate lm32 port | ||
28 | * target/arm: Count PMU events when MDCR.SPME is set | ||
29 | * hw/arm: versal-virt: Correct the tx/rx GEM clocks | ||
30 | * New Nuvoton iBMC board models npcm750-evb, quanta-gsj | ||
22 | 31 | ||
23 | ---------------------------------------------------------------- | 32 | ---------------------------------------------------------------- |
24 | Richard Henderson (3): | 33 | Aaron Lindsay (1): |
25 | accel/tcg: Preserve PAGE_ANON when changing page permissions | 34 | target/arm: Count PMU events when MDCR.SPME is set |
26 | target/arm: Check PAGE_WRITE_ORG for MTE writeability | ||
27 | exec: Fix overlap of PAGE_ANON and PAGE_TARGET_1 | ||
28 | 35 | ||
29 | Zenghui Yu (2): | 36 | Edgar E. Iglesias (1): |
30 | hw/arm/virt-acpi-build: Fix GSIV values of the {GERR, Sync} interrupts | 37 | hw/arm: versal-virt: Correct the tx/rx GEM clocks |
31 | hw/arm/smmuv3: Emulate CFGI_STE_RANGE for an aligned range of StreamIDs | ||
32 | 38 | ||
33 | include/exec/cpu-all.h | 4 ++-- | 39 | Havard Skinnemoen (14): |
34 | tests/tcg/aarch64/mte.h | 3 ++- | 40 | hw/misc: Add NPCM7xx System Global Control Registers device model |
35 | accel/tcg/translate-all.c | 9 ++++++-- | 41 | hw/misc: Add NPCM7xx Clock Controller device model |
36 | hw/arm/smmuv3.c | 12 +++++++---- | 42 | hw/timer: Add NPCM7xx Timer device model |
37 | hw/arm/virt-acpi-build.c | 4 ++-- | 43 | hw/arm: Add NPCM730 and NPCM750 SoC models |
38 | target/arm/mte_helper.c | 2 +- | 44 | hw/arm: Add two NPCM7xx-based machines |
39 | tests/tcg/aarch64/mte-6.c | 43 +++++++++++++++++++++++++++++++++++++++ | 45 | roms: Add virtual Boot ROM for NPCM7xx SoCs |
40 | tests/tcg/aarch64/Makefile.target | 2 +- | 46 | hw/arm: Load -bios image as a boot ROM for npcm7xx |
41 | 8 files changed, 66 insertions(+), 13 deletions(-) | 47 | hw/nvram: NPCM7xx OTP device model |
42 | create mode 100644 tests/tcg/aarch64/mte-6.c | 48 | hw/mem: Stubbed out NPCM7xx Memory Controller model |
49 | hw/ssi: NPCM7xx Flash Interface Unit device model | ||
50 | hw/arm: Wire up BMC boot flash for npcm750-evb and quanta-gsj | ||
51 | hw/arm/npcm7xx: add board setup stub for CPU and UART clocks | ||
52 | docs/system: Add Nuvoton machine documentation | ||
53 | tests/acceptance: console boot tests for quanta-gsj | ||
43 | 54 | ||
55 | Peter Maydell (11): | ||
56 | hw/timer/armv7m_systick: assert that board code set system_clock_scale | ||
57 | target/arm: Convert Neon 3-same-fp size field to MO_* in decode | ||
58 | target/arm: Convert Neon VCVT fp size field to MO_* in decode | ||
59 | target/arm: Convert VCMLA, VCADD size field to MO_* in decode | ||
60 | target/arm: Remove KVM support for 32-bit Arm hosts | ||
61 | target/arm: Remove no-longer-reachable 32-bit KVM code | ||
62 | hw/arm/mps2: New board model mps2-an386 | ||
63 | hw/arm/mps2: New board model mps2-an500 | ||
64 | docs/system/arm/mps2.rst: Make board list consistent | ||
65 | Deprecate Unicore32 port | ||
66 | Deprecate lm32 port | ||
67 | |||
68 | Philippe Mathieu-Daudé (4): | ||
69 | hw/misc/a9scu: Do not allow invalid CPU count | ||
70 | hw/misc/a9scu: Simplify setting MemoryRegionOps::valid fields | ||
71 | hw/misc/a9scu: Simplify setting MemoryRegionOps::impl fields | ||
72 | hw/misc/a9scu: Report unimplemented accesses with qemu_log_mask(UNIMP) | ||
73 | |||
74 | Richard Henderson (1): | ||
75 | decodetree: Improve identifier matching | ||
76 | |||
77 | docs/system/arm/mps2.rst | 20 +- | ||
78 | docs/system/arm/nuvoton.rst | 92 +++++ | ||
79 | docs/system/deprecated.rst | 32 +- | ||
80 | docs/system/target-arm.rst | 1 + | ||
81 | configure | 2 +- | ||
82 | default-configs/arm-softmmu.mak | 1 + | ||
83 | include/hw/arm/npcm7xx.h | 112 +++++++ | ||
84 | include/hw/mem/npcm7xx_mc.h | 36 ++ | ||
85 | include/hw/misc/npcm7xx_clk.h | 48 +++ | ||
86 | include/hw/misc/npcm7xx_gcr.h | 43 +++ | ||
87 | include/hw/nvram/npcm7xx_otp.h | 79 +++++ | ||
88 | include/hw/ssi/npcm7xx_fiu.h | 73 ++++ | ||
89 | include/hw/timer/npcm7xx_timer.h | 78 +++++ | ||
90 | target/arm/kvm-consts.h | 7 - | ||
91 | target/arm/kvm_arm.h | 6 - | ||
92 | target/arm/neon-dp.decode | 18 +- | ||
93 | target/arm/neon-shared.decode | 18 +- | ||
94 | tests/decode/succ_ident1.decode | 7 + | ||
95 | hw/arm/mps2.c | 97 +++++- | ||
96 | hw/arm/npcm7xx.c | 532 +++++++++++++++++++++++++++++ | ||
97 | hw/arm/npcm7xx_boards.c | 197 +++++++++++ | ||
98 | hw/arm/xlnx-versal-virt.c | 2 +- | ||
99 | hw/mem/npcm7xx_mc.c | 84 +++++ | ||
100 | hw/misc/a9scu.c | 59 ++-- | ||
101 | hw/misc/npcm7xx_clk.c | 266 +++++++++++++++ | ||
102 | hw/misc/npcm7xx_gcr.c | 269 +++++++++++++++ | ||
103 | hw/nvram/npcm7xx_otp.c | 440 ++++++++++++++++++++++++ | ||
104 | hw/ssi/npcm7xx_fiu.c | 572 +++++++++++++++++++++++++++++++ | ||
105 | hw/timer/armv7m_systick.c | 8 + | ||
106 | hw/timer/npcm7xx_timer.c | 543 ++++++++++++++++++++++++++++++ | ||
107 | target/arm/cpu.c | 101 +++--- | ||
108 | target/arm/helper.c | 2 +- | ||
109 | target/arm/kvm.c | 7 - | ||
110 | target/arm/kvm32.c | 595 --------------------------------- | ||
111 | .gitmodules | 3 + | ||
112 | MAINTAINERS | 10 + | ||
113 | hw/arm/Kconfig | 9 + | ||
114 | hw/arm/meson.build | 1 + | ||
115 | hw/mem/meson.build | 1 + | ||
116 | hw/misc/meson.build | 4 + | ||
117 | hw/misc/trace-events | 8 + | ||
118 | hw/nvram/meson.build | 1 + | ||
119 | hw/ssi/meson.build | 1 + | ||
120 | hw/ssi/trace-events | 11 + | ||
121 | hw/timer/meson.build | 1 + | ||
122 | hw/timer/trace-events | 5 + | ||
123 | pc-bios/README | 6 + | ||
124 | pc-bios/meson.build | 1 + | ||
125 | pc-bios/npcm7xx_bootrom.bin | Bin 0 -> 768 bytes | ||
126 | roms/Makefile | 7 + | ||
127 | roms/vbootrom | 1 + | ||
128 | scripts/decodetree.py | 46 ++- | ||
129 | target/arm/meson.build | 5 +- | ||
130 | target/arm/translate-neon.c.inc | 42 ++- | ||
131 | tests/acceptance/boot_linux_console.py | 83 +++++ | ||
132 | 55 files changed, 3910 insertions(+), 783 deletions(-) | ||
133 | create mode 100644 docs/system/arm/nuvoton.rst | ||
134 | create mode 100644 include/hw/arm/npcm7xx.h | ||
135 | create mode 100644 include/hw/mem/npcm7xx_mc.h | ||
136 | create mode 100644 include/hw/misc/npcm7xx_clk.h | ||
137 | create mode 100644 include/hw/misc/npcm7xx_gcr.h | ||
138 | create mode 100644 include/hw/nvram/npcm7xx_otp.h | ||
139 | create mode 100644 include/hw/ssi/npcm7xx_fiu.h | ||
140 | create mode 100644 include/hw/timer/npcm7xx_timer.h | ||
141 | create mode 100644 tests/decode/succ_ident1.decode | ||
142 | create mode 100644 hw/arm/npcm7xx.c | ||
143 | create mode 100644 hw/arm/npcm7xx_boards.c | ||
144 | create mode 100644 hw/mem/npcm7xx_mc.c | ||
145 | create mode 100644 hw/misc/npcm7xx_clk.c | ||
146 | create mode 100644 hw/misc/npcm7xx_gcr.c | ||
147 | create mode 100644 hw/nvram/npcm7xx_otp.c | ||
148 | create mode 100644 hw/ssi/npcm7xx_fiu.c | ||
149 | create mode 100644 hw/timer/npcm7xx_timer.c | ||
150 | delete mode 100644 target/arm/kvm32.c | ||
151 | create mode 100644 pc-bios/npcm7xx_bootrom.bin | ||
152 | create mode 160000 roms/vbootrom | ||
153 | diff view generated by jsdifflib |
Deleted patch | |||
---|---|---|---|
1 | From: Zenghui Yu <yuzenghui@huawei.com> | ||
2 | 1 | ||
3 | The GSIV values in SMMUv3 IORT node are not correct as they don't match | ||
4 | the SMMUIrq enumeration, which describes the IRQ<->PIN mapping used by | ||
5 | our emulated vSMMU. | ||
6 | |||
7 | Fixes: a703b4f6c1ee ("hw/arm/virt-acpi-build: Add smmuv3 node in IORT table") | ||
8 | Signed-off-by: Zenghui Yu <yuzenghui@huawei.com> | ||
9 | Acked-by: Eric Auger <eric.auger@redhat.com> | ||
10 | Message-id: 20210402084731.93-1-yuzenghui@huawei.com | ||
11 | Signed-off-by: Peter Maydell <peter.maydell@linaro.org> | ||
12 | --- | ||
13 | hw/arm/virt-acpi-build.c | 4 ++-- | ||
14 | 1 file changed, 2 insertions(+), 2 deletions(-) | ||
15 | |||
16 | diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c | ||
17 | index XXXXXXX..XXXXXXX 100644 | ||
18 | --- a/hw/arm/virt-acpi-build.c | ||
19 | +++ b/hw/arm/virt-acpi-build.c | ||
20 | @@ -XXX,XX +XXX,XX @@ build_iort(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms) | ||
21 | smmu->flags = cpu_to_le32(ACPI_IORT_SMMU_V3_COHACC_OVERRIDE); | ||
22 | smmu->event_gsiv = cpu_to_le32(irq); | ||
23 | smmu->pri_gsiv = cpu_to_le32(irq + 1); | ||
24 | - smmu->gerr_gsiv = cpu_to_le32(irq + 2); | ||
25 | - smmu->sync_gsiv = cpu_to_le32(irq + 3); | ||
26 | + smmu->sync_gsiv = cpu_to_le32(irq + 2); | ||
27 | + smmu->gerr_gsiv = cpu_to_le32(irq + 3); | ||
28 | |||
29 | /* Identity RID mapping covering the whole input RID range */ | ||
30 | idmap = &smmu->id_mapping_array[0]; | ||
31 | -- | ||
32 | 2.20.1 | ||
33 | |||
34 | diff view generated by jsdifflib |
Deleted patch | |||
---|---|---|---|
1 | From: Zenghui Yu <yuzenghui@huawei.com> | ||
2 | 1 | ||
3 | In emulation of the CFGI_STE_RANGE command, we now take StreamID as the | ||
4 | start of the invalidation range, regardless of whatever the Range is, | ||
5 | whilst the spec clearly states that | ||
6 | |||
7 | - "Invalidation is performed for an *aligned* range of 2^(Range+1) | ||
8 | StreamIDs." | ||
9 | |||
10 | - "The bottom Range+1 bits of the StreamID parameter are IGNORED, | ||
11 | aligning the range to its size." | ||
12 | |||
13 | Take CFGI_ALL (where Range == 31) as an example, if there are some random | ||
14 | bits in the StreamID field, we'll fail to perform the full invalidation but | ||
15 | get a strange range (e.g., SMMUSIDRange={.start=1, .end=0}) instead. Rework | ||
16 | the emulation a bit to get rid of the discrepancy with the spec. | ||
17 | |||
18 | Signed-off-by: Zenghui Yu <yuzenghui@huawei.com> | ||
19 | Acked-by: Eric Auger <eric.auger@redhat.com> | ||
20 | Message-id: 20210402100449.528-1-yuzenghui@huawei.com | ||
21 | Signed-off-by: Peter Maydell <peter.maydell@linaro.org> | ||
22 | --- | ||
23 | hw/arm/smmuv3.c | 12 ++++++++---- | ||
24 | 1 file changed, 8 insertions(+), 4 deletions(-) | ||
25 | |||
26 | diff --git a/hw/arm/smmuv3.c b/hw/arm/smmuv3.c | ||
27 | index XXXXXXX..XXXXXXX 100644 | ||
28 | --- a/hw/arm/smmuv3.c | ||
29 | +++ b/hw/arm/smmuv3.c | ||
30 | @@ -XXX,XX +XXX,XX @@ static int smmuv3_cmdq_consume(SMMUv3State *s) | ||
31 | } | ||
32 | case SMMU_CMD_CFGI_STE_RANGE: /* same as SMMU_CMD_CFGI_ALL */ | ||
33 | { | ||
34 | - uint32_t start = CMD_SID(&cmd); | ||
35 | + uint32_t sid = CMD_SID(&cmd), mask; | ||
36 | uint8_t range = CMD_STE_RANGE(&cmd); | ||
37 | - uint64_t end = start + (1ULL << (range + 1)) - 1; | ||
38 | - SMMUSIDRange sid_range = {start, end}; | ||
39 | + SMMUSIDRange sid_range; | ||
40 | |||
41 | if (CMD_SSEC(&cmd)) { | ||
42 | cmd_error = SMMU_CERROR_ILL; | ||
43 | break; | ||
44 | } | ||
45 | - trace_smmuv3_cmdq_cfgi_ste_range(start, end); | ||
46 | + | ||
47 | + mask = (1ULL << (range + 1)) - 1; | ||
48 | + sid_range.start = sid & ~mask; | ||
49 | + sid_range.end = sid_range.start + mask; | ||
50 | + | ||
51 | + trace_smmuv3_cmdq_cfgi_ste_range(sid_range.start, sid_range.end); | ||
52 | g_hash_table_foreach_remove(bs->configs, smmuv3_invalidate_ste, | ||
53 | &sid_range); | ||
54 | break; | ||
55 | -- | ||
56 | 2.20.1 | ||
57 | |||
58 | diff view generated by jsdifflib |
Deleted patch | |||
---|---|---|---|
1 | From: Richard Henderson <richard.henderson@linaro.org> | ||
2 | 1 | ||
3 | Using mprotect() to change PROT_* does not change the MAP_ANON | ||
4 | previously set with mmap(). Our linux-user version of MTE only | ||
5 | works with MAP_ANON pages, so losing PAGE_ANON caused MTE to | ||
6 | stop working. | ||
7 | |||
8 | Reported-by: Stephen Long <steplong@quicinc.com> | ||
9 | Signed-off-by: Richard Henderson <richard.henderson@linaro.org> | ||
10 | Reviewed-by: Alex Bennée <alex.bennee@linaro.org> | ||
11 | Tested-by: Alex Bennée <alex.bennee@linaro.org> | ||
12 | Signed-off-by: Peter Maydell <peter.maydell@linaro.org> | ||
13 | --- | ||
14 | tests/tcg/aarch64/mte.h | 3 ++- | ||
15 | accel/tcg/translate-all.c | 9 +++++-- | ||
16 | tests/tcg/aarch64/mte-6.c | 43 +++++++++++++++++++++++++++++++ | ||
17 | tests/tcg/aarch64/Makefile.target | 2 +- | ||
18 | 4 files changed, 53 insertions(+), 4 deletions(-) | ||
19 | create mode 100644 tests/tcg/aarch64/mte-6.c | ||
20 | |||
21 | diff --git a/tests/tcg/aarch64/mte.h b/tests/tcg/aarch64/mte.h | ||
22 | index XXXXXXX..XXXXXXX 100644 | ||
23 | --- a/tests/tcg/aarch64/mte.h | ||
24 | +++ b/tests/tcg/aarch64/mte.h | ||
25 | @@ -XXX,XX +XXX,XX @@ static void enable_mte(int tcf) | ||
26 | } | ||
27 | } | ||
28 | |||
29 | -static void *alloc_mte_mem(size_t size) | ||
30 | +static void * alloc_mte_mem(size_t size) __attribute__((unused)); | ||
31 | +static void * alloc_mte_mem(size_t size) | ||
32 | { | ||
33 | void *p = mmap(NULL, size, PROT_READ | PROT_WRITE | PROT_MTE, | ||
34 | MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); | ||
35 | diff --git a/accel/tcg/translate-all.c b/accel/tcg/translate-all.c | ||
36 | index XXXXXXX..XXXXXXX 100644 | ||
37 | --- a/accel/tcg/translate-all.c | ||
38 | +++ b/accel/tcg/translate-all.c | ||
39 | @@ -XXX,XX +XXX,XX @@ void page_set_flags(target_ulong start, target_ulong end, int flags) | ||
40 | a missing call to h2g_valid. */ | ||
41 | assert(end - 1 <= GUEST_ADDR_MAX); | ||
42 | assert(start < end); | ||
43 | + /* Only set PAGE_ANON with new mappings. */ | ||
44 | + assert(!(flags & PAGE_ANON) || (flags & PAGE_RESET)); | ||
45 | assert_memory_lock(); | ||
46 | |||
47 | start = start & TARGET_PAGE_MASK; | ||
48 | @@ -XXX,XX +XXX,XX @@ void page_set_flags(target_ulong start, target_ulong end, int flags) | ||
49 | p->first_tb) { | ||
50 | tb_invalidate_phys_page(addr, 0); | ||
51 | } | ||
52 | - if (reset_target_data && p->target_data) { | ||
53 | + if (reset_target_data) { | ||
54 | g_free(p->target_data); | ||
55 | p->target_data = NULL; | ||
56 | + p->flags = flags; | ||
57 | + } else { | ||
58 | + /* Using mprotect on a page does not change MAP_ANON. */ | ||
59 | + p->flags = (p->flags & PAGE_ANON) | flags; | ||
60 | } | ||
61 | - p->flags = flags; | ||
62 | } | ||
63 | } | ||
64 | |||
65 | diff --git a/tests/tcg/aarch64/mte-6.c b/tests/tcg/aarch64/mte-6.c | ||
66 | new file mode 100644 | ||
67 | index XXXXXXX..XXXXXXX | ||
68 | --- /dev/null | ||
69 | +++ b/tests/tcg/aarch64/mte-6.c | ||
70 | @@ -XXX,XX +XXX,XX @@ | ||
71 | +#include "mte.h" | ||
72 | + | ||
73 | +void pass(int sig, siginfo_t *info, void *uc) | ||
74 | +{ | ||
75 | + assert(info->si_code == SEGV_MTESERR); | ||
76 | + exit(0); | ||
77 | +} | ||
78 | + | ||
79 | +int main(void) | ||
80 | +{ | ||
81 | + enable_mte(PR_MTE_TCF_SYNC); | ||
82 | + | ||
83 | + void *brk = sbrk(16); | ||
84 | + if (brk == (void *)-1) { | ||
85 | + perror("sbrk"); | ||
86 | + return 2; | ||
87 | + } | ||
88 | + | ||
89 | + if (mprotect(brk, 16, PROT_READ | PROT_WRITE | PROT_MTE)) { | ||
90 | + perror("mprotect"); | ||
91 | + return 2; | ||
92 | + } | ||
93 | + | ||
94 | + int *p1, *p2; | ||
95 | + long excl = 1; | ||
96 | + | ||
97 | + asm("irg %0,%1,%2" : "=r"(p1) : "r"(brk), "r"(excl)); | ||
98 | + asm("gmi %0,%1,%0" : "+r"(excl) : "r"(p1)); | ||
99 | + asm("irg %0,%1,%2" : "=r"(p2) : "r"(brk), "r"(excl)); | ||
100 | + asm("stg %0,[%0]" : : "r"(p1)); | ||
101 | + | ||
102 | + *p1 = 0; | ||
103 | + | ||
104 | + struct sigaction sa; | ||
105 | + memset(&sa, 0, sizeof(sa)); | ||
106 | + sa.sa_sigaction = pass; | ||
107 | + sa.sa_flags = SA_SIGINFO; | ||
108 | + sigaction(SIGSEGV, &sa, NULL); | ||
109 | + | ||
110 | + *p2 = 0; | ||
111 | + | ||
112 | + abort(); | ||
113 | +} | ||
114 | diff --git a/tests/tcg/aarch64/Makefile.target b/tests/tcg/aarch64/Makefile.target | ||
115 | index XXXXXXX..XXXXXXX 100644 | ||
116 | --- a/tests/tcg/aarch64/Makefile.target | ||
117 | +++ b/tests/tcg/aarch64/Makefile.target | ||
118 | @@ -XXX,XX +XXX,XX @@ AARCH64_TESTS += bti-2 | ||
119 | |||
120 | # MTE Tests | ||
121 | ifneq ($(DOCKER_IMAGE)$(CROSS_CC_HAS_ARMV8_MTE),) | ||
122 | -AARCH64_TESTS += mte-1 mte-2 mte-3 mte-4 | ||
123 | +AARCH64_TESTS += mte-1 mte-2 mte-3 mte-4 mte-6 | ||
124 | mte-%: CFLAGS += -march=armv8.5-a+memtag | ||
125 | endif | ||
126 | |||
127 | -- | ||
128 | 2.20.1 | ||
129 | |||
130 | diff view generated by jsdifflib |
Deleted patch | |||
---|---|---|---|
1 | From: Richard Henderson <richard.henderson@linaro.org> | ||
2 | 1 | ||
3 | We can remove PAGE_WRITE when (internally) marking a page | ||
4 | read-only because it contains translated code. | ||
5 | |||
6 | This can be triggered by tests/tcg/aarch64/bti-2, after | ||
7 | having serviced SIGILL trampolines on the stack. | ||
8 | |||
9 | Signed-off-by: Richard Henderson <richard.henderson@linaro.org> | ||
10 | Reviewed-by: Alex Bennée <alex.bennee@linaro.org> | ||
11 | Signed-off-by: Peter Maydell <peter.maydell@linaro.org> | ||
12 | --- | ||
13 | target/arm/mte_helper.c | 2 +- | ||
14 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
15 | |||
16 | diff --git a/target/arm/mte_helper.c b/target/arm/mte_helper.c | ||
17 | index XXXXXXX..XXXXXXX 100644 | ||
18 | --- a/target/arm/mte_helper.c | ||
19 | +++ b/target/arm/mte_helper.c | ||
20 | @@ -XXX,XX +XXX,XX @@ static uint8_t *allocation_tag_mem(CPUARMState *env, int ptr_mmu_idx, | ||
21 | uint8_t *tags; | ||
22 | uintptr_t index; | ||
23 | |||
24 | - if (!(flags & (ptr_access == MMU_DATA_STORE ? PAGE_WRITE : PAGE_READ))) { | ||
25 | + if (!(flags & (ptr_access == MMU_DATA_STORE ? PAGE_WRITE_ORG : PAGE_READ))) { | ||
26 | /* SIGSEGV */ | ||
27 | arm_cpu_tlb_fill(env_cpu(env), ptr, ptr_size, ptr_access, | ||
28 | ptr_mmu_idx, false, ra); | ||
29 | -- | ||
30 | 2.20.1 | ||
31 | |||
32 | diff view generated by jsdifflib |
Deleted patch | |||
---|---|---|---|
1 | From: Richard Henderson <richard.henderson@linaro.org> | ||
2 | 1 | ||
3 | Unfortuately, the elements of PAGE_* were not in numerical | ||
4 | order and so PAGE_ANON was added to an "unused" bit. | ||
5 | As an arbitrary choice, move PAGE_TARGET_{1,2} together. | ||
6 | |||
7 | Cc: Laurent Vivier <laurent@vivier.eu> | ||
8 | Fixes: 26bab757d41b ("linux-user: Introduce PAGE_ANON") | ||
9 | Buglink: https://bugs.launchpad.net/bugs/1922617 | ||
10 | Signed-off-by: Richard Henderson <richard.henderson@linaro.org> | ||
11 | Reviewed-by: Alex Bennée <alex.bennee@linaro.org> | ||
12 | Reviewed-by: Laurent Vivier <laurent@vivier.eu> | ||
13 | Tested-by: Laurent Vivier <laurent@vivier.eu> | ||
14 | Tested-by: Nathan Chancellor <nathan@kernel.org> | ||
15 | Signed-off-by: Peter Maydell <peter.maydell@linaro.org> | ||
16 | --- | ||
17 | include/exec/cpu-all.h | 4 ++-- | ||
18 | 1 file changed, 2 insertions(+), 2 deletions(-) | ||
19 | |||
20 | diff --git a/include/exec/cpu-all.h b/include/exec/cpu-all.h | ||
21 | index XXXXXXX..XXXXXXX 100644 | ||
22 | --- a/include/exec/cpu-all.h | ||
23 | +++ b/include/exec/cpu-all.h | ||
24 | @@ -XXX,XX +XXX,XX @@ extern intptr_t qemu_host_page_mask; | ||
25 | #define PAGE_RESERVED 0x0100 | ||
26 | #endif | ||
27 | /* Target-specific bits that will be used via page_get_flags(). */ | ||
28 | -#define PAGE_TARGET_1 0x0080 | ||
29 | -#define PAGE_TARGET_2 0x0200 | ||
30 | +#define PAGE_TARGET_1 0x0200 | ||
31 | +#define PAGE_TARGET_2 0x0400 | ||
32 | |||
33 | #if defined(CONFIG_USER_ONLY) | ||
34 | void page_dump(FILE *f); | ||
35 | -- | ||
36 | 2.20.1 | ||
37 | |||
38 | diff view generated by jsdifflib |