From: Olaf Hering <olaf@aepfle.de>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: "John Snow" <jsnow@redhat.com>,
xen-devel@lists.xenproject.org,
"Stefano Stabellini" <sstabellini@kernel.org>,
qemu-devel@nongnu.org, qemu-block@nongnu.org,
"Philippe Mathieu-Daudé" <f4bug@amsat.org>
Subject: Re: [PATCH v2] piix: fix regression during unplug in Xen HVM domUs
Date: Wed, 10 May 2023 00:58:27 +0200 [thread overview]
Message-ID: <20230509225818.GA16290@aepfle.de> (raw)
In-Reply-To: <dae251e1-f808-708e-902c-05cfcbbea9cf@redhat.com>
[-- Attachment #1: Type: text/plain, Size: 3897 bytes --]
Resuming this old thread about an unfixed bug, which was introduced in qemu-4.2:
qemu ends up in piix_ide_reset from pci_unplug_disks.
This was not the case prior 4.2, the removed call to
qemu_register_reset(piix3_reset, d) in
ee358e919e385fdc79d59d0d47b4a81e349cd5c9 did apparently nothing.
In my debugging (with v8.0.0) it turned out the three pci_set_word
causes the domU to hang. In fact, it is just the last one:
pci_set_byte(pci_conf + 0x20, 0x01); /* BMIBA: 20-23h */
It changes the value from 0xc121 to 0x1.
The question is: what does this do in practice?
Starting with recent qemu (like 7.2), the domU sometimes proceeds with
these messages:
[ 1.631161] uhci_hcd 0000:00:01.2: host system error, PCI problems?
[ 1.634965] uhci_hcd 0000:00:01.2: host controller process error, something bad happened!
[ 1.634965] uhci_hcd 0000:00:01.2: host controller halted, very bad!
[ 1.634965] uhci_hcd 0000:00:01.2: HC died; cleaning up
Loading basic drivers...[ 2.398048] Disabling IRQ #23
Is anyone familiar enough with PIIX3 and knows how these devices are
interacting?
00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II]
00:01.2 USB controller: Intel Corporation 82371SB PIIX3 USB [Natoma/Triton II] (rev 01)
00:01.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 03)
00:02.0 Unassigned class [ff80]: XenSource, Inc. Xen Platform Device (rev 01)
00:03.0 VGA compatible controller: Cirrus Logic GD 5446
Thanks,
Olaf
On Thu, Mar 25, Paolo Bonzini wrote:
> On 25/03/21 12:12, Olaf Hering wrote:
> > Am Mon, 22 Mar 2021 18:09:17 -0400
> > schrieb John Snow <jsnow@redhat.com>:
> >
> > > My understanding is that XEN has some extra disks that it unplugs when
> > > it later figures out it doesn't need them. How exactly this works is
> > > something I've not looked into too closely.
> >
> > It has no extra disks, why would it?
> >
> > I assume each virtualization variant has some sort of unplug if it has to support guests that lack PV/virtio/enlightened/whatever drivers.
>
> No, it's Xen only and really should be legacy. Ideally one would just have
> devices supported at all levels from firmware to kernel.
>
> > > So if these IDE devices have been "unplugged" already, we avoid
> > > resetting them here. What about this reset causes the bug you describe
> > > in the commit message?
> > >
> > > Does this reset now happen earlier/later as compared to what it did
> > > prior to ee358e91 ?
> >
> > Prior this commit, piix_ide_reset was only called when the entire
> > emulated machine was reset. Like: never. With this commit,
> > piix_ide_reset will be called from pci_piix3_xen_ide_unplug. For some
> > reason it confuses the emulated USB hardware. Why it does confused
> > it, no idea.
>
> > I wonder what the purpose of the qdev_reset_all() call really is. It
> > is 10 years old. It might be stale.
>
> piix_ide_reset is only calling ide_bus_reset, and from there ide_reset and
> bmdma_reset. All of these functions do just two things: reset internal
> registers and ensure pending I/O is completed or canceled. The latter is
> indeed unnecessary; drain/flush/detach is already done before the call to
> qdev_reset_all.
>
> But the fact that it breaks USB is weird. That's the part that needs to be
> debugged, because changing IDE to unbreak USB needs an explanation even if
> it's the right thing to do.
>
> If you don't want to debug it, removing the qdev_reset_all call might do the
> job; you'll have to see what the Xen maintainers think of it. But if you
> don't debug the USB issue now, it will come back later almost surely.
>
> Paolo
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
next prev parent reply other threads:[~2023-05-09 22:59 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-03-17 7:00 [PATCH v2] piix: fix regression during unplug in Xen HVM domUs Olaf Hering
2021-03-22 22:09 ` John Snow
2021-03-22 22:09 ` John Snow
2021-03-25 11:12 ` Olaf Hering
2021-03-25 11:12 ` Olaf Hering
2021-03-25 16:49 ` Paolo Bonzini
2023-05-09 22:58 ` Olaf Hering [this message]
2023-05-10 7:47 ` Olaf Hering
2023-05-12 21:12 ` Stefano Stabellini
2023-05-16 17:38 ` John Snow
2023-05-16 20:00 ` Olaf Hering
2023-06-26 21:19 ` Olaf Hering
2023-06-27 7:11 ` Paolo Bonzini
2023-06-27 10:12 ` Bernhard Beschow
2023-06-27 11:40 ` Olaf Hering
2023-06-27 12:07 ` Olaf Hering
2023-06-28 9:27 ` Bernhard Beschow
2023-06-30 7:29 ` Olaf Hering
2023-06-30 8:05 ` Bernhard Beschow
2023-06-30 11:32 ` Olaf Hering
2023-06-30 22:15 ` Bernhard Beschow
2023-06-30 8:48 ` Paolo Bonzini
2023-07-01 9:53 ` Bernhard Beschow
2023-07-01 11:58 ` Mark Cave-Ayland
2023-07-02 22:25 ` Bernhard Beschow
2023-06-27 11:32 ` Olaf Hering
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230509225818.GA16290@aepfle.de \
--to=olaf@aepfle.de \
--cc=f4bug@amsat.org \
--cc=jsnow@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=sstabellini@kernel.org \
--cc=xen-devel@lists.xenproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.