On Tue, 03 May, at 09:45:22AM, Shannon Zhao wrote: > > +static int __init fdt_find_uefi_params(unsigned long node, const char *uname, > > + int depth, void *data) > > +{ > > + struct param_info *info = data; > > + int i; > > + > > + for (i = 0; i < ARRAY_SIZE(dt_params); i++) { > > + > > + if (depth != 1 || strcmp(uname, dt_params[i].uname) != 0) { > > + info->missing = dt_params[i].params[0].name; > > + continue; > > + } > > + > So here it needs to check whether the node is /hypervisor. If so, get > the subnode "uefi". Like below: > if (strcmp(uname, "hypervisor") == 0) { > offset = of_get_flat_dt_subnode_by_name(node, "uefi"); > if (offset < 0) > return 0; > node = offset; > } Urgh, right. How about giving dt_params a const char *subnode field and doing, for (i = 0; i < ARRAY_SIZE(dt_params); i++) { const char *subnode = dt_params[i].sub_node; if (depth != 1 || strcmp(uname, dt_params[i].uname) != 0) { info->missing = dt_params[i].params[0].name; continue; } if (subnode) { offset = of_get_flat_dt_subnode_by_name(node, subnode); if (offset < 0) return 0; node = offset; } ... -- To unsubscribe from this list: send the line "unsubscribe linux-next" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html