WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] [PATCH 01 of 22] xenpaging: remove unused spinlock in pager

To: xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-devel] [PATCH 01 of 22] xenpaging: remove unused spinlock in pager
From: Olaf Hering <olaf@xxxxxxxxx>
Date: Fri, 10 Jun 2011 11:12:50 +0200
Delivery-date: Fri, 10 Jun 2011 02:15:22 -0700
Dkim-signature: v=1; a=rsa-sha1; c=relaxed/relaxed; t=1307697176; l=5162; s=domk; d=aepfle.de; h=To:From:Date:References:In-Reply-To:Subject: Content-Transfer-Encoding:MIME-Version:Content-Type:X-RZG-CLASS-ID: X-RZG-AUTH; bh=Iqzh8lZ6BcHH9+A6XEMqWFByG/E=; b=x8Sg1v4qeAha+t2ZaHKZamgAe9LhNGUGnO8gIj7WE6+idfKHgMka63nKASwZMxL1JCK ailrf0HRzNzT9LdTz1jSGtDmoYyIRIJtKdAMCIrkLyNVTupcuiT/M/DHWmKdafi2JKeKQ fyCVgahGKVf9HkyDGbZmP22SNSNEdt03taI=
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <patchbomb.1307697169@xxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <patchbomb.1307697169@xxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mercurial-patchbomb/1.7.5
# HG changeset patch
# User Olaf Hering <olaf@xxxxxxxxx>
# Date 1307695622 -7200
# Node ID 5553bd24a3d950d7d1388a95fd9a69b215cd798a
# Parent  2ef6bbee50371e1135236035ed1a9a7b8748e09f
xenpaging: remove unused spinlock in pager

The spinlock code in the pager is a no-op because xenpaging is a single
threaded application. There is no locking when put_response() places a
response into the ringbuffer.
The only locking is inside the hypervisor, where mem_event_put_request() and
mem_event_get_response() lock the ringbuffer to protect multiple vcpus from
each other.

Signed-off-by: Olaf Hering <olaf@xxxxxxxxx>

diff -r 2ef6bbee5037 -r 5553bd24a3d9 tools/xenpaging/mem_event.h
--- a/tools/xenpaging/mem_event.h       Fri Jun 10 08:32:47 2011 +0100
+++ b/tools/xenpaging/mem_event.h       Fri Jun 10 10:47:02 2011 +0200
@@ -25,7 +25,6 @@
 #define __XEN_MEM_EVENT_H__
 
 
-#include "spinlock.h"
 #include "xc.h"
 #include <xc_private.h>
 
@@ -33,9 +32,6 @@
 #include <xen/mem_event.h>
 
 
-#define mem_event_ring_lock_init(_m)  spin_lock_init(&(_m)->ring_lock)
-#define mem_event_ring_lock(_m)       spin_lock(&(_m)->ring_lock)
-#define mem_event_ring_unlock(_m)     spin_unlock(&(_m)->ring_lock)
 
 
 typedef struct mem_event {
@@ -45,7 +41,6 @@ typedef struct mem_event {
     mem_event_back_ring_t back_ring;
     mem_event_shared_page_t *shared_page;
     void *ring_page;
-    spinlock_t ring_lock;
 } mem_event_t;
 
 
diff -r 2ef6bbee5037 -r 5553bd24a3d9 tools/xenpaging/spinlock.h
--- a/tools/xenpaging/spinlock.h        Fri Jun 10 08:32:47 2011 +0100
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-/******************************************************************************
- * tools/xenpaging/spinlock.h
- *
- * Spinlock implementation.
- *
- * Copyright (c) 2009 Citrix Systems, Inc. (Patrick Colp)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-
-#ifndef __SPINLOCK_H__
-#define __SPINLOCK_H__
-
-
-#include "bitops.h"
-
-
-#define SPIN_LOCK_UNLOCKED 0
-
-
-typedef int spinlock_t;
-
-
-static inline void spin_lock(spinlock_t *lock)
-{
-    while ( test_and_set_bit(1, lock) );
-}
-
-static inline void spin_lock_init(spinlock_t *lock)
-{
-    *lock = SPIN_LOCK_UNLOCKED;
-}
-
-static inline void spin_unlock(spinlock_t *lock)
-{
-    *lock = SPIN_LOCK_UNLOCKED;
-}
-
-static inline int spin_trylock(spinlock_t *lock)
-{
-    return !test_and_set_bit(1, lock);
-}
-
-
-#endif // __SPINLOCK_H__
-
-
-/*
- * Local variables:
- * mode: C
- * c-set-style: "BSD"
- * c-basic-offset: 4
- * tab-width: 4
- * indent-tabs-mode: nil
- * End:
- */
diff -r 2ef6bbee5037 -r 5553bd24a3d9 tools/xenpaging/xenpaging.c
--- a/tools/xenpaging/xenpaging.c       Fri Jun 10 08:32:47 2011 +0100
+++ b/tools/xenpaging/xenpaging.c       Fri Jun 10 10:47:02 2011 +0200
@@ -32,7 +32,6 @@
 #include <xen/mem_event.h>
 
 #include "bitops.h"
-#include "spinlock.h"
 #include "file_ops.h"
 #include "xc.h"
 
@@ -127,9 +126,6 @@ static xenpaging_t *xenpaging_init(domid
     BACK_RING_INIT(&paging->mem_event.back_ring,
                    (mem_event_sring_t *)paging->mem_event.ring_page,
                    PAGE_SIZE);
-
-    /* Initialise lock */
-    mem_event_ring_lock_init(&paging->mem_event);
     
     /* Initialise Xen */
     rc = xc_mem_event_enable(xch, paging->mem_event.domain_id,
@@ -302,8 +298,6 @@ static int get_request(mem_event_t *mem_
     mem_event_back_ring_t *back_ring;
     RING_IDX req_cons;
 
-    mem_event_ring_lock(mem_event);
-
     back_ring = &mem_event->back_ring;
     req_cons = back_ring->req_cons;
 
@@ -315,8 +309,6 @@ static int get_request(mem_event_t *mem_
     back_ring->req_cons = req_cons;
     back_ring->sring->req_event = req_cons + 1;
 
-    mem_event_ring_unlock(mem_event);
-
     return 0;
 }
 
@@ -325,8 +317,6 @@ static int put_response(mem_event_t *mem
     mem_event_back_ring_t *back_ring;
     RING_IDX rsp_prod;
 
-    mem_event_ring_lock(mem_event);
-
     back_ring = &mem_event->back_ring;
     rsp_prod = back_ring->rsp_prod_pvt;
 
@@ -338,8 +328,6 @@ static int put_response(mem_event_t *mem
     back_ring->rsp_prod_pvt = rsp_prod;
     RING_PUSH_RESPONSES(back_ring);
 
-    mem_event_ring_unlock(mem_event);
-
     return 0;
 }
 
diff -r 2ef6bbee5037 -r 5553bd24a3d9 tools/xenpaging/xenpaging.h
--- a/tools/xenpaging/xenpaging.h       Fri Jun 10 08:32:47 2011 +0100
+++ b/tools/xenpaging/xenpaging.h       Fri Jun 10 10:47:02 2011 +0200
@@ -25,7 +25,6 @@
 #define __XEN_PAGING2_H__
 
 
-#include "spinlock.h"
 #include "xc.h"
 #include <xc_private.h>
 

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel