commit libhugetlbfs for openSUSE:Factory
Hello community, here is the log from the commit of package libhugetlbfs for openSUSE:Factory checked in at 2015-02-22 17:26:21 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libhugetlbfs (Old) and /work/SRC/openSUSE:Factory/.libhugetlbfs.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "libhugetlbfs" Changes: -------- --- /work/SRC/openSUSE:Factory/libhugetlbfs/libhugetlbfs.changes 2014-04-09 18:47:36.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.libhugetlbfs.new/libhugetlbfs.changes 2015-02-22 17:26:22.000000000 +0100 @@ -1,0 +2,13 @@ +Fri Feb 20 12:11:44 UTC 2015 - normand@linux.vnet.ibm.com + +- update to 2.18 + to solve build failures for ppc/ppc64. + remove following patches now included in 2.18: + libhugetlbfs-ppc64le.patch + libhugetlbfs.ppc64le.step2.patch + libhugetlbfs.ppc64le.step3.patch + libhugetlbfs.ppc64le.step4.patch +- Add fix_plt_extrasz_always_returning_0_on_ppc64le.patch + already upstream. + +------------------------------------------------------------------- Old: ---- libhugetlbfs-2.17.tar.gz libhugetlbfs-ppc64le.patch libhugetlbfs.ppc64le.step2.patch libhugetlbfs.ppc64le.step3.patch libhugetlbfs.ppc64le.step4.patch New: ---- fix_plt_extrasz_always_returning_0_on_ppc64le.patch libhugetlbfs-2.18.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libhugetlbfs.spec ++++++ --- /var/tmp/diff_new_pack.n14yqY/_old 2015-02-22 17:26:23.000000000 +0100 +++ /var/tmp/diff_new_pack.n14yqY/_new 2015-02-22 17:26:23.000000000 +0100 @@ -1,7 +1,7 @@ # # spec file for package libhugetlbfs # -# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -31,7 +31,7 @@ Obsoletes: libhugetlbfs-64bit %endif # -Version: 2.17 +Version: 2.18 Release: 0 Url: http://libhugetlbfs.sourceforge.net/ BuildRoot: %{_tmppath}/%{name}-%{version}-build @@ -42,12 +42,9 @@ Patch4: libhugetlbfs.tests-malloc.patch Patch7: libhugetlbfs_ia64_fix_missing_test.patch Patch8: libhugetlbfs_fix_tests.patch -Patch9: libhugetlbfs-ppc64le.patch -Patch10: libhugetlbfs.ppc64le.step2.patch -Patch11: libhugetlbfs.ppc64le.step3.patch -Patch12: libhugetlbfs.ppc64le.step4.patch Patch13: ignore-perl-modules.diff Patch14: disable-rw-on-non-ldscripts.diff +Patch15: fix_plt_extrasz_always_returning_0_on_ppc64le.patch %description The libhugetlbfs package interacts with the Linux hugetlbfs to @@ -67,12 +64,9 @@ %patch4 -p1 %patch7 -p1 %patch8 -p1 -%patch9 -p1 -%patch10 -p1 -%patch11 -p1 -%patch12 -p1 %patch13 %patch14 +%patch15 -p1 %build make %{my_make_flags} ++++++ fix_plt_extrasz_always_returning_0_on_ppc64le.patch ++++++ Subject: fix plt_extrasz() always returning 0 on ppc64le From: Signed-off-by: Jan Stancek <jstancek@redhat.com> libhugetlbfs.so is not linked with elf64lppc.o on ppc64le, which makes plt_extrasz() always return 0. This is causing failures (SIGSEGV) in these tests: HUGETLB_ELFMAP=W linkhuge_rw (16M: 64): HUGETLB_ELFMAP=RW linkhuge_rw (16M: 64): HUGETLB_SHARE=0 HUGETLB_ELFMAP=W linkhuge_rw (16M: 64): HUGETLB_SHARE=1 HUGETLB_ELFMAP=W linkhuge_rw (16M: 64): HUGETLB_SHARE=0 HUGETLB_ELFMAP=RW linkhuge_rw (16M: 64): HUGETLB_SHARE=1 HUGETLB_ELFMAP=RW linkhuge_rw (16M: 64): as they miss some already initialized data when performing "minimal copy" in get_extracopy(). This patch links also elf64lppc.o, which defines powerpc specific version of plt_extrasz(). Signed-off-by: Jan Stancek <jstancek@redhat.com> --- Makefile | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) diff --git a/Makefile b/Makefile index b24bd0f..8cf469f 100644 --- a/Makefile +++ b/Makefile @@ -142,6 +142,9 @@ endif ifeq ($(ELF64),elf64ppc) LIBOBJS64 += obj64/$(ELF64).o endif +ifeq ($(ELF64),elf64lppc) +LIBOBJS64 += obj64/$(ELF64).o +endif LIBOBJS32 += $(LIBOBJS:%=obj32/%) LIBOBJS64 += $(LIBOBJS:%=obj64/%) -- 1.7.1 ++++++ libhugetlbfs-2.17.tar.gz -> libhugetlbfs-2.18.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libhugetlbfs-2.17/Makefile new/libhugetlbfs-2.18/Makefile --- old/libhugetlbfs-2.17/Makefile 2013-10-22 03:07:56.000000000 +0200 +++ new/libhugetlbfs-2.18/Makefile 2014-04-06 18:11:46.000000000 +0200 @@ -30,14 +30,14 @@ LDFLAGS += -Wl,-z,noexecstack -ldl CFLAGS ?= -O2 -g CFLAGS += -Wall -fPIC -CPPFLAGS += -D__LIBHUGETLBFS__ -DPPC_NO_SEGMENTS +CPPFLAGS += -D__LIBHUGETLBFS__ ARCH = $(shell uname -m | sed -e s/i.86/i386/) CC = gcc CUSTOM_LDSCRIPTS = yes -ifeq ($(ARCH),powerpc64) +ifeq ($(ARCH),ppc64) CC64 = $(CC) -m64 ELF64 = elf64ppc TMPLIB64 = lib64 @@ -47,10 +47,17 @@ ELF32 = elf32ppclinux endif else -ifeq ($(ARCH),powerpc) +ifeq ($(ARCH),ppc64le) +CC64 = $(CC) -m64 +ELF64 = elf64lppc +TMPLIB64 = lib64 +CUSTOM_LDSCRIPTS = no +else +ifeq ($(ARCH),ppc) CC32 = $(CC) -m32 ELF32 = elf32ppclinux TMPLIB32 = lib +CPPFLAGS += -DPPC_NO_SEGMENTS else ifeq ($(ARCH),armv7l) CC32 = $(CC) @@ -58,7 +65,7 @@ ELF32 += armelf_linux_eabi CUSTOM_LDSCRIPTS = no else -ifeq ($(ARCH),aarch64) +ifneq (,$(findstring aarch64,$(ARCH))) CC64 = gcc ELF64 = aarch64elf TMPLIB64 = lib64 @@ -102,6 +109,7 @@ endif endif endif +endif endif endif endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libhugetlbfs-2.17/NEWS new/libhugetlbfs-2.18/NEWS --- old/libhugetlbfs-2.17/NEWS 2013-10-22 03:07:56.000000000 +0200 +++ new/libhugetlbfs-2.18/NEWS 2014-04-06 18:11:46.000000000 +0200 @@ -1,3 +1,17 @@ +libhugetlbfs 2.18 "Infinite Corridor" +====================================================================== +New Features +* Add support for ppc64le +* ARM 64 big endian support + +Bug Fixes +* Reverted 3bdd9924 which broke building on PPC64 +* Fix parsing of kernel version string +* ARM: mark direct_syscall as a FUNC + +Test Suite +* mmap of huge page files with misaligned offset success treated as PASS + libhugetlbfs 2.17 "Fowl and Fetus" ====================================================================== New Features diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libhugetlbfs-2.17/contrib/tlbmiss_cost.sh new/libhugetlbfs-2.18/contrib/tlbmiss_cost.sh --- old/libhugetlbfs-2.17/contrib/tlbmiss_cost.sh 2013-10-22 03:07:56.000000000 +0200 +++ new/libhugetlbfs-2.18/contrib/tlbmiss_cost.sh 2014-04-06 18:11:46.000000000 +0200 @@ -44,7 +44,7 @@ FNAME="cpu MHz" FINDEX=4 case "`uname -m`" in - ppc64) + ppc64|ppc64le) FNAME="clock" FINDEX=3 ;; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libhugetlbfs-2.17/elf64lppc.c new/libhugetlbfs-2.18/elf64lppc.c --- old/libhugetlbfs-2.17/elf64lppc.c 1970-01-01 01:00:00.000000000 +0100 +++ new/libhugetlbfs-2.18/elf64lppc.c 2015-02-22 17:26:24.000000000 +0100 @@ -0,0 +1 @@ +symbolic link to elf64ppc.c diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libhugetlbfs-2.17/kernel-features.c new/libhugetlbfs-2.18/kernel-features.c --- old/libhugetlbfs-2.17/kernel-features.c 2013-10-22 03:07:56.000000000 +0200 +++ new/libhugetlbfs-2.18/kernel-features.c 2014-04-06 18:11:46.000000000 +0200 @@ -125,14 +125,18 @@ *(start + 1) == 'r' && *(start + 2) == 'e') start += 3; + else { + /* + * For now we ignore any extraversions besides + * pre and rc versions and treat them as equal + * to the base version. + */ + return 0; + } ver->pre = strtol(start, &end, 10); } - /* - * For now we ignore any extraversions besides pre and post versions - * and treat them as equal to the base version. - */ return 0; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libhugetlbfs-2.17/ld.hugetlbfs new/libhugetlbfs-2.18/ld.hugetlbfs --- old/libhugetlbfs-2.17/ld.hugetlbfs 2013-10-22 03:07:56.000000000 +0200 +++ new/libhugetlbfs-2.18/ld.hugetlbfs 2014-04-06 18:11:46.000000000 +0200 @@ -84,6 +84,7 @@ MB=$((1024*1024)) case "$EMU" in elf32ppclinux|elf64ppc) HPAGE_SIZE=$((16*$MB)) SLICE_SIZE=$((256*$MB)) ;; +elf64lppc) HPAGE_SIZE=$((16*$MB)) SLICE_SIZE=$((256*$MB)) ;; elf_i386|elf_x86_64) HPAGE_SIZE=$((4*$MB)) SLICE_SIZE=$HPAGE_SIZE ;; elf_s390|elf64_s390) HPAGE_SIZE=$((1*$MB)) SLICE_SIZE=$HPAGE_SIZE ;; armelf_linux_eabi|aarch64elf) HPAGE_SIZE=$((2*MB)) SLICE_SIZE=$HPAGE_SIZE ;; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libhugetlbfs-2.17/sys-armelf_linux_eabi.S new/libhugetlbfs-2.18/sys-armelf_linux_eabi.S --- old/libhugetlbfs-2.17/sys-armelf_linux_eabi.S 2013-10-22 03:07:56.000000000 +0200 +++ new/libhugetlbfs-2.18/sys-armelf_linux_eabi.S 2014-04-06 18:11:46.000000000 +0200 @@ -19,6 +19,7 @@ .text .globl direct_syscall + .type direct_syscall,%function direct_syscall: mov ip, sp stmfd sp!, {r4, r5, r6, r7} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libhugetlbfs-2.17/sys-elf64lppc.S new/libhugetlbfs-2.18/sys-elf64lppc.S --- old/libhugetlbfs-2.17/sys-elf64lppc.S 1970-01-01 01:00:00.000000000 +0100 +++ new/libhugetlbfs-2.18/sys-elf64lppc.S 2015-02-22 17:26:24.000000000 +0100 @@ -0,0 +1 @@ +symbolic link to sys-elf64ppc.S diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libhugetlbfs-2.17/sys-elf64ppc.S new/libhugetlbfs-2.18/sys-elf64ppc.S --- old/libhugetlbfs-2.17/sys-elf64ppc.S 2013-10-22 03:07:56.000000000 +0200 +++ new/libhugetlbfs-2.18/sys-elf64ppc.S 2014-04-06 18:11:46.000000000 +0200 @@ -20,7 +20,7 @@ */ .text - +#if _CALL_ELF != 2 .align 2 .globl direct_syscall .globl .direct_syscall @@ -32,6 +32,11 @@ .previous .type .direct_syscall,@function .direct_syscall: +#else + .globl direct_syscall + .type direct_syscall,@function +direct_syscall: +#endif mr 0,3 mr 3,4 mr 4,5 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libhugetlbfs-2.17/tests/misalign.c new/libhugetlbfs-2.18/tests/misalign.c --- old/libhugetlbfs-2.17/tests/misalign.c 2013-10-22 03:07:56.000000000 +0200 +++ new/libhugetlbfs-2.18/tests/misalign.c 2014-04-06 18:11:46.000000000 +0200 @@ -23,6 +23,7 @@ #include <errno.h> #include <signal.h> #include <sys/mman.h> +#include <sys/utsname.h> #include <hugetlbfs.h> @@ -40,6 +41,11 @@ * necessary checks for the hugepage paths. This testcase ensures * that attempted hugepage mappings with parameters which are not * correctly hugepage aligned are rejected. + * + * However starting with 3.10-rc1, length passed in mmap() doesn't need + * to be aligned because commit af73e4d9506d3b797509f3c030e7dcd554f7d9c4 + * added ALIGN() to kernel side, in mmap_pgoff(), when mapping huge page + * files. */ int main(int argc, char *argv[]) { @@ -47,9 +53,13 @@ int fd; void *p, *q; int err; + struct utsname buf; test_init(argc, argv); + if (uname(&buf) != 0) + FAIL("uname failed %s", strerror(errno)); + page_size = getpagesize(); hpage_size = check_hugepagesize(); @@ -92,16 +102,30 @@ /* 3) Try a misaligned length */ q = mmap(NULL, page_size, PROT_READ|PROT_WRITE, MAP_PRIVATE, fd, 0); - if (q != MAP_FAILED) - FAIL("mmap() with misaligned length 0x%lx succeeded", - page_size); + + if (test_compare_kver(buf.release, "3.10.0") < 0) { + if (q != MAP_FAILED) + FAIL("mmap() with misaligned length 0x%lx succeeded", + page_size); + } else { + if (q == MAP_FAILED) + FAIL("mmap() with misaligned length 0x%lx failed", + page_size); + } /* 4) Try a misaligned length with MAP_FIXED */ q = mmap(p, page_size, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, fd, 0); - if (q != MAP_FAILED) - FAIL("mmap() MAP_FIXED with misaligned length 0x%lx succeeded", - page_size); + + if (test_compare_kver(buf.release, "3.10.0") < 0) { + if (q != MAP_FAILED) + FAIL("mmap() MAP_FIXED with misaligned length 0x%lx " + "succeeded", page_size); + } else { + if (q == MAP_FAILED) + FAIL("mmap() MAP_FIXED with misaligned length 0x%lx " + "failed", page_size); + } /* 5) Try a misaligned offset */ q = mmap(NULL, hpage_size, PROT_READ|PROT_WRITE, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libhugetlbfs-2.17/tests/mremap-expand-slice-collision.c new/libhugetlbfs-2.18/tests/mremap-expand-slice-collision.c --- old/libhugetlbfs-2.17/tests/mremap-expand-slice-collision.c 2013-10-22 03:07:56.000000000 +0200 +++ new/libhugetlbfs-2.18/tests/mremap-expand-slice-collision.c 2014-04-06 18:11:46.000000000 +0200 @@ -36,8 +36,8 @@ void init_slice_boundary(int fd) { unsigned long slice_size; - void *p1, *p2, *heap; - int slices_ok, i, rc; + void *p, *heap; + int i, rc; #if defined(__LP64__) && !defined(__aarch64__) /* powerpc: 1TB slices starting at 1 TB */ slice_boundary = 0x10000000000; @@ -52,37 +52,25 @@ heap = malloc(1); free(heap); - /* find 2 neighbour slices, which are both free, + /* Find 2 neighbour slices with couple huge pages free + * around slice boundary. * 16 is the maximum number of slices (low/high) */ for (i = 0; i < 16-1; i++) { - slices_ok = 0; - p1 = mmap((void *)slice_boundary, hpage_size, - PROT_READ, MAP_SHARED | MAP_FIXED, fd, 0); - p2 = mmap((void *)(slice_boundary+slice_size), hpage_size, + slice_boundary += slice_size; + p = mmap((void *)(slice_boundary-2*hpage_size), 4*hpage_size, PROT_READ, MAP_SHARED | MAP_FIXED, fd, 0); - - if (p1 != MAP_FAILED) { - slices_ok++; - rc = munmap(p1, hpage_size); + if (p == MAP_FAILED) { + verbose_printf("can't use slice_boundary: 0x%lx\n", + slice_boundary); + } else { + rc = munmap(p, 4*hpage_size); if (rc != 0) FAIL("munmap(p1): %s", strerror(errno)); - } - if (p2 != MAP_FAILED) { - slices_ok++; - rc = munmap(p2, hpage_size); - if (rc != 0) - FAIL("munmap(p2): %s", strerror(errno)); - } - - slice_boundary += slice_size; - if (slices_ok == 2) break; - else - verbose_printf("can't use slice_boundary: 0x%lx\n", - slice_boundary); + } } - if (slices_ok != 2) + if (p == MAP_FAILED) FAIL("couldn't find 2 free neighbour slices"); verbose_printf("using slice_boundary: 0x%lx\n", slice_boundary); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libhugetlbfs-2.17/version new/libhugetlbfs-2.18/version --- old/libhugetlbfs-2.17/version 2013-10-22 03:08:56.000000000 +0200 +++ new/libhugetlbfs-2.18/version 2014-04-06 18:15:13.000000000 +0200 @@ -1 +1 @@ -2.17 +2.18 -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org
participants (1)
-
root@hilbert.suse.de