* Mon Jul 19 2021 Miroslav Rezanina <mrezanin@redhat.com> - 6.0.0-9
- kvm-s390x-cpumodel-add-3931-and-3932.patch [bz#1932191] - kvm-spapr-Fix-EEH-capability-issue-on-KVM-guest-for-PCI-.patch [bz#1957194] - kvm-ppc-pef.c-initialize-cgs-ready-in-kvmppc_svm_init.patch [bz#1957194] - kvm-redhat-Move-qemu-kvm-docs-dependency-to-qemu-kvm.patch [bz#1957194] - kvm-redhat-introducting-qemu-kvm-hw-usbredir.patch [bz#1957194] - kvm-redhat-use-the-standard-vhost-user-JSON-path.patch [bz#1957194] - Resolves: bz#1932191 ([IBM 9.0 FEAT] CPU Model for new IBM Z Hardware - qemu part (kvm)) - Resolves: bz#1957194 (Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta)
This commit is contained in:
parent
0cede3b3b7
commit
0e98626e1b
69
kvm-ppc-pef.c-initialize-cgs-ready-in-kvmppc_svm_init.patch
Normal file
69
kvm-ppc-pef.c-initialize-cgs-ready-in-kvmppc_svm_init.patch
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
From e496360f627cdc4202f185b63175ced08c8b1f07 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Daniel Henrique Barboza <danielhb413@gmail.com>
|
||||||
|
Date: Wed, 23 Jun 2021 19:39:32 -0400
|
||||||
|
Subject: [PATCH 3/6] ppc/pef.c: initialize cgs->ready in kvmppc_svm_init()
|
||||||
|
|
||||||
|
RH-Author: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
RH-MergeRequest: 22: Synchronize with RHEL-AV 8.5 release 23 to RHEL 9
|
||||||
|
RH-Commit: [2/5] b204f898d2333686e30b14c050ac7a9289670f23 (mrezanin/centos-src-qemu-kvm)
|
||||||
|
RH-Bugzilla: 1957194
|
||||||
|
|
||||||
|
QEMU is failing to launch a CGS pSeries guest in a host that has PEF
|
||||||
|
support:
|
||||||
|
|
||||||
|
qemu-system-ppc64: ../softmmu/vl.c:2585: qemu_machine_creation_done: Assertion `machine->cgs->ready' failed.
|
||||||
|
Aborted
|
||||||
|
|
||||||
|
This is happening because we're not setting the cgs->ready flag that is
|
||||||
|
asserted in qemu_machine_creation_done() during machine start.
|
||||||
|
|
||||||
|
cgs->ready is set in s390_pv_kvm_init() and sev_kvm_init(). Let's set it
|
||||||
|
in kvmppc_svm_init() as well.
|
||||||
|
|
||||||
|
Reported-by: Ram Pai <linuxram@us.ibm.com>
|
||||||
|
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
|
||||||
|
Message-Id: <20210528201619.52363-1-danielhb413@gmail.com>
|
||||||
|
Acked-by: Ram Pai <linuxram@us.ibm.com>
|
||||||
|
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
|
||||||
|
(cherry picked from commit b873ed83311d96644b544b10f6869a430660585a)
|
||||||
|
Signed-off-by: Daniel Henrique Barboza <dbarboza@redhat.com>
|
||||||
|
Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com>
|
||||||
|
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
---
|
||||||
|
hw/ppc/pef.c | 6 ++++--
|
||||||
|
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/hw/ppc/pef.c b/hw/ppc/pef.c
|
||||||
|
index 573be3ed79..cc44d5e339 100644
|
||||||
|
--- a/hw/ppc/pef.c
|
||||||
|
+++ b/hw/ppc/pef.c
|
||||||
|
@@ -41,7 +41,7 @@ struct PefGuest {
|
||||||
|
ConfidentialGuestSupport parent_obj;
|
||||||
|
};
|
||||||
|
|
||||||
|
-static int kvmppc_svm_init(Error **errp)
|
||||||
|
+static int kvmppc_svm_init(ConfidentialGuestSupport *cgs, Error **errp)
|
||||||
|
{
|
||||||
|
#ifdef CONFIG_KVM
|
||||||
|
static Error *pef_mig_blocker;
|
||||||
|
@@ -65,6 +65,8 @@ static int kvmppc_svm_init(Error **errp)
|
||||||
|
/* NB: This can fail if --only-migratable is used */
|
||||||
|
migrate_add_blocker(pef_mig_blocker, &error_fatal);
|
||||||
|
|
||||||
|
+ cgs->ready = true;
|
||||||
|
+
|
||||||
|
return 0;
|
||||||
|
#else
|
||||||
|
g_assert_not_reached();
|
||||||
|
@@ -102,7 +104,7 @@ int pef_kvm_init(ConfidentialGuestSupport *cgs, Error **errp)
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
- return kvmppc_svm_init(errp);
|
||||||
|
+ return kvmppc_svm_init(cgs, errp);
|
||||||
|
}
|
||||||
|
|
||||||
|
int pef_kvm_reset(ConfidentialGuestSupport *cgs, Error **errp)
|
||||||
|
--
|
||||||
|
2.27.0
|
||||||
|
|
134
kvm-s390x-cpumodel-add-3931-and-3932.patch
Normal file
134
kvm-s390x-cpumodel-add-3931-and-3932.patch
Normal file
@ -0,0 +1,134 @@
|
|||||||
|
From 5536da8458b7825b084bfc94256bfdc1ca0127a3 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Christian Borntraeger <borntraeger@de.ibm.com>
|
||||||
|
Date: Tue, 22 Jun 2021 22:19:23 +0200
|
||||||
|
Subject: [PATCH 1/6] s390x/cpumodel: add 3931 and 3932
|
||||||
|
|
||||||
|
RH-Author: Cornelia Huck <cohuck@redhat.com>
|
||||||
|
RH-MergeRequest: 21: s390x/cpumodel: add 3931 and 3932
|
||||||
|
RH-Commit: [1/1] b678fdf9364407c615678980330e496676e04f9e (cohuck/qemu-kvm-c9s)
|
||||||
|
RH-Bugzilla: 1932191
|
||||||
|
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
RH-Acked-by: David Hildenbrand <david@redhat.com>
|
||||||
|
RH-Acked-by: Thomas Huth <thuth@redhat.com>
|
||||||
|
|
||||||
|
This defines 5 new facilities and the new 3931 and 3932 machines.
|
||||||
|
As before the name is not yet known and we do use gen16a and gen16b.
|
||||||
|
The new features are part of the full model.
|
||||||
|
|
||||||
|
The default model is still empty (same as z15) and will be added
|
||||||
|
in a separate patch at a later point in time.
|
||||||
|
|
||||||
|
Also add the dependencies of new facilities and as a fix for z15 add
|
||||||
|
a dependency from S390_FEAT_VECTOR_PACKED_DECIMAL_ENH to
|
||||||
|
S390_VECTOR_PACKED_DECIMAL.
|
||||||
|
|
||||||
|
[merged <20210701084348.26556-1-borntraeger@de.ibm.com>]
|
||||||
|
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
|
||||||
|
Message-Id: <20210622201923.150205-2-borntraeger@de.ibm.com>
|
||||||
|
Reviewed-by: David Hildenbrand <david@redhat.com>
|
||||||
|
Signed-off-by: Cornelia Huck <cohuck@redhat.com>
|
||||||
|
(cherry picked from commit fb4a08121695a88acefcbcd86f1376df079eefee)
|
||||||
|
Signed-off-by: Cornelia Huck <cohuck@redhat.com>
|
||||||
|
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
---
|
||||||
|
target/s390x/cpu_features_def.h.inc | 5 +++++
|
||||||
|
target/s390x/cpu_models.c | 6 ++++++
|
||||||
|
target/s390x/gen-features.c | 14 ++++++++++++++
|
||||||
|
3 files changed, 25 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/target/s390x/cpu_features_def.h.inc b/target/s390x/cpu_features_def.h.inc
|
||||||
|
index 7db3449e04..e86662bb3b 100644
|
||||||
|
--- a/target/s390x/cpu_features_def.h.inc
|
||||||
|
+++ b/target/s390x/cpu_features_def.h.inc
|
||||||
|
@@ -109,6 +109,11 @@ DEF_FEAT(VECTOR_PACKED_DECIMAL_ENH, "vxpdeh", STFL, 152, "Vector-Packed-Decimal-
|
||||||
|
DEF_FEAT(MSA_EXT_9, "msa9-base", STFL, 155, "Message-security-assist-extension-9 facility (excluding subfunctions)")
|
||||||
|
DEF_FEAT(ETOKEN, "etoken", STFL, 156, "Etoken facility")
|
||||||
|
DEF_FEAT(UNPACK, "unpack", STFL, 161, "Unpack facility")
|
||||||
|
+DEF_FEAT(NNPA, "nnpa", STFL, 165, "NNPA facility")
|
||||||
|
+DEF_FEAT(VECTOR_PACKED_DECIMAL_ENH2, "vxpdeh2", STFL, 192, "Vector-Packed-Decimal-Enhancement facility 2")
|
||||||
|
+DEF_FEAT(BEAR_ENH, "beareh", STFL, 193, "BEAR-enhancement facility")
|
||||||
|
+DEF_FEAT(RDP, "rdp", STFL, 194, "Reset-DAT-protection facility")
|
||||||
|
+DEF_FEAT(PAI, "pai", STFL, 196, "Processor-Activity-Instrumentation facility")
|
||||||
|
|
||||||
|
/* Features exposed via SCLP SCCB Byte 80 - 98 (bit numbers relative to byte-80) */
|
||||||
|
DEF_FEAT(SIE_GSLS, "gsls", SCLP_CONF_CHAR, 40, "SIE: Guest-storage-limit-suppression facility")
|
||||||
|
diff --git a/target/s390x/cpu_models.c b/target/s390x/cpu_models.c
|
||||||
|
index 9254ff46bf..3cb4d25a10 100644
|
||||||
|
--- a/target/s390x/cpu_models.c
|
||||||
|
+++ b/target/s390x/cpu_models.c
|
||||||
|
@@ -88,6 +88,8 @@ static S390CPUDef s390_cpu_defs[] = {
|
||||||
|
CPUDEF_INIT(0x3907, 14, 1, 47, 0x08000000U, "z14ZR1", "IBM z14 Model ZR1 GA1"),
|
||||||
|
CPUDEF_INIT(0x8561, 15, 1, 47, 0x08000000U, "gen15a", "IBM z15 T01 GA1"),
|
||||||
|
CPUDEF_INIT(0x8562, 15, 1, 47, 0x08000000U, "gen15b", "IBM z15 T02 GA1"),
|
||||||
|
+ CPUDEF_INIT(0x3931, 16, 1, 47, 0x08000000U, "gen16a", "IBM 3931 GA1"),
|
||||||
|
+ CPUDEF_INIT(0x3932, 16, 1, 47, 0x08000000U, "gen16b", "IBM 3932 GA1"),
|
||||||
|
};
|
||||||
|
|
||||||
|
#define QEMU_MAX_CPU_TYPE 0x2964
|
||||||
|
@@ -815,6 +817,8 @@ static void check_consistency(const S390CPUModel *model)
|
||||||
|
{ S390_FEAT_MSA_EXT_9, S390_FEAT_MSA_EXT_4 },
|
||||||
|
{ S390_FEAT_MULTIPLE_EPOCH, S390_FEAT_TOD_CLOCK_STEERING },
|
||||||
|
{ S390_FEAT_VECTOR_PACKED_DECIMAL, S390_FEAT_VECTOR },
|
||||||
|
+ { S390_FEAT_VECTOR_PACKED_DECIMAL_ENH, S390_FEAT_VECTOR_PACKED_DECIMAL },
|
||||||
|
+ { S390_FEAT_VECTOR_PACKED_DECIMAL_ENH2, S390_FEAT_VECTOR_PACKED_DECIMAL_ENH },
|
||||||
|
{ S390_FEAT_VECTOR_ENH, S390_FEAT_VECTOR },
|
||||||
|
{ S390_FEAT_INSTRUCTION_EXEC_PROT, S390_FEAT_SIDE_EFFECT_ACCESS_ESOP2 },
|
||||||
|
{ S390_FEAT_SIDE_EFFECT_ACCESS_ESOP2, S390_FEAT_ESOP },
|
||||||
|
@@ -846,6 +850,8 @@ static void check_consistency(const S390CPUModel *model)
|
||||||
|
{ S390_FEAT_PTFF_STOUE, S390_FEAT_MULTIPLE_EPOCH },
|
||||||
|
{ S390_FEAT_AP_QUEUE_INTERRUPT_CONTROL, S390_FEAT_AP },
|
||||||
|
{ S390_FEAT_DIAG_318, S390_FEAT_EXTENDED_LENGTH_SCCB },
|
||||||
|
+ { S390_FEAT_NNPA, S390_FEAT_VECTOR },
|
||||||
|
+ { S390_FEAT_RDP, S390_FEAT_LOCAL_TLB_CLEARING },
|
||||||
|
};
|
||||||
|
int i;
|
||||||
|
|
||||||
|
diff --git a/target/s390x/gen-features.c b/target/s390x/gen-features.c
|
||||||
|
index a6ec918e90..8f99cea665 100644
|
||||||
|
--- a/target/s390x/gen-features.c
|
||||||
|
+++ b/target/s390x/gen-features.c
|
||||||
|
@@ -424,6 +424,8 @@ static uint16_t base_GEN15_GA1[] = {
|
||||||
|
S390_FEAT_MISC_INSTRUCTION_EXT3,
|
||||||
|
};
|
||||||
|
|
||||||
|
+#define base_GEN16_GA1 EmptyFeat
|
||||||
|
+
|
||||||
|
/* Full features (in order of release)
|
||||||
|
* Automatically includes corresponding base features.
|
||||||
|
* Full features are all features this hardware supports even if kvm/QEMU do not
|
||||||
|
@@ -567,6 +569,15 @@ static uint16_t full_GEN15_GA1[] = {
|
||||||
|
S390_FEAT_UNPACK,
|
||||||
|
};
|
||||||
|
|
||||||
|
+static uint16_t full_GEN16_GA1[] = {
|
||||||
|
+ S390_FEAT_NNPA,
|
||||||
|
+ S390_FEAT_VECTOR_PACKED_DECIMAL_ENH2,
|
||||||
|
+ S390_FEAT_BEAR_ENH,
|
||||||
|
+ S390_FEAT_RDP,
|
||||||
|
+ S390_FEAT_PAI,
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+
|
||||||
|
/* Default features (in order of release)
|
||||||
|
* Automatically includes corresponding base features.
|
||||||
|
* Default features are all features this version of QEMU supports for this
|
||||||
|
@@ -652,6 +663,8 @@ static uint16_t default_GEN15_GA1[] = {
|
||||||
|
S390_FEAT_ETOKEN,
|
||||||
|
};
|
||||||
|
|
||||||
|
+#define default_GEN16_GA1 EmptyFeat
|
||||||
|
+
|
||||||
|
/* QEMU (CPU model) features */
|
||||||
|
|
||||||
|
static uint16_t qemu_V2_11[] = {
|
||||||
|
@@ -782,6 +795,7 @@ static CpuFeatDefSpec CpuFeatDef[] = {
|
||||||
|
CPU_FEAT_INITIALIZER(GEN14_GA1),
|
||||||
|
CPU_FEAT_INITIALIZER(GEN14_GA2),
|
||||||
|
CPU_FEAT_INITIALIZER(GEN15_GA1),
|
||||||
|
+ CPU_FEAT_INITIALIZER(GEN16_GA1),
|
||||||
|
};
|
||||||
|
|
||||||
|
#define FEAT_GROUP_INITIALIZER(_name) \
|
||||||
|
--
|
||||||
|
2.27.0
|
||||||
|
|
160
kvm-spapr-Fix-EEH-capability-issue-on-KVM-guest-for-PCI-.patch
Normal file
160
kvm-spapr-Fix-EEH-capability-issue-on-KVM-guest-for-PCI-.patch
Normal file
@ -0,0 +1,160 @@
|
|||||||
|
From 389b2a01f9b75575996eaab195a9697840ae5f29 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Mahesh Salgaonkar <mahesh@linux.ibm.com>
|
||||||
|
Date: Wed, 30 Jun 2021 13:27:47 -0400
|
||||||
|
Subject: [PATCH 2/6] spapr: Fix EEH capability issue on KVM guest for PCI
|
||||||
|
passthru
|
||||||
|
|
||||||
|
RH-Author: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
RH-MergeRequest: 22: Synchronize with RHEL-AV 8.5 release 23 to RHEL 9
|
||||||
|
RH-Commit: [1/5] 86642761bad229c080e180ea9ebd0a4f67d2a4f7 (mrezanin/centos-src-qemu-kvm)
|
||||||
|
RH-Bugzilla: 1957194
|
||||||
|
|
||||||
|
With upstream kernel, especially after commit 98ba956f6a389
|
||||||
|
("powerpc/pseries/eeh: Rework device EEH PE determination") we see that KVM
|
||||||
|
guest isn't able to enable EEH option for PCI pass-through devices anymore.
|
||||||
|
|
||||||
|
[root@atest-guest ~]# dmesg | grep EEH
|
||||||
|
[ 0.032337] EEH: pSeries platform initialized
|
||||||
|
[ 0.298207] EEH: No capable adapters found: recovery disabled.
|
||||||
|
[root@atest-guest ~]#
|
||||||
|
|
||||||
|
So far the linux kernel was assuming pe_config_addr equal to device's
|
||||||
|
config_addr and using it to enable EEH on the PE through ibm,set-eeh-option
|
||||||
|
RTAS call. Which wasn't the correct way as per PAPR. The linux kernel
|
||||||
|
commit 98ba956f6a389 fixed this flow. With that fixed, linux now uses PE
|
||||||
|
config address returned by ibm,get-config-addr-info2 RTAS call to enable
|
||||||
|
EEH option per-PE basis instead of per-device basis. However this has
|
||||||
|
uncovered a bug in qemu where ibm,set-eeh-option is treating PE config
|
||||||
|
address as per-device config address.
|
||||||
|
|
||||||
|
Hence in qemu guest with recent kernel the ibm,set-eeh-option RTAS call
|
||||||
|
fails with -3 return value indicating that there is no PCI device exist for
|
||||||
|
the specified PE config address. The rtas_ibm_set_eeh_option call uses
|
||||||
|
pci_find_device() to get the PC device that matches specific bus and devfn
|
||||||
|
extracted from PE config address passed as argument. Thus it tries to map
|
||||||
|
the PE config address to a single specific PCI device 'bus->devices[devfn]'
|
||||||
|
which always results into checking device on slot 0 'bus->devices[0]'.
|
||||||
|
This succeeds when there is a pass-through device (vfio-pci) present on
|
||||||
|
slot 0. But in cases where there is no pass-through device present in slot
|
||||||
|
0, but present in non-zero slots, ibm,set-eeh-option call fails to enable
|
||||||
|
the EEH capability.
|
||||||
|
|
||||||
|
hw/ppc/spapr_pci_vfio.c: spapr_phb_vfio_eeh_set_option()
|
||||||
|
case RTAS_EEH_ENABLE: {
|
||||||
|
PCIHostState *phb;
|
||||||
|
PCIDevice *pdev;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The EEH functionality is enabled on basis of PCI device,
|
||||||
|
* instead of PE. We need check the validity of the PCI
|
||||||
|
* device address.
|
||||||
|
*/
|
||||||
|
phb = PCI_HOST_BRIDGE(sphb);
|
||||||
|
pdev = pci_find_device(phb->bus,
|
||||||
|
(addr >> 16) & 0xFF, (addr >> 8) & 0xFF);
|
||||||
|
if (!pdev || !object_dynamic_cast(OBJECT(pdev), "vfio-pci")) {
|
||||||
|
return RTAS_OUT_PARAM_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
hw/pci/pci.c:pci_find_device()
|
||||||
|
|
||||||
|
PCIDevice *pci_find_device(PCIBus *bus, int bus_num, uint8_t devfn)
|
||||||
|
{
|
||||||
|
bus = pci_find_bus_nr(bus, bus_num);
|
||||||
|
|
||||||
|
if (!bus)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
return bus->devices[devfn];
|
||||||
|
}
|
||||||
|
|
||||||
|
This patch fixes ibm,set-eeh-option to check for presence of any PCI device
|
||||||
|
(vfio-pci) under specified bus and enable the EEH if found. The current
|
||||||
|
code already makes sure that all the devices on that bus are from same
|
||||||
|
iommu group (within same PE) and fail very early if it does not.
|
||||||
|
|
||||||
|
After this fix guest is able to find EEH capable devices and enable EEH
|
||||||
|
recovery on it.
|
||||||
|
|
||||||
|
[root@atest-guest ~]# dmesg | grep EEH
|
||||||
|
[ 0.048139] EEH: pSeries platform initialized
|
||||||
|
[ 0.405115] EEH: Capable adapter found: recovery enabled.
|
||||||
|
[root@atest-guest ~]#
|
||||||
|
|
||||||
|
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
|
||||||
|
Signed-off-by: Mahesh Salgaonkar <mahesh@linux.ibm.com>
|
||||||
|
Message-Id: <162158429107.145117.5843504911924013125.stgit@jupiter>
|
||||||
|
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
|
||||||
|
(cherry picked from commit ac9ef668321ebb6eb871a0c4dd380fa7d7891b4e)
|
||||||
|
Signed-off-by: Daniel Henrique Barboza <dbarboza@redhat.com>
|
||||||
|
Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com>
|
||||||
|
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||||||
|
---
|
||||||
|
hw/ppc/spapr_pci_vfio.c | 40 +++++++++++++++++++++++++++++++++-------
|
||||||
|
1 file changed, 33 insertions(+), 7 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/hw/ppc/spapr_pci_vfio.c b/hw/ppc/spapr_pci_vfio.c
|
||||||
|
index e0547b1740..6587c8cb5b 100644
|
||||||
|
--- a/hw/ppc/spapr_pci_vfio.c
|
||||||
|
+++ b/hw/ppc/spapr_pci_vfio.c
|
||||||
|
@@ -47,6 +47,16 @@ void spapr_phb_vfio_reset(DeviceState *qdev)
|
||||||
|
spapr_phb_vfio_eeh_reenable(SPAPR_PCI_HOST_BRIDGE(qdev));
|
||||||
|
}
|
||||||
|
|
||||||
|
+static void spapr_eeh_pci_find_device(PCIBus *bus, PCIDevice *pdev,
|
||||||
|
+ void *opaque)
|
||||||
|
+{
|
||||||
|
+ bool *found = opaque;
|
||||||
|
+
|
||||||
|
+ if (object_dynamic_cast(OBJECT(pdev), "vfio-pci")) {
|
||||||
|
+ *found = true;
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
int spapr_phb_vfio_eeh_set_option(SpaprPhbState *sphb,
|
||||||
|
unsigned int addr, int option)
|
||||||
|
{
|
||||||
|
@@ -59,17 +69,33 @@ int spapr_phb_vfio_eeh_set_option(SpaprPhbState *sphb,
|
||||||
|
break;
|
||||||
|
case RTAS_EEH_ENABLE: {
|
||||||
|
PCIHostState *phb;
|
||||||
|
- PCIDevice *pdev;
|
||||||
|
+ bool found = false;
|
||||||
|
|
||||||
|
/*
|
||||||
|
- * The EEH functionality is enabled on basis of PCI device,
|
||||||
|
- * instead of PE. We need check the validity of the PCI
|
||||||
|
- * device address.
|
||||||
|
+ * The EEH functionality is enabled per sphb level instead of
|
||||||
|
+ * per PCI device. We have already identified this specific sphb
|
||||||
|
+ * based on buid passed as argument to ibm,set-eeh-option rtas
|
||||||
|
+ * call. Now we just need to check the validity of the PCI
|
||||||
|
+ * pass-through devices (vfio-pci) under this sphb bus.
|
||||||
|
+ * We have already validated that all the devices under this sphb
|
||||||
|
+ * are from same iommu group (within same PE) before comming here.
|
||||||
|
+ *
|
||||||
|
+ * Prior to linux commit 98ba956f6a389 ("powerpc/pseries/eeh:
|
||||||
|
+ * Rework device EEH PE determination") kernel would call
|
||||||
|
+ * eeh-set-option for each device in the PE using the device's
|
||||||
|
+ * config_address as the argument rather than the PE address.
|
||||||
|
+ * Hence if we check validity of supplied config_addr whether
|
||||||
|
+ * it matches to this PHB will cause issues with older kernel
|
||||||
|
+ * versions v5.9 and older. If we return an error from
|
||||||
|
+ * eeh-set-option when the argument isn't a valid PE address
|
||||||
|
+ * then older kernels (v5.9 and older) will interpret that as
|
||||||
|
+ * EEH not being supported.
|
||||||
|
*/
|
||||||
|
phb = PCI_HOST_BRIDGE(sphb);
|
||||||
|
- pdev = pci_find_device(phb->bus,
|
||||||
|
- (addr >> 16) & 0xFF, (addr >> 8) & 0xFF);
|
||||||
|
- if (!pdev || !object_dynamic_cast(OBJECT(pdev), "vfio-pci")) {
|
||||||
|
+ pci_for_each_device(phb->bus, (addr >> 16) & 0xFF,
|
||||||
|
+ spapr_eeh_pci_find_device, &found);
|
||||||
|
+
|
||||||
|
+ if (!found) {
|
||||||
|
return RTAS_OUT_PARAM_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
2.27.0
|
||||||
|
|
@ -65,6 +65,9 @@
|
|||||||
%if %{have_opengl} \
|
%if %{have_opengl} \
|
||||||
Requires: %{name}-ui-opengl = %{epoch}:%{version}-%{release} \
|
Requires: %{name}-ui-opengl = %{epoch}:%{version}-%{release} \
|
||||||
%endif \
|
%endif \
|
||||||
|
%if %{have_usbredir} \
|
||||||
|
Requires: %{name}-hw-usbredir = %{epoch}:%{version}-%{release} \
|
||||||
|
%endif \
|
||||||
Requires: %{name}-block-curl = %{epoch}:%{version}-%{release} \
|
Requires: %{name}-block-curl = %{epoch}:%{version}-%{release} \
|
||||||
Requires: %{name}-block-rbd = %{epoch}:%{version}-%{release} \
|
Requires: %{name}-block-rbd = %{epoch}:%{version}-%{release} \
|
||||||
Requires: %{name}-block-ssh = %{epoch}:%{version}-%{release}
|
Requires: %{name}-block-ssh = %{epoch}:%{version}-%{release}
|
||||||
@ -72,7 +75,7 @@ Requires: %{name}-block-ssh = %{epoch}:%{version}-%{release}
|
|||||||
Summary: QEMU is a machine emulator and virtualizer
|
Summary: QEMU is a machine emulator and virtualizer
|
||||||
Name: qemu-kvm
|
Name: qemu-kvm
|
||||||
Version: 6.0.0
|
Version: 6.0.0
|
||||||
Release: 8%{?rcversion}%{?dist}
|
Release: 9%{?rcversion}%{?dist}
|
||||||
# Epoch because we pushed a qemu-1.0 package. AIUI this can't ever be dropped
|
# Epoch because we pushed a qemu-1.0 package. AIUI this can't ever be dropped
|
||||||
# Epoch 15 used for RHEL 8
|
# Epoch 15 used for RHEL 8
|
||||||
# Epoch 17 used for RHEL 9 (due to release versioning offset in RHEL 8.5)
|
# Epoch 17 used for RHEL 9 (due to release versioning offset in RHEL 8.5)
|
||||||
@ -191,6 +194,12 @@ Patch51: kvm-docs-Add-SEV-ES-documentation-to-amd-memory-encrypti.patch
|
|||||||
Patch52: kvm-docs-interop-firmware.json-Add-SEV-ES-support.patch
|
Patch52: kvm-docs-interop-firmware.json-Add-SEV-ES-support.patch
|
||||||
# For bz#1978911 - Remove TPM Passthrough option from RHEL 9
|
# For bz#1978911 - Remove TPM Passthrough option from RHEL 9
|
||||||
Patch53: kvm-Disable-TPM-passthrough.patch
|
Patch53: kvm-Disable-TPM-passthrough.patch
|
||||||
|
# For bz#1932191 - [IBM 9.0 FEAT] CPU Model for new IBM Z Hardware - qemu part (kvm)
|
||||||
|
Patch54: kvm-s390x-cpumodel-add-3931-and-3932.patch
|
||||||
|
# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta
|
||||||
|
Patch55: kvm-spapr-Fix-EEH-capability-issue-on-KVM-guest-for-PCI-.patch
|
||||||
|
# For bz#1957194 - Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta
|
||||||
|
Patch56: kvm-ppc-pef.c-initialize-cgs-ready-in-kvmppc_svm_init.patch
|
||||||
|
|
||||||
# Source-git patches
|
# Source-git patches
|
||||||
|
|
||||||
@ -255,7 +264,7 @@ BuildRequires: perl-Test-Harness
|
|||||||
BuildRequires: libslirp-devel
|
BuildRequires: libslirp-devel
|
||||||
|
|
||||||
Requires: qemu-kvm-core = %{epoch}:%{version}-%{release}
|
Requires: qemu-kvm-core = %{epoch}:%{version}-%{release}
|
||||||
|
Requires: %{name}-docs = %{epoch}:%{version}-%{release}
|
||||||
%{requires_all_modules}
|
%{requires_all_modules}
|
||||||
|
|
||||||
%define qemudocdir %{_docdir}/%{name}
|
%define qemudocdir %{_docdir}/%{name}
|
||||||
@ -271,7 +280,6 @@ hardware for a full system such as a PC and its associated peripherals.
|
|||||||
Summary: qemu-kvm core components
|
Summary: qemu-kvm core components
|
||||||
Requires: %{name}-common = %{epoch}:%{version}-%{release}
|
Requires: %{name}-common = %{epoch}:%{version}-%{release}
|
||||||
Requires: qemu-img = %{epoch}:%{version}-%{release}
|
Requires: qemu-img = %{epoch}:%{version}-%{release}
|
||||||
Recommends: qemu-kvm-docs
|
|
||||||
%ifarch %{ix86} x86_64
|
%ifarch %{ix86} x86_64
|
||||||
Requires: edk2-ovmf
|
Requires: edk2-ovmf
|
||||||
%endif
|
%endif
|
||||||
@ -281,9 +289,6 @@ Requires: edk2-aarch64
|
|||||||
|
|
||||||
Requires: libseccomp >= %{libseccomp_version}
|
Requires: libseccomp >= %{libseccomp_version}
|
||||||
Requires: libusbx >= %{libusbx_version}
|
Requires: libusbx >= %{libusbx_version}
|
||||||
%if %{have_usbredir}
|
|
||||||
Requires: usbredir >= %{usbredir_version}
|
|
||||||
%endif
|
|
||||||
%if %{have_fdt}
|
%if %{have_fdt}
|
||||||
Requires: libfdt >= %{libfdt_version}
|
Requires: libfdt >= %{libfdt_version}
|
||||||
%endif
|
%endif
|
||||||
@ -411,6 +416,15 @@ Requires: mesa-dri-drivers
|
|||||||
This package provides opengl support.
|
This package provides opengl support.
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
%if %{have_usbredir}
|
||||||
|
%package hw-usbredir
|
||||||
|
Summary: QEMU usbredir support
|
||||||
|
Requires: %{name}-common%{?_isa} = %{epoch}:%{version}-%{release}
|
||||||
|
Requires: usbredir >= 0.7.1
|
||||||
|
|
||||||
|
%description hw-usbredir
|
||||||
|
This package provides usbredir support.
|
||||||
|
%endif
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
%if 0%{?rcversion}
|
%if 0%{?rcversion}
|
||||||
@ -771,6 +785,10 @@ make DESTDIR=$RPM_BUILD_ROOT \
|
|||||||
install
|
install
|
||||||
|
|
||||||
mkdir -p $RPM_BUILD_ROOT%{_datadir}/systemtap/tapset
|
mkdir -p $RPM_BUILD_ROOT%{_datadir}/systemtap/tapset
|
||||||
|
|
||||||
|
# Move vhost-user JSON files to the standard "qemu" directory
|
||||||
|
mkdir -p $RPM_BUILD_ROOT%{_datadir}/qemu
|
||||||
|
mv $RPM_BUILD_ROOT%{_datadir}/%{name}/vhost-user $RPM_BUILD_ROOT%{_datadir}/qemu/
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
# Install qemu-guest-agent service and udev rules
|
# Install qemu-guest-agent service and udev rules
|
||||||
@ -1139,7 +1157,10 @@ useradd -r -u 107 -g qemu -G kvm -d / -s /sbin/nologin \
|
|||||||
%{_sysconfdir}/security/limits.d/95-kvm-memlock.conf
|
%{_sysconfdir}/security/limits.d/95-kvm-memlock.conf
|
||||||
%endif
|
%endif
|
||||||
%{_libexecdir}/virtiofsd
|
%{_libexecdir}/virtiofsd
|
||||||
%{_datadir}/%{name}/vhost-user/50-qemu-virtiofsd.json
|
# This is the standard location for vhost-user JSON files defined in the
|
||||||
|
# vhost-user specification for interoperability with other software. Unlike
|
||||||
|
# most other paths we use it's "qemu" instead of "qemu-kvm".
|
||||||
|
%{_datadir}/qemu/vhost-user/50-qemu-virtiofsd.json
|
||||||
|
|
||||||
%files -n qemu-kvm-core
|
%files -n qemu-kvm-core
|
||||||
%{_libexecdir}/qemu-kvm
|
%{_libexecdir}/qemu-kvm
|
||||||
@ -1149,9 +1170,6 @@ useradd -r -u 107 -g qemu -G kvm -d / -s /sbin/nologin \
|
|||||||
%{_datadir}/%{name}/systemtap/script.d/qemu_kvm.stp
|
%{_datadir}/%{name}/systemtap/script.d/qemu_kvm.stp
|
||||||
%{_datadir}/%{name}/systemtap/conf.d/qemu_kvm.conf
|
%{_datadir}/%{name}/systemtap/conf.d/qemu_kvm.conf
|
||||||
|
|
||||||
%if %{have_usbredir}
|
|
||||||
%{_libdir}/qemu-kvm/hw-usb-redirect.so
|
|
||||||
%endif
|
|
||||||
%{_libdir}/qemu-kvm/hw-display-virtio-gpu.so
|
%{_libdir}/qemu-kvm/hw-display-virtio-gpu.so
|
||||||
%ifarch s390x
|
%ifarch s390x
|
||||||
%{_libdir}/qemu-kvm/hw-s390x-virtio-gpu-ccw.so
|
%{_libdir}/qemu-kvm/hw-s390x-virtio-gpu-ccw.so
|
||||||
@ -1200,9 +1218,26 @@ useradd -r -u 107 -g qemu -G kvm -d / -s /sbin/nologin \
|
|||||||
%{_libdir}/qemu-kvm/ui-egl-headless.so
|
%{_libdir}/qemu-kvm/ui-egl-headless.so
|
||||||
%{_libdir}/qemu-kvm/ui-opengl.so
|
%{_libdir}/qemu-kvm/ui-opengl.so
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
%if %{have_usbredir}
|
||||||
|
%files hw-usbredir
|
||||||
|
%{_libdir}/qemu-kvm/hw-usb-redirect.so
|
||||||
|
%endif
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon Jul 19 2021 Miroslav Rezanina <mrezanin@redhat.com> - 6.0.0-9
|
||||||
|
- kvm-s390x-cpumodel-add-3931-and-3932.patch [bz#1932191]
|
||||||
|
- kvm-spapr-Fix-EEH-capability-issue-on-KVM-guest-for-PCI-.patch [bz#1957194]
|
||||||
|
- kvm-ppc-pef.c-initialize-cgs-ready-in-kvmppc_svm_init.patch [bz#1957194]
|
||||||
|
- kvm-redhat-Move-qemu-kvm-docs-dependency-to-qemu-kvm.patch [bz#1957194]
|
||||||
|
- kvm-redhat-introducting-qemu-kvm-hw-usbredir.patch [bz#1957194]
|
||||||
|
- kvm-redhat-use-the-standard-vhost-user-JSON-path.patch [bz#1957194]
|
||||||
|
- Resolves: bz#1932191
|
||||||
|
([IBM 9.0 FEAT] CPU Model for new IBM Z Hardware - qemu part (kvm))
|
||||||
|
- Resolves: bz#1957194
|
||||||
|
(Synchronize RHEL-AV 8.5.0 changes to RHEL 9.0.0 Beta)
|
||||||
|
|
||||||
* Mon Jul 12 2021 Miroslav Rezanina <mrezanin@redhat.com> - 6.0.0-8
|
* Mon Jul 12 2021 Miroslav Rezanina <mrezanin@redhat.com> - 6.0.0-8
|
||||||
- kvm-Disable-TPM-passthrough.patch [bz#1978911]
|
- kvm-Disable-TPM-passthrough.patch [bz#1978911]
|
||||||
- kvm-redhat-Replace-the-kvm-setup.service-with-a-etc-modu.patch [bz#1978837]
|
- kvm-redhat-Replace-the-kvm-setup.service-with-a-etc-modu.patch [bz#1978837]
|
||||||
|
Loading…
Reference in New Issue
Block a user