From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 5DD01C4332F for ; Wed, 21 Dec 2022 11:33:52 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p7xM1-0003Za-Hc; Wed, 21 Dec 2022 06:33:45 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p7xLq-0003YP-O6 for qemu-devel@nongnu.org; Wed, 21 Dec 2022 06:33:36 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p7xLl-0004Xy-LO for qemu-devel@nongnu.org; Wed, 21 Dec 2022 06:33:33 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1671622408; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=FTqOZaVPDJByvNyQrTn4jCy/L3TiM9JbP0QQ27yJpL4=; b=TxYRmfWZv5e/r53LxZ4+OgGLwuD6ad925YE2OD9QtJWeYU5CVKlkKDLgZGDhpRKFtnqKHg 9WyaPC+iYseuD/MnmL41TyHgugjA15vQ4ukyNI0eXGUENx1mp/66tt66HSDnYnKe7nX/NR S7GJAZBcFuHfW0NDxbmLdAVtKSOfRTk= Received: from mail-qk1-f198.google.com (mail-qk1-f198.google.com [209.85.222.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-572-8OFzJTq7Oh-iQPZJVL8NCQ-1; Wed, 21 Dec 2022 06:33:24 -0500 X-MC-Unique: 8OFzJTq7Oh-iQPZJVL8NCQ-1 Received: by mail-qk1-f198.google.com with SMTP id bs13-20020a05620a470d00b007024c37f800so6343984qkb.10 for ; Wed, 21 Dec 2022 03:33:24 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=FTqOZaVPDJByvNyQrTn4jCy/L3TiM9JbP0QQ27yJpL4=; b=NGkLNwtBbumr9gvsjdAvqu2K8MeU2+spAcpeq9SC6dbxYktYy8PbGF04klFO9819vj hkjBk6clAmrRwDMrr6WgdAUAWNS0TUBDRivkhN3TDU2N84XB++bwp2cS/9osf7zEk+BF l56JLjoaluzUMLdlq3sey1JlmbPqAPcM+Kpp/ODuuRZuDvhgn4RyYI8f0GNBcGCLaQ7X 7O4PJJqfrkOqiolmHnKIBfPgHxQ0FTJV6eZhOtmLIz/y76fv58yhSRvoXcqLnCRKPRml Y9bG3ZVJBJ9N4Lv8fXlpqY7Iz9txpDzu1ejubMyvU6Jw44+np4N7nRBsj2YwIWBk4tKB nCtg== X-Gm-Message-State: AFqh2krov//m3ri4QlZ1nejTdMos5dNpbruG3Zb03vQ1gXR1ErOSTH98 Mq4AXjGLN9dTi3+pTbKF46y5JWg7+gf3zWfIWIPx271Yr5NvhBcPoUmozs4kKNpquBVFvsCe/ME tghOiwPEvN0YU1Tw= X-Received: by 2002:a05:6214:3b82:b0:4c7:5d32:a237 with SMTP id nf2-20020a0562143b8200b004c75d32a237mr1952713qvb.33.1671622403534; Wed, 21 Dec 2022 03:33:23 -0800 (PST) X-Google-Smtp-Source: AMrXdXvFeXi6BLeiMQUgEXOy2zlk1yM6Bt5lIVuvExHMKfhoIjQh/8EHqpp+xqdBtJuKjOlEPaVxkQ== X-Received: by 2002:a05:6214:3b82:b0:4c7:5d32:a237 with SMTP id nf2-20020a0562143b8200b004c75d32a237mr1952648qvb.33.1671622402667; Wed, 21 Dec 2022 03:33:22 -0800 (PST) Received: from redhat.com ([37.19.199.117]) by smtp.gmail.com with ESMTPSA id t19-20020a05620a451300b006fba0a389a4sm10998405qkp.88.2022.12.21.03.33.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 21 Dec 2022 03:33:21 -0800 (PST) Date: Wed, 21 Dec 2022 06:33:16 -0500 From: "Michael S. Tsirkin" To: Markus Armbruster Cc: qemu-devel@nongnu.org, marcel.apfelbaum@gmail.com, ben.widawsky@intel.com, jonathan.cameron@huawei.com, philmd@linaro.org Subject: Re: [PATCH 4/5] include/hw/pci: Split pci_device.h off pci.h Message-ID: <20221221063216-mutt-send-email-mst@kernel.org> References: <20221209134802.3642942-1-armbru@redhat.com> <20221209134802.3642942-5-armbru@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20221209134802.3642942-5-armbru@redhat.com> Received-SPF: pass client-ip=170.10.133.124; envelope-from=mst@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org On Fri, Dec 09, 2022 at 02:48:01PM +0100, Markus Armbruster wrote: > PCIDeviceClass and PCIDevice are defined in pci.h. Many users of the > header don't actually need them. Similar structs live in their own > headers: PCIBusClass and PCIBus in pci_bus.h, PCIBridge in > pci_bridge.h, PCIHostBridgeClass and PCIHostState in pci_host.h, > PCIExpressHost in pcie_host.h, and PCIERootPortClass, PCIEPort, and > PCIESlot in pcie_port.h. > > Move PCIDeviceClass and PCIDeviceClass to new pci_device.h, along with > the code that needs them. Adjust include directives. > > This also enables the next commit. > > Signed-off-by: Markus Armbruster checkpatch is unhappy: ./scripts/checkpatch.pl /tmp/patch WARNING: added, moved or deleted file(s), does MAINTAINERS need updating? #707: new file mode 100644 ERROR: spaces required around that '*' (ctx:WxV) #997: FILE: include/hw/pci/pci_device.h:286: + uint##_bits##_t *val, \ ^ It's right - we need a MAINTAINERS entry. Not sure how to fix the error - any idea? > --- > hw/display/ati_int.h | 2 +- > hw/display/qxl.h | 3 +- > hw/ide/ahci_internal.h | 2 +- > hw/net/vmxnet3_defs.h | 2 +- > hw/nvme/nvme.h | 2 +- > hw/rdma/vmw/pvrdma.h | 1 + > hw/scsi/mptsas.h | 2 +- > hw/usb/hcd-ehci.h | 2 +- > hw/usb/hcd-uhci.h | 2 +- > hw/usb/hcd-xhci-pci.h | 1 + > hw/vfio/pci.h | 2 +- > include/hw/acpi/piix4.h | 2 +- > include/hw/arm/allwinner-a10.h | 1 + > include/hw/cxl/cxl_device.h | 2 +- > include/hw/ide/pci.h | 2 +- > include/hw/misc/macio/macio.h | 2 +- > include/hw/pci-host/gpex.h | 2 +- > include/hw/pci-host/i440fx.h | 2 +- > include/hw/pci-host/q35.h | 2 +- > include/hw/pci-host/sabre.h | 2 +- > include/hw/pci/msi.h | 2 +- > include/hw/pci/pci.h | 355 ------------------------------ > include/hw/pci/pci_bridge.h | 2 +- > include/hw/pci/pci_device.h | 361 +++++++++++++++++++++++++++++++ > include/hw/pci/pcie_port.h | 1 + > include/hw/pci/shpc.h | 2 +- > include/hw/remote/iohub.h | 2 +- > include/hw/remote/proxy.h | 2 +- > include/hw/sd/sdhci.h | 2 +- > include/hw/southbridge/piix.h | 3 +- > include/hw/xen/xen_common.h | 2 +- > hw/acpi/erst.c | 2 +- > hw/audio/ac97.c | 2 +- > hw/audio/es1370.c | 2 +- > hw/audio/via-ac97.c | 2 +- > hw/char/serial-pci-multi.c | 2 +- > hw/char/serial-pci.c | 2 +- > hw/core/qdev-properties-system.c | 1 + > hw/display/bochs-display.c | 2 +- > hw/display/cirrus_vga.c | 2 +- > hw/display/sm501.c | 2 +- > hw/display/vga-pci.c | 2 +- > hw/display/vmware_vga.c | 2 +- > hw/i386/xen/xen_pvdevice.c | 2 +- > hw/ipack/tpci200.c | 2 +- > hw/ipmi/pci_ipmi_bt.c | 2 +- > hw/ipmi/pci_ipmi_kcs.c | 2 +- > hw/isa/i82378.c | 2 +- > hw/mips/gt64xxx_pci.c | 2 +- > hw/misc/pci-testdev.c | 2 +- > hw/misc/pvpanic-pci.c | 2 +- > hw/net/can/can_kvaser_pci.c | 2 +- > hw/net/can/can_mioe3680_pci.c | 2 +- > hw/net/can/can_pcm3680_pci.c | 2 +- > hw/net/can/ctucan_pci.c | 2 +- > hw/net/e1000.c | 2 +- > hw/net/e1000x_common.c | 2 +- > hw/net/eepro100.c | 2 +- > hw/net/ne2000-pci.c | 2 +- > hw/net/net_tx_pkt.c | 2 +- > hw/net/pcnet-pci.c | 2 +- > hw/net/rocker/rocker.c | 2 +- > hw/net/rocker/rocker_desc.c | 2 +- > hw/net/rtl8139.c | 2 +- > hw/net/sungem.c | 2 +- > hw/net/sunhme.c | 2 +- > hw/net/tulip.c | 2 +- > hw/net/virtio-net.c | 2 +- > hw/pci-host/bonito.c | 2 +- > hw/pci-host/dino.c | 2 +- > hw/pci-host/grackle.c | 2 +- > hw/pci-host/mv64361.c | 2 +- > hw/pci-host/ppce500.c | 2 +- > hw/pci-host/raven.c | 2 +- > hw/pci-host/sh_pci.c | 2 +- > hw/pci-host/uninorth.c | 2 +- > hw/pci-host/versatile.c | 2 +- > hw/pci/pcie_host.c | 2 +- > hw/pci/pcie_sriov.c | 2 +- > hw/pci/slotid_cap.c | 2 +- > hw/ppc/ppc440_pcix.c | 2 +- > hw/ppc/ppc4xx_pci.c | 2 +- > hw/ppc/spapr_pci_vfio.c | 1 + > hw/rdma/rdma_utils.c | 2 +- > hw/s390x/s390-pci-inst.c | 1 + > hw/scsi/esp-pci.c | 2 +- > hw/scsi/lsi53c895a.c | 2 +- > hw/smbios/smbios.c | 1 + > hw/usb/hcd-ohci-pci.c | 2 +- > hw/watchdog/wdt_i6300esb.c | 2 +- > ui/util.c | 2 +- > 91 files changed, 450 insertions(+), 438 deletions(-) > create mode 100644 include/hw/pci/pci_device.h > > diff --git a/hw/display/ati_int.h b/hw/display/ati_int.h > index 8acb9c7466..e8d3c7af75 100644 > --- a/hw/display/ati_int.h > +++ b/hw/display/ati_int.h > @@ -10,7 +10,7 @@ > #define ATI_INT_H > > #include "qemu/timer.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/i2c/bitbang_i2c.h" > #include "vga_int.h" > #include "qom/object.h" > diff --git a/hw/display/qxl.h b/hw/display/qxl.h > index 7894bd5134..cd82c7a6fe 100644 > --- a/hw/display/qxl.h > +++ b/hw/display/qxl.h > @@ -1,8 +1,7 @@ > #ifndef HW_QXL_H > #define HW_QXL_H > > - > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "vga_int.h" > #include "qemu/thread.h" > > diff --git a/hw/ide/ahci_internal.h b/hw/ide/ahci_internal.h > index 109de9e2d1..303fcd7235 100644 > --- a/hw/ide/ahci_internal.h > +++ b/hw/ide/ahci_internal.h > @@ -26,7 +26,7 @@ > > #include "hw/ide/ahci.h" > #include "hw/ide/internal.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > > #define AHCI_MEM_BAR_SIZE 0x1000 > #define AHCI_MAX_PORTS 32 > diff --git a/hw/net/vmxnet3_defs.h b/hw/net/vmxnet3_defs.h > index 71440509ca..64034af6d5 100644 > --- a/hw/net/vmxnet3_defs.h > +++ b/hw/net/vmxnet3_defs.h > @@ -19,7 +19,7 @@ > > #include "net/net.h" > #include "hw/net/vmxnet3.h" > -#include "qom/object.h" > +#include "hw/pci/pci_device.h" > > #define TYPE_VMXNET3 "vmxnet3" > typedef struct VMXNET3State VMXNET3State; > diff --git a/hw/nvme/nvme.h b/hw/nvme/nvme.h > index 7adf042ec3..16da27a69b 100644 > --- a/hw/nvme/nvme.h > +++ b/hw/nvme/nvme.h > @@ -19,7 +19,7 @@ > #define HW_NVME_NVME_H > > #include "qemu/uuid.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/block/block.h" > > #include "block/nvme.h" > diff --git a/hw/rdma/vmw/pvrdma.h b/hw/rdma/vmw/pvrdma.h > index 0caf95ede8..4cbc10c980 100644 > --- a/hw/rdma/vmw/pvrdma.h > +++ b/hw/rdma/vmw/pvrdma.h > @@ -19,6 +19,7 @@ > #include "qemu/units.h" > #include "qemu/notify.h" > #include "hw/pci/msix.h" > +#include "hw/pci/pci_device.h" > #include "chardev/char-fe.h" > #include "hw/net/vmxnet3_defs.h" > > diff --git a/hw/scsi/mptsas.h b/hw/scsi/mptsas.h > index c046497db7..04e97ce3af 100644 > --- a/hw/scsi/mptsas.h > +++ b/hw/scsi/mptsas.h > @@ -2,7 +2,7 @@ > #define MPTSAS_H > > #include "mpi.h" > -#include "qom/object.h" > +#include "hw/pci/pci_device.h" > > #define MPTSAS_NUM_PORTS 8 > #define MPTSAS_MAX_FRAMES 2048 /* Firmware limit at 65535 */ > diff --git a/hw/usb/hcd-ehci.h b/hw/usb/hcd-ehci.h > index 4d4b2830b7..2cd821f49e 100644 > --- a/hw/usb/hcd-ehci.h > +++ b/hw/usb/hcd-ehci.h > @@ -21,7 +21,7 @@ > #include "qemu/timer.h" > #include "hw/usb.h" > #include "sysemu/dma.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/sysbus.h" > > #ifndef EHCI_DEBUG > diff --git a/hw/usb/hcd-uhci.h b/hw/usb/hcd-uhci.h > index c85ab7868e..5843af504a 100644 > --- a/hw/usb/hcd-uhci.h > +++ b/hw/usb/hcd-uhci.h > @@ -30,7 +30,7 @@ > > #include "exec/memory.h" > #include "qemu/timer.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/usb.h" > > typedef struct UHCIQueue UHCIQueue; > diff --git a/hw/usb/hcd-xhci-pci.h b/hw/usb/hcd-xhci-pci.h > index c193f79443..08f70ce97c 100644 > --- a/hw/usb/hcd-xhci-pci.h > +++ b/hw/usb/hcd-xhci-pci.h > @@ -24,6 +24,7 @@ > #ifndef HW_USB_HCD_XHCI_PCI_H > #define HW_USB_HCD_XHCI_PCI_H > > +#include "hw/pci/pci_device.h" > #include "hw/usb.h" > #include "hcd-xhci.h" > > diff --git a/hw/vfio/pci.h b/hw/vfio/pci.h > index 7c236a52f4..177abcc8fb 100644 > --- a/hw/vfio/pci.h > +++ b/hw/vfio/pci.h > @@ -13,7 +13,7 @@ > #define HW_VFIO_VFIO_PCI_H > > #include "exec/memory.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/vfio/vfio-common.h" > #include "qemu/event_notifier.h" > #include "qemu/queue.h" > diff --git a/include/hw/acpi/piix4.h b/include/hw/acpi/piix4.h > index 32686a75c5..be1f8ea80e 100644 > --- a/include/hw/acpi/piix4.h > +++ b/include/hw/acpi/piix4.h > @@ -22,7 +22,7 @@ > #ifndef HW_ACPI_PIIX4_H > #define HW_ACPI_PIIX4_H > > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/acpi/acpi.h" > #include "hw/acpi/cpu_hotplug.h" > #include "hw/acpi/memory_hotplug.h" > diff --git a/include/hw/arm/allwinner-a10.h b/include/hw/arm/allwinner-a10.h > index a76dc7b84d..f9240ffa64 100644 > --- a/include/hw/arm/allwinner-a10.h > +++ b/include/hw/arm/allwinner-a10.h > @@ -4,6 +4,7 @@ > #include "qemu/error-report.h" > #include "hw/char/serial.h" > #include "hw/arm/boot.h" > +#include "hw/pci/pci_device.h" > #include "hw/timer/allwinner-a10-pit.h" > #include "hw/intc/allwinner-a10-pic.h" > #include "hw/net/allwinner_emac.h" > diff --git a/include/hw/cxl/cxl_device.h b/include/hw/cxl/cxl_device.h > index 3f91969db0..250adf18b2 100644 > --- a/include/hw/cxl/cxl_device.h > +++ b/include/hw/cxl/cxl_device.h > @@ -11,7 +11,7 @@ > #define CXL_DEVICE_H > > #include "hw/cxl/cxl_component.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/register.h" > > /* > diff --git a/include/hw/ide/pci.h b/include/hw/ide/pci.h > index d8384e1c42..2a6284acac 100644 > --- a/include/hw/ide/pci.h > +++ b/include/hw/ide/pci.h > @@ -2,7 +2,7 @@ > #define HW_IDE_PCI_H > > #include "hw/ide/internal.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "qom/object.h" > > #define BM_STATUS_DMAING 0x01 > diff --git a/include/hw/misc/macio/macio.h b/include/hw/misc/macio/macio.h > index 95d30a1745..86df2c2b60 100644 > --- a/include/hw/misc/macio/macio.h > +++ b/include/hw/misc/macio/macio.h > @@ -27,7 +27,7 @@ > #define MACIO_H > > #include "hw/char/escc.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/ide/internal.h" > #include "hw/intc/heathrow_pic.h" > #include "hw/misc/macio/cuda.h" > diff --git a/include/hw/pci-host/gpex.h b/include/hw/pci-host/gpex.h > index fcf8b63820..b0240bd768 100644 > --- a/include/hw/pci-host/gpex.h > +++ b/include/hw/pci-host/gpex.h > @@ -22,7 +22,7 @@ > > #include "exec/hwaddr.h" > #include "hw/sysbus.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/pci/pcie_host.h" > #include "qom/object.h" > > diff --git a/include/hw/pci-host/i440fx.h b/include/hw/pci-host/i440fx.h > index fc93e22732..bf57216c78 100644 > --- a/include/hw/pci-host/i440fx.h > +++ b/include/hw/pci-host/i440fx.h > @@ -11,7 +11,7 @@ > #ifndef HW_PCI_I440FX_H > #define HW_PCI_I440FX_H > > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/pci-host/pam.h" > #include "qom/object.h" > > diff --git a/include/hw/pci-host/q35.h b/include/hw/pci-host/q35.h > index ab989698ef..e89329c51e 100644 > --- a/include/hw/pci-host/q35.h > +++ b/include/hw/pci-host/q35.h > @@ -22,7 +22,7 @@ > #ifndef HW_Q35_H > #define HW_Q35_H > > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/pci/pcie_host.h" > #include "hw/pci-host/pam.h" > #include "qemu/units.h" > diff --git a/include/hw/pci-host/sabre.h b/include/hw/pci-host/sabre.h > index 01190241bb..d12de84ea2 100644 > --- a/include/hw/pci-host/sabre.h > +++ b/include/hw/pci-host/sabre.h > @@ -1,7 +1,7 @@ > #ifndef HW_PCI_HOST_SABRE_H > #define HW_PCI_HOST_SABRE_H > > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/pci/pci_host.h" > #include "hw/sparc/sun4u_iommu.h" > #include "qom/object.h" > diff --git a/include/hw/pci/msi.h b/include/hw/pci/msi.h > index 58aa576215..ee8ee469a6 100644 > --- a/include/hw/pci/msi.h > +++ b/include/hw/pci/msi.h > @@ -21,7 +21,7 @@ > #ifndef QEMU_MSI_H > #define QEMU_MSI_H > > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > > struct MSIMessage { > uint64_t address; > diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h > index 016e28a2a8..7048a373d1 100644 > --- a/include/hw/pci/pci.h > +++ b/include/hw/pci/pci.h > @@ -166,7 +166,6 @@ enum { > #define QEMU_PCI_VGA_IO_HI_SIZE 0x20 > > #include "hw/pci/pci_regs.h" > -#include "hw/pci/pcie.h" > > /* PCI HEADER_TYPE */ > #define PCI_HEADER_TYPE_MULTI_FUNCTION 0x80 > @@ -210,23 +209,6 @@ enum { > QEMU_PCIE_CAP_CXL = (1 << QEMU_PCIE_CXL_BITNR), > }; > > -#define TYPE_PCI_DEVICE "pci-device" > -typedef struct PCIDeviceClass PCIDeviceClass; > -DECLARE_OBJ_CHECKERS(PCIDevice, PCIDeviceClass, > - PCI_DEVICE, TYPE_PCI_DEVICE) > - > -/* > - * Implemented by devices that can be plugged on CXL buses. In the spec, this is > - * actually a "CXL Component, but we name it device to match the PCI naming. > - */ > -#define INTERFACE_CXL_DEVICE "cxl-device" > - > -/* Implemented by devices that can be plugged on PCI Express buses */ > -#define INTERFACE_PCIE_DEVICE "pci-express-device" > - > -/* Implemented by devices that can be plugged on Conventional PCI buses */ > -#define INTERFACE_CONVENTIONAL_PCI_DEVICE "conventional-pci-device" > - > typedef struct PCIINTxRoute { > enum { > PCI_INTX_ENABLED, > @@ -236,32 +218,6 @@ typedef struct PCIINTxRoute { > int irq; > } PCIINTxRoute; > > -struct PCIDeviceClass { > - DeviceClass parent_class; > - > - void (*realize)(PCIDevice *dev, Error **errp); > - PCIUnregisterFunc *exit; > - PCIConfigReadFunc *config_read; > - PCIConfigWriteFunc *config_write; > - > - uint16_t vendor_id; > - uint16_t device_id; > - uint8_t revision; > - uint16_t class_id; > - uint16_t subsystem_vendor_id; /* only for header type = 0 */ > - uint16_t subsystem_id; /* only for header type = 0 */ > - > - /* > - * pci-to-pci bridge or normal device. > - * This doesn't mean pci host switch. > - * When card bus bridge is supported, this would be enhanced. > - */ > - bool is_bridge; > - > - /* rom bar */ > - const char *romfile; > -}; > - > typedef void (*PCIINTxRoutingNotifier)(PCIDevice *dev); > typedef int (*MSIVectorUseNotifier)(PCIDevice *dev, unsigned int vector, > MSIMessage msg); > @@ -270,129 +226,6 @@ typedef void (*MSIVectorPollNotifier)(PCIDevice *dev, > unsigned int vector_start, > unsigned int vector_end); > > -enum PCIReqIDType { > - PCI_REQ_ID_INVALID = 0, > - PCI_REQ_ID_BDF, > - PCI_REQ_ID_SECONDARY_BUS, > - PCI_REQ_ID_MAX, > -}; > -typedef enum PCIReqIDType PCIReqIDType; > - > -struct PCIReqIDCache { > - PCIDevice *dev; > - PCIReqIDType type; > -}; > -typedef struct PCIReqIDCache PCIReqIDCache; > - > -struct PCIDevice { > - DeviceState qdev; > - bool partially_hotplugged; > - bool has_power; > - > - /* PCI config space */ > - uint8_t *config; > - > - /* > - * Used to enable config checks on load. Note that writable bits are > - * never checked even if set in cmask. > - */ > - uint8_t *cmask; > - > - /* Used to implement R/W bytes */ > - uint8_t *wmask; > - > - /* Used to implement RW1C(Write 1 to Clear) bytes */ > - uint8_t *w1cmask; > - > - /* Used to allocate config space for capabilities. */ > - uint8_t *used; > - > - /* the following fields are read only */ > - int32_t devfn; > - /* > - * Cached device to fetch requester ID from, to avoid the PCI tree > - * walking every time we invoke PCI request (e.g., MSI). For > - * conventional PCI root complex, this field is meaningless. > - */ > - PCIReqIDCache requester_id_cache; > - char name[64]; > - PCIIORegion io_regions[PCI_NUM_REGIONS]; > - AddressSpace bus_master_as; > - MemoryRegion bus_master_container_region; > - MemoryRegion bus_master_enable_region; > - > - /* do not access the following fields */ > - PCIConfigReadFunc *config_read; > - PCIConfigWriteFunc *config_write; > - > - /* Legacy PCI VGA regions */ > - MemoryRegion *vga_regions[QEMU_PCI_VGA_NUM_REGIONS]; > - bool has_vga; > - > - /* Current IRQ levels. Used internally by the generic PCI code. */ > - uint8_t irq_state; > - > - /* Capability bits */ > - uint32_t cap_present; > - > - /* Offset of MSI-X capability in config space */ > - uint8_t msix_cap; > - > - /* MSI-X entries */ > - int msix_entries_nr; > - > - /* Space to store MSIX table & pending bit array */ > - uint8_t *msix_table; > - uint8_t *msix_pba; > - > - /* May be used by INTx or MSI during interrupt notification */ > - void *irq_opaque; > - > - MSITriggerFunc *msi_trigger; > - MSIPrepareMessageFunc *msi_prepare_message; > - MSIxPrepareMessageFunc *msix_prepare_message; > - > - /* MemoryRegion container for msix exclusive BAR setup */ > - MemoryRegion msix_exclusive_bar; > - /* Memory Regions for MSIX table and pending bit entries. */ > - MemoryRegion msix_table_mmio; > - MemoryRegion msix_pba_mmio; > - /* Reference-count for entries actually in use by driver. */ > - unsigned *msix_entry_used; > - /* MSIX function mask set or MSIX disabled */ > - bool msix_function_masked; > - /* Version id needed for VMState */ > - int32_t version_id; > - > - /* Offset of MSI capability in config space */ > - uint8_t msi_cap; > - > - /* PCI Express */ > - PCIExpressDevice exp; > - > - /* SHPC */ > - SHPCDevice *shpc; > - > - /* Location of option rom */ > - char *romfile; > - uint32_t romsize; > - bool has_rom; > - MemoryRegion rom; > - uint32_t rom_bar; > - > - /* INTx routing notifier */ > - PCIINTxRoutingNotifier intx_routing_notifier; > - > - /* MSI-X notifiers */ > - MSIVectorUseNotifier msix_vector_use_notifier; > - MSIVectorReleaseNotifier msix_vector_release_notifier; > - MSIVectorPollNotifier msix_vector_poll_notifier; > - > - /* ID of standby device in net_failover pair */ > - char *failover_pair_id; > - uint32_t acpi_index; > -}; > - > void pci_register_bar(PCIDevice *pci_dev, int region_num, > uint8_t attr, MemoryRegion *memory); > void pci_register_vga(PCIDevice *pci_dev, MemoryRegion *mem, > @@ -753,11 +586,6 @@ void lsi53c8xx_handle_legacy_cmdline(DeviceState *lsi_dev); > qemu_irq pci_allocate_irq(PCIDevice *pci_dev); > void pci_set_irq(PCIDevice *pci_dev, int level); > > -static inline int pci_intx(PCIDevice *pci_dev) > -{ > - return pci_get_byte(pci_dev->config + PCI_INTERRUPT_PIN) - 1; > -} > - > static inline void pci_irq_assert(PCIDevice *pci_dev) > { > pci_set_irq(pci_dev, 1); > @@ -778,189 +606,6 @@ static inline void pci_irq_pulse(PCIDevice *pci_dev) > pci_irq_deassert(pci_dev); > } > > -static inline int pci_is_cxl(const PCIDevice *d) > -{ > - return d->cap_present & QEMU_PCIE_CAP_CXL; > -} > - > -static inline int pci_is_express(const PCIDevice *d) > -{ > - return d->cap_present & QEMU_PCI_CAP_EXPRESS; > -} > - > -static inline int pci_is_express_downstream_port(const PCIDevice *d) > -{ > - uint8_t type; > - > - if (!pci_is_express(d) || !d->exp.exp_cap) { > - return 0; > - } > - > - type = pcie_cap_get_type(d); > - > - return type == PCI_EXP_TYPE_DOWNSTREAM || type == PCI_EXP_TYPE_ROOT_PORT; > -} > - > -static inline int pci_is_vf(const PCIDevice *d) > -{ > - return d->exp.sriov_vf.pf != NULL; > -} > - > -static inline uint32_t pci_config_size(const PCIDevice *d) > -{ > - return pci_is_express(d) ? PCIE_CONFIG_SPACE_SIZE : PCI_CONFIG_SPACE_SIZE; > -} > - > -static inline uint16_t pci_get_bdf(PCIDevice *dev) > -{ > - return PCI_BUILD_BDF(pci_bus_num(pci_get_bus(dev)), dev->devfn); > -} > - > -uint16_t pci_requester_id(PCIDevice *dev); > - > -/* DMA access functions */ > -static inline AddressSpace *pci_get_address_space(PCIDevice *dev) > -{ > - return &dev->bus_master_as; > -} > - > -/** > - * pci_dma_rw: Read from or write to an address space from PCI device. > - * > - * Return a MemTxResult indicating whether the operation succeeded > - * or failed (eg unassigned memory, device rejected the transaction, > - * IOMMU fault). > - * > - * @dev: #PCIDevice doing the memory access > - * @addr: address within the #PCIDevice address space > - * @buf: buffer with the data transferred > - * @len: the number of bytes to read or write > - * @dir: indicates the transfer direction > - */ > -static inline MemTxResult pci_dma_rw(PCIDevice *dev, dma_addr_t addr, > - void *buf, dma_addr_t len, > - DMADirection dir, MemTxAttrs attrs) > -{ > - return dma_memory_rw(pci_get_address_space(dev), addr, buf, len, > - dir, attrs); > -} > - > -/** > - * pci_dma_read: Read from an address space from PCI device. > - * > - * Return a MemTxResult indicating whether the operation succeeded > - * or failed (eg unassigned memory, device rejected the transaction, > - * IOMMU fault). Called within RCU critical section. > - * > - * @dev: #PCIDevice doing the memory access > - * @addr: address within the #PCIDevice address space > - * @buf: buffer with the data transferred > - * @len: length of the data transferred > - */ > -static inline MemTxResult pci_dma_read(PCIDevice *dev, dma_addr_t addr, > - void *buf, dma_addr_t len) > -{ > - return pci_dma_rw(dev, addr, buf, len, > - DMA_DIRECTION_TO_DEVICE, MEMTXATTRS_UNSPECIFIED); > -} > - > -/** > - * pci_dma_write: Write to address space from PCI device. > - * > - * Return a MemTxResult indicating whether the operation succeeded > - * or failed (eg unassigned memory, device rejected the transaction, > - * IOMMU fault). > - * > - * @dev: #PCIDevice doing the memory access > - * @addr: address within the #PCIDevice address space > - * @buf: buffer with the data transferred > - * @len: the number of bytes to write > - */ > -static inline MemTxResult pci_dma_write(PCIDevice *dev, dma_addr_t addr, > - const void *buf, dma_addr_t len) > -{ > - return pci_dma_rw(dev, addr, (void *) buf, len, > - DMA_DIRECTION_FROM_DEVICE, MEMTXATTRS_UNSPECIFIED); > -} > - > -#define PCI_DMA_DEFINE_LDST(_l, _s, _bits) \ > - static inline MemTxResult ld##_l##_pci_dma(PCIDevice *dev, \ > - dma_addr_t addr, \ > - uint##_bits##_t *val, \ > - MemTxAttrs attrs) \ > - { \ > - return ld##_l##_dma(pci_get_address_space(dev), addr, val, attrs); \ > - } \ > - static inline MemTxResult st##_s##_pci_dma(PCIDevice *dev, \ > - dma_addr_t addr, \ > - uint##_bits##_t val, \ > - MemTxAttrs attrs) \ > - { \ > - return st##_s##_dma(pci_get_address_space(dev), addr, val, attrs); \ > - } > - > -PCI_DMA_DEFINE_LDST(ub, b, 8); > -PCI_DMA_DEFINE_LDST(uw_le, w_le, 16) > -PCI_DMA_DEFINE_LDST(l_le, l_le, 32); > -PCI_DMA_DEFINE_LDST(q_le, q_le, 64); > -PCI_DMA_DEFINE_LDST(uw_be, w_be, 16) > -PCI_DMA_DEFINE_LDST(l_be, l_be, 32); > -PCI_DMA_DEFINE_LDST(q_be, q_be, 64); > - > -#undef PCI_DMA_DEFINE_LDST > - > -/** > - * pci_dma_map: Map device PCI address space range into host virtual address > - * @dev: #PCIDevice to be accessed > - * @addr: address within that device's address space > - * @plen: pointer to length of buffer; updated on return to indicate > - * if only a subset of the requested range has been mapped > - * @dir: indicates the transfer direction > - * > - * Return: A host pointer, or %NULL if the resources needed to > - * perform the mapping are exhausted (in that case *@plen > - * is set to zero). > - */ > -static inline void *pci_dma_map(PCIDevice *dev, dma_addr_t addr, > - dma_addr_t *plen, DMADirection dir) > -{ > - void *buf; > - > - buf = dma_memory_map(pci_get_address_space(dev), addr, plen, dir, > - MEMTXATTRS_UNSPECIFIED); > - return buf; > -} > - > -static inline void pci_dma_unmap(PCIDevice *dev, void *buffer, dma_addr_t len, > - DMADirection dir, dma_addr_t access_len) > -{ > - dma_memory_unmap(pci_get_address_space(dev), buffer, len, dir, access_len); > -} > - > -static inline void pci_dma_sglist_init(QEMUSGList *qsg, PCIDevice *dev, > - int alloc_hint) > -{ > - qemu_sglist_init(qsg, DEVICE(dev), alloc_hint, pci_get_address_space(dev)); > -} > - > -extern const VMStateDescription vmstate_pci_device; > - > -#define VMSTATE_PCI_DEVICE(_field, _state) { \ > - .name = (stringify(_field)), \ > - .size = sizeof(PCIDevice), \ > - .vmsd = &vmstate_pci_device, \ > - .flags = VMS_STRUCT, \ > - .offset = vmstate_offset_value(_state, _field, PCIDevice), \ > -} > - > -#define VMSTATE_PCI_DEVICE_POINTER(_field, _state) { \ > - .name = (stringify(_field)), \ > - .size = sizeof(PCIDevice), \ > - .vmsd = &vmstate_pci_device, \ > - .flags = VMS_STRUCT | VMS_POINTER, \ > - .offset = vmstate_offset_pointer(_state, _field, PCIDevice), \ > -} > - > MSIMessage pci_get_msi_message(PCIDevice *dev, int vector); > void pci_set_power(PCIDevice *pci_dev, bool state); > > diff --git a/include/hw/pci/pci_bridge.h b/include/hw/pci/pci_bridge.h > index ba4bafac7c..22e8472de2 100644 > --- a/include/hw/pci/pci_bridge.h > +++ b/include/hw/pci/pci_bridge.h > @@ -26,7 +26,7 @@ > #ifndef QEMU_PCI_BRIDGE_H > #define QEMU_PCI_BRIDGE_H > > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/pci/pci_bus.h" > #include "hw/cxl/cxl.h" > #include "qom/object.h" > diff --git a/include/hw/pci/pci_device.h b/include/hw/pci/pci_device.h > new file mode 100644 > index 0000000000..b82a379f6f > --- /dev/null > +++ b/include/hw/pci/pci_device.h > @@ -0,0 +1,361 @@ > +#ifndef QEMU_PCI_DEVICE_H > +#define QEMU_PCI_DEVICE_H > + > +#include "hw/pci/pci.h" > +#include "hw/pci/pcie.h" > + > +#define TYPE_PCI_DEVICE "pci-device" > +typedef struct PCIDeviceClass PCIDeviceClass; > +DECLARE_OBJ_CHECKERS(PCIDevice, PCIDeviceClass, > + PCI_DEVICE, TYPE_PCI_DEVICE) > + > +/* > + * Implemented by devices that can be plugged on CXL buses. In the spec, this is > + * actually a "CXL Component, but we name it device to match the PCI naming. > + */ > +#define INTERFACE_CXL_DEVICE "cxl-device" > + > +/* Implemented by devices that can be plugged on PCI Express buses */ > +#define INTERFACE_PCIE_DEVICE "pci-express-device" > + > +/* Implemented by devices that can be plugged on Conventional PCI buses */ > +#define INTERFACE_CONVENTIONAL_PCI_DEVICE "conventional-pci-device" > + > +struct PCIDeviceClass { > + DeviceClass parent_class; > + > + void (*realize)(PCIDevice *dev, Error **errp); > + PCIUnregisterFunc *exit; > + PCIConfigReadFunc *config_read; > + PCIConfigWriteFunc *config_write; > + > + uint16_t vendor_id; > + uint16_t device_id; > + uint8_t revision; > + uint16_t class_id; > + uint16_t subsystem_vendor_id; /* only for header type = 0 */ > + uint16_t subsystem_id; /* only for header type = 0 */ > + > + /* > + * pci-to-pci bridge or normal device. > + * This doesn't mean pci host switch. > + * When card bus bridge is supported, this would be enhanced. > + */ > + bool is_bridge; > + > + /* rom bar */ > + const char *romfile; > +}; > + > +enum PCIReqIDType { > + PCI_REQ_ID_INVALID = 0, > + PCI_REQ_ID_BDF, > + PCI_REQ_ID_SECONDARY_BUS, > + PCI_REQ_ID_MAX, > +}; > +typedef enum PCIReqIDType PCIReqIDType; > + > +struct PCIReqIDCache { > + PCIDevice *dev; > + PCIReqIDType type; > +}; > +typedef struct PCIReqIDCache PCIReqIDCache; > + > +struct PCIDevice { > + DeviceState qdev; > + bool partially_hotplugged; > + bool has_power; > + > + /* PCI config space */ > + uint8_t *config; > + > + /* > + * Used to enable config checks on load. Note that writable bits are > + * never checked even if set in cmask. > + */ > + uint8_t *cmask; > + > + /* Used to implement R/W bytes */ > + uint8_t *wmask; > + > + /* Used to implement RW1C(Write 1 to Clear) bytes */ > + uint8_t *w1cmask; > + > + /* Used to allocate config space for capabilities. */ > + uint8_t *used; > + > + /* the following fields are read only */ > + int32_t devfn; > + /* > + * Cached device to fetch requester ID from, to avoid the PCI tree > + * walking every time we invoke PCI request (e.g., MSI). For > + * conventional PCI root complex, this field is meaningless. > + */ > + PCIReqIDCache requester_id_cache; > + char name[64]; > + PCIIORegion io_regions[PCI_NUM_REGIONS]; > + AddressSpace bus_master_as; > + MemoryRegion bus_master_container_region; > + MemoryRegion bus_master_enable_region; > + > + /* do not access the following fields */ > + PCIConfigReadFunc *config_read; > + PCIConfigWriteFunc *config_write; > + > + /* Legacy PCI VGA regions */ > + MemoryRegion *vga_regions[QEMU_PCI_VGA_NUM_REGIONS]; > + bool has_vga; > + > + /* Current IRQ levels. Used internally by the generic PCI code. */ > + uint8_t irq_state; > + > + /* Capability bits */ > + uint32_t cap_present; > + > + /* Offset of MSI-X capability in config space */ > + uint8_t msix_cap; > + > + /* MSI-X entries */ > + int msix_entries_nr; > + > + /* Space to store MSIX table & pending bit array */ > + uint8_t *msix_table; > + uint8_t *msix_pba; > + > + /* May be used by INTx or MSI during interrupt notification */ > + void *irq_opaque; > + > + MSITriggerFunc *msi_trigger; > + MSIPrepareMessageFunc *msi_prepare_message; > + MSIxPrepareMessageFunc *msix_prepare_message; > + > + /* MemoryRegion container for msix exclusive BAR setup */ > + MemoryRegion msix_exclusive_bar; > + /* Memory Regions for MSIX table and pending bit entries. */ > + MemoryRegion msix_table_mmio; > + MemoryRegion msix_pba_mmio; > + /* Reference-count for entries actually in use by driver. */ > + unsigned *msix_entry_used; > + /* MSIX function mask set or MSIX disabled */ > + bool msix_function_masked; > + /* Version id needed for VMState */ > + int32_t version_id; > + > + /* Offset of MSI capability in config space */ > + uint8_t msi_cap; > + > + /* PCI Express */ > + PCIExpressDevice exp; > + > + /* SHPC */ > + SHPCDevice *shpc; > + > + /* Location of option rom */ > + char *romfile; > + uint32_t romsize; > + bool has_rom; > + MemoryRegion rom; > + uint32_t rom_bar; > + > + /* INTx routing notifier */ > + PCIINTxRoutingNotifier intx_routing_notifier; > + > + /* MSI-X notifiers */ > + MSIVectorUseNotifier msix_vector_use_notifier; > + MSIVectorReleaseNotifier msix_vector_release_notifier; > + MSIVectorPollNotifier msix_vector_poll_notifier; > + > + /* ID of standby device in net_failover pair */ > + char *failover_pair_id; > + uint32_t acpi_index; > +}; > + > +static inline int pci_intx(PCIDevice *pci_dev) > +{ > + return pci_get_byte(pci_dev->config + PCI_INTERRUPT_PIN) - 1; > +} > + > +static inline int pci_is_cxl(const PCIDevice *d) > +{ > + return d->cap_present & QEMU_PCIE_CAP_CXL; > +} > + > +static inline int pci_is_express(const PCIDevice *d) > +{ > + return d->cap_present & QEMU_PCI_CAP_EXPRESS; > +} > + > +static inline int pci_is_express_downstream_port(const PCIDevice *d) > +{ > + uint8_t type; > + > + if (!pci_is_express(d) || !d->exp.exp_cap) { > + return 0; > + } > + > + type = pcie_cap_get_type(d); > + > + return type == PCI_EXP_TYPE_DOWNSTREAM || type == PCI_EXP_TYPE_ROOT_PORT; > +} > + > +static inline int pci_is_vf(const PCIDevice *d) > +{ > + return d->exp.sriov_vf.pf != NULL; > +} > + > +static inline uint32_t pci_config_size(const PCIDevice *d) > +{ > + return pci_is_express(d) ? PCIE_CONFIG_SPACE_SIZE : PCI_CONFIG_SPACE_SIZE; > +} > + > +static inline uint16_t pci_get_bdf(PCIDevice *dev) > +{ > + return PCI_BUILD_BDF(pci_bus_num(pci_get_bus(dev)), dev->devfn); > +} > + > +uint16_t pci_requester_id(PCIDevice *dev); > + > +/* DMA access functions */ > +static inline AddressSpace *pci_get_address_space(PCIDevice *dev) > +{ > + return &dev->bus_master_as; > +} > + > +/** > + * pci_dma_rw: Read from or write to an address space from PCI device. > + * > + * Return a MemTxResult indicating whether the operation succeeded > + * or failed (eg unassigned memory, device rejected the transaction, > + * IOMMU fault). > + * > + * @dev: #PCIDevice doing the memory access > + * @addr: address within the #PCIDevice address space > + * @buf: buffer with the data transferred > + * @len: the number of bytes to read or write > + * @dir: indicates the transfer direction > + */ > +static inline MemTxResult pci_dma_rw(PCIDevice *dev, dma_addr_t addr, > + void *buf, dma_addr_t len, > + DMADirection dir, MemTxAttrs attrs) > +{ > + return dma_memory_rw(pci_get_address_space(dev), addr, buf, len, > + dir, attrs); > +} > + > +/** > + * pci_dma_read: Read from an address space from PCI device. > + * > + * Return a MemTxResult indicating whether the operation succeeded > + * or failed (eg unassigned memory, device rejected the transaction, > + * IOMMU fault). Called within RCU critical section. > + * > + * @dev: #PCIDevice doing the memory access > + * @addr: address within the #PCIDevice address space > + * @buf: buffer with the data transferred > + * @len: length of the data transferred > + */ > +static inline MemTxResult pci_dma_read(PCIDevice *dev, dma_addr_t addr, > + void *buf, dma_addr_t len) > +{ > + return pci_dma_rw(dev, addr, buf, len, > + DMA_DIRECTION_TO_DEVICE, MEMTXATTRS_UNSPECIFIED); > +} > + > +/** > + * pci_dma_write: Write to address space from PCI device. > + * > + * Return a MemTxResult indicating whether the operation succeeded > + * or failed (eg unassigned memory, device rejected the transaction, > + * IOMMU fault). > + * > + * @dev: #PCIDevice doing the memory access > + * @addr: address within the #PCIDevice address space > + * @buf: buffer with the data transferred > + * @len: the number of bytes to write > + */ > +static inline MemTxResult pci_dma_write(PCIDevice *dev, dma_addr_t addr, > + const void *buf, dma_addr_t len) > +{ > + return pci_dma_rw(dev, addr, (void *) buf, len, > + DMA_DIRECTION_FROM_DEVICE, MEMTXATTRS_UNSPECIFIED); > +} > + > +#define PCI_DMA_DEFINE_LDST(_l, _s, _bits) \ > + static inline MemTxResult ld##_l##_pci_dma(PCIDevice *dev, \ > + dma_addr_t addr, \ > + uint##_bits##_t *val, \ > + MemTxAttrs attrs) \ > + { \ > + return ld##_l##_dma(pci_get_address_space(dev), addr, val, attrs); \ > + } \ > + static inline MemTxResult st##_s##_pci_dma(PCIDevice *dev, \ > + dma_addr_t addr, \ > + uint##_bits##_t val, \ > + MemTxAttrs attrs) \ > + { \ > + return st##_s##_dma(pci_get_address_space(dev), addr, val, attrs); \ > + } > + > +PCI_DMA_DEFINE_LDST(ub, b, 8); > +PCI_DMA_DEFINE_LDST(uw_le, w_le, 16) > +PCI_DMA_DEFINE_LDST(l_le, l_le, 32); > +PCI_DMA_DEFINE_LDST(q_le, q_le, 64); > +PCI_DMA_DEFINE_LDST(uw_be, w_be, 16) > +PCI_DMA_DEFINE_LDST(l_be, l_be, 32); > +PCI_DMA_DEFINE_LDST(q_be, q_be, 64); > + > +#undef PCI_DMA_DEFINE_LDST > + > +/** > + * pci_dma_map: Map device PCI address space range into host virtual address > + * @dev: #PCIDevice to be accessed > + * @addr: address within that device's address space > + * @plen: pointer to length of buffer; updated on return to indicate > + * if only a subset of the requested range has been mapped > + * @dir: indicates the transfer direction > + * > + * Return: A host pointer, or %NULL if the resources needed to > + * perform the mapping are exhausted (in that case *@plen > + * is set to zero). > + */ > +static inline void *pci_dma_map(PCIDevice *dev, dma_addr_t addr, > + dma_addr_t *plen, DMADirection dir) > +{ > + void *buf; > + > + buf = dma_memory_map(pci_get_address_space(dev), addr, plen, dir, > + MEMTXATTRS_UNSPECIFIED); > + return buf; > +} > + > +static inline void pci_dma_unmap(PCIDevice *dev, void *buffer, dma_addr_t len, > + DMADirection dir, dma_addr_t access_len) > +{ > + dma_memory_unmap(pci_get_address_space(dev), buffer, len, dir, access_len); > +} > + > +static inline void pci_dma_sglist_init(QEMUSGList *qsg, PCIDevice *dev, > + int alloc_hint) > +{ > + qemu_sglist_init(qsg, DEVICE(dev), alloc_hint, pci_get_address_space(dev)); > +} > + > +extern const VMStateDescription vmstate_pci_device; > + > +#define VMSTATE_PCI_DEVICE(_field, _state) { \ > + .name = (stringify(_field)), \ > + .size = sizeof(PCIDevice), \ > + .vmsd = &vmstate_pci_device, \ > + .flags = VMS_STRUCT, \ > + .offset = vmstate_offset_value(_state, _field, PCIDevice), \ > +} > + > +#define VMSTATE_PCI_DEVICE_POINTER(_field, _state) { \ > + .name = (stringify(_field)), \ > + .size = sizeof(PCIDevice), \ > + .vmsd = &vmstate_pci_device, \ > + .flags = VMS_STRUCT | VMS_POINTER, \ > + .offset = vmstate_offset_pointer(_state, _field, PCIDevice), \ > +} > + > +#endif > diff --git a/include/hw/pci/pcie_port.h b/include/hw/pci/pcie_port.h > index 7b8193061a..5bf420a122 100644 > --- a/include/hw/pci/pcie_port.h > +++ b/include/hw/pci/pcie_port.h > @@ -23,6 +23,7 @@ > > #include "hw/pci/pci_bridge.h" > #include "hw/pci/pci_bus.h" > +#include "hw/pci/pci_device.h" > #include "qom/object.h" > > #define TYPE_PCIE_PORT "pcie-port" > diff --git a/include/hw/pci/shpc.h b/include/hw/pci/shpc.h > index d5683b7399..89c7a3b7fa 100644 > --- a/include/hw/pci/shpc.h > +++ b/include/hw/pci/shpc.h > @@ -3,7 +3,7 @@ > > #include "exec/memory.h" > #include "hw/hotplug.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "migration/vmstate.h" > > struct SHPCDevice { > diff --git a/include/hw/remote/iohub.h b/include/hw/remote/iohub.h > index 0bf98e0d78..6a8444f9a9 100644 > --- a/include/hw/remote/iohub.h > +++ b/include/hw/remote/iohub.h > @@ -11,7 +11,7 @@ > #ifndef REMOTE_IOHUB_H > #define REMOTE_IOHUB_H > > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "qemu/event_notifier.h" > #include "qemu/thread-posix.h" > #include "hw/remote/mpqemu-link.h" > diff --git a/include/hw/remote/proxy.h b/include/hw/remote/proxy.h > index 741def71f1..0cfd9665be 100644 > --- a/include/hw/remote/proxy.h > +++ b/include/hw/remote/proxy.h > @@ -9,7 +9,7 @@ > #ifndef PROXY_H > #define PROXY_H > > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "io/channel.h" > #include "hw/remote/proxy-memory-listener.h" > #include "qemu/event_notifier.h" > diff --git a/include/hw/sd/sdhci.h b/include/hw/sd/sdhci.h > index 01a64c5442..8460d6462b 100644 > --- a/include/hw/sd/sdhci.h > +++ b/include/hw/sd/sdhci.h > @@ -25,7 +25,7 @@ > #ifndef SDHCI_H > #define SDHCI_H > > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/sysbus.h" > #include "hw/sd/sd.h" > #include "qom/object.h" > diff --git a/include/hw/southbridge/piix.h b/include/hw/southbridge/piix.h > index 2693778b23..0bf48e936d 100644 > --- a/include/hw/southbridge/piix.h > +++ b/include/hw/southbridge/piix.h > @@ -12,8 +12,7 @@ > #ifndef HW_SOUTHBRIDGE_PIIX_H > #define HW_SOUTHBRIDGE_PIIX_H > > -#include "hw/pci/pci.h" > -#include "qom/object.h" > +#include "hw/pci/pci_device.h" > > /* PIRQRC[A:D]: PIRQx Route Control Registers */ > #define PIIX_PIRQCA 0x60 > diff --git a/include/hw/xen/xen_common.h b/include/hw/xen/xen_common.h > index 77ce17d8a4..9a13a756ae 100644 > --- a/include/hw/xen/xen_common.h > +++ b/include/hw/xen/xen_common.h > @@ -15,7 +15,7 @@ > #include "hw/xen/interface/io/xenbus.h" > > #include "hw/xen/xen.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/xen/trace.h" > > extern xc_interface *xen_xc; > diff --git a/hw/acpi/erst.c b/hw/acpi/erst.c > index aefcc03ad6..35007d8017 100644 > --- a/hw/acpi/erst.c > +++ b/hw/acpi/erst.c > @@ -14,7 +14,7 @@ > #include "hw/qdev-core.h" > #include "exec/memory.h" > #include "qom/object.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "qom/object_interfaces.h" > #include "qemu/error-report.h" > #include "migration/vmstate.h" > diff --git a/hw/audio/ac97.c b/hw/audio/ac97.c > index be2dd701a4..364cdfa733 100644 > --- a/hw/audio/ac97.c > +++ b/hw/audio/ac97.c > @@ -20,7 +20,7 @@ > #include "qemu/osdep.h" > #include "hw/audio/soundhw.h" > #include "audio/audio.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/qdev-properties.h" > #include "migration/vmstate.h" > #include "qemu/module.h" > diff --git a/hw/audio/es1370.c b/hw/audio/es1370.c > index 6904589814..54cc19a637 100644 > --- a/hw/audio/es1370.c > +++ b/hw/audio/es1370.c > @@ -29,7 +29,7 @@ > #include "qemu/osdep.h" > #include "hw/audio/soundhw.h" > #include "audio/audio.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "migration/vmstate.h" > #include "qemu/module.h" > #include "sysemu/dma.h" > diff --git a/hw/audio/via-ac97.c b/hw/audio/via-ac97.c > index 6d556f74fc..d1a856f63d 100644 > --- a/hw/audio/via-ac97.c > +++ b/hw/audio/via-ac97.c > @@ -11,7 +11,7 @@ > > #include "qemu/osdep.h" > #include "hw/isa/vt82c686.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > > static void via_ac97_realize(PCIDevice *pci_dev, Error **errp) > { > diff --git a/hw/char/serial-pci-multi.c b/hw/char/serial-pci-multi.c > index 3a9f96c2d1..f18b8dcce5 100644 > --- a/hw/char/serial-pci-multi.c > +++ b/hw/char/serial-pci-multi.c > @@ -31,7 +31,7 @@ > #include "qapi/error.h" > #include "hw/char/serial.h" > #include "hw/irq.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/qdev-properties.h" > #include "hw/qdev-properties-system.h" > #include "migration/vmstate.h" > diff --git a/hw/char/serial-pci.c b/hw/char/serial-pci.c > index 93d6f99244..801b769aba 100644 > --- a/hw/char/serial-pci.c > +++ b/hw/char/serial-pci.c > @@ -30,7 +30,7 @@ > #include "qemu/module.h" > #include "hw/char/serial.h" > #include "hw/irq.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/qdev-properties.h" > #include "migration/vmstate.h" > #include "qom/object.h" > diff --git a/hw/core/qdev-properties-system.c b/hw/core/qdev-properties-system.c > index a91f60567a..fccf41f4cd 100644 > --- a/hw/core/qdev-properties-system.c > +++ b/hw/core/qdev-properties-system.c > @@ -32,6 +32,7 @@ > #include "sysemu/blockdev.h" > #include "net/net.h" > #include "hw/pci/pci.h" > +#include "hw/pci/pcie.h" > #include "util/block-helpers.h" > > static bool check_prop_still_unset(Object *obj, const char *name, > diff --git a/hw/display/bochs-display.c b/hw/display/bochs-display.c > index 8ed734b195..e7ec268184 100644 > --- a/hw/display/bochs-display.c > +++ b/hw/display/bochs-display.c > @@ -8,7 +8,7 @@ > #include "qemu/osdep.h" > #include "qemu/module.h" > #include "qemu/units.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/qdev-properties.h" > #include "migration/vmstate.h" > #include "hw/display/bochs-vbe.h" > diff --git a/hw/display/cirrus_vga.c b/hw/display/cirrus_vga.c > index 6e8c747c46..55c32e3e40 100644 > --- a/hw/display/cirrus_vga.c > +++ b/hw/display/cirrus_vga.c > @@ -39,7 +39,7 @@ > #include "sysemu/reset.h" > #include "qapi/error.h" > #include "trace.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/qdev-properties.h" > #include "migration/vmstate.h" > #include "ui/pixel_ops.h" > diff --git a/hw/display/sm501.c b/hw/display/sm501.c > index 663c37e7f2..52e42585af 100644 > --- a/hw/display/sm501.c > +++ b/hw/display/sm501.c > @@ -32,7 +32,7 @@ > #include "ui/console.h" > #include "hw/sysbus.h" > #include "migration/vmstate.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/qdev-properties.h" > #include "hw/i2c/i2c.h" > #include "hw/display/i2c-ddc.h" > diff --git a/hw/display/vga-pci.c b/hw/display/vga-pci.c > index df23dbf3a0..b351b8f299 100644 > --- a/hw/display/vga-pci.c > +++ b/hw/display/vga-pci.c > @@ -25,7 +25,7 @@ > */ > > #include "qemu/osdep.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/qdev-properties.h" > #include "migration/vmstate.h" > #include "vga_int.h" > diff --git a/hw/display/vmware_vga.c b/hw/display/vmware_vga.c > index 53949d2539..59ae7f74b8 100644 > --- a/hw/display/vmware_vga.c > +++ b/hw/display/vmware_vga.c > @@ -29,7 +29,7 @@ > #include "qemu/log.h" > #include "hw/loader.h" > #include "trace.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/qdev-properties.h" > #include "migration/vmstate.h" > #include "qom/object.h" > diff --git a/hw/i386/xen/xen_pvdevice.c b/hw/i386/xen/xen_pvdevice.c > index 1ea95fa601..e62e06622b 100644 > --- a/hw/i386/xen/xen_pvdevice.c > +++ b/hw/i386/xen/xen_pvdevice.c > @@ -32,7 +32,7 @@ > #include "qemu/osdep.h" > #include "qapi/error.h" > #include "qemu/module.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/qdev-properties.h" > #include "migration/vmstate.h" > #include "trace.h" > diff --git a/hw/ipack/tpci200.c b/hw/ipack/tpci200.c > index 1f764fc85b..6b3edbf017 100644 > --- a/hw/ipack/tpci200.c > +++ b/hw/ipack/tpci200.c > @@ -12,7 +12,7 @@ > #include "qemu/units.h" > #include "hw/ipack/ipack.h" > #include "hw/irq.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "migration/vmstate.h" > #include "qemu/bitops.h" > #include "qemu/module.h" > diff --git a/hw/ipmi/pci_ipmi_bt.c b/hw/ipmi/pci_ipmi_bt.c > index b6e52730d3..633931b825 100644 > --- a/hw/ipmi/pci_ipmi_bt.c > +++ b/hw/ipmi/pci_ipmi_bt.c > @@ -25,7 +25,7 @@ > #include "migration/vmstate.h" > #include "qapi/error.h" > #include "hw/ipmi/ipmi_bt.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "qom/object.h" > > #define TYPE_PCI_IPMI_BT "pci-ipmi-bt" > diff --git a/hw/ipmi/pci_ipmi_kcs.c b/hw/ipmi/pci_ipmi_kcs.c > index de13418862..1a581413c2 100644 > --- a/hw/ipmi/pci_ipmi_kcs.c > +++ b/hw/ipmi/pci_ipmi_kcs.c > @@ -25,7 +25,7 @@ > #include "migration/vmstate.h" > #include "qapi/error.h" > #include "hw/ipmi/ipmi_kcs.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "qom/object.h" > > #define TYPE_PCI_IPMI_KCS "pci-ipmi-kcs" > diff --git a/hw/isa/i82378.c b/hw/isa/i82378.c > index 2a2ff05b93..e3322e03bf 100644 > --- a/hw/isa/i82378.c > +++ b/hw/isa/i82378.c > @@ -18,7 +18,7 @@ > */ > > #include "qemu/osdep.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/irq.h" > #include "hw/intc/i8259.h" > #include "hw/timer/i8254.h" > diff --git a/hw/mips/gt64xxx_pci.c b/hw/mips/gt64xxx_pci.c > index 19d0d9889f..164866cf3e 100644 > --- a/hw/mips/gt64xxx_pci.c > +++ b/hw/mips/gt64xxx_pci.c > @@ -26,7 +26,7 @@ > #include "qapi/error.h" > #include "qemu/units.h" > #include "qemu/log.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/pci/pci_host.h" > #include "migration/vmstate.h" > #include "hw/intc/i8259.h" > diff --git a/hw/misc/pci-testdev.c b/hw/misc/pci-testdev.c > index 03845c8de3..49303134e4 100644 > --- a/hw/misc/pci-testdev.c > +++ b/hw/misc/pci-testdev.c > @@ -19,7 +19,7 @@ > */ > > #include "qemu/osdep.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/qdev-properties.h" > #include "qemu/event_notifier.h" > #include "qemu/module.h" > diff --git a/hw/misc/pvpanic-pci.c b/hw/misc/pvpanic-pci.c > index 99cf7e2041..fbcaa50731 100644 > --- a/hw/misc/pvpanic-pci.c > +++ b/hw/misc/pvpanic-pci.c > @@ -20,7 +20,7 @@ > #include "migration/vmstate.h" > #include "hw/misc/pvpanic.h" > #include "qom/object.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "standard-headers/linux/pvpanic.h" > > OBJECT_DECLARE_SIMPLE_TYPE(PVPanicPCIState, PVPANIC_PCI_DEVICE) > diff --git a/hw/net/can/can_kvaser_pci.c b/hw/net/can/can_kvaser_pci.c > index 94b3a534f8..2cd90cef1e 100644 > --- a/hw/net/can/can_kvaser_pci.c > +++ b/hw/net/can/can_kvaser_pci.c > @@ -37,7 +37,7 @@ > #include "qapi/error.h" > #include "chardev/char.h" > #include "hw/irq.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/qdev-properties.h" > #include "migration/vmstate.h" > #include "net/can_emu.h" > diff --git a/hw/net/can/can_mioe3680_pci.c b/hw/net/can/can_mioe3680_pci.c > index 29dc696f7c..b9918773b3 100644 > --- a/hw/net/can/can_mioe3680_pci.c > +++ b/hw/net/can/can_mioe3680_pci.c > @@ -33,7 +33,7 @@ > #include "qapi/error.h" > #include "chardev/char.h" > #include "hw/irq.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/qdev-properties.h" > #include "migration/vmstate.h" > #include "net/can_emu.h" > diff --git a/hw/net/can/can_pcm3680_pci.c b/hw/net/can/can_pcm3680_pci.c > index e8e57f4f33..8ef3e4659c 100644 > --- a/hw/net/can/can_pcm3680_pci.c > +++ b/hw/net/can/can_pcm3680_pci.c > @@ -33,7 +33,7 @@ > #include "qapi/error.h" > #include "chardev/char.h" > #include "hw/irq.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/qdev-properties.h" > #include "migration/vmstate.h" > #include "net/can_emu.h" > diff --git a/hw/net/can/ctucan_pci.c b/hw/net/can/ctucan_pci.c > index 50f4ea6cd6..ea079e2af5 100644 > --- a/hw/net/can/ctucan_pci.c > +++ b/hw/net/can/ctucan_pci.c > @@ -34,7 +34,7 @@ > #include "qapi/error.h" > #include "chardev/char.h" > #include "hw/irq.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/qdev-properties.h" > #include "migration/vmstate.h" > #include "net/can_emu.h" > diff --git a/hw/net/e1000.c b/hw/net/e1000.c > index e26e0a64c1..7efb8a4c52 100644 > --- a/hw/net/e1000.c > +++ b/hw/net/e1000.c > @@ -26,7 +26,7 @@ > > > #include "qemu/osdep.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/qdev-properties.h" > #include "migration/vmstate.h" > #include "net/eth.h" > diff --git a/hw/net/e1000x_common.c b/hw/net/e1000x_common.c > index a8d93870b5..2f43e8cd13 100644 > --- a/hw/net/e1000x_common.c > +++ b/hw/net/e1000x_common.c > @@ -24,7 +24,7 @@ > > #include "qemu/osdep.h" > #include "qemu/units.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "net/net.h" > > #include "e1000x_common.h" > diff --git a/hw/net/eepro100.c b/hw/net/eepro100.c > index 679f52f80f..dc07984ae9 100644 > --- a/hw/net/eepro100.c > +++ b/hw/net/eepro100.c > @@ -42,7 +42,7 @@ > > #include "qemu/osdep.h" > #include "qemu/units.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/qdev-properties.h" > #include "migration/vmstate.h" > #include "net/net.h" > diff --git a/hw/net/ne2000-pci.c b/hw/net/ne2000-pci.c > index 9e5d10859a..edc6689d33 100644 > --- a/hw/net/ne2000-pci.c > +++ b/hw/net/ne2000-pci.c > @@ -24,7 +24,7 @@ > > #include "qemu/osdep.h" > #include "hw/irq.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/qdev-properties.h" > #include "migration/vmstate.h" > #include "ne2000.h" > diff --git a/hw/net/net_tx_pkt.c b/hw/net/net_tx_pkt.c > index 1cb1125d9f..2533ea2700 100644 > --- a/hw/net/net_tx_pkt.c > +++ b/hw/net/net_tx_pkt.c > @@ -21,7 +21,7 @@ > #include "net/checksum.h" > #include "net/tap.h" > #include "net/net.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > > enum { > NET_TX_PKT_VHDR_FRAG = 0, > diff --git a/hw/net/pcnet-pci.c b/hw/net/pcnet-pci.c > index 95d27102aa..96a302c141 100644 > --- a/hw/net/pcnet-pci.c > +++ b/hw/net/pcnet-pci.c > @@ -29,7 +29,7 @@ > > #include "qemu/osdep.h" > #include "hw/irq.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/qdev-properties.h" > #include "migration/vmstate.h" > #include "net/net.h" > diff --git a/hw/net/rocker/rocker.c b/hw/net/rocker/rocker.c > index 281d43e6cf..cf54ddf49d 100644 > --- a/hw/net/rocker/rocker.c > +++ b/hw/net/rocker/rocker.c > @@ -16,7 +16,7 @@ > */ > > #include "qemu/osdep.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/qdev-properties.h" > #include "hw/qdev-properties-system.h" > #include "migration/vmstate.h" > diff --git a/hw/net/rocker/rocker_desc.c b/hw/net/rocker/rocker_desc.c > index 01845f1157..f3068c9250 100644 > --- a/hw/net/rocker/rocker_desc.c > +++ b/hw/net/rocker/rocker_desc.c > @@ -16,7 +16,7 @@ > > #include "qemu/osdep.h" > #include "net/net.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > > #include "rocker.h" > #include "rocker_hw.h" > diff --git a/hw/net/rtl8139.c b/hw/net/rtl8139.c > index 700b1b66b6..5a5aaf868d 100644 > --- a/hw/net/rtl8139.c > +++ b/hw/net/rtl8139.c > @@ -53,7 +53,7 @@ > #include "qemu/osdep.h" > #include > > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/qdev-properties.h" > #include "migration/vmstate.h" > #include "sysemu/dma.h" > diff --git a/hw/net/sungem.c b/hw/net/sungem.c > index 3684a4d733..eb01520790 100644 > --- a/hw/net/sungem.c > +++ b/hw/net/sungem.c > @@ -8,7 +8,7 @@ > */ > > #include "qemu/osdep.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/qdev-properties.h" > #include "migration/vmstate.h" > #include "qemu/log.h" > diff --git a/hw/net/sunhme.c b/hw/net/sunhme.c > index fc34905f87..1f3d8011ae 100644 > --- a/hw/net/sunhme.c > +++ b/hw/net/sunhme.c > @@ -23,7 +23,7 @@ > */ > > #include "qemu/osdep.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/qdev-properties.h" > #include "migration/vmstate.h" > #include "hw/net/mii.h" > diff --git a/hw/net/tulip.c b/hw/net/tulip.c > index c2b3b1bdfa..915e5fb595 100644 > --- a/hw/net/tulip.c > +++ b/hw/net/tulip.c > @@ -9,7 +9,7 @@ > #include "qemu/osdep.h" > #include "qemu/log.h" > #include "hw/irq.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/qdev-properties.h" > #include "hw/nvram/eeprom93xx.h" > #include "migration/vmstate.h" > diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c > index aba12759d5..ee0af784f9 100644 > --- a/hw/net/virtio-net.c > +++ b/hw/net/virtio-net.c > @@ -42,7 +42,7 @@ > #include "sysemu/sysemu.h" > #include "trace.h" > #include "monitor/qdev.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "net_rx_pkt.h" > #include "hw/virtio/vhost.h" > #include "sysemu/qtest.h" > diff --git a/hw/pci-host/bonito.c b/hw/pci-host/bonito.c > index a57e81e3a9..f04f3ad668 100644 > --- a/hw/pci-host/bonito.c > +++ b/hw/pci-host/bonito.c > @@ -42,7 +42,7 @@ > #include "qemu/units.h" > #include "qapi/error.h" > #include "qemu/error-report.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/irq.h" > #include "hw/mips/mips.h" > #include "hw/pci/pci_host.h" > diff --git a/hw/pci-host/dino.c b/hw/pci-host/dino.c > index f257c24e64..e8eaebca54 100644 > --- a/hw/pci-host/dino.c > +++ b/hw/pci-host/dino.c > @@ -15,7 +15,7 @@ > #include "qemu/units.h" > #include "qapi/error.h" > #include "hw/irq.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/pci/pci_bus.h" > #include "hw/qdev-properties.h" > #include "hw/pci-host/dino.h" > diff --git a/hw/pci-host/grackle.c b/hw/pci-host/grackle.c > index 95945ac0f4..8cf318cb80 100644 > --- a/hw/pci-host/grackle.c > +++ b/hw/pci-host/grackle.c > @@ -25,7 +25,7 @@ > > #include "qemu/osdep.h" > #include "hw/qdev-properties.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/irq.h" > #include "qapi/error.h" > #include "qemu/module.h" > diff --git a/hw/pci-host/mv64361.c b/hw/pci-host/mv64361.c > index cc9c4d6d3b..015b92bd5f 100644 > --- a/hw/pci-host/mv64361.c > +++ b/hw/pci-host/mv64361.c > @@ -13,7 +13,7 @@ > #include "qapi/error.h" > #include "hw/hw.h" > #include "hw/sysbus.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/pci/pci_host.h" > #include "hw/irq.h" > #include "hw/intc/i8259.h" > diff --git a/hw/pci-host/ppce500.c b/hw/pci-host/ppce500.c > index 89c1b53dd7..568849e930 100644 > --- a/hw/pci-host/ppce500.c > +++ b/hw/pci-host/ppce500.c > @@ -19,7 +19,7 @@ > #include "hw/ppc/e500-ccsr.h" > #include "hw/qdev-properties.h" > #include "migration/vmstate.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/pci/pci_host.h" > #include "qemu/bswap.h" > #include "qemu/module.h" > diff --git a/hw/pci-host/raven.c b/hw/pci-host/raven.c > index 7a105e4a63..2c96ddf8fe 100644 > --- a/hw/pci-host/raven.c > +++ b/hw/pci-host/raven.c > @@ -28,7 +28,7 @@ > #include "qemu/units.h" > #include "qemu/log.h" > #include "qapi/error.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/pci/pci_bus.h" > #include "hw/pci/pci_host.h" > #include "hw/qdev-properties.h" > diff --git a/hw/pci-host/sh_pci.c b/hw/pci-host/sh_pci.c > index 719d6ca2a6..77e7bbc65f 100644 > --- a/hw/pci-host/sh_pci.c > +++ b/hw/pci-host/sh_pci.c > @@ -26,7 +26,7 @@ > #include "hw/sysbus.h" > #include "hw/sh4/sh.h" > #include "hw/irq.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/pci/pci_host.h" > #include "qemu/bswap.h" > #include "qemu/module.h" > diff --git a/hw/pci-host/uninorth.c b/hw/pci-host/uninorth.c > index aebd44d265..8f7a300a32 100644 > --- a/hw/pci-host/uninorth.c > +++ b/hw/pci-host/uninorth.c > @@ -26,7 +26,7 @@ > #include "hw/irq.h" > #include "hw/qdev-properties.h" > #include "qemu/module.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/pci/pci_host.h" > #include "hw/pci-host/uninorth.h" > #include "trace.h" > diff --git a/hw/pci-host/versatile.c b/hw/pci-host/versatile.c > index f66384fa02..0d50ea4cc0 100644 > --- a/hw/pci-host/versatile.c > +++ b/hw/pci-host/versatile.c > @@ -12,7 +12,7 @@ > #include "hw/sysbus.h" > #include "migration/vmstate.h" > #include "hw/irq.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/pci/pci_bus.h" > #include "hw/pci/pci_host.h" > #include "hw/qdev-properties.h" > diff --git a/hw/pci/pcie_host.c b/hw/pci/pcie_host.c > index 5abbe83220..3717e1a086 100644 > --- a/hw/pci/pcie_host.c > +++ b/hw/pci/pcie_host.c > @@ -20,7 +20,7 @@ > */ > > #include "qemu/osdep.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/pci/pcie_host.h" > #include "qemu/module.h" > > diff --git a/hw/pci/pcie_sriov.c b/hw/pci/pcie_sriov.c > index 8e3faf1f59..f0bd72e069 100644 > --- a/hw/pci/pcie_sriov.c > +++ b/hw/pci/pcie_sriov.c > @@ -11,7 +11,7 @@ > */ > > #include "qemu/osdep.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/pci/pcie.h" > #include "hw/pci/pci_bus.h" > #include "hw/qdev-properties.h" > diff --git a/hw/pci/slotid_cap.c b/hw/pci/slotid_cap.c > index 36d021b4a6..8372d05d9e 100644 > --- a/hw/pci/slotid_cap.c > +++ b/hw/pci/slotid_cap.c > @@ -1,6 +1,6 @@ > #include "qemu/osdep.h" > #include "hw/pci/slotid_cap.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "qemu/error-report.h" > #include "qapi/error.h" > > diff --git a/hw/ppc/ppc440_pcix.c b/hw/ppc/ppc440_pcix.c > index 788d25514a..f10f93c533 100644 > --- a/hw/ppc/ppc440_pcix.c > +++ b/hw/ppc/ppc440_pcix.c > @@ -26,7 +26,7 @@ > #include "hw/irq.h" > #include "hw/ppc/ppc.h" > #include "hw/ppc/ppc4xx.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/pci/pci_host.h" > #include "trace.h" > #include "qom/object.h" > diff --git a/hw/ppc/ppc4xx_pci.c b/hw/ppc/ppc4xx_pci.c > index 8642b96455..1d4a50fa7c 100644 > --- a/hw/ppc/ppc4xx_pci.c > +++ b/hw/ppc/ppc4xx_pci.c > @@ -29,7 +29,7 @@ > #include "migration/vmstate.h" > #include "qemu/module.h" > #include "sysemu/reset.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/pci/pci_host.h" > #include "trace.h" > #include "qom/object.h" > diff --git a/hw/ppc/spapr_pci_vfio.c b/hw/ppc/spapr_pci_vfio.c > index 2a76b4e0b5..d8aeee0b7e 100644 > --- a/hw/ppc/spapr_pci_vfio.c > +++ b/hw/ppc/spapr_pci_vfio.c > @@ -22,6 +22,7 @@ > #include "hw/ppc/spapr.h" > #include "hw/pci-host/spapr.h" > #include "hw/pci/msix.h" > +#include "hw/pci/pci_device.h" > #include "hw/vfio/vfio.h" > #include "qemu/error-report.h" > > diff --git a/hw/rdma/rdma_utils.c b/hw/rdma/rdma_utils.c > index 77008552f4..c948baf052 100644 > --- a/hw/rdma/rdma_utils.c > +++ b/hw/rdma/rdma_utils.c > @@ -14,7 +14,7 @@ > */ > > #include "qemu/osdep.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "trace.h" > #include "rdma_utils.h" > > diff --git a/hw/s390x/s390-pci-inst.c b/hw/s390x/s390-pci-inst.c > index 7cc4bcf850..f81e6810b2 100644 > --- a/hw/s390x/s390-pci-inst.c > +++ b/hw/s390x/s390-pci-inst.c > @@ -16,6 +16,7 @@ > #include "exec/memory-internal.h" > #include "qemu/error-report.h" > #include "sysemu/hw_accel.h" > +#include "hw/pci/pci_device.h" > #include "hw/s390x/s390-pci-inst.h" > #include "hw/s390x/s390-pci-bus.h" > #include "hw/s390x/s390-pci-kvm.h" > diff --git a/hw/scsi/esp-pci.c b/hw/scsi/esp-pci.c > index 1792f84cea..2f7f11e70b 100644 > --- a/hw/scsi/esp-pci.c > +++ b/hw/scsi/esp-pci.c > @@ -24,7 +24,7 @@ > */ > > #include "qemu/osdep.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/irq.h" > #include "hw/nvram/eeprom93xx.h" > #include "hw/scsi/esp.h" > diff --git a/hw/scsi/lsi53c895a.c b/hw/scsi/lsi53c895a.c > index 50979640c3..af93557a9a 100644 > --- a/hw/scsi/lsi53c895a.c > +++ b/hw/scsi/lsi53c895a.c > @@ -16,7 +16,7 @@ > #include "qemu/osdep.h" > > #include "hw/irq.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/scsi/scsi.h" > #include "migration/vmstate.h" > #include "sysemu/dma.h" > diff --git a/hw/smbios/smbios.c b/hw/smbios/smbios.c > index b4243de735..4869566cf5 100644 > --- a/hw/smbios/smbios.c > +++ b/hw/smbios/smbios.c > @@ -28,6 +28,7 @@ > #include "hw/loader.h" > #include "hw/boards.h" > #include "hw/pci/pci_bus.h" > +#include "hw/pci/pci_device.h" > #include "smbios_build.h" > > /* legacy structures and constants for <= 2.0 machines */ > diff --git a/hw/usb/hcd-ohci-pci.c b/hw/usb/hcd-ohci-pci.c > index 8e1146b862..6b630d35a7 100644 > --- a/hw/usb/hcd-ohci-pci.c > +++ b/hw/usb/hcd-ohci-pci.c > @@ -23,7 +23,7 @@ > #include "qemu/timer.h" > #include "hw/usb.h" > #include "migration/vmstate.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/sysbus.h" > #include "hw/qdev-dma.h" > #include "hw/qdev-properties.h" > diff --git a/hw/watchdog/wdt_i6300esb.c b/hw/watchdog/wdt_i6300esb.c > index 5693ec6a09..54c167cd35 100644 > --- a/hw/watchdog/wdt_i6300esb.c > +++ b/hw/watchdog/wdt_i6300esb.c > @@ -24,7 +24,7 @@ > #include "qemu/module.h" > #include "qemu/timer.h" > #include "sysemu/watchdog.h" > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "migration/vmstate.h" > #include "qom/object.h" > > diff --git a/ui/util.c b/ui/util.c > index 7e8fc1ea53..f5a2499110 100644 > --- a/ui/util.c > +++ b/ui/util.c > @@ -17,7 +17,7 @@ > > #include "qemu/osdep.h" > > -#include "hw/pci/pci.h" > +#include "hw/pci/pci_device.h" > #include "hw/pci/pci_bus.h" > #include "qapi/error.h" > #include "ui/console.h" > -- > 2.37.3