File xen.trc-get_ioreq_server.patch of Package xen
From: Olaf Hering <olaf@aepfle.de>
Date: Thu, 15 Jun 2023 08:30:31 +0000
Subject: trc get_ioreq_server
Signed-off-by: Olaf Hering <olaf@aepfle.de>
---
xen/common/ioreq.c | 13 +++++++--
1 file changed, 10 insertions(+), 3 deletions(-)
--- a/xen/common/ioreq.c
+++ b/xen/common/ioreq.c
@@ -78,28 +78,35 @@ static void set_ioreq_server(struct domain *d, unsigned int id,
ASSERT(id < MAX_NR_IOREQ_SERVERS);
ASSERT(!s || !d->ioreq_server.server[id]);
d->ioreq_server.server[id] = s;
}
#define GET_IOREQ_SERVER(d, id) \
(d)->ioreq_server.server[id]
static struct ioreq_server *get_ioreq_server(const struct domain *d,
unsigned int id)
{
- if ( id >= MAX_NR_IOREQ_SERVERS )
- return NULL;
+ struct ioreq_server *s = NULL;
+ trc_get_ioreq_server_t trc = {
+ .target = d->domain_id,
+ .id = id,
+ };
+ if ( id < MAX_NR_IOREQ_SERVERS )
+ s = GET_IOREQ_SERVER(d, id);
- return GET_IOREQ_SERVER(d, id);
+ trc.s = TRC_ePTR(s);
+ TRACE_trc(TRC_IOREQ_get_ioreq_server);
+ return s;
}
/*
* Iterate over all possible ioreq servers.
*
* NOTE: The iteration is backwards such that more recently created
* ioreq servers are favoured in ioreq_server_select().
* 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; ) \