intel amt drivers fail to compile on linux

intel amt drivers fail to compile on linux

imagem de Rory S.

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.

7 posts / 0 new
Último post
Para obter mais informações sobre otimizações de compiladores, consulte Aviso sobre otimizações.
imagem de Gael Hofemeier (Intel)

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!

Follow me on Twitter: @GHIntelBlogs Facebook: https://www.facebook.com/gh.intelblogs
imagem de Rory S.

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!

imagem de Gael Hofemeier (Intel)

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.

Follow me on Twitter: @GHIntelBlogs Facebook: https://www.facebook.com/gh.intelblogs
imagem de Peter L.

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 [M]  /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!

imagem de Peter L.
Best Reply

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.

imagem de Gael Hofemeier (Intel)

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

Follow me on Twitter: @GHIntelBlogs Facebook: https://www.facebook.com/gh.intelblogs

Faça login para deixar um comentário.