From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: qemu-devel@nongnu.org, mst@redhat.com, marcel.apfelbaum@gmail.com
Subject: Re: [PATCH 03/12] pci: Move HMP commands from monitor/ to new hw/pci/pci-hmp-cmds.c
Date: Mon, 28 Nov 2022 12:09:27 +0000 [thread overview]
Message-ID: <Y4Sk96FsWdt4wYcK@work-vm> (raw)
In-Reply-To: <20221128080202.2570543-4-armbru@redhat.com>
* Markus Armbruster (armbru@redhat.com) wrote:
> This moves these commands from MAINTAINERS section "Human
> Monitor (HMP)" to "PCI".
>
> Signed-off-by: Markus Armbruster <armbru@redhat.com>
> ---
> hw/pci/pci-hmp-cmds.c | 126 ++++++++++++++++++++++++++++++++++++++++++
> monitor/hmp-cmds.c | 107 -----------------------------------
> hw/pci/meson.build | 1 +
> 3 files changed, 127 insertions(+), 107 deletions(-)
> create mode 100644 hw/pci/pci-hmp-cmds.c
>
> diff --git a/hw/pci/pci-hmp-cmds.c b/hw/pci/pci-hmp-cmds.c
> new file mode 100644
> index 0000000000..5adfe4f57f
> --- /dev/null
> +++ b/hw/pci/pci-hmp-cmds.c
> @@ -0,0 +1,126 @@
> +/*
> + * HMP commands related to PCI
> + *
> + * Copyright IBM, Corp. 2011
> + *
> + * Authors:
> + * Anthony Liguori <aliguori@us.ibm.com>
> + *
> + * This work is licensed under the terms of the GNU GPL, version 2. See
> + * the COPYING file in the top-level directory.
> + *
> + * Contributions after 2012-01-13 are licensed under the terms of the
> + * GNU GPL, version 2 or (at your option) any later version.
Yes, unfortunately it looks like the bulk of this code was ~3 months
earlier than the cut off.
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
> + */
> +
> +#include "qemu/osdep.h"
> +#include "monitor/hmp.h"
> +#include "monitor/monitor.h"
> +#include "qapi/error.h"
> +#include "qapi/qapi-commands-pci.h"
> +
> +static void hmp_info_pci_device(Monitor *mon, const PciDeviceInfo *dev)
> +{
> + PciMemoryRegionList *region;
> +
> + monitor_printf(mon, " Bus %2" PRId64 ", ", dev->bus);
> + monitor_printf(mon, "device %3" PRId64 ", function %" PRId64 ":\n",
> + dev->slot, dev->function);
> + monitor_printf(mon, " ");
> +
> + if (dev->class_info->has_desc) {
> + monitor_puts(mon, dev->class_info->desc);
> + } else {
> + monitor_printf(mon, "Class %04" PRId64, dev->class_info->q_class);
> + }
> +
> + monitor_printf(mon, ": PCI device %04" PRIx64 ":%04" PRIx64 "\n",
> + dev->id->vendor, dev->id->device);
> + if (dev->id->has_subsystem_vendor && dev->id->has_subsystem) {
> + monitor_printf(mon, " PCI subsystem %04" PRIx64 ":%04" PRIx64 "\n",
> + dev->id->subsystem_vendor, dev->id->subsystem);
> + }
> +
> + if (dev->has_irq) {
> + monitor_printf(mon, " IRQ %" PRId64 ", pin %c\n",
> + dev->irq, (char)('A' + dev->irq_pin - 1));
> + }
> +
> + if (dev->has_pci_bridge) {
> + monitor_printf(mon, " BUS %" PRId64 ".\n",
> + dev->pci_bridge->bus->number);
> + monitor_printf(mon, " secondary bus %" PRId64 ".\n",
> + dev->pci_bridge->bus->secondary);
> + monitor_printf(mon, " subordinate bus %" PRId64 ".\n",
> + dev->pci_bridge->bus->subordinate);
> +
> + monitor_printf(mon, " IO range [0x%04"PRIx64", 0x%04"PRIx64"]\n",
> + dev->pci_bridge->bus->io_range->base,
> + dev->pci_bridge->bus->io_range->limit);
> +
> + monitor_printf(mon,
> + " memory range [0x%08"PRIx64", 0x%08"PRIx64"]\n",
> + dev->pci_bridge->bus->memory_range->base,
> + dev->pci_bridge->bus->memory_range->limit);
> +
> + monitor_printf(mon, " prefetchable memory range "
> + "[0x%08"PRIx64", 0x%08"PRIx64"]\n",
> + dev->pci_bridge->bus->prefetchable_range->base,
> + dev->pci_bridge->bus->prefetchable_range->limit);
> + }
> +
> + for (region = dev->regions; region; region = region->next) {
> + uint64_t addr, size;
> +
> + addr = region->value->address;
> + size = region->value->size;
> +
> + monitor_printf(mon, " BAR%" PRId64 ": ", region->value->bar);
> +
> + if (!strcmp(region->value->type, "io")) {
> + monitor_printf(mon, "I/O at 0x%04" PRIx64
> + " [0x%04" PRIx64 "].\n",
> + addr, addr + size - 1);
> + } else {
> + monitor_printf(mon, "%d bit%s memory at 0x%08" PRIx64
> + " [0x%08" PRIx64 "].\n",
> + region->value->mem_type_64 ? 64 : 32,
> + region->value->prefetch ? " prefetchable" : "",
> + addr, addr + size - 1);
> + }
> + }
> +
> + monitor_printf(mon, " id \"%s\"\n", dev->qdev_id);
> +
> + if (dev->has_pci_bridge) {
> + if (dev->pci_bridge->has_devices) {
> + PciDeviceInfoList *cdev;
> + for (cdev = dev->pci_bridge->devices; cdev; cdev = cdev->next) {
> + hmp_info_pci_device(mon, cdev->value);
> + }
> + }
> + }
> +}
> +
> +void hmp_info_pci(Monitor *mon, const QDict *qdict)
> +{
> + PciInfoList *info_list, *info;
> + Error *err = NULL;
> +
> + info_list = qmp_query_pci(&err);
> + if (err) {
> + monitor_printf(mon, "PCI devices not supported\n");
> + error_free(err);
> + return;
> + }
> +
> + for (info = info_list; info; info = info->next) {
> + PciDeviceInfoList *dev;
> +
> + for (dev = info->value->devices; dev; dev = dev->next) {
> + hmp_info_pci_device(mon, dev->value);
> + }
> + }
> +
> + qapi_free_PciInfoList(info_list);
> +}
> diff --git a/monitor/hmp-cmds.c b/monitor/hmp-cmds.c
> index 01b789a79e..03eae10663 100644
> --- a/monitor/hmp-cmds.c
> +++ b/monitor/hmp-cmds.c
> @@ -37,7 +37,6 @@
> #include "qapi/qapi-commands-migration.h"
> #include "qapi/qapi-commands-misc.h"
> #include "qapi/qapi-commands-net.h"
> -#include "qapi/qapi-commands-pci.h"
> #include "qapi/qapi-commands-rocker.h"
> #include "qapi/qapi-commands-run-state.h"
> #include "qapi/qapi-commands-stats.h"
> @@ -701,89 +700,6 @@ void hmp_info_balloon(Monitor *mon, const QDict *qdict)
> qapi_free_BalloonInfo(info);
> }
>
> -static void hmp_info_pci_device(Monitor *mon, const PciDeviceInfo *dev)
> -{
> - PciMemoryRegionList *region;
> -
> - monitor_printf(mon, " Bus %2" PRId64 ", ", dev->bus);
> - monitor_printf(mon, "device %3" PRId64 ", function %" PRId64 ":\n",
> - dev->slot, dev->function);
> - monitor_printf(mon, " ");
> -
> - if (dev->class_info->has_desc) {
> - monitor_puts(mon, dev->class_info->desc);
> - } else {
> - monitor_printf(mon, "Class %04" PRId64, dev->class_info->q_class);
> - }
> -
> - monitor_printf(mon, ": PCI device %04" PRIx64 ":%04" PRIx64 "\n",
> - dev->id->vendor, dev->id->device);
> - if (dev->id->has_subsystem_vendor && dev->id->has_subsystem) {
> - monitor_printf(mon, " PCI subsystem %04" PRIx64 ":%04" PRIx64 "\n",
> - dev->id->subsystem_vendor, dev->id->subsystem);
> - }
> -
> - if (dev->has_irq) {
> - monitor_printf(mon, " IRQ %" PRId64 ", pin %c\n",
> - dev->irq, (char)('A' + dev->irq_pin - 1));
> - }
> -
> - if (dev->has_pci_bridge) {
> - monitor_printf(mon, " BUS %" PRId64 ".\n",
> - dev->pci_bridge->bus->number);
> - monitor_printf(mon, " secondary bus %" PRId64 ".\n",
> - dev->pci_bridge->bus->secondary);
> - monitor_printf(mon, " subordinate bus %" PRId64 ".\n",
> - dev->pci_bridge->bus->subordinate);
> -
> - monitor_printf(mon, " IO range [0x%04"PRIx64", 0x%04"PRIx64"]\n",
> - dev->pci_bridge->bus->io_range->base,
> - dev->pci_bridge->bus->io_range->limit);
> -
> - monitor_printf(mon,
> - " memory range [0x%08"PRIx64", 0x%08"PRIx64"]\n",
> - dev->pci_bridge->bus->memory_range->base,
> - dev->pci_bridge->bus->memory_range->limit);
> -
> - monitor_printf(mon, " prefetchable memory range "
> - "[0x%08"PRIx64", 0x%08"PRIx64"]\n",
> - dev->pci_bridge->bus->prefetchable_range->base,
> - dev->pci_bridge->bus->prefetchable_range->limit);
> - }
> -
> - for (region = dev->regions; region; region = region->next) {
> - uint64_t addr, size;
> -
> - addr = region->value->address;
> - size = region->value->size;
> -
> - monitor_printf(mon, " BAR%" PRId64 ": ", region->value->bar);
> -
> - if (!strcmp(region->value->type, "io")) {
> - monitor_printf(mon, "I/O at 0x%04" PRIx64
> - " [0x%04" PRIx64 "].\n",
> - addr, addr + size - 1);
> - } else {
> - monitor_printf(mon, "%d bit%s memory at 0x%08" PRIx64
> - " [0x%08" PRIx64 "].\n",
> - region->value->mem_type_64 ? 64 : 32,
> - region->value->prefetch ? " prefetchable" : "",
> - addr, addr + size - 1);
> - }
> - }
> -
> - monitor_printf(mon, " id \"%s\"\n", dev->qdev_id);
> -
> - if (dev->has_pci_bridge) {
> - if (dev->pci_bridge->has_devices) {
> - PciDeviceInfoList *cdev;
> - for (cdev = dev->pci_bridge->devices; cdev; cdev = cdev->next) {
> - hmp_info_pci_device(mon, cdev->value);
> - }
> - }
> - }
> -}
> -
> static int hmp_info_pic_foreach(Object *obj, void *opaque)
> {
> InterruptStatsProvider *intc;
> @@ -810,29 +726,6 @@ void hmp_info_pic(Monitor *mon, const QDict *qdict)
> hmp_info_pic_foreach, mon);
> }
>
> -void hmp_info_pci(Monitor *mon, const QDict *qdict)
> -{
> - PciInfoList *info_list, *info;
> - Error *err = NULL;
> -
> - info_list = qmp_query_pci(&err);
> - if (err) {
> - monitor_printf(mon, "PCI devices not supported\n");
> - error_free(err);
> - return;
> - }
> -
> - for (info = info_list; info; info = info->next) {
> - PciDeviceInfoList *dev;
> -
> - for (dev = info->value->devices; dev; dev = dev->next) {
> - hmp_info_pci_device(mon, dev->value);
> - }
> - }
> -
> - qapi_free_PciInfoList(info_list);
> -}
> -
> void hmp_info_tpm(Monitor *mon, const QDict *qdict)
> {
> #ifdef CONFIG_TPM
> diff --git a/hw/pci/meson.build b/hw/pci/meson.build
> index 40721f1514..e42a133f3a 100644
> --- a/hw/pci/meson.build
> +++ b/hw/pci/meson.build
> @@ -20,3 +20,4 @@ softmmu_ss.add_all(when: 'CONFIG_PCI', if_true: pci_ss)
>
> softmmu_ss.add(when: 'CONFIG_PCI', if_false: files('pci-stub.c'))
> softmmu_ss.add(when: 'CONFIG_ALL', if_true: files('pci-stub.c'))
> +softmmu_ss.add(files('pci-hmp-cmds.c'))
> --
> 2.37.3
>
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
next prev parent reply other threads:[~2022-11-28 12:10 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-11-28 8:01 [PATCH 00/12] pci: Move and clean up monitor command code Markus Armbruster
2022-11-28 8:01 ` [PATCH 01/12] pci: Clean up a few things checkpatch.pl would flag later on Markus Armbruster
2022-11-28 8:27 ` Philippe Mathieu-Daudé
2022-11-28 8:01 ` [PATCH 02/12] pci: Move QMP commands to new hw/pci/pci-qmp-cmds.c Markus Armbruster
2022-11-28 8:01 ` [PATCH 03/12] pci: Move HMP commands from monitor/ to new hw/pci/pci-hmp-cmds.c Markus Armbruster
2022-11-28 8:27 ` Philippe Mathieu-Daudé
2022-11-28 12:09 ` Dr. David Alan Gilbert [this message]
2022-11-28 8:01 ` [PATCH 04/12] pci: Make query-pci stub consistent with the real one Markus Armbruster
2022-11-29 12:03 ` Dr. David Alan Gilbert
2022-11-28 8:01 ` [PATCH 05/12] pci: Build hw/pci/pci-hmp-cmds.c only when CONFIG_PCI Markus Armbruster
2022-11-28 8:26 ` Philippe Mathieu-Daudé
2022-11-28 10:21 ` Markus Armbruster
2022-11-28 10:26 ` Michael S. Tsirkin
2022-11-28 12:24 ` Dr. David Alan Gilbert
2022-11-28 13:38 ` Markus Armbruster
2022-11-28 14:27 ` Dr. David Alan Gilbert
2022-11-28 8:01 ` [PATCH 06/12] pci: Deduplicate get_class_desc() Markus Armbruster
2022-11-28 8:01 ` [PATCH 07/12] pci: Move pcibus_dev_print() to pci-hmp-cmds.c Markus Armbruster
2022-11-28 8:24 ` Philippe Mathieu-Daudé
2022-11-28 8:01 ` [PATCH 08/12] pci: Fix silent truncation of pcie_aer_inject_error argument Markus Armbruster
2022-11-29 12:14 ` Dr. David Alan Gilbert
2022-11-30 18:40 ` Markus Armbruster
2022-11-28 8:01 ` [PATCH 09/12] pci: Move HMP command from hw/pci/pcie_aer.c to pci-hmp-cmds.c Markus Armbruster
2022-11-28 8:21 ` Philippe Mathieu-Daudé
2022-11-28 11:50 ` Markus Armbruster
2022-11-28 8:02 ` [PATCH 10/12] pci: Inline do_pcie_aer_inject_error() into its only caller Markus Armbruster
2022-11-29 19:59 ` Dr. David Alan Gilbert
2022-11-28 8:02 ` [PATCH 11/12] pci: Rename hmp_pcie_aer_inject_error()'s local variable @err Markus Armbruster
2022-11-28 8:21 ` Philippe Mathieu-Daudé
2022-11-28 8:02 ` [PATCH 12/12] pci: Improve do_pcie_aer_inject_error()'s error messages Markus Armbruster
2022-11-29 19:42 ` Dr. David Alan Gilbert
2022-11-28 9:25 ` [PATCH 00/12] pci: Move and clean up monitor command code Michael S. Tsirkin
2022-11-28 11:52 ` Markus Armbruster
2022-11-28 10:27 ` Michael S. Tsirkin
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=Y4Sk96FsWdt4wYcK@work-vm \
--to=dgilbert@redhat.com \
--cc=armbru@redhat.com \
--cc=marcel.apfelbaum@gmail.com \
--cc=mst@redhat.com \
--cc=qemu-devel@nongnu.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.