
On Tue, Sep 26, 2023 at 03:57:34PM +0900, AKASHI Takahiro wrote:
This patch series allows users to access SCMI base protocol provided by SCMI server (platform). It will also be utilized in separate patches in the future to add sanity/validity checks for other protocols. See SCMI specification document v3.2 beta[1] for more details about SCMI base protocol.
What is currently not implemented is
- SCMI_BASE_NOTIFY_ERRORS command and notification callback mechanism
This feature won't be very useful in the current U-Boot environment.
[1] https://developer.arm.com/documentation/den0056/e/?lang=en
Test
The patch series was tested on the following platforms:
- sandbox
- qemu-arm64 with OPTEE as SCMI server
I have two problems. The first is that for sandbox, this series is not bisectable as a commits fail to build due to needing a definition in the test before it's added: /home/uboot/work/u-boot/u-boot/test/dm/scmi.c: In function 'dm_test_scmi_clocks': /home/uboot/work/u-boot/u-boot/test/dm/scmi.c:117:21: warning: implicit declaration of function 'scmi_get_protocol' [-Wimplicit-function-declaration] 117 | clock_dev = scmi_get_protocol(agent_dev, SCMI_PROTOCOL_ID_CLOCK); | ^~~~~~~~~~~~~~~~~ /home/uboot/work/u-boot/u-boot/test/dm/scmi.c:117:50: error: 'SCMI_PROTOCOL_ID_CLOCK' undeclared (first use in this function) 117 | clock_dev = scmi_get_protocol(agent_dev, SCMI_PROTOCOL_ID_CLOCK); | ^~~~~~~~~~~~~~~~~~~~~~ /home/uboot/work/u-boot/u-boot/test/dm/scmi.c:117:50: note: each undeclared identifier is reported only once for each function it appears in /home/uboot/work/u-boot/u-boot/test/dm/scmi.c: In function 'dm_test_scmi_resets': /home/uboot/work/u-boot/u-boot/test/dm/scmi.c:182:50: error: 'SCMI_PROTOCOL_ID_RESET_DOMAIN' undeclared (first use in this function) 182 | reset_dev = scmi_get_protocol(agent_dev, SCMI_PROTOCOL_ID_RESET_DOMAIN); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ make[4]: *** [/home/uboot/work/u-boot/u-boot/scripts/Makefile.build:256: test/dm/scmi.o] Error 1
Second, the series causes this failure: ========================================== FAILURES =========================================== _______________________________ test_ut[ut_dm_dm_test_scmi_cmd] _______________________________ test/py/u_boot_spawn.py:195: in expect c = os.read(self.fd, 1024).decode(errors='replace') E OSError: [Errno 5] Input/output error
During handling of the above exception, another exception occurred: test/py/tests/test_ut.py:497: in test_ut output = u_boot_console.run_command('ut ' + ut_subtest) test/py/u_boot_console_base.py:266: in run_command m = self.p.expect([self.prompt_compiled] + self.bad_patterns) test/py/u_boot_spawn.py:204: in expect raise ValueError('U-Boot exited with %s' % info) E ValueError: U-Boot exited with signal 11 (SIGSEGV) ------------------------------------ Captured stdout call ------------------------------------- => ut dm dm_test_scmi_cmd Test: dm_test_scmi_cmd: scmi.c SCMI device: scmi protocol version: 0x20000 # of agents: 2 0: platform > 1: OSPM # of protocols: 3 Clock management Reset domain management Voltage domain management vendor: U-Boot sub vendor: Sandbox impl version: 0x1 Denying access to device:0 failed (-13) Denying access to protocol:0x14 on device:0 failed (-13) Reset failed (-13) Test: dm_test_scmi_cmd: scmi.c (flat tree) SCMI device: ?n =================================== short test summary info =================================== FAILED test/py/tests/test_ut.py::test_ut[ut_dm_dm_test_scmi_cmd] - ValueError: U-Boot exited...
Which I believe CI will also produce, once the issue with htmldocs is fixed. I can't bisect it exactly as the failure shows up once the new test is added.