File xen.trc-ioreq_server_get_frame.patch of Package xen
From: Olaf Hering <olaf@aepfle.de>
Date: Thu, 15 Jun 2023 08:43:13 +0000
Subject: trc ioreq_server_get_frame
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
@@ -957,24 +957,28 @@ static int ioreq_server_get_info(struct domain *d, ioservid_t id,
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;
+ trc_ioreq_server_get_frame_t trc = {
+ .d = d->domain_id,
+ .id = id,
+ };
ASSERT(is_hvm_domain(d));
rspin_lock(&d->ioreq_server.lock);
s = get_ioreq_server(d, id);
rc = -ENOENT;
if ( !s )
goto out;
rc = -EPERM;
@@ -984,40 +988,43 @@ int ioreq_server_get_frame(struct domain *d, ioservid_t id,
rc = ioreq_server_alloc_pages(s);
if ( rc )
goto out;
switch ( idx )
{
case XENMEM_resource_ioreq_server_frame_bufioreq:
rc = -ENOENT;
if ( !HANDLE_BUFIOREQ(s) )
goto out;
*mfn = page_to_mfn(s->bufioreq.page);
+ trc.gfn = mfn_x(*mfn);
rc = 0;
break;
case XENMEM_resource_ioreq_server_frame_ioreq(0):
*mfn = page_to_mfn(s->ioreq.page);
+ trc.gfn = mfn_x(*mfn);
rc = 0;
break;
default:
rc = -EINVAL;
break;
}
out:
rspin_unlock(&d->ioreq_server.lock);
+ TRACE_trc(TRC_IOREQ_ioreq_server_get_frame);
return rc;
}
static int ioreq_server_map_io_range(struct domain *d, ioservid_t id,
uint32_t type, uint64_t start,
uint64_t end)
{
struct ioreq_server *s;
struct rangeset *r;
int rc;
if ( start > end )