All of lore.kernel.org
 help / color / mirror / Atom feed
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org
Cc: samuel.thibault@ens-lyon.org, wl@xen.org,
	Juergen Gross <jgross@suse.com>
Subject: [PATCH 3/3] Mini-OS: cleanup hypervisor.c
Date: Mon, 11 Dec 2023 14:48:27 +0100	[thread overview]
Message-ID: <20231211134827.7130-4-jgross@suse.com> (raw)
In-Reply-To: <20231211134827.7130-1-jgross@suse.com>

Do the following cleanups in hypervisor.c:

- Let hypervisor.c conform to the coding style.
- Drop the bogus "inline" attributes of exported functions.
- Replace a always zero cpu variable with smp_processor_id() as
  elsewhere in the code.
- Replace "if () BUG()" with BUG_ON() in case the condition has no
  side effects.
- Drop the unused cpu parameter from the active_evtchns() macro.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
 hypervisor.c | 62 ++++++++++++++++++++++++++--------------------------
 1 file changed, 31 insertions(+), 31 deletions(-)

diff --git a/hypervisor.c b/hypervisor.c
index 6facce3e..ba535556 100644
--- a/hypervisor.c
+++ b/hypervisor.c
@@ -1,27 +1,27 @@
 /******************************************************************************
  * hypervisor.c
- * 
+ *
  * Communication to/from hypervisor.
- * 
+ *
  * Copyright (c) 2002-2003, K A Fraser
  * Copyright (c) 2005, Grzegorz Milos, gm281@cam.ac.uk,Intel Research Cambridge
- * 
+ *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
  * of this software and associated documentation files (the "Software"), to
  * deal in the Software without restriction, including without limitation the
  * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
  * sell copies of the Software, and to permit persons to whom the Software is
  * furnished to do so, subject to the following conditions:
- * 
+ *
  * The above copyright notice and this permission notice shall be included in
  * all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
  * DEALINGS IN THE SOFTWARE.
  */
 
@@ -33,9 +33,8 @@
 
 EXPORT_SYMBOL(hypercall_page);
 
-#define active_evtchns(cpu,sh,idx)              \
-    ((sh)->evtchn_pending[idx] &                \
-     ~(sh)->evtchn_mask[idx])
+#define active_evtchns(sh, idx)                           \
+    ((sh)->evtchn_pending[idx] & ~(sh)->evtchn_mask[idx])
 
 #ifndef CONFIG_PARAVIRT
 extern shared_info_t shared_info;
@@ -48,10 +47,10 @@ int hvm_get_parameter(int idx, uint64_t *value)
     xhv.domid = DOMID_SELF;
     xhv.index = idx;
     ret = HYPERVISOR_hvm_op(HVMOP_get_param, &xhv);
-    if ( ret < 0 )
-        BUG();
+    BUG_ON(ret < 0);
 
     *value = xhv.value;
+
     return ret;
 }
 
@@ -62,6 +61,7 @@ int hvm_set_parameter(int idx, uint64_t value)
     xhv.domid = DOMID_SELF;
     xhv.index = idx;
     xhv.value = value;
+
     return HYPERVISOR_hvm_op(HVMOP_set_param, &xhv);
 }
 
@@ -87,18 +87,15 @@ void unmap_shared_info(void)
     xrtp.gpfn = virt_to_pfn(&shared_info);
     if ( HYPERVISOR_memory_op(XENMEM_remove_from_physmap, &xrtp) != 0 )
         BUG();
