1 | Just small stuff. I expect/hope to get the "report attributes | 1 | v2: drop pvpanic-pci patches. |
---|---|---|---|
2 | in PAR register" fix from Andrew in, but will either send another | ||
3 | pull or just apply it as a single patch once it's been reviewed. | ||
4 | (I think we can call it a bugfix anyway, since it fixes booting | ||
5 | of Windows on ARM.) | ||
6 | 2 | ||
7 | thanks | 3 | The following changes since commit f1fcb6851aba6dd9838886dc179717a11e344a1c: |
8 | -- PMM | ||
9 | 4 | ||
5 | Merge remote-tracking branch 'remotes/huth-gitlab/tags/pull-request-2021-01-19' into staging (2021-01-19 11:57:07 +0000) | ||
10 | 6 | ||
11 | The following changes since commit abf6e752e55b2f5afb48303429dea2db7c3a62de: | 7 | are available in the Git repository at: |
12 | 8 | ||
13 | Merge remote-tracking branch 'remotes/borntraeger/tags/s390x-20171030' into staging (2017-10-30 13:02:45 +0000) | 9 | https://git.linaro.org/people/pmaydell/qemu-arm.git tags/pull-target-arm-20210119-1 |
14 | 10 | ||
15 | are available in the git repository at: | 11 | for you to fetch changes up to b93f4fbdc48283a39089469c44a5529d79dc40a8: |
16 | 12 | ||
17 | git://git.linaro.org/people/pmaydell/qemu-arm.git tags/pull-target-arm-20171031 | 13 | docs: Build and install all the docs in a single manual (2021-01-19 15:45:14 +0000) |
18 | |||
19 | for you to fetch changes up to 168df2dea701bbf3118bdfea7794369dfa694d3d: | ||
20 | |||
21 | hw/pci-host/gpex: Improve INTX to gsi routing error checking (2017-10-31 11:50:52 +0000) | ||
22 | 14 | ||
23 | ---------------------------------------------------------------- | 15 | ---------------------------------------------------------------- |
24 | target-arm queue: | 16 | target-arm queue: |
25 | * fix instruction-length bit in syndrome for WFI/WFE traps | 17 | * Implement IMPDEF pauth algorithm |
26 | * xlnx-zcu102: Specify the max number of CPUs | 18 | * Support ARMv8.4-SEL2 |
27 | * msf2: Remove dead code reported by Coverity | 19 | * Fix bug where we were truncating predicate vector lengths in SVE insns |
28 | * msf2: Wire up SYSRESETREQ in SoC for system reset | 20 | * npcm7xx_adc-test: Fix memleak in adc_qom_set |
29 | * hw/pci-host/gpex: Improve INTX to gsi routing error checking | 21 | * target/arm/m_helper: Silence GCC 10 maybe-uninitialized error |
22 | * docs: Build and install all the docs in a single manual | ||
30 | 23 | ||
31 | ---------------------------------------------------------------- | 24 | ---------------------------------------------------------------- |
32 | Alistair Francis (1): | 25 | Gan Qixin (1): |
33 | xlnx-zcu102: Specify the max number of CPUs | 26 | npcm7xx_adc-test: Fix memleak in adc_qom_set |
34 | 27 | ||
35 | Eric Auger (1): | 28 | Peter Maydell (1): |
36 | hw/pci-host/gpex: Improve INTX to gsi routing error checking | 29 | docs: Build and install all the docs in a single manual |
37 | 30 | ||
38 | Stefano Stabellini (1): | 31 | Philippe Mathieu-Daudé (1): |
39 | fix WFI/WFE length in syndrome register | 32 | target/arm/m_helper: Silence GCC 10 maybe-uninitialized error |
40 | 33 | ||
41 | Subbaraya Sundeep (2): | 34 | Richard Henderson (7): |
42 | msf2: Remove dead code reported by Coverity | 35 | target/arm: Implement an IMPDEF pauth algorithm |
43 | msf2: Wire up SYSRESETREQ in SoC for system reset | 36 | target/arm: Add cpu properties to control pauth |
37 | target/arm: Use object_property_add_bool for "sve" property | ||
38 | target/arm: Introduce PREDDESC field definitions | ||
39 | target/arm: Update PFIRST, PNEXT for pred_desc | ||
40 | target/arm: Update ZIP, UZP, TRN for pred_desc | ||
41 | target/arm: Update REV, PUNPK for pred_desc | ||
44 | 42 | ||
45 | target/arm/helper.h | 2 +- | 43 | Rémi Denis-Courmont (19): |
46 | target/arm/internals.h | 3 ++- | 44 | target/arm: remove redundant tests |
47 | hw/arm/msf2-soc.c | 11 +++++++++++ | 45 | target/arm: add arm_is_el2_enabled() helper |
48 | hw/arm/xlnx-zcu102.c | 1 + | 46 | target/arm: use arm_is_el2_enabled() where applicable |
49 | hw/pci-host/gpex.c | 10 ++++++++-- | 47 | target/arm: use arm_hcr_el2_eff() where applicable |
50 | hw/ssi/mss-spi.c | 18 ++++++++++++++---- | 48 | target/arm: factor MDCR_EL2 common handling |
51 | target/arm/op_helper.c | 7 ++++--- | 49 | target/arm: Define isar_feature function to test for presence of SEL2 |
52 | target/arm/psci.c | 2 +- | 50 | target/arm: add 64-bit S-EL2 to EL exception table |
53 | target/arm/translate-a64.c | 7 ++++++- | 51 | target/arm: add MMU stage 1 for Secure EL2 |
54 | target/arm/translate.c | 10 +++++++++- | 52 | target/arm: add ARMv8.4-SEL2 system registers |
55 | 10 files changed, 57 insertions(+), 14 deletions(-) | 53 | target/arm: handle VMID change in secure state |
54 | target/arm: do S1_ptw_translate() before address space lookup | ||
55 | target/arm: translate NS bit in page-walks | ||
56 | target/arm: generalize 2-stage page-walk condition | ||
57 | target/arm: secure stage 2 translation regime | ||
58 | target/arm: set HPFAR_EL2.NS on secure stage 2 faults | ||
59 | target/arm: revector to run-time pick target EL | ||
60 | target/arm: Implement SCR_EL2.EEL2 | ||
61 | target/arm: enable Secure EL2 in max CPU | ||
62 | target/arm: refactor vae1_tlbmask() | ||
56 | 63 | ||
64 | docs/conf.py | 46 ++++- | ||
65 | docs/devel/conf.py | 15 -- | ||
66 | docs/index.html.in | 17 -- | ||
67 | docs/interop/conf.py | 28 --- | ||
68 | docs/meson.build | 64 +++--- | ||
69 | docs/specs/conf.py | 16 -- | ||
70 | docs/system/arm/cpu-features.rst | 21 ++ | ||
71 | docs/system/conf.py | 28 --- | ||
72 | docs/tools/conf.py | 37 ---- | ||
73 | docs/user/conf.py | 15 -- | ||
74 | include/qemu/xxhash.h | 98 +++++++++ | ||
75 | target/arm/cpu-param.h | 2 +- | ||
76 | target/arm/cpu.h | 107 ++++++++-- | ||
77 | target/arm/internals.h | 45 +++++ | ||
78 | target/arm/cpu.c | 23 ++- | ||
79 | target/arm/cpu64.c | 65 ++++-- | ||
80 | target/arm/helper-a64.c | 8 +- | ||
81 | target/arm/helper.c | 414 ++++++++++++++++++++++++++------------- | ||
82 | target/arm/m_helper.c | 2 +- | ||
83 | target/arm/monitor.c | 1 + | ||
84 | target/arm/op_helper.c | 4 +- | ||
85 | target/arm/pauth_helper.c | 27 ++- | ||
86 | target/arm/sve_helper.c | 33 ++-- | ||
87 | target/arm/tlb_helper.c | 3 + | ||
88 | target/arm/translate-a64.c | 4 + | ||
89 | target/arm/translate-sve.c | 31 ++- | ||
90 | target/arm/translate.c | 36 +++- | ||
91 | tests/qtest/arm-cpu-features.c | 13 ++ | ||
92 | tests/qtest/npcm7xx_adc-test.c | 1 + | ||
93 | .gitlab-ci.yml | 4 +- | ||
94 | 30 files changed, 770 insertions(+), 438 deletions(-) | ||
95 | delete mode 100644 docs/devel/conf.py | ||
96 | delete mode 100644 docs/index.html.in | ||
97 | delete mode 100644 docs/interop/conf.py | ||
98 | delete mode 100644 docs/specs/conf.py | ||
99 | delete mode 100644 docs/system/conf.py | ||
100 | delete mode 100644 docs/tools/conf.py | ||
101 | delete mode 100644 docs/user/conf.py | ||
102 | diff view generated by jsdifflib |
Deleted patch | |||
---|---|---|---|
1 | From: Stefano Stabellini <sstabellini@kernel.org> | ||
2 | 1 | ||
3 | WFI/E are often, but not always, 4 bytes long. When they are, we need to | ||
4 | set ARM_EL_IL_SHIFT in the syndrome register. | ||
5 | |||
6 | Pass the instruction length to HELPER(wfi), use it to decrement pc | ||
7 | appropriately and to pass an is_16bit flag to syn_wfx, which sets | ||
8 | ARM_EL_IL_SHIFT if needed. | ||
9 | |||
10 | Set dc->insn in both arm_tr_translate_insn and thumb_tr_translate_insn. | ||
11 | |||
12 | Signed-off-by: Stefano Stabellini <sstabellini@kernel.org> | ||
13 | Message-id: alpine.DEB.2.10.1710241055160.574@sstabellini-ThinkPad-X260 | ||
14 | [PMM: move setting of dc->insn for Thumb so it is correct for 32 bit insns] | ||
15 | Reviewed-by: Peter Maydell <peter.maydell@linaro.org> | ||
16 | Signed-off-by: Peter Maydell <peter.maydell@linaro.org> | ||
17 | --- | ||
18 | target/arm/helper.h | 2 +- | ||
19 | target/arm/internals.h | 3 ++- | ||
20 | target/arm/op_helper.c | 7 ++++--- | ||
21 | target/arm/psci.c | 2 +- | ||
22 | target/arm/translate-a64.c | 7 ++++++- | ||
23 | target/arm/translate.c | 10 +++++++++- | ||
24 | 6 files changed, 23 insertions(+), 8 deletions(-) | ||
25 | |||
26 | diff --git a/target/arm/helper.h b/target/arm/helper.h | ||
27 | index XXXXXXX..XXXXXXX 100644 | ||
28 | --- a/target/arm/helper.h | ||
29 | +++ b/target/arm/helper.h | ||
30 | @@ -XXX,XX +XXX,XX @@ DEF_HELPER_FLAGS_3(sel_flags, TCG_CALL_NO_RWG_SE, | ||
31 | DEF_HELPER_2(exception_internal, void, env, i32) | ||
32 | DEF_HELPER_4(exception_with_syndrome, void, env, i32, i32, i32) | ||
33 | DEF_HELPER_1(setend, void, env) | ||
34 | -DEF_HELPER_1(wfi, void, env) | ||
35 | +DEF_HELPER_2(wfi, void, env, i32) | ||
36 | DEF_HELPER_1(wfe, void, env) | ||
37 | DEF_HELPER_1(yield, void, env) | ||
38 | DEF_HELPER_1(pre_hvc, void, env) | ||
39 | diff --git a/target/arm/internals.h b/target/arm/internals.h | ||
40 | index XXXXXXX..XXXXXXX 100644 | ||
41 | --- a/target/arm/internals.h | ||
42 | +++ b/target/arm/internals.h | ||
43 | @@ -XXX,XX +XXX,XX @@ static inline uint32_t syn_breakpoint(int same_el) | ||
44 | | ARM_EL_IL | 0x22; | ||
45 | } | ||
46 | |||
47 | -static inline uint32_t syn_wfx(int cv, int cond, int ti) | ||
48 | +static inline uint32_t syn_wfx(int cv, int cond, int ti, bool is_16bit) | ||
49 | { | ||
50 | return (EC_WFX_TRAP << ARM_EL_EC_SHIFT) | | ||
51 | + (is_16bit ? 0 : (1 << ARM_EL_IL_SHIFT)) | | ||
52 | (cv << 24) | (cond << 20) | ti; | ||
53 | } | ||
54 | |||
55 | diff --git a/target/arm/op_helper.c b/target/arm/op_helper.c | ||
56 | index XXXXXXX..XXXXXXX 100644 | ||
57 | --- a/target/arm/op_helper.c | ||
58 | +++ b/target/arm/op_helper.c | ||
59 | @@ -XXX,XX +XXX,XX @@ static inline int check_wfx_trap(CPUARMState *env, bool is_wfe) | ||
60 | return 0; | ||
61 | } | ||
62 | |||
63 | -void HELPER(wfi)(CPUARMState *env) | ||
64 | +void HELPER(wfi)(CPUARMState *env, uint32_t insn_len) | ||
65 | { | ||
66 | CPUState *cs = CPU(arm_env_get_cpu(env)); | ||
67 | int target_el = check_wfx_trap(env, false); | ||
68 | @@ -XXX,XX +XXX,XX @@ void HELPER(wfi)(CPUARMState *env) | ||
69 | } | ||
70 | |||
71 | if (target_el) { | ||
72 | - env->pc -= 4; | ||
73 | - raise_exception(env, EXCP_UDEF, syn_wfx(1, 0xe, 0), target_el); | ||
74 | + env->pc -= insn_len; | ||
75 | + raise_exception(env, EXCP_UDEF, syn_wfx(1, 0xe, 0, insn_len == 2), | ||
76 | + target_el); | ||
77 | } | ||
78 | |||
79 | cs->exception_index = EXCP_HLT; | ||
80 | diff --git a/target/arm/psci.c b/target/arm/psci.c | ||
81 | index XXXXXXX..XXXXXXX 100644 | ||
82 | --- a/target/arm/psci.c | ||
83 | +++ b/target/arm/psci.c | ||
84 | @@ -XXX,XX +XXX,XX @@ void arm_handle_psci_call(ARMCPU *cpu) | ||
85 | } else { | ||
86 | env->regs[0] = 0; | ||
87 | } | ||
88 | - helper_wfi(env); | ||
89 | + helper_wfi(env, 4); | ||
90 | break; | ||
91 | case QEMU_PSCI_0_1_FN_MIGRATE: | ||
92 | case QEMU_PSCI_0_2_FN_MIGRATE: | ||
93 | diff --git a/target/arm/translate-a64.c b/target/arm/translate-a64.c | ||
94 | index XXXXXXX..XXXXXXX 100644 | ||
95 | --- a/target/arm/translate-a64.c | ||
96 | +++ b/target/arm/translate-a64.c | ||
97 | @@ -XXX,XX +XXX,XX @@ static void aarch64_tr_tb_stop(DisasContextBase *dcbase, CPUState *cpu) | ||
98 | gen_helper_yield(cpu_env); | ||
99 | break; | ||
100 | case DISAS_WFI: | ||
101 | + { | ||
102 | /* This is a special case because we don't want to just halt the CPU | ||
103 | * if trying to debug across a WFI. | ||
104 | */ | ||
105 | + TCGv_i32 tmp = tcg_const_i32(4); | ||
106 | + | ||
107 | gen_a64_set_pc_im(dc->pc); | ||
108 | - gen_helper_wfi(cpu_env); | ||
109 | + gen_helper_wfi(cpu_env, tmp); | ||
110 | + tcg_temp_free_i32(tmp); | ||
111 | /* The helper doesn't necessarily throw an exception, but we | ||
112 | * must go back to the main loop to check for interrupts anyway. | ||
113 | */ | ||
114 | tcg_gen_exit_tb(0); | ||
115 | break; | ||
116 | } | ||
117 | + } | ||
118 | } | ||
119 | |||
120 | /* Functions above can change dc->pc, so re-align db->pc_next */ | ||
121 | diff --git a/target/arm/translate.c b/target/arm/translate.c | ||
122 | index XXXXXXX..XXXXXXX 100644 | ||
123 | --- a/target/arm/translate.c | ||
124 | +++ b/target/arm/translate.c | ||
125 | @@ -XXX,XX +XXX,XX @@ static void arm_tr_translate_insn(DisasContextBase *dcbase, CPUState *cpu) | ||
126 | } | ||
127 | |||
128 | insn = arm_ldl_code(env, dc->pc, dc->sctlr_b); | ||
129 | + dc->insn = insn; | ||
130 | dc->pc += 4; | ||
131 | disas_arm_insn(dc, insn); | ||
132 | |||
133 | @@ -XXX,XX +XXX,XX @@ static void thumb_tr_translate_insn(DisasContextBase *dcbase, CPUState *cpu) | ||
134 | insn = insn << 16 | insn2; | ||
135 | dc->pc += 2; | ||
136 | } | ||
137 | + dc->insn = insn; | ||
138 | |||
139 | if (dc->condexec_mask && !thumb_insn_is_unconditional(dc, insn)) { | ||
140 | uint32_t cond = dc->condexec_cond; | ||
141 | @@ -XXX,XX +XXX,XX @@ static void arm_tr_tb_stop(DisasContextBase *dcbase, CPUState *cpu) | ||
142 | /* nothing more to generate */ | ||
143 | break; | ||
144 | case DISAS_WFI: | ||
145 | - gen_helper_wfi(cpu_env); | ||
146 | + { | ||
147 | + TCGv_i32 tmp = tcg_const_i32((dc->thumb && | ||
148 | + !(dc->insn & (1U << 31))) ? 2 : 4); | ||
149 | + | ||
150 | + gen_helper_wfi(cpu_env, tmp); | ||
151 | + tcg_temp_free_i32(tmp); | ||
152 | /* The helper doesn't necessarily throw an exception, but we | ||
153 | * must go back to the main loop to check for interrupts anyway. | ||
154 | */ | ||
155 | tcg_gen_exit_tb(0); | ||
156 | break; | ||
157 | + } | ||
158 | case DISAS_WFE: | ||
159 | gen_helper_wfe(cpu_env); | ||
160 | break; | ||
161 | -- | ||
162 | 2.7.4 | ||
163 | |||
164 | diff view generated by jsdifflib |
Deleted patch | |||
---|---|---|---|
1 | From: Alistair Francis <alistair.francis@xilinx.com> | ||
2 | 1 | ||
3 | Specify the number of CPUs that can run on ZynqMP. | ||
4 | |||
5 | Signed-off-by: Alistair Francis <alistair.francis@xilinx.com> | ||
6 | Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> | ||
7 | Tested-by: Philippe Mathieu-Daudé <f4bug@amsat.org> | ||
8 | Reviewed-by: Peter Maydell <peter.maydell@linaro.org> | ||
9 | Signed-off-by: Peter Maydell <peter.maydell@linaro.org> | ||
10 | --- | ||
11 | hw/arm/xlnx-zcu102.c | 1 + | ||
12 | 1 file changed, 1 insertion(+) | ||
13 | |||
14 | diff --git a/hw/arm/xlnx-zcu102.c b/hw/arm/xlnx-zcu102.c | ||
15 | index XXXXXXX..XXXXXXX 100644 | ||
16 | --- a/hw/arm/xlnx-zcu102.c | ||
17 | +++ b/hw/arm/xlnx-zcu102.c | ||
18 | @@ -XXX,XX +XXX,XX @@ static void xlnx_zcu102_machine_class_init(ObjectClass *oc, void *data) | ||
19 | mc->block_default_type = IF_IDE; | ||
20 | mc->units_per_default_bus = 1; | ||
21 | mc->ignore_memory_transaction_failures = true; | ||
22 | + mc->max_cpus = XLNX_ZYNQMP_NUM_APU_CPUS + XLNX_ZYNQMP_NUM_RPU_CPUS; | ||
23 | } | ||
24 | |||
25 | static const TypeInfo xlnx_zcu102_machine_init_typeinfo = { | ||
26 | -- | ||
27 | 2.7.4 | ||
28 | |||
29 | diff view generated by jsdifflib |
Deleted patch | |||
---|---|---|---|
1 | From: Subbaraya Sundeep <sundeep.lkml@gmail.com> | ||
2 | 1 | ||
3 | Fixed incorrect frame size mask, validated maximum frame | ||
4 | size in spi_write and removed dead code. | ||
5 | |||
6 | Signed-off-by: Subbaraya Sundeep <sundeep.lkml@gmail.com> | ||
7 | Reviewed-by: Darren Kenny <darren.kenny@oracle.com> | ||
8 | Reviewed-by: Alistair Francis <alistair.francis@xilinx.com> | ||
9 | Message-id: 1508898544-10307-1-git-send-email-sundeep.lkml@gmail.com | ||
10 | Signed-off-by: Peter Maydell <peter.maydell@linaro.org> | ||
11 | --- | ||
12 | hw/ssi/mss-spi.c | 18 ++++++++++++++---- | ||
13 | 1 file changed, 14 insertions(+), 4 deletions(-) | ||
14 | |||
15 | diff --git a/hw/ssi/mss-spi.c b/hw/ssi/mss-spi.c | ||
16 | index XXXXXXX..XXXXXXX 100644 | ||
17 | --- a/hw/ssi/mss-spi.c | ||
18 | +++ b/hw/ssi/mss-spi.c | ||
19 | @@ -XXX,XX +XXX,XX @@ | ||
20 | #define C_BIGFIFO (1 << 29) | ||
21 | #define C_RESET (1 << 31) | ||
22 | |||
23 | -#define FRAMESZ_MASK 0x1F | ||
24 | +#define FRAMESZ_MASK 0x3F | ||
25 | #define FMCOUNT_MASK 0x00FFFF00 | ||
26 | #define FMCOUNT_SHIFT 8 | ||
27 | +#define FRAMESZ_MAX 32 | ||
28 | |||
29 | static void txfifo_reset(MSSSpiState *s) | ||
30 | { | ||
31 | @@ -XXX,XX +XXX,XX @@ static void set_fifodepth(MSSSpiState *s) | ||
32 | s->fifo_depth = 32; | ||
33 | } else if (size <= 16) { | ||
34 | s->fifo_depth = 16; | ||
35 | - } else if (size <= 32) { | ||
36 | - s->fifo_depth = 8; | ||
37 | } else { | ||
38 | - s->fifo_depth = 4; | ||
39 | + s->fifo_depth = 8; | ||
40 | } | ||
41 | } | ||
42 | |||
43 | @@ -XXX,XX +XXX,XX @@ static void spi_write(void *opaque, hwaddr addr, | ||
44 | if (s->enabled) { | ||
45 | break; | ||
46 | } | ||
47 | + /* | ||
48 | + * [31:6] bits are reserved bits and for future use. | ||
49 | + * [5:0] are for frame size. Only [5:0] bits are validated | ||
50 | + * during write, [31:6] bits are untouched. | ||
51 | + */ | ||
52 | + if ((value & FRAMESZ_MASK) > FRAMESZ_MAX) { | ||
53 | + qemu_log_mask(LOG_GUEST_ERROR, "%s: Incorrect size %u provided." | ||
54 | + "Maximum frame size is %u\n", | ||
55 | + __func__, value & FRAMESZ_MASK, FRAMESZ_MAX); | ||
56 | + break; | ||
57 | + } | ||
58 | s->regs[R_SPI_DFSIZE] = value; | ||
59 | break; | ||
60 | |||
61 | -- | ||
62 | 2.7.4 | ||
63 | |||
64 | diff view generated by jsdifflib |
Deleted patch | |||
---|---|---|---|
1 | From: Subbaraya Sundeep <sundeep.lkml@gmail.com> | ||
2 | 1 | ||
3 | Implemented system reset by creating SYSRESETREQ gpio | ||
4 | out from nvic. | ||
5 | |||
6 | Signed-off-by: Subbaraya Sundeep <sundeep.lkml@gmail.com> | ||
7 | Message-id: 1509253165-7434-1-git-send-email-sundeep.lkml@gmail.com | ||
8 | Reviewed-by: Peter Maydell <peter.maydell@linaro.org> | ||
9 | Signed-off-by: Peter Maydell <peter.maydell@linaro.org> | ||
10 | --- | ||
11 | hw/arm/msf2-soc.c | 11 +++++++++++ | ||
12 | 1 file changed, 11 insertions(+) | ||
13 | |||
14 | diff --git a/hw/arm/msf2-soc.c b/hw/arm/msf2-soc.c | ||
15 | index XXXXXXX..XXXXXXX 100644 | ||
16 | --- a/hw/arm/msf2-soc.c | ||
17 | +++ b/hw/arm/msf2-soc.c | ||
18 | @@ -XXX,XX +XXX,XX @@ static const int spi_irq[MSF2_NUM_SPIS] = { 2, 3 }; | ||
19 | static const int uart_irq[MSF2_NUM_UARTS] = { 10, 11 }; | ||
20 | static const int timer_irq[MSF2_NUM_TIMERS] = { 14, 15 }; | ||
21 | |||
22 | +static void do_sys_reset(void *opaque, int n, int level) | ||
23 | +{ | ||
24 | + if (level) { | ||
25 | + qemu_system_reset_request(SHUTDOWN_CAUSE_GUEST_RESET); | ||
26 | + } | ||
27 | +} | ||
28 | + | ||
29 | static void m2sxxx_soc_initfn(Object *obj) | ||
30 | { | ||
31 | MSF2State *s = MSF2_SOC(obj); | ||
32 | @@ -XXX,XX +XXX,XX @@ static void m2sxxx_soc_realize(DeviceState *dev_soc, Error **errp) | ||
33 | error_append_hint(errp, "m3clk can not be zero\n"); | ||
34 | return; | ||
35 | } | ||
36 | + | ||
37 | + qdev_connect_gpio_out_named(DEVICE(&s->armv7m.nvic), "SYSRESETREQ", 0, | ||
38 | + qemu_allocate_irq(&do_sys_reset, NULL, 0)); | ||
39 | + | ||
40 | system_clock_scale = NANOSECONDS_PER_SECOND / s->m3clk; | ||
41 | |||
42 | for (i = 0; i < MSF2_NUM_UARTS; i++) { | ||
43 | -- | ||
44 | 2.7.4 | ||
45 | |||
46 | diff view generated by jsdifflib |
Deleted patch | |||
---|---|---|---|
1 | From: Eric Auger <eric.auger@redhat.com> | ||
2 | 1 | ||
3 | We exposed gpex_set_irq_num() for machines to set the INTx to | ||
4 | GSI routing. However if the machine forgets to call that | ||
5 | function we currently do not check the association was properly | ||
6 | done. Let's initialize gsi values to -1 and if this value is | ||
7 | found in gpex_route_intx_pin_to_irq, set the routing mode as | ||
8 | disabled. | ||
9 | |||
10 | Signed-off-by: Eric Auger <eric.auger@redhat.com> | ||
11 | Message-id: 1508776211-22175-1-git-send-email-eric.auger@redhat.com | ||
12 | Reviewed-by: Peter Maydell <peter.maydell@linaro.org> | ||
13 | Signed-off-by: Peter Maydell <peter.maydell@linaro.org> | ||
14 | --- | ||
15 | hw/pci-host/gpex.c | 10 ++++++++-- | ||
16 | 1 file changed, 8 insertions(+), 2 deletions(-) | ||
17 | |||
18 | diff --git a/hw/pci-host/gpex.c b/hw/pci-host/gpex.c | ||
19 | index XXXXXXX..XXXXXXX 100644 | ||
20 | --- a/hw/pci-host/gpex.c | ||
21 | +++ b/hw/pci-host/gpex.c | ||
22 | @@ -XXX,XX +XXX,XX @@ static PCIINTxRoute gpex_route_intx_pin_to_irq(void *opaque, int pin) | ||
23 | { | ||
24 | PCIINTxRoute route; | ||
25 | GPEXHost *s = opaque; | ||
26 | + int gsi = s->irq_num[pin]; | ||
27 | |||
28 | - route.mode = PCI_INTX_ENABLED; | ||
29 | - route.irq = s->irq_num[pin]; | ||
30 | + route.irq = gsi; | ||
31 | + if (gsi < 0) { | ||
32 | + route.mode = PCI_INTX_DISABLED; | ||
33 | + } else { | ||
34 | + route.mode = PCI_INTX_ENABLED; | ||
35 | + } | ||
36 | |||
37 | return route; | ||
38 | } | ||
39 | @@ -XXX,XX +XXX,XX @@ static void gpex_host_realize(DeviceState *dev, Error **errp) | ||
40 | sysbus_init_mmio(sbd, &s->io_ioport); | ||
41 | for (i = 0; i < GPEX_NUM_IRQS; i++) { | ||
42 | sysbus_init_irq(sbd, &s->irq[i]); | ||
43 | + s->irq_num[i] = -1; | ||
44 | } | ||
45 | |||
46 | pci->bus = pci_register_bus(dev, "pcie.0", gpex_set_irq, | ||
47 | -- | ||
48 | 2.7.4 | ||
49 | |||
50 | diff view generated by jsdifflib |