From nobody Fri May 3 07:25:12 2024 Delivered-To: importer@patchew.org Received-SPF: none (zohomail.com: 192.237.175.120 is neither permitted nor denied by domain of lists.xenproject.org) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=none (zohomail.com: 192.237.175.120 is neither permitted nor denied by domain of lists.xenproject.org) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1583402348; cv=none; d=zohomail.com; s=zohoarc; b=X3T01yZdUjHjBAxMekD/Bcofyxb8zuS//uXWfpxEmjr5lqBcnagWiQhdGhVXV/fB5BoUW8rnXhXBZ09LRDM2JXLbxTATddhVJLiNKy0P4jMvF66ckwOZwHKNq2tw5wmuoFYT3/irGHfU1NITcIjKECFl7vCgE3TuiL+1Jxs0q9E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1583402348; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:To; bh=XAEu5YC45Zh6em2xFfvm5OfuQwr86Lwa3R4gVoF75WY=; b=NVbTtsUEy5/Y0TvluHJ0CkYE2wkMh4LM5IwneEakvwXG59byHultw+tvTfJdc42r7FncJ1EuO/4IBRzY4iBAxRSH49wa5NZ/xYkmZNtPTpKH50lPDlKMISdmxEwXAYCrrSoyl8C3OYNhK0HAiAwB62NyhOw4oWoJcaAniJogw9s= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=none (zohomail.com: 192.237.175.120 is neither permitted nor denied by domain of lists.xenproject.org) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1583402348098491.90864982006985; Thu, 5 Mar 2020 01:59:08 -0800 (PST) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1j9nGI-0008WG-PT; Thu, 05 Mar 2020 09:57:50 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1j9nGG-0008WB-Kz for xen-devel@lists.xenproject.org; Thu, 05 Mar 2020 09:57:48 +0000 Received: from mail-wr1-x441.google.com (unknown [2a00:1450:4864:20::441]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id c3462500-5ec7-11ea-90c4-bc764e2007e4; Thu, 05 Mar 2020 09:57:46 +0000 (UTC) Received: by mail-wr1-x441.google.com with SMTP id x7so6211169wrr.0 for ; Thu, 05 Mar 2020 01:57:46 -0800 (PST) Received: from kbp1-lhp-F74019 (ip-109-41-64-183.web.vodafone.de. [109.41.64.183]) by smtp.gmail.com with ESMTPSA id s7sm5482757wrm.13.2020.03.05.01.57.42 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 05 Mar 2020 01:57:43 -0800 (PST) X-Inumbo-ID: c3462500-5ec7-11ea-90c4-bc764e2007e4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:from:to:cc:subject:message-id:mime-version:content-disposition :user-agent; bh=f9Y6dDiZbq3Gn6/Vwc6Qc20Po2wP0HmANub8fAzg6g8=; b=rtfYQklRbOxaAENaTuWCe6CkzEnVmx3gAKUBlp/Cp5gTdWQGqRUrjg/Xc/P0AcSmHP hfWrDKMYOYmCZOpfcEA1Sk1UoI8cVXeY61fWr1KkEvjxzPwD2PoCtKT2xI6gO6WLGGu4 +0P5MzC8KwLQ6XGzQ40LZRHMdzKTrlrtqWdZh3sGV8eZYxyee7XvylqsEbcudsX1qnPt bdz4VW38Icz6T7CEQBziH305gR+HZVL3DGZszVtAHPoqvSHELaoJ5wB8jAtMMfbTYogA Ml2n9jl3aOL1F8nHkRepCXPaZnDtizWqWA9PEcmyKPXaW+Upa5+SOzkTI+F16fKg5PDb bFng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:mime-version :content-disposition:user-agent; bh=f9Y6dDiZbq3Gn6/Vwc6Qc20Po2wP0HmANub8fAzg6g8=; b=jvDlJCh7j7Ml1Jjj2Z2yr4BoFRN7lTub/78zGTpx4lsUPe0P/NgNhFB3UbjHBWIB05 CmbWl0h757NN++PktGV417lIAlSgUkNtom/mYw0HfQBVm9/4KObcUJc4SZwNWJ2wfUMN cJr4MaMH0ub3wbuiVLXOLe4i0yEKq+ygsolBvOteNBZPxTLLuVqtDLjQh+NzURhhTwdX mPdilerZfdfvJKGUXwXVydCVwRJicQS28IE5+w0Ca4oFaT9Y6xuF+EC5qiCKcZlEsaXn 1uXrg0IDP4Kd/0rgMX/JIplizQHXeA3M0x7fRCGImN8OSL+nI9feq8sY/XErrLxiS26r wP4g== X-Gm-Message-State: ANhLgQ0ooHKdJzpxbTCfLDRPVngoA3R5zVC+NR8F9lDQrKnYf8oGnn1K iqMC332nUnOeO2xNpE9jHlc= X-Google-Smtp-Source: ADFU+vt/MwLeHri7D7QctDLpHVznpWp0AqylLKc06xPKFWIHWA46pB4Vht7+O53JTs2JmhcSIZ1yMg== X-Received: by 2002:a5d:68ce:: with SMTP id p14mr9115237wrw.315.1583402264478; Thu, 05 Mar 2020 01:57:44 -0800 (PST) Date: Thu, 5 Mar 2020 11:57:39 +0200 From: Yan Yankovskyi To: Boris Ostrovsky , Jan Beulich Message-ID: <20200305095739.GA26471@kbp1-lhp-F74019> MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.9.4 (2018-02-28) Subject: [Xen-devel] [PATCH] xen: Use evtchn_type_t as a type for event channels X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Juergen Gross , xen-devel@lists.xenproject.org, Stefano Stabellini , linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Make event channel functions pass event channel port using evtchn_port_t type. It eliminates signed <-> unsigned conversion. Also rename 'evtchn' variables to 'port' in case if 'port' is not ambiguous. Signed-off-by: Yan Yankovskyi --- drivers/xen/events/events_2l.c | 20 +- drivers/xen/events/events_base.c | 253 +++++++++++++------------- drivers/xen/events/events_fifo.c | 22 +-- drivers/xen/events/events_internal.h | 30 +-- drivers/xen/evtchn.c | 15 +- drivers/xen/pvcalls-back.c | 5 +- drivers/xen/pvcalls-front.c | 17 +- drivers/xen/xen-pciback/xenbus.c | 7 +- drivers/xen/xen-scsiback.c | 11 +- drivers/xen/xenbus/xenbus_client.c | 6 +- include/xen/events.h | 20 +- include/xen/interface/event_channel.h | 2 +- include/xen/xenbus.h | 5 +- 13 files changed, 212 insertions(+), 201 deletions(-) diff --git a/drivers/xen/events/events_2l.c b/drivers/xen/events/events_2l.c index 8edef51c92e5..a246e9fa189f 100644 --- a/drivers/xen/events/events_2l.c +++ b/drivers/xen/events/events_2l.c @@ -53,37 +53,37 @@ static void evtchn_2l_bind_to_cpu(struct irq_info *info= , unsigned cpu) set_bit(info->evtchn, BM(per_cpu(cpu_evtchn_mask, cpu))); } =20 -static void evtchn_2l_clear_pending(unsigned port) +static void evtchn_2l_clear_pending(evtchn_port_t port) { struct shared_info *s =3D HYPERVISOR_shared_info; sync_clear_bit(port, BM(&s->evtchn_pending[0])); } =20 -static void evtchn_2l_set_pending(unsigned port) +static void evtchn_2l_set_pending(evtchn_port_t port) { struct shared_info *s =3D HYPERVISOR_shared_info; sync_set_bit(port, BM(&s->evtchn_pending[0])); } =20 -static bool evtchn_2l_is_pending(unsigned port) +static bool evtchn_2l_is_pending(evtchn_port_t port) { struct shared_info *s =3D HYPERVISOR_shared_info; return sync_test_bit(port, BM(&s->evtchn_pending[0])); } =20 -static bool evtchn_2l_test_and_set_mask(unsigned port) +static bool evtchn_2l_test_and_set_mask(evtchn_port_t port) { struct shared_info *s =3D HYPERVISOR_shared_info; return sync_test_and_set_bit(port, BM(&s->evtchn_mask[0])); } =20 -static void evtchn_2l_mask(unsigned port) +static void evtchn_2l_mask(evtchn_port_t port) { struct shared_info *s =3D HYPERVISOR_shared_info; sync_set_bit(port, BM(&s->evtchn_mask[0])); } =20 -static void evtchn_2l_unmask(unsigned port) +static void evtchn_2l_unmask(evtchn_port_t port) { struct shared_info *s =3D HYPERVISOR_shared_info; unsigned int cpu =3D get_cpu(); @@ -173,9 +173,9 @@ static void evtchn_2l_handle_events(unsigned cpu) /* Timer interrupt has highest priority. */ irq =3D irq_from_virq(cpu, VIRQ_TIMER); if (irq !=3D -1) { - unsigned int evtchn =3D evtchn_from_irq(irq); - word_idx =3D evtchn / BITS_PER_LONG; - bit_idx =3D evtchn % BITS_PER_LONG; + evtchn_port_t port =3D evtchn_from_irq(irq); + word_idx =3D port / BITS_PER_LONG; + bit_idx =3D port % BITS_PER_LONG; if (active_evtchns(cpu, s, word_idx) & (1ULL << bit_idx)) generic_handle_irq(irq); } @@ -228,7 +228,7 @@ static void evtchn_2l_handle_events(unsigned cpu) =20 do { xen_ulong_t bits; - int port; + evtchn_port_t port; =20 bits =3D MASK_LSBS(pending_bits, bit_idx); =20 diff --git a/drivers/xen/events/events_base.c b/drivers/xen/events/events_b= ase.c index 499eff7d3f65..5b26509d773c 100644 --- a/drivers/xen/events/events_base.c +++ b/drivers/xen/events/events_base.c @@ -116,16 +116,16 @@ static void clear_evtchn_to_irq_all(void) } } =20 -static int set_evtchn_to_irq(unsigned evtchn, unsigned irq) +static int set_evtchn_to_irq(evtchn_port_t port, unsigned int irq) { unsigned row; unsigned col; =20 - if (evtchn >=3D xen_evtchn_max_channels()) + if (port >=3D xen_evtchn_max_channels()) return -EINVAL; =20 - row =3D EVTCHN_ROW(evtchn); - col =3D EVTCHN_COL(evtchn); + row =3D EVTCHN_ROW(port); + col =3D EVTCHN_COL(port); =20 if (evtchn_to_irq[row] =3D=3D NULL) { /* Unallocated irq entries return -1 anyway */ @@ -143,13 +143,13 @@ static int set_evtchn_to_irq(unsigned evtchn, unsigne= d irq) return 0; } =20 -int get_evtchn_to_irq(unsigned evtchn) +int get_evtchn_to_irq(evtchn_port_t port) { - if (evtchn >=3D xen_evtchn_max_channels()) + if (port >=3D xen_evtchn_max_channels()) return -1; - if (evtchn_to_irq[EVTCHN_ROW(evtchn)] =3D=3D NULL) + if (evtchn_to_irq[EVTCHN_ROW(port)] =3D=3D NULL) return -1; - return evtchn_to_irq[EVTCHN_ROW(evtchn)][EVTCHN_COL(evtchn)]; + return evtchn_to_irq[EVTCHN_ROW(port)][EVTCHN_COL(port)]; } =20 /* Get info for IRQ */ @@ -162,7 +162,7 @@ struct irq_info *info_for_irq(unsigned irq) static int xen_irq_info_common_setup(struct irq_info *info, unsigned irq, enum xen_irq_type type, - unsigned evtchn, + evtchn_port_t port, unsigned short cpu) { int ret; @@ -171,10 +171,10 @@ static int xen_irq_info_common_setup(struct irq_info = *info, =20 info->type =3D type; info->irq =3D irq; - info->evtchn =3D evtchn; + info->evtchn =3D port; info->cpu =3D cpu; =20 - ret =3D set_evtchn_to_irq(evtchn, irq); + ret =3D set_evtchn_to_irq(port, irq); if (ret < 0) return ret; =20 @@ -184,16 +184,16 @@ static int xen_irq_info_common_setup(struct irq_info = *info, } =20 static int xen_irq_info_evtchn_setup(unsigned irq, - unsigned evtchn) + evtchn_port_t port) { struct irq_info *info =3D info_for_irq(irq); =20 - return xen_irq_info_common_setup(info, irq, IRQT_EVTCHN, evtchn, 0); + return xen_irq_info_common_setup(info, irq, IRQT_EVTCHN, port, 0); } =20 static int xen_irq_info_ipi_setup(unsigned cpu, unsigned irq, - unsigned evtchn, + evtchn_port_t port, enum ipi_vector ipi) { struct irq_info *info =3D info_for_irq(irq); @@ -202,12 +202,12 @@ static int xen_irq_info_ipi_setup(unsigned cpu, =20 per_cpu(ipi_to_irq, cpu)[ipi] =3D irq; =20 - return xen_irq_info_common_setup(info, irq, IRQT_IPI, evtchn, 0); + return xen_irq_info_common_setup(info, irq, IRQT_IPI, port, 0); } =20 static int xen_irq_info_virq_setup(unsigned cpu, unsigned irq, - unsigned evtchn, + evtchn_port_t port, unsigned virq) { struct irq_info *info =3D info_for_irq(irq); @@ -216,11 +216,11 @@ static int xen_irq_info_virq_setup(unsigned cpu, =20 per_cpu(virq_to_irq, cpu)[virq] =3D irq; =20 - return xen_irq_info_common_setup(info, irq, IRQT_VIRQ, evtchn, 0); + return xen_irq_info_common_setup(info, irq, IRQT_VIRQ, port, 0); } =20 static int xen_irq_info_pirq_setup(unsigned irq, - unsigned evtchn, + evtchn_port_t port, unsigned pirq, unsigned gsi, uint16_t domid, @@ -233,7 +233,7 @@ static int xen_irq_info_pirq_setup(unsigned irq, info->u.pirq.domid =3D domid; info->u.pirq.flags =3D flags; =20 - return xen_irq_info_common_setup(info, irq, IRQT_PIRQ, evtchn, 0); + return xen_irq_info_common_setup(info, irq, IRQT_PIRQ, port, 0); } =20 static void xen_irq_info_cleanup(struct irq_info *info) @@ -253,9 +253,9 @@ unsigned int evtchn_from_irq(unsigned irq) return info_for_irq(irq)->evtchn; } =20 -unsigned irq_from_evtchn(unsigned int evtchn) +unsigned int irq_from_evtchn(evtchn_port_t port) { - return get_evtchn_to_irq(evtchn); + return get_evtchn_to_irq(port); } EXPORT_SYMBOL_GPL(irq_from_evtchn); =20 @@ -304,9 +304,9 @@ unsigned cpu_from_irq(unsigned irq) return info_for_irq(irq)->cpu; } =20 -unsigned int cpu_from_evtchn(unsigned int evtchn) +unsigned int cpu_from_evtchn(evtchn_port_t port) { - int irq =3D get_evtchn_to_irq(evtchn); + int irq =3D get_evtchn_to_irq(port); unsigned ret =3D 0; =20 if (irq !=3D -1) @@ -354,10 +354,10 @@ static void bind_evtchn_to_cpu(unsigned int chn, unsi= gned int cpu) */ void notify_remote_via_irq(int irq) { - int evtchn =3D evtchn_from_irq(irq); + evtchn_port_t port =3D evtchn_from_irq(irq); =20 - if (VALID_EVTCHN(evtchn)) - notify_remote_via_evtchn(evtchn); + if (VALID_EVTCHN(port)) + notify_remote_via_evtchn(port); } EXPORT_SYMBOL_GPL(notify_remote_via_irq); =20 @@ -445,7 +445,7 @@ static void xen_free_irq(unsigned irq) irq_free_desc(irq); } =20 -static void xen_evtchn_close(unsigned int port) +static void xen_evtchn_close(evtchn_port_t port) { struct evtchn_close close; =20 @@ -472,25 +472,25 @@ static void pirq_query_unmask(int irq) =20 static void eoi_pirq(struct irq_data *data) { - int evtchn =3D evtchn_from_irq(data->irq); + evtchn_port_t port =3D evtchn_from_irq(data->irq); struct physdev_eoi eoi =3D { .irq =3D pirq_from_irq(data->irq) }; int rc =3D 0; =20 - if (!VALID_EVTCHN(evtchn)) + if (!VALID_EVTCHN(port)) return; =20 if (unlikely(irqd_is_setaffinity_pending(data)) && likely(!irqd_irq_disabled(data))) { - int masked =3D test_and_set_mask(evtchn); + int masked =3D test_and_set_mask(port); =20 - clear_evtchn(evtchn); + clear_evtchn(port); =20 irq_move_masked_irq(data); =20 if (!masked) - unmask_evtchn(evtchn); + unmask_evtchn(port); } else - clear_evtchn(evtchn); + clear_evtchn(port); =20 if (pirq_needs_eoi(data->irq)) { rc =3D HYPERVISOR_physdev_op(PHYSDEVOP_eoi, &eoi); @@ -508,12 +508,12 @@ static unsigned int __startup_pirq(unsigned int irq) { struct evtchn_bind_pirq bind_pirq; struct irq_info *info =3D info_for_irq(irq); - int evtchn =3D evtchn_from_irq(irq); + evtchn_port_t port =3D evtchn_from_irq(irq); int rc; =20 BUG_ON(info->type !=3D IRQT_PIRQ); =20 - if (VALID_EVTCHN(evtchn)) + if (VALID_EVTCHN(port)) goto out; =20 bind_pirq.pirq =3D pirq_from_irq(irq); @@ -525,30 +525,30 @@ static unsigned int __startup_pirq(unsigned int irq) pr_warn("Failed to obtain physical IRQ %d\n", irq); return 0; } - evtchn =3D bind_pirq.port; + port =3D bind_pirq.port; =20 pirq_query_unmask(irq); =20 - rc =3D set_evtchn_to_irq(evtchn, irq); + rc =3D set_evtchn_to_irq(port, irq); if (rc) goto err; =20 - info->evtchn =3D evtchn; - bind_evtchn_to_cpu(evtchn, 0); + info->evtchn =3D port; + bind_evtchn_to_cpu(port, 0); =20 rc =3D xen_evtchn_port_setup(info); if (rc) goto err; =20 out: - unmask_evtchn(evtchn); + unmask_evtchn(port); eoi_pirq(irq_get_irq_data(irq)); =20 return 0; =20 err: pr_err("irq%d: Failed to set port to irq mapping (%d)\n", irq, rc); - xen_evtchn_close(evtchn); + xen_evtchn_close(port); return 0; } =20 @@ -561,15 +561,15 @@ static void shutdown_pirq(struct irq_data *data) { unsigned int irq =3D data->irq; struct irq_info *info =3D info_for_irq(irq); - unsigned evtchn =3D evtchn_from_irq(irq); + evtchn_port_t port =3D evtchn_from_irq(irq); =20 BUG_ON(info->type !=3D IRQT_PIRQ); =20 - if (!VALID_EVTCHN(evtchn)) + if (!VALID_EVTCHN(port)) return; =20 - mask_evtchn(evtchn); - xen_evtchn_close(evtchn); + mask_evtchn(port); + xen_evtchn_close(port); xen_irq_info_cleanup(info); } =20 @@ -601,7 +601,7 @@ EXPORT_SYMBOL_GPL(xen_irq_from_gsi); =20 static void __unbind_from_irq(unsigned int irq) { - int evtchn =3D evtchn_from_irq(irq); + evtchn_port_t port =3D evtchn_from_irq(irq); struct irq_info *info =3D irq_get_handler_data(irq); =20 if (info->refcnt > 0) { @@ -610,10 +610,10 @@ static void __unbind_from_irq(unsigned int irq) return; } =20 - if (VALID_EVTCHN(evtchn)) { + if (VALID_EVTCHN(port)) { unsigned int cpu =3D cpu_from_irq(irq); =20 - xen_evtchn_close(evtchn); + xen_evtchn_close(port); =20 switch (type_from_irq(irq)) { case IRQT_VIRQ: @@ -827,17 +827,17 @@ int xen_pirq_from_irq(unsigned irq) } EXPORT_SYMBOL_GPL(xen_pirq_from_irq); =20 -int bind_evtchn_to_irq(unsigned int evtchn) +int bind_evtchn_to_irq(evtchn_port_t port) { int irq; int ret; =20 - if (evtchn >=3D xen_evtchn_max_channels()) + if (port >=3D xen_evtchn_max_channels()) return -ENOMEM; =20 mutex_lock(&irq_mapping_update_lock); =20 - irq =3D get_evtchn_to_irq(evtchn); + irq =3D get_evtchn_to_irq(port); =20 if (irq =3D=3D -1) { irq =3D xen_allocate_irq_dynamic(); @@ -847,14 +847,14 @@ int bind_evtchn_to_irq(unsigned int evtchn) irq_set_chip_and_handler_name(irq, &xen_dynamic_chip, handle_edge_irq, "event"); =20 - ret =3D xen_irq_info_evtchn_setup(irq, evtchn); + ret =3D xen_irq_info_evtchn_setup(irq, port); if (ret < 0) { __unbind_from_irq(irq); irq =3D ret; goto out; } /* New interdomain events are bound to VCPU 0. */ - bind_evtchn_to_cpu(evtchn, 0); + bind_evtchn_to_cpu(port, 0); } else { struct irq_info *info =3D info_for_irq(irq); WARN_ON(info =3D=3D NULL || info->type !=3D IRQT_EVTCHN); @@ -870,8 +870,8 @@ EXPORT_SYMBOL_GPL(bind_evtchn_to_irq); static int bind_ipi_to_irq(unsigned int ipi, unsigned int cpu) { struct evtchn_bind_ipi bind_ipi; - int evtchn, irq; - int ret; + evtchn_port_t port; + int ret, irq; =20 mutex_lock(&irq_mapping_update_lock); =20 @@ -889,15 +889,15 @@ static int bind_ipi_to_irq(unsigned int ipi, unsigned= int cpu) if (HYPERVISOR_event_channel_op(EVTCHNOP_bind_ipi, &bind_ipi) !=3D 0) BUG(); - evtchn =3D bind_ipi.port; + port =3D bind_ipi.port; =20 - ret =3D xen_irq_info_ipi_setup(cpu, irq, evtchn, ipi); + ret =3D xen_irq_info_ipi_setup(cpu, irq, port, ipi); if (ret < 0) { __unbind_from_irq(irq); irq =3D ret; goto out; } - bind_evtchn_to_cpu(evtchn, cpu); + bind_evtchn_to_cpu(port, cpu); } else { struct irq_info *info =3D info_for_irq(irq); WARN_ON(info =3D=3D NULL || info->type !=3D IRQT_IPI); @@ -909,7 +909,7 @@ static int bind_ipi_to_irq(unsigned int ipi, unsigned i= nt cpu) } =20 int bind_interdomain_evtchn_to_irq(unsigned int remote_domain, - unsigned int remote_port) + evtchn_port_t remote_port) { struct evtchn_bind_interdomain bind_interdomain; int err; @@ -927,7 +927,8 @@ EXPORT_SYMBOL_GPL(bind_interdomain_evtchn_to_irq); static int find_virq(unsigned int virq, unsigned int cpu) { struct evtchn_status status; - int port, rc =3D -ENOENT; + evtchn_port_t port; + int rc =3D -ENOENT; =20 memset(&status, 0, sizeof(status)); for (port =3D 0; port < xen_evtchn_max_channels(); port++) { @@ -962,7 +963,8 @@ EXPORT_SYMBOL_GPL(xen_evtchn_nr_channels); int bind_virq_to_irq(unsigned int virq, unsigned int cpu, bool percpu) { struct evtchn_bind_virq bind_virq; - int evtchn, irq, ret; + evtchn_port_t port =3D xen_evtchn_max_channels(); + int irq, ret; =20 mutex_lock(&irq_mapping_update_lock); =20 @@ -985,22 +987,21 @@ int bind_virq_to_irq(unsigned int virq, unsigned int = cpu, bool percpu) ret =3D HYPERVISOR_event_channel_op(EVTCHNOP_bind_virq, &bind_virq); if (ret =3D=3D 0) - evtchn =3D bind_virq.port; + port =3D bind_virq.port; else { if (ret =3D=3D -EEXIST) ret =3D find_virq(virq, cpu); BUG_ON(ret < 0); - evtchn =3D ret; } =20 - ret =3D xen_irq_info_virq_setup(cpu, irq, evtchn, virq); + ret =3D xen_irq_info_virq_setup(cpu, irq, port, virq); if (ret < 0) { __unbind_from_irq(irq); irq =3D ret; goto out; } =20 - bind_evtchn_to_cpu(evtchn, cpu); + bind_evtchn_to_cpu(port, cpu); } else { struct irq_info *info =3D info_for_irq(irq); WARN_ON(info =3D=3D NULL || info->type !=3D IRQT_VIRQ); @@ -1019,14 +1020,14 @@ static void unbind_from_irq(unsigned int irq) mutex_unlock(&irq_mapping_update_lock); } =20 -int bind_evtchn_to_irqhandler(unsigned int evtchn, +int bind_evtchn_to_irqhandler(evtchn_port_t port, irq_handler_t handler, unsigned long irqflags, const char *devname, void *dev_id) { int irq, retval; =20 - irq =3D bind_evtchn_to_irq(evtchn); + irq =3D bind_evtchn_to_irq(port); if (irq < 0) return irq; retval =3D request_irq(irq, handler, irqflags, devname, dev_id); @@ -1040,7 +1041,7 @@ int bind_evtchn_to_irqhandler(unsigned int evtchn, EXPORT_SYMBOL_GPL(bind_evtchn_to_irqhandler); =20 int bind_interdomain_evtchn_to_irqhandler(unsigned int remote_domain, - unsigned int remote_port, + evtchn_port_t remote_port, irq_handler_t handler, unsigned long irqflags, const char *devname, @@ -1132,9 +1133,9 @@ int xen_set_irq_priority(unsigned irq, unsigned prior= ity) } EXPORT_SYMBOL_GPL(xen_set_irq_priority); =20 -int evtchn_make_refcounted(unsigned int evtchn) +int evtchn_make_refcounted(evtchn_port_t port) { - int irq =3D get_evtchn_to_irq(evtchn); + int irq =3D get_evtchn_to_irq(port); struct irq_info *info; =20 if (irq =3D=3D -1) @@ -1153,18 +1154,18 @@ int evtchn_make_refcounted(unsigned int evtchn) } EXPORT_SYMBOL_GPL(evtchn_make_refcounted); =20 -int evtchn_get(unsigned int evtchn) +int evtchn_get(evtchn_port_t port) { int irq; struct irq_info *info; int err =3D -ENOENT; =20 - if (evtchn >=3D xen_evtchn_max_channels()) + if (port >=3D xen_evtchn_max_channels()) return -EINVAL; =20 mutex_lock(&irq_mapping_update_lock); =20 - irq =3D get_evtchn_to_irq(evtchn); + irq =3D get_evtchn_to_irq(port); if (irq =3D=3D -1) goto done; =20 @@ -1186,9 +1187,9 @@ int evtchn_get(unsigned int evtchn) } EXPORT_SYMBOL_GPL(evtchn_get); =20 -void evtchn_put(unsigned int evtchn) +void evtchn_put(evtchn_port_t port) { - int irq =3D get_evtchn_to_irq(evtchn); + int irq =3D get_evtchn_to_irq(port); if (WARN_ON(irq =3D=3D -1)) return; unbind_from_irq(irq); @@ -1252,7 +1253,7 @@ void xen_hvm_evtchn_do_upcall(void) EXPORT_SYMBOL_GPL(xen_hvm_evtchn_do_upcall); =20 /* Rebind a new event channel to an existing irq. */ -void rebind_evtchn_irq(int evtchn, int irq) +void rebind_evtchn_irq(evtchn_port_t port, int irq) { struct irq_info *info =3D info_for_irq(irq); =20 @@ -1266,16 +1267,16 @@ void rebind_evtchn_irq(int evtchn, int irq) mutex_lock(&irq_mapping_update_lock); =20 /* After resume the irq<->evtchn mappings are all cleared out */ - BUG_ON(get_evtchn_to_irq(evtchn) !=3D -1); + BUG_ON(get_evtchn_to_irq(port) !=3D -1); /* Expect irq to have been bound before, so there should be a proper type */ BUG_ON(info->type =3D=3D IRQT_UNBOUND); =20 - (void)xen_irq_info_evtchn_setup(irq, evtchn); + (void)xen_irq_info_evtchn_setup(irq, port); =20 mutex_unlock(&irq_mapping_update_lock); =20 - bind_evtchn_to_cpu(evtchn, info->cpu); + bind_evtchn_to_cpu(port, info->cpu); /* This will be deferred until interrupt is processed */ irq_set_affinity(irq, cpumask_of(info->cpu)); =20 @@ -1284,26 +1285,26 @@ void rebind_evtchn_irq(int evtchn, int irq) } =20 /* Rebind an evtchn so that it gets delivered to a specific cpu */ -static int xen_rebind_evtchn_to_cpu(int evtchn, unsigned int tcpu) +static int xen_rebind_evtchn_to_cpu(evtchn_port_t port, unsigned int tcpu) { struct evtchn_bind_vcpu bind_vcpu; int masked; =20 - if (!VALID_EVTCHN(evtchn)) + if (!VALID_EVTCHN(port)) return -1; =20 if (!xen_support_evtchn_rebind()) return -1; =20 /* Send future instances of this interrupt to other vcpu. */ - bind_vcpu.port =3D evtchn; + bind_vcpu.port =3D port; bind_vcpu.vcpu =3D xen_vcpu_nr(tcpu); =20 /* * Mask the event while changing the VCPU binding to prevent * it being delivered on an unexpected VCPU. */ - masked =3D test_and_set_mask(evtchn); + masked =3D test_and_set_mask(port); =20 /* * If this fails, it usually just indicates that we're dealing with a @@ -1311,10 +1312,10 @@ static int xen_rebind_evtchn_to_cpu(int evtchn, uns= igned int tcpu) * it, but don't do the xenlinux-level rebind in that case. */ if (HYPERVISOR_event_channel_op(EVTCHNOP_bind_vcpu, &bind_vcpu) >=3D 0) - bind_evtchn_to_cpu(evtchn, tcpu); + bind_evtchn_to_cpu(port, tcpu); =20 if (!masked) - unmask_evtchn(evtchn); + unmask_evtchn(port); =20 return 0; } @@ -1342,39 +1343,39 @@ EXPORT_SYMBOL_GPL(xen_set_affinity_evtchn); =20 static void enable_dynirq(struct irq_data *data) { - int evtchn =3D evtchn_from_irq(data->irq); + evtchn_port_t port =3D evtchn_from_irq(data->irq); =20 - if (VALID_EVTCHN(evtchn)) - unmask_evtchn(evtchn); + if (VALID_EVTCHN(port)) + unmask_evtchn(port); } =20 static void disable_dynirq(struct irq_data *data) { - int evtchn =3D evtchn_from_irq(data->irq); + evtchn_port_t port =3D evtchn_from_irq(data->irq); =20 - if (VALID_EVTCHN(evtchn)) - mask_evtchn(evtchn); + if (VALID_EVTCHN(port)) + mask_evtchn(port); } =20 static void ack_dynirq(struct irq_data *data) { - int evtchn =3D evtchn_from_irq(data->irq); + evtchn_port_t port =3D evtchn_from_irq(data->irq); =20 - if (!VALID_EVTCHN(evtchn)) + if (!VALID_EVTCHN(port)) return; =20 if (unlikely(irqd_is_setaffinity_pending(data)) && likely(!irqd_irq_disabled(data))) { - int masked =3D test_and_set_mask(evtchn); + int masked =3D test_and_set_mask(port); =20 - clear_evtchn(evtchn); + clear_evtchn(port); =20 irq_move_masked_irq(data); =20 if (!masked) - unmask_evtchn(evtchn); + unmask_evtchn(port); } else - clear_evtchn(evtchn); + clear_evtchn(port); } =20 static void mask_ack_dynirq(struct irq_data *data) @@ -1385,16 +1386,16 @@ static void mask_ack_dynirq(struct irq_data *data) =20 static int retrigger_dynirq(struct irq_data *data) { - unsigned int evtchn =3D evtchn_from_irq(data->irq); + evtchn_port_t port =3D evtchn_from_irq(data->irq); int masked; =20 - if (!VALID_EVTCHN(evtchn)) + if (!VALID_EVTCHN(port)) return 0; =20 - masked =3D test_and_set_mask(evtchn); - set_evtchn(evtchn); + masked =3D test_and_set_mask(port); + set_evtchn(port); if (!masked) - unmask_evtchn(evtchn); + unmask_evtchn(port); =20 return 1; } @@ -1440,7 +1441,8 @@ static void restore_pirqs(void) static void restore_cpu_virqs(unsigned int cpu) { struct evtchn_bind_virq bind_virq; - int virq, irq, evtchn; + evtchn_port_t port; + int virq, irq; =20 for (virq =3D 0; virq < NR_VIRQS; virq++) { if ((irq =3D per_cpu(virq_to_irq, cpu)[virq]) =3D=3D -1) @@ -1454,18 +1456,19 @@ static void restore_cpu_virqs(unsigned int cpu) if (HYPERVISOR_event_channel_op(EVTCHNOP_bind_virq, &bind_virq) !=3D 0) BUG(); - evtchn =3D bind_virq.port; + port =3D bind_virq.port; =20 /* Record the new mapping. */ - (void)xen_irq_info_virq_setup(cpu, irq, evtchn, virq); - bind_evtchn_to_cpu(evtchn, cpu); + (void)xen_irq_info_virq_setup(cpu, irq, port, virq); + bind_evtchn_to_cpu(port, cpu); } } =20 static void restore_cpu_ipis(unsigned int cpu) { struct evtchn_bind_ipi bind_ipi; - int ipi, irq, evtchn; + evtchn_port_t port; + int ipi, irq; =20 for (ipi =3D 0; ipi < XEN_NR_IPIS; ipi++) { if ((irq =3D per_cpu(ipi_to_irq, cpu)[ipi]) =3D=3D -1) @@ -1478,38 +1481,38 @@ static void restore_cpu_ipis(unsigned int cpu) if (HYPERVISOR_event_channel_op(EVTCHNOP_bind_ipi, &bind_ipi) !=3D 0) BUG(); - evtchn =3D bind_ipi.port; + port =3D bind_ipi.port; =20 /* Record the new mapping. */ - (void)xen_irq_info_ipi_setup(cpu, irq, evtchn, ipi); - bind_evtchn_to_cpu(evtchn, cpu); + (void)xen_irq_info_ipi_setup(cpu, irq, port, ipi); + bind_evtchn_to_cpu(port, cpu); } } =20 /* Clear an irq's pending state, in preparation for polling on it */ void xen_clear_irq_pending(int irq) { - int evtchn =3D evtchn_from_irq(irq); + evtchn_port_t port =3D evtchn_from_irq(irq); =20 - if (VALID_EVTCHN(evtchn)) - clear_evtchn(evtchn); + if (VALID_EVTCHN(port)) + clear_evtchn(port); } EXPORT_SYMBOL(xen_clear_irq_pending); void xen_set_irq_pending(int irq) { - int evtchn =3D evtchn_from_irq(irq); + evtchn_port_t port =3D evtchn_from_irq(irq); =20 - if (VALID_EVTCHN(evtchn)) - set_evtchn(evtchn); + if (VALID_EVTCHN(port)) + set_evtchn(port); } =20 bool xen_test_irq_pending(int irq) { - int evtchn =3D evtchn_from_irq(irq); + evtchn_port_t port =3D evtchn_from_irq(irq); bool ret =3D false; =20 - if (VALID_EVTCHN(evtchn)) - ret =3D test_evtchn(evtchn); + if (VALID_EVTCHN(port)) + ret =3D test_evtchn(port); =20 return ret; } @@ -1518,14 +1521,14 @@ bool xen_test_irq_pending(int irq) * the irq will be disabled so it won't deliver an interrupt. */ void xen_poll_irq_timeout(int irq, u64 timeout) { - evtchn_port_t evtchn =3D evtchn_from_irq(irq); + evtchn_port_t port =3D evtchn_from_irq(irq); =20 - if (VALID_EVTCHN(evtchn)) { + if (VALID_EVTCHN(port)) { struct sched_poll poll; =20 poll.nr_ports =3D 1; poll.timeout =3D timeout; - set_xen_guest_handle(poll.ports, &evtchn); + set_xen_guest_handle(poll.ports, &port); =20 if (HYPERVISOR_sched_op(SCHEDOP_poll, &poll) !=3D 0) BUG(); @@ -1667,7 +1670,7 @@ module_param(fifo_events, bool, 0); void __init xen_init_IRQ(void) { int ret =3D -EINVAL; - unsigned int evtchn; + evtchn_port_t port; =20 if (fifo_events) ret =3D xen_evtchn_fifo_init(); @@ -1679,8 +1682,8 @@ void __init xen_init_IRQ(void) BUG_ON(!evtchn_to_irq); =20 /* No event channels are 'live' right now. */ - for (evtchn =3D 0; evtchn < xen_evtchn_nr_channels(); evtchn++) - mask_evtchn(evtchn); + for (port =3D 0; port < xen_evtchn_nr_channels(); port++) + mask_evtchn(port); =20 pirq_needs_eoi =3D pirq_needs_eoi_flag; =20 diff --git a/drivers/xen/events/events_fifo.c b/drivers/xen/events/events_f= ifo.c index 76b318e88382..c60ee0450173 100644 --- a/drivers/xen/events/events_fifo.c +++ b/drivers/xen/events/events_fifo.c @@ -82,7 +82,7 @@ static unsigned event_array_pages __read_mostly; =20 #endif =20 -static inline event_word_t *event_word_from_port(unsigned port) +static inline event_word_t *event_word_from_port(evtchn_port_t port) { unsigned i =3D port / EVENT_WORDS_PER_PAGE; =20 @@ -140,7 +140,7 @@ static void init_array_page(event_word_t *array_page) =20 static int evtchn_fifo_setup(struct irq_info *info) { - unsigned port =3D info->evtchn; + evtchn_port_t port =3D info->evtchn; unsigned new_array_pages; int ret; =20 @@ -191,37 +191,37 @@ static void evtchn_fifo_bind_to_cpu(struct irq_info *= info, unsigned cpu) /* no-op */ } =20 -static void evtchn_fifo_clear_pending(unsigned port) +static void evtchn_fifo_clear_pending(evtchn_port_t port) { event_word_t *word =3D event_word_from_port(port); sync_clear_bit(EVTCHN_FIFO_BIT(PENDING, word), BM(word)); } =20 -static void evtchn_fifo_set_pending(unsigned port) +static void evtchn_fifo_set_pending(evtchn_port_t port) { event_word_t *word =3D event_word_from_port(port); sync_set_bit(EVTCHN_FIFO_BIT(PENDING, word), BM(word)); } =20 -static bool evtchn_fifo_is_pending(unsigned port) +static bool evtchn_fifo_is_pending(evtchn_port_t port) { event_word_t *word =3D event_word_from_port(port); return sync_test_bit(EVTCHN_FIFO_BIT(PENDING, word), BM(word)); } =20 -static bool evtchn_fifo_test_and_set_mask(unsigned port) +static bool evtchn_fifo_test_and_set_mask(evtchn_port_t port) { event_word_t *word =3D event_word_from_port(port); return sync_test_and_set_bit(EVTCHN_FIFO_BIT(MASKED, word), BM(word)); } =20 -static void evtchn_fifo_mask(unsigned port) +static void evtchn_fifo_mask(evtchn_port_t port) { event_word_t *word =3D event_word_from_port(port); sync_set_bit(EVTCHN_FIFO_BIT(MASKED, word), BM(word)); } =20 -static bool evtchn_fifo_is_masked(unsigned port) +static bool evtchn_fifo_is_masked(evtchn_port_t port) { event_word_t *word =3D event_word_from_port(port); return sync_test_bit(EVTCHN_FIFO_BIT(MASKED, word), BM(word)); @@ -242,7 +242,7 @@ static void clear_masked(volatile event_word_t *word) } while (w !=3D old); } =20 -static void evtchn_fifo_unmask(unsigned port) +static void evtchn_fifo_unmask(evtchn_port_t port) { event_word_t *word =3D event_word_from_port(port); =20 @@ -270,7 +270,7 @@ static uint32_t clear_linked(volatile event_word_t *wor= d) return w & EVTCHN_FIFO_LINK_MASK; } =20 -static void handle_irq_for_port(unsigned port) +static void handle_irq_for_port(evtchn_port_t port) { int irq; =20 @@ -286,7 +286,7 @@ static void consume_one_event(unsigned cpu, { struct evtchn_fifo_queue *q =3D &per_cpu(cpu_queue, cpu); uint32_t head; - unsigned port; + evtchn_port_t port; event_word_t *word; =20 head =3D q->head[priority]; diff --git a/drivers/xen/events/events_internal.h b/drivers/xen/events/even= ts_internal.h index 82938cff6c7a..f403cf25d45e 100644 --- a/drivers/xen/events/events_internal.h +++ b/drivers/xen/events/events_internal.h @@ -33,7 +33,7 @@ struct irq_info { int refcnt; enum xen_irq_type type; /* type */ unsigned irq; - unsigned int evtchn; /* event channel */ + evtchn_port_t evtchn; /* event channel */ unsigned short cpu; /* cpu bound */ =20 union { @@ -60,12 +60,12 @@ struct evtchn_ops { int (*setup)(struct irq_info *info); void (*bind_to_cpu)(struct irq_info *info, unsigned cpu); =20 - void (*clear_pending)(unsigned port); - void (*set_pending)(unsigned port); - bool (*is_pending)(unsigned port); - bool (*test_and_set_mask)(unsigned port); - void (*mask)(unsigned port); - void (*unmask)(unsigned port); + void (*clear_pending)(evtchn_port_t port); + void (*set_pending)(evtchn_port_t port); + bool (*is_pending)(evtchn_port_t port); + bool (*test_and_set_mask)(evtchn_port_t port); + void (*mask)(evtchn_port_t port); + void (*unmask)(evtchn_port_t port); =20 void (*handle_events)(unsigned cpu); void (*resume)(void); @@ -74,11 +74,11 @@ struct evtchn_ops { extern const struct evtchn_ops *evtchn_ops; =20 extern int **evtchn_to_irq; -int get_evtchn_to_irq(unsigned int evtchn); +int get_evtchn_to_irq(evtchn_port_t port); =20 struct irq_info *info_for_irq(unsigned irq); unsigned cpu_from_irq(unsigned irq); -unsigned cpu_from_evtchn(unsigned int evtchn); +unsigned int cpu_from_evtchn(evtchn_port_t port); =20 static inline unsigned xen_evtchn_max_channels(void) { @@ -102,32 +102,32 @@ static inline void xen_evtchn_port_bind_to_cpu(struct= irq_info *info, evtchn_ops->bind_to_cpu(info, cpu); } =20 -static inline void clear_evtchn(unsigned port) +static inline void clear_evtchn(evtchn_port_t port) { evtchn_ops->clear_pending(port); } =20 -static inline void set_evtchn(unsigned port) +static inline void set_evtchn(evtchn_port_t port) { evtchn_ops->set_pending(port); } =20 -static inline bool test_evtchn(unsigned port) +static inline bool test_evtchn(evtchn_port_t port) { return evtchn_ops->is_pending(port); } =20 -static inline bool test_and_set_mask(unsigned port) +static inline bool test_and_set_mask(evtchn_port_t port) { return evtchn_ops->test_and_set_mask(port); } =20 -static inline void mask_evtchn(unsigned port) +static inline void mask_evtchn(evtchn_port_t port) { return evtchn_ops->mask(port); } =20 -static inline void unmask_evtchn(unsigned port) +static inline void unmask_evtchn(evtchn_port_t port) { return evtchn_ops->unmask(port); } diff --git a/drivers/xen/evtchn.c b/drivers/xen/evtchn.c index 052b55a14ebc..31a83d5dfebc 100644 --- a/drivers/xen/evtchn.c +++ b/drivers/xen/evtchn.c @@ -83,7 +83,7 @@ struct per_user_data { struct user_evtchn { struct rb_node node; struct per_user_data *user; - unsigned port; + evtchn_port_t port; bool enabled; }; =20 @@ -138,7 +138,8 @@ static void del_evtchn(struct per_user_data *u, struct = user_evtchn *evtchn) kfree(evtchn); } =20 -static struct user_evtchn *find_evtchn(struct per_user_data *u, unsigned p= ort) +static struct user_evtchn *find_evtchn(struct per_user_data *u, + evtchn_port_t port) { struct rb_node *node =3D u->evtchns.rb_node; =20 @@ -163,7 +164,7 @@ static irqreturn_t evtchn_interrupt(int irq, void *data) struct per_user_data *u =3D evtchn->user; =20 WARN(!evtchn->enabled, - "Interrupt for port %d, but apparently not enabled; per-user %p\n", + "Interrupt for port %u, but apparently not enabled; per-user %p\n", evtchn->port, u); =20 disable_irq_nosync(irq); @@ -286,7 +287,7 @@ static ssize_t evtchn_write(struct file *file, const ch= ar __user *buf, mutex_lock(&u->bind_mutex); =20 for (i =3D 0; i < (count/sizeof(evtchn_port_t)); i++) { - unsigned port =3D kbuf[i]; + evtchn_port_t port =3D kbuf[i]; struct user_evtchn *evtchn; =20 evtchn =3D find_evtchn(u, port); @@ -361,7 +362,7 @@ static int evtchn_resize_ring(struct per_user_data *u) return 0; } =20 -static int evtchn_bind_to_user(struct per_user_data *u, int port) +static int evtchn_bind_to_user(struct per_user_data *u, evtchn_port_t port) { struct user_evtchn *evtchn; struct evtchn_close close; @@ -423,13 +424,13 @@ static void evtchn_unbind_from_user(struct per_user_d= ata *u, =20 static DEFINE_PER_CPU(int, bind_last_selected_cpu); =20 -static void evtchn_bind_interdom_next_vcpu(int evtchn) +static void evtchn_bind_interdom_next_vcpu(evtchn_port_t port) { unsigned int selected_cpu, irq; struct irq_desc *desc; unsigned long flags; =20 - irq =3D irq_from_evtchn(evtchn); + irq =3D irq_from_evtchn(port); desc =3D irq_to_desc(irq); =20 if (!desc) diff --git a/drivers/xen/pvcalls-back.c b/drivers/xen/pvcalls-back.c index c57c71b7d53d..cf4ce3e9358d 100644 --- a/drivers/xen/pvcalls-back.c +++ b/drivers/xen/pvcalls-back.c @@ -300,7 +300,7 @@ static struct sock_mapping *pvcalls_new_active_socket( struct pvcalls_fedata *fedata, uint64_t id, grant_ref_t ref, - uint32_t evtchn, + evtchn_port_t evtchn, struct socket *sock) { int ret; @@ -905,7 +905,8 @@ static irqreturn_t pvcalls_back_conn_event(int irq, voi= d *sock_map) =20 static int backend_connect(struct xenbus_device *dev) { - int err, evtchn; + int err; + evtchn_port_t evtchn; grant_ref_t ring_ref; struct pvcalls_fedata *fedata =3D NULL; =20 diff --git a/drivers/xen/pvcalls-front.c b/drivers/xen/pvcalls-front.c index 57592a6b5c9e..a7b6fff29e73 100644 --- a/drivers/xen/pvcalls-front.c +++ b/drivers/xen/pvcalls-front.c @@ -368,12 +368,11 @@ static int alloc_active_ring(struct sock_mapping *map) return -ENOMEM; } =20 -static int create_active(struct sock_mapping *map, int *evtchn) +static int create_active(struct sock_mapping *map, evtchn_port_t *evtchn) { void *bytes; - int ret =3D -ENOMEM, irq =3D -1, i; + int ret =3D -ENOMEM, irq =3D -1, free_evtchn =3D 0, i; =20 - *evtchn =3D -1; init_waitqueue_head(&map->active.inflight_conn_req); =20 bytes =3D map->active.data.in; @@ -389,6 +388,7 @@ static int create_active(struct sock_mapping *map, int = *evtchn) ret =3D xenbus_alloc_evtchn(pvcalls_front_dev, evtchn); if (ret) goto out_error; + free_evtchn =3D 1; irq =3D bind_evtchn_to_irqhandler(*evtchn, pvcalls_front_conn_handler, 0, "pvcalls-frontend", map); if (irq < 0) { @@ -404,7 +404,7 @@ static int create_active(struct sock_mapping *map, int = *evtchn) return 0; =20 out_error: - if (*evtchn >=3D 0) + if (free_evtchn) xenbus_free_evtchn(pvcalls_front_dev, *evtchn); return ret; } @@ -415,7 +415,8 @@ int pvcalls_front_connect(struct socket *sock, struct s= ockaddr *addr, struct pvcalls_bedata *bedata; struct sock_mapping *map =3D NULL; struct xen_pvcalls_request *req; - int notify, req_id, ret, evtchn; + int notify, req_id, ret; + evtchn_port_t evtchn; =20 if (addr->sa_family !=3D AF_INET || sock->type !=3D SOCK_STREAM) return -EOPNOTSUPP; @@ -765,7 +766,8 @@ int pvcalls_front_accept(struct socket *sock, struct so= cket *newsock, int flags) struct sock_mapping *map; struct sock_mapping *map2 =3D NULL; struct xen_pvcalls_request *req; - int notify, req_id, ret, evtchn, nonblock; + int notify, req_id, ret, nonblock; + evtchn_port_t evtchn; =20 map =3D pvcalls_enter_sock(sock); if (IS_ERR(map)) @@ -1125,7 +1127,8 @@ static int pvcalls_front_remove(struct xenbus_device = *dev) static int pvcalls_front_probe(struct xenbus_device *dev, const struct xenbus_device_id *id) { - int ret =3D -ENOMEM, evtchn, i; + int ret =3D -ENOMEM, i; + evtchn_port_t evtchn; unsigned int max_page_order, function_calls, len; char *versions; grant_ref_t gref_head =3D 0; diff --git a/drivers/xen/xen-pciback/xenbus.c b/drivers/xen/xen-pciback/xen= bus.c index 833b2d2c4318..f2115587855f 100644 --- a/drivers/xen/xen-pciback/xenbus.c +++ b/drivers/xen/xen-pciback/xenbus.c @@ -105,13 +105,13 @@ static void free_pdev(struct xen_pcibk_device *pdev) } =20 static int xen_pcibk_do_attach(struct xen_pcibk_device *pdev, int gnt_ref, - int remote_evtchn) + evtchn_port_t remote_evtchn) { int err =3D 0; void *vaddr; =20 dev_dbg(&pdev->xdev->dev, - "Attaching to frontend resources - gnt_ref=3D%d evtchn=3D%d\n", + "Attaching to frontend resources - gnt_ref=3D%d evtchn=3D%u\n", gnt_ref, remote_evtchn); =20 err =3D xenbus_map_ring_valloc(pdev->xdev, &gnt_ref, 1, &vaddr); @@ -142,7 +142,8 @@ static int xen_pcibk_do_attach(struct xen_pcibk_device = *pdev, int gnt_ref, static int xen_pcibk_attach(struct xen_pcibk_device *pdev) { int err =3D 0; - int gnt_ref, remote_evtchn; + int gnt_ref; + evtchn_port_t remote_evtchn; char *magic =3D NULL; =20 =20 diff --git a/drivers/xen/xen-scsiback.c b/drivers/xen/xen-scsiback.c index ba0942e481bc..03d7180a8ae7 100644 --- a/drivers/xen/xen-scsiback.c +++ b/drivers/xen/xen-scsiback.c @@ -813,7 +813,7 @@ static irqreturn_t scsiback_irq_fn(int irq, void *dev_i= d) } =20 static int scsiback_init_sring(struct vscsibk_info *info, grant_ref_t ring= _ref, - evtchn_port_t evtchn) + evtchn_port_t port) { void *area; struct vscsiif_sring *sring; @@ -829,7 +829,7 @@ static int scsiback_init_sring(struct vscsibk_info *inf= o, grant_ref_t ring_ref, sring =3D (struct vscsiif_sring *)area; BACK_RING_INIT(&info->ring, sring, PAGE_SIZE); =20 - err =3D bind_interdomain_evtchn_to_irq(info->domid, evtchn); + err =3D bind_interdomain_evtchn_to_irq(info->domid, port); if (err < 0) goto unmap_page; =20 @@ -854,18 +854,19 @@ static int scsiback_init_sring(struct vscsibk_info *i= nfo, grant_ref_t ring_ref, static int scsiback_map(struct vscsibk_info *info) { struct xenbus_device *dev =3D info->dev; - unsigned int ring_ref, evtchn; + unsigned int ring_ref; + evtchn_port_t port; int err; =20 err =3D xenbus_gather(XBT_NIL, dev->otherend, "ring-ref", "%u", &ring_ref, - "event-channel", "%u", &evtchn, NULL); + "event-channel", "%u", &port, NULL); if (err) { xenbus_dev_fatal(dev, err, "reading %s ring", dev->otherend); return err; } =20 - return scsiback_init_sring(info, ring_ref, evtchn); + return scsiback_init_sring(info, ring_ref, port); } =20 /* diff --git a/drivers/xen/xenbus/xenbus_client.c b/drivers/xen/xenbus/xenbus= _client.c index e17ca8156171..1f87514e4efc 100644 --- a/drivers/xen/xenbus/xenbus_client.c +++ b/drivers/xen/xenbus/xenbus_client.c @@ -391,7 +391,7 @@ EXPORT_SYMBOL_GPL(xenbus_grant_ring); * error, the device will switch to XenbusStateClosing, and the error will= be * saved in the store. */ -int xenbus_alloc_evtchn(struct xenbus_device *dev, int *port) +int xenbus_alloc_evtchn(struct xenbus_device *dev, evtchn_port_t *port) { struct evtchn_alloc_unbound alloc_unbound; int err; @@ -414,7 +414,7 @@ EXPORT_SYMBOL_GPL(xenbus_alloc_evtchn); /** * Free an existing event channel. Returns 0 on success or -errno on error. */ -int xenbus_free_evtchn(struct xenbus_device *dev, int port) +int xenbus_free_evtchn(struct xenbus_device *dev, evtchn_port_t port) { struct evtchn_close close; int err; @@ -423,7 +423,7 @@ int xenbus_free_evtchn(struct xenbus_device *dev, int p= ort) =20 err =3D HYPERVISOR_event_channel_op(EVTCHNOP_close, &close); if (err) - xenbus_dev_error(dev, err, "freeing event channel %d", port); + xenbus_dev_error(dev, err, "freeing event channel %u", port); =20 return err; } diff --git a/include/xen/events.h b/include/xen/events.h index c0e6a0598397..5fac55ddd6d3 100644 --- a/include/xen/events.h +++ b/include/xen/events.h @@ -14,8 +14,8 @@ =20 unsigned xen_evtchn_nr_channels(void); =20 -int bind_evtchn_to_irq(unsigned int evtchn); -int bind_evtchn_to_irqhandler(unsigned int evtchn, +int bind_evtchn_to_irq(evtchn_port_t port); +int bind_evtchn_to_irqhandler(evtchn_port_t port, irq_handler_t handler, unsigned long irqflags, const char *devname, void *dev_id); @@ -31,9 +31,9 @@ int bind_ipi_to_irqhandler(enum ipi_vector ipi, const char *devname, void *dev_id); int bind_interdomain_evtchn_to_irq(unsigned int remote_domain, - unsigned int remote_port); + evtchn_port_t remote_port); int bind_interdomain_evtchn_to_irqhandler(unsigned int remote_domain, - unsigned int remote_port, + evtchn_port_t remote_port, irq_handler_t handler, unsigned long irqflags, const char *devname, @@ -54,15 +54,15 @@ int xen_set_irq_priority(unsigned irq, unsigned priorit= y); /* * Allow extra references to event channels exposed to userspace by evtchn */ -int evtchn_make_refcounted(unsigned int evtchn); -int evtchn_get(unsigned int evtchn); -void evtchn_put(unsigned int evtchn); +int evtchn_make_refcounted(evtchn_port_t port); +int evtchn_get(evtchn_port_t port); +void evtchn_put(evtchn_port_t port); =20 void xen_send_IPI_one(unsigned int cpu, enum ipi_vector vector); -void rebind_evtchn_irq(int evtchn, int irq); +void rebind_evtchn_irq(evtchn_port_t port, int irq); int xen_set_affinity_evtchn(struct irq_desc *desc, unsigned int tcpu); =20 -static inline void notify_remote_via_evtchn(int port) +static inline void notify_remote_via_evtchn(evtchn_port_t port) { struct evtchn_send send =3D { .port =3D port }; (void)HYPERVISOR_event_channel_op(EVTCHNOP_send, &send); @@ -86,7 +86,7 @@ void xen_poll_irq(int irq); void xen_poll_irq_timeout(int irq, u64 timeout); =20 /* Determine the IRQ which is bound to an event channel */ -unsigned irq_from_evtchn(unsigned int evtchn); +unsigned int irq_from_evtchn(evtchn_port_t port); int irq_from_virq(unsigned int cpu, unsigned int virq); unsigned int evtchn_from_irq(unsigned irq); =20 diff --git a/include/xen/interface/event_channel.h b/include/xen/interface/= event_channel.h index 45650c9a06d5..cf80e338fbb0 100644 --- a/include/xen/interface/event_channel.h +++ b/include/xen/interface/event_channel.h @@ -220,7 +220,7 @@ struct evtchn_expand_array { #define EVTCHNOP_set_priority 13 struct evtchn_set_priority { /* IN parameters. */ - uint32_t port; + evtchn_port_t port; uint32_t priority; }; =20 diff --git a/include/xen/xenbus.h b/include/xen/xenbus.h index 89a889585ba0..bc7509b52fea 100644 --- a/include/xen/xenbus.h +++ b/include/xen/xenbus.h @@ -44,6 +44,7 @@ #include #include #include +#include #include #include =20 @@ -218,8 +219,8 @@ int xenbus_unmap_ring(struct xenbus_device *dev, grant_handle_t *handles, unsigned int nr_handles, unsigned long *vaddrs); =20 -int xenbus_alloc_evtchn(struct xenbus_device *dev, int *port); -int xenbus_free_evtchn(struct xenbus_device *dev, int port); +int xenbus_alloc_evtchn(struct xenbus_device *dev, evtchn_port_t *port); +int xenbus_free_evtchn(struct xenbus_device *dev, evtchn_port_t port); =20 enum xenbus_state xenbus_read_driver_state(const char *path); =20 --=20 2.17.1 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel