1
Last few changes before rc0: a few bug fixes, but mostly
1
arm pullreq for rc1. All minor bugfixes, except for the sve-default-vector-length
2
docs stuff.
2
patches, which are somewhere between a bugfix and a new feature.
3
3
4
thanks
4
-- PMM
5
-- PMM
5
6
6
The following changes since commit a97fca4ceb9d9b10aa8b582e817a5ee6c42ffbaf:
7
The following changes since commit c08ccd1b53f488ac86c1f65cf7623dc91acc249a:
7
8
8
Merge remote-tracking branch 'remotes/mst/tags/for_upstream3' into staging (2021-07-16 16:34:42 +0100)
9
Merge remote-tracking branch 'remotes/rth-gitlab/tags/pull-tcg-20210726' into staging (2021-07-27 08:35:01 +0100)
9
10
10
are available in the Git repository at:
11
are available in the Git repository at:
11
12
12
https://git.linaro.org/people/pmaydell/qemu-arm.git tags/pull-target-arm-20210718
13
https://git.linaro.org/people/pmaydell/qemu-arm.git tags/pull-target-arm-20210727
13
14
14
for you to fetch changes up to 8fe612a183dec4c63afdc57537079bc742d024ca:
15
for you to fetch changes up to e229a179a503f2aee43a76888cf12fbdfe8a3749:
15
16
16
target/arm: Remove duplicate 'plus1' function from Neon and SVE decode (2021-07-18 10:59:47 +0100)
17
hw: aspeed_gpio: Fix memory size (2021-07-27 11:00:00 +0100)
17
18
18
----------------------------------------------------------------
19
----------------------------------------------------------------
19
target-arm queue:
20
target-arm queue:
20
* Remove duplicate 'plus1' function from Neon and SVE decode
21
* hw/arm/smmuv3: Check 31st bit to see if CD is valid
21
* Fix offsets for TTBCR for big-endian hosts
22
* qemu-options.hx: Fix formatting of -machine memory-backend option
22
* docs: fix copyright date
23
* hw: aspeed_gpio: Fix memory size
23
* docs: add license/version info to HTML footers
24
* hw/arm/nseries: Display hexadecimal value with '0x' prefix
24
* docs: add an About section
25
* Add sve-default-vector-length cpu property
25
* docs: document some more arm boards
26
* docs: Update path that mentions deprecated.rst
27
* hw/intc/armv7m_nvic: for v8.1M VECTPENDING hides S exceptions from NS
28
* hw/intc/armv7m_nvic: Correct size of ICSR.VECTPENDING
29
* hw/intc/armv7m_nvic: ISCR.ISRPENDING is set for non-enabled pending interrupts
30
* target/arm: Report M-profile alignment faults correctly to the guest
31
* target/arm: Add missing 'return's after calling v7m_exception_taken()
32
* target/arm: Enforce that M-profile SP low 2 bits are always zero
26
33
27
----------------------------------------------------------------
34
----------------------------------------------------------------
28
Peter Maydell (11):
35
Joe Komlodi (1):
29
docs: Fix documentation Copyright date
36
hw/arm/smmuv3: Check 31st bit to see if CD is valid
30
docs: Stop calling the top level subsections of our manual 'manuals'
31
docs: Remove "Contents:" lines from top-level subsections
32
docs: Move deprecation, build and license info out of system/
33
docs: Add some actual About text to about/index.rst
34
docs: Add license note to the HTML page footer
35
docs: Add QEMU version information to HTML footer
36
docs: Add skeletal documentation of cubieboard
37
docs: Add skeletal documentation of the emcraft-sf2
38
docs: Add skeletal documentation of highbank and midway
39
target/arm: Remove duplicate 'plus1' function from Neon and SVE decode
40
37
41
Richard Henderson (1):
38
Joel Stanley (1):
42
target/arm: Fix offsets for TTBCR
39
hw: aspeed_gpio: Fix memory size
43
40
44
docs/_templates/footer.html | 14 ++++++++++++++
41
Mao Zhongyi (1):
45
docs/{system => about}/build-platforms.rst | 0
42
docs: Update path that mentions deprecated.rst
46
docs/{system => about}/deprecated.rst | 0
47
docs/about/index.rst | 27 +++++++++++++++++++++++++++
48
docs/{system => about}/license.rst | 0
49
docs/{system => about}/removed-features.rst | 0
50
docs/conf.py | 2 +-
51
docs/devel/index.rst | 7 +------
52
docs/index.rst | 1 +
53
docs/interop/index.rst | 9 ++-------
54
docs/meson.build | 3 ++-
55
docs/specs/index.rst | 7 ++-----
56
docs/system/arm/cubieboard.rst | 16 ++++++++++++++++
57
docs/system/arm/emcraft-sf2.rst | 15 +++++++++++++++
58
docs/system/arm/highbank.rst | 19 +++++++++++++++++++
59
docs/system/index.rst | 11 +----------
60
docs/system/target-arm.rst | 3 +++
61
docs/tools/index.rst | 7 ++-----
62
docs/user/index.rst | 7 +------
63
target/arm/neon-ls.decode | 4 ++--
64
target/arm/neon-shared.decode | 2 +-
65
target/arm/sve.decode | 2 +-
66
target/arm/helper.c | 11 +++++++----
67
target/arm/translate-neon.c | 5 -----
68
target/arm/translate-sve.c | 5 -----
69
MAINTAINERS | 4 ++++
70
26 files changed, 122 insertions(+), 59 deletions(-)
71
create mode 100644 docs/_templates/footer.html
72
rename docs/{system => about}/build-platforms.rst (100%)
73
rename docs/{system => about}/deprecated.rst (100%)
74
create mode 100644 docs/about/index.rst
75
rename docs/{system => about}/license.rst (100%)
76
rename docs/{system => about}/removed-features.rst (100%)
77
create mode 100644 docs/system/arm/cubieboard.rst
78
create mode 100644 docs/system/arm/emcraft-sf2.rst
79
create mode 100644 docs/system/arm/highbank.rst
80
43
44
Peter Maydell (7):
45
qemu-options.hx: Fix formatting of -machine memory-backend option
46
target/arm: Enforce that M-profile SP low 2 bits are always zero
47
target/arm: Add missing 'return's after calling v7m_exception_taken()
48
target/arm: Report M-profile alignment faults correctly to the guest
49
hw/intc/armv7m_nvic: ISCR.ISRPENDING is set for non-enabled pending interrupts
50
hw/intc/armv7m_nvic: Correct size of ICSR.VECTPENDING
51
hw/intc/armv7m_nvic: for v8.1M VECTPENDING hides S exceptions from NS
52
53
Philippe Mathieu-Daudé (1):
54
hw/arm/nseries: Display hexadecimal value with '0x' prefix
55
56
Richard Henderson (3):
57
target/arm: Correctly bound length in sve_zcr_get_valid_len
58
target/arm: Export aarch64_sve_zcr_get_valid_len
59
target/arm: Add sve-default-vector-length cpu property
60
61
docs/system/arm/cpu-features.rst | 15 ++++++++++
62
configure | 2 +-
63
hw/arm/smmuv3-internal.h | 2 +-
64
target/arm/cpu.h | 5 ++++
65
target/arm/internals.h | 10 +++++++
66
hw/arm/nseries.c | 2 +-
67
hw/gpio/aspeed_gpio.c | 3 +-
68
hw/intc/armv7m_nvic.c | 40 +++++++++++++++++++--------
69
target/arm/cpu.c | 14 ++++++++--
70
target/arm/cpu64.c | 60 ++++++++++++++++++++++++++++++++++++++++
71
target/arm/gdbstub.c | 4 +++
72
target/arm/helper.c | 8 ++++--
73
target/arm/m_helper.c | 24 ++++++++++++----
74
target/arm/translate.c | 3 ++
75
target/i386/cpu.c | 2 +-
76
MAINTAINERS | 2 +-
77
qemu-options.hx | 30 +++++++++++---------
78
17 files changed, 183 insertions(+), 43 deletions(-)
79
diff view generated by jsdifflib
1
Add some text to About to act as a brief introduction to the QEMU
1
From: Joe Komlodi <joe.komlodi@xilinx.com>
2
manual and to make the about page a bit less of an abrupt start to
3
it.
4
2
3
The bit to see if a CD is valid is the last bit of the first word of the CD.
4
5
Signed-off-by: Joe Komlodi <joe.komlodi@xilinx.com>
6
Message-id: 1626728232-134665-2-git-send-email-joe.komlodi@xilinx.com
7
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
5
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
8
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
6
Acked-by: Markus Armbruster <armbru@redhat.com>
7
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
8
Message-id: 20210705095547.15790-6-peter.maydell@linaro.org
9
---
9
---
10
docs/about/index.rst | 17 +++++++++++++++++
10
hw/arm/smmuv3-internal.h | 2 +-
11
1 file changed, 17 insertions(+)
11
1 file changed, 1 insertion(+), 1 deletion(-)
12
12
13
diff --git a/docs/about/index.rst b/docs/about/index.rst
13
diff --git a/hw/arm/smmuv3-internal.h b/hw/arm/smmuv3-internal.h
14
index XXXXXXX..XXXXXXX 100644
14
index XXXXXXX..XXXXXXX 100644
15
--- a/docs/about/index.rst
15
--- a/hw/arm/smmuv3-internal.h
16
+++ b/docs/about/index.rst
16
+++ b/hw/arm/smmuv3-internal.h
17
@@ -XXX,XX +XXX,XX @@
17
@@ -XXX,XX +XXX,XX @@ static inline int pa_range(STE *ste)
18
About QEMU
18
19
==========
19
/* CD fields */
20
20
21
+QEMU is a generic and open source machine emulator and virtualizer.
21
-#define CD_VALID(x) extract32((x)->word[0], 30, 1)
22
+
22
+#define CD_VALID(x) extract32((x)->word[0], 31, 1)
23
+QEMU can be used in several different ways. The most common is for
23
#define CD_ASID(x) extract32((x)->word[1], 16, 16)
24
+"system emulation", where it provides a virtual model of an
24
#define CD_TTB(x, sel) \
25
+entire machine (CPU, memory and emulated devices) to run a guest OS.
25
({ \
26
+In this mode the CPU may be fully emulated, or it may work with
27
+a hypervisor such as KVM, Xen, Hax or Hypervisor.Framework to
28
+allow the guest to run directly on the host CPU.
29
+
30
+The second supported way to use QEMU is "user mode emulation",
31
+where QEMU can launch processes compiled for one CPU on another CPU.
32
+In this mode the CPU is always emulated.
33
+
34
+QEMU also provides a number of standalone commandline utilities,
35
+such as the `qemu-img` disk image utility that allows you to create,
36
+convert and modify disk images.
37
+
38
.. toctree::
39
:maxdepth: 2
40
41
--
26
--
42
2.20.1
27
2.20.1
43
28
44
29
diff view generated by jsdifflib
1
Now that we have a single Sphinx manual rather than multiple manuals,
1
The documentation of the -machine memory-backend has some minor
2
we can provide a better place for "common to all of QEMU" information
2
formatting errors:
3
like the deprecation notices, build platforms, license information,
3
* Misindentation of the initial line meant that the whole option
4
which we currently have in the system/ manual even though it applies
4
section is incorrectly indented in the HTML output compared to
5
to all of QEMU.
5
the other -machine options
6
* The examples weren't indented, which meant that they were formatted
7
as plain run-on text including outputting the "::" as text.
8
* The a) b) list has no rst-format markup so it is rendered as
9
a single run-on paragraph
6
10
7
Create a new directory about/ on the same level as system/, user/,
11
Fix the formatting.
8
etc, and move these documents there.
9
12
10
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
13
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
11
Acked-by: Markus Armbruster <armbru@redhat.com>
14
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
12
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
15
Message-id: 20210719105257.3599-1-peter.maydell@linaro.org
13
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
14
Message-id: 20210705095547.15790-5-peter.maydell@linaro.org
15
---
16
---
16
docs/{system => about}/build-platforms.rst | 0
17
qemu-options.hx | 30 +++++++++++++++++-------------
17
docs/{system => about}/deprecated.rst | 0
18
1 file changed, 17 insertions(+), 13 deletions(-)
18
docs/about/index.rst | 10 ++++++++++
19
docs/{system => about}/license.rst | 0
20
docs/{system => about}/removed-features.rst | 0
21
docs/index.rst | 1 +
22
docs/system/index.rst | 4 ----
23
7 files changed, 11 insertions(+), 4 deletions(-)
24
rename docs/{system => about}/build-platforms.rst (100%)
25
rename docs/{system => about}/deprecated.rst (100%)
26
create mode 100644 docs/about/index.rst
27
rename docs/{system => about}/license.rst (100%)
28
rename docs/{system => about}/removed-features.rst (100%)
29
19
30
diff --git a/docs/system/build-platforms.rst b/docs/about/build-platforms.rst
20
diff --git a/qemu-options.hx b/qemu-options.hx
31
similarity index 100%
21
index XXXXXXX..XXXXXXX 100644
32
rename from docs/system/build-platforms.rst
22
--- a/qemu-options.hx
33
rename to docs/about/build-platforms.rst
23
+++ b/qemu-options.hx
34
diff --git a/docs/system/deprecated.rst b/docs/about/deprecated.rst
24
@@ -XXX,XX +XXX,XX @@ SRST
35
similarity index 100%
25
Enables or disables ACPI Heterogeneous Memory Attribute Table
36
rename from docs/system/deprecated.rst
26
(HMAT) support. The default is off.
37
rename to docs/about/deprecated.rst
27
38
diff --git a/docs/about/index.rst b/docs/about/index.rst
28
- ``memory-backend='id'``
39
new file mode 100644
29
+ ``memory-backend='id'``
40
index XXXXXXX..XXXXXXX
30
An alternative to legacy ``-mem-path`` and ``mem-prealloc`` options.
41
--- /dev/null
31
Allows to use a memory backend as main RAM.
42
+++ b/docs/about/index.rst
32
43
@@ -XXX,XX +XXX,XX @@
33
For example:
44
+About QEMU
34
::
45
+==========
35
- -object memory-backend-file,id=pc.ram,size=512M,mem-path=/hugetlbfs,prealloc=on,share=on
36
- -machine memory-backend=pc.ram
37
- -m 512M
46
+
38
+
47
+.. toctree::
39
+ -object memory-backend-file,id=pc.ram,size=512M,mem-path=/hugetlbfs,prealloc=on,share=on
48
+ :maxdepth: 2
40
+ -machine memory-backend=pc.ram
41
+ -m 512M
42
43
Migration compatibility note:
44
- a) as backend id one shall use value of 'default-ram-id', advertised by
45
- machine type (available via ``query-machines`` QMP command), if migration
46
- to/from old QEMU (<5.0) is expected.
47
- b) for machine types 4.0 and older, user shall
48
- use ``x-use-canonical-path-for-ramblock-id=off`` backend option
49
- if migration to/from old QEMU (<5.0) is expected.
49
+
50
+
50
+ build-platforms
51
+ * as backend id one shall use value of 'default-ram-id', advertised by
51
+ deprecated
52
+ machine type (available via ``query-machines`` QMP command), if migration
52
+ removed-features
53
+ to/from old QEMU (<5.0) is expected.
53
+ license
54
+ * for machine types 4.0 and older, user shall
54
diff --git a/docs/system/license.rst b/docs/about/license.rst
55
+ use ``x-use-canonical-path-for-ramblock-id=off`` backend option
55
similarity index 100%
56
+ if migration to/from old QEMU (<5.0) is expected.
56
rename from docs/system/license.rst
57
+
57
rename to docs/about/license.rst
58
For example:
58
diff --git a/docs/system/removed-features.rst b/docs/about/removed-features.rst
59
::
59
similarity index 100%
60
- -object memory-backend-ram,id=pc.ram,size=512M,x-use-canonical-path-for-ramblock-id=off
60
rename from docs/system/removed-features.rst
61
- -machine memory-backend=pc.ram
61
rename to docs/about/removed-features.rst
62
- -m 512M
62
diff --git a/docs/index.rst b/docs/index.rst
63
+
63
index XXXXXXX..XXXXXXX 100644
64
+ -object memory-backend-ram,id=pc.ram,size=512M,x-use-canonical-path-for-ramblock-id=off
64
--- a/docs/index.rst
65
+ -machine memory-backend=pc.ram
65
+++ b/docs/index.rst
66
+ -m 512M
66
@@ -XXX,XX +XXX,XX @@ Welcome to QEMU's documentation!
67
ERST
67
:maxdepth: 2
68
68
:caption: Contents:
69
HXCOMM Deprecated by -machine
69
70
+ about/index
71
system/index
72
user/index
73
tools/index
74
diff --git a/docs/system/index.rst b/docs/system/index.rst
75
index XXXXXXX..XXXXXXX 100644
76
--- a/docs/system/index.rst
77
+++ b/docs/system/index.rst
78
@@ -XXX,XX +XXX,XX @@ or Hypervisor.Framework.
79
targets
80
security
81
multi-process
82
- deprecated
83
- removed-features
84
- build-platforms
85
- license
86
--
70
--
87
2.20.1
71
2.20.1
88
72
89
73
diff view generated by jsdifflib
1
The Neon and SVE decoders use private 'plus1' functions to implement
1
For M-profile, unlike A-profile, the low 2 bits of SP are defined to be
2
"add one" for the !function decoder syntax. We have a generic
2
RES0H, which is to say that they must be hardwired to zero so that
3
"plus_1" function in translate.h, so use that instead.
3
guest attempts to write non-zero values to them are ignored.
4
5
Implement this behaviour by masking out the low bits:
6
* for writes to r13 by the gdbstub
7
* for writes to any of the various flavours of SP via MSR
8
* for writes to r13 via store_reg() in generated code
9
10
Note that all the direct uses of cpu_R[] in translate.c are in places
11
where the register is definitely not r13 (usually because that has
12
been checked for as an UNDEFINED or UNPREDICTABLE case and handled as
13
UNDEF).
14
15
All the other writes to regs[13] in C code are either:
16
* A-profile only code
17
* writes of values we can guarantee to be aligned, such as
18
- writes of previous-SP-value plus or minus a 4-aligned constant
19
- writes of the value in an SP limit register (which we already
20
enforce to be aligned)
4
21
5
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
22
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
6
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
23
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
7
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
24
Message-id: 20210723162146.5167-2-peter.maydell@linaro.org
8
Message-id: 20210715095341.701-1-peter.maydell@linaro.org
9
---
25
---
10
target/arm/neon-ls.decode | 4 ++--
26
target/arm/gdbstub.c | 4 ++++
11
target/arm/neon-shared.decode | 2 +-
27
target/arm/m_helper.c | 14 ++++++++------
12
target/arm/sve.decode | 2 +-
28
target/arm/translate.c | 3 +++
13
target/arm/translate-neon.c | 5 -----
29
3 files changed, 15 insertions(+), 6 deletions(-)
14
target/arm/translate-sve.c | 5 -----
15
5 files changed, 4 insertions(+), 14 deletions(-)
16
30
17
diff --git a/target/arm/neon-ls.decode b/target/arm/neon-ls.decode
31
diff --git a/target/arm/gdbstub.c b/target/arm/gdbstub.c
18
index XXXXXXX..XXXXXXX 100644
32
index XXXXXXX..XXXXXXX 100644
19
--- a/target/arm/neon-ls.decode
33
--- a/target/arm/gdbstub.c
20
+++ b/target/arm/neon-ls.decode
34
+++ b/target/arm/gdbstub.c
21
@@ -XXX,XX +XXX,XX @@ VLD_all_lanes 1111 0100 1 . 1 0 rn:4 .... 11 n:2 size:2 t:1 a:1 rm:4 \
35
@@ -XXX,XX +XXX,XX @@ int arm_cpu_gdb_write_register(CPUState *cs, uint8_t *mem_buf, int n)
22
vd=%vd_dp
36
23
37
if (n < 16) {
24
# Neon load/store single structure to one lane
38
/* Core integer register. */
25
-%imm1_5_p1 5:1 !function=plus1
39
+ if (n == 13 && arm_feature(env, ARM_FEATURE_M)) {
26
-%imm1_6_p1 6:1 !function=plus1
40
+ /* M profile SP low bits are always 0 */
27
+%imm1_5_p1 5:1 !function=plus_1
41
+ tmp &= ~3;
28
+%imm1_6_p1 6:1 !function=plus_1
42
+ }
29
43
env->regs[n] = tmp;
30
VLDST_single 1111 0100 1 . l:1 0 rn:4 .... 00 n:2 reg_idx:3 align:1 rm:4 \
44
return 4;
31
vd=%vd_dp size=0 stride=1
45
}
32
diff --git a/target/arm/neon-shared.decode b/target/arm/neon-shared.decode
46
diff --git a/target/arm/m_helper.c b/target/arm/m_helper.c
33
index XXXXXXX..XXXXXXX 100644
47
index XXXXXXX..XXXXXXX 100644
34
--- a/target/arm/neon-shared.decode
48
--- a/target/arm/m_helper.c
35
+++ b/target/arm/neon-shared.decode
49
+++ b/target/arm/m_helper.c
36
@@ -XXX,XX +XXX,XX @@
50
@@ -XXX,XX +XXX,XX @@ void HELPER(v7m_msr)(CPUARMState *env, uint32_t maskreg, uint32_t val)
37
# which is 0 for fp16 and 1 for fp32 into a MO_* constant.
51
if (!env->v7m.secure) {
38
# (Note that this is the reverse of the sense of the 1-bit size
52
return;
39
# field in the 3same_fp Neon insns.)
53
}
40
-%vcadd_size 20:1 !function=plus1
54
- env->v7m.other_ss_msp = val;
41
+%vcadd_size 20:1 !function=plus_1
55
+ env->v7m.other_ss_msp = val & ~3;
42
56
return;
43
VCMLA 1111 110 rot:2 . 1 . .... .... 1000 . q:1 . 0 .... \
57
case 0x89: /* PSP_NS */
44
vm=%vm_dp vn=%vn_dp vd=%vd_dp size=%vcadd_size
58
if (!env->v7m.secure) {
45
diff --git a/target/arm/sve.decode b/target/arm/sve.decode
59
return;
60
}
61
- env->v7m.other_ss_psp = val;
62
+ env->v7m.other_ss_psp = val & ~3;
63
return;
64
case 0x8a: /* MSPLIM_NS */
65
if (!env->v7m.secure) {
66
@@ -XXX,XX +XXX,XX @@ void HELPER(v7m_msr)(CPUARMState *env, uint32_t maskreg, uint32_t val)
67
68
limit = is_psp ? env->v7m.psplim[false] : env->v7m.msplim[false];
69
70
+ val &= ~0x3;
71
+
72
if (val < limit) {
73
raise_exception_ra(env, EXCP_STKOF, 0, 1, GETPC());
74
}
75
@@ -XXX,XX +XXX,XX @@ void HELPER(v7m_msr)(CPUARMState *env, uint32_t maskreg, uint32_t val)
76
break;
77
case 8: /* MSP */
78
if (v7m_using_psp(env)) {
79
- env->v7m.other_sp = val;
80
+ env->v7m.other_sp = val & ~3;
81
} else {
82
- env->regs[13] = val;
83
+ env->regs[13] = val & ~3;
84
}
85
break;
86
case 9: /* PSP */
87
if (v7m_using_psp(env)) {
88
- env->regs[13] = val;
89
+ env->regs[13] = val & ~3;
90
} else {
91
- env->v7m.other_sp = val;
92
+ env->v7m.other_sp = val & ~3;
93
}
94
break;
95
case 10: /* MSPLIM */
96
diff --git a/target/arm/translate.c b/target/arm/translate.c
46
index XXXXXXX..XXXXXXX 100644
97
index XXXXXXX..XXXXXXX 100644
47
--- a/target/arm/sve.decode
98
--- a/target/arm/translate.c
48
+++ b/target/arm/sve.decode
99
+++ b/target/arm/translate.c
49
@@ -XXX,XX +XXX,XX @@
100
@@ -XXX,XX +XXX,XX @@ void store_reg(DisasContext *s, int reg, TCGv_i32 var)
50
###########################################################################
101
*/
51
# Named fields. These are primarily for disjoint fields.
102
tcg_gen_andi_i32(var, var, s->thumb ? ~1 : ~3);
52
103
s->base.is_jmp = DISAS_JUMP;
53
-%imm4_16_p1 16:4 !function=plus1
104
+ } else if (reg == 13 && arm_dc_feature(s, ARM_FEATURE_M)) {
54
+%imm4_16_p1 16:4 !function=plus_1
105
+ /* For M-profile SP bits [1:0] are always zero */
55
%imm6_22_5 22:1 5:5
106
+ tcg_gen_andi_i32(var, var, ~3);
56
%imm7_22_16 22:2 16:5
107
}
57
%imm8_16_10 16:5 10:3
108
tcg_gen_mov_i32(cpu_R[reg], var);
58
diff --git a/target/arm/translate-neon.c b/target/arm/translate-neon.c
109
tcg_temp_free_i32(var);
59
index XXXXXXX..XXXXXXX 100644
60
--- a/target/arm/translate-neon.c
61
+++ b/target/arm/translate-neon.c
62
@@ -XXX,XX +XXX,XX @@
63
#include "translate.h"
64
#include "translate-a32.h"
65
66
-static inline int plus1(DisasContext *s, int x)
67
-{
68
- return x + 1;
69
-}
70
-
71
static inline int neon_3same_fp_size(DisasContext *s, int x)
72
{
73
/* Convert 0==fp32, 1==fp16 into a MO_* value */
74
diff --git a/target/arm/translate-sve.c b/target/arm/translate-sve.c
75
index XXXXXXX..XXXXXXX 100644
76
--- a/target/arm/translate-sve.c
77
+++ b/target/arm/translate-sve.c
78
@@ -XXX,XX +XXX,XX @@ static int tszimm_shl(DisasContext *s, int x)
79
return x - (8 << tszimm_esz(s, x));
80
}
81
82
-static inline int plus1(DisasContext *s, int x)
83
-{
84
- return x + 1;
85
-}
86
-
87
/* The SH bit is in bit 8. Extract the low 8 and shift. */
88
static inline int expand_imm_sh8s(DisasContext *s, int x)
89
{
90
--
110
--
91
2.20.1
111
2.20.1
92
112
93
113
diff view generated by jsdifflib
1
Add a line to the HTML document footer mentioning the QEMU version.
1
In do_v7m_exception_exit(), we perform various checks as part of
2
The version information is already provided in very faint text below
2
performing the exception return. If one of these checks fails, the
3
the QEMU logo in the sidebar, but that is rather inconspicious, so
3
architecture requires that we take an appropriate exception on the
4
repeating it in the footer seems useful.
4
existing stackframe. We implement this by calling
5
v7m_exception_taken() to set up to take the new exception, and then
6
immediately returning from do_v7m_exception_exit() without proceeding
7
any further with the unstack-and-exception-return process.
8
9
In a couple of checks that are new in v8.1M, we forgot the "return"
10
statement, with the effect that if bad code in the guest tripped over
11
these checks we would set up to take a UsageFault exception but then
12
blunder on trying to also unstack and return from the original
13
exception, with the probable result that the guest would crash.
14
15
Add the missing return statements.
5
16
6
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
17
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
7
Acked-by: Markus Armbruster <armbru@redhat.com>
18
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
8
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
19
Message-id: 20210723162146.5167-3-peter.maydell@linaro.org
9
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
10
Message-id: 20210705095547.15790-8-peter.maydell@linaro.org
11
---
20
---
12
docs/_templates/footer.html | 2 ++
21
target/arm/m_helper.c | 2 ++
13
1 file changed, 2 insertions(+)
22
1 file changed, 2 insertions(+)
14
23
15
diff --git a/docs/_templates/footer.html b/docs/_templates/footer.html
24
diff --git a/target/arm/m_helper.c b/target/arm/m_helper.c
16
index XXXXXXX..XXXXXXX 100644
25
index XXXXXXX..XXXXXXX 100644
17
--- a/docs/_templates/footer.html
26
--- a/target/arm/m_helper.c
18
+++ b/docs/_templates/footer.html
27
+++ b/target/arm/m_helper.c
19
@@ -XXX,XX +XXX,XX @@
28
@@ -XXX,XX +XXX,XX @@ static void do_v7m_exception_exit(ARMCPU *cpu)
20
<!-- Empty para to force a blank line after "Built with Sphinx ..." -->
29
qemu_log_mask(CPU_LOG_INT, "...taking UsageFault on existing "
21
<p></p>
30
"stackframe: NSACR prevents clearing FPU registers\n");
22
31
v7m_exception_taken(cpu, excret, true, false);
23
+<p>This documentation is for QEMU version {{ version }}.</p>
32
+ return;
24
+
33
} else if (!cpacr_pass) {
25
{% trans path=pathto('about/license') %}
34
armv7m_nvic_set_pending(env->nvic, ARMV7M_EXCP_USAGE,
26
<p><a href="{{ path }}">QEMU and this manual are released under the
35
exc_secure);
27
GNU General Public License, version 2.</a></p>
36
@@ -XXX,XX +XXX,XX @@ static void do_v7m_exception_exit(ARMCPU *cpu)
37
qemu_log_mask(CPU_LOG_INT, "...taking UsageFault on existing "
38
"stackframe: CPACR prevents clearing FPU registers\n");
39
v7m_exception_taken(cpu, excret, true, false);
40
+ return;
41
}
42
}
43
/* Clear s0..s15, FPSCR and VPR */
28
--
44
--
29
2.20.1
45
2.20.1
30
46
31
47
diff view generated by jsdifflib
1
Add skeletal documentation for the highbank and midway machines.
1
For M-profile, we weren't reporting alignment faults triggered by the
2
generic TCG code correctly to the guest. These get passed into
3
arm_v7m_cpu_do_interrupt() as an EXCP_DATA_ABORT with an A-profile
4
style exception.fsr value of 1. We didn't check for this, and so
5
they fell through into the default of "assume this is an MPU fault"
6
and were reported to the guest as a data access violation MPU fault.
7
8
Report these alignment faults as UsageFaults which set the UNALIGNED
9
bit in the UFSR.
2
10
3
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
11
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
4
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
12
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
5
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
13
Message-id: 20210723162146.5167-4-peter.maydell@linaro.org
6
Message-id: 20210713142226.19155-4-peter.maydell@linaro.org
7
---
14
---
8
docs/system/arm/highbank.rst | 19 +++++++++++++++++++
15
target/arm/m_helper.c | 8 ++++++++
9
docs/system/target-arm.rst | 1 +
16
1 file changed, 8 insertions(+)
10
MAINTAINERS | 1 +
11
3 files changed, 21 insertions(+)
12
create mode 100644 docs/system/arm/highbank.rst
13
17
14
diff --git a/docs/system/arm/highbank.rst b/docs/system/arm/highbank.rst
18
diff --git a/target/arm/m_helper.c b/target/arm/m_helper.c
15
new file mode 100644
16
index XXXXXXX..XXXXXXX
17
--- /dev/null
18
+++ b/docs/system/arm/highbank.rst
19
@@ -XXX,XX +XXX,XX @@
20
+Calxeda Highbank and Midway (``highbank``, ``midway``)
21
+======================================================
22
+
23
+``highbank`` is a model of the Calxeda Highbank (ECX-1000) system,
24
+which has four Cortex-A9 cores.
25
+
26
+``midway`` is a model of the Calxeda Midway (ECX-2000) system,
27
+which has four Cortex-A15 cores.
28
+
29
+Emulated devices:
30
+
31
+- L2x0 cache controller
32
+- SP804 dual timer
33
+- PL011 UART
34
+- PL061 GPIOs
35
+- PL031 RTC
36
+- PL022 synchronous serial port controller
37
+- AHCI
38
+- XGMAC ethernet controllers
39
diff --git a/docs/system/target-arm.rst b/docs/system/target-arm.rst
40
index XXXXXXX..XXXXXXX 100644
19
index XXXXXXX..XXXXXXX 100644
41
--- a/docs/system/target-arm.rst
20
--- a/target/arm/m_helper.c
42
+++ b/docs/system/target-arm.rst
21
+++ b/target/arm/m_helper.c
43
@@ -XXX,XX +XXX,XX @@ undocumented; you can get a complete list by running
22
@@ -XXX,XX +XXX,XX @@ void arm_v7m_cpu_do_interrupt(CPUState *cs)
44
arm/digic
23
env->v7m.sfsr |= R_V7M_SFSR_LSERR_MASK;
45
arm/cubieboard
24
break;
46
arm/emcraft-sf2
25
case EXCP_UNALIGNED:
47
+ arm/highbank
26
+ /* Unaligned faults reported by M-profile aware code */
48
arm/musicpal
27
armv7m_nvic_set_pending(env->nvic, ARMV7M_EXCP_USAGE, env->v7m.secure);
49
arm/gumstix
28
env->v7m.cfsr[env->v7m.secure] |= R_V7M_CFSR_UNALIGNED_MASK;
50
arm/nrf
29
break;
51
diff --git a/MAINTAINERS b/MAINTAINERS
30
@@ -XXX,XX +XXX,XX @@ void arm_v7m_cpu_do_interrupt(CPUState *cs)
52
index XXXXXXX..XXXXXXX 100644
31
}
53
--- a/MAINTAINERS
32
armv7m_nvic_set_pending(env->nvic, ARMV7M_EXCP_BUS, false);
54
+++ b/MAINTAINERS
33
break;
55
@@ -XXX,XX +XXX,XX @@ L: qemu-arm@nongnu.org
34
+ case 0x1: /* Alignment fault reported by generic code */
56
S: Odd Fixes
35
+ qemu_log_mask(CPU_LOG_INT,
57
F: hw/arm/highbank.c
36
+ "...really UsageFault with UFSR.UNALIGNED\n");
58
F: hw/net/xgmac.c
37
+ env->v7m.cfsr[env->v7m.secure] |= R_V7M_CFSR_UNALIGNED_MASK;
59
+F: docs/system/arm/highbank.rst
38
+ armv7m_nvic_set_pending(env->nvic, ARMV7M_EXCP_USAGE,
60
39
+ env->v7m.secure);
61
Canon DIGIC
40
+ break;
62
M: Antony Pavlov <antonynpavlov@gmail.com>
41
default:
42
/*
43
* All other FSR values are either MPU faults or "can't happen
63
--
44
--
64
2.20.1
45
2.20.1
65
46
66
47
diff view generated by jsdifflib
1
Add skeletal documentation of the emcraft-sf2 machine.
1
The ISCR.ISRPENDING bit is set when an external interrupt is pending.
2
This is true whether that external interrupt is enabled or not.
3
This means that we can't use 's->vectpending == 0' as a shortcut to
4
"ISRPENDING is zero", because s->vectpending indicates only the
5
highest priority pending enabled interrupt.
6
7
Remove the incorrect optimization so that if there is no pending
8
enabled interrupt we fall through to scanning through the whole
9
interrupt array.
2
10
3
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
11
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
4
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
12
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
5
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
13
Message-id: 20210723162146.5167-5-peter.maydell@linaro.org
6
Message-id: 20210713142226.19155-3-peter.maydell@linaro.org
7
---
14
---
8
docs/system/arm/emcraft-sf2.rst | 15 +++++++++++++++
15
hw/intc/armv7m_nvic.c | 9 ++++-----
9
docs/system/target-arm.rst | 1 +
16
1 file changed, 4 insertions(+), 5 deletions(-)
10
MAINTAINERS | 1 +
11
3 files changed, 17 insertions(+)
12
create mode 100644 docs/system/arm/emcraft-sf2.rst
13
17
14
diff --git a/docs/system/arm/emcraft-sf2.rst b/docs/system/arm/emcraft-sf2.rst
18
diff --git a/hw/intc/armv7m_nvic.c b/hw/intc/armv7m_nvic.c
15
new file mode 100644
16
index XXXXXXX..XXXXXXX
17
--- /dev/null
18
+++ b/docs/system/arm/emcraft-sf2.rst
19
@@ -XXX,XX +XXX,XX @@
20
+Emcraft SmartFusion2 SOM kit (``emcraft-sf2``)
21
+==============================================
22
+
23
+The ``emcraft-sf2`` board emulates the SmartFusion2 SOM kit from
24
+Emcraft (M2S010). This is a System-on-Module from EmCraft systems,
25
+based on the SmartFusion2 SoC FPGA from Microsemi Corporation.
26
+The SoC is based on a Cortex-M4 processor.
27
+
28
+Emulated devices:
29
+
30
+- System timer
31
+- System registers
32
+- SPI controller
33
+- UART
34
+- EMAC
35
diff --git a/docs/system/target-arm.rst b/docs/system/target-arm.rst
36
index XXXXXXX..XXXXXXX 100644
19
index XXXXXXX..XXXXXXX 100644
37
--- a/docs/system/target-arm.rst
20
--- a/hw/intc/armv7m_nvic.c
38
+++ b/docs/system/target-arm.rst
21
+++ b/hw/intc/armv7m_nvic.c
39
@@ -XXX,XX +XXX,XX @@ undocumented; you can get a complete list by running
22
@@ -XXX,XX +XXX,XX @@ static bool nvic_isrpending(NVICState *s)
40
arm/sabrelite
23
{
41
arm/digic
24
int irq;
42
arm/cubieboard
25
43
+ arm/emcraft-sf2
26
- /* We can shortcut if the highest priority pending interrupt
44
arm/musicpal
27
- * happens to be external or if there is nothing pending.
45
arm/gumstix
28
+ /*
46
arm/nrf
29
+ * We can shortcut if the highest priority pending interrupt
47
diff --git a/MAINTAINERS b/MAINTAINERS
30
+ * happens to be external; if not we need to check the whole
48
index XXXXXXX..XXXXXXX 100644
31
+ * vectors[] array.
49
--- a/MAINTAINERS
32
*/
50
+++ b/MAINTAINERS
33
if (s->vectpending > NVIC_FIRST_IRQ) {
51
@@ -XXX,XX +XXX,XX @@ M: Peter Maydell <peter.maydell@linaro.org>
34
return true;
52
L: qemu-arm@nongnu.org
35
}
53
S: Maintained
36
- if (s->vectpending == 0) {
54
F: hw/arm/msf2-som.c
37
- return false;
55
+F: docs/system/arm/emcraft-sf2.rst
38
- }
56
39
57
ASPEED BMCs
40
for (irq = NVIC_FIRST_IRQ; irq < s->num_irq; irq++) {
58
M: Cédric Le Goater <clg@kaod.org>
41
if (s->vectors[irq].pending) {
59
--
42
--
60
2.20.1
43
2.20.1
61
44
62
45
diff view generated by jsdifflib
1
In commit 6d8980a38fa we updated the copyright string we present to
1
The VECTPENDING field in the ICSR is 9 bits wide, in bits [20:12] of
2
the user in -version output, About dialogs, etc, but we forgot that
2
the register. We were incorrectly masking it to 8 bits, so it would
3
the Sphinx manuals have a separate copyright string setting. Update
3
report the wrong value if the pending exception was greater than 256.
4
that one too.
4
Fix the bug.
5
5
6
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
6
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
7
Acked-by: Markus Armbruster <armbru@redhat.com>
7
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
8
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
8
Message-id: 20210723162146.5167-6-peter.maydell@linaro.org
9
Message-id: 20210705095547.15790-2-peter.maydell@linaro.org
10
---
9
---
11
docs/conf.py | 2 +-
10
hw/intc/armv7m_nvic.c | 2 +-
12
1 file changed, 1 insertion(+), 1 deletion(-)
11
1 file changed, 1 insertion(+), 1 deletion(-)
13
12
14
diff --git a/docs/conf.py b/docs/conf.py
13
diff --git a/hw/intc/armv7m_nvic.c b/hw/intc/armv7m_nvic.c
15
index XXXXXXX..XXXXXXX 100644
14
index XXXXXXX..XXXXXXX 100644
16
--- a/docs/conf.py
15
--- a/hw/intc/armv7m_nvic.c
17
+++ b/docs/conf.py
16
+++ b/hw/intc/armv7m_nvic.c
18
@@ -XXX,XX +XXX,XX @@
17
@@ -XXX,XX +XXX,XX @@ static uint32_t nvic_readl(NVICState *s, uint32_t offset, MemTxAttrs attrs)
19
18
/* VECTACTIVE */
20
# General information about the project.
19
val = cpu->env.v7m.exception;
21
project = u'QEMU'
20
/* VECTPENDING */
22
-copyright = u'2020, The QEMU Project Developers'
21
- val |= (s->vectpending & 0xff) << 12;
23
+copyright = u'2021, The QEMU Project Developers'
22
+ val |= (s->vectpending & 0x1ff) << 12;
24
author = u'The QEMU Project Developers'
23
/* ISRPENDING - set if any external IRQ is pending */
25
24
if (nvic_isrpending(s)) {
26
# The version info for the project you're documenting, acts as replacement for
25
val |= (1 << 22);
27
--
26
--
28
2.20.1
27
2.20.1
29
28
30
29
diff view generated by jsdifflib
1
Add skeletal documentation of the cubieboard machine.
1
In Arm v8.1M the VECTPENDING field in the ICSR has new behaviour: if
2
the register is accessed NonSecure and the highest priority pending
3
enabled exception (that would be returned in the VECTPENDING field)
4
targets Secure, then the VECTPENDING field must read 1 rather than
5
the exception number of the pending exception. Implement this.
2
6
3
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
7
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
4
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
8
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
5
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
9
Message-id: 20210723162146.5167-7-peter.maydell@linaro.org
6
Message-id: 20210713142226.19155-2-peter.maydell@linaro.org
7
---
10
---
8
docs/system/arm/cubieboard.rst | 16 ++++++++++++++++
11
hw/intc/armv7m_nvic.c | 31 ++++++++++++++++++++++++-------
9
docs/system/target-arm.rst | 1 +
12
1 file changed, 24 insertions(+), 7 deletions(-)
10
MAINTAINERS | 1 +
11
3 files changed, 18 insertions(+)
12
create mode 100644 docs/system/arm/cubieboard.rst
13
13
14
diff --git a/docs/system/arm/cubieboard.rst b/docs/system/arm/cubieboard.rst
14
diff --git a/hw/intc/armv7m_nvic.c b/hw/intc/armv7m_nvic.c
15
new file mode 100644
15
index XXXXXXX..XXXXXXX 100644
16
index XXXXXXX..XXXXXXX
16
--- a/hw/intc/armv7m_nvic.c
17
--- /dev/null
17
+++ b/hw/intc/armv7m_nvic.c
18
+++ b/docs/system/arm/cubieboard.rst
18
@@ -XXX,XX +XXX,XX @@ void armv7m_nvic_acknowledge_irq(void *opaque)
19
@@ -XXX,XX +XXX,XX @@
19
nvic_irq_update(s);
20
+Cubietech Cubieboard (``cubieboard``)
20
}
21
+=====================================
21
22
+static bool vectpending_targets_secure(NVICState *s)
23
+{
24
+ /* Return true if s->vectpending targets Secure state */
25
+ if (s->vectpending_is_s_banked) {
26
+ return true;
27
+ }
28
+ return !exc_is_banked(s->vectpending) &&
29
+ exc_targets_secure(s, s->vectpending);
30
+}
22
+
31
+
23
+The ``cubieboard`` model emulates the Cubietech Cubieboard,
32
void armv7m_nvic_get_pending_irq_info(void *opaque,
24
+which is a Cortex-A8 based single-board computer using
33
int *pirq, bool *ptargets_secure)
25
+the AllWinner A10 SoC.
34
{
26
+
35
@@ -XXX,XX +XXX,XX @@ void armv7m_nvic_get_pending_irq_info(void *opaque,
27
+Emulated devices:
36
28
+
37
assert(pending > ARMV7M_EXCP_RESET && pending < s->num_irq);
29
+- Timer
38
30
+- UART
39
- if (s->vectpending_is_s_banked) {
31
+- RTC
40
- targets_secure = true;
32
+- EMAC
41
- } else {
33
+- SDHCI
42
- targets_secure = !exc_is_banked(pending) &&
34
+- USB controller
43
- exc_targets_secure(s, pending);
35
+- SATA controller
44
- }
36
diff --git a/docs/system/target-arm.rst b/docs/system/target-arm.rst
45
+ targets_secure = vectpending_targets_secure(s);
37
index XXXXXXX..XXXXXXX 100644
46
38
--- a/docs/system/target-arm.rst
47
trace_nvic_get_pending_irq_info(pending, targets_secure);
39
+++ b/docs/system/target-arm.rst
48
40
@@ -XXX,XX +XXX,XX @@ undocumented; you can get a complete list by running
49
@@ -XXX,XX +XXX,XX @@ static uint32_t nvic_readl(NVICState *s, uint32_t offset, MemTxAttrs attrs)
41
arm/aspeed
50
/* VECTACTIVE */
42
arm/sabrelite
51
val = cpu->env.v7m.exception;
43
arm/digic
52
/* VECTPENDING */
44
+ arm/cubieboard
53
- val |= (s->vectpending & 0x1ff) << 12;
45
arm/musicpal
54
+ if (s->vectpending) {
46
arm/gumstix
55
+ /*
47
arm/nrf
56
+ * From v8.1M VECTPENDING must read as 1 if accessed as
48
diff --git a/MAINTAINERS b/MAINTAINERS
57
+ * NonSecure and the highest priority pending and enabled
49
index XXXXXXX..XXXXXXX 100644
58
+ * exception targets Secure.
50
--- a/MAINTAINERS
59
+ */
51
+++ b/MAINTAINERS
60
+ int vp = s->vectpending;
52
@@ -XXX,XX +XXX,XX @@ S: Odd Fixes
61
+ if (!attrs.secure && arm_feature(&cpu->env, ARM_FEATURE_V8_1M) &&
53
F: hw/*/allwinner*
62
+ vectpending_targets_secure(s)) {
54
F: include/hw/*/allwinner*
63
+ vp = 1;
55
F: hw/arm/cubieboard.c
64
+ }
56
+F: docs/system/arm/cubieboard.rst
65
+ val |= (vp & 0x1ff) << 12;
57
66
+ }
58
Allwinner-h3
67
/* ISRPENDING - set if any external IRQ is pending */
59
M: Niek Linnenbank <nieklinnenbank@gmail.com>
68
if (nvic_isrpending(s)) {
69
val |= (1 << 22);
60
--
70
--
61
2.20.1
71
2.20.1
62
72
63
73
diff view generated by jsdifflib
1
The standard Sphinx/RTD HTML page footer gives a copyright line
1
From: Mao Zhongyi <maozhongyi@cmss.chinamobile.com>
2
(based on the 'copyright' variable set in conf.py) and a line "Built
3
with Sphinx using a theme provided by Read the Docs" (which can be
4
disabled via the html_show_sphinx variable, but we leave it enabled).
5
As a free software project, we'd like to also mention the license
6
QEMU and its manual are released under.
7
2
8
Add a template footer.html which defines the 'extrafooter' block that
3
Missed in commit f3478392 "docs: Move deprecation, build
9
the RtD theme provides for this purpose. The new line of text will
4
and license info out of system/"
10
go below the existing copyright and sphinx-acknowledgement lines.
11
(Unfortunately the RTD footer template does not permit putting it
12
after the copyright but before the sphinx-acknowledgement.)
13
5
14
We use the templating functionality to make the new text also be a
6
Signed-off-by: Mao Zhongyi <maozhongyi@cmss.chinamobile.com>
15
hyperlink to the about/license.html page of the manual.
7
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
8
Message-id: 20210723065828.1336760-1-maozhongyi@cmss.chinamobile.com
9
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
10
---
11
configure | 2 +-
12
target/i386/cpu.c | 2 +-
13
MAINTAINERS | 2 +-
14
3 files changed, 3 insertions(+), 3 deletions(-)
16
15
17
Unlike rst files, HTML template files are not reported to our depfile
16
diff --git a/configure b/configure
18
plugin, so we maintain a manual list in meson.build. New template
17
index XXXXXXX..XXXXXXX 100755
19
files should be rare, so not being able to auto-generate the
18
--- a/configure
20
dependency info is not too awkward.
19
+++ b/configure
21
20
@@ -XXX,XX +XXX,XX @@ fi
22
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
21
23
Acked-by: Markus Armbruster <armbru@redhat.com>
22
if test -n "${deprecated_features}"; then
24
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
23
echo "Warning, deprecated features enabled."
25
Message-id: 20210705095547.15790-7-peter.maydell@linaro.org
24
- echo "Please see docs/system/deprecated.rst"
26
---
25
+ echo "Please see docs/about/deprecated.rst"
27
docs/_templates/footer.html | 12 ++++++++++++
26
echo " features: ${deprecated_features}"
28
docs/meson.build | 3 ++-
27
fi
29
MAINTAINERS | 1 +
28
30
3 files changed, 15 insertions(+), 1 deletion(-)
29
diff --git a/target/i386/cpu.c b/target/i386/cpu.c
31
create mode 100644 docs/_templates/footer.html
32
33
diff --git a/docs/_templates/footer.html b/docs/_templates/footer.html
34
new file mode 100644
35
index XXXXXXX..XXXXXXX
36
--- /dev/null
37
+++ b/docs/_templates/footer.html
38
@@ -XXX,XX +XXX,XX @@
39
+{% extends "!footer.html" %}
40
+{% block extrafooter %}
41
+
42
+<!-- Empty para to force a blank line after "Built with Sphinx ..." -->
43
+<p></p>
44
+
45
+{% trans path=pathto('about/license') %}
46
+<p><a href="{{ path }}">QEMU and this manual are released under the
47
+GNU General Public License, version 2.</a></p>
48
+{% endtrans %}
49
+{{ super() }}
50
+{% endblock %}
51
diff --git a/docs/meson.build b/docs/meson.build
52
index XXXXXXX..XXXXXXX 100644
30
index XXXXXXX..XXXXXXX 100644
53
--- a/docs/meson.build
31
--- a/target/i386/cpu.c
54
+++ b/docs/meson.build
32
+++ b/target/i386/cpu.c
55
@@ -XXX,XX +XXX,XX @@ if build_docs
33
@@ -XXX,XX +XXX,XX @@ static const X86CPUDefinition builtin_x86_defs[] = {
56
meson.source_root() / 'docs/sphinx/qapidoc.py',
34
* none", but this is just for compatibility while libvirt isn't
57
meson.source_root() / 'docs/sphinx/qmp_lexer.py',
35
* adapted to resolve CPU model versions before creating VMs.
58
qapi_gen_depends ]
36
* See "Runnability guarantee of CPU models" at
59
+ sphinx_template_files = [ meson.source_root() / 'docs/_templates/footer.html' ]
37
- * docs/system/deprecated.rst.
60
38
+ * docs/about/deprecated.rst.
61
have_ga = have_tools and config_host.has_key('CONFIG_GUEST_AGENT')
39
*/
62
40
X86CPUVersion default_cpu_version = 1;
63
@@ -XXX,XX +XXX,XX @@ if build_docs
41
64
output: 'docs.stamp',
65
input: files('conf.py'),
66
depfile: 'docs.d',
67
- depend_files: sphinx_extn_depends,
68
+ depend_files: [ sphinx_extn_depends, sphinx_template_files ],
69
command: [SPHINX_ARGS, '-Ddepfile=@DEPFILE@',
70
'-Ddepfile_stamp=@OUTPUT0@',
71
'-b', 'html', '-d', private_dir,
72
diff --git a/MAINTAINERS b/MAINTAINERS
42
diff --git a/MAINTAINERS b/MAINTAINERS
73
index XXXXXXX..XXXXXXX 100644
43
index XXXXXXX..XXXXXXX 100644
74
--- a/MAINTAINERS
44
--- a/MAINTAINERS
75
+++ b/MAINTAINERS
45
+++ b/MAINTAINERS
76
@@ -XXX,XX +XXX,XX @@ S: Maintained
46
@@ -XXX,XX +XXX,XX @@ F: contrib/gitdm/*
77
F: docs/conf.py
47
78
F: docs/*/conf.py
48
Incompatible changes
79
F: docs/sphinx/
49
R: libvir-list@redhat.com
80
+F: docs/_templates/
50
-F: docs/system/deprecated.rst
81
51
+F: docs/about/deprecated.rst
82
Miscellaneous
52
83
-------------
53
Build System
54
------------
84
--
55
--
85
2.20.1
56
2.20.1
86
57
87
58
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 functions vmsa_ttbcr_write and vmsa_ttbcr_raw_write expect
3
Currently, our only caller is sve_zcr_len_for_el, which has
4
the offset to be for the complete TCR structure, not the offset
4
already masked the length extracted from ZCR_ELx, so the
5
to the low 32-bits of a uint64_t. Using offsetoflow32 in this
5
masking done here is a nop. But we will shortly have uses
6
case breaks big-endian hosts.
6
from other locations, where the length will be unmasked.
7
7
8
For TTBCR2, we do want the high 32-bits of a uint64_t.
8
Saturate the length to ARM_MAX_VQ instead of truncating to
9
Use cp15.tcr_el[*].raw_tcr as the offsetofhigh32 argument to
9
the low 4 bits.
10
clarify this.
11
10
12
Buglink: https://gitlab.com/qemu-project/qemu/-/issues/187
13
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
11
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
14
Message-id: 20210709230621.938821-2-richard.henderson@linaro.org
15
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
12
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
13
Message-id: 20210723203344.968563-2-richard.henderson@linaro.org
16
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
14
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
17
---
15
---
18
target/arm/helper.c | 11 +++++++----
16
target/arm/helper.c | 4 +++-
19
1 file changed, 7 insertions(+), 4 deletions(-)
17
1 file changed, 3 insertions(+), 1 deletion(-)
20
18
21
diff --git a/target/arm/helper.c b/target/arm/helper.c
19
diff --git a/target/arm/helper.c b/target/arm/helper.c
22
index XXXXXXX..XXXXXXX 100644
20
index XXXXXXX..XXXXXXX 100644
23
--- a/target/arm/helper.c
21
--- a/target/arm/helper.c
24
+++ b/target/arm/helper.c
22
+++ b/target/arm/helper.c
25
@@ -XXX,XX +XXX,XX @@ static const ARMCPRegInfo vmsa_cp_reginfo[] = {
23
@@ -XXX,XX +XXX,XX @@ static uint32_t sve_zcr_get_valid_len(ARMCPU *cpu, uint32_t start_len)
26
.access = PL1_RW, .accessfn = access_tvm_trvm,
24
{
27
.type = ARM_CP_ALIAS, .writefn = vmsa_ttbcr_write,
25
uint32_t end_len;
28
.raw_writefn = vmsa_ttbcr_raw_write,
26
29
- .bank_fieldoffsets = { offsetoflow32(CPUARMState, cp15.tcr_el[3]),
27
- end_len = start_len &= 0xf;
30
- offsetoflow32(CPUARMState, cp15.tcr_el[1])} },
28
+ start_len = MIN(start_len, ARM_MAX_VQ - 1);
31
+ /* No offsetoflow32 -- pass the entire TCR to writefn/raw_writefn. */
29
+ end_len = start_len;
32
+ .bank_fieldoffsets = { offsetof(CPUARMState, cp15.tcr_el[3]),
30
+
33
+ offsetof(CPUARMState, cp15.tcr_el[1])} },
31
if (!test_bit(start_len, cpu->sve_vq_map)) {
34
REGINFO_SENTINEL
32
end_len = find_last_bit(cpu->sve_vq_map, start_len);
35
};
33
assert(end_len < start_len);
36
37
@@ -XXX,XX +XXX,XX @@ static const ARMCPRegInfo ttbcr2_reginfo = {
38
.name = "TTBCR2", .cp = 15, .opc1 = 0, .crn = 2, .crm = 0, .opc2 = 3,
39
.access = PL1_RW, .accessfn = access_tvm_trvm,
40
.type = ARM_CP_ALIAS,
41
- .bank_fieldoffsets = { offsetofhigh32(CPUARMState, cp15.tcr_el[3]),
42
- offsetofhigh32(CPUARMState, cp15.tcr_el[1]) },
43
+ .bank_fieldoffsets = {
44
+ offsetofhigh32(CPUARMState, cp15.tcr_el[3].raw_tcr),
45
+ offsetofhigh32(CPUARMState, cp15.tcr_el[1].raw_tcr),
46
+ },
47
};
48
49
static void omap_ticonfig_write(CPUARMState *env, const ARMCPRegInfo *ri,
50
--
34
--
51
2.20.1
35
2.20.1
52
36
53
37
diff view generated by jsdifflib
New patch
1
From: Richard Henderson <richard.henderson@linaro.org>
1
2
3
Rename from sve_zcr_get_valid_len and make accessible
4
from outside of helper.c.
5
6
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
7
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
8
Message-id: 20210723203344.968563-3-richard.henderson@linaro.org
9
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
10
---
11
target/arm/internals.h | 10 ++++++++++
12
target/arm/helper.c | 4 ++--
13
2 files changed, 12 insertions(+), 2 deletions(-)
14
15
diff --git a/target/arm/internals.h b/target/arm/internals.h
16
index XXXXXXX..XXXXXXX 100644
17
--- a/target/arm/internals.h
18
+++ b/target/arm/internals.h
19
@@ -XXX,XX +XXX,XX @@ void arm_translate_init(void);
20
void arm_cpu_synchronize_from_tb(CPUState *cs, const TranslationBlock *tb);
21
#endif /* CONFIG_TCG */
22
23
+/**
24
+ * aarch64_sve_zcr_get_valid_len:
25
+ * @cpu: cpu context
26
+ * @start_len: maximum len to consider
27
+ *
28
+ * Return the maximum supported sve vector length <= @start_len.
29
+ * Note that both @start_len and the return value are in units
30
+ * of ZCR_ELx.LEN, so the vector bit length is (x + 1) * 128.
31
+ */
32
+uint32_t aarch64_sve_zcr_get_valid_len(ARMCPU *cpu, uint32_t start_len);
33
34
enum arm_fprounding {
35
FPROUNDING_TIEEVEN,
36
diff --git a/target/arm/helper.c b/target/arm/helper.c
37
index XXXXXXX..XXXXXXX 100644
38
--- a/target/arm/helper.c
39
+++ b/target/arm/helper.c
40
@@ -XXX,XX +XXX,XX @@ int sve_exception_el(CPUARMState *env, int el)
41
return 0;
42
}
43
44
-static uint32_t sve_zcr_get_valid_len(ARMCPU *cpu, uint32_t start_len)
45
+uint32_t aarch64_sve_zcr_get_valid_len(ARMCPU *cpu, uint32_t start_len)
46
{
47
uint32_t end_len;
48
49
@@ -XXX,XX +XXX,XX @@ uint32_t sve_zcr_len_for_el(CPUARMState *env, int el)
50
zcr_len = MIN(zcr_len, 0xf & (uint32_t)env->vfp.zcr_el[3]);
51
}
52
53
- return sve_zcr_get_valid_len(cpu, zcr_len);
54
+ return aarch64_sve_zcr_get_valid_len(cpu, zcr_len);
55
}
56
57
static void zcr_write(CPUARMState *env, const ARMCPRegInfo *ri,
58
--
59
2.20.1
60
61
diff view generated by jsdifflib
1
Since the top-level subsections aren't self-contained manuals
1
From: Richard Henderson <richard.henderson@linaro.org>
2
any more, the "Contents:" lines at the top of each of their
3
index pages look a bit odd; remove them.
4
2
3
Mirror the behavour of /proc/sys/abi/sve_default_vector_length
4
under the real linux kernel. We have no way of passing along
5
a real default across exec like the kernel can, but this is a
6
decent way of adjusting the startup vector length of a process.
7
8
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/482
9
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
10
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
11
Message-id: 20210723203344.968563-4-richard.henderson@linaro.org
12
[PMM: tweaked docs formatting, document -1 special-case,
13
added fixup patch from RTH mentioning QEMU's maximum veclen.]
5
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
14
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
6
Acked-by: Markus Armbruster <armbru@redhat.com>
7
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
8
Message-id: 20210705095547.15790-4-peter.maydell@linaro.org
9
---
15
---
10
docs/devel/index.rst | 2 --
16
docs/system/arm/cpu-features.rst | 15 ++++++++
11
docs/interop/index.rst | 2 --
17
target/arm/cpu.h | 5 +++
12
docs/specs/index.rst | 2 --
18
target/arm/cpu.c | 14 ++++++--
13
docs/system/index.rst | 2 --
19
target/arm/cpu64.c | 60 ++++++++++++++++++++++++++++++++
14
docs/tools/index.rst | 2 --
20
4 files changed, 92 insertions(+), 2 deletions(-)
15
docs/user/index.rst | 2 --
16
6 files changed, 12 deletions(-)
17
21
18
diff --git a/docs/devel/index.rst b/docs/devel/index.rst
22
diff --git a/docs/system/arm/cpu-features.rst b/docs/system/arm/cpu-features.rst
19
index XXXXXXX..XXXXXXX 100644
23
index XXXXXXX..XXXXXXX 100644
20
--- a/docs/devel/index.rst
24
--- a/docs/system/arm/cpu-features.rst
21
+++ b/docs/devel/index.rst
25
+++ b/docs/system/arm/cpu-features.rst
22
@@ -XXX,XX +XXX,XX @@ This section of the manual documents various parts of the internals of QEMU.
26
@@ -XXX,XX +XXX,XX @@ verbose command lines. However, the recommended way to select vector
23
You only need to read it if you are interested in reading or
27
lengths is to explicitly enable each desired length. Therefore only
24
modifying QEMU's source code.
28
example's (1), (4), and (6) exhibit recommended uses of the properties.
25
29
26
-Contents:
30
+SVE User-mode Default Vector Length Property
27
-
31
+--------------------------------------------
28
.. toctree::
32
+
29
:maxdepth: 2
33
+For qemu-aarch64, the cpu property ``sve-default-vector-length=N`` is
30
:includehidden:
34
+defined to mirror the Linux kernel parameter file
31
diff --git a/docs/interop/index.rst b/docs/interop/index.rst
35
+``/proc/sys/abi/sve_default_vector_length``. The default length, ``N``,
36
+is in units of bytes and must be between 16 and 8192.
37
+If not specified, the default vector length is 64.
38
+
39
+If the default length is larger than the maximum vector length enabled,
40
+the actual vector length will be reduced. Note that the maximum vector
41
+length supported by QEMU is 256.
42
+
43
+If this property is set to ``-1`` then the default vector length
44
+is set to the maximum possible length.
45
diff --git a/target/arm/cpu.h b/target/arm/cpu.h
32
index XXXXXXX..XXXXXXX 100644
46
index XXXXXXX..XXXXXXX 100644
33
--- a/docs/interop/index.rst
47
--- a/target/arm/cpu.h
34
+++ b/docs/interop/index.rst
48
+++ b/target/arm/cpu.h
35
@@ -XXX,XX +XXX,XX @@ System Emulation Management and Interoperability
49
@@ -XXX,XX +XXX,XX @@ struct ARMCPU {
36
This section of the manual contains documents and specifications that
50
/* Used to set the maximum vector length the cpu will support. */
37
are useful for making QEMU interoperate with other software.
51
uint32_t sve_max_vq;
38
52
39
-Contents:
53
+#ifdef CONFIG_USER_ONLY
40
-
54
+ /* Used to set the default vector length at process start. */
41
.. toctree::
55
+ uint32_t sve_default_vq;
42
:maxdepth: 2
56
+#endif
43
57
+
44
diff --git a/docs/specs/index.rst b/docs/specs/index.rst
58
/*
59
* In sve_vq_map each set bit is a supported vector length of
60
* (bit-number + 1) * 16 bytes, i.e. each bit number + 1 is the vector
61
diff --git a/target/arm/cpu.c b/target/arm/cpu.c
45
index XXXXXXX..XXXXXXX 100644
62
index XXXXXXX..XXXXXXX 100644
46
--- a/docs/specs/index.rst
63
--- a/target/arm/cpu.c
47
+++ b/docs/specs/index.rst
64
+++ b/target/arm/cpu.c
48
@@ -XXX,XX +XXX,XX @@ System Emulation Guest Hardware Specifications
65
@@ -XXX,XX +XXX,XX @@ static void arm_cpu_reset(DeviceState *dev)
49
This section of the manual contains specifications of
66
env->cp15.cpacr_el1 = deposit64(env->cp15.cpacr_el1, 16, 2, 3);
50
guest hardware that is specific to QEMU.
67
/* with reasonable vector length */
51
68
if (cpu_isar_feature(aa64_sve, cpu)) {
52
-Contents:
69
- env->vfp.zcr_el[1] = MIN(cpu->sve_max_vq - 1, 3);
53
-
70
+ env->vfp.zcr_el[1] =
54
.. toctree::
71
+ aarch64_sve_zcr_get_valid_len(cpu, cpu->sve_default_vq - 1);
55
:maxdepth: 2
72
}
56
73
/*
57
diff --git a/docs/system/index.rst b/docs/system/index.rst
74
* Enable TBI0 but not TBI1.
75
@@ -XXX,XX +XXX,XX @@ static void arm_cpu_initfn(Object *obj)
76
QLIST_INIT(&cpu->pre_el_change_hooks);
77
QLIST_INIT(&cpu->el_change_hooks);
78
79
-#ifndef CONFIG_USER_ONLY
80
+#ifdef CONFIG_USER_ONLY
81
+# ifdef TARGET_AARCH64
82
+ /*
83
+ * The linux kernel defaults to 512-bit vectors, when sve is supported.
84
+ * See documentation for /proc/sys/abi/sve_default_vector_length, and
85
+ * our corresponding sve-default-vector-length cpu property.
86
+ */
87
+ cpu->sve_default_vq = 4;
88
+# endif
89
+#else
90
/* Our inbound IRQ and FIQ lines */
91
if (kvm_enabled()) {
92
/* VIRQ and VFIQ are unused with KVM but we add them to maintain
93
diff --git a/target/arm/cpu64.c b/target/arm/cpu64.c
58
index XXXXXXX..XXXXXXX 100644
94
index XXXXXXX..XXXXXXX 100644
59
--- a/docs/system/index.rst
95
--- a/target/arm/cpu64.c
60
+++ b/docs/system/index.rst
96
+++ b/target/arm/cpu64.c
61
@@ -XXX,XX +XXX,XX @@ for full system emulation (as opposed to user-mode emulation).
97
@@ -XXX,XX +XXX,XX @@ static void cpu_arm_set_sve(Object *obj, bool value, Error **errp)
62
This includes working with hypervisors such as KVM, Xen, Hax
98
cpu->isar.id_aa64pfr0 = t;
63
or Hypervisor.Framework.
99
}
64
100
65
-Contents:
101
+#ifdef CONFIG_USER_ONLY
66
-
102
+/* Mirror linux /proc/sys/abi/sve_default_vector_length. */
67
.. toctree::
103
+static void cpu_arm_set_sve_default_vec_len(Object *obj, Visitor *v,
68
:maxdepth: 3
104
+ const char *name, void *opaque,
69
105
+ Error **errp)
70
diff --git a/docs/tools/index.rst b/docs/tools/index.rst
106
+{
71
index XXXXXXX..XXXXXXX 100644
107
+ ARMCPU *cpu = ARM_CPU(obj);
72
--- a/docs/tools/index.rst
108
+ int32_t default_len, default_vq, remainder;
73
+++ b/docs/tools/index.rst
109
+
74
@@ -XXX,XX +XXX,XX @@ Tools
110
+ if (!visit_type_int32(v, name, &default_len, errp)) {
75
This section of the manual documents QEMU's "tools": its
111
+ return;
76
command line utilities and other standalone programs.
112
+ }
77
113
+
78
-Contents:
114
+ /* Undocumented, but the kernel allows -1 to indicate "maximum". */
79
-
115
+ if (default_len == -1) {
80
.. toctree::
116
+ cpu->sve_default_vq = ARM_MAX_VQ;
81
:maxdepth: 2
117
+ return;
82
118
+ }
83
diff --git a/docs/user/index.rst b/docs/user/index.rst
119
+
84
index XXXXXXX..XXXXXXX 100644
120
+ default_vq = default_len / 16;
85
--- a/docs/user/index.rst
121
+ remainder = default_len % 16;
86
+++ b/docs/user/index.rst
122
+
87
@@ -XXX,XX +XXX,XX @@ This section of the manual is the overall guide for users using QEMU
123
+ /*
88
for user-mode emulation. In this mode, QEMU can launch
124
+ * Note that the 512 max comes from include/uapi/asm/sve_context.h
89
processes compiled for one CPU on another CPU.
125
+ * and is the maximum architectural width of ZCR_ELx.LEN.
90
126
+ */
91
-Contents:
127
+ if (remainder || default_vq < 1 || default_vq > 512) {
92
-
128
+ error_setg(errp, "cannot set sve-default-vector-length");
93
.. toctree::
129
+ if (remainder) {
94
:maxdepth: 2
130
+ error_append_hint(errp, "Vector length not a multiple of 16\n");
95
131
+ } else if (default_vq < 1) {
132
+ error_append_hint(errp, "Vector length smaller than 16\n");
133
+ } else {
134
+ error_append_hint(errp, "Vector length larger than %d\n",
135
+ 512 * 16);
136
+ }
137
+ return;
138
+ }
139
+
140
+ cpu->sve_default_vq = default_vq;
141
+}
142
+
143
+static void cpu_arm_get_sve_default_vec_len(Object *obj, Visitor *v,
144
+ const char *name, void *opaque,
145
+ Error **errp)
146
+{
147
+ ARMCPU *cpu = ARM_CPU(obj);
148
+ int32_t value = cpu->sve_default_vq * 16;
149
+
150
+ visit_type_int32(v, name, &value, errp);
151
+}
152
+#endif
153
+
154
void aarch64_add_sve_properties(Object *obj)
155
{
156
uint32_t vq;
157
@@ -XXX,XX +XXX,XX @@ void aarch64_add_sve_properties(Object *obj)
158
object_property_add(obj, name, "bool", cpu_arm_get_sve_vq,
159
cpu_arm_set_sve_vq, NULL, NULL);
160
}
161
+
162
+#ifdef CONFIG_USER_ONLY
163
+ /* Mirror linux /proc/sys/abi/sve_default_vector_length. */
164
+ object_property_add(obj, "sve-default-vector-length", "int32",
165
+ cpu_arm_get_sve_default_vec_len,
166
+ cpu_arm_set_sve_default_vec_len, NULL, NULL);
167
+#endif
168
}
169
170
void arm_cpu_pauth_finalize(ARMCPU *cpu, Error **errp)
96
--
171
--
97
2.20.1
172
2.20.1
98
173
99
174
diff view generated by jsdifflib
1
We merged our previous multiple-manual setup into a single Sphinx
1
From: Philippe Mathieu-Daudé <f4bug@amsat.org>
2
manual, but we left some text in the various index.rst lines that
3
still calls the top level subsections separate 'manuals'. Update
4
them to talk about "this section of the manual" instead, and remove
5
now-obsolete comments about how the index.rst files are the "top
6
level page for the 'foo' manual".
7
2
3
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
4
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
5
Message-id: 20210726150953.1218690-1-f4bug@amsat.org
8
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
6
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
9
Acked-by: Markus Armbruster <armbru@redhat.com>
10
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
11
Message-id: 20210705095547.15790-3-peter.maydell@linaro.org
12
---
7
---
13
docs/devel/index.rst | 5 +----
8
hw/arm/nseries.c | 2 +-
14
docs/interop/index.rst | 7 ++-----
9
1 file changed, 1 insertion(+), 1 deletion(-)
15
docs/specs/index.rst | 5 ++---
16
docs/system/index.rst | 5 +----
17
docs/tools/index.rst | 5 ++---
18
docs/user/index.rst | 5 +----
19
6 files changed, 9 insertions(+), 23 deletions(-)
20
10
21
diff --git a/docs/devel/index.rst b/docs/devel/index.rst
11
diff --git a/hw/arm/nseries.c b/hw/arm/nseries.c
22
index XXXXXXX..XXXXXXX 100644
12
index XXXXXXX..XXXXXXX 100644
23
--- a/docs/devel/index.rst
13
--- a/hw/arm/nseries.c
24
+++ b/docs/devel/index.rst
14
+++ b/hw/arm/nseries.c
25
@@ -XXX,XX +XXX,XX @@
15
@@ -XXX,XX +XXX,XX @@ static uint32_t mipid_txrx(void *opaque, uint32_t cmd, int len)
26
-.. This is the top level page for the 'devel' manual.
16
default:
27
-
17
bad_cmd:
28
-
18
qemu_log_mask(LOG_GUEST_ERROR,
29
Developer Information
19
- "%s: unknown command %02x\n", __func__, s->cmd);
30
=====================
20
+ "%s: unknown command 0x%02x\n", __func__, s->cmd);
31
21
break;
32
-This manual documents various parts of the internals of QEMU.
22
}
33
+This section of the manual documents various parts of the internals of QEMU.
34
You only need to read it if you are interested in reading or
35
modifying QEMU's source code.
36
37
diff --git a/docs/interop/index.rst b/docs/interop/index.rst
38
index XXXXXXX..XXXXXXX 100644
39
--- a/docs/interop/index.rst
40
+++ b/docs/interop/index.rst
41
@@ -XXX,XX +XXX,XX @@
42
-.. This is the top level page for the 'interop' manual.
43
-
44
-
45
System Emulation Management and Interoperability
46
================================================
47
48
-This manual contains documents and specifications that are useful
49
-for making QEMU interoperate with other software.
50
+This section of the manual contains documents and specifications that
51
+are useful for making QEMU interoperate with other software.
52
53
Contents:
54
55
diff --git a/docs/specs/index.rst b/docs/specs/index.rst
56
index XXXXXXX..XXXXXXX 100644
57
--- a/docs/specs/index.rst
58
+++ b/docs/specs/index.rst
59
@@ -XXX,XX +XXX,XX @@
60
-.. This is the top level page for the 'specs' manual
61
-
62
-
63
System Emulation Guest Hardware Specifications
64
==============================================
65
66
+This section of the manual contains specifications of
67
+guest hardware that is specific to QEMU.
68
69
Contents:
70
71
diff --git a/docs/system/index.rst b/docs/system/index.rst
72
index XXXXXXX..XXXXXXX 100644
73
--- a/docs/system/index.rst
74
+++ b/docs/system/index.rst
75
@@ -XXX,XX +XXX,XX @@
76
-.. This is the top level page for the 'system' manual.
77
-
78
-
79
System Emulation
80
================
81
82
-This manual is the overall guide for users using QEMU
83
+This section of the manual is the overall guide for users using QEMU
84
for full system emulation (as opposed to user-mode emulation).
85
This includes working with hypervisors such as KVM, Xen, Hax
86
or Hypervisor.Framework.
87
diff --git a/docs/tools/index.rst b/docs/tools/index.rst
88
index XXXXXXX..XXXXXXX 100644
89
--- a/docs/tools/index.rst
90
+++ b/docs/tools/index.rst
91
@@ -XXX,XX +XXX,XX @@
92
-.. This is the top level page for the 'tools' manual
93
-
94
-
95
Tools
96
=====
97
98
+This section of the manual documents QEMU's "tools": its
99
+command line utilities and other standalone programs.
100
101
Contents:
102
103
diff --git a/docs/user/index.rst b/docs/user/index.rst
104
index XXXXXXX..XXXXXXX 100644
105
--- a/docs/user/index.rst
106
+++ b/docs/user/index.rst
107
@@ -XXX,XX +XXX,XX @@
108
-.. This is the top level page for the 'user' manual.
109
-
110
-
111
User Mode Emulation
112
===================
113
114
-This manual is the overall guide for users using QEMU
115
+This section of the manual is the overall guide for users using QEMU
116
for user-mode emulation. In this mode, QEMU can launch
117
processes compiled for one CPU on another CPU.
118
23
119
--
24
--
120
2.20.1
25
2.20.1
121
26
122
27
diff view generated by jsdifflib
New patch
1
From: Joel Stanley <joel@jms.id.au>
1
2
3
The macro used to calculate the maximum memory size of the MMIO region
4
had a mistake, causing all GPIO models to create a mapping of 0x9D8.
5
The intent was to have it be 0x9D8 - 0x800.
6
7
This extra size doesn't matter on ast2400 and ast2500, which have a 4KB
8
region set aside for the GPIO controller.
9
10
On the ast2600 the 3.3V and 1.8V GPIO controllers are 2KB apart, so the
11
regions would overlap. Worse was the 1.8V controller would map over the
12
top of the following peripheral, which happens to be the RTC.
13
14
The mmio region used by each device is a maximum of 2KB, so avoid the
15
calculations and hard code this as the maximum.
16
17
Fixes: 36d737ee82b2 ("hw/gpio: Add in AST2600 specific implementation")
18
Signed-off-by: Joel Stanley <joel@jms.id.au>
19
Reviewed-by: Rashmica Gupta <rashmica.g@gmail.com>
20
Reviewed-by: Cédric Le Goater <clg@kaod.org>
21
Message-id: 20210713065854.134634-2-joel@jms.id.au
22
[PMM: fix autocorrect error in commit message]
23
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
24
---
25
hw/gpio/aspeed_gpio.c | 3 +--
26
1 file changed, 1 insertion(+), 2 deletions(-)
27
28
diff --git a/hw/gpio/aspeed_gpio.c b/hw/gpio/aspeed_gpio.c
29
index XXXXXXX..XXXXXXX 100644
30
--- a/hw/gpio/aspeed_gpio.c
31
+++ b/hw/gpio/aspeed_gpio.c
32
@@ -XXX,XX +XXX,XX @@
33
#define GPIO_1_8V_MEM_SIZE 0x9D8
34
#define GPIO_1_8V_REG_ARRAY_SIZE ((GPIO_1_8V_MEM_SIZE - \
35
GPIO_1_8V_REG_OFFSET) >> 2)
36
-#define GPIO_MAX_MEM_SIZE MAX(GPIO_3_6V_MEM_SIZE, GPIO_1_8V_MEM_SIZE)
37
38
static int aspeed_evaluate_irq(GPIOSets *regs, int gpio_prev_high, int gpio)
39
{
40
@@ -XXX,XX +XXX,XX @@ static void aspeed_gpio_realize(DeviceState *dev, Error **errp)
41
}
42
43
memory_region_init_io(&s->iomem, OBJECT(s), &aspeed_gpio_ops, s,
44
- TYPE_ASPEED_GPIO, GPIO_MAX_MEM_SIZE);
45
+ TYPE_ASPEED_GPIO, 0x800);
46
47
sysbus_init_mmio(sbd, &s->iomem);
48
}
49
--
50
2.20.1
51
52
diff view generated by jsdifflib