qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Philippe Mathieu-Daudé" <philmd@linaro.org>
To: qemu-devel@nongnu.org
Cc: "Philippe Mathieu-Daudé" <philmd@linaro.org>,
	"Daniel P . Berrangé" <berrange@redhat.com>
Subject: [PULL 52/76] hw/intc: Introduce x-query-interrupt-controllers QMP command
Date: Tue, 18 Jun 2024 18:00:14 +0200	[thread overview]
Message-ID: <20240618160039.36108-53-philmd@linaro.org> (raw)
In-Reply-To: <20240618160039.36108-1-philmd@linaro.org>

This is a counterpart to the HMP "info pic" command. It is being
added with an "x-" prefix because this QMP command is intended as an
adhoc debugging tool and will thus not be modelled in QAPI as fully
structured data, nor will it have long term guaranteed stability.
The existing HMP command is rewritten to call the QMP command.

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Message-Id: <20240610063518.50680-3-philmd@linaro.org>
---
 qapi/machine.json          | 17 +++++++++++++++++
 hw/core/machine-qmp-cmds.c | 29 +++++++++++++++++++++++++++++
 monitor/hmp-cmds.c         | 33 ---------------------------------
 hmp-commands-info.hx       |  2 +-
 4 files changed, 47 insertions(+), 34 deletions(-)

diff --git a/qapi/machine.json b/qapi/machine.json
index 453feb9347..2fd3e9c3d5 100644
--- a/qapi/machine.json
+++ b/qapi/machine.json
@@ -1864,3 +1864,20 @@
 { 'command': 'dumpdtb',
   'data': { 'filename': 'str' },
   'if': 'CONFIG_FDT' }
+
+##
+# @x-query-interrupt-controllers:
+#
+# Query information on interrupt controller devices
+#
+# Features:
+#
+# @unstable: This command is meant for debugging.
+#
+# Returns: Interrupt controller devices information
+#
+# Since: 9.1
+##
+{ 'command': 'x-query-interrupt-controllers',
+  'returns': 'HumanReadableText',
+  'features': [ 'unstable' ]}
diff --git a/hw/core/machine-qmp-cmds.c b/hw/core/machine-qmp-cmds.c
index 5972100b1f..130217da8f 100644
--- a/hw/core/machine-qmp-cmds.c
+++ b/hw/core/machine-qmp-cmds.c
@@ -361,6 +361,35 @@ HumanReadableText *qmp_x_query_irq(Error **errp)
     return human_readable_text_from_str(buf);
 }
 
+static int qmp_x_query_intc_foreach(Object *obj, void *opaque)
+{
+    InterruptStatsProvider *intc;
+    InterruptStatsProviderClass *k;
+    GString *buf = opaque;
+
+    if (object_dynamic_cast(obj, TYPE_INTERRUPT_STATS_PROVIDER)) {
+        intc = INTERRUPT_STATS_PROVIDER(obj);
+        k = INTERRUPT_STATS_PROVIDER_GET_CLASS(obj);
+        if (k->print_info) {
+            k->print_info(intc, buf);
+        } else {
+            g_string_append_printf(buf,
+                                   "Interrupt controller information not available for %s.\n",
+                                   object_get_typename(obj));
+        }
+    }
+
+    return 0;
+}
+
+HumanReadableText *qmp_x_query_interrupt_controllers(Error **errp)
+{
+    g_autoptr(GString) buf = g_string_new("");
+    object_child_foreach_recursive(object_get_root(),
+                                   qmp_x_query_intc_foreach, buf);
+    return human_readable_text_from_str(buf);
+}
+
 GuidInfo *qmp_query_vm_generation_id(Error **errp)
 {
     GuidInfo *info;
diff --git a/monitor/hmp-cmds.c b/monitor/hmp-cmds.c
index fbff7fdb57..45ee3a9e1f 100644
--- a/monitor/hmp-cmds.c
+++ b/monitor/hmp-cmds.c
@@ -25,9 +25,7 @@
 #include "qapi/qapi-commands-machine.h"
 #include "qapi/qapi-commands-misc.h"
 #include "qapi/qmp/qdict.h"
-#include "qapi/type-helpers.h"
 #include "qemu/cutils.h"
-#include "hw/intc/intc.h"
 #include "qemu/log.h"
 #include "sysemu/sysemu.h"
 
@@ -83,37 +81,6 @@ void hmp_info_version(Monitor *mon, const QDict *qdict)
     qapi_free_VersionInfo(info);
 }
 
