Skip to content

Commit

Permalink
qemu/main-loop: rename QEMU_IOTHREAD_LOCK_GUARD to BQL_LOCK_GUARD
Browse files Browse the repository at this point in the history
The name "iothread" is overloaded. Use the term Big QEMU Lock (BQL)
instead, it is already widely used and unambiguous.

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Paul Durrant <paul@xen.org>
Acked-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Cédric Le Goater <clg@kaod.org>
Acked-by: Ilya Leoshkevich <iii@linux.ibm.com>
Reviewed-by: Harsh Prateek Bora <harshpb@linux.ibm.com>
Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
Message-id: 20240102153529.486531-3-stefanha@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
  • Loading branch information
stefanhaRH authored and quic-mathbern committed Jul 15, 2024
1 parent 4fe36c0 commit 7c87f97
Show file tree
Hide file tree
Showing 9 changed files with 24 additions and 25 deletions.
14 changes: 7 additions & 7 deletions hw/i386/kvm/xen_evtchn.c
Original file line number Diff line number Diff line change
Expand Up @@ -1127,7 +1127,7 @@ int xen_evtchn_reset_op(struct evtchn_reset *reset)
return -ESRCH;
}

QEMU_IOTHREAD_LOCK_GUARD();
BQL_LOCK_GUARD();
return xen_evtchn_soft_reset();
}

Expand All @@ -1145,7 +1145,7 @@ int xen_evtchn_close_op(struct evtchn_close *close)
return -EINVAL;
}

QEMU_IOTHREAD_LOCK_GUARD();
BQL_LOCK_GUARD();
qemu_mutex_lock(&s->port_lock);

ret = close_port(s, close->port, &flush_kvm_routes);
Expand Down Expand Up @@ -1272,7 +1272,7 @@ int xen_evtchn_bind_pirq_op(struct evtchn_bind_pirq *pirq)
return -EINVAL;
}

QEMU_IOTHREAD_LOCK_GUARD();
BQL_LOCK_GUARD();

if (s->pirq[pirq->pirq].port) {
return -EBUSY;
Expand Down Expand Up @@ -1824,7 +1824,7 @@ int xen_physdev_map_pirq(struct physdev_map_pirq *map)
return -ENOTSUP;
}

QEMU_IOTHREAD_LOCK_GUARD();
BQL_LOCK_GUARD();
QEMU_LOCK_GUARD(&s->port_lock);

if (map->domid != DOMID_SELF && map->domid != xen_domid) {
Expand Down Expand Up @@ -1884,7 +1884,7 @@ int xen_physdev_unmap_pirq(struct physdev_unmap_pirq *unmap)
return -EINVAL;
}

QEMU_IOTHREAD_LOCK_GUARD();
BQL_LOCK_GUARD();
qemu_mutex_lock(&s->port_lock);

if (!pirq_inuse(s, pirq)) {
Expand Down Expand Up @@ -1924,7 +1924,7 @@ int xen_physdev_eoi_pirq(struct physdev_eoi *eoi)
return -ENOTSUP;
}

QEMU_IOTHREAD_LOCK_GUARD();
BQL_LOCK_GUARD();
QEMU_LOCK_GUARD(&s->port_lock);

if (!pirq_inuse(s, pirq)) {
Expand Down Expand Up @@ -1956,7 +1956,7 @@ int xen_physdev_query_pirq(struct physdev_irq_status_query *query)
return -ENOTSUP;
}

QEMU_IOTHREAD_LOCK_GUARD();
BQL_LOCK_GUARD();
QEMU_LOCK_GUARD(&s->port_lock);

if (!pirq_inuse(s, pirq)) {
Expand Down
2 changes: 1 addition & 1 deletion hw/i386/kvm/xen_gnttab.c
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,7 @@ int xen_gnttab_map_page(uint64_t idx, uint64_t gfn)
return -EINVAL;
}

QEMU_IOTHREAD_LOCK_GUARD();
BQL_LOCK_GUARD();
QEMU_LOCK_GUARD(&s->gnt_lock);

xen_overlay_do_map_page(&s->gnt_aliases[idx], gpa);
Expand Down
2 changes: 1 addition & 1 deletion hw/mips/mips_int.c
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ static void cpu_mips_irq_request(void *opaque, int irq, int level)
return;
}

QEMU_IOTHREAD_LOCK_GUARD();
BQL_LOCK_GUARD();

