diff mbox series

[5/9] hw/ppc/spapr_hcall.c: log H_GET_EM_PARMS as unsupported

Message ID 20220307191553.429236-6-danielhb413@gmail.com
State Superseded
Headers show
Series add LOG_UNSUPP log type + mark hcalls as unsupp | expand

Commit Message

Daniel Henrique Barboza March 7, 2022, 7:15 p.m. UTC
This hcall is part of the Partition Energy Management (PEM) option,
described in PAPR+ V2.89 section 14.14.2. We do not support any form of
energy management in QEMU, so instead of logging this hcall as
unimplemented let's log it as unsupported.

This hcall is popular with AIX 7.2. The terminal gets quite
busy with these debug messages using -d unsupp:

Unsupported SPAPR hcall 0x00000000000002b8 (H_GET_EM_PARMS)

Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
---
 hw/ppc/spapr_hcall.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)
diff mbox series

Patch

diff --git a/hw/ppc/spapr_hcall.c b/hw/ppc/spapr_hcall.c
index 7cfb17689b..b572ef50bb 100644
--- a/hw/ppc/spapr_hcall.c
+++ b/hw/ppc/spapr_hcall.c
@@ -1549,6 +1549,21 @@  static target_ulong h_copy_tofrom_guest(PowerPCCPU *cpu,
     return H_FUNCTION;
 }
 
+static target_ulong h_get_em_parms(PowerPCCPU *cpu,
+                                   SpaprMachineState *spapr,
+                                   target_ulong opcode,
+                                   target_ulong *args)
+{
+    /*
+     * This HCALL returns energy management parameters as part of
+     * the PEM (Partition Energy Management) option. We do not
+     * support it.
+     */
+    qemu_log_mask(LOG_UNSUPP, "Unsupported SPAPR hcall 0x"TARGET_FMT_lx"%s\n",
+                  opcode, " (H_GET_EM_PARMS)");
+    return H_FUNCTION;
+}
+
 /*
  * When this handler returns, the environment is switched to the L2 guest
  * and TCG begins running that. spapr_exit_nested() performs the switch from
@@ -1887,6 +1902,8 @@  static void hypercall_register_types(void)
     spapr_register_hypercall(KVMPPC_H_ENTER_NESTED, h_enter_nested);
     spapr_register_hypercall(KVMPPC_H_TLB_INVALIDATE, h_tlb_invalidate);
     spapr_register_hypercall(KVMPPC_H_COPY_TOFROM_GUEST, h_copy_tofrom_guest);
+
+    spapr_register_hypercall(H_GET_EM_PARMS, h_get_em_parms);
 }
 
 type_init(hypercall_register_types)