xen/events: reduce externally visible helper functions
[ Upstream commit686464514f
] get_evtchn_to_irq() has only one external user while irq_from_evtchn() provides the same functionality and is exported for a wider user base. Modify the only external user of get_evtchn_to_irq() to use irq_from_evtchn() instead and make get_evtchn_to_irq() static. evtchn_from_irq() and irq_from_virq() have a single external user and can easily be combined to a new helper irq_evtchn_from_virq() allowing to drop irq_from_virq() and to make evtchn_from_irq() static. Signed-off-by: Juergen Gross <jgross@suse.com> Reviewed-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com> Signed-off-by: Juergen Gross <jgross@suse.com> Stable-dep-of:fa765c4b4a
("xen/events: close evtchn after mapping cleanup") Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
3c8f5965a9
commit
b79345efd0
|
@ -171,11 +171,11 @@ static void evtchn_2l_handle_events(unsigned cpu, struct evtchn_loop_ctrl *ctrl)
|
||||||
int i;
|
int i;
|
||||||
struct shared_info *s = HYPERVISOR_shared_info;
|
struct shared_info *s = HYPERVISOR_shared_info;
|
||||||
struct vcpu_info *vcpu_info = __this_cpu_read(xen_vcpu);
|
struct vcpu_info *vcpu_info = __this_cpu_read(xen_vcpu);
|
||||||
|
evtchn_port_t evtchn;
|
||||||
|
|
||||||
/* Timer interrupt has highest priority. */
|
/* Timer interrupt has highest priority. */
|
||||||
irq = irq_from_virq(cpu, VIRQ_TIMER);
|
irq = irq_evtchn_from_virq(cpu, VIRQ_TIMER, &evtchn);
|
||||||
if (irq != -1) {
|
if (irq != -1) {
|
||||||
evtchn_port_t evtchn = evtchn_from_irq(irq);
|
|
||||||
word_idx = evtchn / BITS_PER_LONG;
|
word_idx = evtchn / BITS_PER_LONG;
|
||||||
bit_idx = evtchn % BITS_PER_LONG;
|
bit_idx = evtchn % BITS_PER_LONG;
|
||||||
if (active_evtchns(cpu, s, word_idx) & (1ULL << bit_idx))
|
if (active_evtchns(cpu, s, word_idx) & (1ULL << bit_idx))
|
||||||
|
@ -328,9 +328,9 @@ irqreturn_t xen_debug_interrupt(int irq, void *dev_id)
|
||||||
for (i = 0; i < EVTCHN_2L_NR_CHANNELS; i++) {
|
for (i = 0; i < EVTCHN_2L_NR_CHANNELS; i++) {
|
||||||
if (sync_test_bit(i, BM(sh->evtchn_pending))) {
|
if (sync_test_bit(i, BM(sh->evtchn_pending))) {
|
||||||
int word_idx = i / BITS_PER_EVTCHN_WORD;
|
int word_idx = i / BITS_PER_EVTCHN_WORD;
|
||||||
printk(" %d: event %d -> irq %d%s%s%s\n",
|
printk(" %d: event %d -> irq %u%s%s%s\n",
|
||||||
cpu_from_evtchn(i), i,
|
cpu_from_evtchn(i), i,
|
||||||
get_evtchn_to_irq(i),
|
irq_from_evtchn(i),
|
||||||
sync_test_bit(word_idx, BM(&v->evtchn_pending_sel))
|
sync_test_bit(word_idx, BM(&v->evtchn_pending_sel))
|
||||||
? "" : " l2-clear",
|
? "" : " l2-clear",
|
||||||
!sync_test_bit(i, BM(sh->evtchn_mask))
|
!sync_test_bit(i, BM(sh->evtchn_mask))
|
||||||
|
|
|
@ -248,7 +248,7 @@ static int set_evtchn_to_irq(evtchn_port_t evtchn, unsigned int irq)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int get_evtchn_to_irq(evtchn_port_t evtchn)
|
static int get_evtchn_to_irq(evtchn_port_t evtchn)
|
||||||
{
|
{
|
||||||
if (evtchn >= xen_evtchn_max_channels())
|
if (evtchn >= xen_evtchn_max_channels())
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -415,7 +415,7 @@ static void xen_irq_info_cleanup(struct irq_info *info)
|
||||||
/*
|
/*
|
||||||
* Accessors for packed IRQ information.
|
* Accessors for packed IRQ information.
|
||||||
*/
|
*/
|
||||||
evtchn_port_t evtchn_from_irq(unsigned irq)
|
static evtchn_port_t evtchn_from_irq(unsigned int irq)
|
||||||
{
|
{
|
||||||
const struct irq_info *info = NULL;
|
const struct irq_info *info = NULL;
|
||||||
|
|
||||||
|
@ -433,9 +433,14 @@ unsigned int irq_from_evtchn(evtchn_port_t evtchn)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(irq_from_evtchn);
|
EXPORT_SYMBOL_GPL(irq_from_evtchn);
|
||||||
|
|
||||||
int irq_from_virq(unsigned int cpu, unsigned int virq)
|
int irq_evtchn_from_virq(unsigned int cpu, unsigned int virq,
|
||||||
|
evtchn_port_t *evtchn)
|
||||||
{
|
{
|
||||||
return per_cpu(virq_to_irq, cpu)[virq];
|
int irq = per_cpu(virq_to_irq, cpu)[virq];
|
||||||
|
|
||||||
|
*evtchn = evtchn_from_irq(irq);
|
||||||
|
|
||||||
|
return irq;
|
||||||
}
|
}
|
||||||
|
|
||||||
static enum ipi_vector ipi_from_irq(unsigned irq)
|
static enum ipi_vector ipi_from_irq(unsigned irq)
|
||||||
|
|
|
@ -33,7 +33,6 @@ struct evtchn_ops {
|
||||||
|
|
||||||
extern const struct evtchn_ops *evtchn_ops;
|
extern const struct evtchn_ops *evtchn_ops;
|
||||||
|
|
||||||
int get_evtchn_to_irq(evtchn_port_t evtchn);
|
|
||||||
void handle_irq_for_port(evtchn_port_t port, struct evtchn_loop_ctrl *ctrl);
|
void handle_irq_for_port(evtchn_port_t port, struct evtchn_loop_ctrl *ctrl);
|
||||||
|
|
||||||
unsigned int cpu_from_evtchn(evtchn_port_t evtchn);
|
unsigned int cpu_from_evtchn(evtchn_port_t evtchn);
|
||||||
|
|
|
@ -101,8 +101,8 @@ void xen_poll_irq_timeout(int irq, u64 timeout);
|
||||||
|
|
||||||
/* Determine the IRQ which is bound to an event channel */
|
/* Determine the IRQ which is bound to an event channel */
|
||||||
unsigned int irq_from_evtchn(evtchn_port_t evtchn);
|
unsigned int irq_from_evtchn(evtchn_port_t evtchn);
|
||||||
int irq_from_virq(unsigned int cpu, unsigned int virq);
|
int irq_evtchn_from_virq(unsigned int cpu, unsigned int virq,
|
||||||
evtchn_port_t evtchn_from_irq(unsigned irq);
|
evtchn_port_t *evtchn);
|
||||||
|
|
||||||
int xen_set_callback_via(uint64_t via);
|
int xen_set_callback_via(uint64_t via);
|
||||||
int xen_evtchn_do_upcall(void);
|
int xen_evtchn_do_upcall(void);
|
||||||
|
|
Loading…
Reference in New Issue