From: "Michael S. Tsirkin" <mst@redhat.com>
To: Bernhard Beschow <shentey@gmail.com>
Cc: qemu-devel@nongnu.org,
Richard Henderson <richard.henderson@linaro.org>,
xen-devel@lists.xenproject.org, qemu-trivial@nongnu.org,
Eduardo Habkost <eduardo@habkost.net>,
Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
Stefano Stabellini <sstabellini@kernel.org>,
Paolo Bonzini <pbonzini@redhat.com>,
Anthony Perard <anthony.perard@citrix.com>,
Paul Durrant <paul@xen.org>
Subject: Re: [PATCH 2/2] hw/i386/xen/xen-hvm: Inline xen_piix_pci_write_config_client() and remove it
Date: Sun, 26 Jun 2022 08:59:11 -0400 [thread overview]
Message-ID: <20220626085903-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <20220626094656.15673-3-shentey@gmail.com>
On Sun, Jun 26, 2022 at 11:46:56AM +0200, Bernhard Beschow wrote:
> xen_piix_pci_write_config_client() is implemented in the xen sub tree and
> uses PIIX constants internally, thus creating a direct dependency on
> PIIX. Now that xen_set_pci_link_route() is stubbable, the logic of
> xen_piix_pci_write_config_client() can be moved to PIIX which resolves
> the dependency.
>
> Signed-off-by: Bernhard Beschow <shentey@gmail.com>
Fine by me
Acked-by: Michael S. Tsirkin <mst@redhat.com>
> ---
> hw/i386/xen/xen-hvm.c | 18 ------------------
> hw/isa/piix3.c | 15 ++++++++++++++-
> include/hw/xen/xen.h | 1 -
> stubs/xen-hw-stub.c | 4 ----
> 4 files changed, 14 insertions(+), 24 deletions(-)
>
> diff --git a/hw/i386/xen/xen-hvm.c b/hw/i386/xen/xen-hvm.c
> index 204fda7949..e4293d6d66 100644
> --- a/hw/i386/xen/xen-hvm.c
> +++ b/hw/i386/xen/xen-hvm.c
> @@ -15,7 +15,6 @@
> #include "hw/pci/pci.h"
> #include "hw/pci/pci_host.h"
> #include "hw/i386/pc.h"
> -#include "hw/southbridge/piix.h"
> #include "hw/irq.h"
> #include "hw/hw.h"
> #include "hw/i386/apic-msidef.h"
> @@ -149,23 +148,6 @@ void xen_piix3_set_irq(void *opaque, int irq_num, int level)
> irq_num & 3, level);
> }
>
> -void xen_piix_pci_write_config_client(uint32_t address, uint32_t val, int len)
> -{
> - int i;
> -
> - /* Scan for updates to PCI link routes (0x60-0x63). */
> - for (i = 0; i < len; i++) {
> - uint8_t v = (val >> (8 * i)) & 0xff;
> - if (v & 0x80) {
> - v = 0;
> - }
> - v &= 0xf;
> - if (((address + i) >= PIIX_PIRQCA) && ((address + i) <= PIIX_PIRQCD)) {
> - xen_set_pci_link_route(address + i - PIIX_PIRQCA, v);
> - }
> - }
> -}
> -
> int xen_set_pci_link_route(uint8_t link, uint8_t irq)
> {
> return xendevicemodel_set_pci_link_route(xen_dmod, xen_domid, link, irq);
> diff --git a/hw/isa/piix3.c b/hw/isa/piix3.c
> index 6388558f92..48f9ab1096 100644
> --- a/hw/isa/piix3.c
> +++ b/hw/isa/piix3.c
> @@ -138,7 +138,20 @@ static void piix3_write_config(PCIDevice *dev,
> static void piix3_write_config_xen(PCIDevice *dev,
> uint32_t address, uint32_t val, int len)
> {
> - xen_piix_pci_write_config_client(address, val, len);
> + int i;
> +
> + /* Scan for updates to PCI link routes (0x60-0x63). */
> + for (i = 0; i < len; i++) {
> + uint8_t v = (val >> (8 * i)) & 0xff;
> + if (v & 0x80) {
> + v = 0;
> + }
> + v &= 0xf;
> + if (((address + i) >= PIIX_PIRQCA) && ((address + i) <= PIIX_PIRQCD)) {
> + xen_set_pci_link_route(address + i - PIIX_PIRQCA, v);
> + }
> + }
> +
> piix3_write_config(dev, address, val, len);
> }
>
> diff --git a/include/hw/xen/xen.h b/include/hw/xen/xen.h
> index 13bffaef53..afdf9c436a 100644
> --- a/include/hw/xen/xen.h
> +++ b/include/hw/xen/xen.h
> @@ -23,7 +23,6 @@ extern bool xen_domid_restrict;
> int xen_pci_slot_get_pirq(PCIDevice *pci_dev, int irq_num);
> int xen_set_pci_link_route(uint8_t link, uint8_t irq);
> void xen_piix3_set_irq(void *opaque, int irq_num, int level);
> -void xen_piix_pci_write_config_client(uint32_t address, uint32_t val, int len);
> void xen_hvm_inject_msi(uint64_t addr, uint32_t data);
> int xen_is_pirq_msi(uint32_t msi_data);
>
> diff --git a/stubs/xen-hw-stub.c b/stubs/xen-hw-stub.c
> index 743967623f..34a22f2ad7 100644
> --- a/stubs/xen-hw-stub.c
> +++ b/stubs/xen-hw-stub.c
> @@ -19,10 +19,6 @@ void xen_piix3_set_irq(void *opaque, int irq_num, int level)
> {
> }
>
> -void xen_piix_pci_write_config_client(uint32_t address, uint32_t val, int len)
> -{
> -}
> -
> int xen_set_pci_link_route(uint8_t link, uint8_t irq)
> {
> return -1;
> --
> 2.36.1
next prev parent reply other threads:[~2022-06-26 12:59 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-26 9:46 [PATCH 0/2] Decouple Xen-HVM from PIIX Bernhard Beschow
2022-06-26 9:46 ` [PATCH 1/2] hw/i386/xen/xen-hvm: Allow for stubbing xen_set_pci_link_route() Bernhard Beschow
2022-06-27 8:52 ` Durrant, Paul
2022-06-28 22:24 ` Laurent Vivier
2022-06-26 9:46 ` [PATCH 2/2] hw/i386/xen/xen-hvm: Inline xen_piix_pci_write_config_client() and remove it Bernhard Beschow
2022-06-26 12:59 ` Michael S. Tsirkin [this message]
2022-06-27 8:52 ` Durrant, Paul
2022-06-28 22:25 ` Laurent Vivier
2022-06-28 20:58 ` [PATCH 0/2] Decouple Xen-HVM from PIIX B
2022-06-28 21:09 ` Stefano Stabellini
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=20220626085903-mutt-send-email-mst@kernel.org \
--to=mst@redhat.com \
--cc=anthony.perard@citrix.com \
--cc=eduardo@habkost.net \
--cc=marcel.apfelbaum@gmail.com \
--cc=paul@xen.org \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-trivial@nongnu.org \
--cc=richard.henderson@linaro.org \
--cc=shentey@gmail.com \
--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.