Intel® Business Client Software Development
Support for Intel® vPro™ software development and technologies associated with Intel vPro platforms.

intel amt drivers fail to compile on linux

Rory_S_
Beginner
873 Views

I'm trying to compile the intel LMS drivers per http://software.intel.com/en-us/articles/download-the-latest-intel-amt-open-source-drivers

However when I attmpt to make the drivers I get the following errors:

[root@localhost src]# uname -a
Linux localhost.localdomain 2.6.32.12-0.7.1.xs6.0.0.529.170661xen #1 SMP Tue Aug 30 14:15:31 EDT 2011 i686 i686 i386 GNU/Linux

[root@localhost src]# make
if g++ -DHAVE_CONFIG_H -I. -I. -I.. -I. -I./SyncLib/Include -I./mei -I./tools -D_LINUX -g -O2 -Wall -MT ATNetworkTool.o -MD -MP -MF ".deps/ATNetworkTool.Tpo" -c -o ATNetworkTool.o `test -f 'tools/ATNetworkTool.cpp' || echo './'`tools/ATNetworkTool.cpp; \
then mv -f ".deps/ATNetworkTool.Tpo" ".deps/ATNetworkTool.Po"; else rm -f ".deps/ATNetworkTool.Tpo"; exit 1; fi
tools/ATNetworkTool.cpp: In static member function 'static int ATNetworkTool::GetSockPeerIP(int, ATAddressList&, int&)':
tools/ATNetworkTool.cpp:210: error: 'struct in6_addr' has no member named '__in6_u'
make: *** [ATNetworkTool.o] Error 1

tools/ATNetworktool.cpp (line 210 in bold):

if(sa->sa_family == AF_INET6 && IN6_IS_ADDR_V4MAPPED(&addr)) //if(IN6_IS_ADDR_V4COMPAT(&addr))
{
struct in_addr demapped_addr;
memcpy(&demapped_addr.s_addr, &addr.__in6_u.__u6_addr8[12], 4);

struct sockaddr_in sa_in;
sa_in.sin_family = AF_INET;
sa_in.sin_addr = demapped_addr;
sa_in.sin_port = 0;
memset(sa_in.sin_zero,'\0',sizeof(sa_in.sin_zero));

peerAddresses.insert(ATAddress((sockaddr*)&sa_in));

return 0;
}

Any help would be apreciated.

0 Kudos
1 Solution
Peter_L_2
Novice
873 Views

It looks like err.h was patched in XS 6.2 with the same function (and, therefore, signature) that backport.h then tries to add in a conditional based on the kernel version being reported.  Commenting out the redundant declaration in backport.h seems to do the trick.

View solution in original post

0 Kudos
6 Replies
Gael_H_Intel
Moderator
873 Views

Hi - I am working on getting some information for you - while I am waiting for a response, could you tell me which version of linux you are using and which version of AMT (although probably not an issue if you are at the compiling phase at this point.)

--thanks!

0 Kudos
Rory_S_
Beginner
873 Views

HI,

I'm trying to compile on the Citrix Xenserver 6.0 DDK appliance which is based on Centos 5.

Steps I've taken so far:

Download and install Citrix xenserver 6.0 build 50762p (9/26/2011).
citrix.com -> downloads -> xenserver/product software ->  xenserver 6.0 -> main components -> Xenserver 6.0 base installation

download and import citrix xenserver 6.0 DDK

citrix.com -> downloads -> xenserver/product software ->  xenserver 6.0 -> Xenserver 6.0 base installation -> Development Components -> DDK

Import DDK:

get contents of ddk iso onto hypervisor (burn to disk, mount from nfs, etc.)
run the following command:
xe vm-import filename=cdpath/ddk/ova.xml
start ddk vm and login

download and compile drivers:

#mei
wget http://software.intel.com/file/37961
unzip 37961-mei_7.1.20.25.zip
tar zxvf  outputdir/mei-7.1.20-25.tar.gz
rm -Rf outputdir
cd mei-7.1.20
make

