|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 3/4] xen/arch: Switch local_irq_save() to being a static inline helper
... rather than a macro which writes to its parameter by name. Take the
opportunity to fold the assignment into the flags declaraion where
appropriate.
No functional change.
Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
---
CC: Jan Beulich <JBeulich@xxxxxxxx>
CC: Wei Liu <wei.liu2@xxxxxxxxxx>
CC: Roger Pau Monné <roger.pau@xxxxxxxxxx>
CC: Stefano Stabellini <sstabellini@xxxxxxxxxx>
CC: Julien Grall <julien.grall@xxxxxxx>
---
xen/arch/arm/mm.c | 4 ++--
xen/arch/arm/p2m.c | 2 +-
xen/arch/x86/acpi/power.c | 2 +-
xen/arch/x86/apic.c | 10 +++++-----
xen/arch/x86/cpu/mtrr/generic.c | 4 ++--
xen/arch/x86/cpu/mtrr/main.c | 6 ++----
xen/arch/x86/domain.c | 2 +-
xen/arch/x86/domain_page.c | 4 ++--
xen/arch/x86/flushtlb.c | 4 ++--
xen/arch/x86/genapic/x2apic.c | 4 ++--
xen/arch/x86/hpet.c | 3 +--
xen/arch/x86/hvm/vmx/vmcs.c | 6 ++----
xen/arch/x86/io_apic.c | 2 +-
xen/arch/x86/nmi.c | 3 ++-
xen/arch/x86/platform_hypercall.c | 2 +-
xen/arch/x86/smp.c | 4 ++--
xen/arch/x86/time.c | 5 ++---
xen/arch/x86/traps.c | 2 +-
xen/common/cpupool.c | 2 +-
xen/common/gdbstub.c | 6 ++----
xen/common/livepatch.c | 4 ++--
xen/common/rcupdate.c | 2 +-
xen/common/spinlock.c | 3 +--
xen/common/timer.c | 2 +-
xen/drivers/char/console.c | 5 ++---
xen/drivers/char/serial.c | 4 +---
xen/drivers/passthrough/io.c | 4 ++--
xen/include/asm-arm/arm32/system.h | 14 +++++++++-----
xen/include/asm-arm/arm64/system.h | 14 +++++++++-----
xen/include/asm-x86/system.h | 14 +++++++++-----
xen/include/xen/rwlock.h | 7 +++----
xen/include/xen/spinlock.h | 2 +-
32 files changed, 76 insertions(+), 76 deletions(-)
diff --git a/xen/arch/arm/mm.c b/xen/arch/arm/mm.c
index 987fcb9..9b1da81 100644
--- a/xen/arch/arm/mm.c
+++ b/xen/arch/arm/mm.c
@@ -401,7 +401,7 @@ void *map_domain_page(mfn_t mfn)
lpae_t pte;
int i, slot;
- local_irq_save(flags);
+ flags = local_irq_save();
/* The map is laid out as an open-addressed hash table where each
* entry is a 2MB superpage pte. We use the available bits of each
@@ -467,7 +467,7 @@ void unmap_domain_page(const void *va)
lpae_t *map = this_cpu(xen_dommap);
int slot = ((unsigned long) va - DOMHEAP_VIRT_START) >> SECOND_SHIFT;
- local_irq_save(flags);
+ flags = local_irq_save();
ASSERT(slot >= 0 && slot < DOMHEAP_ENTRIES);
ASSERT(map[slot].pt.avail != 0);
diff --git a/xen/arch/arm/p2m.c b/xen/arch/arm/p2m.c
index 6c76298..81a98ef 100644
--- a/xen/arch/arm/p2m.c
+++ b/xen/arch/arm/p2m.c
@@ -146,7 +146,7 @@ static void p2m_force_tlb_flush_sync(struct p2m_domain *p2m)
ovttbr = READ_SYSREG64(VTTBR_EL2);
if ( ovttbr != p2m->vttbr )
{
- local_irq_save(flags);
+ flags = local_irq_save();
WRITE_SYSREG64(p2m->vttbr, VTTBR_EL2);
isb();
}
diff --git a/xen/arch/x86/acpi/power.c b/xen/arch/x86/acpi/power.c
index 93e967f..7d64904 100644
--- a/xen/arch/x86/acpi/power.c
+++ b/xen/arch/x86/acpi/power.c
@@ -197,7 +197,7 @@ static int enter_state(u32 state)
console_start_sync();
printk("Entering ACPI S%d state.\n", state);
- local_irq_save(flags);
+ flags = local_irq_save();
spin_debug_disable();
if ( (error = device_power_down()) != SAVED_ALL )
diff --git a/xen/arch/x86/apic.c b/xen/arch/x86/apic.c
index 7120107..031b3ee 100644
--- a/xen/arch/x86/apic.c
+++ b/xen/arch/x86/apic.c
@@ -718,7 +718,7 @@ int lapic_suspend(void)
if (maxlvt >= 5)
apic_pm_state.apic_thmr = apic_read(APIC_LVTTHMR);
- local_irq_save(flags);
+ flags = local_irq_save();
disable_local_APIC();
iommu_disable_x2apic_IR();
local_irq_restore(flags);
@@ -734,7 +734,7 @@ int lapic_resume(void)
if (!apic_pm_state.active)
return 0;
- local_irq_save(flags);
+ flags = local_irq_save();
/*
* Make sure the APICBASE points to the right address
@@ -1094,8 +1094,8 @@ static void __setup_APIC_LVTT(unsigned int clocks)
static void setup_APIC_timer(void)
{
- unsigned long flags;
- local_irq_save(flags);
+ unsigned long flags = local_irq_save();
+
__setup_APIC_LVTT(0);
local_irq_restore(flags);
}
@@ -1302,7 +1302,7 @@ void __init setup_boot_APIC_clock(void)
check_deadline_errata();
- local_irq_save(flags);
+ flags = local_irq_save();
calibrate_APIC_clock();
diff --git a/xen/arch/x86/cpu/mtrr/generic.c b/xen/arch/x86/cpu/mtrr/generic.c
index 8f9cf1b..3612b8a 100644
--- a/xen/arch/x86/cpu/mtrr/generic.c
+++ b/xen/arch/x86/cpu/mtrr/generic.c
@@ -493,7 +493,7 @@ static void generic_set_all(void)
unsigned long flags;
bool pge;
- local_irq_save(flags);
+ flags = local_irq_save();
pge = prepare_set();
/* Actually set the state */
@@ -528,7 +528,7 @@ static void generic_set_mtrr(unsigned int reg, unsigned
long base,
vr = &mtrr_state.var_ranges[reg];
- local_irq_save(flags);
+ flags = local_irq_save();
pge = prepare_set();
if (size == 0) {
diff --git a/xen/arch/x86/cpu/mtrr/main.c b/xen/arch/x86/cpu/mtrr/main.c
index e9df53f..c0780e2 100644
--- a/xen/arch/x86/cpu/mtrr/main.c
+++ b/xen/arch/x86/cpu/mtrr/main.c
@@ -137,9 +137,7 @@ static void ipi_handler(void *info)
*/
{
struct set_mtrr_data *data = info;
- unsigned long flags;
-
- local_irq_save(flags);
+ unsigned long flags = local_irq_save();
atomic_dec(&data->count);
while(!atomic_read(&data->gate))
@@ -230,7 +228,7 @@ static void set_mtrr(unsigned int reg, unsigned long base,
/* Start the ball rolling on other CPUs */
on_selected_cpus(&allbutself, ipi_handler, &data, 0);
- local_irq_save(flags);
+ flags = local_irq_save();
while (atomic_read(&data.count))
cpu_relax();
diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index b4d5948..c73d640 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -1866,7 +1866,7 @@ int __sync_local_execstate(void)
unsigned long flags;
int switch_required;
- local_irq_save(flags);
+ flags = local_irq_save();
switch_required = (this_cpu(curr_vcpu) != current);
diff --git a/xen/arch/x86/domain_page.c b/xen/arch/x86/domain_page.c
index 4a07cfb..0128577 100644
--- a/xen/arch/x86/domain_page.c
+++ b/xen/arch/x86/domain_page.c
@@ -92,7 +92,7 @@ void *map_domain_page(mfn_t mfn)
perfc_incr(map_domain_page_count);
- local_irq_save(flags);
+ flags = local_irq_save();
hashent = &vcache->hash[MAPHASH_HASHFN(mfn_x(mfn))];
if ( hashent->mfn == mfn_x(mfn) )
@@ -196,7 +196,7 @@ void unmap_domain_page(const void *ptr)
mfn = l1e_get_pfn(MAPCACHE_L1ENT(idx));
hashent = &v->arch.pv.mapcache.hash[MAPHASH_HASHFN(mfn)];
- local_irq_save(flags);
+ flags = local_irq_save();
if ( hashent->idx == idx )
{
diff --git a/xen/arch/x86/flushtlb.c b/xen/arch/x86/flushtlb.c
index ed0504c..b71a0be 100644
--- a/xen/arch/x86/flushtlb.c
+++ b/xen/arch/x86/flushtlb.c
@@ -82,7 +82,7 @@ static void do_tlb_flush(void)
u32 t;
/* This non-reentrant function is sometimes called in interrupt context. */
- local_irq_save(flags);
+ flags = local_irq_save();
t = pre_flush();
@@ -108,7 +108,7 @@ void switch_cr3_cr4(unsigned long cr3, unsigned long cr4)
unsigned long old_pcid = cr3_pcid(read_cr3());
/* This non-reentrant function is sometimes called in interrupt context. */
- local_irq_save(flags);
+ flags = local_irq_save();
t = pre_flush();
diff --git a/xen/arch/x86/genapic/x2apic.c b/xen/arch/x86/genapic/x2apic.c
index 7e2e89d..83ff5d9 100644
--- a/xen/arch/x86/genapic/x2apic.c
+++ b/xen/arch/x86/genapic/x2apic.c
@@ -113,7 +113,7 @@ static void send_IPI_mask_x2apic_phys(const cpumask_t
*cpumask, int vector)
*/
smp_mb();
- local_irq_save(flags);
+ flags = local_irq_save();
for_each_cpu ( cpu, cpumask )
{
@@ -137,7 +137,7 @@ static void send_IPI_mask_x2apic_cluster(const cpumask_t
*cpumask, int vector)
smp_mb(); /* See above for an explanation. */
- local_irq_save(flags);
+ flags = local_irq_save();
cpumask_andnot(ipimask, &cpu_online_map, cpumask_of(cpu));
diff --git a/xen/arch/x86/hpet.c b/xen/arch/x86/hpet.c
index 4b08488..06a62ff 100644
--- a/xen/arch/x86/hpet.c
+++ b/xen/arch/x86/hpet.c
@@ -97,9 +97,8 @@ static inline unsigned long ns2ticks(unsigned long nsec, int
shift,
static int hpet_next_event(unsigned long delta, int timer)
{
uint32_t cnt, cmp;
- unsigned long flags;
+ unsigned long flags = local_irq_save();
- local_irq_save(flags);
cnt = hpet_read32(HPET_COUNTER);
cmp = cnt + delta;
hpet_write32(cmp, HPET_Tn_CMP(timer));
diff --git a/xen/arch/x86/hvm/vmx/vmcs.c b/xen/arch/x86/hvm/vmx/vmcs.c
index dec21d1..f13b1d9 100644
--- a/xen/arch/x86/hvm/vmx/vmcs.c
+++ b/xen/arch/x86/hvm/vmx/vmcs.c
@@ -549,9 +549,7 @@ static void vmx_clear_vmcs(struct vcpu *v)
static void vmx_load_vmcs(struct vcpu *v)
{
- unsigned long flags;
-
- local_irq_save(flags);
+ unsigned long flags = local_irq_save();
if ( v->arch.hvm.vmx.active_cpu == -1 )
{
@@ -713,7 +711,7 @@ void vmx_cpu_down(void)
if ( !this_cpu(vmxon) )
return;
- local_irq_save(flags);
+ flags = local_irq_save();
while ( !list_empty(active_vmcs_list) )
__vmx_clear_vmcs(list_entry(active_vmcs_list->next,
diff --git a/xen/arch/x86/io_apic.c b/xen/arch/x86/io_apic.c
index aca4f63..47b1649 100644
--- a/xen/arch/x86/io_apic.c
+++ b/xen/arch/x86/io_apic.c
@@ -1883,7 +1883,7 @@ static void __init check_timer(void)
unsigned long flags;
cpumask_t mask_all;
- local_irq_save(flags);
+ flags = local_irq_save();
/*
* get/set the timer IRQ vector:
diff --git a/xen/arch/x86/nmi.c b/xen/arch/x86/nmi.c
index d7fce28..3e94311 100644
--- a/xen/arch/x86/nmi.c
+++ b/xen/arch/x86/nmi.c
@@ -560,7 +560,8 @@ void self_nmi(void)
{
unsigned long flags;
u32 id = get_apic_id();
- local_irq_save(flags);
+
+ flags = local_irq_save();
apic_wait_icr_idle();
apic_icr_write(APIC_DM_NMI | APIC_DEST_PHYSICAL, id);
local_irq_restore(flags);
diff --git a/xen/arch/x86/platform_hypercall.c
b/xen/arch/x86/platform_hypercall.c
index b19f6ec..949fc69 100644
--- a/xen/arch/x86/platform_hypercall.c
+++ b/xen/arch/x86/platform_hypercall.c
@@ -147,7 +147,7 @@ void resource_access(void *info)
unlikely(entry[1].idx == MSR_IA32_TSC);
if ( unlikely(read_tsc) )
- local_irq_save(flags);
+ flags = local_irq_save();
ret = rdmsr_safe(entry->idx, entry->val);
diff --git a/xen/arch/x86/smp.c b/xen/arch/x86/smp.c
index b15d4f0..e324882 100644
--- a/xen/arch/x86/smp.c
+++ b/xen/arch/x86/smp.c
@@ -134,7 +134,7 @@ void send_IPI_mask_flat(const cpumask_t *cpumask, int
vector)
if ( mask == 0 )
return;
- local_irq_save(flags);
+ flags = local_irq_save();
/*
* Wait for idle.
@@ -165,7 +165,7 @@ void send_IPI_mask_phys(const cpumask_t *mask, int vector)
unsigned long cfg, flags;
unsigned int query_cpu;
- local_irq_save(flags);
+ flags = local_irq_save();
for_each_cpu ( query_cpu, mask )
{
diff --git a/xen/arch/x86/time.c b/xen/arch/x86/time.c
index 24d4c27..f78d0fb 100644
--- a/xen/arch/x86/time.c
+++ b/xen/arch/x86/time.c
@@ -1585,9 +1585,8 @@ static struct cpu_time_stamp ap_bringup_ref;
void time_latch_stamps(void)
{
- unsigned long flags;
+ unsigned long flags = local_irq_save();
- local_irq_save(flags);
ap_bringup_ref.master_stime = read_platform_stime(NULL);
ap_bringup_ref.local_tsc = rdtsc_ordered();
local_irq_restore(flags);
@@ -1655,7 +1654,7 @@ void init_percpu_time(void)
}
}
- local_irq_save(flags);
+ flags = local_irq_save();
now = read_platform_stime(NULL);
tsc = rdtsc_ordered();
local_irq_restore(flags);
diff --git a/xen/arch/x86/traps.c b/xen/arch/x86/traps.c
index 9471d89..4a9ab51 100644
--- a/xen/arch/x86/traps.c
+++ b/xen/arch/x86/traps.c
@@ -1315,7 +1315,7 @@ static enum pf_type spurious_page_fault(unsigned long
addr,
* Disabling interrupts prevents TLB flushing, and hence prevents
* page tables from becoming invalid under our feet during the walk.
*/
- local_irq_save(flags);
+ flags = local_irq_save();
pf_type = __page_fault_type(addr, regs);
local_irq_restore(flags);
diff --git a/xen/common/cpupool.c b/xen/common/cpupool.c
index e89bb67..995934d 100644
--- a/xen/common/cpupool.c
+++ b/xen/common/cpupool.c
@@ -739,7 +739,7 @@ void dump_runq(unsigned char key)
struct cpupool **c;
spin_lock(&cpupool_lock);
- local_irq_save(flags);
+ flags = local_irq_save();
printk("sched_smt_power_savings: %s\n",
sched_smt_power_savings? "enabled":"disabled");
diff --git a/xen/common/gdbstub.c b/xen/common/gdbstub.c
index 07095e1..0d60f57 100644
--- a/xen/common/gdbstub.c
+++ b/xen/common/gdbstub.c
@@ -603,7 +603,7 @@ __trap_to_gdb(struct cpu_user_regs *regs, unsigned long
cookie)
gdb_smp_pause();
- local_irq_save(flags);
+ flags = local_irq_save();
watchdog_disable();
console_start_sync();
@@ -661,9 +661,7 @@ presmp_initcall(initialise_gdb);
static void gdb_pause_this_cpu(void *unused)
{
- unsigned long flags;
-
- local_irq_save(flags);
+ unsigned long flags = local_irq_save();
atomic_set(&gdb_cpu[smp_processor_id()].ack, 1);
atomic_inc(&gdb_smp_paused_count);
diff --git a/xen/common/livepatch.c b/xen/common/livepatch.c
index d6eaae6..1ad83e0 100644
--- a/xen/common/livepatch.c
+++ b/xen/common/livepatch.c
@@ -1357,7 +1357,7 @@ void check_for_livepatch_work(void)
if ( !livepatch_spin(&livepatch_work.semaphore, timeout, cpus, "IRQ") )
{
- local_irq_save(flags);
+ flags = local_irq_save();
/* Do the patching. */
livepatch_do_action();
/* Serialize and flush out the CPU via CPUID instruction (on x86).
*/
@@ -1384,7 +1384,7 @@ void check_for_livepatch_work(void)
cpu_relax();
/* Disable IRQs and signal. */
- local_irq_save(flags);
+ flags = local_irq_save();
/*
* We re-use the sempahore, so MUST have it reset by master before
* we exit the loop above.
diff --git a/xen/common/rcupdate.c b/xen/common/rcupdate.c
index 3517790..1f8fe46 100644
--- a/xen/common/rcupdate.c
+++ b/xen/common/rcupdate.c
@@ -224,7 +224,7 @@ void call_rcu(struct rcu_head *head,
head->func = func;
head->next = NULL;
- local_irq_save(flags);
+ flags = local_irq_save();
rdp = &__get_cpu_var(rcu_data);
*rdp->nxttail = head;
rdp->nxttail = &head->next;
diff --git a/xen/common/spinlock.c b/xen/common/spinlock.c
index 6bc52d7..d87cedb 100644
--- a/xen/common/spinlock.c
+++ b/xen/common/spinlock.c
@@ -169,9 +169,8 @@ void _spin_lock_irq(spinlock_t *lock)
unsigned long _spin_lock_irqsave(spinlock_t *lock)
{
- unsigned long flags;
+ unsigned long flags = local_irq_save();
- local_irq_save(flags);
_spin_lock(lock);
return flags;
}
diff --git a/xen/common/timer.c b/xen/common/timer.c
index 376581b..fc1b2d6 100644
--- a/xen/common/timer.c
+++ b/xen/common/timer.c
@@ -256,7 +256,7 @@ static inline bool_t timer_lock(struct timer *timer)
#define timer_lock_irqsave(t, flags) ({ \
bool_t __x; \
- local_irq_save(flags); \
+ flags = local_irq_save(); \
if ( !(__x = timer_lock(t)) ) \
local_irq_restore(flags); \
__x; \
diff --git a/xen/drivers/char/console.c b/xen/drivers/char/console.c
index 675193a..89c4bb6 100644
--- a/xen/drivers/char/console.c
+++ b/xen/drivers/char/console.c
@@ -817,7 +817,7 @@ static void vprintk_common(const char *prefix, const char
*fmt, va_list args)
unsigned long flags;
/* console_lock can be acquired recursively from __printk_ratelimit(). */
- local_irq_save(flags);
+ flags = local_irq_save();
spin_lock_recursive(&console_lock);
state = &this_cpu(state);
@@ -1050,9 +1050,8 @@ void console_end_log_everything(void)
unsigned long console_lock_recursive_irqsave(void)
{
- unsigned long flags;
+ unsigned long flags = local_irq_save();
- local_irq_save(flags);
spin_lock_recursive(&console_lock);
return flags;
diff --git a/xen/drivers/char/serial.c b/xen/drivers/char/serial.c
index 09a20ac..0795602 100644
--- a/xen/drivers/char/serial.c
+++ b/xen/drivers/char/serial.c
@@ -71,9 +71,7 @@ void serial_rx_interrupt(struct serial_port *port, struct
cpu_user_regs *regs)
void serial_tx_interrupt(struct serial_port *port, struct cpu_user_regs *regs)
{
int i, n;
- unsigned long flags;
-
- local_irq_save(flags);
+ unsigned long flags = local_irq_save();
/*
* Avoid spinning for a long time: if there is a long-term lock holder
diff --git a/xen/drivers/passthrough/io.c b/xen/drivers/passthrough/io.c
index a6eb8a4..a7c4167 100644
--- a/xen/drivers/passthrough/io.c
+++ b/xen/drivers/passthrough/io.c
@@ -67,7 +67,7 @@ static void raise_softirq_for(struct hvm_pirq_dpci *pirq_dpci)
get_knownalive_domain(pirq_dpci->dom);
- local_irq_save(flags);
+ flags = local_irq_save();
list_add_tail(&pirq_dpci->softirq_list, &this_cpu(dpci_list));
local_irq_restore(flags);
@@ -1057,7 +1057,7 @@ static void dpci_softirq(void)
unsigned long flags;
/* Put back on the list and retry. */
- local_irq_save(flags);
+ flags = local_irq_save();
list_add_tail(&pirq_dpci->softirq_list, &this_cpu(dpci_list));
local_irq_restore(flags);
diff --git a/xen/include/asm-arm/arm32/system.h
b/xen/include/asm-arm/arm32/system.h
index cbfa91d..f7c8e53 100644
--- a/xen/include/asm-arm/arm32/system.h
+++ b/xen/include/asm-arm/arm32/system.h
@@ -17,11 +17,15 @@ static inline unsigned long local_save_flags(void)
return flags;
}
-#define local_irq_save(x) \
-({ \
- x = local_save_flags(); \
- local_irq_disable(); \
-})
+static inline unsigned long local_irq_save(void)
+{
+ unsigned long flags = local_save_flags();
+
+ local_irq_disable();
+
+ return flags;
+}
+
#define local_irq_restore(x) \
({ \
BUILD_BUG_ON(sizeof(x) != sizeof(long)); \
diff --git a/xen/include/asm-arm/arm64/system.h
b/xen/include/asm-arm/arm64/system.h
index 89c5b64..67e2ed4 100644
--- a/xen/include/asm-arm/arm64/system.h
+++ b/xen/include/asm-arm/arm64/system.h
@@ -29,11 +29,15 @@ static inline unsigned long local_save_flags(void)
return flags;
}
-#define local_irq_save(x) \
-({ \
- x = local_save_flags(); \
- local_irq_disable(); \
-})
+static inline unsigned long local_irq_save(void)
+{
+ unsigned long flags = local_save_flags();
+
+ local_irq_disable();
+
+ return flags;
+}
+
#define local_irq_restore(x) \
({ \
BUILD_BUG_ON(sizeof(x) != sizeof(long)); \
diff --git a/xen/include/asm-x86/system.h b/xen/include/asm-x86/system.h
index faf2efe..756b21f 100644
--- a/xen/include/asm-x86/system.h
+++ b/xen/include/asm-x86/system.h
@@ -262,11 +262,15 @@ static inline unsigned long local_save_flags(void)
return flags;
}
-#define local_irq_save(x) \
-({ \
- x = local_save_flags(); \
- local_irq_disable(); \
-})
+static inline unsigned long local_irq_save(void)
+{
+ unsigned long flags = local_save_flags();
+
+ local_irq_disable();
+
+ return flags;
+}
+
#define local_irq_restore(x) \
({ \
BUILD_BUG_ON(sizeof(x) != sizeof(long)); \
diff --git a/xen/include/xen/rwlock.h b/xen/include/xen/rwlock.h
index 35657c5..10d0f56 100644
--- a/xen/include/xen/rwlock.h
+++ b/xen/include/xen/rwlock.h
@@ -79,8 +79,8 @@ static inline void _read_lock_irq(rwlock_t *lock)
static inline unsigned long _read_lock_irqsave(rwlock_t *lock)
{
- unsigned long flags;
- local_irq_save(flags);
+ unsigned long flags = local_irq_save();
+
_read_lock(lock);
return flags;
}
@@ -136,9 +136,8 @@ static inline void _write_lock_irq(rwlock_t *lock)
static inline unsigned long _write_lock_irqsave(rwlock_t *lock)
{
- unsigned long flags;
+ unsigned long flags = local_irq_save();
- local_irq_save(flags);
_write_lock(lock);
return flags;
}
diff --git a/xen/include/xen/spinlock.h b/xen/include/xen/spinlock.h
index a811b73..3c44c99 100644
--- a/xen/include/xen/spinlock.h
+++ b/xen/include/xen/spinlock.h
@@ -187,7 +187,7 @@ void _spin_unlock_recursive(spinlock_t *lock);
#define spin_trylock_irqsave(lock, flags) \
({ \
- local_irq_save(flags); \
+ flags = local_irq_save(); \
spin_trylock(lock) ? \
1 : ({ local_irq_restore(flags); 0; }); \
})
--
2.1.4
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |