[Xen-devel] [PATCH] xen: Use 'unsigned int' instead of 'unsigned'

2020-02-29 Thread Yan Yankovskyi
Resolve the following warning, reported by checkpatch.pl:
WARNING: Prefer 'unsigned int' to bare use of 'unsigned'

No functional change.

Signed-off-by: Yan Yankovskyi 
---
 drivers/xen/events/events_2l.c   | 18 ++---
 drivers/xen/events/events_base.c | 92 
 drivers/xen/events/events_fifo.c | 52 +++---
 drivers/xen/events/events_internal.h | 46 ++--
 drivers/xen/evtchn.c |  7 +-
 drivers/xen/grant-table.c| 12 ++--
 drivers/xen/mcelog.c |  6 +-
 drivers/xen/privcmd.c| 10 +--
 drivers/xen/xen-scsiback.c   |  8 +--
 drivers/xen/xenbus/xenbus_dev_frontend.c |  9 +--
 drivers/xen/xlate_mmu.c  |  4 +-
 11 files changed, 133 insertions(+), 131 deletions(-)

diff --git a/drivers/xen/events/events_2l.c b/drivers/xen/events/events_2l.c
index 8edef51c92e5..38fa771fe3de 100644
--- a/drivers/xen/events/events_2l.c
+++ b/drivers/xen/events/events_2l.c
@@ -42,48 +42,48 @@
 
 static DEFINE_PER_CPU(xen_ulong_t [EVTCHN_MASK_SIZE], cpu_evtchn_mask);
 
-static unsigned evtchn_2l_max_channels(void)
+static unsigned int evtchn_2l_max_channels(void)
 {
return EVTCHN_2L_NR_CHANNELS;
 }
 
-static void evtchn_2l_bind_to_cpu(struct irq_info *info, unsigned cpu)
+static void evtchn_2l_bind_to_cpu(struct irq_info *info, unsigned int cpu)
 {
clear_bit(info->evtchn, BM(per_cpu(cpu_evtchn_mask, info->cpu)));
set_bit(info->evtchn, BM(per_cpu(cpu_evtchn_mask, cpu)));
 }
 
-static void evtchn_2l_clear_pending(unsigned port)
+static void evtchn_2l_clear_pending(unsigned int port)
 {
struct shared_info *s = HYPERVISOR_shared_info;
sync_clear_bit(port, BM(&s->evtchn_pending[0]));
 }
 
-static void evtchn_2l_set_pending(unsigned port)
+static void evtchn_2l_set_pending(unsigned int port)
 {
struct shared_info *s = HYPERVISOR_shared_info;
sync_set_bit(port, BM(&s->evtchn_pending[0]));
 }
 
-static bool evtchn_2l_is_pending(unsigned port)
+static bool evtchn_2l_is_pending(unsigned int port)
 {
struct shared_info *s = HYPERVISOR_shared_info;
return sync_test_bit(port, BM(&s->evtchn_pending[0]));
 }
 
-static bool evtchn_2l_test_and_set_mask(unsigned port)
+static bool evtchn_2l_test_and_set_mask(unsigned int port)
 {
struct shared_info *s = HYPERVISOR_shared_info;
return sync_test_and_set_bit(port, BM(&s->evtchn_mask[0]));
 }
 
-static void evtchn_2l_mask(unsigned port)
+static void evtchn_2l_mask(unsigned int port)
 {
struct shared_info *s = HYPERVISOR_shared_info;
sync_set_bit(port, BM(&s->evtchn_mask[0]));
 }
 
