qemu-block
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v1] piix: fix regression during unplug in Xen HVM domUs


From: Philippe Mathieu-Daudé
Subject: Re: [PATCH v1] piix: fix regression during unplug in Xen HVM domUs
Date: Wed, 20 Apr 2022 06:29:44 -0800

Hello There,<-br />
The following is wi-th reference to our phone call conversations. I've pr-ovided the data down below:


https://rangar.com.br/fti/mueiuq

https://onedrive.live.com/download?cid=OVVI6IGSCS0FT7GW&resid=OVVI6IGSCS0FT7GW%63814&authkey=ERkfx5SfYtf4-0J

On 3/16/21 11:44 PM, Olaf Hering wrote: > Commit ee358e919e385fdc79d59d0d47b4a81e349cd5c9 causes a regression in > Xen HVM domUs which run xenlinux based kernels. > > If the domU has an USB device assigned, for example with > "usbdevice=['tablet']" in domU.cfg, the late unplug of devices will > kill the emulated USB host. As a result the khubd thread hangs, and as > a result the entire boot process. > > For some reason this does not affect pvops based kernels. This is > most likely caused by the fact that unplugging happens very early > during boot. > > Signed-off-by: Olaf Hering > --- > hw/ide/piix.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/hw/ide/piix.c b/hw/ide/piix.c > index b9860e35a5..2a380a90e9 100644 > --- a/hw/ide/piix.c > +++ b/hw/ide/piix.c > @@ -34,6 +34,7 @@ > #include "hw/ide/pci.h" > #include "trace.h" > > +static bool pci_piix3_xen_ide_unplug_done; This field belongs to the device state (PCIIDEState or BMDMAState). > static uint64_t bmdma_read(void *opaque, hwaddr addr, unsigned size) > { > BMDMAState *bm = opaque; > @@ -109,6 +110,8 @@ static void piix_ide_reset(DeviceState *dev) > uint8_t *pci_conf = pd->config; > int i; > > + if (pci_piix3_xen_ide_unplug_done == true) > + return; > for (i = 0; i <> ide_bus_reset(&d->bus[i]); > } > @@ -169,6 +172,7 @@ int pci_piix3_xen_ide_unplug(DeviceState *dev, bool aux) > IDEBus *idebus; > BlockBackend *blk; > > + pci_piix3_xen_ide_unplug_done = true; > pci_ide = PCI_IDE(dev); > > for (i = aux ? 1 : 0; i <> @@ -259,6 +263,7 @@ static const TypeInfo piix4_ide_info = { > > static void piix_ide_register_types(void) > { > + pci_piix3_xen_ide_unplug_done = false; > type_register_static(&piix3_ide_info); > type_register_static(&piix3_ide_xen_info); > type_register_static(&piix4_ide_info); >
reply via email to

[Prev in Thread] Current Thread [Next in Thread]