
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 marex@denx.de Cc: Jagan Teki jagan@amarulasolutions.com Cc: Patrick Delaunay patrick.delaunay@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