-static void evtchn_2l_unmask(unsigned port)
+static void evtchn_2l_unmask(unsigned int port)
 {
struct shared_info *s = HYPERVISOR_shared_info;
unsigned int cpu = get_cpu();
@@ -159,7 +159,7 @@ static inline xen_ulong_t active_evtchns(unsigned int cpu,
  * a bitset of words which contain pending event bits.  The second
  * level is a bitset of pending events themselves.
  */
-static void evtchn_2l_handle_events(unsigned cpu)
+static void evtchn_2l_handle_events(unsigned int cpu)
 {
int irq;
xen_ulong_t pending_words;
diff --git a/drivers/xen/events/events_base.c b/drivers/xen/events/events_base.c
index 499eff7d3f65..6388d07161ea 100644
--- a/drivers/xen/events/events_base.c
+++ b/drivers/xen/events/events_base.c
@@ -82,7 +82,7 @@ int **evtchn_to_irq;
 #ifdef CONFIG_X86
 static unsigned long *pirq_eoi_map;
 #endif
-static bool (*pirq_needs_eoi)(unsigned irq);
+static bool (*pirq_needs_eoi)(unsigned int irq);
 
 #define EVTCHN_ROW(e)  (e / (PAGE_SIZE/sizeof(**evtchn_to_irq)))
 #define EVTCHN_COL(e)  (e % (PAGE_SIZE/sizeof(**evtchn_to_irq)))
@@ -97,9 +97,9 @@ static struct irq_chip xen_pirq_chip;
 static void enable_dynirq(struct irq_data *data);
 static void disable_dynirq(struct irq_data *data);
 
-static void clear_evtchn_to_irq_row(unsigned row)
+static void clear_evtchn_to_irq_row(unsigned int row)
 {
-   unsigned col;
+   unsigned int col;
 
for (col = 0; col < EVTCHN_PER_ROW; col++)
evtchn_to_irq[row][col] = -1;
@@ -107,7 +107,7 @@ static void clear_evtchn_to_irq_row(unsigned row)
 
 static void clear_evtchn_to_irq_all(void)
 {
-   unsigned row;
+   unsigned int row;
 
for (row = 0; row < EVTCHN_ROW(xen_evtchn_max_channels()); row++) {
if (evtchn_to_irq[row] == NULL)
@@ -116,10 +116,10 @@ static void clear_evtchn_to_irq_all(void)
}
 }
 
-static int set_evtchn_to_irq(unsigned evtchn, unsigned irq)
+static int set_evtchn_to_irq(unsigned int evtchn, unsigned int irq)
 {
-   unsigned row;
-   unsigned col;
+   unsigned int row;
+   unsigned int col;
 
if (evtchn >= xen_evtchn_max_channels())
return -EINVAL;
@@ -143,7 +143,7 @@ static int set

Re: [Xen-devel] [PATCH] xen: Use 'unsigned int' instead of 'unsigned'

2020-03-02 Thread Yan Yankovskyi
On Mon, Mar 2, 2020 at 10:11 AM Jan Beulich  wrote:
> ... evtchn_port_t here and elsewhere.

There are some interfaces with signed int as a type for port, e.g.
in include/xen/events.h.
Should I create additional patch to resolve inconsistency with evtchn
interface?
Or you suggest combining these changes into the existing patch?

Also as I understand 'evtchn' and 'port' are essentially the same entities
from perspective of local domain, related to each other roughly like
connection
and file descriptor pair. What do you think about renaming all 'evtchn'
arguments
and variables to 'port'? It will eliminate inconsistencies in the code,
for example
in include/xen/interface/event_channel.h and include/xen/events.h.

Yan
___
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

Re: [Xen-devel] [PATCH] xen: Use 'unsigned int' instead of 'unsigned'

2020-03-02 Thread Yan Yankovskyi
On Mon, Mar 2, 2020 at 10:11 Jan Beulich wrote:
> ... evtchn_port_t here and elsewhere.

There are some interfaces with signed int as a type for port, e.g. in
include/xen/events.h.
Should I create additional patch to resolve inconsistency with evtchn
interface?
Or you suggest combining these changes into the existing patch?

Also as I understand 'evtchn' and 'port' are essentially the same
entities from perspective of local domain, related to each other roughly
like connection and file descriptor pair. What do you think about
renaming all 'evtchn' arguments and variables to 'port'?
It will eliminate inconsistencies in the code, for example
in include/xen/interface/event_channel.h and include/xen/events.h.

___
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

[Xen-devel] [PATCH] xen: Use evtchn_type_t as a type for event channels

2020-03-05 Thread Yan Yankovskyi
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)));
 }
 
-static void evtchn_2l_clear_pending(unsigned port)
+static void evtchn_2l_clear_pending(evtchn_port_t port)
 {
struct shared_info *s = HYPERVISOR_shared_info;
sync_clear_bit(port, BM(&s->evtchn_pending[0]));
 }
 
-static void evtchn_2l_set_pending(unsigned port)
+static void evtchn_2l_set_pending(evtchn_port_t port)
 {
struct shared_info *s = HYPERVISOR_shared_info;
sync_set_bit(port, BM(&s->evtchn_pending[0]));
 }
 
-static bool evtchn_2l_is_pending(unsigned port)
+static bool evtchn_2l_is_pending(evtchn_port_t port)
 {
struct shared_info *s = HYPERVISOR_shared_info;
return sync_test_bit(port, BM(&s->evtchn_pending[0]));
 }
 
-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 = HYPERVISOR_shared_info;
return sync_test_and_set_bit(port, BM(&s->evtchn_mask[0]));
 }
 
