|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH] xen/arm: fdt fix duplicated ternary operator, shift operations
Hi, On 22/04/2022 19:52, Paran Lee wrote: IHMO the original code is easier to read. That said, in the two cases, I think this is a bit pointless to check if the depth is > 0 at every iteration because it will mostly be only always true but for one node. So I would go with the following code (not tested): diff --git a/xen/arch/arm/bootfdt.c b/xen/arch/arm/bootfdt.c index e318ef960386..a382e10065f9 100644 --- a/xen/arch/arm/bootfdt.c +++ b/xen/arch/arm/bootfdt.c@@ -144,10 +144,13 @@ int __init device_tree_for_each_node(const void *fdt, int node,
*/
int depth = 0;
const int first_node = node;
- u32 address_cells[DEVICE_TREE_MAX_DEPTH];
- u32 size_cells[DEVICE_TREE_MAX_DEPTH];
+ u32 address_cells[DEVICE_TREE_MAX_DEPTH + 1];
+ u32 size_cells[DEVICE_TREE_MAX_DEPTH + 1];
int ret;
+ address_cells[0] = DT_ROOT_NODE_ADDR_CELLS_DEFAULT;
+ size_cells[0] = DT_ROOT_NOT_SIZE_CELLS_DEFAULT;
+
do {
const char *name = fdt_get_name(fdt, node, NULL);
u32 as, ss;
@@ -159,13 +162,13 @@ int __init device_tree_for_each_node(const void
*fdt, int node,
continue;
}
- as = depth > 0 ? address_cells[depth-1] :
DT_ROOT_NODE_ADDR_CELLS_DEFAULT;
- ss = depth > 0 ? size_cells[depth-1] :
DT_ROOT_NODE_SIZE_CELLS_DEFAULT;
+ as = address_cells[depth];
+ ss = size_cells[depth];
- address_cells[depth] = device_tree_get_u32(fdt, node,
+ address_cells[depth + 1] = device_tree_get_u32(fdt, node,
"#address-cells", as);
- size_cells[depth] = device_tree_get_u32(fdt, node,
- "#size-cells", ss);
+ size_cells[depth + 1] = device_tree_get_u32(fdt, node,
+ "#size-cells", ss);
/* skip the first node */
if ( node != first_node )
Any thoughts?
address_cells[depth] = device_tree_get_u32(fdt, node,
fdt.c is an (old) verbatim copy from DTC (see [1]). I would rather prefer to keep this directory as a verbatim copy because it makes easier to sync with the upstream version. In fact, there are a patch on xen-devel ([1]) to re-sync. So any of your changes would be lost. Therefore, please send this change to the DTC mailing list. We will pick it up on the next re-sync. Cheers, [1] https://github.com/dgibson/dtc[2] https://lore.kernel.org/xen-devel/1636702040-116895-1-git-send-email-fnu.vikram@xxxxxxxxxx/ -- Julien Grall
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |