Analyzers
Support for Analyzers (Intel VTune™ Profiler, Intel Advisor, Intel Inspector)
Announcements
Welcome to the Intel Community. If you get an answer you like, please mark it as an Accepted Solution to help others. Thank you!

SEP (2017.1.0.486011) does not build on linux-4.10.8

Oliver_K_
Beginner
281 Views

I tried to get the SEP drive compiled - un fortunately it seams that it doesn't compile for Linux kernel 4.10.8.

Does some updated sources exist?

/opt/intel/vtune_amplifier_xe_2017.1.0.486011/sepdk/src/vtsspp/user_vm.c: In Funktion »vtss_user_vm_page_pin«:
/opt/intel/vtune_amplifier_xe_2017.1.0.486011/sepdk/src/vtsspp/user_vm.c:290:72: Warnung: Übergabe des Arguments 4 von »get_user_pages« erzeugt Zeiger von Ganzzahl ohne Typkonvertierung [-Wint-conversion]
         rc = vtss_get_user_pages(this->m_task, this->m_mm, addr, 1, 0, 1, &this->m_page, &this->m_vma);
                                                                        ^
/opt/intel/vtune_amplifier_xe_2017.1.0.486011/sepdk/src/vtsspp/user_vm.c:270:115: Anmerkung: in Definition des Makros »vtss_get_user_pages«
 #define vtss_get_user_pages(task, mm, start,nr_pages,write,force, pages,vmas) get_user_pages(start,nr_pages,write,force, pages,vmas)
                                                                                                                   ^~~~~
In file included from /opt/intel/vtune_amplifier_xe_2017.1.0.486011/sepdk/src/vtsspp/user_vm.h:34:0,
                 from /opt/intel/vtune_amplifier_xe_2017.1.0.486011/sepdk/src/vtsspp/user_vm.c:34:
