File xen.trc-get_ioreq.patch of Package xen
From: Olaf Hering <olaf@aepfle.de>
Date: Thu, 15 Jun 2023 08:31:23 +0000
Subject: trc get_ioreq
Signed-off-by: Olaf Hering <olaf@aepfle.de>
---
xen/common/ioreq.c | 6 ++++++
1 file changed, 6 insertions(+)
--- a/xen/common/ioreq.c
+++ b/xen/common/ioreq.c
@@ -108,24 +108,30 @@ static struct ioreq_server *get_ioreq_server(const struct domain *d,
* This is a semantic that previously existed when ioreq servers
* were held in a linked list.
*/
#define FOR_EACH_IOREQ_SERVER(d, id, s) \
for ( (id) = MAX_NR_IOREQ_SERVERS; (id) != 0; ) \
if ( !(s = GET_IOREQ_SERVER(d, --(id))) ) \
continue; \
else
static ioreq_t *get_ioreq(struct ioreq_server *s, struct vcpu *v)
{
shared_iopage_t *p = s->ioreq.va;
+ trc_get_ioreq_t trc = {
+ .d = v->domain->domain_id,
+ .v = v->vcpu_id,
+ .s = TRC_ePTR(s),
+ };
+ TRACE_trc(TRC_IOREQ_get_ioreq);
ASSERT((v == current) || !vcpu_runnable(v));
ASSERT(p != NULL);
return &p->vcpu_ioreq[v->vcpu_id];
}
/*
* This should only be used when d == current->domain or when they're
* distinct and d is paused. Otherwise the result is stale before
* the caller can inspect it.
*/