/hg/icedtea6: 2 new changesets

andrew at icedtea.classpath.org andrew at icedtea.classpath.org
Mon Sep 3 06:30:53 PDT 2012


changeset 5c199bcdebc8 in /hg/icedtea6
details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=5c199bcdebc8
author: Andrew John Hughes <ahughes at redhat.com>
date: Fri Aug 31 15:26:08 2012 +0100

	Add more meaningful names for hugepages patches, based on upstream summary.

	2012-08-31  Andrew John Hughes  <ahughes at redhat.com>

		* Makefile.am:
		(ICEDTEA_PATCHES): Rename patches.
		* patches/openjdk/7034464-hugepage.patch:
		Renamed to...
		* patches/openjdk/7034464-transparent_huge_pages.patch:
		this.
		* patches/openjdk/7037939-hugepage.patch:
		Renamed to...
		* patches/openjdk/7037939-disable_adaptive_resizing_with_large_pages.patch
		this.


changeset db084058f69b in /hg/icedtea6
details: http://icedtea.classpath.org/hg/icedtea6?cmd=changeset;node=db084058f69b
author: Andrew John Hughes <ahughes at redhat.com>
date: Mon Sep 03 14:30:48 2012 +0100

	Add 1.10.9 & 1.11.4 to NEWS.

	2012-09-03  Andrew John Hughes  <ahughes at redhat.com>

		* NEWS: Add 1.10.9 & 1.11.4.


diffstat:

 ChangeLog                                                                |   17 +
 Makefile.am                                                              |    4 +-
 NEWS                                                                     |   21 +
 patches/openjdk/7034464-hugepage.patch                                   |  458 ----------
 patches/openjdk/7034464-transparent_huge_pages.patch                     |  458 ++++++++++
 patches/openjdk/7037939-disable_adaptive_resizing_with_large_pages.patch |   71 +
 patches/openjdk/7037939-hugepage.patch                                   |   71 -
 7 files changed, 569 insertions(+), 531 deletions(-)

diffs (truncated from 1143 to 500 lines):

diff -r 0e0ec12a88e3 -r db084058f69b ChangeLog
--- a/ChangeLog	Fri Aug 31 15:21:42 2012 +0100
+++ b/ChangeLog	Mon Sep 03 14:30:48 2012 +0100
@@ -1,3 +1,20 @@
+2012-09-03  Andrew John Hughes  <ahughes at redhat.com>
+
+	* NEWS: Add 1.10.9 & 1.11.4.
+
+2012-08-31  Andrew John Hughes  <ahughes at redhat.com>
+
+	* Makefile.am:
+	(ICEDTEA_PATCHES): Rename patches.
+	* patches/openjdk/7034464-hugepage.patch:
+	Renamed to...
+	* patches/openjdk/7034464-transparent_huge_pages.patch:
+	this.
+	* patches/openjdk/7037939-hugepage.patch:
+	Renamed to...
+	* patches/openjdk/7037939-disable_adaptive_resizing_with_large_pages.patch
+	this.
+
 2012-08-31  Andrew John Hughes  <ahughes at redhat.com>
 
 	* Makefile.am:
diff -r 0e0ec12a88e3 -r db084058f69b Makefile.am
--- a/Makefile.am	Fri Aug 31 15:21:42 2012 +0100
+++ b/Makefile.am	Mon Sep 03 14:30:48 2012 +0100
@@ -349,8 +349,8 @@
 	patches/openjdk/6986968-crash_on_xim_restart.patch \
 	patches/openjdk/7036754-stroker-nan.patch \
 	patches/openjdk/pgram-pipe-regression.patch \
-	patches/openjdk/7034464-hugepage.patch \
-	patches/openjdk/7037939-hugepage.patch \
+	patches/openjdk/7034464-transparent_huge_pages.patch
+	patches/openjdk/7037939-disable_adaptive_resizing_with_large_pages.patch \
 	patches/openjdk/7043564-hugepage.patch \
 	patches/openjdk/mutter.patch \
 	patches/fonts-rhel-version.patch \