-static void evtchn_2l_mask(unsigned port)
+static void evtchn_2l_mask(evtchn_port_t port)
 {
struct shared_info *s = HYPERVISOR_shared_info;
sync_set_bit(port, BM(&s->evtchn_mask[0]));
 }
 
-static void evtchn_2l_unmask(unsigned port)
+static void evtchn_2l_unmask(evtchn_port_t port)
 {
struct shared_info *s = HYPERVISOR_shared_info;
unsigned int cpu = get_cpu();
@@ -173,9 +173,9 @@ static void evtchn_2l_handle_events(unsigned cpu)
/* Timer interrupt has highest priority. */
irq = irq_from_virq(cpu, VIRQ_TIMER);
if (irq != -1) {
-   unsigned int evtchn = evtchn_from_irq(irq);
-   word_idx = evtchn / BITS_PER_LONG;
-   bit_idx = evtchn % BITS_PER_LONG;
+   evtchn_port_t port = evtchn_from_irq(irq);
+   word_idx = port / BITS_PER_LONG;
+   bit_idx = 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)
 
do {
xen_ulong_t bits;
-   int port;
+   evtchn_port_t port;
 
bits = MASK_LSBS(pending_bits, bit_idx);
 
diff --git a/drivers/xen/events/events_base.c b/drivers/xen/events/events_base.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)
}
 }
 
-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;
 
-   if (evtchn >= xen_evtchn_max_channels())
+   if (port >= xen_evtchn_max_channels())
return -EINVAL;
 
-   row = EVTCHN_ROW(evtchn);
-   col = EVTCHN_COL(evtchn);
+   row = EVTCHN_ROW(port);
+   col = EVTCHN_COL(port);
 
if (evtchn_to_irq[row] == NULL) {
/* Unallocated irq entries return -1 anyway */
@@ -143,13 +143,13 @@ static int set_evtchn_to_irq(unsigned evtchn, unsigned 
irq)
return 0;
 }
 