if (level) {
env->CP0_Cause |= 1 << (irq + CP0Ca_IP);
Expand Down
2 changes: 1 addition & 1 deletion hw/ppc/ppc.c
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ void ppc_set_irq(PowerPCCPU *cpu, int irq, int level)
unsigned int old_pending;

/* We may already have the BQL if coming from the reset path */
QEMU_IOTHREAD_LOCK_GUARD();
BQL_LOCK_GUARD();

old_pending = env->pending_interrupts;

Expand Down
19 changes: 9 additions & 10 deletions include/qemu/main-loop.h
Original file line number Diff line number Diff line change
Expand Up @@ -343,33 +343,32 @@ void bql_lock_impl(const char *file, int line);
void bql_unlock(void);

/**
* QEMU_IOTHREAD_LOCK_GUARD
* BQL_LOCK_GUARD
*
* Wrap a block of code in a conditional bql_{lock,unlock}.
*/
typedef struct IOThreadLockAuto IOThreadLockAuto;
typedef struct BQLLockAuto BQLLockAuto;

static inline IOThreadLockAuto *qemu_iothread_auto_lock(const char *file,
int line)
static inline BQLLockAuto *bql_auto_lock(const char *file, int line)
{
if (bql_locked()) {
return NULL;
}
bql_lock_impl(file, line);
/* Anything non-NULL causes the cleanup function to be called */
return (IOThreadLockAuto *)(uintptr_t)1;
return (BQLLockAuto *)(uintptr_t)1;
}

static inline void qemu_iothread_auto_unlock(IOThreadLockAuto *l)
static inline void bql_auto_unlock(BQLLockAuto *l)
{
bql_unlock();
}

G_DEFINE_AUTOPTR_CLEANUP_FUNC(IOThreadLockAuto, qemu_iothread_auto_unlock)
G_DEFINE_AUTOPTR_CLEANUP_FUNC(BQLLockAuto, bql_auto_unlock)

#define QEMU_IOTHREAD_LOCK_GUARD() \
g_autoptr(IOThreadLockAuto) _iothread_lock_auto __attribute__((unused)) \
= qemu_iothread_auto_lock(__FILE__, __LINE__)
#define BQL_LOCK_GUARD() \
g_autoptr(BQLLockAuto) _bql_lock_auto __attribute__((unused)) \
= bql_auto_lock(__FILE__, __LINE__)

/*
* qemu_cond_wait_iothread: Wait on condition for the main loop mutex
Expand Down
2 changes: 1 addition & 1 deletion target/i386/kvm/xen-emu.c
Original file line number Diff line number Diff line change
Expand Up @@ -581,7 +581,7 @@ static int xen_set_shared_info(uint64_t gfn)
uint64_t gpa = gfn << TARGET_PAGE_BITS;
int i, err;

QEMU_IOTHREAD_LOCK_GUARD();
BQL_LOCK_GUARD();

/*
* The xen_overlay device tells KVM about it too, since it had to
Expand Down
2 changes: 1 addition & 1 deletion target/ppc/excp_helper.c
Original file line number Diff line number Diff line change
Expand Up @@ -2222,7 +2222,7 @@ static int ppc_next_unmasked_interrupt(CPUPPCState *env)
void ppc_maybe_interrupt(CPUPPCState *env)
{
CPUState *cs = env_cpu(env);
QEMU_IOTHREAD_LOCK_GUARD();
BQL_LOCK_GUARD();

if (ppc_next_unmasked_interrupt(env)) {
cpu_interrupt(cs, CPU_INTERRUPT_HARD);
Expand Down
2 changes: 1 addition & 1 deletion target/ppc/helper_regs.c
Original file line number Diff line number Diff line change
Expand Up @@ -244,7 +244,7 @@ void cpu_interrupt_exittb(CPUState *cs)
* unless running with TCG.
*/
if (tcg_enabled()) {
QEMU_IOTHREAD_LOCK_GUARD();
BQL_LOCK_GUARD();
cpu_interrupt(cs, CPU_INTERRUPT_EXITTB);
}
}
Expand Down
4 changes: 2 additions & 2 deletions target/riscv/cpu_helper.c
Original file line number Diff line number Diff line change
Expand Up @@ -655,7 +655,7 @@ void riscv_cpu_interrupt(CPURISCVState *env)
uint64_t gein, vsgein = 0, vstip = 0, irqf = 0;
CPUState *cs = env_cpu(env);

QEMU_IOTHREAD_LOCK_GUARD();
BQL_LOCK_GUARD();

if (env->virt_enabled) {
gein = get_field(env->hstatus, HSTATUS_VGEIN);
Expand All @@ -681,7 +681,7 @@ uint64_t riscv_cpu_update_mip(CPURISCVState *env, uint64_t mask, uint64_t value)
/* No need to update mip for VSTIP */
mask = ((mask == MIP_VSTIP) && env->vstime_irq) ? 0 : mask;

QEMU_IOTHREAD_LOCK_GUARD();
BQL_LOCK_GUARD();

env->mip = (env->mip & ~mask) | (value & mask);

Expand Down

0 comments on commit 7c87f97

Please sign in to comment.