put_user(uregs->es, esp-6) |
put_user(uregs->ds, esp-7) )
{
- gdprintk(XENLOG_ERR, "Error while creating compat "
- "failsafe callback frame.\n");
+ gprintk(XENLOG_ERR,
+ "error while creating compat failsafe callback frame\n");
domain_crash(n->domain);
}
put_user(regs->r11, rsp-10) |
put_user(regs->rcx, rsp-11) )
{
- gdprintk(XENLOG_ERR, "Error while creating failsafe "
- "callback frame.\n");
+ gprintk(XENLOG_ERR,
+ "error while creating failsafe callback frame\n");
domain_crash(n->domain);
}
if ( unlikely(p->state != STATE_IOREQ_NONE) )
{
- gdprintk(XENLOG_ERR,
- "Device model set bad IO state %d.\n",
- p->state);
+ gprintk(XENLOG_ERR, "device model set bad IO state %d\n",
+ p->state);
goto crash;
}
if ( unlikely(p->vp_eport != port) )
{
- gdprintk(XENLOG_ERR,
- "Device model set bad event channel %d.\n",
- p->vp_eport);
+ gprintk(XENLOG_ERR, "device model set bad event channel %d\n",
+ p->vp_eport);
goto crash;
}
struct domain *d = v->domain;
u8 reason = d->arch.hvm_domain.params[HVM_PARAM_TRIPLE_FAULT_REASON];
- gdprintk(XENLOG_INFO, "Triple fault on VCPU%d - "
- "invoking HVM shutdown action %"PRIu8".\n",
- v->vcpu_id, reason);
+ gprintk(XENLOG_INFO,
+ "Triple fault - invoking HVM shutdown action %d\n",
+ reason);
domain_shutdown(d, reason);
}
/* Everything else is an error. */
mfn = get_gfn_query_unlocked(d, gfn, &p2mt);
- gdprintk(XENLOG_ERR, "EPT violation %#lx (%c%c%c/%c%c%c), "
- "gpa %#"PRIpaddr", mfn %#lx, type %i.\n",
- qualification,
- (qualification & EPT_READ_VIOLATION) ? 'r' : '-',
- (qualification & EPT_WRITE_VIOLATION) ? 'w' : '-',
- (qualification & EPT_EXEC_VIOLATION) ? 'x' : '-',
- (qualification & EPT_EFFECTIVE_READ) ? 'r' : '-',
- (qualification & EPT_EFFECTIVE_WRITE) ? 'w' : '-',
- (qualification & EPT_EFFECTIVE_EXEC) ? 'x' : '-',
- gpa, mfn_x(mfn), p2mt);
+ gprintk(XENLOG_ERR,
+ "EPT violation %#lx (%c%c%c/%c%c%c) gpa %#"PRIpaddr" mfn %#lx type %i\n",
+ qualification,
+ (qualification & EPT_READ_VIOLATION) ? 'r' : '-',
+ (qualification & EPT_WRITE_VIOLATION) ? 'w' : '-',
+ (qualification & EPT_EXEC_VIOLATION) ? 'x' : '-',
+ (qualification & EPT_EFFECTIVE_READ) ? 'r' : '-',
+ (qualification & EPT_EFFECTIVE_WRITE) ? 'w' : '-',
+ (qualification & EPT_EFFECTIVE_EXEC) ? 'x' : '-',
+ gpa, mfn_x(mfn), p2mt);
ept_walk_table(d, gfn);
if ( qualification & EPT_GLA_VALID )
- gdprintk(XENLOG_ERR, " --- GLA %#lx\n", gla);
+ gprintk(XENLOG_ERR, " --- GLA %#lx\n", gla);
domain_crash(d);
}
put_page(page);
if ( !paging_mode_refcounts(domain) && !domain->is_dying )
- gdprintk(XENLOG_INFO,
- "Error pfn %lx: rd=%p, od=%p, caf=%08lx, taf=%"
- PRtype_info "\n",
- page_to_mfn(page), domain, owner,
- page->count_info, page->u.inuse.type_info);
+ gprintk(XENLOG_INFO,
+ "Error pfn %lx: rd=%p, od=%p, caf=%08lx, taf=%" PRtype_info "\n",
+ page_to_mfn(page), domain, owner,
+ page->count_info, page->u.inuse.type_info);
return 0;
}
if ( !p2m_is_grant(type) || mfn_x(old_mfn) != frame )
{
put_gfn(d, gfn);
- gdprintk(XENLOG_WARNING,
- "replace_grant_p2m_mapping: old mapping invalid (type %d, mfn %lx, frame %lx)\n",
- type, mfn_x(old_mfn), frame);
+ MEM_LOG("replace_grant_p2m_mapping: old mapping invalid (type %d, mfn %lx, frame %lx)",
+ type, mfn_x(old_mfn), frame);
return GNTST_general_error;
}
guest_physmap_remove_page(d, gfn, frame, PAGE_ORDER_4K);
int i;
- gdprintk(XENLOG_ERR, "Walking EPT tables for domain %d gfn %lx\n",
- d->domain_id, gfn);
+ gprintk(XENLOG_ERR, "Walking EPT tables for GFN %lx:\n", gfn);
/* This pfn is higher than the highest the p2m map currently holds */
if ( gfn > p2m->max_mapped_pfn )
{
- gdprintk(XENLOG_ERR, " gfn exceeds max_mapped_pfn %lx\n",
- p2m->max_mapped_pfn);
+ gprintk(XENLOG_ERR, " gfn exceeds max_mapped_pfn %lx\n",
+ p2m->max_mapped_pfn);
goto out;
}
index = gfn_remainder >> (i*EPT_TABLE_ORDER);
ept_entry = table + index;
- gdprintk(XENLOG_ERR, " epte %"PRIx64"\n", ept_entry->epte);
+ gprintk(XENLOG_ERR, " epte %"PRIx64"\n", ept_entry->epte);
if ( (i == 0) || !is_epte_present(ept_entry) ||
is_epte_superpage(ept_entry) )
tb->flags |= TBF_INTERRUPT;
if ( unlikely(null_trap_bounce(v, tb)) )
- gdprintk(XENLOG_WARNING, "Unhandled %s fault/trap [#%d] "
- "on VCPU %d [ec=%04x]\n",
- trapstr(trapnr), trapnr, v->vcpu_id, regs->error_code);
+ gprintk(XENLOG_WARNING,
+ "Unhandled %s fault/trap [#%d, ec=%04x]\n",
+ trapstr(trapnr), trapnr, regs->error_code);
}
static void instruction_done(
return regs->_eax;
exit_and_crash:
- gdprintk(XENLOG_ERR, "Fatal error\n");
+ gprintk(XENLOG_ERR, "Fatal IRET error\n");
domain_crash(v->domain);
return 0;
}
if ( unlikely(copy_from_user(&iret_saved, (void *)regs->rsp,
sizeof(iret_saved))) )
{
- gdprintk(XENLOG_ERR, "Fault while reading IRET context from "
- "guest stack\n");
+ gprintk(XENLOG_ERR,
+ "Fault while reading IRET context from guest stack\n");
goto exit_and_crash;
}
{
if ( unlikely(pagetable_is_null(v->arch.guest_table_user)) )
{
- gdprintk(XENLOG_ERR, "Guest switching to user mode with no "
- "user page tables\n");
+ gprintk(XENLOG_ERR,
+ "Guest switching to user mode with no user page tables\n");
goto exit_and_crash;
}
toggle_guest_mode(v);
return iret_saved.rax;
exit_and_crash:
- gdprintk(XENLOG_ERR, "Fatal error\n");
domain_crash(v->domain);
return 0;
}
spin_unlock_irqrestore(&old_q->lock, *flags);
}
- gdprintk(XENLOG_WARNING,
- "domain %d, port %d lost event (too many queue changes)\n",
- d->domain_id, evtchn->port);
+ gprintk(XENLOG_WARNING,
+ "dom%d port %d lost event (too many queue changes)\n",
+ d->domain_id, evtchn->port);
return NULL;
}
if ( unlikely((d->tot_pages + (1 << order)) > d->max_pages) )
{
if ( !opt_tmem || order != 0 || d->tot_pages != d->max_pages )
- gdprintk(XENLOG_INFO, "Over-allocation for domain %u: "
- "%u > %u\n", d->domain_id,
- d->tot_pages + (1 << order), d->max_pages);
+ gprintk(XENLOG_INFO, "Over-allocation for domain %u: "
+ "%u > %u\n", d->domain_id,
+ d->tot_pages + (1 << order), d->max_pages);
goto fail;
}
* timeout in this case can burn a lot of CPU. We therefore go for a
* reasonable middleground of triggering a timer event in 100ms.
*/
- gdprintk(XENLOG_INFO,
- "Warning: huge timeout set by vcpu %d: %"PRIx64"\n",
- v->vcpu_id, (uint64_t)timeout);
+ gprintk(XENLOG_INFO, "Warning: huge timeout set: %"PRIx64"\n",
+ (uint64_t)timeout);
set_timer(&v->singleshot_timer, NOW() + MILLISECS(100));
}
else
extern int __printk_ratelimit(int ratelimit_ms, int ratelimit_burst);
extern int printk_ratelimit(void);
+#define gprintk(lvl, fmt, args...) \
+ printk(XENLOG_GUEST lvl "%pv " fmt, current, ## args)
+
/* vsprintf.c */
#define sprintf __xen_has_no_sprintf__
#define vsprintf __xen_has_no_vsprintf__