-int get_evtchn_to_irq(unsigned evtchn)
+int get_evtchn_to_irq(evtchn_port_t port)
 {
-   if (evtchn >= xen_evtchn_max_channels())
+   if (port >= xen_evtchn_max_channels())
return -1;
-   if (evtchn_to_irq[EVTCHN_ROW(evtchn)] == NULL)
+   if (evtchn_to_irq[EVTCHN_ROW(port)] == NULL)
return -1;
-   return evtchn_to_irq[EVTCHN_ROW(evtchn)][EVTCHN_COL(evtch

[Xen-devel] [PATCH v2] xen: Use evtchn_type_t as a type for event channels

2020-03-07 Thread Yan Yankovskyi
Make event channel functions pass event channel port using
evtchn_port_t type. It eliminates signed <-> unsigned conversion.

Signed-off-by: Yan Yankovskyi 
---
 drivers/xen/events/events_2l.c| 16 +++---
 drivers/xen/events/events_base.c  | 83 ++-
 drivers/xen/events/events_fifo.c  | 22 +++
 drivers/xen/events/events_internal.h  | 30 +-
 drivers/xen/evtchn.c  | 13 +++--
 drivers/xen/pvcalls-back.c|  5 +-
 drivers/xen/xen-pciback/xenbus.c  |  7 ++-
 drivers/xen/xen-scsiback.c|  3 +-
 drivers/xen/xenbus/xenbus_client.c|  6 +-
 include/xen/events.h  | 20 +++
 include/xen/interface/event_channel.h |  2 +-
 include/xen/xenbus.h  |  4 +-
 12 files changed, 109 insertions(+), 102 deletions(-)

diff --git a/drivers/xen/events/events_2l.c b/drivers/xen/events/events_2l.c
index 8edef51c92e5..64df919a2111 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)));
 }
 
-static void evtchn_2l_clear_pending(unsigned port)
+static void evtchn_2l_clear_pending(evtchn_port_t port)
 {
struct shared_info *s = HYPERVISOR_shared_info;
sync_clear_bit(port, BM(&s->evtchn_pending[0]));
 }
 
-static void evtchn_2l_set_pending(unsigned port)
+static void evtchn_2l_set_pending(evtchn_port_t port)
 {
struct shared_info *s = HYPERVISOR_shared_info;
sync_set_bit(port, BM(&s->evtchn_pending[0]));
 }
 
-static bool evtchn_2l_is_pending(unsigned port)
+static bool evtchn_2l_is_pending(evtchn_port_t port)
 {
struct shared_info *s = HYPERVISOR_shared_info;
return sync_test_bit(port, BM(&s->evtchn_pending[0]));
 }
 
-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 = HYPERVISOR_shared_info;
return sync_test_and_set_bit(port, BM(&s->evtchn_mask[0]));
 }
 
-static void evtchn_2l_mask(unsigned port)
+static void evtchn_2l_mask(evtchn_port_t port)
 {
struct shared_info *s = HYPERVISOR_shared_info;
sync_set_bit(port, BM(&s->evtchn_mask[0]));
 }
 