-static int hmp_info_pic_foreach(Object *obj, void *opaque)
-{
-    InterruptStatsProvider *intc;
-    InterruptStatsProviderClass *k;
-    Monitor *mon = opaque;
-
-    if (object_dynamic_cast(obj, TYPE_INTERRUPT_STATS_PROVIDER)) {
-        intc = INTERRUPT_STATS_PROVIDER(obj);
-        k = INTERRUPT_STATS_PROVIDER_GET_CLASS(obj);
-        if (k->print_info) {
-            g_autoptr(GString) buf = g_string_new("");
-            g_autoptr(HumanReadableText) info = NULL;
-
-            k->print_info(intc, buf);
-            info = human_readable_text_from_str(buf);
-            monitor_puts(mon, info->human_readable_text);
-        } else {
-            monitor_printf(mon, "Interrupt controller information not available for %s.\n",
-                           object_get_typename(obj));
-        }
-    }
-
-    return 0;
-}
-
-void hmp_info_pic(Monitor *mon, const QDict *qdict)
-{
-    object_child_foreach_recursive(object_get_root(),
-                                   hmp_info_pic_foreach, mon);
-}
-
 void hmp_quit(Monitor *mon, const QDict *qdict)
 {
     monitor_suspend(mon);
diff --git a/hmp-commands-info.hx b/hmp-commands-info.hx
index 20a9835ea8..cfd4ad5651 100644
--- a/hmp-commands-info.hx
+++ b/hmp-commands-info.hx
@@ -174,7 +174,7 @@ ERST
         .args_type  = "",
         .params     = "",
         .help       = "show PIC state",
-        .cmd        = hmp_info_pic,
+        .cmd_info_hrt = qmp_x_query_interrupt_controllers,
     },
 
 SRST
-- 
2.41.0



  parent reply	other threads:[~2024-06-18 16:07 UTC|newest]

