From: Julien Grall <julien.grall@arm.com>
To: Bhupinder Thakur <bhupinder.thakur@linaro.org>,
xen-devel@lists.xenproject.org
Cc: Wei Liu <wei.liu2@citrix.com>,
Stefano Stabellini <sstabellini@kernel.org>,
Ian Jackson <ian.jackson@eu.citrix.com>
Subject: Re: [PATCH 24/25 v7] xen/arm: vpl011: Add a pl011 uart DT node in the guest device tree
Date: Tue, 8 Aug 2017 15:12:36 +0100 [thread overview]
Message-ID: <63f24df0-e642-ee29-3608-aa70a93812aa@arm.com> (raw)
In-Reply-To: <1502095997-31219-25-git-send-email-bhupinder.thakur@linaro.org>
On 07/08/17 09:53, Bhupinder Thakur wrote:
> The SBSA UART node format is as specified in
> Documentation/devicetree/bindings/serial/arm_sbsa_uart.txt and given below:
>
> ARM SBSA defined generic UART
> ------------------------------
> This UART uses a subset of the PL011 registers and consequently lives
> in the PL011 driver. It's baudrate and other communication parameters
> cannot be adjusted at runtime, so it lacks a clock specifier here.
>
> Required properties:
> - compatible: must be "arm,sbsa-uart"
> - reg: exactly one register range
> - interrupts: exactly one interrupt specifier
> - current-speed: the (fixed) baud rate set by the firmware
>
> Currently the baud rate of 115200 has been selected as a default value,
> which is one of the valid baud rate settings. Higher baud rate was
> selected since an emulated pl011 can support any valid baud rate without
> any limitation of the hardware.
>
> A check is added to ensure that user specified irq does not conflict with
> the SPI assgined to vpl011. If there is a conflict then it flags an error.
>
> Signed-off-by: Bhupinder Thakur <bhupinder.thakur@linaro.org>
> Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
> Acked-by: Wei Liu <wei.liu2@citrix.com>
> ---
> CC: Ian Jackson <ian.jackson@eu.citrix.com>
> CC: Wei Liu <wei.liu2@citrix.com>
> CC: Stefano Stabellini <sstabellini@kernel.org>
> CC: Julien Grall <julien.grall@arm.com>
>
> Changes since v6:
> - Added a comment explaining why user specified IRQ should not conflict with vpl011
> SPI.
> - Checking the vuart type explicitly against vpl011 enum type.
> - Removed uart-compat string and using "arm,sbsa-uart" string directly.
> - I have retained the reviewed-by/acked-by tags as these are minor changes.
>
> tools/libxl/libxl_arm.c | 53 +++++++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 53 insertions(+)
>
> diff --git a/tools/libxl/libxl_arm.c b/tools/libxl/libxl_arm.c
> index a33d3c9..6629852 100644
> --- a/tools/libxl/libxl_arm.c
> +++ b/tools/libxl/libxl_arm.c
> @@ -43,11 +43,29 @@ int libxl__arch_domain_prepare_config(libxl__gc *gc,
> {
> uint32_t nr_spis = 0;
> unsigned int i;
> + uint32_t vuart_irq = 0;
> +
> + /*
> + * If pl011 vuart is enabled then increment the nr_spis to allow allocation
> + * of SPI VIRQ for pl011.
> + */
> + if (d_config->b_info.arch_arm.vuart == LIBXL_VUART_TYPE_SBSA_UART) {
> + nr_spis += (GUEST_VPL011_SPI - 32) + 1;
> + vuart_irq = GUEST_VPL011_SPI;
> + }
>
> for (i = 0; i < d_config->b_info.num_irqs; i++) {
> uint32_t irq = d_config->b_info.irqs[i];
> uint32_t spi;
>
> + /*
> + * The user specified irq should not conflict with the vpl011 irq.
> + */
I am sorry but in the changelog you wrote: "Add a comment explaining why
user specified IRQ should not conflict with vpl011 SPI". But you still
don't explain why... And I still don't see the TODO requested on v6.
> + if (irq == vuart_irq) {
Hmmm if vUART is not enabled you would compare to 0. And I don't think
we should make this assumption in the code. This would also give a
random error to the user.
It would be better if you introduce a local boolean vuart_enabled to
know whether you need to check the conflict.
> + LOG(ERROR, "Physical IRQ %u conflicting with pl011 SPI\n", irq);
> + return ERROR_FAIL;
> + }
> +
> if (irq < 32)
> continue;
>
> @@ -590,6 +608,38 @@ static int make_hypervisor_node(libxl__gc *gc, void *fdt,
> return 0;
> }
>
> +static int make_vpl011_uart_node(libxl__gc *gc, void *fdt,
> + const struct arch_info *ainfo,
> + struct xc_dom_image *dom)
> +{
> + int res;
> + gic_interrupt intr;
> +
> + res = fdt_begin_node(fdt, "sbsa-pl011");
> + if (res) return res;
> +
> + res = fdt_property_compat(gc, fdt, 1, "arm,sbsa-uart");
> + if (res) return res;
> +
> + res = fdt_property_regs(gc, fdt, ROOT_ADDRESS_CELLS, ROOT_SIZE_CELLS,
> + 1,
> + GUEST_PL011_BASE, GUEST_PL011_SIZE);
> + if (res) return res;
> +
> + set_interrupt(intr, GUEST_VPL011_SPI, 0xf, DT_IRQ_TYPE_LEVEL_HIGH);
> +
> + res = fdt_property_interrupts(gc, fdt, &intr, 1);
> + if (res) return res;
> +
> + /* Use a default baud rate of 115200. */
> + fdt_property_u32(fdt, "current-speed", 115200);
> +
> + res = fdt_end_node(fdt);
> + if (res) return res;
> +
> + return 0;
> +}
> +
> static const struct arch_info *get_arch_info(libxl__gc *gc,
> const struct xc_dom_image *dom)
> {
> @@ -889,6 +939,9 @@ next_resize:
> FDT( make_timer_node(gc, fdt, ainfo, xc_config->clock_frequency) );
> FDT( make_hypervisor_node(gc, fdt, vers) );
>
> + if (info->arch_arm.vuart == LIBXL_VUART_TYPE_SBSA_UART)
> + FDT( make_vpl011_uart_node(gc, fdt, ainfo, dom) );
> +
> if (pfdt)
> FDT( copy_partial_fdt(gc, fdt, pfdt) );
>
>
Cheers,
--
Julien Grall
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel
next prev parent reply other threads:[~2017-08-08 14:12 UTC|newest]
Thread overview: 67+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-08-07 8:52 [PATCH 00/25 v7] SBSA UART emulation support in Xen Bhupinder Thakur
2017-08-07 8:52 ` [PATCH 01/25 v7] xen/arm: vpl011: Define common ring buffer helper functions in console.h Bhupinder Thakur
2017-08-07 8:52 ` [PATCH 02/25 v7] xen/arm: vpl011: Add SBSA UART emulation in Xen Bhupinder Thakur
2017-08-07 8:52 ` [PATCH 03/25 v7] xen/arm: vpl011: Allocate a new GFN in the toolstack for vuart Bhupinder Thakur
2017-08-07 8:52 ` [PATCH 04/25 v7] xen/arm: vpl011: Add support for vuart in libxl Bhupinder Thakur
2017-08-08 13:38 ` Julien Grall
2017-08-08 13:42 ` Julien Grall
2017-08-07 8:52 ` [PATCH 05/25 v7] xen/arm: vpl011: Rearrange xen header includes in alphabetical order in domctl.c Bhupinder Thakur
2017-08-07 8:52 ` [PATCH 06/25 v7] xen/arm: vpl011: Add a new domctl API to initialize vpl011 Bhupinder Thakur
2017-08-07 9:14 ` Jan Beulich
2017-08-21 10:28 ` Bhupinder Thakur
2017-08-21 11:56 ` Jan Beulich
2017-08-08 13:11 ` Wei Liu
2017-08-08 13:30 ` Wei Liu
2017-08-08 13:47 ` Julien Grall
2017-08-08 13:56 ` Julien Grall
2017-08-07 8:52 ` [PATCH 07/25 v7] xen/arm: vpl011: Add a new vuart node in the xenstore Bhupinder Thakur
2017-08-07 8:53 ` [PATCH 08/25 v7] xen/arm: vpl011: Modify xenconsole to define and use a new console structure Bhupinder Thakur
2017-08-07 8:53 ` [PATCH 09/25 v7] xen/arm: vpl011: Rename the console structure field conspath to xspath Bhupinder Thakur
2017-08-07 8:53 ` [PATCH 10/25 v7] xen/arm: vpl011: Modify xenconsole functions to take console structure as input Bhupinder Thakur
2017-08-07 8:53 ` [PATCH 11/25 v7] xen/arm: vpl011: Add a new console_init function in xenconsole Bhupinder Thakur
2017-08-08 13:11 ` Wei Liu
2017-08-07 8:53 ` [PATCH 12/25 v7] xen/arm: vpl011: Add a new buffer_available " Bhupinder Thakur
2017-08-07 8:53 ` [PATCH 13/25 v7] xen/arm: vpl011: Add a new maybe_add_console_evtchn_fd " Bhupinder Thakur
2017-08-08 13:12 ` Wei Liu
2017-08-07 8:53 ` [PATCH 14/25 v7] xen/arm: vpl011: Add a new maybe_add_console_tty_fd " Bhupinder Thakur
2017-08-08 13:12 ` Wei Liu
2017-08-07 8:53 ` [PATCH 15/25 v7] xen/arm: vpl011: Add a new console_evtchn_unmask " Bhupinder Thakur
2017-08-08 13:15 ` Wei Liu
2017-08-07 8:53 ` [PATCH 16/25 v7] xen/arm: vpl011: Add a new handle_console_ring " Bhupinder Thakur
2017-08-08 13:16 ` Wei Liu
2017-08-07 8:53 ` [PATCH 17/25 v7] xen/arm: vpl011: Add a new handle_console_tty " Bhupinder Thakur
2017-08-07 8:53 ` [PATCH 18/25 v7] xen/arm: vpl011: Add a new console_cleanup " Bhupinder Thakur
2017-08-08 13:29 ` Wei Liu
2017-08-07 8:53 ` [PATCH 19/25 v7] xen/arm: vpl011: Add a new console_open_log " Bhupinder Thakur
2017-08-08 13:31 ` Wei Liu
2017-08-07 8:53 ` [PATCH 20/25 v7] xen/arm: vpl011: Add a new console_close_evtchn " Bhupinder Thakur
2017-08-07 8:53 ` [PATCH 21/25 v7] xen/arm: vpl011: Add support for multiple consoles " Bhupinder Thakur
2017-08-08 13:48 ` Wei Liu
2017-08-07 8:53 ` [PATCH 22/25 v7] xen/arm: vpl011: Add support for vuart console " Bhupinder Thakur
2017-08-08 13:52 ` Wei Liu
2017-08-07 8:53 ` [PATCH 23/25 v7] xen/arm: vpl011: Add a new vuart console type to xenconsole client Bhupinder Thakur
2017-08-07 8:53 ` [PATCH 24/25 v7] xen/arm: vpl011: Add a pl011 uart DT node in the guest device tree Bhupinder Thakur
2017-08-08 14:12 ` Julien Grall [this message]
2017-08-08 14:53 ` Bhupinder Thakur
2017-08-07 8:53 ` [PATCH 25/25 v7] xen/arm: vpl011: Update documentation for vuart console support Bhupinder Thakur
2017-08-08 14:15 ` Julien Grall
2017-08-08 15:59 ` [PATCH 00/25 v7] SBSA UART emulation support in Xen Julien Grall
2017-08-09 10:58 ` Bhupinder Thakur
2017-08-09 11:03 ` Wei Liu
2017-08-10 7:59 ` Bhupinder Thakur
2017-08-10 11:40 ` Wei Liu
2017-08-10 12:40 ` Julien Grall
2017-08-10 13:01 ` Wei Liu
2017-08-10 14:31 ` Julien Grall
2017-08-10 15:36 ` Wei Liu
2017-08-10 14:26 ` Julien Grall
2017-08-10 16:00 ` Wei Liu
2017-08-10 16:11 ` Julien Grall
2017-08-10 16:38 ` Wei Liu
2017-08-10 17:51 ` Julien Grall
2017-08-15 9:49 ` Wei Liu
2017-08-18 13:30 ` Julien Grall
2017-08-18 13:48 ` Wei Liu
2017-08-14 7:52 ` Bhupinder Thakur
2017-08-14 13:54 ` Julien Grall
2017-08-22 14:35 ` Julien Grall
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=63f24df0-e642-ee29-3608-aa70a93812aa@arm.com \
--to=julien.grall@arm.com \
--cc=bhupinder.thakur@linaro.org \
--cc=ian.jackson@eu.citrix.com \
--cc=sstabellini@kernel.org \
--cc=wei.liu2@citrix.com \
--cc=xen-devel@lists.xenproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).