File xen.trc-ioreq_server_get_info.patch of Package xen
From: Olaf Hering <olaf@aepfle.de>
Date: Thu, 15 Jun 2023 08:43:09 +0000
Subject: trc ioreq_server_get_info
Signed-off-by: Olaf Hering <olaf@aepfle.de>
---
xen/common/ioreq.c | 7 +++++++
1 file changed, 7 insertions(+)
--- a/xen/common/ioreq.c
+++ b/xen/common/ioreq.c
@@ -905,61 +905,68 @@ static int ioreq_server_destroy(struct domain *d, ioservid_t id)
rspin_unlock(&d->ioreq_server.lock);
return rc;
}
static int ioreq_server_get_info(struct domain *d, ioservid_t id,
unsigned long *ioreq_gfn,
unsigned long *bufioreq_gfn,
evtchn_port_t *bufioreq_port)
{
struct ioreq_server *s;
int rc;
+ trc_ioreq_server_get_info_t trc = {
+ .d = d->domain_id,
+ .id = id,
+ };
rspin_lock(&d->ioreq_server.lock);
s = get_ioreq_server(d, id);
rc = -ENOENT;
if ( !s )
goto out;
rc = -EPERM;
if ( s->emulator != current->domain )
goto out;
if ( ioreq_gfn || bufioreq_gfn )
{
rc = arch_ioreq_server_map_pages(s);
if ( rc )
goto out;
}
if ( ioreq_gfn )
+ trc.gfn =
*ioreq_gfn = gfn_x(s->ioreq.gfn);
if ( HANDLE_BUFIOREQ(s) )
{
if ( bufioreq_gfn )
*bufioreq_gfn = gfn_x(s->bufioreq.gfn);
if ( bufioreq_port )
*bufioreq_port = s->bufioreq_evtchn;
}
rc = 0;
out:
rspin_unlock(&d->ioreq_server.lock);
+ trc.s = TRC_ePTR(s);
+ TRACE_trc(TRC_IOREQ_ioreq_server_get_info);
return rc;
}
int ioreq_server_get_frame(struct domain *d, ioservid_t id,
unsigned int idx, mfn_t *mfn)
{
struct ioreq_server *s;
int rc;
ASSERT(is_hvm_domain(d));
rspin_lock(&d->ioreq_server.lock);