* [PATCH] xen/serial: scif: Rework how the parameters are found
@ 2020-12-24 16:50 Julien Grall
2020-12-24 19:57 ` Oleksandr
2021-01-04 17:47 ` Stefano Stabellini
0 siblings, 2 replies; 3+ messages in thread
From: Julien Grall @ 2020-12-24 16:50 UTC (permalink / raw)
To: xen-devel
Cc: bertrand.marquis, Rahul.Singh, Julien Grall, Stefano Stabellini,
Julien Grall, Volodymyr Babchuk
From: Julien Grall <jgrall@amazon.com>
clang 11 will throw the following error while build Xen:
scif-uart.c:333:33: error: cast to smaller integer type 'enum port_types' from 'const void *' [-Werror,-Wvoid-pointer-to-enum-cast]
uart->params = &port_params[(enum port_types)match->data];
^~~~~~~~~~~~~~~~~~~~~~~~~~~~
The error can be prevented by directly storing a pointer to the port
parameters rather than the a cast of the port type.
Signed-off-by: Julien Grall <jgrall@amazon.com>
---
Only build tested as I don't have the HW.
---
xen/drivers/char/scif-uart.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/xen/drivers/char/scif-uart.c b/xen/drivers/char/scif-uart.c
index 9d3f66b55b67..ee204a11a471 100644
--- a/xen/drivers/char/scif-uart.c
+++ b/xen/drivers/char/scif-uart.c
@@ -286,8 +286,8 @@ static struct uart_driver __read_mostly scif_uart_driver = {
static const struct dt_device_match scif_uart_dt_match[] __initconst =
{
- { .compatible = "renesas,scif", .data = (void *)SCIF_PORT },
- { .compatible = "renesas,scifa", .data = (void *)SCIFA_PORT },
+ { .compatible = "renesas,scif", .data = &port_params[SCIF_PORT] },
+ { .compatible = "renesas,scifa", .data = &port_params[SCIFA_PORT] },
{ /* sentinel */ },
};
@@ -330,7 +330,7 @@ static int __init scif_uart_init(struct dt_device_node *dev,
match = dt_match_node(scif_uart_dt_match, dev);
ASSERT( match );
- uart->params = &port_params[(enum port_types)match->data];
+ uart->params = match->data;
uart->vuart.base_addr = addr;
uart->vuart.size = size;
--
2.17.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] xen/serial: scif: Rework how the parameters are found
2020-12-24 16:50 [PATCH] xen/serial: scif: Rework how the parameters are found Julien Grall
@ 2020-12-24 19:57 ` Oleksandr
2021-01-04 17:47 ` Stefano Stabellini
1 sibling, 0 replies; 3+ messages in thread
From: Oleksandr @ 2020-12-24 19:57 UTC (permalink / raw)
To: Julien Grall
Cc: xen-devel, bertrand.marquis, Rahul.Singh, Julien Grall,
Stefano Stabellini, Volodymyr Babchuk
On 24.12.20 18:50, Julien Grall wrote:
Hi Julien
> From: Julien Grall <jgrall@amazon.com>
>
> clang 11 will throw the following error while build Xen:
>
> scif-uart.c:333:33: error: cast to smaller integer type 'enum port_types' from 'const void *' [-Werror,-Wvoid-pointer-to-enum-cast]
> uart->params = &port_params[(enum port_types)match->data];
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> The error can be prevented by directly storing a pointer to the port
> parameters rather than the a cast of the port type.
>
> Signed-off-by: Julien Grall <jgrall@amazon.com>
>
> ---
>
> Only build tested as I don't have the HW.
I don't have an access to the SCIFA based HW at the moment, but on Gen3
H3 SoC (SCIF) it works.
> ---
> xen/drivers/char/scif-uart.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/xen/drivers/char/scif-uart.c b/xen/drivers/char/scif-uart.c
> index 9d3f66b55b67..ee204a11a471 100644
> --- a/xen/drivers/char/scif-uart.c
> +++ b/xen/drivers/char/scif-uart.c
> @@ -286,8 +286,8 @@ static struct uart_driver __read_mostly scif_uart_driver = {
>
> static const struct dt_device_match scif_uart_dt_match[] __initconst =
> {
> - { .compatible = "renesas,scif", .data = (void *)SCIF_PORT },
> - { .compatible = "renesas,scifa", .data = (void *)SCIFA_PORT },
> + { .compatible = "renesas,scif", .data = &port_params[SCIF_PORT] },
> + { .compatible = "renesas,scifa", .data = &port_params[SCIFA_PORT] },
> { /* sentinel */ },
> };
>
> @@ -330,7 +330,7 @@ static int __init scif_uart_init(struct dt_device_node *dev,
>
> match = dt_match_node(scif_uart_dt_match, dev);
> ASSERT( match );
> - uart->params = &port_params[(enum port_types)match->data];
> + uart->params = match->data;
>
> uart->vuart.base_addr = addr;
> uart->vuart.size = size;
--
Regards,
Oleksandr Tyshchenko
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] xen/serial: scif: Rework how the parameters are found
2020-12-24 16:50 [PATCH] xen/serial: scif: Rework how the parameters are found Julien Grall
2020-12-24 19:57 ` Oleksandr
@ 2021-01-04 17:47 ` Stefano Stabellini
1 sibling, 0 replies; 3+ messages in thread
From: Stefano Stabellini @ 2021-01-04 17:47 UTC (permalink / raw)
To: Julien Grall
Cc: xen-devel, bertrand.marquis, Rahul.Singh, Julien Grall,
Stefano Stabellini, Volodymyr Babchuk
On Thu, 24 Dec 2020, Julien Grall wrote:
> From: Julien Grall <jgrall@amazon.com>
>
> clang 11 will throw the following error while build Xen:
>
> scif-uart.c:333:33: error: cast to smaller integer type 'enum port_types' from 'const void *' [-Werror,-Wvoid-pointer-to-enum-cast]
> uart->params = &port_params[(enum port_types)match->data];
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> The error can be prevented by directly storing a pointer to the port
> parameters rather than the a cast of the port type.
>
> Signed-off-by: Julien Grall <jgrall@amazon.com>
Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
> ---
>
> Only build tested as I don't have the HW.
> ---
> xen/drivers/char/scif-uart.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/xen/drivers/char/scif-uart.c b/xen/drivers/char/scif-uart.c
> index 9d3f66b55b67..ee204a11a471 100644
> --- a/xen/drivers/char/scif-uart.c
> +++ b/xen/drivers/char/scif-uart.c
> @@ -286,8 +286,8 @@ static struct uart_driver __read_mostly scif_uart_driver = {
>
> static const struct dt_device_match scif_uart_dt_match[] __initconst =
> {
> - { .compatible = "renesas,scif", .data = (void *)SCIF_PORT },
> - { .compatible = "renesas,scifa", .data = (void *)SCIFA_PORT },
> + { .compatible = "renesas,scif", .data = &port_params[SCIF_PORT] },
> + { .compatible = "renesas,scifa", .data = &port_params[SCIFA_PORT] },
> { /* sentinel */ },
> };
>
> @@ -330,7 +330,7 @@ static int __init scif_uart_init(struct dt_device_node *dev,
>
> match = dt_match_node(scif_uart_dt_match, dev);
> ASSERT( match );
> - uart->params = &port_params[(enum port_types)match->data];
> + uart->params = match->data;
>
> uart->vuart.base_addr = addr;
> uart->vuart.size = size;
> --
> 2.17.1
>
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2021-01-04 17:47 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-12-24 16:50 [PATCH] xen/serial: scif: Rework how the parameters are found Julien Grall
2020-12-24 19:57 ` Oleksandr
2021-01-04 17:47 ` Stefano Stabellini
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.