-
-    return;
 }
 #endif
 
 void do_hypervisor_callback(struct pt_regs *regs)
 {
-    unsigned long  l1, l2, l1i, l2i;
-    unsigned int   port;
-    int            cpu = 0;
+    unsigned long l1, l2, l1i, l2i;
+    unsigned int port;
     shared_info_t *s = HYPERVISOR_shared_info;
-    vcpu_info_t   *vcpu_info = &s->vcpu_info[cpu];
+    vcpu_info_t *vcpu_info = &s->vcpu_info[smp_processor_id()];
 
     BUG_ON(!irqs_disabled());
 
@@ -113,13 +110,13 @@ void do_hypervisor_callback(struct pt_regs *regs)
     {
         l1i = __ffs(l1);
         l1 &= ~(1UL << l1i);
-        
-        while ( (l2 = active_evtchns(cpu, s, l1i)) != 0 )
+
+        while ( (l2 = active_evtchns(s, l1i)) != 0 )
         {
             l2i = __ffs(l2);
             l2 &= ~(1UL << l2i);
 
-            port = (l1i * (sizeof(unsigned long) * 8)) + l2i;
+            port = l1i * sizeof(unsigned long) * 8 + l2i;
             do_event(port, regs);
         }
     }
@@ -134,7 +131,8 @@ void force_evtchn_callback(void)
 
     vcpu = &HYPERVISOR_shared_info->vcpu_info[smp_processor_id()];
 
-    while (vcpu->evtchn_upcall_pending) {
+    while ( vcpu->evtchn_upcall_pending )
+    {
         do_hypervisor_callback(NULL);
         barrier();
     };
@@ -142,14 +140,15 @@ void force_evtchn_callback(void)
     local_irq_restore(flags);
 }
 
-inline void mask_evtchn(uint32_t port)
+void mask_evtchn(uint32_t port)
 {
     shared_info_t *s = HYPERVISOR_shared_info;
+
     synch_set_bit(port, &s->evtchn_mask[0]);
 }
 EXPORT_SYMBOL(mask_evtchn);
 
-inline void unmask_evtchn(uint32_t port)
+void unmask_evtchn(uint32_t port)
 {
     shared_info_t *s = HYPERVISOR_shared_info;
     vcpu_info_t *vcpu_info = &s->vcpu_info[smp_processor_id()];
@@ -160,9 +159,9 @@ inline void unmask_evtchn(uint32_t port)
      * The following is basically the equivalent of 'hw_resend_irq'. Just like
      * a real IO-APIC we 'lose the interrupt edge' if the channel is masked.
      */
-    if (  synch_test_bit        (port,    &s->evtchn_pending[0]) && 
+    if ( synch_test_bit(port, &s->evtchn_pending[0]) &&
          !synch_test_and_set_bit(port / (sizeof(unsigned long) * 8),
-              &vcpu_info->evtchn_pending_sel) )
+                                 &vcpu_info->evtchn_pending_sel) )
     {
         vcpu_info->evtchn_upcall_pending = 1;
         if ( !irqs_disabled() )
@@ -171,9 +170,10 @@ inline void unmask_evtchn(uint32_t port)
 }
 EXPORT_SYMBOL(unmask_evtchn);
 
-inline void clear_evtchn(uint32_t port)
+void clear_evtchn(uint32_t port)
 {
     shared_info_t *s = HYPERVISOR_shared_info;
+
     synch_clear_bit(port, &s->evtchn_pending[0]);
 }
 EXPORT_SYMBOL(clear_evtchn);
-- 
2.35.3



  parent reply	other threads:[~2023-12-11 13:49 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-11 13:48 [PATCH 0/3] Mini-OS: fix and cleanup of event handling Juergen Gross
2023-12-11 13:48 ` [PATCH 1/3] Mini-OS: call event handlers always with interrupts off Juergen Gross
2023-12-12 20:31   ` Samuel Thibault
2023-12-11 13:48 ` [PATCH 2/3] Mini-OS: drop in_callback variable Juergen Gross
2023-12-12 20:32   ` Samuel Thibault
2023-12-11 13:48 ` Juergen Gross [this message]
2023-12-12 20:33   ` [PATCH 3/3] Mini-OS: cleanup hypervisor.c Samuel Thibault

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20231211134827.7130-4-jgross@suse.com \
    --to=jgross@suse.com \
    --cc=minios-devel@lists.xenproject.org \
    --cc=samuel.thibault@ens-lyon.org \
    --cc=wl@xen.org \
    --cc=xen-devel@lists.xenproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.