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 )
openSUSE Build Service is sponsored by