Signed-off-by: Anand Vastrad <[email protected]>
---
 ...-file-referance-to-dev-mei0-remove-select.patch | 91 ++++++++++++++++++++++
 common/recipes-bsp/amt/lms8_8.0.0-7.bb             |  1 +
 2 files changed, 92 insertions(+)
 create mode 100644 
common/recipes-bsp/amt/lms/0003-Fix-device-file-referance-to-dev-mei0-remove-select.patch

diff --git 
a/common/recipes-bsp/amt/lms/0003-Fix-device-file-referance-to-dev-mei0-remove-select.patch
 
b/common/recipes-bsp/amt/lms/0003-Fix-device-file-referance-to-dev-mei0-remove-select.patch
new file mode 100644
index 0000000..433d301
--- /dev/null
+++ 
b/common/recipes-bsp/amt/lms/0003-Fix-device-file-referance-to-dev-mei0-remove-select.patch
@@ -0,0 +1,91 @@
+Fix device file referance to /dev/mei0, remove select post write.
+
+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.
+
+Upstream-Status: Pending
+
+Signed-off-by: Anand Vastrad <[email protected]>
+---
+ src/mei/MEILinux.cpp | 43 +++++++------------------------------------
+ 1 file changed, 7 insertions(+), 36 deletions(-)
+
+diff --git a/src/mei/MEILinux.cpp b/src/mei/MEILinux.cpp
+index 1e9d28f..6d23f54 100755
+--- a/src/mei/MEILinux.cpp
++++ b/src/mei/MEILinux.cpp
+@@ -94,13 +94,17 @@ bool MEILinux::Init(unsigned char reqProtocolVersion)
+               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::ReceiveMessage(unsigned char *buffer, int 
len, unsigned long timeo
+ 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 @@ int MEILinux::SendMessage(const unsigned char *buffer, 
int len, unsigned long ti
+               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();
+       }
+-- 
+2.7.4
+
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..145b307 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-Fix-device-file-referance-to-dev-mei0-remove-select.patch \
            "
 
 COMPATIBLE_HOST = '(i.86|x86_64).*-linux'
-- 
2.7.4

-- 
_______________________________________________
meta-intel mailing list
[email protected]
https://lists.yoctoproject.org/listinfo/meta-intel

Reply via email to