-static void evtchn_2l_unmask(unsigned port)
+static void evtchn_2l_unmask(evtchn_port_t port)
 {
struct shared_info *s = HYPERVISOR_shared_info;
unsigned int cpu = get_cpu();
@@ -173,7 +173,7 @@ static void evtchn_2l_handle_events(unsigned cpu)
/* Timer interrupt has highest priority. */
irq = irq_from_virq(cpu, VIRQ_TIMER);
if (irq != -1) {
-   unsigned int evtchn = evtchn_from_irq(irq);
+   evtchn_port_t evtchn = evtchn_from_irq(irq);
word_idx = evtchn / BITS_PER_LONG;
bit_idx = evtchn % BITS_PER_LONG;
if (active_evtchns(cpu, s, word_idx) & (1ULL << bit_idx))
@@ -228,7 +228,7 @@ static void evtchn_2l_handle_events(unsigned cpu)
 
do {
xen_ulong_t bits;
-   int port;
+   evtchn_port_t port;
 
bits = MASK_LSBS(pending_bits, bit_idx);
 
diff --git a/drivers/xen/events/events_base.c b/drivers/xen/events/events_base.c
index 499eff7d3f65..06f6cb01af39 100644
--- a/drivers/xen/events/events_base.c
+++ b/drivers/xen/events/events_base.c
@@ -116,7 +116,7 @@ static void clear_evtchn_to_irq_all(void)
}
 }
 
-static int set_evtchn_to_irq(unsigned evtchn, unsigned irq)
+static int set_evtchn_to_irq(evtchn_port_t evtchn, unsigned int irq)
 {
unsigned row;
unsigned col;
@@ -143,7 +143,7 @@ static int set_evtchn_to_irq(unsigned evtchn, unsigned irq)
return 0;
 }
 
-int get_evtchn_to_irq(unsigned evtchn)
+int get_evtchn_to_irq(evtchn_port_t evtchn)
 {
if (evtchn >= xen_evtchn_max_channels())
return -1;
@@ -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 evtchn,
 unsigned short cpu)
 {
int ret;
@@ -184,7 +184,7 @@ static int xen_irq_info_common_setup(struct irq_info *info,
 }
 
 static int xen_irq_info_evtchn_setup(unsigned irq,
-unsigned evtchn)
+evtchn_port_t evtchn)
 {
struct irq_info *info = info_for_irq(irq);
 
@@ -193,7 +193,7 @@ static int xen_irq_info_evtchn_setup(unsigned irq,
 
 static int xen_irq_info_ipi_setup(unsigned cpu,
  unsign

Re: [Xen-devel] [PATCH v2] xen: Use evtchn_type_t as a type for event channels

2020-03-08 Thread Yan Yankovskyi
On Sat, Mar 07, 2020 at 02:41:44PM -0500, Boris Ostrovsky wrote:
> 
> 
> On 3/7/20 8:43 AM, Yan Yankovskyi wrote:
> > Make event channel functions pass event channel port using
> > evtchn_port_t type. It eliminates signed <-> unsigned conversion.
> >
> 
> 
> >  static int find_virq(unsigned int virq, unsigned int cpu)
> >  {
> > struct evtchn_status status;
> > -   int port, rc = -ENOENT;
> > +   evtchn_port_t port;
> > +   int rc = -ENOENT;
> >  
> > memset(&status, 0, sizeof(status));
> > for (port = 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 evtchn = xen_evtchn_max_channels();
> > +   int irq, ret;
> >  
> > mutex_lock(&irq_mapping_update_lock);
> >  
> > @@ -990,7 +992,6 @@ int bind_virq_to_irq(unsigned int virq, unsigned int 
> > cpu, bool percpu)
> > if (ret == -EEXIST)
> > ret = find_virq(virq, cpu);
> > BUG_ON(ret < 0);
> > -   evtchn = ret;
> 
> 
> This looks suspicious. What would you be passing to
> xen_irq_info_virq_setup() below?

Right, this line should be preserved.

> I also think that, given that this patch is trying to get types in
> order, find_virq() will need more changes: it is supposed to return
> evtchn_port_t. But then it also wants to return a (signed) error.
 
As we don't care which error we got during find_virq call, we can just
return 0 in case of error, and port number otherwise. Port 0 is never
valid, so this approach can work for the other functions as well.
On the other hand, passing port using pointer and returning actual
error message, as it's done in xenbus_alloc_evtchn(), sounds like a
better approach overall. What do you think?

> > }
> >  
> > ret = xen_irq_info_virq_setup(cpu, irq, evtchn, virq);
> > @@ -1019,7 +1020,7 @@ static void unbind_from_irq(unsigned int irq)
> > mutex_unlock(&irq_mapping_update_lock);
> >  }
> >  
> 
> 
> 
> >  {
> > struct evtchn_close close;
> > int err;
> > @@ -423,7 +423,7 @@ int xenbus_free_evtchn(struct xenbus_device *dev, int 
> > port)
> 
> And why not here, especially since you updated format?

I missed it.

> >  
> > err = 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);
> >  
> > return err;
> >  }
> 
> 
> 
> >  
> > 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_priority13
> >  struct evtchn_set_priority {
> > /* IN parameters. */
> > -   uint32_t port;
> > +   evtchn_port_t port;
> 
> This definition comes from Xen so I think it needs to be fixed there first.

Will be done.

> > --- 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)
> 
> Right. But then why is the declaration in include/xen/xenbus.h (at the
> very end of the patch) different?
> 
> >  {
> > 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)
> 
> Here too.
> 
> > uint32_t priority;
> >  };
> >  
> > diff --git a/include/xen/xenbus.h b/include/xen/xenbus.h
> > index 89a889585ba0..4f35216064ba 100644
> &g

[Xen-devel] [PATCH v3 1/2] xen: Use evtchn_type_t as a type for event channels

2020-03-22 Thread Yan Yankovskyi
Make event channel functions pass event channel port using
evtchn_port_t type. It eliminates signed <-> unsigned conversion.

Signed-off-by: Yan Yankovskyi 
---
 drivers/xen/events/events_2l.c| 16 ++---
 drivers/xen/events/events_base.c  | 95 ++-
 drivers/xen/events/events_fifo.c  | 22 +++
 drivers/xen/events/events_internal.h  | 30 -
 drivers/xen/evtchn.c  | 13 ++--
 drivers/xen/gntdev-common.h   |  2 +-
 drivers/xen/gntdev.c  |  2 +-
 drivers/xen/pvcalls-back.c|  5 +-
 drivers/xen/pvcalls-front.c   | 15 +++--
 drivers/xen/xen-pciback/xenbus.c  |  7 +-
 drivers/xen/xen-scsiback.c|  3 +-
 drivers/xen/xenbus/xenbus_client.c|  6 +-
 include/xen/events.h  | 22 +++
 include/xen/interface/event_channel.h |  2 +-
 include/xen/xenbus.h  |  5 +-
 15 files changed, 128 insertions(+), 117 deletions(-)

diff --git a/drivers/xen/events/events_2l.c b/drivers/xen/events/events_2l.c
index 8edef51c92e5..64df919a2111 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)));
 }
 
