Supported platforms (was: Re: Execution problems with Atomic Operations on OpenJDK10 for ARM5 Soft Float)
On 05/04/2018 02:26, b...@juanantonio.info wrote: Many thanks with the link about the Platforms supported: http://www.oracle.com/technetwork/java/javase/documentation/jdk10certconfig-4417031.html This appears to be a list of the platforms that are supported (certified) by Oracle. Where can I find the list of platforms that are supported by OpenJDK? For example, what about the following platforms that don't appear on the Oracle list: Windows x86 Linux x86 aarch32 (ARMv7 32-bit) aarch64 (ARMv8 64-bit) Are all these supported for OpenJDK 9, 10 and 11? Simon
RE: Execution problems with Atomic Operations on OpenJDK10 for ARM5 Soft Float
Hi Juan Antonio, > -Original Message- > From: b...@juanantonio.info [mailto:b...@juanantonio.info] > > Good night David, > > It is the first time that I report a Bug on OpenJDK and I didn´t receive any > notification so I didn´t know the status of the Issue that I reported. Yes, there was some issue in the notification server, no emails sent to bug submitters. Generally you will receive e-mail, once issue is created in JDK. Sorry about this. Thanks David for pointing out the JDK issue. Thanks, Fairoz > > Many thanks with the link about the Platforms supported: > http://www.oracle.com/technetwork/java/javase/documentation/jdk10cert > config-4417031.html > > We will try to do Compilation with the solution. > > --- a/src/hotspot/cpu/arm/vm_version_arm_32.cpp > +++ b/src/hotspot/cpu/arm/vm_version_arm_32.cpp > @@ -298,6 +298,15 @@ > FLAG_SET_DEFAULT(UseUnalignedAccesses, false); > } > > + if (arm_arch() == 5) { > + if (FLAG_IS_DEFAULT(AssumeMP)) { > + FLAG_SET_DEFAULT(AssumeMP, false); > + else if (AssumeMP) { > + warning("AssumeMP can not be true for ARMv5 as there is only > uniprocessor support"); > + FLAG_SET_DEFAULT(AssumeMP, false); > + } > + } > + > _is_initialized = true; > } > > Runtime workaround: java -XX:-AssumeMP > > In our case, I would like to continue maintaining this support for the Device. > What is the advice that you could give us? > What is AssumeMP? > > For education, this device is pretty interesting for the whole Java community, > this is the reason. > > I will inform with the results. > > Many thanks in advance. > > Cheers > > Juan Antonio > > El 2018-04-05 00:12, David Holmes escribió: > > Hi, > > > > This was already reported as: > > > > https://bugs.openjdk.java.net/browse/JDK-8200580 > > > > to which I have responded and closed the bug as this is not a > > supported platform. > > > > As per the bug report this may be due to the change to AssumeMP to be > > true, but there is no MP support for ARMv5. > > > > David > > > > On 4/04/2018 8:29 PM, b...@juanantonio.info wrote: > >> Good morning, > >> > >> Mi name is Juan Antonio Breña Moral, I am developing a set of Java > >> libraries for Lego Mindstorms EV3, an ARM5 robotics device and > >> recently, we build OpenJDK 9 with success but with OpenJDK 10, we > >> have found some problems when we execute some Java programs. > >> > >> Repository to build OpenJDK 9/10 for ARM5 Soft Float: > >> https://github.com/ev3dev-lang-java/openjdk-ev3 > >> > >> To test the JVM, I am using the following repo to test the VM: > >> https://github.com/ev3dev-lang-java/vmbenchmarks > >> > >> And this is the output with the error: > >> > >> robot@ev3dev:~$ java -jar benchmarks.jar -f 1 > >> WARNING: An illegal reflective access operation has occurred > >> WARNING: Illegal reflective access by org.openjdk.jmh.util.Utils > >> (file:/home/robot/benchmarks.jar) to field java.io.Console.cs > >> WARNING: Please consider reporting this to the maintainers of > >> org.openjdk.jmh.util.Utils > >> WARNING: Use --illegal-access=warn to enable warnings of further > >> illegal reflective access operations > >> WARNING: All illegal access operations will be denied in a future > >> release === DEBUG MESSAGE: Atomic load(jlong) > unsupported > >> on this platform > >> > >> === DEBUG MESSAGE: Atomic store(jlong) unsupported > on > >> this platform > >> > >> > >> === DEBUG MESSAGE: Atomic load(jlong) unsupported on > this > >> platform > >> > >> [thread 4430 also had an error] > >> [error occurred during error reporting ((null)), id 0xe000] > >> > >> === DEBUG MESSAGE: Atomic store(jlong) unsupported > on > >> this platform > >> > >> > >> [error occurred during error reporting (printing fatal error > >> message), id 0xe000] > >> > >> === DEBUG MESSAGE: Atomic store(jlong) unsupported > on > >> this platform > >> > >> > >> [error occurred during error reporting (printing type of error), id > >> 0xe000] > >> > >> === DEBUG MESSAGE: Atomic store(jlong) unsupported > on > >> this platform > >> > >> > >> [error occurred during error reporting (printing stack bounds), id > >> 0xe000] > >> > >> === DEBUG MESSAGE: Atomic store(jlong) unsupported > on > >> this platform > >> > >> > >> [error occurred during error reporting (printing native stack), id > >> 0xe000] > >> > >> === DEBUG MESSAGE: Atomic store(jlong) unsupported > on > >> this platform > >> > >> > >> [error occurred during error reporting (printing Java stack), id > >> 0xe000] > >> > >> === DEBUG MESSAGE: Atomic store(jlong) unsupported > on > >> this platform > >> > >> > >> [error occurred during error reporting (printing target Java thread > >> stack), id 0xe000] > >> > >> === DEBUG MESSA
Re: Execution problems with Atomic Operations on OpenJDK10 for ARM5 Soft Float
On 5/04/2018 1:30 PM, b...@juanantonio.info wrote: Hi David, Many thanks for the comments. In relation to the ARMV5 support, in the past Oracle released a version for Mindstorms: http://www.oracle.com/technetwork/java/embedded/downloads/javase/javaseemeddedev3-1982511.html but if you observe that release was Java 8. Yes we started scaling back Java SE Embedded after 8 GA. Later 8u versions do not support the same set of platforms. Java SE Embedded does not exist in 9+ David - For Java 9, we could build JDK and JRI (Java Runtime Images) https://github.com/ev3dev-lang-java/openjdk-ev3/releases/tag/v0.4.5 I wish with your local path suggestion, we could build OpenJDK 10. Later, we will try with OpenJDK11. I have to see how to automate the whole process on Travis CI. Cheers Juan Antonio El 2018-04-05 04:23, David Holmes escribió: On 5/04/2018 11:26 AM, b...@juanantonio.info wrote: Good night David, It is the first time that I report a Bug on OpenJDK and I didn´t receive any notification so I didn´t know the status of the Issue that I reported. Sorry about that. You should have received some form of notification. Many thanks with the link about the Platforms supported: http://www.oracle.com/technetwork/java/javase/documentation/jdk10certconfig-4417031.html We will try to do Compilation with the solution. --- a/src/hotspot/cpu/arm/vm_version_arm_32.cpp +++ b/src/hotspot/cpu/arm/vm_version_arm_32.cpp @@ -298,6 +298,15 @@ FLAG_SET_DEFAULT(UseUnalignedAccesses, false); } + if (arm_arch() == 5) { + if (FLAG_IS_DEFAULT(AssumeMP)) { + FLAG_SET_DEFAULT(AssumeMP, false); + else if (AssumeMP) { + warning("AssumeMP can not be true for ARMv5 as there is only uniprocessor support"); + FLAG_SET_DEFAULT(AssumeMP, false); + } + } + _is_initialized = true; } Runtime workaround: java -XX:-AssumeMP In our case, I would like to continue maintaining this support for the Device. What is the advice that you could give us? You would have to keep the local copy of your source code patched and produce your own builds. But if you also try to update with the mainline OpenJDK code then you will very soon hit problems. In fact I'd be very surprised if this works today, even if it builds, as we have not provided any updates to ARM32 in a long time. The only supported way to run on ARM32 is using the Zero interpreter as Adrian replied. What is AssumeMP? Assume Multi-Processor. When running on a MP system the VM has to use and generate code that provides the correct level of atomicity and memory consistency - none of which is necessary on a uniprocessor system. MP systems are the norm and in the rare case we issue the additional memory synchronization instructions they should be no-ops on a uniprocessor, so we are heading towards stripping out uniprocessor support and only build in MP support so that we don't need dynamic checks through the code to see if we are MP or not. Switching AssumeMP to true was the first step in that process (and avoided problems where the VM may be started with only one processor available but then had additional ones added later.) In any case there has never been any support for ARMv5 multiprocessors. Cheers, David For education, this device is pretty interesting for the whole Java community, this is the reason. I will inform with the results. Many thanks in advance. Cheers Juan Antonio El 2018-04-05 00:12, David Holmes escribió: Hi, This was already reported as: https://bugs.openjdk.java.net/browse/JDK-8200580 to which I have responded and closed the bug as this is not a supported platform. As per the bug report this may be due to the change to AssumeMP to be true, but there is no MP support for ARMv5. David On 4/04/2018 8:29 PM, b...@juanantonio.info wrote: Good morning, Mi name is Juan Antonio Breña Moral, I am developing a set of Java libraries for Lego Mindstorms EV3, an ARM5 robotics device and recently, we build OpenJDK 9 with success but with OpenJDK 10, we have found some problems when we execute some Java programs. Repository to build OpenJDK 9/10 for ARM5 Soft Float: https://github.com/ev3dev-lang-java/openjdk-ev3 To test the JVM, I am using the following repo to test the VM: https://github.com/ev3dev-lang-java/vmbenchmarks And this is the output with the error: robot@ev3dev:~$ java -jar benchmarks.jar -f 1 WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by org.openjdk.jmh.util.Utils (file:/home/robot/benchmarks.jar) to field java.io.Console.cs WARNING: Please consider reporting this to the maintainers of org.openjdk.jmh.util.Utils WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release === DEBUG MESSAGE: Atomic load(jlong) unsupported on this platform === DEBUG MESSAGE: Atomic store(jlong) unsuppo
Re: Execution problems with Atomic Operations on OpenJDK10 for ARM5 Soft Float
Hi David, Many thanks for the comments. In relation to the ARMV5 support, in the past Oracle released a version for Mindstorms: http://www.oracle.com/technetwork/java/embedded/downloads/javase/javaseemeddedev3-1982511.html but if you observe that release was Java 8. For Java 9, we could build JDK and JRI (Java Runtime Images) https://github.com/ev3dev-lang-java/openjdk-ev3/releases/tag/v0.4.5 I wish with your local path suggestion, we could build OpenJDK 10. Later, we will try with OpenJDK11. I have to see how to automate the whole process on Travis CI. Cheers Juan Antonio El 2018-04-05 04:23, David Holmes escribió: On 5/04/2018 11:26 AM, b...@juanantonio.info wrote: Good night David, It is the first time that I report a Bug on OpenJDK and I didn´t receive any notification so I didn´t know the status of the Issue that I reported. Sorry about that. You should have received some form of notification. Many thanks with the link about the Platforms supported: http://www.oracle.com/technetwork/java/javase/documentation/jdk10certconfig-4417031.html We will try to do Compilation with the solution. --- a/src/hotspot/cpu/arm/vm_version_arm_32.cpp +++ b/src/hotspot/cpu/arm/vm_version_arm_32.cpp @@ -298,6 +298,15 @@ FLAG_SET_DEFAULT(UseUnalignedAccesses, false); } + if (arm_arch() == 5) { + if (FLAG_IS_DEFAULT(AssumeMP)) { + FLAG_SET_DEFAULT(AssumeMP, false); + else if (AssumeMP) { + warning("AssumeMP can not be true for ARMv5 as there is only uniprocessor support"); + FLAG_SET_DEFAULT(AssumeMP, false); + } + } + _is_initialized = true; } Runtime workaround: java -XX:-AssumeMP In our case, I would like to continue maintaining this support for the Device. What is the advice that you could give us? You would have to keep the local copy of your source code patched and produce your own builds. But if you also try to update with the mainline OpenJDK code then you will very soon hit problems. In fact I'd be very surprised if this works today, even if it builds, as we have not provided any updates to ARM32 in a long time. The only supported way to run on ARM32 is using the Zero interpreter as Adrian replied. What is AssumeMP? Assume Multi-Processor. When running on a MP system the VM has to use and generate code that provides the correct level of atomicity and memory consistency - none of which is necessary on a uniprocessor system. MP systems are the norm and in the rare case we issue the additional memory synchronization instructions they should be no-ops on a uniprocessor, so we are heading towards stripping out uniprocessor support and only build in MP support so that we don't need dynamic checks through the code to see if we are MP or not. Switching AssumeMP to true was the first step in that process (and avoided problems where the VM may be started with only one processor available but then had additional ones added later.) In any case there has never been any support for ARMv5 multiprocessors. Cheers, David For education, this device is pretty interesting for the whole Java community, this is the reason. I will inform with the results. Many thanks in advance. Cheers Juan Antonio El 2018-04-05 00:12, David Holmes escribió: Hi, This was already reported as: https://bugs.openjdk.java.net/browse/JDK-8200580 to which I have responded and closed the bug as this is not a supported platform. As per the bug report this may be due to the change to AssumeMP to be true, but there is no MP support for ARMv5. David On 4/04/2018 8:29 PM, b...@juanantonio.info wrote: Good morning, Mi name is Juan Antonio Breña Moral, I am developing a set of Java libraries for Lego Mindstorms EV3, an ARM5 robotics device and recently, we build OpenJDK 9 with success but with OpenJDK 10, we have found some problems when we execute some Java programs. Repository to build OpenJDK 9/10 for ARM5 Soft Float: https://github.com/ev3dev-lang-java/openjdk-ev3 To test the JVM, I am using the following repo to test the VM: https://github.com/ev3dev-lang-java/vmbenchmarks And this is the output with the error: robot@ev3dev:~$ java -jar benchmarks.jar -f 1 WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by org.openjdk.jmh.util.Utils (file:/home/robot/benchmarks.jar) to field java.io.Console.cs WARNING: Please consider reporting this to the maintainers of org.openjdk.jmh.util.Utils WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release === DEBUG MESSAGE: Atomic load(jlong) unsupported on this platform === DEBUG MESSAGE: Atomic store(jlong) unsupported on this platform === DEBUG MESSAGE: Atomic load(jlong) unsupported on this platform [thread 4430 also had an error] [error occurred during error reporting ((null)), id 0x
Re: Execution problems with Atomic Operations on OpenJDK10 for ARM5 Soft Float
On 5/04/2018 11:26 AM, b...@juanantonio.info wrote: Good night David, It is the first time that I report a Bug on OpenJDK and I didn´t receive any notification so I didn´t know the status of the Issue that I reported. Sorry about that. You should have received some form of notification. Many thanks with the link about the Platforms supported: http://www.oracle.com/technetwork/java/javase/documentation/jdk10certconfig-4417031.html We will try to do Compilation with the solution. --- a/src/hotspot/cpu/arm/vm_version_arm_32.cpp +++ b/src/hotspot/cpu/arm/vm_version_arm_32.cpp @@ -298,6 +298,15 @@ FLAG_SET_DEFAULT(UseUnalignedAccesses, false); } + if (arm_arch() == 5) { + if (FLAG_IS_DEFAULT(AssumeMP)) { + FLAG_SET_DEFAULT(AssumeMP, false); + else if (AssumeMP) { + warning("AssumeMP can not be true for ARMv5 as there is only uniprocessor support"); + FLAG_SET_DEFAULT(AssumeMP, false); + } + } + _is_initialized = true; } Runtime workaround: java -XX:-AssumeMP In our case, I would like to continue maintaining this support for the Device. What is the advice that you could give us? You would have to keep the local copy of your source code patched and produce your own builds. But if you also try to update with the mainline OpenJDK code then you will very soon hit problems. In fact I'd be very surprised if this works today, even if it builds, as we have not provided any updates to ARM32 in a long time. The only supported way to run on ARM32 is using the Zero interpreter as Adrian replied. What is AssumeMP? Assume Multi-Processor. When running on a MP system the VM has to use and generate code that provides the correct level of atomicity and memory consistency - none of which is necessary on a uniprocessor system. MP systems are the norm and in the rare case we issue the additional memory synchronization instructions they should be no-ops on a uniprocessor, so we are heading towards stripping out uniprocessor support and only build in MP support so that we don't need dynamic checks through the code to see if we are MP or not. Switching AssumeMP to true was the first step in that process (and avoided problems where the VM may be started with only one processor available but then had additional ones added later.) In any case there has never been any support for ARMv5 multiprocessors. Cheers, David For education, this device is pretty interesting for the whole Java community, this is the reason. I will inform with the results. Many thanks in advance. Cheers Juan Antonio El 2018-04-05 00:12, David Holmes escribió: Hi, This was already reported as: https://bugs.openjdk.java.net/browse/JDK-8200580 to which I have responded and closed the bug as this is not a supported platform. As per the bug report this may be due to the change to AssumeMP to be true, but there is no MP support for ARMv5. David On 4/04/2018 8:29 PM, b...@juanantonio.info wrote: Good morning, Mi name is Juan Antonio Breña Moral, I am developing a set of Java libraries for Lego Mindstorms EV3, an ARM5 robotics device and recently, we build OpenJDK 9 with success but with OpenJDK 10, we have found some problems when we execute some Java programs. Repository to build OpenJDK 9/10 for ARM5 Soft Float: https://github.com/ev3dev-lang-java/openjdk-ev3 To test the JVM, I am using the following repo to test the VM: https://github.com/ev3dev-lang-java/vmbenchmarks And this is the output with the error: robot@ev3dev:~$ java -jar benchmarks.jar -f 1 WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by org.openjdk.jmh.util.Utils (file:/home/robot/benchmarks.jar) to field java.io.Console.cs WARNING: Please consider reporting this to the maintainers of org.openjdk.jmh.util.Utils WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release === DEBUG MESSAGE: Atomic load(jlong) unsupported on this platform === DEBUG MESSAGE: Atomic store(jlong) unsupported on this platform === DEBUG MESSAGE: Atomic load(jlong) unsupported on this platform [thread 4430 also had an error] [error occurred during error reporting ((null)), id 0xe000] === DEBUG MESSAGE: Atomic store(jlong) unsupported on this platform [error occurred during error reporting (printing fatal error message), id 0xe000] === DEBUG MESSAGE: Atomic store(jlong) unsupported on this platform [error occurred during error reporting (printing type of error), id 0xe000] === DEBUG MESSAGE: Atomic store(jlong) unsupported on this platform [error occurred during error reporting (printing stack bounds), id 0xe000] === DEBUG MESSAGE: Atomic store(jlong)
Re: Execution problems with Atomic Operations on OpenJDK10 for ARM5 Soft Float
Good night David, It is the first time that I report a Bug on OpenJDK and I didn´t receive any notification so I didn´t know the status of the Issue that I reported. Many thanks with the link about the Platforms supported: http://www.oracle.com/technetwork/java/javase/documentation/jdk10certconfig-4417031.html We will try to do Compilation with the solution. --- a/src/hotspot/cpu/arm/vm_version_arm_32.cpp +++ b/src/hotspot/cpu/arm/vm_version_arm_32.cpp @@ -298,6 +298,15 @@ FLAG_SET_DEFAULT(UseUnalignedAccesses, false); } + if (arm_arch() == 5) { + if (FLAG_IS_DEFAULT(AssumeMP)) { + FLAG_SET_DEFAULT(AssumeMP, false); + else if (AssumeMP) { + warning("AssumeMP can not be true for ARMv5 as there is only uniprocessor support"); + FLAG_SET_DEFAULT(AssumeMP, false); + } + } + _is_initialized = true; } Runtime workaround: java -XX:-AssumeMP In our case, I would like to continue maintaining this support for the Device. What is the advice that you could give us? What is AssumeMP? For education, this device is pretty interesting for the whole Java community, this is the reason. I will inform with the results. Many thanks in advance. Cheers Juan Antonio El 2018-04-05 00:12, David Holmes escribió: Hi, This was already reported as: https://bugs.openjdk.java.net/browse/JDK-8200580 to which I have responded and closed the bug as this is not a supported platform. As per the bug report this may be due to the change to AssumeMP to be true, but there is no MP support for ARMv5. David On 4/04/2018 8:29 PM, b...@juanantonio.info wrote: Good morning, Mi name is Juan Antonio Breña Moral, I am developing a set of Java libraries for Lego Mindstorms EV3, an ARM5 robotics device and recently, we build OpenJDK 9 with success but with OpenJDK 10, we have found some problems when we execute some Java programs. Repository to build OpenJDK 9/10 for ARM5 Soft Float: https://github.com/ev3dev-lang-java/openjdk-ev3 To test the JVM, I am using the following repo to test the VM: https://github.com/ev3dev-lang-java/vmbenchmarks And this is the output with the error: robot@ev3dev:~$ java -jar benchmarks.jar -f 1 WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by org.openjdk.jmh.util.Utils (file:/home/robot/benchmarks.jar) to field java.io.Console.cs WARNING: Please consider reporting this to the maintainers of org.openjdk.jmh.util.Utils WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release === DEBUG MESSAGE: Atomic load(jlong) unsupported on this platform === DEBUG MESSAGE: Atomic store(jlong) unsupported on this platform === DEBUG MESSAGE: Atomic load(jlong) unsupported on this platform [thread 4430 also had an error] [error occurred during error reporting ((null)), id 0xe000] === DEBUG MESSAGE: Atomic store(jlong) unsupported on this platform [error occurred during error reporting (printing fatal error message), id 0xe000] === DEBUG MESSAGE: Atomic store(jlong) unsupported on this platform [error occurred during error reporting (printing type of error), id 0xe000] === DEBUG MESSAGE: Atomic store(jlong) unsupported on this platform [error occurred during error reporting (printing stack bounds), id 0xe000] === DEBUG MESSAGE: Atomic store(jlong) unsupported on this platform [error occurred during error reporting (printing native stack), id 0xe000] === DEBUG MESSAGE: Atomic store(jlong) unsupported on this platform [error occurred during error reporting (printing Java stack), id 0xe000] === DEBUG MESSAGE: Atomic store(jlong) unsupported on this platform [error occurred during error reporting (printing target Java thread stack), id 0xe000] === DEBUG MESSAGE: Atomic store(jlong) unsupported on this platform [error occurred during error reporting (printing siginfo), id 0xe000] === DEBUG MESSAGE: Atomic store(jlong) unsupported on this platform [error occurred during error reporting (CDS archive access warning), id 0xe000] === DEBUG MESSAGE: Atomic store(jlong) unsupported on this platform [error occurred during error reporting (printing register info), id 0xe000] === DEBUG MESSAGE: Atomic store(jlong) unsupported on this platform [Too many errors, abort] Aborted I think that in OpenJDK10 changed something in compare to OpenJDK9 in relation to ARM5 support. Any idea? Many thanks in advance. Cheers Juan Antonio
Re: Execution problems with Atomic Operations on OpenJDK10 for ARM5 Soft Float
Hi, This was already reported as: https://bugs.openjdk.java.net/browse/JDK-8200580 to which I have responded and closed the bug as this is not a supported platform. As per the bug report this may be due to the change to AssumeMP to be true, but there is no MP support for ARMv5. David On 4/04/2018 8:29 PM, b...@juanantonio.info wrote: Good morning, Mi name is Juan Antonio Breña Moral, I am developing a set of Java libraries for Lego Mindstorms EV3, an ARM5 robotics device and recently, we build OpenJDK 9 with success but with OpenJDK 10, we have found some problems when we execute some Java programs. Repository to build OpenJDK 9/10 for ARM5 Soft Float: https://github.com/ev3dev-lang-java/openjdk-ev3 To test the JVM, I am using the following repo to test the VM: https://github.com/ev3dev-lang-java/vmbenchmarks And this is the output with the error: robot@ev3dev:~$ java -jar benchmarks.jar -f 1 WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by org.openjdk.jmh.util.Utils (file:/home/robot/benchmarks.jar) to field java.io.Console.cs WARNING: Please consider reporting this to the maintainers of org.openjdk.jmh.util.Utils WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release === DEBUG MESSAGE: Atomic load(jlong) unsupported on this platform === DEBUG MESSAGE: Atomic store(jlong) unsupported on this platform === DEBUG MESSAGE: Atomic load(jlong) unsupported on this platform [thread 4430 also had an error] [error occurred during error reporting ((null)), id 0xe000] === DEBUG MESSAGE: Atomic store(jlong) unsupported on this platform [error occurred during error reporting (printing fatal error message), id 0xe000] === DEBUG MESSAGE: Atomic store(jlong) unsupported on this platform [error occurred during error reporting (printing type of error), id 0xe000] === DEBUG MESSAGE: Atomic store(jlong) unsupported on this platform [error occurred during error reporting (printing stack bounds), id 0xe000] === DEBUG MESSAGE: Atomic store(jlong) unsupported on this platform [error occurred during error reporting (printing native stack), id 0xe000] === DEBUG MESSAGE: Atomic store(jlong) unsupported on this platform [error occurred during error reporting (printing Java stack), id 0xe000] === DEBUG MESSAGE: Atomic store(jlong) unsupported on this platform [error occurred during error reporting (printing target Java thread stack), id 0xe000] === DEBUG MESSAGE: Atomic store(jlong) unsupported on this platform [error occurred during error reporting (printing siginfo), id 0xe000] === DEBUG MESSAGE: Atomic store(jlong) unsupported on this platform [error occurred during error reporting (CDS archive access warning), id 0xe000] === DEBUG MESSAGE: Atomic store(jlong) unsupported on this platform [error occurred during error reporting (printing register info), id 0xe000] === DEBUG MESSAGE: Atomic store(jlong) unsupported on this platform [Too many errors, abort] Aborted I think that in OpenJDK10 changed something in compare to OpenJDK9 in relation to ARM5 support. Any idea? Many thanks in advance. Cheers Juan Antonio
Re: Execution problems with Atomic Operations on OpenJDK10 for ARM5 Soft Float
I believe the problem is that the VM is now using more atomic load/store of java longs and we don’t support these operations on multi-processing ARMv5 systems due to the lack of low level atomic instructions. On non MP ARMv5 systems, we use load/store multiple instructions. If you can determine that your ARMv5 processor’s implementation of ldmia/stmia are indeed atomic, you could try to use these instructions by altering the code below. Otherwise, you might want to investigate gcc atomic intrinsics and see if 8 byte atomics are supported on your platform. There’s a set of kernel helper routines that we use for atomic exchange of 8 bytes, maybe they now have atomic 8 byte loads/stores. https://gcc.gnu.org/onlinedocs/gcc/_005f_005fatomic-Builtins.html https://www.kernel.org/doc/Documentation/arm/kernel_user_helpers.txt In open/src/hotspot/cpu/arm/stubGenerator_arm.cpp, these two functions would need to be fixed to provide these low level operations. address generate_atomic_load_long() { address start; StubCodeMark mark(this, "StubRoutines", "atomic_load_long"); start = __ pc(); Register result_lo = R0; Register result_hi = R1; Register src = R0; if (!os::is_MP()) { __ ldmia(src, RegisterSet(result_lo, result_hi)); __ bx(LR); } else if (VM_Version::supports_ldrexd()) { __ ldrexd(result_lo, Address(src)); __ clrex(); // FIXME: safe to remove? __ bx(LR); } else { __ stop("Atomic load(jlong) unsupported on this platform"); __ bx(LR); } return start; } address generate_atomic_store_long() { address start; StubCodeMark mark(this, "StubRoutines", "atomic_store_long"); start = __ pc(); Register newval_lo = R0; Register newval_hi = R1; Register dest = R2; Register scratch_lo= R2; Register scratch_hi= R3; /* After load from stack */ Register result= R3; if (!os::is_MP()) { __ stmia(dest, RegisterSet(newval_lo, newval_hi)); __ bx(LR); } else if (VM_Version::supports_ldrexd()) { __ mov(Rtemp, dest); // get dest to Rtemp Label retry; __ bind(retry); __ ldrexd(scratch_lo, Address(Rtemp)); __ strexd(result, R0, Address(Rtemp)); __ rsbs(result, result, 1); __ b(retry, eq); __ bx(LR); } else { __ stop("Atomic store(jlong) unsupported on this platform"); __ bx(LR); } return start; } Bob. > On Apr 4, 2018, at 11:06 AM, John Paul Adrian Glaubitz > wrote: > > CC'ing hotspot-dev > > On 04/04/2018 12:29 PM, b...@juanantonio.info wrote: >> I think that in OpenJDK10 changed something in compare to OpenJDK9 in >> relation to ARM5 support. > > It was OpenJDK9 which dropped support for ARM CPUs prior ARMv7. If you are > using ARMv5, you have to resort to OpenJDK Zero, i.e. the unoptimized, generic > implementation of the JVM. > > As for the atomic operation, I'm not sure whether Zero supports this > particular > atomic operation. I will have to dig into the code myself. > > Would it be possible that you provide sample code that helps reproduce the > problem? > > Adrian > > -- > .''`. John Paul Adrian Glaubitz > : :' : Debian Developer - glaub...@debian.org > `. `' Freie Universitaet Berlin - glaub...@physik.fu-berlin.de > `-GPG: 62FF 8A75 84E0 2956 9546 0006 7426 3B37 F5B5 F913
Re: Execution problems with Atomic Operations on OpenJDK10 for ARM5 Soft Float
CC'ing hotspot-dev On 04/04/2018 12:29 PM, b...@juanantonio.info wrote: > I think that in OpenJDK10 changed something in compare to OpenJDK9 in > relation to ARM5 support. It was OpenJDK9 which dropped support for ARM CPUs prior ARMv7. If you are using ARMv5, you have to resort to OpenJDK Zero, i.e. the unoptimized, generic implementation of the JVM. As for the atomic operation, I'm not sure whether Zero supports this particular atomic operation. I will have to dig into the code myself. Would it be possible that you provide sample code that helps reproduce the problem? Adrian -- .''`. John Paul Adrian Glaubitz : :' : Debian Developer - glaub...@debian.org `. `' Freie Universitaet Berlin - glaub...@physik.fu-berlin.de `-GPG: 62FF 8A75 84E0 2956 9546 0006 7426 3B37 F5B5 F913