...
...
5
* More vector extensions
5
* More vector extensions
6
* Ineffective-nonconstrained-transaction facility
6
* Ineffective-nonconstrained-transaction facility
7
* Even more msa crypto extensions
7
* Even more msa crypto extensions
8
* Additional PLO subfunctions
8
* Additional PLO subfunctions
9
9
10
11
For reference, see also the kernel part:
10
For reference, see also the kernel part:
12
https://lore.kernel.org/kvm/20241107152319.77816-1-brueckner@linux.ibm.com/T/#me506dc2ca538aee3cfc13620a48bdb686c459ab0
11
https://lore.kernel.org/kvm/20241107152319.77816-1-brueckner@linux.ibm.com/T/#me506dc2ca538aee3cfc13620a48bdb686c459ab0
12
13
Changelog v1->v2:
14
- Linux headers update to Linux 6.13-rc1 as pre-req
15
for the Concurrent-function facility
16
- Added missing CPU feature (group) initialization
17
for the msa12 and PLO extensions
18
13
19
14
Feedback and review is always welcome. Thanks a lot!
20
Feedback and review is always welcome. Thanks a lot!
15
21
16
Kind regards,
22
Kind regards,
17
Hendrik
23
Hendrik
18
24
19
25
20
Hendrik Brueckner (14):
26
Hendrik Brueckner (15):
21
s390x/cpumodel: add msa10 subfunctions
27
s390x/cpumodel: add msa10 subfunctions
22
s390x/cpumodel: add msa11 subfunctions
28
s390x/cpumodel: add msa11 subfunctions
23
s390x/cpumodel: add msa12 changes
29
s390x/cpumodel: add msa12 changes
24
s390x/cpumodel: add msa13 subfunctions
30
s390x/cpumodel: add msa13 subfunctions
25
s390x/cpumodel: Add ptff Query Time-Stamp Event (QTSE) support
31
s390x/cpumodel: Add ptff Query Time-Stamp Event (QTSE) support
32
linux-headers: Update to Linux 6.13-rc1
26
s390x/cpumodel: add Concurrent-functions facility support
33
s390x/cpumodel: add Concurrent-functions facility support
27
s390x/cpumodel: add Vector Enhancements facility 3
34
s390x/cpumodel: add Vector Enhancements facility 3
28
s390x/cpumodel: add Miscellaneous-Instruction-Extensions Facility 4
35
s390x/cpumodel: add Miscellaneous-Instruction-Extensions Facility 4
29
s390x/cpumodel: add Vector-Packed-Decimal-Enhancement facility 3
36
s390x/cpumodel: add Vector-Packed-Decimal-Enhancement facility 3
30
s390x/cpumodel: add Ineffective-nonconstrained-transaction facility
37
s390x/cpumodel: add Ineffective-nonconstrained-transaction facility
31
s390x/cpumodel: Add Sequential-Instruction-Fetching facility
38
s390x/cpumodel: Add Sequential-Instruction-Fetching facility
32
s390x/cpumodel: correct PLO feature wording
39
s390x/cpumodel: correct PLO feature wording
33
s390x/cpumodel: Add PLO-extension facility
40
s390x/cpumodel: Add PLO-extension facility
34
s390x/cpumodel: gen17 model
41
s390x/cpumodel: gen17 model
35
42
36
linux-headers/asm-s390/kvm.h | 3 +-
43
include/standard-headers/drm/drm_fourcc.h | 1 +
37
target/s390x/cpu_features.c | 9 ++
44
include/standard-headers/linux/ethtool.h | 5 +
38
target/s390x/cpu_features.h | 1 +
45
include/standard-headers/linux/pci_regs.h | 38 ++-
39
target/s390x/cpu_features_def.h.inc | 94 ++++++++++++++-
46
.../standard-headers/linux/virtio_crypto.h | 1 +
40
target/s390x/cpu_models.c | 61 ++++++++++
47
include/standard-headers/linux/virtio_pci.h | 131 ++++++++++
41
target/s390x/gen-features.c | 174 ++++++++++++++++++++++++++++
48
linux-headers/asm-arm64/kvm.h | 6 +
42
target/s390x/kvm/kvm.c | 6 +
49
linux-headers/asm-arm64/unistd_64.h | 4 +
43
7 files changed, 341 insertions(+), 7 deletions(-)
50
linux-headers/asm-generic/mman-common.h | 3 +
51
linux-headers/asm-generic/mman.h | 4 +
52
linux-headers/asm-generic/unistd.h | 11 +-
53
linux-headers/asm-loongarch/kvm.h | 20 ++
54
linux-headers/asm-loongarch/unistd_64.h | 4 +
55
linux-headers/asm-mips/mman.h | 3 +
56
linux-headers/asm-mips/unistd_n32.h | 4 +
57
linux-headers/asm-mips/unistd_n64.h | 4 +
58
linux-headers/asm-mips/unistd_o32.h | 4 +
59
linux-headers/asm-powerpc/unistd_32.h | 4 +
60
linux-headers/asm-powerpc/unistd_64.h | 4 +
61
linux-headers/asm-riscv/kvm.h | 4 +
62
linux-headers/asm-riscv/unistd_32.h | 4 +
63
linux-headers/asm-riscv/unistd_64.h | 4 +
64
linux-headers/asm-s390/kvm.h | 3 +-
65
linux-headers/asm-s390/unistd_32.h | 4 +
66
linux-headers/asm-s390/unistd_64.h | 4 +
67
linux-headers/asm-x86/kvm.h | 1 +
68
linux-headers/asm-x86/mman.h | 3 -
69
linux-headers/asm-x86/unistd_32.h | 4 +
70
linux-headers/asm-x86/unistd_64.h | 4 +
71
linux-headers/asm-x86/unistd_x32.h | 4 +
72
linux-headers/linux/iommufd.h | 224 +++++++++++++++++-
73
linux-headers/linux/kvm.h | 8 +
74
linux-headers/linux/psci.h | 5 +
75
linux-headers/linux/vfio.h | 2 +-
76
target/s390x/cpu_features.c | 11 +
77
target/s390x/cpu_features.h | 1 +
78
target/s390x/cpu_features_def.h.inc | 94 +++++++-
79
target/s390x/cpu_models.c | 61 +++++
80
target/s390x/gen-features.c | 178 ++++++++++++++
81
target/s390x/kvm/kvm.c | 6 +
82
39 files changed, 851 insertions(+), 29 deletions(-)
44
83
45
--
84
--
46
2.43.5
85
2.43.5
diff view generated by jsdifflib
1
MSA10 introduces new AES XTS subfunctions.
1
MSA10 introduces new AES XTS subfunctions.
2
2
3
Signed-off-by: Hendrik Brueckner <brueckner@linux.ibm.com>
3
Signed-off-by: Hendrik Brueckner <brueckner@linux.ibm.com>
4
Reviewed-by: Christian Borntraeger <borntraeger@linux.ibm.com>
4
---
5
---
5
target/s390x/cpu_features.c | 2 ++
6
target/s390x/cpu_features.c | 2 ++
6
target/s390x/cpu_features_def.h.inc | 6 ++++++
7
target/s390x/cpu_features_def.h.inc | 6 ++++++
7
target/s390x/cpu_models.c | 4 ++++
8
target/s390x/cpu_models.c | 4 ++++
8
target/s390x/gen-features.c | 20 ++++++++++++++++++++
9
target/s390x/gen-features.c | 20 ++++++++++++++++++++
...
...
diff view generated by jsdifflib
1
MSA11 introduces new HMAC subfunctions.
1
MSA11 introduces new HMAC subfunctions.
2
2
3
Signed-off-by: Hendrik Brueckner <brueckner@linux.ibm.com>
3
Signed-off-by: Hendrik Brueckner <brueckner@linux.ibm.com>
4
Reviewed-by: Christian Borntraeger <borntraeger@linux.ibm.com>
4
---
5
---
5
target/s390x/cpu_features.c | 2 ++
6
target/s390x/cpu_features.c | 2 ++
6
target/s390x/cpu_features_def.h.inc | 10 ++++++++++
7
target/s390x/cpu_features_def.h.inc | 10 ++++++++++
7
target/s390x/cpu_models.c | 8 ++++++++
8
target/s390x/cpu_models.c | 8 ++++++++
8
target/s390x/gen-features.c | 24 ++++++++++++++++++++++++
9
target/s390x/gen-features.c | 24 ++++++++++++++++++++++++
...
...
diff view generated by jsdifflib
1
MSA12 changes the KIMD/KLMD instruction format for SHA3/SHAKE.
1
MSA12 changes the KIMD/KLMD instruction format for SHA3/SHAKE.
2
2
3
Signed-off-by: Hendrik Brueckner <brueckner@linux.ibm.com>
3
Signed-off-by: Hendrik Brueckner <brueckner@linux.ibm.com>
4
Reviewed-by: Christian Borntraeger <borntraeger@linux.ibm.com>
4
---
5
---
6
target/s390x/cpu_features.c | 1 +
5
target/s390x/cpu_features_def.h.inc | 1 +
7
target/s390x/cpu_features_def.h.inc | 1 +
6
target/s390x/gen-features.c | 8 ++++++++
8
target/s390x/gen-features.c | 8 ++++++++
7
2 files changed, 9 insertions(+)
9
3 files changed, 10 insertions(+)
8
10
11
diff --git a/target/s390x/cpu_features.c b/target/s390x/cpu_features.c
12
index XXXXXXX..XXXXXXX 100644
13
--- a/target/s390x/cpu_features.c
14
+++ b/target/s390x/cpu_features.c
15
@@ -XXX,XX +XXX,XX @@ static S390FeatGroupDef s390_feature_groups[] = {
16
FEAT_GROUP_INIT("msa10_pckmo", MSA_EXT_10_PCKMO, "Message-security-assist-extension 10 PCKMO subfunctions"),
17
FEAT_GROUP_INIT("msa11", MSA_EXT_11, "Message-security-assist-extension 11 facility"),
18
FEAT_GROUP_INIT("msa11_pckmo", MSA_EXT_11_PCKMO, "Message-security-assist-extension 11 PCKMO subfunctions"),
19
+ FEAT_GROUP_INIT("msa12", MSA_EXT_12, "Message-security-assist-extension 12 facility"),
20
FEAT_GROUP_INIT("mepochptff", MULTIPLE_EPOCH_PTFF, "PTFF enhancements introduced with Multiple-epoch facility"),
21
FEAT_GROUP_INIT("esort", ENH_SORT, "Enhanced-sort facility"),
22
FEAT_GROUP_INIT("deflate", DEFLATE_CONVERSION, "Deflate-conversion facility"),
9
diff --git a/target/s390x/cpu_features_def.h.inc b/target/s390x/cpu_features_def.h.inc
23
diff --git a/target/s390x/cpu_features_def.h.inc b/target/s390x/cpu_features_def.h.inc
10
index XXXXXXX..XXXXXXX 100644
24
index XXXXXXX..XXXXXXX 100644
11
--- a/target/s390x/cpu_features_def.h.inc
25
--- a/target/s390x/cpu_features_def.h.inc
12
+++ b/target/s390x/cpu_features_def.h.inc
26
+++ b/target/s390x/cpu_features_def.h.inc
13
@@ -XXX,XX +XXX,XX @@ DEF_FEAT(EDAT_2, "edat2", STFL, 78, "Enhanced-DAT facility 2")
27
@@ -XXX,XX +XXX,XX @@ DEF_FEAT(EDAT_2, "edat2", STFL, 78, "Enhanced-DAT facility 2")
...
...
diff view generated by jsdifflib
...
...
10
diff --git a/target/s390x/cpu_features.c b/target/s390x/cpu_features.c
10
diff --git a/target/s390x/cpu_features.c b/target/s390x/cpu_features.c
11
index XXXXXXX..XXXXXXX 100644
11
index XXXXXXX..XXXXXXX 100644
12
--- a/target/s390x/cpu_features.c
12
--- a/target/s390x/cpu_features.c
13
+++ b/target/s390x/cpu_features.c
13
+++ b/target/s390x/cpu_features.c
14
@@ -XXX,XX +XXX,XX @@ static S390FeatGroupDef s390_feature_groups[] = {
14
@@ -XXX,XX +XXX,XX @@ static S390FeatGroupDef s390_feature_groups[] = {
15
FEAT_GROUP_INIT("msa10_pckmo", MSA_EXT_10_PCKMO, "Message-security-assist-extension 10 PCKMO subfunctions"),
16
FEAT_GROUP_INIT("msa11", MSA_EXT_11, "Message-security-assist-extension 11 facility"),
15
FEAT_GROUP_INIT("msa11", MSA_EXT_11, "Message-security-assist-extension 11 facility"),
17
FEAT_GROUP_INIT("msa11_pckmo", MSA_EXT_11_PCKMO, "Message-security-assist-extension 11 PCKMO subfunctions"),
16
FEAT_GROUP_INIT("msa11_pckmo", MSA_EXT_11_PCKMO, "Message-security-assist-extension 11 PCKMO subfunctions"),
17
FEAT_GROUP_INIT("msa12", MSA_EXT_12, "Message-security-assist-extension 12 facility"),
18
+ FEAT_GROUP_INIT("msa13", MSA_EXT_13, "Message-security-assist-extension 13 facility"),
18
+ FEAT_GROUP_INIT("msa13", MSA_EXT_13, "Message-security-assist-extension 13 facility"),
19
+ FEAT_GROUP_INIT("msa13_pckmo", MSA_EXT_13_PCKMO, "Message-security-assist-extension 13 PCKMO subfunctions"),
19
+ FEAT_GROUP_INIT("msa13_pckmo", MSA_EXT_13_PCKMO, "Message-security-assist-extension 13 PCKMO subfunctions"),
20
FEAT_GROUP_INIT("mepochptff", MULTIPLE_EPOCH_PTFF, "PTFF enhancements introduced with Multiple-epoch facility"),
20
FEAT_GROUP_INIT("mepochptff", MULTIPLE_EPOCH_PTFF, "PTFF enhancements introduced with Multiple-epoch facility"),
21
FEAT_GROUP_INIT("esort", ENH_SORT, "Enhanced-sort facility"),
21
FEAT_GROUP_INIT("esort", ENH_SORT, "Enhanced-sort facility"),
22
FEAT_GROUP_INIT("deflate", DEFLATE_CONVERSION, "Deflate-conversion facility"),
22
FEAT_GROUP_INIT("deflate", DEFLATE_CONVERSION, "Deflate-conversion facility"),
...
...
diff view generated by jsdifflib
1
Introduce a new PTFF subfunction to query-stamp events.
1
Introduce a new PTFF subfunction to query-stamp events.
2
2
3
Signed-off-by: Hendrik Brueckner <brueckner@linux.ibm.com>
3
Signed-off-by: Hendrik Brueckner <brueckner@linux.ibm.com>
4
---
4
---
5
target/s390x/cpu_features.c | 1 +
5
target/s390x/cpu_features.c | 1 +
6
target/s390x/cpu_features_def.h.inc | 1 +
6
target/s390x/cpu_features_def.h.inc | 1 +
7
target/s390x/gen-features.c | 9 +++++++++
7
target/s390x/gen-features.c | 9 +++++++++
8
3 files changed, 11 insertions(+)
8
3 files changed, 11 insertions(+)
9
9
10
diff --git a/target/s390x/cpu_features.c b/target/s390x/cpu_features.c
10
diff --git a/target/s390x/cpu_features.c b/target/s390x/cpu_features.c
11
index XXXXXXX..XXXXXXX 100644
11
index XXXXXXX..XXXXXXX 100644
12
--- a/target/s390x/cpu_features.c
12
--- a/target/s390x/cpu_features.c
13
+++ b/target/s390x/cpu_features.c
13
+++ b/target/s390x/cpu_features.c
14
@@ -XXX,XX +XXX,XX @@ static S390FeatGroupDef s390_feature_groups[] = {
14
@@ -XXX,XX +XXX,XX @@ static S390FeatGroupDef s390_feature_groups[] = {
15
FEAT_GROUP_INIT("plo", PLO, "Perform-locked-operation facility"),
15
FEAT_GROUP_INIT("plo", PLO, "Perform-locked-operation facility"),
16
FEAT_GROUP_INIT("tods", TOD_CLOCK_STEERING, "Tod-clock-steering facility"),
16
FEAT_GROUP_INIT("tods", TOD_CLOCK_STEERING, "Tod-clock-steering facility"),
17
FEAT_GROUP_INIT("gen13ptff", GEN13_PTFF, "PTFF enhancements introduced with z13"),
17
FEAT_GROUP_INIT("gen13ptff", GEN13_PTFF, "PTFF enhancements introduced with z13"),
18
+ FEAT_GROUP_INIT("gen17ptff", GEN17_PTFF, "PTFF enhancements introduced with gen17"),
18
+ FEAT_GROUP_INIT("gen17ptff", GEN17_PTFF, "PTFF enhancements introduced with gen17"),
19
FEAT_GROUP_INIT("msa", MSA, "Message-security-assist facility"),
19
FEAT_GROUP_INIT("msa", MSA, "Message-security-assist facility"),
20
FEAT_GROUP_INIT("msa1", MSA_EXT_1, "Message-security-assist-extension 1 facility"),
20
FEAT_GROUP_INIT("msa1", MSA_EXT_1, "Message-security-assist-extension 1 facility"),
21
FEAT_GROUP_INIT("msa2", MSA_EXT_2, "Message-security-assist-extension 2 facility"),
21
FEAT_GROUP_INIT("msa2", MSA_EXT_2, "Message-security-assist-extension 2 facility"),
22
diff --git a/target/s390x/cpu_features_def.h.inc b/target/s390x/cpu_features_def.h.inc
22
diff --git a/target/s390x/cpu_features_def.h.inc b/target/s390x/cpu_features_def.h.inc
23
index XXXXXXX..XXXXXXX 100644
23
index XXXXXXX..XXXXXXX 100644
24
--- a/target/s390x/cpu_features_def.h.inc
24
--- a/target/s390x/cpu_features_def.h.inc
25
+++ b/target/s390x/cpu_features_def.h.inc
25
+++ b/target/s390x/cpu_features_def.h.inc
26
@@ -XXX,XX +XXX,XX @@ DEF_FEAT(PTFF_QSI, "ptff-qsi", PTFF, 2, "PTFF Query Steering Information")
26
@@ -XXX,XX +XXX,XX @@ DEF_FEAT(PTFF_QSI, "ptff-qsi", PTFF, 2, "PTFF Query Steering Information")
27
DEF_FEAT(PTFF_QPT, "ptff-qpc", PTFF, 3, "PTFF Query Physical Clock")
27
DEF_FEAT(PTFF_QPT, "ptff-qpc", PTFF, 3, "PTFF Query Physical Clock")
28
DEF_FEAT(PTFF_QUI, "ptff-qui", PTFF, 4, "PTFF Query UTC Information")
28
DEF_FEAT(PTFF_QUI, "ptff-qui", PTFF, 4, "PTFF Query UTC Information")
29
DEF_FEAT(PTFF_QTOU, "ptff-qtou", PTFF, 5, "PTFF Query TOD Offset User")
29
DEF_FEAT(PTFF_QTOU, "ptff-qtou", PTFF, 5, "PTFF Query TOD Offset User")
30
+DEF_FEAT(PTFF_QTSE, "ptff-qtse", PTFF, 6, "PTFF Query Time-Stamp Event")
30
+DEF_FEAT(PTFF_QTSE, "ptff-qtse", PTFF, 6, "PTFF Query Time-Stamp Event")
31
DEF_FEAT(PTFF_QSIE, "ptff-qsie", PTFF, 10, "PTFF Query Steering Information Extended")
31
DEF_FEAT(PTFF_QSIE, "ptff-qsie", PTFF, 10, "PTFF Query Steering Information Extended")
32
DEF_FEAT(PTFF_QTOUE, "ptff-qtoue", PTFF, 13, "PTFF Query TOD Offset User Extended")
32
DEF_FEAT(PTFF_QTOUE, "ptff-qtoue", PTFF, 13, "PTFF Query TOD Offset User Extended")
33
DEF_FEAT(PTFF_STO, "ptff-sto", PTFF, 65, "PTFF Set TOD Offset")
33
DEF_FEAT(PTFF_STO, "ptff-sto", PTFF, 65, "PTFF Set TOD Offset")
34
diff --git a/target/s390x/gen-features.c b/target/s390x/gen-features.c
34
diff --git a/target/s390x/gen-features.c b/target/s390x/gen-features.c
35
index XXXXXXX..XXXXXXX 100644
35
index XXXXXXX..XXXXXXX 100644
36
--- a/target/s390x/gen-features.c
36
--- a/target/s390x/gen-features.c
37
+++ b/target/s390x/gen-features.c
37
+++ b/target/s390x/gen-features.c
38
@@ -XXX,XX +XXX,XX @@
38
@@ -XXX,XX +XXX,XX @@
39
S390_FEAT_PTFF_STOE, \
39
S390_FEAT_PTFF_STOE, \
40
S390_FEAT_PTFF_STOUE
40
S390_FEAT_PTFF_STOUE
41
41
42
+#define S390_FEAT_GROUP_GEN17_PTFF \
42
+#define S390_FEAT_GROUP_GEN17_PTFF \
43
+ S390_FEAT_PTFF_QTSE
43
+ S390_FEAT_PTFF_QTSE
44
+
44
+
45
#define S390_FEAT_GROUP_MSA \
45
#define S390_FEAT_GROUP_MSA \
46
S390_FEAT_MSA, \
46
S390_FEAT_MSA, \
47
S390_FEAT_KMAC_DEA, \
47
S390_FEAT_KMAC_DEA, \
48
@@ -XXX,XX +XXX,XX @@ static uint16_t group_GEN13_PTFF[] = {
48
@@ -XXX,XX +XXX,XX @@ static uint16_t group_GEN13_PTFF[] = {
49
static uint16_t group_MULTIPLE_EPOCH_PTFF[] = {
49
static uint16_t group_MULTIPLE_EPOCH_PTFF[] = {
50
S390_FEAT_GROUP_MULTIPLE_EPOCH_PTFF,
50
S390_FEAT_GROUP_MULTIPLE_EPOCH_PTFF,
51
};
51
};
52
+
52
+
53
+static uint16_t group_GEN17_PTFF[] = {
53
+static uint16_t group_GEN17_PTFF[] = {
54
+ S390_FEAT_GROUP_GEN17_PTFF,
54
+ S390_FEAT_GROUP_GEN17_PTFF,
55
+};
55
+};
56
+
56
+
57
static uint16_t group_MSA[] = {
57
static uint16_t group_MSA[] = {
58
S390_FEAT_GROUP_MSA,
58
S390_FEAT_GROUP_MSA,
59
};
59
};
60
@@ -XXX,XX +XXX,XX @@ static FeatGroupDefSpec FeatGroupDef[] = {
60
@@ -XXX,XX +XXX,XX @@ static FeatGroupDefSpec FeatGroupDef[] = {
61
FEAT_GROUP_INITIALIZER(PLO),
61
FEAT_GROUP_INITIALIZER(PLO),
62
FEAT_GROUP_INITIALIZER(TOD_CLOCK_STEERING),
62
FEAT_GROUP_INITIALIZER(TOD_CLOCK_STEERING),
63
FEAT_GROUP_INITIALIZER(GEN13_PTFF),
63
FEAT_GROUP_INITIALIZER(GEN13_PTFF),
64
+ FEAT_GROUP_INITIALIZER(GEN17_PTFF),
64
+ FEAT_GROUP_INITIALIZER(GEN17_PTFF),
65
FEAT_GROUP_INITIALIZER(MSA),
65
FEAT_GROUP_INITIALIZER(MSA),
66
FEAT_GROUP_INITIALIZER(MSA_EXT_1),
66
FEAT_GROUP_INITIALIZER(MSA_EXT_1),
67
FEAT_GROUP_INITIALIZER(MSA_EXT_2),
67
FEAT_GROUP_INITIALIZER(MSA_EXT_2),
68
--
68
--
69
2.43.5
69
2.43.5
diff view generated by jsdifflib
New patch
1
This linux headers update includes required changes for
2
the gen17 CPU model.
1
3
4
Signed-off-by: Hendrik Brueckner <brueckner@linux.ibm.com>
5
Suggested-by: Thomas Huth <thuth@redhat.com>
6
---
7
include/standard-headers/drm/drm_fourcc.h | 1 +
8
include/standard-headers/linux/ethtool.h | 5 +
9
include/standard-headers/linux/pci_regs.h | 38 ++-
10
.../standard-headers/linux/virtio_crypto.h | 1 +
11
include/standard-headers/linux/virtio_pci.h | 131 ++++++++++
12
linux-headers/asm-arm64/kvm.h | 6 +
13
linux-headers/asm-arm64/unistd_64.h | 4 +
14
linux-headers/asm-generic/mman-common.h | 3 +
15
linux-headers/asm-generic/mman.h | 4 +
16
linux-headers/asm-generic/unistd.h | 11 +-
17
linux-headers/asm-loongarch/kvm.h | 20 ++
18
linux-headers/asm-loongarch/unistd_64.h | 4 +
19
linux-headers/asm-mips/mman.h | 3 +
20
linux-headers/asm-mips/unistd_n32.h | 4 +
21
linux-headers/asm-mips/unistd_n64.h | 4 +
22
linux-headers/asm-mips/unistd_o32.h | 4 +
23
linux-headers/asm-powerpc/unistd_32.h | 4 +
24
linux-headers/asm-powerpc/unistd_64.h | 4 +
25
linux-headers/asm-riscv/kvm.h | 4 +
26
linux-headers/asm-riscv/unistd_32.h | 4 +
27
linux-headers/asm-riscv/unistd_64.h | 4 +
28
linux-headers/asm-s390/kvm.h | 3 +-
29
linux-headers/asm-s390/unistd_32.h | 4 +
30
linux-headers/asm-s390/unistd_64.h | 4 +
31
linux-headers/asm-x86/kvm.h | 1 +
32
linux-headers/asm-x86/mman.h | 3 -
33
linux-headers/asm-x86/unistd_32.h | 4 +
34
linux-headers/asm-x86/unistd_64.h | 4 +
35
linux-headers/asm-x86/unistd_x32.h | 4 +
36
linux-headers/linux/iommufd.h | 224 +++++++++++++++++-
37
linux-headers/linux/kvm.h | 8 +
38
linux-headers/linux/psci.h | 5 +
39
linux-headers/linux/vfio.h | 2 +-
40
33 files changed, 506 insertions(+), 23 deletions(-)
41
42
diff --git a/include/standard-headers/drm/drm_fourcc.h b/include/standard-headers/drm/drm_fourcc.h
43
index XXXXXXX..XXXXXXX 100644
44
--- a/include/standard-headers/drm/drm_fourcc.h
45
+++ b/include/standard-headers/drm/drm_fourcc.h
46
@@ -XXX,XX +XXX,XX @@ drm_fourcc_canonicalize_nvidia_format_mod(uint64_t modifier)
47
* 64K_D_2D on GFX12 is identical to 64K_D on GFX11.
48
*/
49
#define AMD_FMT_MOD_TILE_GFX9_64K_D 10
50
+#define AMD_FMT_MOD_TILE_GFX9_4K_D_X 22
51
#define AMD_FMT_MOD_TILE_GFX9_64K_S_X 25
52
#define AMD_FMT_MOD_TILE_GFX9_64K_D_X 26
53
#define AMD_FMT_MOD_TILE_GFX9_64K_R_X 27
54
diff --git a/include/standard-headers/linux/ethtool.h b/include/standard-headers/linux/ethtool.h
55
index XXXXXXX..XXXXXXX 100644
56
--- a/include/standard-headers/linux/ethtool.h
57
+++ b/include/standard-headers/linux/ethtool.h
58
@@ -XXX,XX +XXX,XX @@ struct ethtool_link_settings {
59
    uint8_t    master_slave_state;
60
    uint8_t    rate_matching;
61
    uint32_t    reserved[7];
62
+    /* Linux builds with -Wflex-array-member-not-at-end but does
63
+     * not use the "link_mode_masks" member. Leave it defined for
64
+     * userspace for now, and when userspace wants to start using
65
+     * -Wfamnae, we'll need a new solution.
66
+     */
67
    uint32_t    link_mode_masks[];
68
    /* layout of link_mode_masks fields:
69
     * uint32_t map_supported[link_mode_masks_nwords];
70
diff --git a/include/standard-headers/linux/pci_regs.h b/include/standard-headers/linux/pci_regs.h
71
index XXXXXXX..XXXXXXX 100644
72
--- a/include/standard-headers/linux/pci_regs.h
73
+++ b/include/standard-headers/linux/pci_regs.h
74
@@ -XXX,XX +XXX,XX @@
75
#define PCI_MSIX_ENTRY_UPPER_ADDR    0x4 /* Message Upper Address */
76
#define PCI_MSIX_ENTRY_DATA        0x8 /* Message Data */
77
#define PCI_MSIX_ENTRY_VECTOR_CTRL    0xc /* Vector Control */
78
-#define PCI_MSIX_ENTRY_CTRL_MASKBIT    0x00000001
79
+#define PCI_MSIX_ENTRY_CTRL_MASKBIT    0x00000001 /* Mask Bit */
80
+#define PCI_MSIX_ENTRY_CTRL_ST        0xffff0000 /* Steering Tag */
81
82
/* CompactPCI Hotswap Register */
83
84
@@ -XXX,XX +XXX,XX @@
85
#define PCI_EXP_DEVCAP2_ATOMIC_COMP64    0x00000100 /* 64b AtomicOp completion */
86
#define PCI_EXP_DEVCAP2_ATOMIC_COMP128    0x00000200 /* 128b AtomicOp completion */
87
#define PCI_EXP_DEVCAP2_LTR        0x00000800 /* Latency tolerance reporting */
88
+#define PCI_EXP_DEVCAP2_TPH_COMP_MASK    0x00003000 /* TPH completer support */
89
#define PCI_EXP_DEVCAP2_OBFF_MASK    0x000c0000 /* OBFF support mechanism */
90
#define PCI_EXP_DEVCAP2_OBFF_MSG    0x00040000 /* New message signaling */
91
#define PCI_EXP_DEVCAP2_OBFF_WAKE    0x00080000 /* Re-use WAKE# for OBFF */
92
@@ -XXX,XX +XXX,XX @@
93
#define PCI_EXP_DEVSTA2        0x2a    /* Device Status 2 */
94
#define PCI_CAP_EXP_RC_ENDPOINT_SIZEOF_V2 0x2c    /* end of v2 EPs w/o link */
95
#define PCI_EXP_LNKCAP2        0x2c    /* Link Capabilities 2 */
96
+#define PCI_EXP_LNKCAP2_SLS        0x000000fe /* Supported Link Speeds Vector */
97
#define PCI_EXP_LNKCAP2_SLS_2_5GB    0x00000002 /* Supported Speed 2.5GT/s */
98
#define PCI_EXP_LNKCAP2_SLS_5_0GB    0x00000004 /* Supported Speed 5GT/s */
99
#define PCI_EXP_LNKCAP2_SLS_8_0GB    0x00000008 /* Supported Speed 8GT/s */
100
@@ -XXX,XX +XXX,XX @@
101
#define PCI_DPA_CAP_SUBSTATE_MASK    0x1F    /* # substates - 1 */
102
#define PCI_DPA_BASE_SIZEOF    16    /* size with 0 substates */
103
104
+/* TPH Completer Support */
105
+#define PCI_EXP_DEVCAP2_TPH_COMP_NONE        0x0 /* None */
106
+#define PCI_EXP_DEVCAP2_TPH_COMP_TPH_ONLY    0x1 /* TPH only */
107
+#define PCI_EXP_DEVCAP2_TPH_COMP_EXT_TPH    0x3 /* TPH and Extended TPH */
108
+
109
/* TPH Requester */
110
#define PCI_TPH_CAP        4    /* capability register */
111
-#define PCI_TPH_CAP_LOC_MASK    0x600    /* location mask */
112
-#define PCI_TPH_LOC_NONE    0x000    /* no location */
113
-#define PCI_TPH_LOC_CAP    0x200    /* in capability */
114
-#define PCI_TPH_LOC_MSIX    0x400    /* in MSI-X */
115
-#define PCI_TPH_CAP_ST_MASK    0x07FF0000    /* ST table mask */
116
-#define PCI_TPH_CAP_ST_SHIFT    16    /* ST table shift */
117
-#define PCI_TPH_BASE_SIZEOF    0xc    /* size with no ST table */
118
+#define PCI_TPH_CAP_ST_NS    0x00000001 /* No ST Mode Supported */
119
+#define PCI_TPH_CAP_ST_IV    0x00000002 /* Interrupt Vector Mode Supported */
120
+#define PCI_TPH_CAP_ST_DS    0x00000004 /* Device Specific Mode Supported */
121
+#define PCI_TPH_CAP_EXT_TPH    0x00000100 /* Ext TPH Requester Supported */
122
+#define PCI_TPH_CAP_LOC_MASK    0x00000600 /* ST Table Location */
123
+#define PCI_TPH_LOC_NONE    0x00000000 /* Not present */
124
+#define PCI_TPH_LOC_CAP    0x00000200 /* In capability */
125
+#define PCI_TPH_LOC_MSIX    0x00000400 /* In MSI-X */
126
+#define PCI_TPH_CAP_ST_MASK    0x07FF0000 /* ST Table Size */
127
+#define PCI_TPH_CAP_ST_SHIFT    16    /* ST Table Size shift */
128
+#define PCI_TPH_BASE_SIZEOF    0xc    /* Size with no ST table */
129
+
130
+#define PCI_TPH_CTRL        8    /* control register */
131
+#define PCI_TPH_CTRL_MODE_SEL_MASK    0x00000007 /* ST Mode Select */
132
+#define PCI_TPH_ST_NS_MODE        0x0 /* No ST Mode */
133
+#define PCI_TPH_ST_IV_MODE        0x1 /* Interrupt Vector Mode */
134
+#define PCI_TPH_ST_DS_MODE        0x2 /* Device Specific Mode */
135
+#define PCI_TPH_CTRL_REQ_EN_MASK    0x00000300 /* TPH Requester Enable */
136
+#define PCI_TPH_REQ_DISABLE        0x0 /* No TPH requests allowed */
137
+#define PCI_TPH_REQ_TPH_ONLY        0x1 /* TPH only requests allowed */
138
+#define PCI_TPH_REQ_EXT_TPH        0x3 /* Extended TPH requests allowed */
139
140
/* Downstream Port Containment */
141
#define PCI_EXP_DPC_CAP            0x04    /* DPC Capability */
142
diff --git a/include/standard-headers/linux/virtio_crypto.h b/include/standard-headers/linux/virtio_crypto.h
143
index XXXXXXX..XXXXXXX 100644
144
--- a/include/standard-headers/linux/virtio_crypto.h
145
+++ b/include/standard-headers/linux/virtio_crypto.h
146
@@ -XXX,XX +XXX,XX @@ struct virtio_crypto_op_header {
147
    VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x00)
148
#define VIRTIO_CRYPTO_AKCIPHER_DECRYPT \
149
    VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x01)
150
+    /* akcipher sign/verify opcodes are deprecated */
151
#define VIRTIO_CRYPTO_AKCIPHER_SIGN \
152
    VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x02)
153
#define VIRTIO_CRYPTO_AKCIPHER_VERIFY \
154
diff --git a/include/standard-headers/linux/virtio_pci.h b/include/standard-headers/linux/virtio_pci.h
155
index XXXXXXX..XXXXXXX 100644
156
--- a/include/standard-headers/linux/virtio_pci.h
157
+++ b/include/standard-headers/linux/virtio_pci.h
158
@@ -XXX,XX +XXX,XX @@
159
#define _LINUX_VIRTIO_PCI_H
160
161
#include "standard-headers/linux/types.h"
162
+#include "standard-headers/linux/kernel.h"
163
164
#ifndef VIRTIO_PCI_NO_LEGACY
165
166
@@ -XXX,XX +XXX,XX @@ struct virtio_pci_cfg_cap {
167
#define VIRTIO_ADMIN_CMD_LEGACY_DEV_CFG_READ        0x5
168
#define VIRTIO_ADMIN_CMD_LEGACY_NOTIFY_INFO        0x6
169
170
+/* Device parts access commands. */
171
+#define VIRTIO_ADMIN_CMD_CAP_ID_LIST_QUERY        0x7
172
+#define VIRTIO_ADMIN_CMD_DEVICE_CAP_GET            0x8
173
+#define VIRTIO_ADMIN_CMD_DRIVER_CAP_SET            0x9
174
+#define VIRTIO_ADMIN_CMD_RESOURCE_OBJ_CREATE        0xa
175
+#define VIRTIO_ADMIN_CMD_RESOURCE_OBJ_DESTROY        0xd
176
+#define VIRTIO_ADMIN_CMD_DEV_PARTS_METADATA_GET        0xe
177
+#define VIRTIO_ADMIN_CMD_DEV_PARTS_GET            0xf
178
+#define VIRTIO_ADMIN_CMD_DEV_PARTS_SET            0x10
179
+#define VIRTIO_ADMIN_CMD_DEV_MODE_SET            0x11
180
+
181
struct virtio_admin_cmd_hdr {
182
    uint16_t opcode;
183
    /*
184
@@ -XXX,XX +XXX,XX @@ struct virtio_admin_cmd_notify_info_result {
185
    struct virtio_admin_cmd_notify_info_data entries[VIRTIO_ADMIN_CMD_MAX_NOTIFY_INFO];
186
};
187
188
+#define VIRTIO_DEV_PARTS_CAP 0x0000
189
+
190
+struct virtio_dev_parts_cap {
191
+    uint8_t get_parts_resource_objects_limit;
192
+    uint8_t set_parts_resource_objects_limit;
193
+};
194
+
195
+#define MAX_CAP_ID __KERNEL_DIV_ROUND_UP(VIRTIO_DEV_PARTS_CAP + 1, 64)
196
+
197
+struct virtio_admin_cmd_query_cap_id_result {
198
+    uint64_t supported_caps[MAX_CAP_ID];
199
+};
200
+
201
+struct virtio_admin_cmd_cap_get_data {
202
+    uint16_t id;
203
+    uint8_t reserved[6];
204
+};
205
+
206
+struct virtio_admin_cmd_cap_set_data {
207
+    uint16_t id;
208
+    uint8_t reserved[6];
209
+    uint8_t cap_specific_data[];
210
+};
211
+
212
+struct virtio_admin_cmd_resource_obj_cmd_hdr {
213
+    uint16_t type;
214
+    uint8_t reserved[2];
215
+    uint32_t id; /* Indicates unique resource object id per resource object type */
216
+};
217
+
218
+struct virtio_admin_cmd_resource_obj_create_data {
219
+    struct virtio_admin_cmd_resource_obj_cmd_hdr hdr;
220
+    uint64_t flags;
221
+    uint8_t resource_obj_specific_data[];
222
+};
223
+
224
+#define VIRTIO_RESOURCE_OBJ_DEV_PARTS 0
225
+
226
+#define VIRTIO_RESOURCE_OBJ_DEV_PARTS_TYPE_GET 0
227
+#define VIRTIO_RESOURCE_OBJ_DEV_PARTS_TYPE_SET 1
228
+
229
+struct virtio_resource_obj_dev_parts {
230
+    uint8_t type;
231
+    uint8_t reserved[7];
232
+};
233
+
234
+#define VIRTIO_ADMIN_CMD_DEV_PARTS_METADATA_TYPE_SIZE 0
235
+#define VIRTIO_ADMIN_CMD_DEV_PARTS_METADATA_TYPE_COUNT 1
236
+#define VIRTIO_ADMIN_CMD_DEV_PARTS_METADATA_TYPE_LIST 2
237
+
238
+struct virtio_admin_cmd_dev_parts_metadata_data {
239
+    struct virtio_admin_cmd_resource_obj_cmd_hdr hdr;
240
+    uint8_t type;
241
+    uint8_t reserved[7];
242
+};
243
+
244
+#define VIRTIO_DEV_PART_F_OPTIONAL 0
245
+
246
+struct virtio_dev_part_hdr {
247
+    uint16_t part_type;
248
+    uint8_t flags;
249
+    uint8_t reserved;
250
+    union {
251
+        struct {
252
+            uint32_t offset;
253
+            uint32_t reserved;
254
+        } pci_common_cfg;
255
+        struct {
256
+            uint16_t index;
257
+            uint8_t reserved[6];
258
+        } vq_index;
259
+    } selector;
260
+    uint32_t length;
261
+};
262
+
263
+struct virtio_dev_part {
264
+    struct virtio_dev_part_hdr hdr;
265
+    uint8_t value[];
266
+};
267
+
268
+struct virtio_admin_cmd_dev_parts_metadata_result {
269
+    union {
270
+        struct {
271
+            uint32_t size;
272
+            uint32_t reserved;
273
+        } parts_size;
274
+        struct {
275
+            uint32_t count;
276
+            uint32_t reserved;
277
+        } hdr_list_count;
278
+        struct {
279
+            uint32_t count;
280
+            uint32_t reserved;
281
+            struct virtio_dev_part_hdr hdrs[];
282
+        } hdr_list;
283
+    };
284
+};
285
+
286
+#define VIRTIO_ADMIN_CMD_DEV_PARTS_GET_TYPE_SELECTED 0
287
+#define VIRTIO_ADMIN_CMD_DEV_PARTS_GET_TYPE_ALL 1
288
+
289
+struct virtio_admin_cmd_dev_parts_get_data {
290
+    struct virtio_admin_cmd_resource_obj_cmd_hdr hdr;
291
+    uint8_t type;
292
+    uint8_t reserved[7];
293
+    struct virtio_dev_part_hdr hdr_list[];
294
+};
295
+
296
+struct virtio_admin_cmd_dev_parts_set_data {
297
+    struct virtio_admin_cmd_resource_obj_cmd_hdr hdr;
298
+    struct virtio_dev_part parts[];
299
+};
300
+
301
+#define VIRTIO_ADMIN_CMD_DEV_MODE_F_STOPPED 0
302
+
303
+struct virtio_admin_cmd_dev_mode_set_data {
304
+    uint8_t flags;
305
+};
306
+
307
#endif
308
diff --git a/linux-headers/asm-arm64/kvm.h b/linux-headers/asm-arm64/kvm.h
309
index XXXXXXX..XXXXXXX 100644
310
--- a/linux-headers/asm-arm64/kvm.h
311
+++ b/linux-headers/asm-arm64/kvm.h
312
@@ -XXX,XX +XXX,XX @@ enum {
313
*/
314
#define KVM_SYSTEM_EVENT_RESET_FLAG_PSCI_RESET2    (1ULL << 0)
315
316
+/*
317
+ * Shutdown caused by a PSCI v1.3 SYSTEM_OFF2 call.
318
+ * Valid only when the system event has a type of KVM_SYSTEM_EVENT_SHUTDOWN.
319
+ */
320
+#define KVM_SYSTEM_EVENT_SHUTDOWN_FLAG_PSCI_OFF2    (1ULL << 0)
321
+
322
/* run->fail_entry.hardware_entry_failure_reason codes. */
323
#define KVM_EXIT_FAIL_ENTRY_CPU_UNSUPPORTED    (1ULL << 0)
324
325
diff --git a/linux-headers/asm-arm64/unistd_64.h b/linux-headers/asm-arm64/unistd_64.h
326
index XXXXXXX..XXXXXXX 100644
327
--- a/linux-headers/asm-arm64/unistd_64.h
328
+++ b/linux-headers/asm-arm64/unistd_64.h
329
@@ -XXX,XX +XXX,XX @@
330
#define __NR_lsm_set_self_attr 460
331
#define __NR_lsm_list_modules 461
332
#define __NR_mseal 462
333
+#define __NR_setxattrat 463
334
+#define __NR_getxattrat 464
335
+#define __NR_listxattrat 465
336
+#define __NR_removexattrat 466
337
338
339
#endif /* _ASM_UNISTD_64_H */
340
diff --git a/linux-headers/asm-generic/mman-common.h b/linux-headers/asm-generic/mman-common.h
341
index XXXXXXX..XXXXXXX 100644
342
--- a/linux-headers/asm-generic/mman-common.h
343
+++ b/linux-headers/asm-generic/mman-common.h
344
@@ -XXX,XX +XXX,XX @@
345
346
#define MADV_COLLAPSE    25        /* Synchronous hugepage collapse */
347
348
+#define MADV_GUARD_INSTALL 102        /* fatal signal on access to range */
349
+#define MADV_GUARD_REMOVE 103        /* unguard range */
350
+
351
/* compatibility flags */
352
#define MAP_FILE    0
353
354
diff --git a/linux-headers/asm-generic/mman.h b/linux-headers/asm-generic/mman.h
355
index XXXXXXX..XXXXXXX 100644
356
--- a/linux-headers/asm-generic/mman.h
357
+++ b/linux-headers/asm-generic/mman.h
358
@@ -XXX,XX +XXX,XX @@
359
#define MCL_FUTURE    2        /* lock all future mappings */
360
#define MCL_ONFAULT    4        /* lock all pages that are faulted in */
361
362
+#define SHADOW_STACK_SET_TOKEN (1ULL << 0) /* Set up a restore token in the shadow stack */
363
+#define SHADOW_STACK_SET_MARKER (1ULL << 1) /* Set up a top of stack marker in the shadow stack */
364
+
365
+
366
#endif /* __ASM_GENERIC_MMAN_H */
367
diff --git a/linux-headers/asm-generic/unistd.h b/linux-headers/asm-generic/unistd.h
368
index XXXXXXX..XXXXXXX 100644
369
--- a/linux-headers/asm-generic/unistd.h
370
+++ b/linux-headers/asm-generic/unistd.h
371
@@ -XXX,XX +XXX,XX @@ __SYSCALL(__NR_lsm_list_modules, sys_lsm_list_modules)
372
#define __NR_mseal 462
373
__SYSCALL(__NR_mseal, sys_mseal)
374
375
+#define __NR_setxattrat 463
376
+__SYSCALL(__NR_setxattrat, sys_setxattrat)
377
+#define __NR_getxattrat 464
378
+__SYSCALL(__NR_getxattrat, sys_getxattrat)
379
+#define __NR_listxattrat 465
380
+__SYSCALL(__NR_listxattrat, sys_listxattrat)
381
+#define __NR_removexattrat 466
382
+__SYSCALL(__NR_removexattrat, sys_removexattrat)
383
+
384
#undef __NR_syscalls
385
-#define __NR_syscalls 463
386
+#define __NR_syscalls 467
387
388
/*
389
* 32 bit systems traditionally used different
390
diff --git a/linux-headers/asm-loongarch/kvm.h b/linux-headers/asm-loongarch/kvm.h
391
index XXXXXXX..XXXXXXX 100644
392
--- a/linux-headers/asm-loongarch/kvm.h
393
+++ b/linux-headers/asm-loongarch/kvm.h
394
@@ -XXX,XX +XXX,XX @@
395
396
#include <linux/types.h>
397
398
+#define __KVM_HAVE_IRQ_LINE
399
+
400
/*
401
* KVM LoongArch specific structures and definitions.
402
*
403
@@ -XXX,XX +XXX,XX @@ struct kvm_iocsr_entry {
404
#define KVM_IRQCHIP_NUM_PINS    64
405
#define KVM_MAX_CORES        256
406
407
+#define KVM_DEV_LOONGARCH_IPI_GRP_REGS            0x40000001
408
+
409
+#define KVM_DEV_LOONGARCH_EXTIOI_GRP_REGS        0x40000002
410
+
411
+#define KVM_DEV_LOONGARCH_EXTIOI_GRP_SW_STATUS        0x40000003
412
+#define KVM_DEV_LOONGARCH_EXTIOI_SW_STATUS_NUM_CPU    0x0
413
+#define KVM_DEV_LOONGARCH_EXTIOI_SW_STATUS_FEATURE    0x1
414
+#define KVM_DEV_LOONGARCH_EXTIOI_SW_STATUS_STATE    0x2
415
+
416
+#define KVM_DEV_LOONGARCH_EXTIOI_GRP_CTRL        0x40000004
417
+#define KVM_DEV_LOONGARCH_EXTIOI_CTRL_INIT_NUM_CPU    0x0
418
+#define KVM_DEV_LOONGARCH_EXTIOI_CTRL_INIT_FEATURE    0x1
419
+#define KVM_DEV_LOONGARCH_EXTIOI_CTRL_LOAD_FINISHED    0x3
420
+
421
+#define KVM_DEV_LOONGARCH_PCH_PIC_GRP_REGS     0x40000005
422
+#define KVM_DEV_LOONGARCH_PCH_PIC_GRP_CTRL     0x40000006
423
+#define KVM_DEV_LOONGARCH_PCH_PIC_CTRL_INIT     0
424
+
425
#endif /* __UAPI_ASM_LOONGARCH_KVM_H */
426
diff --git a/linux-headers/asm-loongarch/unistd_64.h b/linux-headers/asm-loongarch/unistd_64.h
427
index XXXXXXX..XXXXXXX 100644
428
--- a/linux-headers/asm-loongarch/unistd_64.h
429
+++ b/linux-headers/asm-loongarch/unistd_64.h
430
@@ -XXX,XX +XXX,XX @@
431
#define __NR_lsm_set_self_attr 460
432
#define __NR_lsm_list_modules 461
433
#define __NR_mseal 462
434
+#define __NR_setxattrat 463
435
+#define __NR_getxattrat 464
436
+#define __NR_listxattrat 465
437
+#define __NR_removexattrat 466
438
439
440
#endif /* _ASM_UNISTD_64_H */
441
diff --git a/linux-headers/asm-mips/mman.h b/linux-headers/asm-mips/mman.h
442
index XXXXXXX..XXXXXXX 100644
443
--- a/linux-headers/asm-mips/mman.h
444
+++ b/linux-headers/asm-mips/mman.h
445
@@ -XXX,XX +XXX,XX @@
446
447
#define MADV_COLLAPSE    25        /* Synchronous hugepage collapse */
448
449
+#define MADV_GUARD_INSTALL 102        /* fatal signal on access to range */
450
+#define MADV_GUARD_REMOVE 103        /* unguard range */
451
+
452
/* compatibility flags */
453
#define MAP_FILE    0
454
455
diff --git a/linux-headers/asm-mips/unistd_n32.h b/linux-headers/asm-mips/unistd_n32.h
456
index XXXXXXX..XXXXXXX 100644
457
--- a/linux-headers/asm-mips/unistd_n32.h
458
+++ b/linux-headers/asm-mips/unistd_n32.h
459
@@ -XXX,XX +XXX,XX @@
460
#define __NR_lsm_set_self_attr (__NR_Linux + 460)
461
#define __NR_lsm_list_modules (__NR_Linux + 461)
462
#define __NR_mseal (__NR_Linux + 462)
463
+#define __NR_setxattrat (__NR_Linux + 463)
464
+#define __NR_getxattrat (__NR_Linux + 464)
465
+#define __NR_listxattrat (__NR_Linux + 465)
466
+#define __NR_removexattrat (__NR_Linux + 466)
467
468
#endif /* _ASM_UNISTD_N32_H */
469
diff --git a/linux-headers/asm-mips/unistd_n64.h b/linux-headers/asm-mips/unistd_n64.h
470
index XXXXXXX..XXXXXXX 100644
471
--- a/linux-headers/asm-mips/unistd_n64.h
472
+++ b/linux-headers/asm-mips/unistd_n64.h
473
@@ -XXX,XX +XXX,XX @@
474
#define __NR_lsm_set_self_attr (__NR_Linux + 460)
475
#define __NR_lsm_list_modules (__NR_Linux + 461)
476
#define __NR_mseal (__NR_Linux + 462)
477
+#define __NR_setxattrat (__NR_Linux + 463)
478
+#define __NR_getxattrat (__NR_Linux + 464)
479
+#define __NR_listxattrat (__NR_Linux + 465)
480
+#define __NR_removexattrat (__NR_Linux + 466)
481
482
#endif /* _ASM_UNISTD_N64_H */
483
diff --git a/linux-headers/asm-mips/unistd_o32.h b/linux-headers/asm-mips/unistd_o32.h
484
index XXXXXXX..XXXXXXX 100644
485
--- a/linux-headers/asm-mips/unistd_o32.h
486
+++ b/linux-headers/asm-mips/unistd_o32.h
487
@@ -XXX,XX +XXX,XX @@
488
#define __NR_lsm_set_self_attr (__NR_Linux + 460)
489
#define __NR_lsm_list_modules (__NR_Linux + 461)
490
#define __NR_mseal (__NR_Linux + 462)
491
+#define __NR_setxattrat (__NR_Linux + 463)
492
+#define __NR_getxattrat (__NR_Linux + 464)
493
+#define __NR_listxattrat (__NR_Linux + 465)
494
+#define __NR_removexattrat (__NR_Linux + 466)
495
496
#endif /* _ASM_UNISTD_O32_H */
497
diff --git a/linux-headers/asm-powerpc/unistd_32.h b/linux-headers/asm-powerpc/unistd_32.h
498
index XXXXXXX..XXXXXXX 100644
499
--- a/linux-headers/asm-powerpc/unistd_32.h
500
+++ b/linux-headers/asm-powerpc/unistd_32.h
501
@@ -XXX,XX +XXX,XX @@
502
#define __NR_lsm_set_self_attr 460
503
#define __NR_lsm_list_modules 461
504
#define __NR_mseal 462
505
+#define __NR_setxattrat 463
506
+#define __NR_getxattrat 464
507
+#define __NR_listxattrat 465
508
+#define __NR_removexattrat 466
509
510
511
#endif /* _ASM_UNISTD_32_H */
512
diff --git a/linux-headers/asm-powerpc/unistd_64.h b/linux-headers/asm-powerpc/unistd_64.h
513
index XXXXXXX..XXXXXXX 100644
514
--- a/linux-headers/asm-powerpc/unistd_64.h
515
+++ b/linux-headers/asm-powerpc/unistd_64.h
516
@@ -XXX,XX +XXX,XX @@
517
#define __NR_lsm_set_self_attr 460
518
#define __NR_lsm_list_modules 461
519
#define __NR_mseal 462
520
+#define __NR_setxattrat 463
521
+#define __NR_getxattrat 464
522
+#define __NR_listxattrat 465
523
+#define __NR_removexattrat 466
524
525
526
#endif /* _ASM_UNISTD_64_H */
527
diff --git a/linux-headers/asm-riscv/kvm.h b/linux-headers/asm-riscv/kvm.h
528
index XXXXXXX..XXXXXXX 100644
529
--- a/linux-headers/asm-riscv/kvm.h
530
+++ b/linux-headers/asm-riscv/kvm.h
531
@@ -XXX,XX +XXX,XX @@ enum KVM_RISCV_ISA_EXT_ID {
532
    KVM_RISCV_ISA_EXT_ZCF,
533
    KVM_RISCV_ISA_EXT_ZCMOP,
534
    KVM_RISCV_ISA_EXT_ZAWRS,
535
+    KVM_RISCV_ISA_EXT_SMNPM,
536
+    KVM_RISCV_ISA_EXT_SSNPM,
537
+    KVM_RISCV_ISA_EXT_SVADE,
538
+    KVM_RISCV_ISA_EXT_SVADU,
539
    KVM_RISCV_ISA_EXT_MAX,
540
};
541
542
diff --git a/linux-headers/asm-riscv/unistd_32.h b/linux-headers/asm-riscv/unistd_32.h
543
index XXXXXXX..XXXXXXX 100644
544
--- a/linux-headers/asm-riscv/unistd_32.h
545
+++ b/linux-headers/asm-riscv/unistd_32.h
546
@@ -XXX,XX +XXX,XX @@
547
#define __NR_lsm_set_self_attr 460
548
#define __NR_lsm_list_modules 461
549
#define __NR_mseal 462
550
+#define __NR_setxattrat 463
551
+#define __NR_getxattrat 464
552
+#define __NR_listxattrat 465
553
+#define __NR_removexattrat 466
554
555
556
#endif /* _ASM_UNISTD_32_H */
557
diff --git a/linux-headers/asm-riscv/unistd_64.h b/linux-headers/asm-riscv/unistd_64.h
558
index XXXXXXX..XXXXXXX 100644
559
--- a/linux-headers/asm-riscv/unistd_64.h
560
+++ b/linux-headers/asm-riscv/unistd_64.h
561
@@ -XXX,XX +XXX,XX @@
562
#define __NR_lsm_set_self_attr 460
563
#define __NR_lsm_list_modules 461
564
#define __NR_mseal 462
565
+#define __NR_setxattrat 463
566
+#define __NR_getxattrat 464
567
+#define __NR_listxattrat 465
568
+#define __NR_removexattrat 466
569
570
571
#endif /* _ASM_UNISTD_64_H */
572
diff --git a/linux-headers/asm-s390/kvm.h b/linux-headers/asm-s390/kvm.h
573
index XXXXXXX..XXXXXXX 100644
574
--- a/linux-headers/asm-s390/kvm.h
575
+++ b/linux-headers/asm-s390/kvm.h
576
@@ -XXX,XX +XXX,XX @@ struct kvm_s390_vm_cpu_subfunc {
577
    __u8 kdsa[16];        /* with MSA9 */
578
    __u8 sortl[32];        /* with STFLE.150 */
579
    __u8 dfltcc[32];    /* with STFLE.151 */
580
-    __u8 reserved[1728];
581
+    __u8 pfcr[16];        /* with STFLE.201 */
582
+    __u8 reserved[1712];
583
};
584
585
#define KVM_S390_VM_CPU_PROCESSOR_UV_FEAT_GUEST    6
586
diff --git a/linux-headers/asm-s390/unistd_32.h b/linux-headers/asm-s390/unistd_32.h
587
index XXXXXXX..XXXXXXX 100644
588
--- a/linux-headers/asm-s390/unistd_32.h
589
+++ b/linux-headers/asm-s390/unistd_32.h
590
@@ -XXX,XX +XXX,XX @@
591
#define __NR_lsm_set_self_attr 460
592
#define __NR_lsm_list_modules 461
593
#define __NR_mseal 462
594
+#define __NR_setxattrat 463
595
+#define __NR_getxattrat 464
596
+#define __NR_listxattrat 465
597
+#define __NR_removexattrat 466
598
599
#endif /* _ASM_S390_UNISTD_32_H */
600
diff --git a/linux-headers/asm-s390/unistd_64.h b/linux-headers/asm-s390/unistd_64.h
601
index XXXXXXX..XXXXXXX 100644
602
--- a/linux-headers/asm-s390/unistd_64.h
603
+++ b/linux-headers/asm-s390/unistd_64.h
604
@@ -XXX,XX +XXX,XX @@
605
#define __NR_lsm_set_self_attr 460
606
#define __NR_lsm_list_modules 461
607
#define __NR_mseal 462
608
+#define __NR_setxattrat 463
609
+#define __NR_getxattrat 464
610
+#define __NR_listxattrat 465
611
+#define __NR_removexattrat 466
612
613
#endif /* _ASM_S390_UNISTD_64_H */
614
diff --git a/linux-headers/asm-x86/kvm.h b/linux-headers/asm-x86/kvm.h
615
index XXXXXXX..XXXXXXX 100644
616
--- a/linux-headers/asm-x86/kvm.h
617
+++ b/linux-headers/asm-x86/kvm.h
618
@@ -XXX,XX +XXX,XX @@ struct kvm_sync_regs {
619
#define KVM_X86_QUIRK_FIX_HYPERCALL_INSN    (1 << 5)
620
#define KVM_X86_QUIRK_MWAIT_NEVER_UD_FAULTS    (1 << 6)
621
#define KVM_X86_QUIRK_SLOT_ZAP_ALL        (1 << 7)
622
+#define KVM_X86_QUIRK_STUFF_FEATURE_MSRS    (1 << 8)
623
624
#define KVM_STATE_NESTED_FORMAT_VMX    0
625
#define KVM_STATE_NESTED_FORMAT_SVM    1
626
diff --git a/linux-headers/asm-x86/mman.h b/linux-headers/asm-x86/mman.h
627
index XXXXXXX..XXXXXXX 100644
628
--- a/linux-headers/asm-x86/mman.h
629
+++ b/linux-headers/asm-x86/mman.h
630
@@ -XXX,XX +XXX,XX @@
631
#define MAP_32BIT    0x40        /* only give out 32bit addresses */
632
#define MAP_ABOVE4G    0x80        /* only map above 4GB */
633
634
-/* Flags for map_shadow_stack(2) */
635
-#define SHADOW_STACK_SET_TOKEN    (1ULL << 0)    /* Set up a restore token in the shadow stack */
636
-
637
#include <asm-generic/mman.h>
638
639
#endif /* _ASM_X86_MMAN_H */
640
diff --git a/linux-headers/asm-x86/unistd_32.h b/linux-headers/asm-x86/unistd_32.h
641
index XXXXXXX..XXXXXXX 100644
642
--- a/linux-headers/asm-x86/unistd_32.h
643
+++ b/linux-headers/asm-x86/unistd_32.h
644
@@ -XXX,XX +XXX,XX @@
645
#define __NR_lsm_set_self_attr 460
646
#define __NR_lsm_list_modules 461
647
#define __NR_mseal 462
648
+#define __NR_setxattrat 463
649
+#define __NR_getxattrat 464
650
+#define __NR_listxattrat 465
651
+#define __NR_removexattrat 466
652
653
654
#endif /* _ASM_UNISTD_32_H */
655
diff --git a/linux-headers/asm-x86/unistd_64.h b/linux-headers/asm-x86/unistd_64.h
656
index XXXXXXX..XXXXXXX 100644
657
--- a/linux-headers/asm-x86/unistd_64.h
658
+++ b/linux-headers/asm-x86/unistd_64.h
659
@@ -XXX,XX +XXX,XX @@
660
#define __NR_lsm_set_self_attr 460
661
#define __NR_lsm_list_modules 461
662
#define __NR_mseal 462
663
+#define __NR_setxattrat 463
664
+#define __NR_getxattrat 464
665
+#define __NR_listxattrat 465
666
+#define __NR_removexattrat 466
667
668
669
#endif /* _ASM_UNISTD_64_H */
670
diff --git a/linux-headers/asm-x86/unistd_x32.h b/linux-headers/asm-x86/unistd_x32.h
671
index XXXXXXX..XXXXXXX 100644
672
--- a/linux-headers/asm-x86/unistd_x32.h
673
+++ b/linux-headers/asm-x86/unistd_x32.h
674
@@ -XXX,XX +XXX,XX @@
675
#define __NR_lsm_set_self_attr (__X32_SYSCALL_BIT + 460)
676
#define __NR_lsm_list_modules (__X32_SYSCALL_BIT + 461)
677
#define __NR_mseal (__X32_SYSCALL_BIT + 462)
678
+#define __NR_setxattrat (__X32_SYSCALL_BIT + 463)
679
+#define __NR_getxattrat (__X32_SYSCALL_BIT + 464)
680
+#define __NR_listxattrat (__X32_SYSCALL_BIT + 465)
681
+#define __NR_removexattrat (__X32_SYSCALL_BIT + 466)
682
#define __NR_rt_sigaction (__X32_SYSCALL_BIT + 512)
683
#define __NR_rt_sigreturn (__X32_SYSCALL_BIT + 513)
684
#define __NR_ioctl (__X32_SYSCALL_BIT + 514)
685
diff --git a/linux-headers/linux/iommufd.h b/linux-headers/linux/iommufd.h
686
index XXXXXXX..XXXXXXX 100644
687
--- a/linux-headers/linux/iommufd.h
688
+++ b/linux-headers/linux/iommufd.h
689
@@ -XXX,XX +XXX,XX @@ enum {
690
    IOMMUFD_CMD_HWPT_GET_DIRTY_BITMAP = 0x8c,
691
    IOMMUFD_CMD_HWPT_INVALIDATE = 0x8d,
692
    IOMMUFD_CMD_FAULT_QUEUE_ALLOC = 0x8e,
693
+    IOMMUFD_CMD_IOAS_MAP_FILE = 0x8f,
694
+    IOMMUFD_CMD_VIOMMU_ALLOC = 0x90,
695
+    IOMMUFD_CMD_VDEVICE_ALLOC = 0x91,
696
+    IOMMUFD_CMD_IOAS_CHANGE_PROCESS = 0x92,
697
};
698
699
/**
700
@@ -XXX,XX +XXX,XX @@ struct iommu_ioas_map {
701
};
702
#define IOMMU_IOAS_MAP _IO(IOMMUFD_TYPE, IOMMUFD_CMD_IOAS_MAP)
703
704
+/**
705
+ * struct iommu_ioas_map_file - ioctl(IOMMU_IOAS_MAP_FILE)
706
+ * @size: sizeof(struct iommu_ioas_map_file)
707
+ * @flags: same as for iommu_ioas_map
708
+ * @ioas_id: same as for iommu_ioas_map
709
+ * @fd: the memfd to map
710
+ * @start: byte offset from start of file to map from
711
+ * @length: same as for iommu_ioas_map
712
+ * @iova: same as for iommu_ioas_map
713
+ *
714
+ * Set an IOVA mapping from a memfd file. All other arguments and semantics
715
+ * match those of IOMMU_IOAS_MAP.
716
+ */
717
+struct iommu_ioas_map_file {
718
+    __u32 size;
719
+    __u32 flags;
720
+    __u32 ioas_id;
721
+    __s32 fd;
722
+    __aligned_u64 start;
723
+    __aligned_u64 length;
724
+    __aligned_u64 iova;
725
+};
726
+#define IOMMU_IOAS_MAP_FILE _IO(IOMMUFD_TYPE, IOMMUFD_CMD_IOAS_MAP_FILE)
727
+
728
/**
729
* struct iommu_ioas_copy - ioctl(IOMMU_IOAS_COPY)
730
* @size: sizeof(struct iommu_ioas_copy)
731
@@ -XXX,XX +XXX,XX @@ struct iommu_vfio_ioas {
732
* enforced on device attachment
733
* @IOMMU_HWPT_FAULT_ID_VALID: The fault_id field of hwpt allocation data is
734
* valid.
735
+ * @IOMMU_HWPT_ALLOC_PASID: Requests a domain that can be used with PASID. The
736
+ * domain can be attached to any PASID on the device.
737
+ * Any domain attached to the non-PASID part of the
738
+ * device must also be flaged, otherwise attaching a
739
+ * PASID will blocked.
740
+ * If IOMMU does not support PASID it will return
741
+ * error (-EOPNOTSUPP).
742
*/
743
enum iommufd_hwpt_alloc_flags {
744
    IOMMU_HWPT_ALLOC_NEST_PARENT = 1 << 0,
745
    IOMMU_HWPT_ALLOC_DIRTY_TRACKING = 1 << 1,
746
    IOMMU_HWPT_FAULT_ID_VALID = 1 << 2,
747
+    IOMMU_HWPT_ALLOC_PASID = 1 << 3,
748
};
749
750
/**
751
@@ -XXX,XX +XXX,XX @@ struct iommu_hwpt_vtd_s1 {
752
    __u32 __reserved;
753
};
754
755
+/**
756
+ * struct iommu_hwpt_arm_smmuv3 - ARM SMMUv3 nested STE
757
+ * (IOMMU_HWPT_DATA_ARM_SMMUV3)
758
+ *
759
+ * @ste: The first two double words of the user space Stream Table Entry for
760
+ * the translation. Must be little-endian.
761
+ * Allowed fields: (Refer to "5.2 Stream Table Entry" in SMMUv3 HW Spec)
762
+ * - word-0: V, Cfg, S1Fmt, S1ContextPtr, S1CDMax
763
+ * - word-1: EATS, S1DSS, S1CIR, S1COR, S1CSH, S1STALLD
764
+ *
765
+ * -EIO will be returned if @ste is not legal or contains any non-allowed field.
766
+ * Cfg can be used to select a S1, Bypass or Abort configuration. A Bypass
767
+ * nested domain will translate the same as the nesting parent. The S1 will
768
+ * install a Context Descriptor Table pointing at userspace memory translated
769
+ * by the nesting parent.
770
+ */
771
+struct iommu_hwpt_arm_smmuv3 {
772
+    __aligned_le64 ste[2];
773
+};
774
+
775
/**
776
* enum iommu_hwpt_data_type - IOMMU HWPT Data Type
777
* @IOMMU_HWPT_DATA_NONE: no data
778
* @IOMMU_HWPT_DATA_VTD_S1: Intel VT-d stage-1 page table
779
+ * @IOMMU_HWPT_DATA_ARM_SMMUV3: ARM SMMUv3 Context Descriptor Table
780
*/
781
enum iommu_hwpt_data_type {
782
    IOMMU_HWPT_DATA_NONE = 0,
783
    IOMMU_HWPT_DATA_VTD_S1 = 1,
784
+    IOMMU_HWPT_DATA_ARM_SMMUV3 = 2,
785
};
786
787
/**
788
@@ -XXX,XX +XXX,XX @@ enum iommu_hwpt_data_type {
789
* @size: sizeof(struct iommu_hwpt_alloc)
790
* @flags: Combination of enum iommufd_hwpt_alloc_flags
791
* @dev_id: The device to allocate this HWPT for
792
- * @pt_id: The IOAS or HWPT to connect this HWPT to
793
+ * @pt_id: The IOAS or HWPT or vIOMMU to connect this HWPT to
794
* @out_hwpt_id: The ID of the new HWPT
795
* @__reserved: Must be 0
796
* @data_type: One of enum iommu_hwpt_data_type
797
@@ -XXX,XX +XXX,XX @@ enum iommu_hwpt_data_type {
798
* IOMMU_HWPT_DATA_NONE. The HWPT can be allocated as a parent HWPT for a
799
* nesting configuration by passing IOMMU_HWPT_ALLOC_NEST_PARENT via @flags.
800
*
801
- * A user-managed nested HWPT will be created from a given parent HWPT via
802
- * @pt_id, in which the parent HWPT must be allocated previously via the
803
- * same ioctl from a given IOAS (@pt_id). In this case, the @data_type
804
- * must be set to a pre-defined type corresponding to an I/O page table
805
- * type supported by the underlying IOMMU hardware.
806
+ * A user-managed nested HWPT will be created from a given vIOMMU (wrapping a
807
+ * parent HWPT) or a parent HWPT via @pt_id, in which the parent HWPT must be
808
+ * allocated previously via the same ioctl from a given IOAS (@pt_id). In this
809
+ * case, the @data_type must be set to a pre-defined type corresponding to an
810
+ * I/O page table type supported by the underlying IOMMU hardware. The device
811
+ * via @dev_id and the vIOMMU via @pt_id must be associated to the same IOMMU
812
+ * instance.
813
*
814
* If the @data_type is set to IOMMU_HWPT_DATA_NONE, @data_len and
815
* @data_uptr should be zero. Otherwise, both @data_len and @data_uptr
816
@@ -XXX,XX +XXX,XX @@ struct iommu_hw_info_vtd {
817
    __aligned_u64 ecap_reg;
818
};
819
820
+/**
821
+ * struct iommu_hw_info_arm_smmuv3 - ARM SMMUv3 hardware information
822
+ * (IOMMU_HW_INFO_TYPE_ARM_SMMUV3)
823
+ *
824
+ * @flags: Must be set to 0
825
+ * @__reserved: Must be 0
826
+ * @idr: Implemented features for ARM SMMU Non-secure programming interface
827
+ * @iidr: Information about the implementation and implementer of ARM SMMU,
828
+ * and architecture version supported
829
+ * @aidr: ARM SMMU architecture version
830
+ *
831
+ * For the details of @idr, @iidr and @aidr, please refer to the chapters
832
+ * from 6.3.1 to 6.3.6 in the SMMUv3 Spec.
833
+ *
834
+ * User space should read the underlying ARM SMMUv3 hardware information for
835
+ * the list of supported features.
836
+ *
837
+ * Note that these values reflect the raw HW capability, without any insight if
838
+ * any required kernel driver support is present. Bits may be set indicating the
839
+ * HW has functionality that is lacking kernel software support, such as BTM. If
840
+ * a VMM is using this information to construct emulated copies of these
841
+ * registers it should only forward bits that it knows it can support.
842
+ *
843
+ * In future, presence of required kernel support will be indicated in flags.
844
+ */
845
+struct iommu_hw_info_arm_smmuv3 {
846
+    __u32 flags;
847
+    __u32 __reserved;
848
+    __u32 idr[6];
849
+    __u32 iidr;
850
+    __u32 aidr;
851
+};
852
+
853
/**
854
* enum iommu_hw_info_type - IOMMU Hardware Info Types
855
* @IOMMU_HW_INFO_TYPE_NONE: Used by the drivers that do not report hardware
856
* info
857
* @IOMMU_HW_INFO_TYPE_INTEL_VTD: Intel VT-d iommu info type
858
+ * @IOMMU_HW_INFO_TYPE_ARM_SMMUV3: ARM SMMUv3 iommu info type
859
*/
860
enum iommu_hw_info_type {
861
    IOMMU_HW_INFO_TYPE_NONE = 0,
862
    IOMMU_HW_INFO_TYPE_INTEL_VTD = 1,
863
+    IOMMU_HW_INFO_TYPE_ARM_SMMUV3 = 2,
864
};
865
866
/**
867
@@ -XXX,XX +XXX,XX @@ struct iommu_hwpt_get_dirty_bitmap {
868
* enum iommu_hwpt_invalidate_data_type - IOMMU HWPT Cache Invalidation
869
* Data Type
870
* @IOMMU_HWPT_INVALIDATE_DATA_VTD_S1: Invalidation data for VTD_S1
871
+ * @IOMMU_VIOMMU_INVALIDATE_DATA_ARM_SMMUV3: Invalidation data for ARM SMMUv3
872
*/
873
enum iommu_hwpt_invalidate_data_type {
874
    IOMMU_HWPT_INVALIDATE_DATA_VTD_S1 = 0,
875
+    IOMMU_VIOMMU_INVALIDATE_DATA_ARM_SMMUV3 = 1,
876
};
877
878
/**
879
@@ -XXX,XX +XXX,XX @@ struct iommu_hwpt_vtd_s1_invalidate {
880
    __u32 __reserved;
881
};
882
883
+/**
884
+ * struct iommu_viommu_arm_smmuv3_invalidate - ARM SMMUv3 cahce invalidation
885
+ * (IOMMU_VIOMMU_INVALIDATE_DATA_ARM_SMMUV3)
886
+ * @cmd: 128-bit cache invalidation command that runs in SMMU CMDQ.
887
+ * Must be little-endian.
888
+ *
889
+ * Supported command list only when passing in a vIOMMU via @hwpt_id:
890
+ * CMDQ_OP_TLBI_NSNH_ALL
891
+ * CMDQ_OP_TLBI_NH_VA
892
+ * CMDQ_OP_TLBI_NH_VAA
893
+ * CMDQ_OP_TLBI_NH_ALL
894
+ * CMDQ_OP_TLBI_NH_ASID
895
+ * CMDQ_OP_ATC_INV
896
+ * CMDQ_OP_CFGI_CD
897
+ * CMDQ_OP_CFGI_CD_ALL
898
+ *
899
+ * -EIO will be returned if the command is not supported.
900
+ */
901
+struct iommu_viommu_arm_smmuv3_invalidate {
902
+    __aligned_le64 cmd[2];
903
+};
904
+
905
/**
906
* struct iommu_hwpt_invalidate - ioctl(IOMMU_HWPT_INVALIDATE)
907
* @size: sizeof(struct iommu_hwpt_invalidate)
908
- * @hwpt_id: ID of a nested HWPT for cache invalidation
909
+ * @hwpt_id: ID of a nested HWPT or a vIOMMU, for cache invalidation
910
* @data_uptr: User pointer to an array of driver-specific cache invalidation
911
* data.
912
* @data_type: One of enum iommu_hwpt_invalidate_data_type, defining the data
913
@@ -XXX,XX +XXX,XX @@ struct iommu_hwpt_vtd_s1_invalidate {
914
* Output the number of requests successfully handled by kernel.
915
* @__reserved: Must be 0.
916
*
917
- * Invalidate the iommu cache for user-managed page table. Modifications on a
918
- * user-managed page table should be followed by this operation to sync cache.
919
+ * Invalidate iommu cache for user-managed page table or vIOMMU. Modifications
920
+ * on a user-managed page table should be followed by this operation, if a HWPT
921
+ * is passed in via @hwpt_id. Other caches, such as device cache or descriptor
922
+ * cache can be flushed if a vIOMMU is passed in via the @hwpt_id field.
923
+ *
924
* Each ioctl can support one or more cache invalidation requests in the array
925
* that has a total size of @entry_len * @entry_num.
926
*
927
@@ -XXX,XX +XXX,XX @@ struct iommu_fault_alloc {
928
    __u32 out_fault_fd;
929
};
930
#define IOMMU_FAULT_QUEUE_ALLOC _IO(IOMMUFD_TYPE, IOMMUFD_CMD_FAULT_QUEUE_ALLOC)
931
+
932
+/**
933
+ * enum iommu_viommu_type - Virtual IOMMU Type
934
+ * @IOMMU_VIOMMU_TYPE_DEFAULT: Reserved for future use
935
+ * @IOMMU_VIOMMU_TYPE_ARM_SMMUV3: ARM SMMUv3 driver specific type
936
+ */
937
+enum iommu_viommu_type {
938
+    IOMMU_VIOMMU_TYPE_DEFAULT = 0,
939
+    IOMMU_VIOMMU_TYPE_ARM_SMMUV3 = 1,
940
+};
941
+
942
+/**
943
+ * struct iommu_viommu_alloc - ioctl(IOMMU_VIOMMU_ALLOC)
944
+ * @size: sizeof(struct iommu_viommu_alloc)
945
+ * @flags: Must be 0
946
+ * @type: Type of the virtual IOMMU. Must be defined in enum iommu_viommu_type
947
+ * @dev_id: The device's physical IOMMU will be used to back the virtual IOMMU
948
+ * @hwpt_id: ID of a nesting parent HWPT to associate to
949
+ * @out_viommu_id: Output virtual IOMMU ID for the allocated object
950
+ *
951
+ * Allocate a virtual IOMMU object, representing the underlying physical IOMMU's
952
+ * virtualization support that is a security-isolated slice of the real IOMMU HW
953
+ * that is unique to a specific VM. Operations global to the IOMMU are connected
954
+ * to the vIOMMU, such as:
955
+ * - Security namespace for guest owned ID, e.g. guest-controlled cache tags
956
+ * - Non-device-affiliated event reporting, e.g. invalidation queue errors
957
+ * - Access to a sharable nesting parent pagetable across physical IOMMUs
958
+ * - Virtualization of various platforms IDs, e.g. RIDs and others
959
+ * - Delivery of paravirtualized invalidation
960
+ * - Direct assigned invalidation queues
961
+ * - Direct assigned interrupts
962
+ */
963
+struct iommu_viommu_alloc {
964
+    __u32 size;
965
+    __u32 flags;
966
+    __u32 type;
967
+    __u32 dev_id;
968
+    __u32 hwpt_id;
969
+    __u32 out_viommu_id;
970
+};
971
+#define IOMMU_VIOMMU_ALLOC _IO(IOMMUFD_TYPE, IOMMUFD_CMD_VIOMMU_ALLOC)
972
+
973
+/**
974
+ * struct iommu_vdevice_alloc - ioctl(IOMMU_VDEVICE_ALLOC)
975
+ * @size: sizeof(struct iommu_vdevice_alloc)
976
+ * @viommu_id: vIOMMU ID to associate with the virtual device
977
+ * @dev_id: The physical device to allocate a virtual instance on the vIOMMU
978
+ * @out_vdevice_id: Object handle for the vDevice. Pass to IOMMU_DESTORY
979
+ * @virt_id: Virtual device ID per vIOMMU, e.g. vSID of ARM SMMUv3, vDeviceID
980
+ * of AMD IOMMU, and vRID of a nested Intel VT-d to a Context Table
981
+ *
982
+ * Allocate a virtual device instance (for a physical device) against a vIOMMU.
983
+ * This instance holds the device's information (related to its vIOMMU) in a VM.
984
+ */
985
+struct iommu_vdevice_alloc {
986
+    __u32 size;
987
+    __u32 viommu_id;
988
+    __u32 dev_id;
989
+    __u32 out_vdevice_id;
990
+    __aligned_u64 virt_id;
991
+};
992
+#define IOMMU_VDEVICE_ALLOC _IO(IOMMUFD_TYPE, IOMMUFD_CMD_VDEVICE_ALLOC)
993
+
994
+/**
995
+ * struct iommu_ioas_change_process - ioctl(VFIO_IOAS_CHANGE_PROCESS)
996
+ * @size: sizeof(struct iommu_ioas_change_process)
997
+ * @__reserved: Must be 0
998
+ *
999
+ * This transfers pinned memory counts for every memory map in every IOAS
1000
+ * in the context to the current process. This only supports maps created
1001
+ * with IOMMU_IOAS_MAP_FILE, and returns EINVAL if other maps are present.
1002
+ * If the ioctl returns a failure status, then nothing is changed.
1003
+ *
1004
+ * This API is useful for transferring operation of a device from one process
1005
+ * to another, such as during userland live update.
1006
+ */
1007
+struct iommu_ioas_change_process {
1008
+    __u32 size;
1009
+    __u32 __reserved;
1010
+};
1011
+
1012
+#define IOMMU_IOAS_CHANGE_PROCESS \
1013
+    _IO(IOMMUFD_TYPE, IOMMUFD_CMD_IOAS_CHANGE_PROCESS)
1014
+
1015
#endif
1016
diff --git a/linux-headers/linux/kvm.h b/linux-headers/linux/kvm.h
1017
index XXXXXXX..XXXXXXX 100644
1018
--- a/linux-headers/linux/kvm.h
1019
+++ b/linux-headers/linux/kvm.h
1020
@@ -XXX,XX +XXX,XX @@ enum kvm_device_type {
1021
#define KVM_DEV_TYPE_ARM_PV_TIME    KVM_DEV_TYPE_ARM_PV_TIME
1022
    KVM_DEV_TYPE_RISCV_AIA,
1023
#define KVM_DEV_TYPE_RISCV_AIA        KVM_DEV_TYPE_RISCV_AIA
1024
+    KVM_DEV_TYPE_LOONGARCH_IPI,
1025
+#define KVM_DEV_TYPE_LOONGARCH_IPI    KVM_DEV_TYPE_LOONGARCH_IPI
1026
+    KVM_DEV_TYPE_LOONGARCH_EIOINTC,
1027
+#define KVM_DEV_TYPE_LOONGARCH_EIOINTC    KVM_DEV_TYPE_LOONGARCH_EIOINTC
1028
+    KVM_DEV_TYPE_LOONGARCH_PCHPIC,
1029
+#define KVM_DEV_TYPE_LOONGARCH_PCHPIC    KVM_DEV_TYPE_LOONGARCH_PCHPIC
1030
+
1031
    KVM_DEV_TYPE_MAX,
1032
+
1033
};
1034
1035
struct kvm_vfio_spapr_tce {
1036
diff --git a/linux-headers/linux/psci.h b/linux-headers/linux/psci.h
1037
index XXXXXXX..XXXXXXX 100644
1038
--- a/linux-headers/linux/psci.h
1039
+++ b/linux-headers/linux/psci.h
1040
@@ -XXX,XX +XXX,XX @@
1041
#define PSCI_1_1_FN_SYSTEM_RESET2        PSCI_0_2_FN(18)
1042
#define PSCI_1_1_FN_MEM_PROTECT            PSCI_0_2_FN(19)
1043
#define PSCI_1_1_FN_MEM_PROTECT_CHECK_RANGE    PSCI_0_2_FN(20)
1044
+#define PSCI_1_3_FN_SYSTEM_OFF2            PSCI_0_2_FN(21)
1045
1046
#define PSCI_1_0_FN64_CPU_DEFAULT_SUSPEND    PSCI_0_2_FN64(12)
1047
#define PSCI_1_0_FN64_NODE_HW_STATE        PSCI_0_2_FN64(13)
1048
@@ -XXX,XX +XXX,XX @@
1049
1050
#define PSCI_1_1_FN64_SYSTEM_RESET2        PSCI_0_2_FN64(18)
1051
#define PSCI_1_1_FN64_MEM_PROTECT_CHECK_RANGE    PSCI_0_2_FN64(20)
1052
+#define PSCI_1_3_FN64_SYSTEM_OFF2        PSCI_0_2_FN64(21)
1053
1054
/* PSCI v0.2 power state encoding for CPU_SUSPEND function */
1055
#define PSCI_0_2_POWER_STATE_ID_MASK        0xffff
1056
@@ -XXX,XX +XXX,XX @@
1057
#define PSCI_1_1_RESET_TYPE_SYSTEM_WARM_RESET    0
1058
#define PSCI_1_1_RESET_TYPE_VENDOR_START    0x80000000U
1059
1060
+/* PSCI v1.3 hibernate type for SYSTEM_OFF2 */
1061
+#define PSCI_1_3_OFF_TYPE_HIBERNATE_OFF        BIT(0)
1062
+
1063
/* PSCI version decoding (independent of PSCI version) */
1064
#define PSCI_VERSION_MAJOR_SHIFT        16
1065
#define PSCI_VERSION_MINOR_MASK            \
1066
diff --git a/linux-headers/linux/vfio.h b/linux-headers/linux/vfio.h
1067
index XXXXXXX..XXXXXXX 100644
1068
--- a/linux-headers/linux/vfio.h
1069
+++ b/linux-headers/linux/vfio.h
1070
@@ -XXX,XX +XXX,XX @@
1071
#define VFIO_EEH            5
1072
1073
/* Two-stage IOMMU */
1074
-#define VFIO_TYPE1_NESTING_IOMMU    6    /* Implies v2 */
1075
+#define __VFIO_RESERVED_TYPE1_NESTING_IOMMU    6    /* Implies v2 */
1076
1077
#define VFIO_SPAPR_TCE_v2_IOMMU        7
1078
1079
--
1080
2.43.5
diff view generated by jsdifflib
1
The Concurrent-functions facility introduces the new instruction
1
The Concurrent-functions facility introduces the new instruction
2
Perform Functions with Concurrent Results (PFCR) with few subfunctions.
2
Perform Functions with Concurrent Results (PFCR) with few subfunctions.
3
3
4
Signed-off-by: Hendrik Brueckner <brueckner@linux.ibm.com>
4
Signed-off-by: Hendrik Brueckner <brueckner@linux.ibm.com>
5
---
5
---
6
linux-headers/asm-s390/kvm.h | 3 ++-
7
target/s390x/cpu_features.c | 2 ++
6
target/s390x/cpu_features.c | 2 ++
8
target/s390x/cpu_features.h | 1 +
7
target/s390x/cpu_features.h | 1 +
9
target/s390x/cpu_features_def.h.inc | 8 ++++++++
8
target/s390x/cpu_features_def.h.inc | 8 ++++++++
10
target/s390x/cpu_models.c | 5 +++++
9
target/s390x/cpu_models.c | 5 +++++
11
target/s390x/gen-features.c | 13 +++++++++++++
10
target/s390x/gen-features.c | 13 +++++++++++++
12
target/s390x/kvm/kvm.c | 6 ++++++
11
target/s390x/kvm/kvm.c | 6 ++++++
13
7 files changed, 37 insertions(+), 1 deletion(-)
12
6 files changed, 35 insertions(+)
14
13
15
diff --git a/linux-headers/asm-s390/kvm.h b/linux-headers/asm-s390/kvm.h
16
index XXXXXXX..XXXXXXX 100644
17
--- a/linux-headers/asm-s390/kvm.h
18
+++ b/linux-headers/asm-s390/kvm.h
19
@@ -XXX,XX +XXX,XX @@ struct kvm_s390_vm_cpu_subfunc {
20
    __u8 kdsa[16];        /* with MSA9 */
21
    __u8 sortl[32];        /* with STFLE.150 */
22
    __u8 dfltcc[32];    /* with STFLE.151 */
23
-    __u8 reserved[1728];
24
+    __u8 pfcr[16];        /* with STFLE.201 */
25
+    __u8 reserved[1712];
26
};
27
28
#define KVM_S390_VM_CPU_PROCESSOR_UV_FEAT_GUEST    6
29
diff --git a/target/s390x/cpu_features.c b/target/s390x/cpu_features.c
14
diff --git a/target/s390x/cpu_features.c b/target/s390x/cpu_features.c
30
index XXXXXXX..XXXXXXX 100644
15
index XXXXXXX..XXXXXXX 100644
31
--- a/target/s390x/cpu_features.c
16
--- a/target/s390x/cpu_features.c
32
+++ b/target/s390x/cpu_features.c
17
+++ b/target/s390x/cpu_features.c
33
@@ -XXX,XX +XXX,XX @@ void s390_fill_feat_block(const S390FeatBitmap features, S390FeatType type,
18
@@ -XXX,XX +XXX,XX @@ void s390_fill_feat_block(const S390FeatBitmap features, S390FeatType type,
...
...
diff view generated by jsdifflib
1
The Vector Enhancements facility 3 introduces new instructions and
1
The Vector Enhancements facility 3 introduces new instructions and
2
extends support for doubleword/quadword elements.
2
extends support for doubleword/quadword elements.
3
3
4
Signed-off-by: Hendrik Brueckner <brueckner@linux.ibm.com>
4
Signed-off-by: Hendrik Brueckner <brueckner@linux.ibm.com>
5
---
5
---
6
target/s390x/cpu_features_def.h.inc | 1 +
6
target/s390x/cpu_features_def.h.inc | 1 +
7
target/s390x/cpu_models.c | 2 ++
7
target/s390x/cpu_models.c | 2 ++
8
2 files changed, 3 insertions(+)
8
2 files changed, 3 insertions(+)
9
9
10
diff --git a/target/s390x/cpu_features_def.h.inc b/target/s390x/cpu_features_def.h.inc
10
diff --git a/target/s390x/cpu_features_def.h.inc b/target/s390x/cpu_features_def.h.inc
11
index XXXXXXX..XXXXXXX 100644
11
index XXXXXXX..XXXXXXX 100644
12
--- a/target/s390x/cpu_features_def.h.inc
12
--- a/target/s390x/cpu_features_def.h.inc
13
+++ b/target/s390x/cpu_features_def.h.inc
13
+++ b/target/s390x/cpu_features_def.h.inc
14
@@ -XXX,XX +XXX,XX @@ DEF_FEAT(BEAR_ENH, "beareh", STFL, 193, "BEAR-enhancement facility")
14
@@ -XXX,XX +XXX,XX @@ DEF_FEAT(BEAR_ENH, "beareh", STFL, 193, "BEAR-enhancement facility")
15
DEF_FEAT(RDP, "rdp", STFL, 194, "Reset-DAT-protection facility")
15
DEF_FEAT(RDP, "rdp", STFL, 194, "Reset-DAT-protection facility")
16
DEF_FEAT(PAI, "pai", STFL, 196, "Processor-Activity-Instrumentation facility")
16
DEF_FEAT(PAI, "pai", STFL, 196, "Processor-Activity-Instrumentation facility")
17
DEF_FEAT(PAIE, "paie", STFL, 197, "Processor-Activity-Instrumentation extension-1")
17
DEF_FEAT(PAIE, "paie", STFL, 197, "Processor-Activity-Instrumentation extension-1")
18
+DEF_FEAT(VECTOR_ENH3, "vxeh3", STFL, 198, "Vector Enhancements facility 3")
18
+DEF_FEAT(VECTOR_ENH3, "vxeh3", STFL, 198, "Vector Enhancements facility 3")
19
DEF_FEAT(CCF_BASE, "ccf-base", STFL, 201, "Concurrent-Functions facility")
19
DEF_FEAT(CCF_BASE, "ccf-base", STFL, 201, "Concurrent-Functions facility")
20
20
21
/* Features exposed via SCLP SCCB Byte 80 - 98 (bit numbers relative to byte-80) */
21
/* Features exposed via SCLP SCCB Byte 80 - 98 (bit numbers relative to byte-80) */
22
diff --git a/target/s390x/cpu_models.c b/target/s390x/cpu_models.c
22
diff --git a/target/s390x/cpu_models.c b/target/s390x/cpu_models.c
23
index XXXXXXX..XXXXXXX 100644
23
index XXXXXXX..XXXXXXX 100644
24
--- a/target/s390x/cpu_models.c
24
--- a/target/s390x/cpu_models.c
25
+++ b/target/s390x/cpu_models.c
25
+++ b/target/s390x/cpu_models.c
26
@@ -XXX,XX +XXX,XX @@ static void check_consistency(const S390CPUModel *model)
26
@@ -XXX,XX +XXX,XX @@ static void check_consistency(const S390CPUModel *model)
27
{ S390_FEAT_VECTOR_PACKED_DECIMAL_ENH, S390_FEAT_VECTOR_PACKED_DECIMAL },
27
{ S390_FEAT_VECTOR_PACKED_DECIMAL_ENH, S390_FEAT_VECTOR_PACKED_DECIMAL },
28
{ S390_FEAT_VECTOR_PACKED_DECIMAL_ENH2, S390_FEAT_VECTOR_PACKED_DECIMAL_ENH },
28
{ S390_FEAT_VECTOR_PACKED_DECIMAL_ENH2, S390_FEAT_VECTOR_PACKED_DECIMAL_ENH },
29
{ S390_FEAT_VECTOR_ENH, S390_FEAT_VECTOR },
29
{ S390_FEAT_VECTOR_ENH, S390_FEAT_VECTOR },
30
+ { S390_FEAT_VECTOR_ENH2, S390_FEAT_VECTOR_ENH },
30
+ { S390_FEAT_VECTOR_ENH2, S390_FEAT_VECTOR_ENH },
31
+ { S390_FEAT_VECTOR_ENH3, S390_FEAT_VECTOR_ENH2 },
31
+ { S390_FEAT_VECTOR_ENH3, S390_FEAT_VECTOR_ENH2 },
32
{ S390_FEAT_INSTRUCTION_EXEC_PROT, S390_FEAT_SIDE_EFFECT_ACCESS_ESOP2 },
32
{ S390_FEAT_INSTRUCTION_EXEC_PROT, S390_FEAT_SIDE_EFFECT_ACCESS_ESOP2 },
33
{ S390_FEAT_SIDE_EFFECT_ACCESS_ESOP2, S390_FEAT_ESOP },
33
{ S390_FEAT_SIDE_EFFECT_ACCESS_ESOP2, S390_FEAT_ESOP },
34
{ S390_FEAT_CMM_NT, S390_FEAT_CMM },
34
{ S390_FEAT_CMM_NT, S390_FEAT_CMM },
35
--
35
--
36
2.43.5
36
2.43.5
diff view generated by jsdifflib
1
This facility introduces few new instructions.
1
This facility introduces few new instructions.
2
2
3
Signed-off-by: Hendrik Brueckner <brueckner@linux.ibm.com>
3
Signed-off-by: Hendrik Brueckner <brueckner@linux.ibm.com>
4
---
4
---
5
target/s390x/cpu_features_def.h.inc | 1 +
5
target/s390x/cpu_features_def.h.inc | 1 +
6
1 file changed, 1 insertion(+)
6
1 file changed, 1 insertion(+)
7
7
8
diff --git a/target/s390x/cpu_features_def.h.inc b/target/s390x/cpu_features_def.h.inc
8
diff --git a/target/s390x/cpu_features_def.h.inc b/target/s390x/cpu_features_def.h.inc
9
index XXXXXXX..XXXXXXX 100644
9
index XXXXXXX..XXXXXXX 100644
10
--- a/target/s390x/cpu_features_def.h.inc
10
--- a/target/s390x/cpu_features_def.h.inc
11
+++ b/target/s390x/cpu_features_def.h.inc
11
+++ b/target/s390x/cpu_features_def.h.inc
12
@@ -XXX,XX +XXX,XX @@ DEF_FEAT(EDAT_2, "edat2", STFL, 78, "Enhanced-DAT facility 2")
12
@@ -XXX,XX +XXX,XX @@ DEF_FEAT(EDAT_2, "edat2", STFL, 78, "Enhanced-DAT facility 2")
13
DEF_FEAT(DFP_PACKED_CONVERSION, "dfppc", STFL, 80, "Decimal-floating-point packed-conversion facility")
13
DEF_FEAT(DFP_PACKED_CONVERSION, "dfppc", STFL, 80, "Decimal-floating-point packed-conversion facility")
14
DEF_FEAT(PPA15, "ppa15", STFL, 81, "PPA15 is installed")
14
DEF_FEAT(PPA15, "ppa15", STFL, 81, "PPA15 is installed")
15
DEF_FEAT(BPB, "bpb", STFL, 82, "Branch prediction blocking")
15
DEF_FEAT(BPB, "bpb", STFL, 82, "Branch prediction blocking")
16
+DEF_FEAT(MISC_INSTRUCTION_EXT4, "minste4", STFL, 84, "Miscellaneous-Instruction-Extensions Facility 4")
16
+DEF_FEAT(MISC_INSTRUCTION_EXT4, "minste4", STFL, 84, "Miscellaneous-Instruction-Extensions Facility 4")
17
DEF_FEAT(MSA_EXT_12, "msa12-base", STFL, 86, "Message-security-assist-extension-12 facility (excluding subfunctions)")
17
DEF_FEAT(MSA_EXT_12, "msa12-base", STFL, 86, "Message-security-assist-extension-12 facility (excluding subfunctions)")
18
DEF_FEAT(VECTOR, "vx", STFL, 129, "Vector facility")
18
DEF_FEAT(VECTOR, "vx", STFL, 129, "Vector facility")
19
DEF_FEAT(INSTRUCTION_EXEC_PROT, "iep", STFL, 130, "Instruction-execution-protection facility")
19
DEF_FEAT(INSTRUCTION_EXEC_PROT, "iep", STFL, 130, "Instruction-execution-protection facility")
20
--
20
--
21
2.43.5
21
2.43.5
diff view generated by jsdifflib
1
This facility introduces new capabilities for the signed-pack-decimal
1
This facility introduces new capabilities for the signed-pack-decimal
2
format.
2
format.
3
3
4
Signed-off-by: Hendrik Brueckner <brueckner@linux.ibm.com>
4
Signed-off-by: Hendrik Brueckner <brueckner@linux.ibm.com>
5
---
5
---
6
target/s390x/cpu_features_def.h.inc | 1 +
6
target/s390x/cpu_features_def.h.inc | 1 +
7
target/s390x/cpu_models.c | 1 +
7
target/s390x/cpu_models.c | 1 +
8
2 files changed, 2 insertions(+)
8
2 files changed, 2 insertions(+)
9
9
10
diff --git a/target/s390x/cpu_features_def.h.inc b/target/s390x/cpu_features_def.h.inc
10
diff --git a/target/s390x/cpu_features_def.h.inc b/target/s390x/cpu_features_def.h.inc
11
index XXXXXXX..XXXXXXX 100644
11
index XXXXXXX..XXXXXXX 100644
12
--- a/target/s390x/cpu_features_def.h.inc
12
--- a/target/s390x/cpu_features_def.h.inc
13
+++ b/target/s390x/cpu_features_def.h.inc
13
+++ b/target/s390x/cpu_features_def.h.inc
14
@@ -XXX,XX +XXX,XX @@ DEF_FEAT(RDP, "rdp", STFL, 194, "Reset-DAT-protection facility")
14
@@ -XXX,XX +XXX,XX @@ DEF_FEAT(RDP, "rdp", STFL, 194, "Reset-DAT-protection facility")
15
DEF_FEAT(PAI, "pai", STFL, 196, "Processor-Activity-Instrumentation facility")
15
DEF_FEAT(PAI, "pai", STFL, 196, "Processor-Activity-Instrumentation facility")
16
DEF_FEAT(PAIE, "paie", STFL, 197, "Processor-Activity-Instrumentation extension-1")
16
DEF_FEAT(PAIE, "paie", STFL, 197, "Processor-Activity-Instrumentation extension-1")
17
DEF_FEAT(VECTOR_ENH3, "vxeh3", STFL, 198, "Vector Enhancements facility 3")
17
DEF_FEAT(VECTOR_ENH3, "vxeh3", STFL, 198, "Vector Enhancements facility 3")
18
+DEF_FEAT(VECTOR_PACKED_DECIMAL_ENH3, "vxpdeh3", STFL, 199, "Vector-Packed-Decimal-Enhancement facility 3")
18
+DEF_FEAT(VECTOR_PACKED_DECIMAL_ENH3, "vxpdeh3", STFL, 199, "Vector-Packed-Decimal-Enhancement facility 3")
19
DEF_FEAT(CCF_BASE, "ccf-base", STFL, 201, "Concurrent-Functions facility")
19
DEF_FEAT(CCF_BASE, "ccf-base", STFL, 201, "Concurrent-Functions facility")
20
20
21
/* Features exposed via SCLP SCCB Byte 80 - 98 (bit numbers relative to byte-80) */
21
/* Features exposed via SCLP SCCB Byte 80 - 98 (bit numbers relative to byte-80) */
22
diff --git a/target/s390x/cpu_models.c b/target/s390x/cpu_models.c
22
diff --git a/target/s390x/cpu_models.c b/target/s390x/cpu_models.c
23
index XXXXXXX..XXXXXXX 100644
23
index XXXXXXX..XXXXXXX 100644
24
--- a/target/s390x/cpu_models.c
24
--- a/target/s390x/cpu_models.c
25
+++ b/target/s390x/cpu_models.c
25
+++ b/target/s390x/cpu_models.c
26
@@ -XXX,XX +XXX,XX @@ static void check_consistency(const S390CPUModel *model)
26
@@ -XXX,XX +XXX,XX @@ static void check_consistency(const S390CPUModel *model)
27
{ S390_FEAT_VECTOR_PACKED_DECIMAL, S390_FEAT_VECTOR },
27
{ S390_FEAT_VECTOR_PACKED_DECIMAL, S390_FEAT_VECTOR },
28
{ S390_FEAT_VECTOR_PACKED_DECIMAL_ENH, S390_FEAT_VECTOR_PACKED_DECIMAL },
28
{ S390_FEAT_VECTOR_PACKED_DECIMAL_ENH, S390_FEAT_VECTOR_PACKED_DECIMAL },
29
{ S390_FEAT_VECTOR_PACKED_DECIMAL_ENH2, S390_FEAT_VECTOR_PACKED_DECIMAL_ENH },
29
{ S390_FEAT_VECTOR_PACKED_DECIMAL_ENH2, S390_FEAT_VECTOR_PACKED_DECIMAL_ENH },
30
+ { S390_FEAT_VECTOR_PACKED_DECIMAL_ENH3, S390_FEAT_VECTOR_PACKED_DECIMAL_ENH2 },
30
+ { S390_FEAT_VECTOR_PACKED_DECIMAL_ENH3, S390_FEAT_VECTOR_PACKED_DECIMAL_ENH2 },
31
{ S390_FEAT_VECTOR_ENH, S390_FEAT_VECTOR },
31
{ S390_FEAT_VECTOR_ENH, S390_FEAT_VECTOR },
32
{ S390_FEAT_VECTOR_ENH2, S390_FEAT_VECTOR_ENH },
32
{ S390_FEAT_VECTOR_ENH2, S390_FEAT_VECTOR_ENH },
33
{ S390_FEAT_VECTOR_ENH3, S390_FEAT_VECTOR_ENH2 },
33
{ S390_FEAT_VECTOR_ENH3, S390_FEAT_VECTOR_ENH2 },
34
--
34
--
35
2.43.5
35
2.43.5
diff view generated by jsdifflib
1
This facility indicates reduced support for noncontrained
1
This facility indicates reduced support for noncontrained
2
transactional-execution.
2
transactional-execution.
3
3
4
Signed-off-by: Hendrik Brueckner <brueckner@linux.ibm.com>
4
Signed-off-by: Hendrik Brueckner <brueckner@linux.ibm.com>
5
---
5
---
6
target/s390x/cpu_features_def.h.inc | 1 +
6
target/s390x/cpu_features_def.h.inc | 1 +
7
target/s390x/cpu_models.c | 1 +
7
target/s390x/cpu_models.c | 1 +
8
2 files changed, 2 insertions(+)
8
2 files changed, 2 insertions(+)
9
9
10
diff --git a/target/s390x/cpu_features_def.h.inc b/target/s390x/cpu_features_def.h.inc
10
diff --git a/target/s390x/cpu_features_def.h.inc b/target/s390x/cpu_features_def.h.inc
11
index XXXXXXX..XXXXXXX 100644
11
index XXXXXXX..XXXXXXX 100644
12
--- a/target/s390x/cpu_features_def.h.inc
12
--- a/target/s390x/cpu_features_def.h.inc
13
+++ b/target/s390x/cpu_features_def.h.inc
13
+++ b/target/s390x/cpu_features_def.h.inc
14
@@ -XXX,XX +XXX,XX @@ DEF_FEAT(MSA_EXT_9, "msa9-base", STFL, 155, "Message-security-assist-extension-9
14
@@ -XXX,XX +XXX,XX @@ DEF_FEAT(MSA_EXT_9, "msa9-base", STFL, 155, "Message-security-assist-extension-9
15
DEF_FEAT(ETOKEN, "etoken", STFL, 156, "Etoken facility")
15
DEF_FEAT(ETOKEN, "etoken", STFL, 156, "Etoken facility")
16
DEF_FEAT(UNPACK, "unpack", STFL, 161, "Unpack facility")
16
DEF_FEAT(UNPACK, "unpack", STFL, 161, "Unpack facility")
17
DEF_FEAT(NNPA, "nnpa", STFL, 165, "NNPA facility")
17
DEF_FEAT(NNPA, "nnpa", STFL, 165, "NNPA facility")
18
+DEF_FEAT(INEFF_NC_TX, "ineff_nc_tx", STFL, 170, "Ineffective-nonconstrained-transaction facility")
18
+DEF_FEAT(INEFF_NC_TX, "ineff_nc_tx", STFL, 170, "Ineffective-nonconstrained-transaction facility")
19
DEF_FEAT(VECTOR_PACKED_DECIMAL_ENH2, "vxpdeh2", STFL, 192, "Vector-Packed-Decimal-Enhancement facility 2")
19
DEF_FEAT(VECTOR_PACKED_DECIMAL_ENH2, "vxpdeh2", STFL, 192, "Vector-Packed-Decimal-Enhancement facility 2")
20
DEF_FEAT(BEAR_ENH, "beareh", STFL, 193, "BEAR-enhancement facility")
20
DEF_FEAT(BEAR_ENH, "beareh", STFL, 193, "BEAR-enhancement facility")
21
DEF_FEAT(RDP, "rdp", STFL, 194, "Reset-DAT-protection facility")
21
DEF_FEAT(RDP, "rdp", STFL, 194, "Reset-DAT-protection facility")
22
diff --git a/target/s390x/cpu_models.c b/target/s390x/cpu_models.c
22
diff --git a/target/s390x/cpu_models.c b/target/s390x/cpu_models.c
23
index XXXXXXX..XXXXXXX 100644
23
index XXXXXXX..XXXXXXX 100644
24
--- a/target/s390x/cpu_models.c
24
--- a/target/s390x/cpu_models.c
25
+++ b/target/s390x/cpu_models.c
25
+++ b/target/s390x/cpu_models.c
26
@@ -XXX,XX +XXX,XX @@ static void check_consistency(const S390CPUModel *model)
26
@@ -XXX,XX +XXX,XX @@ static void check_consistency(const S390CPUModel *model)
27
{ S390_FEAT_PFCR_CSDSTG, S390_FEAT_CCF_BASE },
27
{ S390_FEAT_PFCR_CSDSTG, S390_FEAT_CCF_BASE },
28
{ S390_FEAT_PFCR_CSTST, S390_FEAT_CCF_BASE },
28
{ S390_FEAT_PFCR_CSTST, S390_FEAT_CCF_BASE },
29
{ S390_FEAT_PFCR_CSTSTG, S390_FEAT_CCF_BASE },
29
{ S390_FEAT_PFCR_CSTSTG, S390_FEAT_CCF_BASE },
30
+ { S390_FEAT_INEFF_NC_TX, S390_FEAT_TRANSACTIONAL_EXE },
30
+ { S390_FEAT_INEFF_NC_TX, S390_FEAT_TRANSACTIONAL_EXE },
31
};
31
};
32
int i;
32
int i;
33
33
34
--
34
--
35
2.43.5
35
2.43.5
diff view generated by jsdifflib
1
The sequential instruction fetching facility provides few guarantees,
1
The sequential instruction fetching facility provides few guarantees,
2
for example, to avoid stop machine calls on enabling/disabling kprobes.
2
for example, to avoid stop machine calls on enabling/disabling kprobes.
3
3
4
Signed-off-by: Hendrik Brueckner <brueckner@linux.ibm.com>
4
Signed-off-by: Hendrik Brueckner <brueckner@linux.ibm.com>
5
---
5
---
6
target/s390x/cpu_features_def.h.inc | 1 +
6
target/s390x/cpu_features_def.h.inc | 1 +
7
1 file changed, 1 insertion(+)
7
1 file changed, 1 insertion(+)
8
8
9
diff --git a/target/s390x/cpu_features_def.h.inc b/target/s390x/cpu_features_def.h.inc
9
diff --git a/target/s390x/cpu_features_def.h.inc b/target/s390x/cpu_features_def.h.inc
10
index XXXXXXX..XXXXXXX 100644
10
index XXXXXXX..XXXXXXX 100644
11
--- a/target/s390x/cpu_features_def.h.inc
11
--- a/target/s390x/cpu_features_def.h.inc
12
+++ b/target/s390x/cpu_features_def.h.inc
12
+++ b/target/s390x/cpu_features_def.h.inc
13
@@ -XXX,XX +XXX,XX @@ DEF_FEAT(DFP_PACKED_CONVERSION, "dfppc", STFL, 80, "Decimal-floating-point packe
13
@@ -XXX,XX +XXX,XX @@ DEF_FEAT(DFP_PACKED_CONVERSION, "dfppc", STFL, 80, "Decimal-floating-point packe
14
DEF_FEAT(PPA15, "ppa15", STFL, 81, "PPA15 is installed")
14
DEF_FEAT(PPA15, "ppa15", STFL, 81, "PPA15 is installed")
15
DEF_FEAT(BPB, "bpb", STFL, 82, "Branch prediction blocking")
15
DEF_FEAT(BPB, "bpb", STFL, 82, "Branch prediction blocking")
16
DEF_FEAT(MISC_INSTRUCTION_EXT4, "minste4", STFL, 84, "Miscellaneous-Instruction-Extensions Facility 4")
16
DEF_FEAT(MISC_INSTRUCTION_EXT4, "minste4", STFL, 84, "Miscellaneous-Instruction-Extensions Facility 4")
17
+DEF_FEAT(SIF, "sif", STFL, 85, "Sequential-instruction-fetching facility")
17
+DEF_FEAT(SIF, "sif", STFL, 85, "Sequential-instruction-fetching facility")
18
DEF_FEAT(MSA_EXT_12, "msa12-base", STFL, 86, "Message-security-assist-extension-12 facility (excluding subfunctions)")
18
DEF_FEAT(MSA_EXT_12, "msa12-base", STFL, 86, "Message-security-assist-extension-12 facility (excluding subfunctions)")
19
DEF_FEAT(VECTOR, "vx", STFL, 129, "Vector facility")
19
DEF_FEAT(VECTOR, "vx", STFL, 129, "Vector facility")
20
DEF_FEAT(INSTRUCTION_EXEC_PROT, "iep", STFL, 130, "Instruction-execution-protection facility")
20
DEF_FEAT(INSTRUCTION_EXEC_PROT, "iep", STFL, 130, "Instruction-execution-protection facility")
21
--
21
--
22
2.43.5
22
2.43.5
diff view generated by jsdifflib
1
The PLO functions 0, 4, 8, 12, 16, and 20 use 32-bit registers
1
The PLO functions 0, 4, 8, 12, 16, and 20 use 32-bit registers
2
values. The plo-*gr variants use 64-bit instead and, thus, correct
2
values. The plo-*gr variants use 64-bit instead and, thus, correct
3
the wording.
3
the wording.
4
4
5
Signed-off-by: Hendrik Brueckner <brueckner@linux.ibm.com>
5
Signed-off-by: Hendrik Brueckner <brueckner@linux.ibm.com>
6
Reviewed-by: Janosch Frank <frankja@linux.ibm.com>
6
Reviewed-by: Janosch Frank <frankja@linux.ibm.com>
7
---
7
---
8
target/s390x/cpu_features_def.h.inc | 12 ++++++------
8
target/s390x/cpu_features_def.h.inc | 12 ++++++------
9
1 file changed, 6 insertions(+), 6 deletions(-)
9
1 file changed, 6 insertions(+), 6 deletions(-)
10
10
11
diff --git a/target/s390x/cpu_features_def.h.inc b/target/s390x/cpu_features_def.h.inc
11
diff --git a/target/s390x/cpu_features_def.h.inc b/target/s390x/cpu_features_def.h.inc
12
index XXXXXXX..XXXXXXX 100644
12
index XXXXXXX..XXXXXXX 100644
13
--- a/target/s390x/cpu_features_def.h.inc
13
--- a/target/s390x/cpu_features_def.h.inc
14
+++ b/target/s390x/cpu_features_def.h.inc
14
+++ b/target/s390x/cpu_features_def.h.inc
15
@@ -XXX,XX +XXX,XX @@ DEF_FEAT(AP, "ap", MISC, 0, "AP instructions installed")
15
@@ -XXX,XX +XXX,XX @@ DEF_FEAT(AP, "ap", MISC, 0, "AP instructions installed")
16
/* Features exposed via the PLO instruction. */
16
/* Features exposed via the PLO instruction. */
17
DEF_FEAT(PLO_CL, "plo-cl", PLO, 0, "PLO Compare and load (32 bit in general registers)")
17
DEF_FEAT(PLO_CL, "plo-cl", PLO, 0, "PLO Compare and load (32 bit in general registers)")
18
DEF_FEAT(PLO_CLG, "plo-clg", PLO, 1, "PLO Compare and load (64 bit in parameter list)")
18
DEF_FEAT(PLO_CLG, "plo-clg", PLO, 1, "PLO Compare and load (64 bit in parameter list)")
19
-DEF_FEAT(PLO_CLGR, "plo-clgr", PLO, 2, "PLO Compare and load (32 bit in general registers)")
19
-DEF_FEAT(PLO_CLGR, "plo-clgr", PLO, 2, "PLO Compare and load (32 bit in general registers)")
20
+DEF_FEAT(PLO_CLGR, "plo-clgr", PLO, 2, "PLO Compare and load (64 bit in general registers)")
20
+DEF_FEAT(PLO_CLGR, "plo-clgr", PLO, 2, "PLO Compare and load (64 bit in general registers)")
21
DEF_FEAT(PLO_CLX, "plo-clx", PLO, 3, "PLO Compare and load (128 bit in parameter list)")
21
DEF_FEAT(PLO_CLX, "plo-clx", PLO, 3, "PLO Compare and load (128 bit in parameter list)")
22
DEF_FEAT(PLO_CS, "plo-cs", PLO, 4, "PLO Compare and swap (32 bit in general registers)")
22
DEF_FEAT(PLO_CS, "plo-cs", PLO, 4, "PLO Compare and swap (32 bit in general registers)")
23
DEF_FEAT(PLO_CSG, "plo-csg", PLO, 5, "PLO Compare and swap (64 bit in parameter list)")
23
DEF_FEAT(PLO_CSG, "plo-csg", PLO, 5, "PLO Compare and swap (64 bit in parameter list)")
24
-DEF_FEAT(PLO_CSGR, "plo-csgr", PLO, 6, "PLO Compare and swap (32 bit in general registers)")
24
-DEF_FEAT(PLO_CSGR, "plo-csgr", PLO, 6, "PLO Compare and swap (32 bit in general registers)")
25
+DEF_FEAT(PLO_CSGR, "plo-csgr", PLO, 6, "PLO Compare and swap (64 bit in general registers)")
25
+DEF_FEAT(PLO_CSGR, "plo-csgr", PLO, 6, "PLO Compare and swap (64 bit in general registers)")
26
DEF_FEAT(PLO_CSX, "plo-csx", PLO, 7, "PLO Compare and swap (128 bit in parameter list)")
26
DEF_FEAT(PLO_CSX, "plo-csx", PLO, 7, "PLO Compare and swap (128 bit in parameter list)")
27
DEF_FEAT(PLO_DCS, "plo-dcs", PLO, 8, "PLO Double compare and swap (32 bit in general registers)")
27
DEF_FEAT(PLO_DCS, "plo-dcs", PLO, 8, "PLO Double compare and swap (32 bit in general registers)")
28
DEF_FEAT(PLO_DCSG, "plo-dcsg", PLO, 9, "PLO Double compare and swap (64 bit in parameter list)")
28
DEF_FEAT(PLO_DCSG, "plo-dcsg", PLO, 9, "PLO Double compare and swap (64 bit in parameter list)")
29
-DEF_FEAT(PLO_DCSGR, "plo-dcsgr", PLO, 10, "PLO Double compare and swap (32 bit in general registers)")
29
-DEF_FEAT(PLO_DCSGR, "plo-dcsgr", PLO, 10, "PLO Double compare and swap (32 bit in general registers)")
30
+DEF_FEAT(PLO_DCSGR, "plo-dcsgr", PLO, 10, "PLO Double compare and swap (64 bit in general registers)")
30
+DEF_FEAT(PLO_DCSGR, "plo-dcsgr", PLO, 10, "PLO Double compare and swap (64 bit in general registers)")
31
DEF_FEAT(PLO_DCSX, "plo-dcsx", PLO, 11, "PLO Double compare and swap (128 bit in parameter list)")
31
DEF_FEAT(PLO_DCSX, "plo-dcsx", PLO, 11, "PLO Double compare and swap (128 bit in parameter list)")
32
DEF_FEAT(PLO_CSST, "plo-csst", PLO, 12, "PLO Compare and swap and store (32 bit in general registers)")
32
DEF_FEAT(PLO_CSST, "plo-csst", PLO, 12, "PLO Compare and swap and store (32 bit in general registers)")
33
DEF_FEAT(PLO_CSSTG, "plo-csstg", PLO, 13, "PLO Compare and swap and store (64 bit in parameter list)")
33
DEF_FEAT(PLO_CSSTG, "plo-csstg", PLO, 13, "PLO Compare and swap and store (64 bit in parameter list)")
34
-DEF_FEAT(PLO_CSSTGR, "plo-csstgr", PLO, 14, "PLO Compare and swap and store (32 bit in general registers)")
34
-DEF_FEAT(PLO_CSSTGR, "plo-csstgr", PLO, 14, "PLO Compare and swap and store (32 bit in general registers)")
35
+DEF_FEAT(PLO_CSSTGR, "plo-csstgr", PLO, 14, "PLO Compare and swap and store (64 bit in general registers)")
35
+DEF_FEAT(PLO_CSSTGR, "plo-csstgr", PLO, 14, "PLO Compare and swap and store (64 bit in general registers)")
36
DEF_FEAT(PLO_CSSTX, "plo-csstx", PLO, 15, "PLO Compare and swap and store (128 bit in parameter list)")
36
DEF_FEAT(PLO_CSSTX, "plo-csstx", PLO, 15, "PLO Compare and swap and store (128 bit in parameter list)")
37
DEF_FEAT(PLO_CSDST, "plo-csdst", PLO, 16, "PLO Compare and swap and double store (32 bit in general registers)")
37
DEF_FEAT(PLO_CSDST, "plo-csdst", PLO, 16, "PLO Compare and swap and double store (32 bit in general registers)")
38
DEF_FEAT(PLO_CSDSTG, "plo-csdstg", PLO, 17, "PLO Compare and swap and double store (64 bit in parameter list)")
38
DEF_FEAT(PLO_CSDSTG, "plo-csdstg", PLO, 17, "PLO Compare and swap and double store (64 bit in parameter list)")
39
-DEF_FEAT(PLO_CSDSTGR, "plo-csdstgr", PLO, 18, "PLO Compare and swap and double store (32 bit in general registers)")
39
-DEF_FEAT(PLO_CSDSTGR, "plo-csdstgr", PLO, 18, "PLO Compare and swap and double store (32 bit in general registers)")
40
+DEF_FEAT(PLO_CSDSTGR, "plo-csdstgr", PLO, 18, "PLO Compare and swap and double store (64 bit in general registers)")
40
+DEF_FEAT(PLO_CSDSTGR, "plo-csdstgr", PLO, 18, "PLO Compare and swap and double store (64 bit in general registers)")
41
DEF_FEAT(PLO_CSDSTX, "plo-csdstx", PLO, 19, "PLO Compare and swap and double store (128 bit in parameter list)")
41
DEF_FEAT(PLO_CSDSTX, "plo-csdstx", PLO, 19, "PLO Compare and swap and double store (128 bit in parameter list)")
42
DEF_FEAT(PLO_CSTST, "plo-cstst", PLO, 20, "PLO Compare and swap and triple store (32 bit in general registers)")
42
DEF_FEAT(PLO_CSTST, "plo-cstst", PLO, 20, "PLO Compare and swap and triple store (32 bit in general registers)")
43
DEF_FEAT(PLO_CSTSTG, "plo-cststg", PLO, 21, "PLO Compare and swap and triple store (64 bit in parameter list)")
43
DEF_FEAT(PLO_CSTSTG, "plo-cststg", PLO, 21, "PLO Compare and swap and triple store (64 bit in parameter list)")
44
-DEF_FEAT(PLO_CSTSTGR, "plo-cststgr", PLO, 22, "PLO Compare and swap and triple store (32 bit in general registers)")
44
-DEF_FEAT(PLO_CSTSTGR, "plo-cststgr", PLO, 22, "PLO Compare and swap and triple store (32 bit in general registers)")
45
+DEF_FEAT(PLO_CSTSTGR, "plo-cststgr", PLO, 22, "PLO Compare and swap and triple store (64 bit in general registers)")
45
+DEF_FEAT(PLO_CSTSTGR, "plo-cststgr", PLO, 22, "PLO Compare and swap and triple store (64 bit in general registers)")
46
DEF_FEAT(PLO_CSTSTX, "plo-cststx", PLO, 23, "PLO Compare and swap and triple store (128 bit in parameter list)")
46
DEF_FEAT(PLO_CSTSTX, "plo-cststx", PLO, 23, "PLO Compare and swap and triple store (128 bit in parameter list)")
47
47
48
/* Features exposed via the PTFF instruction. */
48
/* Features exposed via the PTFF instruction. */
49
--
49
--
50
2.43.5
50
2.43.5
diff view generated by jsdifflib
1
The PLO-extension facility introduces numerous locking related
1
The PLO-extension facility introduces numerous locking related
2
subfunctions.
2
subfunctions.
3
3
4
Signed-off-by: Hendrik Brueckner <brueckner@linux.ibm.com>
4
Signed-off-by: Hendrik Brueckner <brueckner@linux.ibm.com>
5
Reviewed-by: Janosch Frank <frankja@linux.ibm.com>
5
Reviewed-by: Janosch Frank <frankja@linux.ibm.com>
6
---
6
---
7
target/s390x/cpu_features_def.h.inc | 39 +++++++++++++++++++++++++++
7
target/s390x/cpu_features.c | 1 +
8
target/s390x/cpu_models.c | 38 ++++++++++++++++++++++++++
8
target/s390x/cpu_features_def.h.inc | 39 +++++++++++++++++++++++++
9
target/s390x/gen-features.c | 41 +++++++++++++++++++++++++++++
9
target/s390x/cpu_models.c | 38 ++++++++++++++++++++++++
10
3 files changed, 118 insertions(+)
10
target/s390x/gen-features.c | 45 +++++++++++++++++++++++++++++
11
4 files changed, 123 insertions(+)
11
12
13
diff --git a/target/s390x/cpu_features.c b/target/s390x/cpu_features.c
14
index XXXXXXX..XXXXXXX 100644
15
--- a/target/s390x/cpu_features.c
16
+++ b/target/s390x/cpu_features.c
17
@@ -XXX,XX +XXX,XX @@ void s390_get_deprecated_features(S390FeatBitmap features)
18
/* indexed by feature group number for easy lookup */
19
static S390FeatGroupDef s390_feature_groups[] = {
20
FEAT_GROUP_INIT("plo", PLO, "Perform-locked-operation facility"),
21
+ FEAT_GROUP_INIT("plo_ext", PLO_EXT, "PLO-extension facility"),
22
FEAT_GROUP_INIT("tods", TOD_CLOCK_STEERING, "Tod-clock-steering facility"),
23
FEAT_GROUP_INIT("gen13ptff", GEN13_PTFF, "PTFF enhancements introduced with z13"),
24
FEAT_GROUP_INIT("gen17ptff", GEN17_PTFF, "PTFF enhancements introduced with gen17"),
12
diff --git a/target/s390x/cpu_features_def.h.inc b/target/s390x/cpu_features_def.h.inc
25
diff --git a/target/s390x/cpu_features_def.h.inc b/target/s390x/cpu_features_def.h.inc
13
index XXXXXXX..XXXXXXX 100644
26
index XXXXXXX..XXXXXXX 100644
14
--- a/target/s390x/cpu_features_def.h.inc
27
--- a/target/s390x/cpu_features_def.h.inc
15
+++ b/target/s390x/cpu_features_def.h.inc
28
+++ b/target/s390x/cpu_features_def.h.inc
16
@@ -XXX,XX +XXX,XX @@ DEF_FEAT(BPB, "bpb", STFL, 82, "Branch prediction blocking")
29
@@ -XXX,XX +XXX,XX @@ DEF_FEAT(BPB, "bpb", STFL, 82, "Branch prediction blocking")
...
...
165
+ S390_FEAT_PLO_QSTO
178
+ S390_FEAT_PLO_QSTO
166
+
179
+
167
#define S390_FEAT_GROUP_TOD_CLOCK_STEERING \
180
#define S390_FEAT_GROUP_TOD_CLOCK_STEERING \
168
S390_FEAT_TOD_CLOCK_STEERING, \
181
S390_FEAT_TOD_CLOCK_STEERING, \
169
S390_FEAT_PTFF_QTO, \
182
S390_FEAT_PTFF_QTO, \
183
@@ -XXX,XX +XXX,XX @@
184
static uint16_t group_PLO[] = {
185
S390_FEAT_GROUP_PLO,
186
};
187
+static uint16_t group_PLO_EXT[] = {
188
+ S390_FEAT_GROUP_PLO_EXT,
189
+};
190
static uint16_t group_TOD_CLOCK_STEERING[] = {
191
S390_FEAT_GROUP_TOD_CLOCK_STEERING,
192
};
193
@@ -XXX,XX +XXX,XX @@ typedef struct {
194
*******************************/
195
static FeatGroupDefSpec FeatGroupDef[] = {
196
FEAT_GROUP_INITIALIZER(PLO),
197
+ FEAT_GROUP_INITIALIZER(PLO_EXT),
198
FEAT_GROUP_INITIALIZER(TOD_CLOCK_STEERING),
199
FEAT_GROUP_INITIALIZER(GEN13_PTFF),
200
FEAT_GROUP_INITIALIZER(GEN17_PTFF),
170
--
201
--
171
2.43.5
202
2.43.5
diff view generated by jsdifflib
1
This commit introduces the definition of the gen17a/gen17b CPU model.
1
This commit introduces the definition of the gen17a/gen17b CPU model.
2
2
3
Signed-off-by: Hendrik Brueckner <brueckner@linux.ibm.com>
3
Signed-off-by: Hendrik Brueckner <brueckner@linux.ibm.com>
4
---
4
---
5
target/s390x/cpu_models.c | 2 ++
5
target/s390x/cpu_models.c | 2 ++
6
target/s390x/gen-features.c | 33 +++++++++++++++++++++++++++++++++
6
target/s390x/gen-features.c | 33 +++++++++++++++++++++++++++++++++
7
2 files changed, 35 insertions(+)
7
2 files changed, 35 insertions(+)
8
8
9
diff --git a/target/s390x/cpu_models.c b/target/s390x/cpu_models.c
9
diff --git a/target/s390x/cpu_models.c b/target/s390x/cpu_models.c
10
index XXXXXXX..XXXXXXX 100644
10
index XXXXXXX..XXXXXXX 100644
11
--- a/target/s390x/cpu_models.c
11
--- a/target/s390x/cpu_models.c
12
+++ b/target/s390x/cpu_models.c
12
+++ b/target/s390x/cpu_models.c
13
@@ -XXX,XX +XXX,XX @@ static S390CPUDef s390_cpu_defs[] = {
13
@@ -XXX,XX +XXX,XX @@ static S390CPUDef s390_cpu_defs[] = {
14
CPUDEF_INIT(0x8562, 15, 1, 47, 0x08000000U, "gen15b", "IBM z15 T02 GA1"),
14
CPUDEF_INIT(0x8562, 15, 1, 47, 0x08000000U, "gen15b", "IBM z15 T02 GA1"),
15
CPUDEF_INIT(0x3931, 16, 1, 47, 0x08000000U, "gen16a", "IBM 3931 GA1"),
15
CPUDEF_INIT(0x3931, 16, 1, 47, 0x08000000U, "gen16a", "IBM 3931 GA1"),
16
CPUDEF_INIT(0x3932, 16, 1, 47, 0x08000000U, "gen16b", "IBM 3932 GA1"),
16
CPUDEF_INIT(0x3932, 16, 1, 47, 0x08000000U, "gen16b", "IBM 3932 GA1"),
17
+ CPUDEF_INIT(0x9175, 17, 1, 47, 0x08000000U, "gen17a", "IBM 9175 GA1"),
17
+ CPUDEF_INIT(0x9175, 17, 1, 47, 0x08000000U, "gen17a", "IBM 9175 GA1"),
18
+ CPUDEF_INIT(0x9176, 17, 1, 47, 0x08000000U, "gen17b", "IBM 9176 GA1"),
18
+ CPUDEF_INIT(0x9176, 17, 1, 47, 0x08000000U, "gen17b", "IBM 9176 GA1"),
19
};
19
};
20
20
21
#define QEMU_MAX_CPU_TYPE 0x8561
21
#define QEMU_MAX_CPU_TYPE 0x8561
22
diff --git a/target/s390x/gen-features.c b/target/s390x/gen-features.c
22
diff --git a/target/s390x/gen-features.c b/target/s390x/gen-features.c
23
index XXXXXXX..XXXXXXX 100644
23
index XXXXXXX..XXXXXXX 100644
24
--- a/target/s390x/gen-features.c
24
--- a/target/s390x/gen-features.c
25
+++ b/target/s390x/gen-features.c
25
+++ b/target/s390x/gen-features.c
26
@@ -XXX,XX +XXX,XX @@ static uint16_t base_GEN15_GA1[] = {
26
@@ -XXX,XX +XXX,XX @@ static uint16_t base_GEN15_GA1[] = {
27
27
28
#define base_GEN16_GA1 EmptyFeat
28
#define base_GEN16_GA1 EmptyFeat
29
29
30
+static uint16_t base_GEN17_GA1[] = {
30
+static uint16_t base_GEN17_GA1[] = {
31
+ S390_FEAT_MISC_INSTRUCTION_EXT4,
31
+ S390_FEAT_MISC_INSTRUCTION_EXT4,
32
+ S390_FEAT_SIF,
32
+ S390_FEAT_SIF,
33
+ S390_FEAT_GROUP_MSA_EXT_12,
33
+ S390_FEAT_GROUP_MSA_EXT_12,
34
+ S390_FEAT_GROUP_PLO_EXT,
34
+ S390_FEAT_GROUP_PLO_EXT,
35
+};
35
+};
36
+
36
+
37
/* Full features (in order of release)
37
/* Full features (in order of release)
38
* Automatically includes corresponding base features.
38
* Automatically includes corresponding base features.
39
* Full features are all features this hardware supports even if kvm/QEMU do not
39
* Full features are all features this hardware supports even if kvm/QEMU do not
40
@@ -XXX,XX +XXX,XX @@ static uint16_t full_GEN16_GA1[] = {
40
@@ -XXX,XX +XXX,XX @@ static uint16_t full_GEN16_GA1[] = {
41
S390_FEAT_UV_FEAT_AP_INTR,
41
S390_FEAT_UV_FEAT_AP_INTR,
42
};
42
};
43
43
44
+static uint16_t full_GEN17_GA1[] = {
44
+static uint16_t full_GEN17_GA1[] = {
45
+ S390_FEAT_VECTOR_ENH3,
45
+ S390_FEAT_VECTOR_ENH3,
46
+ S390_FEAT_VECTOR_PACKED_DECIMAL_ENH3,
46
+ S390_FEAT_VECTOR_PACKED_DECIMAL_ENH3,
47
+ S390_FEAT_INEFF_NC_TX,
47
+ S390_FEAT_INEFF_NC_TX,
48
+ S390_FEAT_GROUP_GEN17_PTFF,
48
+ S390_FEAT_GROUP_GEN17_PTFF,
49
+ S390_FEAT_GROUP_MSA_EXT_10,
49
+ S390_FEAT_GROUP_MSA_EXT_10,
50
+ S390_FEAT_GROUP_MSA_EXT_10_PCKMO,
50
+ S390_FEAT_GROUP_MSA_EXT_10_PCKMO,
51
+ S390_FEAT_GROUP_MSA_EXT_11,
51
+ S390_FEAT_GROUP_MSA_EXT_11,
52
+ S390_FEAT_GROUP_MSA_EXT_11_PCKMO,
52
+ S390_FEAT_GROUP_MSA_EXT_11_PCKMO,
53
+ S390_FEAT_GROUP_MSA_EXT_13,
53
+ S390_FEAT_GROUP_MSA_EXT_13,
54
+ S390_FEAT_GROUP_MSA_EXT_13_PCKMO,
54
+ S390_FEAT_GROUP_MSA_EXT_13_PCKMO,
55
+ S390_FEAT_GROUP_CONCURRENT_FUNCTIONS,
55
+ S390_FEAT_GROUP_CONCURRENT_FUNCTIONS,
56
+};
56
+};
57
+
57
+
58
58
59
/* Default features (in order of release)
59
/* Default features (in order of release)
60
* Automatically includes corresponding base features.
60
* Automatically includes corresponding base features.
61
@@ -XXX,XX +XXX,XX @@ static uint16_t default_GEN16_GA1[] = {
61
@@ -XXX,XX +XXX,XX @@ static uint16_t default_GEN16_GA1[] = {
62
S390_FEAT_PAIE,
62
S390_FEAT_PAIE,
63
};
63
};
64
64
65
+static uint16_t default_GEN17_GA1[] = {
65
+static uint16_t default_GEN17_GA1[] = {
66
+ S390_FEAT_VECTOR_ENH3,
66
+ S390_FEAT_VECTOR_ENH3,
67
+ S390_FEAT_VECTOR_PACKED_DECIMAL_ENH3,
67
+ S390_FEAT_VECTOR_PACKED_DECIMAL_ENH3,
68
+ S390_FEAT_GROUP_MSA_EXT_10,
68
+ S390_FEAT_GROUP_MSA_EXT_10,
69
+ S390_FEAT_GROUP_MSA_EXT_10_PCKMO,
69
+ S390_FEAT_GROUP_MSA_EXT_10_PCKMO,
70
+ S390_FEAT_GROUP_MSA_EXT_11,
70
+ S390_FEAT_GROUP_MSA_EXT_11,
71
+ S390_FEAT_GROUP_MSA_EXT_11_PCKMO,
71
+ S390_FEAT_GROUP_MSA_EXT_11_PCKMO,
72
+ S390_FEAT_GROUP_MSA_EXT_13,
72
+ S390_FEAT_GROUP_MSA_EXT_13,
73
+ S390_FEAT_GROUP_MSA_EXT_13_PCKMO,
73
+ S390_FEAT_GROUP_MSA_EXT_13_PCKMO,
74
+};
74
+};
75
+
75
+
76
/* QEMU (CPU model) features */
76
/* QEMU (CPU model) features */
77
77
78
static uint16_t qemu_V2_11[] = {
78
static uint16_t qemu_V2_11[] = {
79
@@ -XXX,XX +XXX,XX @@ static CpuFeatDefSpec CpuFeatDef[] = {
79
@@ -XXX,XX +XXX,XX @@ static CpuFeatDefSpec CpuFeatDef[] = {
80
CPU_FEAT_INITIALIZER(GEN14_GA2),
80
CPU_FEAT_INITIALIZER(GEN14_GA2),
81
CPU_FEAT_INITIALIZER(GEN15_GA1),
81
CPU_FEAT_INITIALIZER(GEN15_GA1),
82
CPU_FEAT_INITIALIZER(GEN16_GA1),
82
CPU_FEAT_INITIALIZER(GEN16_GA1),
83
+ CPU_FEAT_INITIALIZER(GEN17_GA1),
83
+ CPU_FEAT_INITIALIZER(GEN17_GA1),
84
};
84
};
85
85
86
#define FEAT_GROUP_INITIALIZER(_name) \
86
#define FEAT_GROUP_INITIALIZER(_name) \
87
--
87
--
88
2.43.5
88
2.43.5
diff view generated by jsdifflib