Re: [Xen-devel] [PATCH 16/25 v6] xen/arm: vpl011: Add a new handle_console_ring function in xenconsole

2017-07-18 Thread Stefano Stabellini
On Mon, 17 Jul 2017, Bhupinder Thakur wrote:
> This patch introduces a new handle_console_ring function. This function
> reads the data from the ring buffer on receiving an event.
> 
> Signed-off-by: Bhupinder Thakur 

Reviewed-by: Stefano Stabellini 


> ---
> CC: Ian Jackson 
> CC: Wei Liu 
> CC: Stefano Stabellini 
> CC: Julien Grall 
> 
> Changes since v5:
> - Split this change in a separate patch.
> 
>  tools/console/daemon/io.c | 41 -
>  1 file changed, 28 insertions(+), 13 deletions(-)
> 
> diff --git a/tools/console/daemon/io.c b/tools/console/daemon/io.c
> index c272fe6..775fb04 100644
> --- a/tools/console/daemon/io.c
> +++ b/tools/console/daemon/io.c
> @@ -935,17 +935,24 @@ static void console_evtchn_unmask(struct console *con, 
> void *data)
>   }
>  }
>  
> -static void handle_ring_read(struct domain *dom)
> +static void handle_ring_read(struct console *con)
>  {
>   xenevtchn_port_or_error_t port;
> - struct console *con = &dom->console;
>  
> - if (dom->is_dead)
> + if (con->d->is_dead)
>   return;
>  
>   if ((port = xenevtchn_pending(con->xce_handle)) == -1)
>   return;
>  
> + if (port != con->local_port)
> + {
> + dolog(LOG_ERR, 
> +   "Event received for invalid port %d, Expected port is 
> %d\n",
> +   port, con->local_port);
> + return;
> + }
> +
>   con->event_count++;
>  
>   buffer_append(con);
> @@ -954,6 +961,21 @@ static void handle_ring_read(struct domain *dom)
>   (void)xenevtchn_unmask(con->xce_handle, port);
>  }
>  
> +static void handle_console_ring(struct console *con)
> +{
> + if (con->event_count < RATE_LIMIT_ALLOWANCE) {
> + if (con->xce_handle != NULL &&
> + con->xce_pollfd_idx != -1 &&
> + !(fds[con->xce_pollfd_idx].revents &
> +   ~(POLLIN|POLLOUT|POLLPRI)) &&
> + (fds[con->xce_pollfd_idx].revents &
> +  POLLIN))
> + handle_ring_read(con);
> + }
> +
> + con->xce_pollfd_idx = -1;
> +}
> +
>  static void handle_xs(void)
>  {
>   char **vec;
> @@ -1238,15 +1260,8 @@ void handle_io(void)
>   struct console *con = &d->console;
>  
>   n = d->next;
> - if (con->event_count < RATE_LIMIT_ALLOWANCE) {
> - if (con->xce_handle != NULL &&
> - con->xce_pollfd_idx != -1 &&
> - !(fds[con->xce_pollfd_idx].revents &
> -   ~(POLLIN|POLLOUT|POLLPRI)) &&
> -   (fds[con->xce_pollfd_idx].revents &
> -POLLIN))
> - handle_ring_read(d);
> - }
> +
> + handle_console_ring(con);
>  
>   if (con->master_fd != -1 && con->master_pollfd_idx != 
> -1) {
>   if (fds[con->master_pollfd_idx].revents &
> @@ -1263,7 +1278,7 @@ void handle_io(void)
>   }
>   }
>  
> - con->xce_pollfd_idx = con->master_pollfd_idx = -1;
> + con->master_pollfd_idx = -1;
>  
>   if (d->last_seen != enum_pass)
>   shutdown_domain(d);
> -- 
> 2.7.4
> 

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


Re: [Xen-devel] [PATCH 16/25 v6] xen/arm: vpl011: Add a new handle_console_ring function in xenconsole

2017-07-18 Thread Wei Liu
On Mon, Jul 17, 2017 at 06:36:46PM +0530, Bhupinder Thakur wrote:
> This patch introduces a new handle_console_ring function. This function
> reads the data from the ring buffer on receiving an event.
> 
> Signed-off-by: Bhupinder Thakur 
> ---
> CC: Ian Jackson 
> CC: Wei Liu 
> CC: Stefano Stabellini 
> CC: Julien Grall 
> 
> Changes since v5:
> - Split this change in a separate patch.
> 
>  tools/console/daemon/io.c | 41 -
>  1 file changed, 28 insertions(+), 13 deletions(-)
> 
> diff --git a/tools/console/daemon/io.c b/tools/console/daemon/io.c
> index c272fe6..775fb04 100644
> --- a/tools/console/daemon/io.c
> +++ b/tools/console/daemon/io.c
> @@ -935,17 +935,24 @@ static void console_evtchn_unmask(struct console *con, 
> void *data)
>   }
>  }
>  
> -static void handle_ring_read(struct domain *dom)
> +static void handle_ring_read(struct console *con)
>  {
>   xenevtchn_port_or_error_t port;
> - struct console *con = &dom->console;
>  
> - if (dom->is_dead)
> + if (con->d->is_dead)
>   return;
>  
>   if ((port = xenevtchn_pending(con->xce_handle)) == -1)
>   return;
>  
> + if (port != con->local_port)
> + {

Coding style.

> + dolog(LOG_ERR, 

Trailing space.

> +   "Event received for invalid port %d, Expected port is 
> %d\n",
> +   port, con->local_port);
> + return;
> + }
> +
>   con->event_count++;
>  
>   buffer_append(con);
> @@ -954,6 +961,21 @@ static void handle_ring_read(struct domain *dom)
>   (void)xenevtchn_unmask(con->xce_handle, port);
>  }
>  
> +static void handle_console_ring(struct console *con)



> +{
> + if (con->event_count < RATE_LIMIT_ALLOWANCE) {
> + if (con->xce_handle != NULL &&
> + con->xce_pollfd_idx != -1 &&
> + !(fds[con->xce_pollfd_idx].revents &
> +   ~(POLLIN|POLLOUT|POLLPRI)) &&
> + (fds[con->xce_pollfd_idx].revents &
> +  POLLIN))
> + handle_ring_read(con);
> + }
> +
> + con->xce_pollfd_idx = -1;

It is worth noting in the commit message that you move the setting to -1
here but there shouldn't be any change in behaviour.

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