./include/linux/mm.h:1271:6: Anmerkung: »struct page **« erwartet, aber Argument hat Typ »int«
 long get_user_pages(unsigned long start, unsigned long nr_pages,
      ^~~~~~~~~~~~~~
/opt/intel/vtune_amplifier_xe_2017.1.0.486011/sepdk/src/vtsspp/user_vm.c:290:75: Fehler: Übergabe des Arguments 5 von »get_user_pages« von inkompatiblem Zeigertyp [-Werror=incompatible-pointer-types]
         rc = vtss_get_user_pages(this->m_task, this->m_mm, addr, 1, 0, 1, &this->m_page, &this->m_vma);
                                                                           ^
/opt/intel/vtune_amplifier_xe_2017.1.0.486011/sepdk/src/vtsspp/user_vm.c:270:122: Anmerkung: in Definition des Makros »vtss_get_user_pages«
 #define vtss_get_user_pages(task, mm, start,nr_pages,write,force, pages,vmas) get_user_pages(start,nr_pages,write,force, pages,vmas)
                                                                                                                          ^~~~~
In file included from /opt/intel/vtune_amplifier_xe_2017.1.0.486011/sepdk/src/vtsspp/user_vm.h:34:0,
                 from /opt/intel/vtune_amplifier_xe_2017.1.0.486011/sepdk/src/vtsspp/user_vm.c:34:
./include/linux/mm.h:1271:6: Anmerkung: »struct vm_area_struct **« erwartet, aber Argument hat Typ »struct page **«
 long get_user_pages(unsigned long start, unsigned long nr_pages,
      ^~~~~~~~~~~~~~
/opt/intel/vtune_amplifier_xe_2017.1.0.486011/sepdk/src/vtsspp/user_vm.c:270:79: Fehler: zu viele Argumente für Funktion »get_user_pages«
 #define vtss_get_user_pages(task, mm, start,nr_pages,write,force, pages,vmas) get_user_pages(start,nr_pages,write,force, pages,vmas)
                                                                               ^
/opt/intel/vtune_amplifier_xe_2017.1.0.486011/sepdk/src/vtsspp/user_vm.c:290:14: Anmerkung: bei Substitution des Makros »vtss_get_user_pages«
         rc = vtss_get_user_pages(this->m_task, this->m_mm, addr, 1, 0, 1, &this->m_page, &this->m_vma);
              ^~~~~~~~~~~~~~~~~~~
In file included from /opt/intel/vtune_amplifier_xe_2017.1.0.486011/sepdk/src/vtsspp/user_vm.h:34:0,
                 from /opt/intel/vtune_amplifier_xe_2017.1.0.486011/sepdk/src/vtsspp/user_vm.c:34:
./include/linux/mm.h:1271:6: Anmerkung: hier deklariert
 long get_user_pages(unsigned long start, unsigned long nr_pages,
      ^~~~~~~~~~~~~~
cc1: Einige Warnungen werden als Fehler behandelt
make[3]: *** [scripts/Makefile.build:295: /opt/intel/vtune_amplifier_xe_2017.1.0.486011/sepdk/src/vtsspp/user_vm.o] Fehler 1
make[2]: *** [Makefile:1490: _module_/opt/intel/vtune_amplifier_xe_2017.1.0.486011/sepdk/src/vtsspp] Fehler 2
make[2]: Verzeichnis „/usr/lib/modules/4.10.8-1-ARCH/build“ wird verlassen
make[1]: [Makefile:236: all] Fehler 2 (ignoriert)
cp -f vtsspp.ko vtsspp-x32_64-4.10.8-1-ARCHsmp.ko
cp: der Aufruf von stat für 'vtsspp.ko' ist nicht möglich: Datei oder Verzeichnis nicht gefunden
make[1]: [Makefile:237: all] Fehler 1 (ignoriert)
make[1]: Verzeichnis „/opt/intel/vtune_amplifier_xe_2017.1.0.486011/sepdk/src/vtsspp“ wird verlassen

 

0 Kudos
5 Replies
Alexey_B_Intel2
Employee
281 Views

Hi Oliver,

Could you please apply attached patches inside <vtune_install_dir>/sepdk/src/vtsspp directory:

$ tar xf patch-4.10.tar
$ patch < r507896.diff
$ patch < r508426.diff


 

 

Oliver_K_
Beginner
281 Views

Hello Alexey,

unfortunately I get new errors  (missing #if etc. - unfortuantely error descriptions are in german)

/opt/intel/vtune_amplifier_xe_2017.1.0.486011/sepdk/src/vtsspp/stack.c: In Funktion »vtss_stack_dump«:
/opt/intel/vtune_amplifier_xe_2017.1.0.486011/sepdk/src/vtsspp/stack.c:411:9: Fehler: Implizite Deklaration der Funktion »dump_trace« [-Werror=implicit-function-declaration]
         dump_trace(task, regs_in, NULL, &vtss_stack_ops, &k_stk);
         ^~~~~~~~~~
/opt/intel/vtune_amplifier_xe_2017.1.0.486011/sepdk/src/vtsspp/stack.c:411:42: Fehler: »vtss_stack_ops« nicht deklariert (erste Benutzung in dieser Funktion)
         dump_trace(task, regs_in, NULL, &vtss_stack_ops, &k_stk);
                                          ^~~~~~~~~~~~~~
/opt/intel/vtune_amplifier_xe_2017.1.0.486011/sepdk/src/vtsspp/stack.c:411:42: Anmerkung: jeder nicht deklarierte Bezeichner wird nur einmal für jede Funktion, in der er vorkommt, gemeldet
/opt/intel/vtune_amplifier_xe_2017.1.0.486011/sepdk/src/vtsspp/stack.c:427:2: Fehler: #endif ohne #if
 #endif
  ^~~~~
cc1: Alle Warnungen werden als Fehler behandelt
make[3]: *** [scripts/Makefile.build:295: /opt/intel/vtune_amplifier_xe_2017.1.0.486011/sepdk/src/vtsspp/stack.o] Fehler 1
make[2]: *** [Makefile:1490: _module_/opt/intel/vtune_amplifier_xe_2017.1.0.486011/sepdk/src/vtsspp] Fehler 2
make[2]: Verzeichnis „/usr/lib/modules/4.10.8-1-ARCH/build“ wird verlassen
make[1]: [Makefile:236: all] Fehler 2 (ignoriert)
cp -f vtsspp.ko vtsspp-x32_64-4.10.8-1-ARCHsmp.ko
cp: der Aufruf von stat für 'vtsspp.ko' ist nicht möglich: Datei oder Verzeichnis nicht gefunden
make[1]: [Makefile:237: all] Fehler 1 (ignoriert)
make[1]: Verzeichnis „/opt/intel/vtune_amplifier_xe_2017.1.0.486011/sepdk/src/vtsspp“ wird verlassen

Oliver_K_
Beginner
281 Views

I could coumpile the sources if I remove the #endif at line 428 and comment out the dump_trace() call at line 411 - but I don't know if the driver will work.

/opt/intel/vtune_amplifier_xe_2017.1.0.486011/sepdk/src/vtsspp/stack.c: In Funktion »vtss_stack_dump«:
/opt/intel/vtune_amplifier_xe_2017.1.0.486011/sepdk/src/vtsspp/stack.c:412:9: Fehler: Implizite Deklaration der Funktion »dump_trace« [-Werror=implicit-function-declaration]
         dump_trace(task, regs_in, NULL, &vtss_stack_ops, &k_stk);
         ^~~~~~~~~~
/opt/intel/vtune_amplifier_xe_2017.1.0.486011/sepdk/src/vtsspp/stack.c:412:42: Fehler: »vtss_stack_ops« nicht deklariert (erste Benutzung in dieser Funktion)
         dump_trace(task, regs_in, NULL, &vtss_stack_ops, &k_stk);

 

Oliver_K_
Beginner
281 Views

I got it working by commenting out the line dump_trace() function (stack.c:412) + removing the non-started #endif (stack.c:428).

I assume that some stack related data are not sampled/used.

Oliver

Alexey_B_Intel2
Employee
281 Views

Looks like the following "ifdef" was missed after patching of your driver sources:

#if LINUX_VERSION_CODE < KERNEL_VERSION(4,9,0)

You could put it before:

     if (kernel_stack){
         /* Unwind kernel stack and get user BP if possible */
         kernel_stack_control_t k_stk;

 

Or just apply attached patch.

The patch disables kernel stacks collection for newest kernels. User stacks are not affected.

 

 

 

Reply