[meta-intel] Yocto meta-intel LMS patch:

Vastrad, Anand anand.vastrad at intel.com
Thu Jul 6 16:12:20 PDT 2017


Hi meta-intel at 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 <anand.vastrad at intel.com>

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'


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.yoctoproject.org/pipermail/meta-intel/attachments/20170706/8079f505/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: devicefileRefence-fix.patch
Type: application/octet-stream
Size: 3387 bytes
Desc: devicefileRefence-fix.patch
URL: <http://lists.yoctoproject.org/pipermail/meta-intel/attachments/20170706/8079f505/attachment-0001.obj>


More information about the meta-intel mailing list