-static void evtchn_2l_clear_pending(unsigned port)
+static void evtchn_2l_clear_pending(evtchn_port_t port)
 {
struct shared_info *s = HYPERVISOR_shared_info;
sync_clear_bit(port, BM(&s->evtchn_pending[0]));
 }
 
-static void evtchn_2l_set_pending(unsigned port)
+static void evtchn_2l_set_pending(evtchn_port_t port)
 {
struct shared_info *s = HYPERVISOR_shared_info;
sync_set_bit(port, BM(&s->evtchn_pending[0]));
 }
 
-static bool evtchn_2l_is_pending(unsigned port)
+static bool evtchn_2l_is_pending(evtchn_port_t port)
 {
struct shared_info *s = HYPERVISOR_shared_info;
return sync_test_bit(port, BM(&s->evtchn_pending[0]));
 }
 
-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 = HYPERVISOR_shared_info;
return sync_test_and_set_bit(port, BM(&s->evtchn_mask[0]));
 }
 
-static void evtchn_2l_mask(unsigned port)
+static void evtchn_2l_mask(evtchn_port_t port)
 {
struct shared_info *s = HYPERVISOR_shared_info;
sync_set_bit(port, BM(&s->evtchn_mask[0]));
 }
 
-static void evtchn_2l_unmask(unsigned port)
+static void evtchn_2l_unmask(evtchn_port_t port)
 {
struct shared_info *s = HYPERVISOR_shared_info;
unsigned int cpu = get_cpu();
@@ -173,7 +173,7 @@ static void evtchn_2l_handle_events(unsigned cpu)
/* Timer interrupt has highest priority. */
irq = irq_from_virq(cpu, VIRQ_TIMER);
if (irq != -1) {
-   unsigned int evtchn = evtchn_from_irq(irq);
+   evtchn_port_t evtchn = evtchn_from_irq(irq);
word_idx = evtchn / BITS_PER_LONG;
bit_idx = evtchn % BITS_PER_LONG;
if (active_evtchns(cpu, s, word_idx) & (1ULL << bit_idx))
@@ -228,7 +228,7 @@ static void evtchn_2l_handle_events(unsigned cpu)
 
do {
xen_ulong_t bits;
-   int port;
+   evtchn_port_t port;
 
bits = MASK_LSBS(pending_bits, bit_idx);
 
diff --git a/drivers/xen/events/events_base.c b/drivers/xen/events/events_base.c
index 499eff7d3f65..0367fbaead5d 100644
--- a/drivers/xen/events/events_base.c
+++ b/drivers/xen/events/events_base.c
@@ -116,7 +116,7 @@ static void clear_evtchn_to_irq_all(void)
}
 }
 
-static int set_evtchn_to_irq(unsigned evtchn, unsigned irq)
+static int set_evtchn_to_irq(evtchn_port_t evtchn, unsigned int irq)
 {
unsigned row;
unsigned col;
@@ -143,7 +143,7 @@ static int set_evtchn_to_irq(unsigned evtchn, unsigned irq)
return 0;
 }
 
-int get_evtchn_to_irq(unsigned evtchn)
+int get_evtchn_to_irq(evtchn_port_t evtchn)
 {
if (evtchn >= xen_evtchn_max_channels())
return -1;
@@ -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 evtchn,
 unsigned short cpu)
 {
int ret;
@@ -184,7 +184,7 @@ static int xen_irq_info_common_setup(struct irq_info *info,
 }
 
 static int xen_irq_info_evtchn_setup(unsigned irq,
-unsigned evtchn)
+evtchn_port_t evtchn)
 {
struct irq_info *info = info_for_irq(irq);
 
@@ -193,7 +193,7 @@ static int xen_irq_info_evtchn

[Xen-devel] [PATCH 2/2] evtchn: Change evtchn port type to evtchn_port_t

2020-03-22 Thread Yan Yankovskyi
struct evtchn_set_priority uses uint32_t type for event channel port.
Replace the type with evtchn_port_t. Such change is also done in Linux.

Signed-off-by: Yan Yankovskyi 
---
 xen/include/public/event_channel.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/include/public/event_channel.h 
b/xen/include/public/event_channel.h
index 44c549dd6b..cfb7929fef 100644
--- a/xen/include/public/event_channel.h
+++ b/xen/include/public/event_channel.h
@@ -307,7 +307,7 @@ typedef struct evtchn_expand_array evtchn_expand_array_t;
  */
 struct evtchn_set_priority {
 /* IN parameters. */
-uint32_t port;
+evtchn_port_t port;
 uint32_t priority;
 };
 typedef struct evtchn_set_priority evtchn_set_priority_t;
-- 
2.17.1


___
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

[Xen-devel] [PATCH v4 1/2] xen: Use evtchn_type_t as a type for event channels

2020-03-23 Thread Yan Yankovskyi
Make event channel functions pass event channel port using
evtchn_port_t type. It eliminates signed <-> unsigned conversion.

Signed-off-by: Yan Yankovskyi 
---
 drivers/xen/events/events_2l.c| 16 ++---
 drivers/xen/events/events_base.c  | 93 ++-
 drivers/xen/events/events_fifo.c  | 22 +++
 drivers/xen/events/events_internal.h  | 30 -
 drivers/xen/evtchn.c  | 13 ++--
 drivers/xen/gntdev-common.h   |  3 +-
 drivers/xen/gntdev.c  |  2 +-
 drivers/xen/pvcalls-back.c|  5 +-
 drivers/xen/pvcalls-front.c   | 15 +++--
 drivers/xen/xen-pciback/xenbus.c  |  7 +-
 drivers/xen/xen-scsiback.c|  3 +-
 drivers/xen/xenbus/xenbus_client.c|  6 +-
 include/xen/events.h  | 22 +++
 include/xen/interface/event_channel.h |  2 +-
 include/xen/xenbus.h  |  5 +-
 15 files changed, 128 insertions(+), 116 deletions(-)

diff --git a/drivers/xen/events/events_2l.c b/drivers/xen/events/events_2l.c
index 8edef51c92e5..64df919a2111 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)));
 }
 