diff -r 0e0ec12a88e3 -r db084058f69b NEWS
--- a/NEWS	Fri Aug 31 15:21:42 2012 +0100
+++ b/NEWS	Mon Sep 03 14:30:48 2012 +0100
@@ -34,6 +34,27 @@
   - Add missing REF_TO_OBJs for references passed from JNI, this enable JamVM
     to run Qt-Jambi
 
+New in release 1.11.4 (2012-08-31):
+
+* Security fixes
+  - S7162476, CVE-2012-1682: XMLDecoder security issue via ClassFinder
+  - S7163201, CVE-2012-0547: Simplify toolkit internals references
+* OpenJDK
+  - S7182135: Impossible to use some editors directly
+  - S7185678: java/awt/Menu/NullMenuLabelTest/NullMenuLabelTest.java failed with NPE
+
+New in release 1.10.9 (2012-08-31):
+
+* Security fixes
+  - S7162476, CVE-2012-1682: XMLDecoder security issue via ClassFinder
+  - S7163201, CVE-2012-0547: Simplify toolkit internals references
+* OpenJDK
+  - S7182135: Impossible to use some editors directly
+  - S7185678: java/awt/Menu/NullMenuLabelTest/NullMenuLabelTest.java failed with NPE
+  - S6815182: GSSAPI/SPNEGO does not work with server using MIT Kerberos library
+  - S6979329: CCacheInputStream fails to read ticket cache files from Kerberos 1.8.1
+  - S7110373: krb5 test in openjdk6 without test infrastructure
+
 New in release 1.11.3 (2012-06-12):
 
 * Security fixes
