On Mon, 6 Apr 2020 at 08:26, Sean Anderson <sean...@gmail.com> wrote: > > Also CC Ovidiu and Niel, since I believe they were both working on patches > related to this.
+Tom for consideration for the release if there is time > > On 4/6/20 10:23 AM, Sean Anderson wrote: > > Add a test for the dm drivers command. Also fix a null pointer dereference > > revealed by said test. > > > > Signed-off-by: Sean Anderson <sean...@gmail.com> > > Reviewed-by: Bin Meng <bmeng...@gmail.com> > > Tested-by: Bin Meng <bmeng...@gmail.com> > > Reviewed-by: Simon Glass <s...@chromium.org> > > --- > > The changes in this patch were originally submitted as v3 of 7b9d60fc1ff > > "cmd: Add command to dump drivers and compatible strings" [1]. I have > > retained the Reviewed-by and Tested-by tags since no other changes besides > > rebasing on v1 have been made. > > > > [1] https://patchwork.ozlabs.org/patch/1234460/ > > > > cmd/dm.c | 4 ++-- > > drivers/core/dump.c | 3 ++- > > test/py/tests/test_dm.py | 17 +++++++++++++++++ > > 3 files changed, 21 insertions(+), 3 deletions(-) > > create mode 100644 test/py/tests/test_dm.py > > > > diff --git a/cmd/dm.c b/cmd/dm.c > > index 108707c298..7a90685f8b 100644 > > --- a/cmd/dm.c > > +++ b/cmd/dm.c > > @@ -41,7 +41,7 @@ static int do_dm_dump_devres(cmd_tbl_t *cmdtp, int flag, > > int argc, > > } > > > > static int do_dm_dump_drivers(cmd_tbl_t *cmdtp, int flag, int argc, > > - char * const argv[]) > > + char * const argv[]) > > { > > dm_dump_drivers(); > > > > @@ -94,5 +94,5 @@ U_BOOT_CMD( > > "tree Dump driver model tree ('*' = activated)\n" > > "dm uclass Dump list of instances for each uclass\n" > > "dm devres Dump list of device resources for each device\n" > > - "dm drivers Dump list of drivers and their compatible strings\n" > > + "dm drivers Dump list of drivers and their compatible strings" > > ); > > diff --git a/drivers/core/dump.c b/drivers/core/dump.c > > index e73ebeabcc..b5046398d4 100644 > > --- a/drivers/core/dump.c > > +++ b/drivers/core/dump.c > > @@ -107,7 +107,8 @@ void dm_dump_drivers(void) > > puts("Driver Compatible\n"); > > puts("--------------------------------\n"); > > for (entry = d; entry < d + n_ents; entry++) { > > - for (match = entry->of_match; match->compatible; match++) > > + for (match = entry->of_match; > > + match && match->compatible; match++) > > printf("%-20.20s %s\n", > > match == entry->of_match ? entry->name : "", > > match->compatible); > > diff --git a/test/py/tests/test_dm.py b/test/py/tests/test_dm.py > > new file mode 100644 > > index 0000000000..f6fbf8ba4c > > --- /dev/null > > +++ b/test/py/tests/test_dm.py > > @@ -0,0 +1,17 @@ > > +# SPDX-License-Identifier: GPL-2.0 > > +# Copyright (C) 2020 Sean Anderson > > + > > +import pytest > > + > > +@pytest.mark.buildconfigspec('cmd_dm') > > +def test_dm_drivers(u_boot_console): > > + """Test that each driver in `dm tree` is also listed in `dm > > drivers`.""" > > + response = u_boot_console.run_command('dm tree') > > + driver_index = response.find('Driver') > > + assert driver_index != -1 > > + drivers = (line[driver_index:].split()[0] > > + for line in response[:-1].split('\n')[2:]) > > + > > + response = u_boot_console.run_command('dm drivers') > > + for driver in drivers: > > + assert driver in response > > >