On 3/29/21 4:09 AM, Marek Vasut wrote:
On 3/29/21 3:59 AM, Tom Rini wrote:
On Mon, Mar 29, 2021 at 03:32:51AM +0200, Marek Vasut wrote:
On 3/28/21 11:30 PM, Tom Rini wrote:
On Fri, Feb 26, 2021 at 03:21:24PM +0100, Marek Vasut wrote:

The spi_get_bus_and_cs() may be called on the same bus and chipselect
with different frequency or mode. This is valid usecase, but the code
fails to notify the controller of such a configuration change. Call
spi_set_speed_mode() in case bus frequency or bus mode changed to let
the controller update the configuration.

The problem can easily be triggered using the sspi command:
=> sspi 0:0@1000
=> sspi 0:0@2000
Without this patch, both transfers happen at 1000 Hz. With this patch,
the later transfer happens correctly at 2000 Hz.

Signed-off-by: Marek Vasut <ma...@denx.de>
Cc: Jagan Teki <ja...@amarulasolutions.com>
Cc: Patrick Delaunay <patrick.delau...@st.com>

So, very reliably I can make:
https://source.denx.de/u-boot/u-boot/-/jobs/245517
happen locally as well building with clang.  It's not obvious to me why
the test now fails however.

Can you please be more specific / clear ? I have no idea what those 300
lines of cryptic output mean, nor what are you trying to say by the above,
sorry.

If you build with clang, for sandbox, and run the tests, U-Boot crashes
in the unit tests that you start with "ut dm".

And that is related to this patch somehow ? How ?

... after further discussion off-list to get a better test case description ...

It seems the problem is in sound_beep() and it is unrelated to this patch, as the same problem happens with / without this patch being applied, on:

a7d3ac61482 ("Merge branch '2021-03-28-assorted-bugfixes'")

$ clang --version
Debian clang version 11.0.1-2
...
$ make CC=clang HOSTCC=clang sandbox_defconfig
$ make CC=clang HOSTCC=clang
$ gdb --args ./u-boot -d arch/sandbox/dts/test.dtb
=> ut dm
...
Program received signal SIGSEGV, Segmentation fault.
dlfree (mem=<optimized out>, mem@entry=0x15c19c50) at common/dlmalloc.c:1623
1623 if (!(inuse_bit_at_offset(next, nextsz))) /* consolidate forward */
(gdb) bt
#0 dlfree (mem=<optimized out>, mem@entry=0x15c19c50) at common/dlmalloc.c:1623 #1 0x00000000004759e3 in sound_beep (dev=0x15c05580, msecs=<optimized out>, frequency_hz=100)
    at drivers/sound/sound-uclass.c:118
#2 0x000000000055e083 in dm_test_sound (uts=0x652400 <global_dm_test_state>) at test/dm/sound.c:28
#3  0x0000000000514c4d in dm_do_test (uts=0x652400 <global_dm_test_state>,
test=test@entry=0x621520 <_u_boot_list_2_dm_test_2_dm_test_sound>, of_live=<optimized out>) at test/dm/test-main.c:107 #4 0x00000000005147a4 in dm_test_main (test_name=0x0) at test/dm/test-main.c:189 #5 0x00000000004420c8 in cmd_call (cmdtp=0x61ebf8 <_u_boot_list_2_cmd_2_ut>, flag=<optimized out>, argc=2, argv=0x15bd63d0,
    repeatable=0x7fffffffda34) at common/command.c:580
#6 cmd_process (flag=<optimized out>, flag@entry=0, argc=<optimized out>, argv=0x15bd63d0, repeatable=0x63b97c <flag_repeat>,
    ticks=ticks@entry=0x0) at common/command.c:635
#7 0x000000000042c574 in run_pipe_real (pi=0x15bd6300) at common/cli_hush.c:1676 #8 run_list_real (pi=<optimized out>, pi@entry=0x15bd6300) at common/cli_hush.c:1873
#9  0x000000000042b415 in run_list (pi=0x15bd6300) at common/cli_hush.c:2022
#10 parse_stream_outer (inp=inp@entry=0x7fffffffdbe8, flag=<optimized out>, flag@entry=2) at common/cli_hush.c:3206
#11 0x000000000042b57a in parse_file_outer () at common/cli_hush.c:3289
#12 0x0000000000441517 in cli_loop () at common/cli.c:230
#13 0x000000000042a0ad in main_loop () at common/main.c:66
#14 0x000000000042d57e in run_main_loop () at common/board_r.c:588
#15 0x000000000042d32e in initcall_run_list (init_sequence=<optimized out>) at /u-boot/include/initcall.h:46 #16 board_init_r (new_gd=<optimized out>, dest_addr=dest_addr@entry=0) at common/board_r.c:830 #17 0x0000000000403a85 in main (argc=3, argv=0x7fffffffdfa8) at arch/sandbox/cpu/start.c:498

Reply via email to