Analyzers
Talk to fellow users of Intel Analyzer tools (Intel VTune™ Profiler, Intel Advisor)
5116 Discussions

SEP (2017.1.0.486011) does not build on linux-4.10.8

Oliver_K_
Beginner
1,126 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
1,126 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


 

 

0 Kudos
Oliver_K_
Beginner
1,126 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

0 Kudos
Oliver_K_
Beginner
1,126 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);

 

0 Kudos
Oliver_K_
Beginner
1,126 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

0 Kudos
Alexey_B_Intel2
Employee
1,126 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.

 

 

 

0 Kudos
Reply