mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-09 18:44:58 -06:00
- Fix s390x ISM reset
- Remove deprecated CLI options -no-hpet, -no-acpi, -async-teardown, -chroot and -singlestep - Fix installation of the netbsd VM -----BEGIN PGP SIGNATURE----- iQJFBAABCAAvFiEEJ7iIR+7gJQEY8+q5LtnXdP5wLbUFAmWqk40RHHRodXRoQHJl ZGhhdC5jb20ACgkQLtnXdP5wLbVb+w//XuWdXzDDof0CsOMhMzBaKLznJ+Qbo4Wr S5vNJsiJe3KfI3DJa/ZSO2+lwyFpMPjp3aRSm9rAaw2ErejtfGZMSHj5/BGYuHVM x0VlHWnTEe/7NpG2mRwlxntPyYOtFCQ+xCo4YS9fpLLYSQFNhGMyOyfCobVZc1/A TDFrS5v1Su1HgYNL6GuyXK8k56ytidBxhuYtfLkR01liUDU1rmTWFcLxrXUwI7Hr nfamp/W6G9OJ3co0ysYChM8SvXQzCGPBxzGQjrcHpaL7otTW5yliJcNPwyzGdyLU G+5AcdJ8wT+ONonf3KkUTbxS2J2OHzIGCZpqVWGU0h5Yv43zMpNATUmbUPM0H0l4 mqtUf4bSyhNwClKdkEWJyvEwNRTIHxWerMgaNp9ntEM3Ac0/3HiOXV/DZOKL04Im hRHRySSMlyo6Pnnn2fHj3naalKHNVikbvPVR3i8wdYuQ423D35cU8M+yJpJ3Bllt 5YgScDkVjifan5SmWVdtQ9bgyrdeQHFa9V1iUjxQx5JfAv8w4RBmats8UYrYm/mF Zrx/zdpL5wneslWwPqLp/gOb5lt8tF4vt0sLgpNa6SxI9Pgz/GhPvuhmfheML17l znbGEx5q3vqivszZkm8penydut4rbpp6GcoftbI9sIgqfNuuY1d/FZRlb32RTdxH 1TUiQfGQqbA= =ytHA -----END PGP SIGNATURE----- Merge tag 'pull-request-2024-01-19' of https://gitlab.com/thuth/qemu into staging - Fix s390x ISM reset - Remove deprecated CLI options -no-hpet, -no-acpi, -async-teardown, -chroot and -singlestep - Fix installation of the netbsd VM # -----BEGIN PGP SIGNATURE----- # # iQJFBAABCAAvFiEEJ7iIR+7gJQEY8+q5LtnXdP5wLbUFAmWqk40RHHRodXRoQHJl # ZGhhdC5jb20ACgkQLtnXdP5wLbVb+w//XuWdXzDDof0CsOMhMzBaKLznJ+Qbo4Wr # S5vNJsiJe3KfI3DJa/ZSO2+lwyFpMPjp3aRSm9rAaw2ErejtfGZMSHj5/BGYuHVM # x0VlHWnTEe/7NpG2mRwlxntPyYOtFCQ+xCo4YS9fpLLYSQFNhGMyOyfCobVZc1/A # TDFrS5v1Su1HgYNL6GuyXK8k56ytidBxhuYtfLkR01liUDU1rmTWFcLxrXUwI7Hr # nfamp/W6G9OJ3co0ysYChM8SvXQzCGPBxzGQjrcHpaL7otTW5yliJcNPwyzGdyLU # G+5AcdJ8wT+ONonf3KkUTbxS2J2OHzIGCZpqVWGU0h5Yv43zMpNATUmbUPM0H0l4 # mqtUf4bSyhNwClKdkEWJyvEwNRTIHxWerMgaNp9ntEM3Ac0/3HiOXV/DZOKL04Im # hRHRySSMlyo6Pnnn2fHj3naalKHNVikbvPVR3i8wdYuQ423D35cU8M+yJpJ3Bllt # 5YgScDkVjifan5SmWVdtQ9bgyrdeQHFa9V1iUjxQx5JfAv8w4RBmats8UYrYm/mF # Zrx/zdpL5wneslWwPqLp/gOb5lt8tF4vt0sLgpNa6SxI9Pgz/GhPvuhmfheML17l # znbGEx5q3vqivszZkm8penydut4rbpp6GcoftbI9sIgqfNuuY1d/FZRlb32RTdxH # 1TUiQfGQqbA= # =ytHA # -----END PGP SIGNATURE----- # gpg: Signature made Fri 19 Jan 2024 15:21:49 GMT # gpg: using RSA key 27B88847EEE0250118F3EAB92ED9D774FE702DB5 # gpg: issuer "thuth@redhat.com" # gpg: Good signature from "Thomas Huth <th.huth@gmx.de>" [full] # gpg: aka "Thomas Huth <thuth@redhat.com>" [full] # gpg: aka "Thomas Huth <huth@tuxfamily.org>" [full] # gpg: aka "Thomas Huth <th.huth@posteo.de>" [unknown] # Primary key fingerprint: 27B8 8847 EEE0 2501 18F3 EAB9 2ED9 D774 FE70 2DB5 * tag 'pull-request-2024-01-19' of https://gitlab.com/thuth/qemu: tests/vm/netbsd: Remove missing py311-expat package cli: Remove deprecated '-singlestep' command line option hmp: Remove deprecated 'singlestep' command qapi: Remove deprecated 'singlestep' member of StatusInfo qemu-options: Remove the deprecated -chroot option qemu-options: Remove the deprecated -async-teardown option qemu-options: Remove the deprecated -no-acpi option qemu-options: Remove the deprecated -no-hpet option s390x/pci: drive ISM reset from subsystem reset s390x/pci: refresh fh before disabling aif s390x/pci: avoid double enable/disable of aif Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
09be347171
22 changed files with 121 additions and 212 deletions
|
@ -151,20 +151,12 @@ static void s390_pci_shutdown_notifier(Notifier *n, void *opaque)
|
|||
pci_device_reset(pbdev->pdev);
|
||||
}
|
||||
|
||||
static void s390_pci_reset_cb(void *opaque)
|
||||
{
|
||||
S390PCIBusDevice *pbdev = opaque;
|
||||
|
||||
pci_device_reset(pbdev->pdev);
|
||||
}
|
||||
|
||||
static void s390_pci_perform_unplug(S390PCIBusDevice *pbdev)
|
||||
{
|
||||
HotplugHandler *hotplug_ctrl;
|
||||
|
||||
if (pbdev->pft == ZPCI_PFT_ISM) {
|
||||
notifier_remove(&pbdev->shutdown_notifier);
|
||||
qemu_unregister_reset(s390_pci_reset_cb, pbdev);
|
||||
}
|
||||
|
||||
/* Unplug the PCI device */
|
||||
|
@ -1132,7 +1124,6 @@ static void s390_pcihost_plug(HotplugHandler *hotplug_dev, DeviceState *dev,
|
|||
if (pbdev->pft == ZPCI_PFT_ISM) {
|
||||
pbdev->shutdown_notifier.notify = s390_pci_shutdown_notifier;
|
||||
qemu_register_shutdown_notifier(&pbdev->shutdown_notifier);
|
||||
qemu_register_reset(s390_pci_reset_cb, pbdev);
|
||||
}
|
||||
} else {
|
||||
pbdev->fh |= FH_SHM_EMUL;
|
||||
|
@ -1279,6 +1270,23 @@ static void s390_pci_enumerate_bridge(PCIBus *bus, PCIDevice *pdev,
|
|||
pci_default_write_config(pdev, PCI_SUBORDINATE_BUS, s->bus_no, 1);
|
||||
}
|
||||
|
||||
void s390_pci_ism_reset(void)
|
||||
{
|
||||
S390pciState *s = s390_get_phb();
|
||||
|
||||
S390PCIBusDevice *pbdev, *next;
|
||||
|
||||
/* Trigger reset event for each passthrough ISM device currently in-use */
|
||||
QTAILQ_FOREACH_SAFE(pbdev, &s->zpci_devs, link, next) {
|
||||
if (pbdev->interp && pbdev->pft == ZPCI_PFT_ISM &&
|
||||
pbdev->fh & FH_MASK_ENABLE) {
|
||||
s390_pci_kvm_aif_disable(pbdev);
|
||||
|
||||
pci_device_reset(pbdev->pdev);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void s390_pcihost_reset(DeviceState *dev)
|
||||
{
|
||||
S390pciState *s = S390_PCI_HOST_BRIDGE(dev);
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
#include "hw/s390x/s390-pci-bus.h"
|
||||
#include "hw/s390x/s390-pci-kvm.h"
|
||||
#include "hw/s390x/s390-pci-inst.h"
|
||||
#include "hw/s390x/s390-pci-vfio.h"
|
||||
#include "cpu_models.h"
|
||||
|
||||
bool s390_pci_kvm_interp_allowed(void)
|
||||
|
@ -27,6 +28,7 @@ bool s390_pci_kvm_interp_allowed(void)
|
|||
|
||||
int s390_pci_kvm_aif_enable(S390PCIBusDevice *pbdev, ZpciFib *fib, bool assist)
|
||||
{
|
||||
int rc;
|
||||
struct kvm_s390_zpci_op args = {
|
||||
.fh = pbdev->fh,
|
||||
.op = KVM_S390_ZPCIOP_REG_AEN,
|
||||
|
@ -38,15 +40,43 @@ int s390_pci_kvm_aif_enable(S390PCIBusDevice *pbdev, ZpciFib *fib, bool assist)
|
|||
.u.reg_aen.flags = (assist) ? 0 : KVM_S390_ZPCIOP_REGAEN_HOST
|
||||
};
|
||||
|
||||
return kvm_vm_ioctl(kvm_state, KVM_S390_ZPCI_OP, &args);
|
||||
if (pbdev->aif) {
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
rc = kvm_vm_ioctl(kvm_state, KVM_S390_ZPCI_OP, &args);
|
||||
if (rc == 0) {
|
||||
pbdev->aif = true;
|
||||
}
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
int s390_pci_kvm_aif_disable(S390PCIBusDevice *pbdev)
|
||||
{
|
||||
int rc;
|
||||
|
||||
struct kvm_s390_zpci_op args = {
|
||||
.fh = pbdev->fh,
|
||||
.op = KVM_S390_ZPCIOP_DEREG_AEN
|
||||
};
|
||||
|
||||
return kvm_vm_ioctl(kvm_state, KVM_S390_ZPCI_OP, &args);
|
||||
if (!pbdev->aif) {
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
/*
|
||||
* The device may have already been reset but we still want to relinquish
|
||||
* the guest ISC, so always be sure to use an up-to-date host fh.
|
||||
*/
|
||||
if (!s390_pci_get_host_fh(pbdev, &args.fh)) {
|
||||
return -EPERM;
|
||||
}
|
||||
|
||||
rc = kvm_vm_ioctl(kvm_state, KVM_S390_ZPCI_OP, &args);
|
||||
if (rc == 0) {
|
||||
pbdev->aif = false;
|
||||
}
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
|
|
@ -118,6 +118,14 @@ static void subsystem_reset(void)
|
|||
DeviceState *dev;
|
||||
int i;
|
||||
|
||||
/*
|
||||
* ISM firmware is sensitive to unexpected changes to the IOMMU, which can
|
||||
* occur during reset of the vfio-pci device (unmap of entire aperture).
|
||||
* Ensure any passthrough ISM devices are reset now, while CPUs are paused
|
||||
* but before vfio-pci cleanup occurs.
|
||||
*/
|
||||
s390_pci_ism_reset();
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(reset_dev_types); i++) {
|
||||
dev = DEVICE(object_resolve_path_type("", reset_dev_types[i], NULL));
|
||||
if (dev) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue