- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I only called ippcpGetLibVersion in the kernel-level source file test.c,
/* Some other headers */ #include "ippcp.h" #include "ippcpdefs.h" MODULE_DESCRIPTION("ipp sm3 test for crypto module"); MODULE_LICENSE("GPL"); static int __init ipp_sm3_test_init(void) { const IppLibraryVersion* lib = ippcpGetLibVersion(); printk("get ippcp version:\n%s %s %d.%d.%d.%d\n\n", lib->Name, lib->Version, lib->major, lib->minor, lib->majorBuild, lib->build); return 0; } static void __exit ipp_sm3_test_free(void) { printk("ipp_sm3_test_free.\n"); } module_init(ipp_sm3_test_init); module_exit(ipp_sm3_test_free);
And in Makefile:
TARGET = test.ko test-objs := /nonpic/libippcp.a ccflags-y += $(FLAG) -I$(KERNELDIR)/include -D__KERNEL__ -DMODULE -fno-pic -DEXPORT_SYMTAB -mcmodel=kernel
After excuting 'insmod test.ko', the console outputs:
overflow in relocation type 10 val **** 'test' likely not compiled with -mcmodel=kernel
How do I resolve this issue? Can ippcp be used in linux kernel-mode?
Some informations:
ippcpGetLibVersion in user mode returns:
ippCP AVX (e9) 2019.0.0 (r0x438f167) 2019.0.0.7084067
ippcp version: l_ippcp_2019.0.117
Compiler: cc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-3)
Architecture: Linux 3.4.87 x86_64
OS: CentOS release 6.4 (Final)
CPU: Intel(R) Xeon(R) CPU E3-1275 V2 @ 3.50GHz
----
I installed different versions of ippcp library in two machines. The other machine is Linux algo 3.13.0-32-generic #57-Ubuntu x86_64 GNU/Linux.
- If I copied libippcp.a (version 2019.0.117) to the other machine, same error occurs ('likely not compiled with mcmodel=kernel').
- But if I copied libippcp.a (version 2018.1.176) from the other machine to this one, it works!!
Now my module can be successfully loaded.
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
please provide all output from the ippcpGetLibVersion() (guess you can run it in the user mode), or please provide: library version, architecture (ia32 or x64), cpu, OS, cctools version, etc.
regards, Igor
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
also please provide part of code where you call the IPP function.
Pavel
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Igor, Pavel,
I've added more details to my question.
Maybe I should recompile the ippcp library with mcmodel=kernel, but I didn't see any configuration about mcmodel in the installation process.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
thanks for information. Please give us some time to investigate the problem. I will return 2-3 weeks late.
Pavel
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
We found a problem, thank you for the reporting. The problem will be fixed in next release.
Pavel
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi, Huang,
Thanks you for reporting of the problem. Definitely, wrong tool has been used inside IPP Crypto build procedures. Believe I've fixed that.
I've successfully re-build your sample using updated library. I don't have root rights and our IT guys did the insertion of the "test_kernel" into the Linux kernel. Seems, the module has been inserted. At least "lsmod" reports:
-bash-4.2$ lsmod | grep test
test_kernel 8255 0
Both Open Source and commercial version of IPP Crypto will be updated soon. I'll inform you as soon as update will be available,
Regards, Sergey
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page