Chris Wright
2006-May-24 07:00 UTC
[Xen-devel] [patch 1/3] [PATCH] use DEFINE_SPINLOCK in drivers/xen
Conforming to typical CodingStyle.
Signed-off-by: Chris Wright <chrisw@sous-sol.org>
---
linux-2.6-xen-sparse/drivers/xen/balloon/balloon.c | 2 +-
linux-2.6-xen-sparse/drivers/xen/blkback/blkback.c | 2 +-
linux-2.6-xen-sparse/drivers/xen/blkfront/vbd.c | 2 +-
linux-2.6-xen-sparse/drivers/xen/blktap/blktap.c | 2 +-
linux-2.6-xen-sparse/drivers/xen/console/console.c | 2 +-
linux-2.6-xen-sparse/drivers/xen/core/evtchn.c | 4 +---
linux-2.6-xen-sparse/drivers/xen/core/gnttab.c | 2 +-
linux-2.6-xen-sparse/drivers/xen/netback/netback.c | 4 ++--
8 files changed, 9 insertions(+), 11 deletions(-)
--- xen-unstable.orig/linux-2.6-xen-sparse/drivers/xen/balloon/balloon.c
+++ xen-unstable/linux-2.6-xen-sparse/drivers/xen/balloon/balloon.c
@@ -67,7 +67,7 @@ static DECLARE_MUTEX(balloon_mutex);
* Also protects non-atomic updates of current_pages and driver_pages, and
* balloon lists.
*/
-spinlock_t balloon_lock = SPIN_LOCK_UNLOCKED;
+DEFINE_SPINLOCK(balloon_lock);
/* We aim for ''current allocation'' == ''target
allocation''. */
static unsigned long current_pages;
--- xen-unstable.orig/linux-2.6-xen-sparse/drivers/xen/blkback/blkback.c
+++ xen-unstable/linux-2.6-xen-sparse/drivers/xen/blkback/blkback.c
@@ -82,7 +82,7 @@ typedef struct {
static pending_req_t *pending_reqs;
static struct list_head pending_free;
-static spinlock_t pending_free_lock = SPIN_LOCK_UNLOCKED;
+static DEFINE_SPINLOCK(pending_free_lock);
static DECLARE_WAIT_QUEUE_HEAD(pending_free_wq);
#define BLKBACK_INVALID_HANDLE (~0)
--- xen-unstable.orig/linux-2.6-xen-sparse/drivers/xen/blkfront/vbd.c
+++ xen-unstable/linux-2.6-xen-sparse/drivers/xen/blkfront/vbd.c
@@ -93,7 +93,7 @@ static struct block_device_operations xl
.ioctl = blkif_ioctl,
};
-spinlock_t blkif_io_lock = SPIN_LOCK_UNLOCKED;
+DEFINE_SPINLOCK(blkif_io_lock);
static struct xlbd_major_info *
xlbd_alloc_major_info(int major, int minor, int index)
--- xen-unstable.orig/linux-2.6-xen-sparse/drivers/xen/blktap/blktap.c
+++ xen-unstable/linux-2.6-xen-sparse/drivers/xen/blktap/blktap.c
@@ -138,7 +138,7 @@ typedef struct {
*/
static pending_req_t pending_reqs[MAX_PENDING_REQS];
static unsigned char pending_ring[MAX_PENDING_REQS];
-static spinlock_t pend_prod_lock = SPIN_LOCK_UNLOCKED;
+static DEFINE_SPINLOCK(pend_prod_lock);
/* NB. We use a different index type to differentiate from shared blk rings. */
typedef unsigned int PEND_RING_IDX;
#define MASK_PEND_IDX(_i) ((_i)&(MAX_PENDING_REQS-1))
--- xen-unstable.orig/linux-2.6-xen-sparse/drivers/xen/console/console.c
+++ xen-unstable/linux-2.6-xen-sparse/drivers/xen/console/console.c
@@ -124,7 +124,7 @@ static int __init xencons_bufsz_setup(ch
__setup("xencons_bufsz=", xencons_bufsz_setup);
/* This lock protects accesses to the common transmit buffer. */
-static spinlock_t xencons_lock = SPIN_LOCK_UNLOCKED;
+static DEFINE_SPINLOCK(xencons_lock);
/* Common transmit-kick routine. */
static void __xencons_tx_flush(void);
--- xen-unstable.orig/linux-2.6-xen-sparse/drivers/xen/core/gnttab.c
+++ xen-unstable/linux-2.6-xen-sparse/drivers/xen/core/gnttab.c
@@ -81,7 +81,7 @@ EXPORT_SYMBOL_GPL(gnttab_grant_foreign_t
static grant_ref_t gnttab_list[NR_GRANT_ENTRIES];
static int gnttab_free_count;
static grant_ref_t gnttab_free_head;
-static spinlock_t gnttab_list_lock = SPIN_LOCK_UNLOCKED;
+static DEFINE_SPINLOCK(gnttab_list_lock);
static grant_entry_t *shared = NULL;
--- xen-unstable.orig/linux-2.6-xen-sparse/drivers/xen/netback/netback.c
+++ xen-unstable/linux-2.6-xen-sparse/drivers/xen/netback/netback.c
@@ -99,7 +99,7 @@ static spinlock_t net_schedule_list_lock
#define MAX_MFN_ALLOC 64
static unsigned long mfn_list[MAX_MFN_ALLOC];
static unsigned int alloc_index = 0;
-static spinlock_t mfn_lock = SPIN_LOCK_UNLOCKED;
+static DEFINE_SPINLOCK(mfn_lock);
static unsigned long alloc_mfn(void)
{
@@ -691,7 +691,7 @@ static void net_tx_action(unsigned long
static void netif_idx_release(u16 pending_idx)
{
- static spinlock_t _lock = SPIN_LOCK_UNLOCKED;
+ static DEFINE_SPINLOCK(_lock);
unsigned long flags;
spin_lock_irqsave(&_lock, flags);
--- xen-unstable.orig/linux-2.6-xen-sparse/drivers/xen/core/evtchn.c
+++ xen-unstable/linux-2.6-xen-sparse/drivers/xen/core/evtchn.c
@@ -51,7 +51,7 @@
* This lock protects updates to the following mapping and reference-count
* arrays. The lock does not need to be acquired to read the mapping tables.
*/
-static spinlock_t irq_mapping_update_lock;
+static DEFINE_SPINLOCK(irq_mapping_update_lock);
/* IRQ <-> event-channel mappings. */
static int evtchn_to_irq[NR_EVENT_CHANNELS];
@@ -815,8 +815,6 @@ void __init xen_init_IRQ(void)
int i;
int cpu;
- spin_lock_init(&irq_mapping_update_lock);
-
init_evtchn_cpu_bindings();
/* No VIRQ or IPI bindings. */
--
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
Chris Wright
2006-May-24 07:00 UTC
[Xen-devel] [patch 2/3] [PATCH] xencons: minor cleanups
Fix kcons_write and kcons_write_dom0 CodingStyle.
Use roundup_pow_of_two().
Signed-off-by: Chris Wright <chrisw@sous-sol.org>
---
linux-2.6-xen-sparse/drivers/xen/console/console.c | 22 +++++++++++----------
1 file changed, 12 insertions(+), 10 deletions(-)
--- xen-unstable.orig/linux-2.6-xen-sparse/drivers/xen/console/console.c
+++ xen-unstable/linux-2.6-xen-sparse/drivers/xen/console/console.c
@@ -117,8 +117,11 @@ static int __init xencons_bufsz_setup(ch
{
unsigned int goal;
goal = simple_strtoul(str, NULL, 0);
- while (wbuf_size < goal)
- wbuf_size <<= 1;
+ if (goal) {
+ goal = roundup_pow_of_two(goal);
+ if (wbuf_size < goal)
+ wbuf_size = goal;
+ }
return 1;
}
__setup("xencons_bufsz=", xencons_bufsz_setup);
@@ -133,8 +136,7 @@ static struct tty_driver *xencons_driver
/******************** Kernel console driver ********************************/
-static void kcons_write(
- struct console *c, const char *s, unsigned int count)
+static void kcons_write(struct console *c, const char *s, unsigned int count)
{
int i = 0;
unsigned long flags;
@@ -155,14 +157,14 @@ static void kcons_write(
spin_unlock_irqrestore(&xencons_lock, flags);
}
-static void kcons_write_dom0(
- struct console *c, const char *s, unsigned int count)
+static void kcons_write_dom0(struct console *c, const char *s, unsigned int
count)
{
- int rc;
- while ((count > 0) &&
- ((rc = HYPERVISOR_console_io(
- CONSOLEIO_write, count, (char *)s)) > 0)) {
+ while (count > 0) {
+ int rc;
+ rc = HYPERVISOR_console_io( CONSOLEIO_write, count, (char *)s);
+ if (rc <= 0)
+ break;
count -= rc;
s += rc;
}
--
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
Chris Wright
2006-May-24 07:00 UTC
[Xen-devel] [patch 3/3] [PATCH] evtchn: fix opencoded for_each_cpu
Use for_each_cpu instead, or statically initialize data when possible.
Signed-off-by: Chris Wright <chrisw@sous-sol.org>
---
linux-2.6-xen-sparse/drivers/xen/core/evtchn.c | 27 ++++++++-----------------
1 file changed, 9 insertions(+), 18 deletions(-)
--- xen-unstable.orig/linux-2.6-xen-sparse/drivers/xen/core/evtchn.c
+++ xen-unstable/linux-2.6-xen-sparse/drivers/xen/core/evtchn.c
@@ -54,7 +54,7 @@
static DEFINE_SPINLOCK(irq_mapping_update_lock);
/* IRQ <-> event-channel mappings. */
-static int evtchn_to_irq[NR_EVENT_CHANNELS];
+static int evtchn_to_irq[NR_EVENT_CHANNELS] = {[0 ... NR_EVENT_CHANNELS-1] =
-1};
/* Packed IRQ information: binding type, sub-type index, and event channel. */
static u32 irq_info[NR_IRQS];
@@ -91,13 +91,13 @@ static inline unsigned int type_from_irq
}
/* IRQ <-> VIRQ mapping. */
-DEFINE_PER_CPU(int, virq_to_irq[NR_VIRQS]);
+DEFINE_PER_CPU(int, virq_to_irq[NR_VIRQS]) = {[0 ... NR_VIRQS-1] = -1};
/* IRQ <-> IPI mapping. */
#ifndef NR_IPIS
#define NR_IPIS 1
#endif
-DEFINE_PER_CPU(int, ipi_to_irq[NR_IPIS]);
+DEFINE_PER_CPU(int, ipi_to_irq[NR_IPIS]) = {[0 ... NR_IPIS-1] = -1};
/* Reference counts for bindings to IRQs. */
static int irq_bindcount[NR_IRQS];
@@ -751,7 +751,9 @@ void irq_resume(void)
BUG_ON(irq_info[pirq_to_irq(pirq)] != IRQ_UNBOUND);
/* Secondary CPUs must have no VIRQ or IPI bindings. */
- for (cpu = 1; cpu < NR_CPUS; cpu++) {
+ for_each_cpu(cpu) {
+ if (cpu == 0)
+ continue;
for (virq = 0; virq < NR_VIRQS; virq++)
BUG_ON(per_cpu(virq_to_irq, cpu)[virq] != -1);
for (ipi = 0; ipi < NR_IPIS; ipi++)
@@ -813,23 +815,12 @@ void irq_resume(void)
void __init xen_init_IRQ(void)
{
int i;
- int cpu;
init_evtchn_cpu_bindings();
- /* No VIRQ or IPI bindings. */
- for (cpu = 0; cpu < NR_CPUS; cpu++) {
- for (i = 0; i < NR_VIRQS; i++)
- per_cpu(virq_to_irq, cpu)[i] = -1;
- for (i = 0; i < NR_IPIS; i++)
- per_cpu(ipi_to_irq, cpu)[i] = -1;
- }
-
- /* No event-channel -> IRQ mappings. */
- for (i = 0; i < NR_EVENT_CHANNELS; i++) {
- evtchn_to_irq[i] = -1;
- mask_evtchn(i); /* No event channels are ''live'' right now.
*/
- }
+ /* No event channels are ''live'' right now. */
+ for (i = 0; i < NR_EVENT_CHANNELS; i++)
+ mask_evtchn(i);
/* No IRQ -> event-channel mappings. */
for (i = 0; i < NR_IRQS; i++)
--
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
here''s a few more cleanups to the linux sparse tree from lkml patch review. thanks, -chris -- _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Muli Ben-Yehuda
2006-May-24 10:27 UTC
Re: [Xen-devel] [patch 3/3] [PATCH] evtchn: fix opencoded for_each_cpu
On Wed, May 24, 2006 at 12:00:03AM -0700, Chris Wright wrote:> Use for_each_cpu instead, or statically initialize data when > possible.for_each_cpu is going away, this should be for_each_possible/present/online_cpu, whichever one is appropriate. Cheers, Muli _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Chris Wright
2006-May-24 10:35 UTC
Re: [Xen-devel] [patch 3/3] [PATCH] evtchn: fix opencoded for_each_cpu
* Muli Ben-Yehuda (muli@il.ibm.com) wrote:> On Wed, May 24, 2006 at 12:00:03AM -0700, Chris Wright wrote: > > > Use for_each_cpu instead, or statically initialize data when > > possible. > > for_each_cpu is going away, this should be > for_each_possible/present/online_cpu, whichever one is appropriate.Thanks, here''s a respin. -chris -- Subject: [PATCH] evtchn: fix opencoded for_each_cpu Use for_each_possible_cpu instead, or statically initialize data when possible. Signed-off-by: Chris Wright <chrisw@sous-sol.org> --- linux-2.6-xen-sparse/drivers/xen/core/evtchn.c | 27 ++++++++----------------- 1 file changed, 9 insertions(+), 18 deletions(-) --- xen-unstable.orig/linux-2.6-xen-sparse/drivers/xen/core/evtchn.c +++ xen-unstable/linux-2.6-xen-sparse/drivers/xen/core/evtchn.c @@ -54,7 +54,7 @@ static DEFINE_SPINLOCK(irq_mapping_update_lock); /* IRQ <-> event-channel mappings. */ -static int evtchn_to_irq[NR_EVENT_CHANNELS]; +static int evtchn_to_irq[NR_EVENT_CHANNELS] = {[0 ... NR_EVENT_CHANNELS-1] = -1}; /* Packed IRQ information: binding type, sub-type index, and event channel. */ static u32 irq_info[NR_IRQS]; @@ -91,13 +91,13 @@ static inline unsigned int type_from_irq } /* IRQ <-> VIRQ mapping. */ -DEFINE_PER_CPU(int, virq_to_irq[NR_VIRQS]); +DEFINE_PER_CPU(int, virq_to_irq[NR_VIRQS]) = {[0 ... NR_VIRQS-1] = -1}; /* IRQ <-> IPI mapping. */ #ifndef NR_IPIS #define NR_IPIS 1 #endif -DEFINE_PER_CPU(int, ipi_to_irq[NR_IPIS]); +DEFINE_PER_CPU(int, ipi_to_irq[NR_IPIS]) = {[0 ... NR_IPIS-1] = -1}; /* Reference counts for bindings to IRQs. */ static int irq_bindcount[NR_IRQS]; @@ -751,7 +751,9 @@ void irq_resume(void) BUG_ON(irq_info[pirq_to_irq(pirq)] != IRQ_UNBOUND); /* Secondary CPUs must have no VIRQ or IPI bindings. */ - for (cpu = 1; cpu < NR_CPUS; cpu++) { + for_each_possible_cpu(cpu) { + if (cpu == 0) + continue; for (virq = 0; virq < NR_VIRQS; virq++) BUG_ON(per_cpu(virq_to_irq, cpu)[virq] != -1); for (ipi = 0; ipi < NR_IPIS; ipi++) @@ -813,23 +815,12 @@ void irq_resume(void) void __init xen_init_IRQ(void) { int i; - int cpu; init_evtchn_cpu_bindings(); - /* No VIRQ or IPI bindings. */ - for (cpu = 0; cpu < NR_CPUS; cpu++) { - for (i = 0; i < NR_VIRQS; i++) - per_cpu(virq_to_irq, cpu)[i] = -1; - for (i = 0; i < NR_IPIS; i++) - per_cpu(ipi_to_irq, cpu)[i] = -1; - } - - /* No event-channel -> IRQ mappings. */ - for (i = 0; i < NR_EVENT_CHANNELS; i++) { - evtchn_to_irq[i] = -1; - mask_evtchn(i); /* No event channels are ''live'' right now. */ - } + /* No event channels are ''live'' right now. */ + for (i = 0; i < NR_EVENT_CHANNELS; i++) + mask_evtchn(i); /* No IRQ -> event-channel mappings. */ for (i = 0; i < NR_IRQS; i++) _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel