Hi meta-intel@yocto LMS8 is currently broken on meta-intel Yocto repository. Attached patch(same as below plain text) gets LMS8 working on meta-intel Yocto. Please pick this patch into meta-intel Yocto.
Thanks, Anand Vastrad ---------------------------------------------------------------------- Added /dev/mei0 device file reference. Fix select timeout on SendMessage. LMS uses /dev/mei character device which is absent on current kernel versions causing LMS fail to initialize. LMS sends messages to MEI with a post select timeout. Select timeout causes SendMessage to fail causing LMS to not to communicate properly with MEI. Adding /dev/mei0 device file reference to check first and then /dev/mei sucessfully initializes LMS. Rely on write return length and remove select with timeout to fix communication with MEI. Signed-off-by: Anand Vishwanath Vastrad <[email protected]> diff --git a/common/recipes-bsp/amt/lms/0003-device-file-reference-fix.patch b/common/recipes-bsp/amt/lms/0003-device-file-reference-fix.patch new file mode 100644 index 0000000..d616731 --- /dev/null +++ b/common/recipes-bsp/amt/lms/0003-device-file-reference-fix.patch @@ -0,0 +1,73 @@ +--- lms8_8.0.0-7.orig/src/mei/MEILinux.cpp 2012-10-11 05:16:05.000000000 -0700 ++++ lms8_8.0.0-7/src/mei/MEILinux.cpp 2017-06-21 15:14:13.725853901 -0700 +@@ -94,13 +94,17 @@ + Deinit(); + } + +- _fd = open("/dev/mei", O_RDWR); ++ _fd = open("/dev/mei0", O_RDWR); + + if (_fd == -1 ) { + if (_verbose) { +- fprintf(stderr, "Error: Cannot establish a handle to the MEI driver\n"); ++ fprintf(stderr, "Warning: Cannot establish a handle to the MEI driver mei0, retrying with mei \n"); ++ } ++ _fd = open("/dev/mei", O_RDWR); ++ if (_fd == -1 ) { ++ fprintf(stderr, "Error: Cannot establish a handle to the MEI driver mei\n"); ++ return false; + } +- return false; + } + _initialized = true; + +@@ -181,13 +185,7 @@ + int MEILinux::SendMessage(const unsigned char *buffer, int len, unsigned long timeout) + { + int rv = 0; +- int return_length =0; + int error = 0; +- fd_set set; +- struct timeval tv; +- +- tv.tv_sec = timeout / 1000; +- tv.tv_usec =(timeout % 1000) * 1000000; + + if (_verbose) { + fprintf(stdout, "call write length = %d\n", len); +@@ -198,35 +196,8 @@ + if (_verbose) { + fprintf(stderr,"write failed with status %d %d\n", rv, error); + } +- goto out; +- } +- +- return_length = rv; +- +- FD_ZERO(&set); +- FD_SET(_fd, &set); +- rv = select(_fd+1 ,&set, NULL, NULL, &tv); +- if (rv > 0 && FD_ISSET(_fd, &set)) { +- if (_verbose) { +- fprintf(stderr, "write success\n"); +- } + } +- else if (rv == 0) { +- if (_verbose) { +- fprintf(stderr, "write failed on timeout with status\n"); +- } +- goto out; +- } +- else { //rv<0 +- if (_verbose) { +- fprintf(stderr, "write failed on select with status %d\n", rv); +- } +- goto out; +- } +- +- rv = return_length; + +-out: + if (rv < 0) { + Deinit(); + } diff --git a/common/recipes-bsp/amt/lms8_8.0.0-7.bb b/common/recipes-bsp/amt/lms8_8.0.0-7.bb index 842e34a..e50b3e8 100644 --- a/common/recipes-bsp/amt/lms8_8.0.0-7.bb +++ b/common/recipes-bsp/amt/lms8_8.0.0-7.bb @@ -12,6 +12,7 @@ SRC_URI = "http://software.intel.com/sites/default/files/${BPN}-${PV}.tar.gz \ file://0001-Protocol.cpp-Add-whitespace-for-gcc6-compile-error.patch \ file://0001-Include-sys-select.h-for-fd_set.patch \ file://0002-Use-proper-netinet-in.h-API.patch \ + file://0003-device-file-reference-fix.patch \ " COMPATIBLE_HOST = '(i.86|x86_64).*-linux'
devicefileRefence-fix.patch
Description: devicefileRefence-fix.patch
-- _______________________________________________ meta-intel mailing list [email protected] https://lists.yoctoproject.org/listinfo/meta-intel