diff -r 0e0ec12a88e3 -r db084058f69b patches/openjdk/7034464-hugepage.patch
--- a/patches/openjdk/7034464-hugepage.patch	Fri Aug 31 15:21:42 2012 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,458 +0,0 @@
-# HG changeset patch
-# User iveresov
-# Date 1303344724 25200
-# Node ID 139667d9836ae218ab06a74d5813a5a700a076c9
-# Parent  49a67202bc671d23d719c9e14752d80295a9e8f6
-7034464: Support transparent large pages on Linux
-Summary: Support transparent huge pages on Linux available since 2.6.38
-Reviewed-by: iveresov, ysr
-Contributed-by: aph at redhat.com
-diff -u -r openjdk.patched/hotspot/src/os/linux/vm/globals_linux.hpp openjdk/hotspot/src/os/linux/vm/globals_linux.hpp
---- openjdk.patched/hotspot/src/os/linux/vm/globals_linux.hpp	2011-03-16 02:30:16.000000000 +0000
-+++ openjdk/hotspot/src/os/linux/vm/globals_linux.hpp	2011-05-04 11:57:15.083470027 +0100
-@@ -29,13 +29,19 @@
- // Defines Linux specific flags. They are not available on other platforms.
- //
- #define RUNTIME_OS_FLAGS(develop, develop_pd, product, product_pd, diagnostic, notproduct) \
--  product(bool, UseOprofile, false,                                 \
--        "enable support for Oprofile profiler")                     \
--                                                                    \
--  product(bool, UseLinuxPosixThreadCPUClocks, true,                 \
--          "enable fast Linux Posix clocks where available")
--// NB: The default value of UseLinuxPosixThreadCPUClocks may be
--// overridden in Arguments::parse_each_vm_init_arg.
-+  product(bool, UseOprofile, false,                                     \
-+        "enable support for Oprofile profiler")                         \
-+                                                                        \
-+  product(bool, UseLinuxPosixThreadCPUClocks, true,                     \
-+          "enable fast Linux Posix clocks where available")             \
-+/*  NB: The default value of UseLinuxPosixThreadCPUClocks may be        \
-+    overridden in Arguments::parse_each_vm_init_arg.  */                \
-+                                                                        \
-+  product(bool, UseHugeTLBFS, false,                                    \
-+          "Use MAP_HUGETLB for large pages")                            \
-+                                                                        \
-+  product(bool, UseSHM, false,                                          \
-+          "Use SYSV shared memory for large pages")
- 
- //
- // Defines Linux-specific default values. The flags are available on all
-diff -u -r openjdk.patched/hotspot/src/os/linux/vm/os_linux.cpp openjdk/hotspot/src/os/linux/vm/os_linux.cpp
---- openjdk.patched/hotspot/src/os/linux/vm/os_linux.cpp	2011-05-03 14:32:54.285722656 +0100
-+++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp	2011-05-09 14:31:51.358502774 +0100
-@@ -2495,16 +2495,40 @@
-   return res != (uintptr_t) MAP_FAILED;
- }
- 
-+// Define MAP_HUGETLB here so we can build HotSpot on old systems.
-+#ifndef MAP_HUGETLB
-+#define MAP_HUGETLB 0x40000
-+#endif
-+
-+// Define MADV_HUGEPAGE here so we can build HotSpot on old systems.
-+#ifndef MADV_HUGEPAGE
-+#define MADV_HUGEPAGE 14
-+#endif
-+
- bool os::commit_memory(char* addr, size_t size, size_t alignment_hint,
-                        bool exec) {
-+  if (UseHugeTLBFS && alignment_hint > (size_t)vm_page_size()) {
-+    int prot = exec ? PROT_READ|PROT_WRITE|PROT_EXEC : PROT_READ|PROT_WRITE;
-+    uintptr_t res =
-+      (uintptr_t) ::mmap(addr, size, prot,
-+                         MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS|MAP_HUGETLB,
-+                         -1, 0);
-+    return res != (uintptr_t) MAP_FAILED;
-+  }
-+
-   return commit_memory(addr, size, exec);
- }
- 
--void os::realign_memory(char *addr, size_t bytes, size_t alignment_hint) { }
-+void os::realign_memory(char *addr, size_t bytes, size_t alignment_hint) {
-+  if (UseHugeTLBFS && alignment_hint > (size_t)vm_page_size()) {
-+    // We don't check the return value: madvise(MADV_HUGEPAGE) may not
-+    // be supported or the memory may already be backed by huge pages.
-+    ::madvise(addr, bytes, MADV_HUGEPAGE);
-+  }
-+}
- 
- void os::free_memory(char *addr, size_t bytes) {
--  ::mmap(addr, bytes, PROT_READ | PROT_WRITE,
--         MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0);
-+  ::madvise(addr, bytes, MADV_DONTNEED);
- }
- 
- void os::numa_make_global(char *addr, size_t bytes) {
-@@ -2870,7 +2894,16 @@
- static size_t _large_page_size = 0;
- 
- bool os::large_page_init() {
--  if (!UseLargePages) return false;
-+  if (!UseLargePages) {
-+    UseHugeTLBFS = false;
-+    UseSHM = false;
-+    return false;
-+  }
-+
-+  if (FLAG_IS_DEFAULT(UseHugeTLBFS) && FLAG_IS_DEFAULT(UseSHM)) {
-+    // Our user has not expressed a preference, so we'll try both.
-+    UseHugeTLBFS = UseSHM = true;
-+  }
- 
-   if (LargePageSizeInBytes) {
-     _large_page_size = LargePageSizeInBytes;
-@@ -2915,6 +2948,9 @@
-     }
-   }
- 
-+  // print a warning if any large page related flag is specified on command line
-+  bool warn_on_failure = !FLAG_IS_DEFAULT(UseHugeTLBFS);
-+
-   const size_t default_page_size = (size_t)Linux::page_size();
-   if (_large_page_size > default_page_size) {
-     _page_sizes[0] = _large_page_size;
-@@ -2922,6 +2958,14 @@
-     _page_sizes[2] = 0;
-   }
- 
-+  UseHugeTLBFS = UseHugeTLBFS &&
-+                 Linux::hugetlbfs_sanity_check(warn_on_failure, _large_page_size);
-+
-+  if (UseHugeTLBFS)
-+    UseSHM = false;
-+
-+  UseLargePages = UseHugeTLBFS || UseSHM;
-+
-   // Large page support is available on 2.6 or newer kernel, some vendors
-   // (e.g. Redhat) have backported it to their 2.4 based distributions.
-   // We optimistically assume the support is available. If later it turns out
-@@ -2936,7 +2980,7 @@
- char* os::reserve_memory_special(size_t bytes, char* req_addr, bool exec) {
-   // "exec" is passed in but not used.  Creating the shared image for
-   // the code cache doesn't have an SHM_X executable permission to check.
--  assert(UseLargePages, "only for large pages");
-+  assert(UseLargePages && UseSHM, "only for SHM large pages");
- 
-   key_t key = IPC_PRIVATE;
-   char *addr;
-@@ -3003,19 +3047,19 @@
-   return _large_page_size;
- }
- 
--// Linux does not support anonymous mmap with large page memory. The only way
--// to reserve large page memory without file backing is through SysV shared
--// memory API. The entire memory region is committed and pinned upfront.
--// Hopefully this will change in the future...
-+// HugeTLBFS allows application to commit large page memory on demand;
-+// with SysV SHM the entire memory region must be allocated as shared
-+// memory.
- bool os::can_commit_large_page_memory() {
--  return false;
-+  return UseHugeTLBFS;
- }
- 
- bool os::can_execute_large_page_memory() {
--  return false;
-+  return UseHugeTLBFS;
- }
- 
- // Reserve memory at an arbitrary address, only if that area is
-+// Reserve memory at an arbitrary address, only if that area is
- // available (and not reserved for something else).
- 
- char* os::attempt_reserve_memory_at(size_t bytes, char* requested_addr) {
-@@ -5009,6 +5053,43 @@
- // JSR166
- // -------------------------------------------------------
- 
-+bool os::Linux::hugetlbfs_sanity_check(bool warn, size_t page_size) {
-+  bool result = false;
-+  void *p = mmap (NULL, page_size, PROT_READ|PROT_WRITE,
-+                  MAP_ANONYMOUS|MAP_PRIVATE|MAP_HUGETLB,
-+                  -1, 0);
-+
-+  if (p != (void *) -1) {
-+    // We don't know if this really is a huge page or not.
-+    FILE *fp = fopen("/proc/self/maps", "r");
-+    if (fp) {
-+      while (!feof(fp)) {
-+        char chars[257];
-+        long x = 0;
-+        if (fgets(chars, sizeof(chars), fp)) {
-+          if (sscanf(chars, "%lx-%*lx", &x) == 1
-+              && x == (long)p) {
-+            if (strstr (chars, "hugepage")) {
-+              result = true;
-+              break;
-+            }
-+          }
-+        }
-+      }
-+      fclose(fp);
-+    }
-+    munmap (p, page_size);
-+    if (result)
-+      return true;
-+  }
-+
-+  if (warn) {
-+    warning("HugeTLBFS is not supported by the operating system.");
-+  }
-+
-+  return result;
-+}
-+
- /*
-  * The solaris and linux implementations of park/unpark are fairly
-  * conservative for now, but can be improved. They currently use a
-diff -u -r openjdk.patched/hotspot/src/os/linux/vm/os_linux.cpp.orig openjdk/hotspot/src/os/linux/vm/os_linux.cpp.orig
---- openjdk.patched/hotspot/src/os/linux/vm/os_linux.cpp.orig	2011-05-03 14:32:53.972649764 +0100
-+++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp.orig	2011-05-04 11:57:15.085470494 +0100
-@@ -117,6 +117,10 @@
- # include <inttypes.h>
- # include <sys/ioctl.h>
- 
-+#if __x86_64__
-+#include <asm/vsyscall.h>
-+#endif
-+
- #define MAX_PATH    (2 * K)
- 
- // for timer info max values which include all bits
-@@ -2491,16 +2495,40 @@
-   return res != (uintptr_t) MAP_FAILED;
- }
- 
-+// Define MAP_HUGETLB here so we can build HotSpot on old systems.
-+#ifndef MAP_HUGETLB
-+#define MAP_HUGETLB 0x40000
-+#endif
-+
-+// Define MADV_HUGEPAGE here so we can build HotSpot on old systems.
-+#ifndef MADV_HUGEPAGE
-+#define MADV_HUGEPAGE 14
-+#endif
-+
- bool os::commit_memory(char* addr, size_t size, size_t alignment_hint,
-                        bool exec) {
-+  if (UseHugeTLBFS && alignment_hint > (size_t)vm_page_size()) {
-+    int prot = exec ? PROT_READ|PROT_WRITE|PROT_EXEC : PROT_READ|PROT_WRITE;
-+    uintptr_t res =
-+      (uintptr_t) ::mmap(addr, size, prot,
-+                         MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS|MAP_HUGETLB,
-+                         -1, 0);
-+    return res != (uintptr_t) MAP_FAILED;
-+  }
-+
-   return commit_memory(addr, size, exec);
- }
- 
--void os::realign_memory(char *addr, size_t bytes, size_t alignment_hint) { }
-+void os::realign_memory(char *addr, size_t bytes, size_t alignment_hint) {
-+  if (UseHugeTLBFS && alignment_hint > (size_t)vm_page_size()) {
-+    // We don't check the return value: madvise(MADV_HUGEPAGE) may not
-+    // be supported or the memory may already be backed by huge pages.
-+    ::madvise(addr, bytes, MADV_HUGEPAGE);
-+  }
-+}
- 
- void os::free_memory(char *addr, size_t bytes) {
--  ::mmap(addr, bytes, PROT_READ | PROT_WRITE,
--         MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0);
-+  ::madvise(addr, bytes, MADV_DONTNEED);
- }
- 
- void os::numa_make_global(char *addr, size_t bytes) {
-@@ -2544,6 +2572,21 @@
-   return end;
- }
- 
-+static int sched_getcpu_syscall(void) {
-+  unsigned int cpu;
-+  int retval = -1;
-+
-+#if __x86_64__
-+  typedef long (*vgetcpu_t)(unsigned int *cpu, unsigned int *node, unsigned long *tcache);
-+  vgetcpu_t vgetcpu = (vgetcpu_t)VSYSCALL_ADDR(__NR_vgetcpu);
-+  retval = vgetcpu(&cpu, NULL, NULL);
-+#elif __i386__
-+  retval = syscall(SYS_getcpu, &cpu, NULL, NULL);
-+#endif
-+
-+  return (retval == -1) ? retval : cpu;
-+}
-+
- extern "C" void numa_warn(int number, char *where, ...) { }
- extern "C" void numa_error(char *where) { }
- 
-@@ -2565,6 +2608,10 @@
-   set_sched_getcpu(CAST_TO_FN_PTR(sched_getcpu_func_t,
-                                   dlsym(RTLD_DEFAULT, "sched_getcpu")));
- 
-+  // If it's not, try a direct syscall.
-+  if (sched_getcpu() == -1)
-+    set_sched_getcpu(CAST_TO_FN_PTR(sched_getcpu_func_t, (void*)&sched_getcpu_syscall));
-+
-   if (sched_getcpu() != -1) { // Does it work?
-     void *handle = dlopen("libnuma.so.1", RTLD_LAZY);
-     if (handle != NULL) {
-@@ -2847,7 +2894,16 @@
- static size_t _large_page_size = 0;
- 
- bool os::large_page_init() {
--  if (!UseLargePages) return false;
-+  if (!UseLargePages) {
-+    UseHugeTLBFS = false;
-+    UseSHM = false;
-+    return false;
-+  }
-+
-+  if (FLAG_IS_DEFAULT(UseHugeTLBFS) && FLAG_IS_DEFAULT(UseSHM)) {
-+    // Our user has not expressed a preference, so we'll try both.
-+    UseHugeTLBFS = UseSHM = true;
-+  }
- 
-   if (LargePageSizeInBytes) {
-     _large_page_size = LargePageSizeInBytes;
-@@ -2892,6 +2948,9 @@
-     }
-   }
- 
-+  // print a warning if any large page related flag is specified on command line
-+  bool warn_on_failure = !FLAG_IS_DEFAULT(UseHugeTLBFS);
-+
-   const size_t default_page_size = (size_t)Linux::page_size();
-   if (_large_page_size > default_page_size) {
-     _page_sizes[0] = _large_page_size;
-@@ -2899,6 +2958,14 @@
-     _page_sizes[2] = 0;
-   }
- 
-+  UseHugeTLBFS = UseHugeTLBFS &&
-+                 Linux::hugetlbfs_sanity_check(warn_on_failure, _large_page_size);
-+
-+  if (UseHugeTLBFS)
-+    UseSHM = false;
-+
-+  UseLargePages = UseHugeTLBFS || UseSHM;
-+
-   // Large page support is available on 2.6 or newer kernel, some vendors
-   // (e.g. Redhat) have backported it to their 2.4 based distributions.
-   // We optimistically assume the support is available. If later it turns out
-@@ -2913,7 +2980,7 @@
- char* os::reserve_memory_special(size_t bytes, char* req_addr, bool exec) {
-   // "exec" is passed in but not used.  Creating the shared image for
-   // the code cache doesn't have an SHM_X executable permission to check.
--  assert(UseLargePages, "only for large pages");
-+  assert(UseLargePages && UseSHM, "only for SHM large pages");
- 
-   key_t key = IPC_PRIVATE;
-   char *addr;
-@@ -2980,19 +3047,19 @@
-   return _large_page_size;
- }
- 
--// Linux does not support anonymous mmap with large page memory. The only way
--// to reserve large page memory without file backing is through SysV shared
--// memory API. The entire memory region is committed and pinned upfront.
--// Hopefully this will change in the future...
-+// HugeTLBFS allows application to commit large page memory on demand;
-+// with SysV SHM the entire memory region must be allocated as shared
-+// memory.
- bool os::can_commit_large_page_memory() {
--  return false;
-+  return UseHugeTLBFS;
- }
- 
- bool os::can_execute_large_page_memory() {
--  return false;
-+  return UseHugeTLBFS;
- }
- 
- // Reserve memory at an arbitrary address, only if that area is
-+// Reserve memory at an arbitrary address, only if that area is
- // available (and not reserved for something else).
- 
- char* os::attempt_reserve_memory_at(size_t bytes, char* requested_addr) {
-@@ -4081,6 +4148,23 @@
-         UseNUMA = false;
-       }
-     }
-+    // With SHM large pages we cannot uncommit a page, so there's not way
-+    // we can make the adaptive lgrp chunk resizing work. If the user specified
-+    // both UseNUMA and UseLargePages (or UseSHM) on the command line - warn and
-+    // disable adaptive resizing.
-+    if (UseNUMA && UseLargePages && UseSHM) {
-+      if (!FLAG_IS_DEFAULT(UseNUMA)) {
-+        if (FLAG_IS_DEFAULT(UseLargePages) && FLAG_IS_DEFAULT(UseSHM)) {
-+          UseLargePages = false;
-+        } else {
-+          warning("UseNUMA is not fully compatible with SHM large pages, disabling adaptive resizing");
-+          UseAdaptiveSizePolicy = false;
-+          UseAdaptiveNUMAChunkSizing = false;
-+        }
-+      } else {
-+        UseNUMA = false;
-+      }
-+    }
-     if (!UseNUMA && ForceNUMA) {
-       UseNUMA = true;
-     }
-@@ -4986,6 +5070,43 @@
- // JSR166
- // -------------------------------------------------------
- 
-+bool os::Linux::hugetlbfs_sanity_check(bool warn, size_t page_size) {
-+  bool result = false;
-+  void *p = mmap (NULL, page_size, PROT_READ|PROT_WRITE,
-+                  MAP_ANONYMOUS|MAP_PRIVATE|MAP_HUGETLB,
-+                  -1, 0);
-+
-+  if (p != (void *) -1) {
-+    // We don't know if this really is a huge page or not.
-+    FILE *fp = fopen("/proc/self/maps", "r");
-+    if (fp) {
-+      while (!feof(fp)) {
-+        char chars[257];
-+        long x = 0;
-+        if (fgets(chars, sizeof(chars), fp)) {
-+          if (sscanf(chars, "%lx-%*lx", &x) == 1
-+              && x == (long)p) {
-+            if (strstr (chars, "hugepage")) {
-+              result = true;
-+              break;
-+            }
-+          }
-+<+        }



More information about the distro-pkg-dev mailing list