#make completes sucsessfully
scp  scp src/mei.ko root@hypervisor:~/

#on hypervisor:
insmod /root/mei.ko
mei.ko loads succsessfully 

#LMS
#on DDK appliance 

wget http://software.intel.com/file/37962
unzip 37962-lms_7.1.20.25.zip
tar zxvf  outputdir/lms-7.1.20-25.tar.gz
rm -Rf outputdir
cd lms-7.1.20-25 
./configure
make 

#make fails with the following error:

tools/ATNetworkTool.cpp: In static member function 'static int ATNetworkTool::GetSockPeerIP(int, ATAddressList&, int&)':
tools/ATNetworkTool.cpp:210: error: 'struct in6_addr' has no member named '__in6_u'
make[2]: *** [ATNetworkTool.o] Error 1
make[2]: Leaving directory `/root/lms-7.1.20/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/root/lms-7.1.20'
make: *** [all] Error 2

doing a google search for  'struct in6_addr' has no member named '__in6_u' turns up this page

http://www.linuxquestions.org/questions/programming-9/error-%91struct-in6_addr%92-has-no-member-named-%91in6_u%92-687702/

I've also tried compiling with both LMS 7.1.2 as well as 8.x and both produce the exact same error.

The motherboards are q77 based.

Let me know if you need the xenserver base installation or DDK iso images and I can provide them.

Thanks!

0 Kudos
Gael_H_Intel
Moderator
873 Views

As far as Linux versios go - the driver package has only been tested with SLED 11 SP2.

You will need to look at the definition of the "'struct in6_addr" on your system and use the right member instead of what the LMS code is trying to access.

0 Kudos
Peter_L_2
Novice
873 Views

When I try to compile just the mei driver (which the OP indicates was compiling under 6.0 DDK) under the Xen 6.2 DDK, I get errors:

[root@localhost mei-7.1.20]# make
cd src && make
make[1]: Entering directory `/root/mei-7.1.20/src'
make -C /lib/modules/`uname -r`/build M=`pwd` modules
make[2]: Entering directory `/usr/src/kernels/2.6.32.43-0.4.1.xs1.8.0.839.170780xen-i686'
  CC   /root/mei-7.1.20/src/init.o
In file included from /root/mei-7.1.20/src/hw.h:23,
                 from /root/mei-7.1.20/src/init.c:22:
/root/mei-7.1.20/src/backport/backport.h:39: error: redefinition of 'IS_ERR_OR_NULL'
include/linux/err.h:38: error: previous definition of 'IS_ERR_OR_NULL' was here
/root/mei-7.1.20/src/init.c: In function 'allocate_me_clients_storage':
/root/mei-7.1.20/src/init.c:483: warning: format '%lx' expects type 'long unsigned int', but argument 4 has type 'unsigned int'
make[3]: *** [/root/mei-7.1.20/src/init.o] Error 1
make[2]: *** [_module_/root/mei-7.1.20/src] Error 2
make[2]: Leaving directory `/usr/src/kernels/2.6.32.43-0.4.1.xs1.8.0.839.170780xen-i686'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/root/mei-7.1.20/src'
make: *** [all] Error 2

This isn't my bailiwick, but I'll dig in to the source tomorrow to see if anything jumps out at me.  Feedback from the Intel side or anyone more familiar with the Linux mei driver code would be welcome and appreciated.

Thanks!

0 Kudos
Peter_L_2
Novice
874 Views

It looks like err.h was patched in XS 6.2 with the same function (and, therefore, signature) that backport.h then tries to add in a conditional based on the kernel version being reported.  Commenting out the redundant declaration in backport.h seems to do the trick.

0 Kudos
Gael_H_Intel
Moderator
873 Views

Thanks for the update, Peter.  I'm glad you figured it out.

0 Kudos
Reply