Thread overview: 85+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-06-18 15:59 [PULL 00/76] Misc patches for 2024-06-18 Philippe Mathieu-Daudé
2024-06-18 15:59 ` [PULL 01/76] hw/i386/pc: Deprecate 2.4 to 2.12 pc-i440fx machines Philippe Mathieu-Daudé
2024-06-18 15:59 ` [PULL 02/76] hw/i386/pc: Remove deprecated pc-i440fx-2.0 machine Philippe Mathieu-Daudé
2024-06-18 15:59 ` [PULL 03/76] hw/usb/hcd-xhci: Remove XHCI_FLAG_FORCE_PCIE_ENDCAP flag Philippe Mathieu-Daudé
2024-06-18 15:59 ` [PULL 04/76] hw/usb/hcd-xhci: Remove XHCI_FLAG_SS_FIRST flag Philippe Mathieu-Daudé
2024-06-18 15:59 ` [PULL 05/76] hw/i386/acpi: Remove PCMachineClass::legacy_acpi_table_size Philippe Mathieu-Daudé
2024-06-18 15:59 ` [PULL 06/76] hw/acpi/ich9: Remove 'memory-hotplug-support' property Philippe Mathieu-Daudé
2024-06-18 15:59 ` [PULL 07/76] hw/acpi/ich9: Remove dead code related to 'acpi_memory_hotplug' Philippe Mathieu-Daudé
2024-06-18 15:59 ` [PULL 08/76] hw/i386/pc: Remove deprecated pc-i440fx-2.1 machine Philippe Mathieu-Daudé
2024-06-18 15:59 ` [PULL 09/76] target/i386/kvm: Remove x86_cpu_change_kvm_default() and 'kvm-cpu.h' Philippe Mathieu-Daudé
2024-06-18 15:59 ` [PULL 10/76] hw/i386/pc: Remove PCMachineClass::smbios_uuid_encoded Philippe Mathieu-Daudé
2024-06-18 15:59 ` [PULL 11/76] hw/smbios: Remove 'uuid_encoded' argument from smbios_set_defaults() Philippe Mathieu-Daudé
2024-06-18 15:59 ` [PULL 12/76] hw/smbios: Remove 'smbios_uuid_encoded', simplify smbios_encode_uuid() Philippe Mathieu-Daudé
2024-06-18 15:59 ` [PULL 13/76] hw/i386/pc: Remove PCMachineClass::enforce_aligned_dimm Philippe Mathieu-Daudé
2024-06-18 15:59 ` [PULL 14/76] hw/mem/pc-dimm: Remove legacy_align argument from pc_dimm_pre_plug() Philippe Mathieu-Daudé
2024-06-18 15:59 ` [PULL 15/76] hw/mem/memory-device: Remove legacy_align from memory_device_pre_plug() Philippe Mathieu-Daudé
2024-06-18 15:59 ` [PULL 16/76] hw/i386/pc: Remove deprecated pc-i440fx-2.2 machine Philippe Mathieu-Daudé
2024-06-18 15:59 ` [PULL 17/76] hw/i386/pc: Remove PCMachineClass::resizable_acpi_blob Philippe Mathieu-Daudé
2024-06-18 15:59 ` [PULL 18/76] hw/i386/pc: Remove PCMachineClass::rsdp_in_ram Philippe Mathieu-Daudé
2024-06-18 15:59 ` [PULL 19/76] hw/i386/acpi: Remove AcpiBuildState::rsdp field Philippe Mathieu-Daudé
2024-06-18 15:59 ` [PULL 20/76] hw/i386/pc: Remove deprecated pc-i440fx-2.3 machine Philippe Mathieu-Daudé
2024-06-18 15:59 ` [PULL 21/76] hw/i386/pc: Simplify DEFINE_I440FX_MACHINE() macro Philippe Mathieu-Daudé
2024-06-18 15:59 ` [PULL 22/76] target/i386: Remove X86CPU::kvm_no_smi_migration field Philippe Mathieu-Daudé
2024-06-18 15:59 ` [PULL 23/76] hw/i386/pc: Replace PCMachineClass::acpi_data_size by PC_ACPI_DATA_SIZE Philippe Mathieu-Daudé
2024-06-18 15:59 ` [PULL 24/76] hw/audio/virtio-snd: Always use little endian audio format Philippe Mathieu-Daudé
2024-06-18 15:59 ` [PULL 25/76] hw/ppc: Avoid using Monitor in pnv_phb3_msi_pic_print_info() Philippe Mathieu-Daudé
2024-06-18 15:59 ` [PULL 26/76] hw/ppc: Avoid using Monitor in icp_pic_print_info() Philippe Mathieu-Daudé
2024-06-18 15:59 ` [PULL 27/76] hw/ppc: Avoid using Monitor in xive_tctx_pic_print_info() Philippe Mathieu-Daudé
2024-06-18 15:59 ` [PULL 28/76] hw/ppc: Avoid using Monitor in ics_pic_print_info() Philippe Mathieu-Daudé
2024-06-18 15:59 ` [PULL 29/76] hw/ppc: Avoid using Monitor in PnvChipClass::intc_print_info() Philippe Mathieu-Daudé
2024-06-18 15:59 ` [PULL 30/76] hw/ppc: Avoid using Monitor in xive_end_queue_pic_print_info() Philippe Mathieu-Daudé
2024-06-18 15:59 ` [PULL 31/76] hw/ppc: Avoid using Monitor in spapr_xive_end_pic_print_info() Philippe Mathieu-Daudé
2024-06-18 15:59 ` [PULL 32/76] hw/ppc: Avoid using Monitor in spapr_xive_pic_print_info() Philippe Mathieu-Daudé
2024-06-18 15:59 ` [PULL 33/76] hw/ppc: Avoid using Monitor in xive_source_pic_print_info() Philippe Mathieu-Daudé
2024-06-18 15:59 ` [PULL 34/76] hw/ppc: Avoid using Monitor in pnv_phb4_pic_print_info() Philippe Mathieu-Daudé
2024-06-18 15:59 ` [PULL 35/76] hw/ppc: Avoid using Monitor in xive_eas_pic_print_info() Philippe Mathieu-Daudé
2024-06-18 15:59 ` [PULL 36/76] hw/ppc: Avoid using Monitor in xive_end_pic_print_info() Philippe Mathieu-Daudé
2024-06-18 15:59 ` [PULL 37/76] hw/ppc: Avoid using Monitor in xive_end_eas_pic_print_info() Philippe Mathieu-Daudé
2024-06-18 16:00 ` [PULL 38/76] hw/ppc: Avoid using Monitor in xive_nvt_pic_print_info() Philippe Mathieu-Daudé
2024-06-18 16:00 ` [PULL 39/76] hw/ppc: Avoid using Monitor in pnv_xive_pic_print_info() Philippe Mathieu-Daudé
2024-06-18 16:00 ` [PULL 40/76] hw/ppc: Avoid using Monitor in pnv_psi_pic_print_info() Philippe Mathieu-Daudé
2024-06-18 16:00 ` [PULL 41/76] hw/ppc: Avoid using Monitor in xive2_eas_pic_print_info() Philippe Mathieu-Daudé
2024-06-18 16:00 ` [PULL 42/76] hw/ppc: Avoid using Monitor in xive2_end_eas_pic_print_info() Philippe Mathieu-Daudé
2024-06-18 16:00 ` [PULL 43/76] hw/ppc: Avoid using Monitor in xive2_end_queue_pic_print_info() Philippe Mathieu-Daudé
2024-06-18 16:00 ` [PULL 44/76] hw/ppc: Avoid using Monitor in xive2_end_pic_print_info() Philippe Mathieu-Daudé
2024-06-18 16:00 ` [PULL 45/76] hw/ppc: Avoid using Monitor in xive2_nvp_pic_print_info() Philippe Mathieu-Daudé
2024-06-18 16:00 ` [PULL 46/76] hw/ppc: Avoid using Monitor in pnv_xive2_pic_print_info() Philippe Mathieu-Daudé
2024-06-18 16:00 ` [PULL 47/76] hw/ppc: Avoid using Monitor in SpaprInterruptControllerClass::print_info() Philippe Mathieu-Daudé
2024-06-18 16:00 ` [PULL 48/76] hw/ppc: Avoid using Monitor in spapr_irq_print_info() Philippe Mathieu-Daudé
2024-06-18 16:00 ` [PULL 49/76] hw/ppc: Avoid using Monitor in pnv_chip_power9_pic_print_info_child() Philippe Mathieu-Daudé
2024-06-18 16:00 ` [PULL 50/76] hw/ppc: Avoid using Monitor in pic_print_info() Philippe Mathieu-Daudé
2024-06-18 16:00 ` [PULL 51/76] hw/intc: Avoid using Monitor in INTERRUPT_STATS_PROVIDER::print_info() Philippe Mathieu-Daudé
2024-06-18 16:00 ` Philippe Mathieu-Daudé [this message]
2024-06-18 16:00 ` [PULL 53/76] ppc/pnv: Introduce pnv_chip_foreach_cpu() Philippe Mathieu-Daudé
2024-06-18 16:00 ` [PULL 54/76] target/arm: Set arm_v7m_tcg_ops cpu_exec_halt to arm_cpu_exec_halt() Philippe Mathieu-Daudé
2024-06-18 16:00 ` [PULL 55/76] target: Set TCGCPUOps::cpu_exec_halt to target's has_work implementation Philippe Mathieu-Daudé
2024-06-18 16:00 ` [PULL 56/76] accel/tcg: Make TCGCPUOps::cpu_exec_halt mandatory Philippe Mathieu-Daudé
2024-06-18 16:00 ` [PULL 57/76] memory: Constify IOMMUTLBEvent in memory_region_notify_iommu_one() Philippe Mathieu-Daudé
2024-06-18 16:00 ` [PULL 58/76] memory: Constify IOMMUTLBEvent in memory_region_notify_iommu() Philippe Mathieu-Daudé
2024-06-18 16:00 ` [PULL 59/76] hw/i386/iommu: Constify IOMMUTLBEvent in vtd_page_walk_hook prototype Philippe Mathieu-Daudé
2024-06-18 16:00 ` [PULL 60/76] hw/usb: Remove unused 'host.h' header Philippe Mathieu-Daudé
2024-06-18 16:00 ` [PULL 61/76] hw/usb/dev-mtp: Correctly report free space Philippe Mathieu-Daudé
2024-06-18 16:00 ` [PULL 62/76] hw/intc: Remove loongarch_ipi.c Philippe Mathieu-Daudé
2024-06-18 16:00 ` [PULL 63/76] hw/intc/loongson_ipi: Provide per core MMIO address spaces Philippe Mathieu-Daudé
2024-06-18 16:00 ` [PULL 64/76] hw/intc/loongson_ipi: Replace ipi_getcpu with cpu_by_arch_id Philippe Mathieu-Daudé
2024-06-18 16:00 ` [PULL 65/76] hw/mips/loongson3_virt: Wire up loongson_ipi device Philippe Mathieu-Daudé
2024-06-20 19:50   ` Philippe Mathieu-Daudé
2024-06-20 20:49     ` Jiaxun Yang
2024-06-18 16:00 ` [PULL 66/76] hw/s390x: Introduce s390_skeys_get|set() helpers Philippe Mathieu-Daudé
2024-06-18 16:00 ` [PULL 67/76] target/s390x: Use s390_skeys_get|set() helper Philippe Mathieu-Daudé
2024-06-18 16:00 ` [PULL 68/76] util/readline: Fix lints for readline_handle_byte Philippe Mathieu-Daudé
2024-06-18 16:00 ` [PULL 69/76] util/readline: Add C-n, C-p shortcuts Philippe Mathieu-Daudé
2024-06-18 16:00 ` [PULL 70/76] util/readline: Add C-u shortcut Philippe Mathieu-Daudé
2024-06-18 16:00 ` [PULL 71/76] MAINTAINERS: drop virtio-gpu maintainership Philippe Mathieu-Daudé
2024-06-18 16:00 ` [PULL 72/76] MAINTAINERS: drop spice+ui maintainership Philippe Mathieu-Daudé
2024-06-18 16:00 ` [PULL 73/76] ui/cocoa: Use qemu_add_mouse_change_notifier Philippe Mathieu-Daudé
2024-06-18 16:00 ` [PULL 74/76] stdvga: fix screen blanking Philippe Mathieu-Daudé
2024-06-18 16:00 ` [PULL 75/76] ui+display: rename is_placeholder() -> surface_is_placeholder() Philippe Mathieu-Daudé
2024-06-18 16:00 ` [PULL 76/76] ui+display: rename is_buffer_shared() -> surface_is_allocated() Philippe Mathieu-Daudé
2024-06-18 20:06 ` [PULL 00/76] Misc patches for 2024-06-18 Richard Henderson
2024-06-18 20:15   ` Philippe Mathieu-Daudé
2024-06-18 20:32     ` Richard Henderson
2024-06-19 10:44       ` Philippe Mathieu-Daudé
2024-06-19 13:27         ` Peter Maydell
2024-07-04 15:54       ` Peter Maydell

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=20240618160039.36108-53-philmd@linaro.org \
    --to=philmd@linaro.org \
    --cc=berrange@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).