diff options
-rw-r--r-- | .SRCINFO | 12 | ||||
-rw-r--r-- | PKGBUILD | 11 | ||||
-rw-r--r-- | openonload-201606-bug64486-63982-ilog2-no_KALLSYMS_ALL.patch | 135 |
3 files changed, 9 insertions, 149 deletions
@@ -1,9 +1,9 @@ # Generated by mksrcinfo v8 -# Mon Aug 15 16:11:50 UTC 2016 +# Wed Nov 9 15:08:21 UTC 2016 pkgbase = openonload pkgdesc = A high performance network stack from Solarflare. - pkgver = 201606 - pkgrel = 2 + pkgver = 201606.u1 + pkgrel = 1 url = http://www.openonload.org/ install = openonload.install arch = i686 @@ -17,18 +17,16 @@ pkgbase = openonload options = !makeflags options = !buildflags options = staticlibs - source = http://www.openonload.org/download/openonload-201606.tgz + source = http://www.openonload.org/download/openonload-201606-u1.tgz source = openonload.install source = openonload.service source = openonload-201310-cpp11-space-literal-fix.patch source = openonload-201606-archlinux.patch - source = openonload-201606-bug64486-63982-ilog2-no_KALLSYMS_ALL.patch - sha512sums = 23207e9c701ccf85cdc70229390dfdf5b351d362509a1fd8d8666231f1061fe4054a95dc1d4968ce8c43be490abaf405f252f07a07eec72771b015cf9ff01b16 + sha512sums = 0bf6eeffbd9c1c3275c8bef6f53f8bcab7fc59677da65a26d40125048916da974c9bff7d37f6bdf6d106464e18ff0264a997ff850e91ee1163bd87a254ec72cd sha512sums = ac464250f2fb96d13e8ae129bac80c03f8cca62e450fdd765f24ccd064e28e9942e4a16ebc693e75c71fc1eb86c3a1b08337b2e39c6c618e129d8ec87d872bdb sha512sums = b7e4529e37c64f99c660ca9b58f388cdd8f0d2f250ba875eb210f4909bb1f1c985a065aae64c048ca6f824adc6e3176c6eae1f582c049631326db73e939edd7b sha512sums = a1d23b60b699c04caee93eb18d855dbe2e65d2115f10eb3771d1a2f04eea8d3b8042550152a5f96140aca759db10c3fbebdde85dbebcf46505c15f2ba7934bdb sha512sums = c368ce3ed7987d1b374f1e671eb21bc80af4b927e4db4a229712f334ee4843f5921fb64c7ac83df214a9cc37134f8a3360273e9ba9496ff56c329476d26d050a - sha512sums = e38384d05987729e56ef293a8f25469ed22733e2513a02a91d1c70d6fd924884078fe27d10cea6b1b5a9b1a76f94906f633b3856730089f9cfde76ba381d1e36 pkgname = openonload @@ -18,8 +18,8 @@ pkgname='openonload' pkgdesc="A high performance network stack from Solarflare." -pkgver='201606' -pkgrel=2 +pkgver='201606.u1' +pkgrel=1 arch=('i686' 'x86_64') url='http://www.openonload.org/' license=('custom') @@ -31,14 +31,12 @@ source=("http://www.openonload.org/download/openonload-${pkgver//\./-}.tgz" 'openonload.service' 'openonload-201310-cpp11-space-literal-fix.patch' 'openonload-201606-archlinux.patch' - 'openonload-201606-bug64486-63982-ilog2-no_KALLSYMS_ALL.patch' ) -sha512sums=('23207e9c701ccf85cdc70229390dfdf5b351d362509a1fd8d8666231f1061fe4054a95dc1d4968ce8c43be490abaf405f252f07a07eec72771b015cf9ff01b16' +sha512sums=('0bf6eeffbd9c1c3275c8bef6f53f8bcab7fc59677da65a26d40125048916da974c9bff7d37f6bdf6d106464e18ff0264a997ff850e91ee1163bd87a254ec72cd' 'ac464250f2fb96d13e8ae129bac80c03f8cca62e450fdd765f24ccd064e28e9942e4a16ebc693e75c71fc1eb86c3a1b08337b2e39c6c618e129d8ec87d872bdb' 'b7e4529e37c64f99c660ca9b58f388cdd8f0d2f250ba875eb210f4909bb1f1c985a065aae64c048ca6f824adc6e3176c6eae1f582c049631326db73e939edd7b' 'a1d23b60b699c04caee93eb18d855dbe2e65d2115f10eb3771d1a2f04eea8d3b8042550152a5f96140aca759db10c3fbebdde85dbebcf46505c15f2ba7934bdb' - 'c368ce3ed7987d1b374f1e671eb21bc80af4b927e4db4a229712f334ee4843f5921fb64c7ac83df214a9cc37134f8a3360273e9ba9496ff56c329476d26d050a' - 'e38384d05987729e56ef293a8f25469ed22733e2513a02a91d1c70d6fd924884078fe27d10cea6b1b5a9b1a76f94906f633b3856730089f9cfde76ba381d1e36') + 'c368ce3ed7987d1b374f1e671eb21bc80af4b927e4db4a229712f334ee4843f5921fb64c7ac83df214a9cc37134f8a3360273e9ba9496ff56c329476d26d050a') install="openonload.install" @@ -53,7 +51,6 @@ prepare() { patch -p1 < "${srcdir}/openonload-201310-cpp11-space-literal-fix.patch" patch -p1 < "${srcdir}/openonload-201606-archlinux.patch" - patch -p1 < "${srcdir}/openonload-201606-bug64486-63982-ilog2-no_KALLSYMS_ALL.patch" } build() { diff --git a/openonload-201606-bug64486-63982-ilog2-no_KALLSYMS_ALL.patch b/openonload-201606-bug64486-63982-ilog2-no_KALLSYMS_ALL.patch deleted file mode 100644 index 9015aab27489..000000000000 --- a/openonload-201606-bug64486-63982-ilog2-no_KALLSYMS_ALL.patch +++ /dev/null @@ -1,135 +0,0 @@ -diff -ur openonload-201606/src/driver/linux_onload/x86_linux_trampoline.c openonload-201606_patched/src/driver/linux_onload/x86_linux_trampoline.c ---- openonload-201606/src/driver/linux_onload/x86_linux_trampoline.c 2016-06-30 11:42:18.000000000 +0100 -+++ openonload-201606_patched/src/driver/linux_onload/x86_linux_trampoline.c 2016-08-15 16:24:49.526866000 +0100 -@@ -290,19 +290,22 @@ - */ - static void **find_syscall_table(void) - { -- unsigned long *idtbase = NULL; -- unsigned char *p, *end, idt[6]; -+ unsigned char *p = NULL; -+ unsigned char *end; - void **result = NULL; - - #ifdef ERFM_HAVE_NEW_KALLSYMS - /* Linux-4.4 & 4.5: */ -- idtbase = efrm_find_ksym("do_syscall_32_irqs_on"); -+ p = efrm_find_ksym("do_syscall_32_irqs_on"); - /* Linux-4.6: */ -- if( idtbase == NULL ) -- idtbase = efrm_find_ksym("do_int80_syscall_32"); -+ if( p == NULL ) -+ p = efrm_find_ksym("do_int80_syscall_32"); - #endif - -- if( idtbase == NULL ) { -+ if( p == NULL ) { -+ unsigned long *idtbase; -+ unsigned char idt[6]; -+ - __asm__("sidt %0" : "=m"(idt)); - idtbase = (unsigned long *)(idt[2] | (idt[3] << 8) | (idt[4] << 16) - | (idt[5] << 24)); -@@ -311,9 +314,6 @@ - p = (unsigned char *)((idtbase[0x80*2] & 0xffff) - | (idtbase[0x80*2+1] & 0xffff0000)); - } -- else { -- p = (void *)idtbase; -- } - TRAMP_DEBUG("int 0x80 entry point at %p", p); - end = p + 1024 - 7; - while (p < end) { -@@ -366,30 +366,45 @@ - static void **find_ia32_syscall_table(void) - { - unsigned long result = 0; -- unsigned char *p, *pend; -- unsigned int *idtbase; -- unsigned char idt[10]; -+ unsigned char *p = NULL; -+ unsigned char *pend; - - #ifdef ERFM_HAVE_NEW_KALLSYMS -- void *addr; -- -+#if 0 -+ /* It works with CONFIG_KALLSYMS_ALL=y only. */ - /* Linux>=4.2: ia32_sys_call_table is not a local variable any more, so -- * we can use kallsyms to find it. */ -+ * we can use kallsyms to find it if CONFIG_KALLSYMS_ALL=y. */ -+ void *addr; - addr = efrm_find_ksym("ia32_sys_call_table"); - if( addr != NULL ) - return addr; - #endif - -- /* linux<4.4: ia32_sys_call_table is an internal variable in -- * linux/arch/x86/entry/entry_64_compat.S, and we can parse this asm -- * code. */ -- __asm__("sidt %0" : "=m"(idt)); -- idtbase = *(unsigned int **)(&idt[2]); -- TRAMP_DEBUG("idt base=%p, entry 0x80=%08x,%08x,%08x", idtbase, -- idtbase[0x80*4], idtbase[0x80*4+1], idtbase[0x80*4+2]); -- result = (idtbase[0x80*4] & 0xffff) | (idtbase[0x80*4+1] & 0xffff0000) -- | ((unsigned long)idtbase[0x80*4+2] << 32); -- p = (unsigned char *)result; -+ /* Linux-4.4 & 4.5: do_syscall_32_irqs_off is a function, so it does not -+ * require CONFIG_KALLSYMS_ALL=y. */ -+ p = efrm_find_ksym("do_syscall_32_irqs_off"); -+ /* Linux-4.6: */ -+ if( p == NULL ) -+ p = efrm_find_ksym("do_int80_syscall_32"); -+#endif -+ -+ if( p == NULL ) { -+ /* linux<4.4: get ia32_sys_call_table variable from asm code at -+ * linux/arch/x86/entry/entry_64_compat.S. */ -+ unsigned int *idtbase; -+ unsigned char idt[10]; -+ -+ __asm__("sidt %0" : "=m"(idt)); -+ idtbase = *(unsigned int **)(&idt[2]); -+ TRAMP_DEBUG("idt base=%p, entry 0x80=%08x,%08x,%08x", idtbase, -+ idtbase[0x80*4], idtbase[0x80*4+1], idtbase[0x80*4+2]); -+ result = (idtbase[0x80*4] & 0xffff) | (idtbase[0x80*4+1] & 0xffff0000) -+ | ((unsigned long)idtbase[0x80*4+2] << 32); -+ p = (unsigned char *)result; -+ } -+ else { -+ result = (unsigned long)p; -+ } - TRAMP_DEBUG("int 0x80 entry point at %p", p); - pend = p + 1024 - 7; - while (p < pend) { -diff -ur openonload-201606/src/include/onload/version.h openonload-201606_patched/src/include/onload/version.h ---- openonload-201606/src/include/onload/version.h 2016-06-30 11:42:26.000000000 +0100 -+++ openonload-201606_patched/src/include/onload/version.h 2016-08-15 16:28:05.299169000 +0100 -@@ -29,7 +29,7 @@ - - - #ifndef ONLOAD_VERSION --# define ONLOAD_VERSION "201606" -+# define ONLOAD_VERSION "201606-p63982-p64486" - #endif - - #define ONLOAD_PRODUCT "OpenOnload" -diff -ur openonload-201606/src/lib/efrm/vi_resource_alloc.c openonload-201606_patched/src/lib/efrm/vi_resource_alloc.c ---- openonload-201606/src/lib/efrm/vi_resource_alloc.c 2016-06-30 11:42:13.000000000 +0100 -+++ openonload-201606_patched/src/lib/efrm/vi_resource_alloc.c 2016-08-15 16:27:44.743189000 +0100 -@@ -1432,6 +1432,15 @@ - - qso->q_len_entries = n_q_entries; - qso->q_len_bytes = efrm_vi_q_bytes(virs, q_type, n_q_entries); -+ -+ /* This value should always be positive, but if we don't check for this -+ * explicitly, some compilers will assume that undefined logarithms -+ * can be taken in get_order() and will generate code that won't link. -+ * See bug63982. */ -+ EFRM_ASSERT(qso->q_len_bytes > 0); -+ if (qso->q_len_bytes <= 0) -+ return -EINVAL; -+ - qso->q_len_page_order = get_order(qso->q_len_bytes); - return 0; - } |