All of lore.kernel.org
 help / color / mirror / Atom feed
From: Julien Grall <julien.grall@linaro.org>
To: Ian Campbell <Ian.Campbell@citrix.com>
Cc: stefano.stabellini@eu.citrix.com, andre.przywara@linaro.org,
	patches@linaro.org, xen-devel@lists.xen.org
Subject: Re: [PATCH V1 27/29] xen/dts: device_get_reg: cells are 32 bits big endian value
Date: Tue, 10 Sep 2013 12:08:23 +0100	[thread overview]
Message-ID: <522EFDA7.8040802@linaro.org> (raw)
In-Reply-To: <1378727843.19967.86.camel@kazak.uk.xensource.com>

On 09/09/2013 12:57 PM, Ian Campbell wrote:
> On Wed, 2013-08-28 at 15:47 +0100, Julien Grall wrote:
>> Device tree cells are 32-bit big endian value. Use __be32 to avoid confusion
>> later.
> 
> These are only used by sparse, right? So we wouldn't expect this to
> actually save us from any mistakes unless we make Xen support the use of
> sparse? (IOW I shouldn't rely on this and not think about this too hard
> during patch review because the compiler will get it right for me)

Rigth. I think it also helps the developer to know that value may not
have the same endianess as the processor.

>> Also replace get_val call by dt_next_cell.
> 
> Would prefer this separately.
> 
>> Signed-off-by: Julien Grall <julien.grall@linaro.org>
> 
> Acked-by: Ian Campbell <ian.campbell@citrix.com>
> (on both patches if you split)

I will split the patch in 2 parts.

