[PATCH] fdtdec: fdtdec_get_aliases_highest_id: skip aliases to disabled nodes

Sean Anderson sean.anderson at seco.com
Fri Jun 11 19:09:04 CEST 2021



On 6/11/21 12:32 PM, Tim Harvey wrote:
 > On Thu, Apr 29, 2021 at 9:48 AM Tim Harvey <tharvey at gateworks.com> wrote:
 >>
 >> On Thu, Apr 29, 2021 at 9:10 AM Simon Glass <sjg at chromium.org> wrote:
 >>>
 >>> Hi Tim,
 >>>
 >>> On Fri, 16 Apr 2021 at 14:30, Tim Harvey <tharvey at gateworks.com> wrote:
 >>>>
 >>>> When looking for an alias with the highest id skip aliases for nodes
 >>>> that are disabled.
 >>>>
 >>>> Signed-off-by: Tim Harvey <tharvey at gateworks.com>
 >>>> ---
 >>>>   lib/fdtdec.c | 2 ++
 >>>>   1 file changed, 2 insertions(+)
 >>>>
 >>>> diff --git a/lib/fdtdec.c b/lib/fdtdec.c
 >>>> index 864589193b..d47195525a 100644
 >>>> --- a/lib/fdtdec.c
 >>>> +++ b/lib/fdtdec.c
 >>>> @@ -546,6 +546,8 @@ int fdtdec_get_alias_highest_id(const void *blob, const char *base)
 >>>>                  if (*prop != '/' || prop[len - 1] ||
 >>>>                      strncmp(name, base, base_len))
 >>>>                          continue;
 >>>> +               if (!fdtdec_get_is_enabled(blob, fdt_path_offset(blob, prop)))
 >>>> +                       continue;
 >>>
 >>> We really can't do this here. It is quite an expensive operation to
 >>> locate the node for a path.
 >>>
 >>> Why is this needed? It seems odd to have an alias pointing to a disabled device.
 >>>
 >>
 >> Simon,
 >>
 >> The issue I ran into here was with an imx6 based board that does not
 >> use the FEC ethernet on the SoC. In this case imx6qdl.dtsi delcares an
 >> alias 'thernet0 = &fec' yet the fec node is not enabled. However
 >> because fdtdec_get_alias_highest_id does not skip this alias to a
 >> disabled device any enumerated ethernet devices get an index of 1
 >> instead of 0 which is incorrect and causes the mac addresses to be
 >> misaligned.

Is this due getting mac address from the OTP? As I understand it, the
OTP mac addresses are for fec0/fec1, and not for whatever ethernet0
happens to be.

--Sean

 >>
 >> In general it is just wrong to reserve id's for disabled devices.
 >>
 >
 > Simon,
 >
 > Do you have any additional feedback on this? It has not been picked up
 > yet and does cause issues on IMX boards using dm that do not use the
 > internal SoC's fec ethernet.
 >
 > Perhaps there is a better way to resolve this?
 >
 > Best regards,
 >
 > Tim
 >


More information about the U-Boot mailing list