[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v3 4/6] xen/arm: handle "multiboot, device-tree" compatible nodes


  • To: Stefano Stabellini <sstabellini@xxxxxxxxxx>
  • From: Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>
  • Date: Fri, 9 Aug 2019 18:32:10 +0000
  • Accept-language: en-US
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=UeDNqKnKEHlU5QCeyvV32M/N/3Q2alttFB9u20rsGVo=; b=UIwcIZp1oqCgh3hVKQwwEsrqucWDIJJo/xn1dkXvczUxxG4Iv44ncelEyBPXMUryj7MrVAmaqqP0rQJijZ+n/pS4m9TKrVHT/wJkBeBWQdUYIJt0Q5y6bxqCBrbIcp5TN6ZntWJT31dXXDA7p0BYm0ABE7058o4npY4QXRhYNtHwQHVFN1jhj6r0Fwg4vZXjCRK1Ipq1W+WGcGklxtcdKNMZ16S5AsHJ+Gj2iTe12iUMr/NqvqHMHXaNCRzPpYozWLDyZBQIXyikpduSQ9PTyqBvNUsWvfTEt3Qu+eqpuYdSuKBT5QecVE5JOf9wt6ZRRmqgfmDhYDnw3eBa2SX5uA==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bNuE4BChARoWtdYOZTszM7iPKLCSv8t5NSDJHvqVnSYOcbJMw3KYntbhLzQkTSuG9KkDbx8l/YweE6PwH1lEPdTj2E/mmmEp+jJc4GxamUYFmYHEJsyD9aWiSXgtuTq3hJNX4/WdQG8thoo0QBui5izHqE3BqyABpREfRtgUhX6aDbF+5S9vUZUTpjMdD/I0FlTGlAOOJqoHcqxzHD300KYKLUefraX7IqTe0pUKtbkm798JF4RULrd2Faa/nE74gdsJYsAY+yjTYQGMFrbx6nw1xHKAbyFjGfpujQr6qn/WJYFqfDTlO+ClqazCTx/7to9Gh/JAdwYLX+RlAZ2S6w==
  • Authentication-results: spf=none (sender IP is ) smtp.mailfrom=Volodymyr_Babchuk@xxxxxxxx;
  • Cc: Stefano Stabellini <stefanos@xxxxxxxxxx>, Andrii Anisov <Andrii_Anisov@xxxxxxxx>, "Achin.Gupta@xxxxxxx" <Achin.Gupta@xxxxxxx>, "xen-devel@xxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxx>, "julien.grall@xxxxxxx" <julien.grall@xxxxxxx>, Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>
  • Delivery-date: Fri, 09 Aug 2019 18:32:16 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
  • Thread-index: AQHVTj7LDIH+uezJn0iD5FIKsJhUMKbzJQOA
  • Thread-topic: [PATCH v3 4/6] xen/arm: handle "multiboot,device-tree" compatible nodes

Stefano Stabellini writes:

> Detect "multiboot,device-tree" compatible nodes. Add them to the bootmod
> array as BOOTMOD_GUEST_DTB.  In kernel_probe, find the right
> BOOTMOD_GUEST_DTB and store a pointer to it in dtb_bootmodule.
>
> Signed-off-by: Stefano Stabellini <stefanos@xxxxxxxxxx>
>
> ---
> Changes in v2:
> - rename BOOTMOD_DTB to BOOTMOD_GUEST_DTB
> - rename multiboot,dtb to multiboot,device-tree
> ---
>  xen/arch/arm/bootfdt.c      |  2 ++
>  xen/arch/arm/kernel.c       | 12 +++++++++++-
>  xen/arch/arm/setup.c        |  1 +
>  xen/include/asm-arm/setup.h |  1 +
>  4 files changed, 15 insertions(+), 1 deletion(-)
>
> diff --git a/xen/arch/arm/bootfdt.c b/xen/arch/arm/bootfdt.c
> index 891b4b66ff..4ee1bc314e 100644
> --- a/xen/arch/arm/bootfdt.c
> +++ b/xen/arch/arm/bootfdt.c
> @@ -205,6 +205,8 @@ static void __init process_multiboot_node(const void 
> *fdt, int node,
>          kind = BOOTMOD_RAMDISK;
>      else if ( fdt_node_check_compatible(fdt, node, "xen,xsm-policy") == 0 )
>          kind = BOOTMOD_XSM;
> +    else if ( fdt_node_check_compatible(fdt, node, "multiboot,device-tree") 
> == 0 )
> +        kind = BOOTMOD_GUEST_DTB;
>      else
>          kind = BOOTMOD_UNKNOWN;
>  
> diff --git a/xen/arch/arm/kernel.c b/xen/arch/arm/kernel.c
> index 389bef2afa..997a871f62 100644
> --- a/xen/arch/arm/kernel.c
> +++ b/xen/arch/arm/kernel.c
> @@ -425,7 +425,7 @@ int __init kernel_probe(struct kernel_info *info,
>      struct bootmodule *mod = NULL;
>      struct bootcmdline *cmd = NULL;
>      struct dt_device_node *node;
> -    u64 kernel_addr, initrd_addr, size;
> +    u64 kernel_addr = 0, initrd_addr = 0, dtb_addr = 0, size;
It is unclear for my why are you initialize those variables with 0

>      int rc;
>  
>      /* domain is NULL only for the hardware domain */
> @@ -469,6 +469,16 @@ int __init kernel_probe(struct kernel_info *info,
>                  info->initrd_bootmodule = boot_module_find_by_addr_and_kind(
>                          BOOTMOD_RAMDISK, initrd_addr);
>              }
> +            else if ( dt_device_is_compatible(node, "multiboot,device-tree") 
> )
> +            {
> +                u32 len;
> +                const __be32 *val;
> +
> +                val = dt_get_property(node, "reg", &len);
Do you need to check return value there?

> +                dt_get_range(&val, node, &dtb_addr, &size);
> +                info->dtb_bootmodule = boot_module_find_by_addr_and_kind(
> +                        BOOTMOD_GUEST_DTB, dtb_addr);
> +            }
>              else
>                  continue;
>          }
> diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c
> index 215746a5c3..f93a8bed04 100644
> --- a/xen/arch/arm/setup.c
> +++ b/xen/arch/arm/setup.c
> @@ -347,6 +347,7 @@ const char * __init 
> boot_module_kind_as_string(bootmodule_kind kind)
>      case BOOTMOD_KERNEL:  return "Kernel";
>      case BOOTMOD_RAMDISK: return "Ramdisk";
>      case BOOTMOD_XSM:     return "XSM";
> +    case BOOTMOD_GUEST_DTB:     return "DTB";
>      case BOOTMOD_UNKNOWN: return "Unknown";
>      default: BUG();
>      }
> diff --git a/xen/include/asm-arm/setup.h b/xen/include/asm-arm/setup.h
> index 8bf3d5910a..5aaf07bf97 100644
> --- a/xen/include/asm-arm/setup.h
> +++ b/xen/include/asm-arm/setup.h
> @@ -16,6 +16,7 @@ typedef enum {
>      BOOTMOD_KERNEL,
>      BOOTMOD_RAMDISK,
>      BOOTMOD_XSM,
> +    BOOTMOD_GUEST_DTB,
>      BOOTMOD_UNKNOWN
>  }  bootmodule_kind;


-- 
Volodymyr Babchuk at EPAM
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.