-static void evtchn_2l_clear_pending(unsigned port)
+static void evtchn_2l_clear_pending(evtchn_port_t port)
 {
struct shared_info *s = HYPERVISOR_shared_info;
sync_clear_bit(port, BM(&s->evtchn_pending[0]));
 }
 
-static void evtchn_2l_set_pending(unsigned port)
+static void evtchn_2l_set_pending(evtchn_port_t port)
 {
struct shared_info *s = HYPERVISOR_shared_info;
sync_set_bit(port, BM(&s->evtchn_pending[0]));
 }
 
-static bool evtchn_2l_is_pending(unsigned port)
+static bool evtchn_2l_is_pending(evtchn_port_t port)
 {
struct shared_info *s = HYPERVISOR_shared_info;
return sync_test_bit(port, BM(&s->evtchn_pending[0]));
 }
 
-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 = HYPERVISOR_shared_info;
return sync_test_and_set_bit(port, BM(&s->evtchn_mask[0]));
 }
 
-static void evtchn_2l_mask(unsigned port)
+static void evtchn_2l_mask(evtchn_port_t port)
 {
struct shared_info *s = HYPERVISOR_shared_info;
sync_set_bit(port, BM(&s->evtchn_mask[0]));
 }
 
-static void evtchn_2l_unmask(unsigned port)
+static void evtchn_2l_unmask(evtchn_port_t port)
 {
struct shared_info *s = HYPERVISOR_shared_info;
unsigned int cpu = get_cpu();
@@ -173,7 +173,7 @@ static void evtchn_2l_handle_events(unsigned cpu)
/* Timer interrupt has highest priority. */
irq = irq_from_virq(cpu, VIRQ_TIMER);
if (irq != -1) {
-   unsigned int evtchn = evtchn_from_irq(irq);
+   evtchn_port_t evtchn = evtchn_from_irq(irq);
word_idx = evtchn / BITS_PER_LONG;
bit_idx = evtchn % BITS_PER_LONG;
if (active_evtchns(cpu, s, word_idx) & (1ULL << bit_idx))
@@ -228,7 +228,7 @@ static void evtchn_2l_handle_events(unsigned cpu)
 
do {
xen_ulong_t bits;
-   int port;
+   evtchn_port_t port;
 
bits = MASK_LSBS(pending_bits, bit_idx);
 
diff --git a/drivers/xen/events/events_base.c b/drivers/xen/events/events_base.c
index 499eff7d3f65..3a791c8485d0 100644
--- a/drivers/xen/events/events_base.c
+++ b/drivers/xen/events/events_base.c
@@ -116,7 +116,7 @@ static void clear_evtchn_to_irq_all(void)
}
 }
 
-static int set_evtchn_to_irq(unsigned evtchn, unsigned irq)
+static int set_evtchn_to_irq(evtchn_port_t evtchn, unsigned int irq)
 {
unsigned row;
unsigned col;
@@ -143,7 +143,7 @@ static int set_evtchn_to_irq(unsigned evtchn, unsigned irq)
return 0;
 }
 
-int get_evtchn_to_irq(unsigned evtchn)
+int get_evtchn_to_irq(evtchn_port_t evtchn)
 {
if (evtchn >= xen_evtchn_max_channels())
return -1;
@@ -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 evtchn,
 unsigned short cpu)
 {
int ret;
@@ -184,7 +184,7 @@ static int xen_irq_info_common_setup(struct irq_info *info,
 }
 
 static int xen_irq_info_evtchn_setup(unsigned irq,
-unsigned evtchn)
+evtchn_port_t evtchn)
 {
struct irq_info *info = info_for_irq(irq);
 
@@ -193,7 +193,7 @@ static int xen_irq_info_evtchn

Re: [Xen-devel] [PATCH v4 1/2] xen: Use evtchn_type_t as a type for event channels

2020-03-24 Thread Yan Yankovskyi
On Mon, Mar 23, 2020 at 05:55:39PM -0400, Boris Ostrovsky wrote:
> 
> On 3/23/20 12:15 PM, Yan Yankovskyi wrote:
> > Make event channel functions pass event channel port using
> > evtchn_port_t type. It eliminates signed <-> unsigned conversion.
> >
> > Signed-off-by: Yan Yankovskyi 
> 
> 
> If the difference is only the whitespace fix

There were two more fixes: missing include in gntdev-common.h and
a variable initialization in bind_virq_to_irq (eliminates warning).