Hi Shuah, thank you for taking a look at this, On Tue, Sep 07, 2021 at 03:28:52PM -0600, Shuah Khan wrote:
On 9/7/21 9:40 AM, Chen Yu wrote:
Introduce a simple test for Platform Firmware Runtime Update and Telemetry drivers. It is based on ioctl to either update firmware driver or code injection, and read corresponding PFRU Telemetry log into user space.
A few things to consider and add handling for them in the test.
What happens when non-root user runs this test?
Currently the code does not distinguish between root and non-root. The next version will terminate if the user is non-root.
What happens when the pfru device doesn't exist?
Currently the code terminates if either pfru_update or pfru_telemetry device was not found.
[snip]
+}
+int main(int argc, char *argv[]) +{
- int fd_update, fd_log, fd_capsule;
- struct telem_data_info data_info;
- struct telem_info info;
- struct update_cap_info cap;
- void *addr_map_capsule;
- struct stat st;
- char *log_buf;
- int ret = 0;
- parse_options(argc, argv);
- fd_log = open("/dev/pfru/telemetry", O_RDWR);
- if (fd_log < 0) {
perror("Cannot open telemetry device...");
return 1;
- }
Is this considered an error or unsupported?
- fd_update = open("/dev/pfru/update", O_RDWR);
- if (fd_update < 0) {
perror("Cannot open code injection device...");
return 1;
- }
Same here. If test is run on platform with pfru test should skip instead of reporting failure/error.
Okay, got it. The next version will do the following to fix this: 1. If the pfru_update device is not found, the test will terminate. This is because the pfru_update driver is the fundamental driver. If this driver is not detected, there would be no information at all. 2. If the pfru_telemetry device is not found, the test will skip the log setting/retrieving. Since the pfru_telemetry driver is optional, the user can still update the firmware without checking the telemetry log.
Thanks, Chenyu