Skip to content

Commit 6d877e6

Browse files
committed
xen/hvm: If we fail to fetch an HVM parameter print out which flag it is.
Makes it easier to troubleshoot in the field. Acked-by: Ian Campbell <ian.campbell@citrix.com> [v1: Use macro per Ian's suggestion] Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
1 parent cf47a83 commit 6d877e6

1 file changed

Lines changed: 32 additions & 2 deletions

File tree

include/xen/hvm.h

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,36 @@
55
#include <xen/interface/hvm/params.h>
66
#include <asm/xen/hypercall.h>
77

8+
static const char *param_name(int op)
9+
{
10+
#define PARAM(x) [HVM_PARAM_##x] = #x
11+
static const char *const names[] = {
12+
PARAM(CALLBACK_IRQ),
13+
PARAM(STORE_PFN),
14+
PARAM(STORE_EVTCHN),
15+
PARAM(PAE_ENABLED),
16+
PARAM(IOREQ_PFN),
17+
PARAM(BUFIOREQ_PFN),
18+
PARAM(TIMER_MODE),
19+
PARAM(HPET_ENABLED),
20+
PARAM(IDENT_PT),
21+
PARAM(DM_DOMAIN),
22+
PARAM(ACPI_S_STATE),
23+
PARAM(VM86_TSS),
24+
PARAM(VPT_ALIGN),
25+
PARAM(CONSOLE_PFN),
26+
PARAM(CONSOLE_EVTCHN),
27+
};
28+
#undef PARAM
29+
30+
if (op >= ARRAY_SIZE(names))
31+
return "unknown";
32+
33+
if (!names[op])
34+
return "reserved";
35+
36+
return names[op];
37+
}
838
static inline int hvm_get_parameter(int idx, uint64_t *value)
939
{
1040
struct xen_hvm_param xhv;
@@ -14,8 +44,8 @@ static inline int hvm_get_parameter(int idx, uint64_t *value)
1444
xhv.index = idx;
1545
r = HYPERVISOR_hvm_op(HVMOP_get_param, &xhv);
1646
if (r < 0) {
17-
printk(KERN_ERR "Cannot get hvm parameter %d: %d!\n",
18-
idx, r);
47+
printk(KERN_ERR "Cannot get hvm parameter %s (%d): %d!\n",
48+
param_name(idx), idx, r);
1949
return r;
2050
}
2151
*value = xhv.value;

0 commit comments

Comments
 (0)