Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0dc0064a authored by David Vrabel's avatar David Vrabel Committed by Konrad Rzeszutek Wilk
Browse files

xen/evtchn: support more than 4096 ports



Remove the check during unbind for NR_EVENT_CHANNELS as this limits
support to less than 4096 ports.

Signed-off-by: default avatarDavid Vrabel <david.vrabel@citrix.com>
Reviewed-by: default avatarKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Reviewed-by: default avatarBoris Ostrovsky <boris.ostrovsky@oracle.com>
parent fd21069d
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -952,6 +952,19 @@ static int find_virq(unsigned int virq, unsigned int cpu)
	return rc;
}

/**
 * xen_evtchn_nr_channels - number of usable event channel ports
 *
 * This may be less than the maximum supported by the current
 * hypervisor ABI. Use xen_evtchn_max_channels() for the maximum
 * supported.
 */
unsigned xen_evtchn_nr_channels(void)
{
        return evtchn_ops->nr_channels();
}
EXPORT_SYMBOL_GPL(xen_evtchn_nr_channels);

int bind_virq_to_irq(unsigned int virq, unsigned int cpu)
{
	struct evtchn_bind_virq bind_virq;
+0 −5
Original line number Diff line number Diff line
@@ -85,11 +85,6 @@ static inline unsigned xen_evtchn_max_channels(void)
	return evtchn_ops->max_channels();
}

static inline unsigned xen_evtchn_nr_channels(void)
{
	return evtchn_ops->nr_channels();
}

/*
 * Do any ABI specific setup for a bound event channel before it can
 * be unmasked and used.
+1 −1
Original line number Diff line number Diff line
@@ -417,7 +417,7 @@ static long evtchn_ioctl(struct file *file,
			break;

		rc = -EINVAL;
		if (unbind.port >= NR_EVENT_CHANNELS)
		if (unbind.port >= xen_evtchn_nr_channels())
			break;

		rc = -ENOTCONN;
+2 −0
Original line number Diff line number Diff line
@@ -7,6 +7,8 @@
#include <asm/xen/hypercall.h>
#include <asm/xen/events.h>

unsigned xen_evtchn_nr_channels(void);

int bind_evtchn_to_irq(unsigned int evtchn);
int bind_evtchn_to_irqhandler(unsigned int evtchn,
			      irq_handler_t handler,