> 
>> ---
>>  xen/common/device_tree.c |   28 +++++++---------------------
>>  1 file changed, 7 insertions(+), 21 deletions(-)
>>
>> diff --git a/xen/common/device_tree.c b/xen/common/device_tree.c
>> index b120585..4bc1ce4 100644
>> --- a/xen/common/device_tree.c
>> +++ b/xen/common/device_tree.c
>> @@ -154,25 +154,11 @@ static bool_t __init device_tree_node_compatible(const void *fdt, int node,
>>      return 0;
>>  }
>>  
>> -static void __init get_val(const u32 **cell, u32 cells, u64 *val)
>> -{
>> -    *val = 0;
>> -
>> -    if ( cells > 2 )
>> -        early_panic("dtb value contains > 2 cells\n");
>> -
>> -    while ( cells-- )
>> -    {
>> -        *val <<= 32;
>> -        *val |= fdt32_to_cpu(*(*cell)++);
>> -    }
>> -}
>> -
>> -static void __init device_tree_get_reg(const u32 **cell, u32 address_cells,
>> +static void __init device_tree_get_reg(const __be32 **cell, u32 address_cells,
>>                                         u32 size_cells, u64 *start, u64 *size)
>>  {
>> -    get_val(cell, address_cells, start);
>> -    get_val(cell, size_cells, size);
>> +    *start = dt_next_cell(address_cells, cell);
>> +    *size = dt_next_cell(size_cells, cell);
>>  }
>>  
>>  void dt_get_range(const __be32 **cell, const struct dt_device_node *np,
>> @@ -327,7 +313,7 @@ static void __init process_memory_node(const void *fdt, int node,
>>      const struct fdt_property *prop;
>>      int i;
>>      int banks;
>> -    const u32 *cell;
>> +    const __be32 *cell;
>>      paddr_t start, size;
>>      u32 reg_cells = address_cells + size_cells;
>>  
>> @@ -345,7 +331,7 @@ static void __init process_memory_node(const void *fdt, int node,
>>          return;
>>      }
>>  
>> -    cell = (const u32 *)prop->data;
>> +    cell = (const __be32 *)prop->data;
>>      banks = fdt32_to_cpu(prop->len) / (reg_cells * sizeof (u32));
>>  
>>      for ( i = 0; i < banks && early_info.mem.nr_banks < NR_MEM_BANKS; i++ )
>> @@ -396,7 +382,7 @@ static void __init process_multiboot_node(const void *fdt, int node,
>>                                            u32 address_cells, u32 size_cells)
>>  {
>>      const struct fdt_property *prop;
>> -    const u32 *cell;
>> +    const __be32 *cell;
>>      int nr;
>>      struct dt_mb_module *mod;
>>      int len;
>> @@ -418,7 +404,7 @@ static void __init process_multiboot_node(const void *fdt, int node,
>>          early_panic("fdt: node `%s': `reg` property length is too short\n",
>>                      name);
>>  
>> -    cell = (const u32 *)prop->data;
>> +    cell = (const __be32 *)prop->data;
>>      device_tree_get_reg(&cell, address_cells, size_cells,
>>                          &mod->start, &mod->size);
>>  
> 
> 


-- 
Julien Grall

  reply	other threads:[~2013-09-10 11:08 UTC|newest]

Thread overview: 90+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-08-28 14:47 [PATCH V1 00/29] Allow Xen to boot with a raw Device Tree Julien Grall
2013-08-28 14:47 ` [PATCH V1 01/29] xen/char: dt-uart: Allow the user to give a path to the node Julien Grall
2013-09-06 13:08   ` Ian Campbell
2013-09-06 13:34     ` Julien Grall
2013-08-28 14:47 ` [PATCH V1 02/29] xen: Introduce __initconst to store initial const data Julien Grall
2013-09-10 10:50   ` Ian Campbell
2013-08-28 14:47 ` [PATCH V1 03/29] xen/dts: Don't check the number of address and size cells in process_cpu_node Julien Grall
2013-09-06 16:24   ` Ian Campbell
2013-09-10 10:52     ` Ian Campbell
2013-09-10 10:54       ` Julien Grall
2013-09-10 11:03         ` Ian Campbell
2013-08-28 14:47 ` [PATCH V1 04/29] xen/dts: Constify device_tree_flattened Julien Grall
2013-09-10 10:44   ` Ian Campbell
2013-08-28 14:47 ` [PATCH V1 05/29] xen/arm: Move __PSCI* from traps.c to the header Julien Grall
2013-08-28 14:47 ` [PATCH V1 06/29] xen: Add new string function Julien Grall
2013-09-06 16:26   ` Ian Campbell
2013-09-09  9:23     ` Julien Grall
2013-08-28 14:47 ` [PATCH V1 07/29] xen: Use the right string comparison function in device tree Julien Grall
2013-09-10 10:35   ` Ian Campbell
2013-09-10 12:51     ` Julien Grall
2013-08-28 14:47 ` [PATCH V1 08/29] xen/dts: Don't add a fake property "name" in the " Julien Grall
2013-09-06 16:28   ` Ian Campbell
2013-09-09  9:30     ` Julien Grall
2013-09-09  9:40       ` Ian Campbell
2013-09-09  9:59         ` Julien Grall
2013-09-09 10:03           ` Ian Campbell
2013-08-28 14:47 ` [PATCH V1 09/29] xen/dts: Add new helpers to use " Julien Grall
2013-09-06 16:31   ` Ian Campbell
2013-09-09  9:38     ` Julien Grall
2013-08-28 14:47 ` [PATCH V1 10/29] xen/dts: Remove device_get_reg call in process_cpu_node Julien Grall
2013-09-06 16:36   ` Ian Campbell
2013-09-09  9:43     ` Julien Grall
2013-08-28 14:47 ` [PATCH V1 11/29] xen/dts: Check "reg" property length in process_multiboot_node Julien Grall
2013-09-06 16:40   ` Ian Campbell
2013-09-09 11:11     ` Julien Grall
2013-08-28 14:47 ` [PATCH V1 12/29] xen/dts: Check the CPU ID is not greater than NR_CPUS Julien Grall
2013-08-28 14:47 ` [PATCH V1 13/29] xen/video: hdlcd: Convert the driver to the new device tree API Julien Grall
2013-09-06 16:44   ` Ian Campbell
2013-08-28 14:47 ` [PATCH V1 14/29] xen/video: hdlcd: Use early_printk instead of printk Julien Grall
2013-09-06 16:48   ` Ian Campbell
2013-09-09 11:21     ` Julien Grall
2013-08-28 14:47 ` [PATCH V1 15/29] xen/arm: Use dt_device_match to avoid multiple if conditions Julien Grall
2013-09-06 16:50   ` Ian Campbell
2013-08-28 14:47 ` [PATCH V1 16/29] xen/arm: Build DOM0 FDT by browsing the device tree structure Julien Grall
2013-09-09 11:33   ` Ian Campbell
2013-09-09 12:26     ` Julien Grall
2013-09-09 12:39       ` Ian Campbell
2013-09-09 21:53         ` Julien Grall
2013-09-10  8:58           ` Ian Campbell
2013-09-10 10:39             ` Julien Grall
2013-09-10 10:47               ` Ian Campbell
2013-09-10 10:51                 ` Julien Grall
2013-08-28 14:47 ` [PATCH V1 17/29] xen/arm: Mark each device used by Xen as disabled in DOM0 FDT Julien Grall
2013-09-09 11:37   ` Ian Campbell
2013-09-09 21:53     ` Julien Grall
2013-09-10  9:01       ` Ian Campbell
2013-08-28 14:47 ` [PATCH V1 18/29] xen/arm: Don't map disabled device in DOM0 Julien Grall
2013-09-09 11:40   ` Ian Campbell
2013-09-09 21:59     ` Julien Grall
2013-09-10  9:03       ` Ian Campbell
2013-08-28 14:47 ` [PATCH V1 19/29] xen/arm: Create a fake PSCI node in dom0 device tree Julien Grall
2013-09-09 11:41   ` Ian Campbell
2013-09-09 22:04     ` Julien Grall
2013-09-10  9:04       ` Ian Campbell
2013-08-28 14:47 ` [PATCH V1 20/29] xen/arm: Create a fake cpus " Julien Grall
2013-09-09 11:44   ` Ian Campbell
2013-08-28 14:47 ` [PATCH V1 21/29] xen/arm: Create a fake GIC " Julien Grall
2013-09-09 11:49   ` Ian Campbell
2013-09-10 10:49     ` Julien Grall
2013-09-10 13:02       ` Ian Campbell
2013-08-28 14:47 ` [PATCH V1 22/29] xen/arm: Create a fake timer " Julien Grall
2013-09-09 11:51   ` Ian Campbell
2013-09-10 10:56     ` Julien Grall
2013-09-10 13:02       ` Ian Campbell
2013-08-28 14:47 ` [PATCH V1 23/29] xen/arm: Add new platform specific callback device_is_blacklist Julien Grall
2013-09-09 11:52   ` Ian Campbell
2013-08-28 14:47 ` [PATCH V1 24/29] xen/arm: vexpress: Blacklist a list of board specific devices Julien Grall
2013-09-09 11:54   ` Ian Campbell
2013-09-10 11:03     ` Julien Grall
2013-08-28 14:47 ` [PATCH V1 25/29] xen/arm: exynos5: Blacklist MCT device Julien Grall
2013-09-09 11:55   ` Ian Campbell
2013-08-28 14:47 ` [PATCH V1 26/29] xen/dts: Clean up the exported API for device tree Julien Grall
2013-08-28 14:47 ` [PATCH V1 27/29] xen/dts: device_get_reg: cells are 32 bits big endian value Julien Grall
2013-09-09 11:57   ` Ian Campbell
2013-09-10 11:08     ` Julien Grall [this message]
2013-08-28 14:47 ` [PATCH V1 28/29] xen/arm: Check if the device is available before using it Julien Grall
2013-08-28 14:47 ` [PATCH V1 29/29] ARM: parse separate DT properties for different commandlines Julien Grall
2013-09-09 11:59   ` Ian Campbell
2013-09-09 14:06     ` Andre Przywara
2013-09-10 10:50 ` [PATCH V1 00/29] Allow Xen to boot with a raw Device Tree Ian Campbell

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=522EFDA7.8040802@linaro.org \
    --to=julien.grall@linaro.org \
    --cc=Ian.Campbell@citrix.com \
    --cc=andre.przywara@linaro.org \
    --cc=patches@linaro.org \
    --cc=stefano.stabellini@eu.citrix.com \
    --cc=xen-devel@lists.xen.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 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.