-
Notifications
You must be signed in to change notification settings - Fork 738
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
x86: Respect disableAVX2/512 options and check XCR0 for OS support #20691
Conversation
ba7cf9a
to
7271349
Compare
Signed-off-by: Bradley Wood <[email protected]>
Signed-off-by: Bradley Wood <[email protected]>
7271349
to
a19634e
Compare
@0xdaryl See the force-push |
Jenkins test sanity xlinux,win,osx jdk21 |
Windows nodes are offline. As this PR does have a Windows-specific component to it, can you confirm it's been built and tested on Windows? |
@0xdaryl can you relaunch? |
Jenkins test sanity.functional,sanity.openjdk win jdk21 |
Just a ping on triaging the Windows CI failures. |
I don't think any of the windows tests ran. The only obvious error I see is this:
|
Jenkins test sanity.functional,sanity.openjdk win jdk21 |
I sniffed at the CI failures and see at least one JVM crash with an illegal instruction exception: |
Probably issue #21000? All the crashes happen in byte array hashcode with -XX:-UseCompressedOops. I will try to confirm soon... |
|
Not off the top of my head. I suggest you request access to the machine to check. Ask @AdamBrousseau how to do that. |
@0xdaryl I got a little concerned because because the crash in jenkins would indicate to me that this does not fix the issue. However, the client had indicated that the fix works. I created a linux vm on an AVX-512 machine and modified the kernel to always disable OPMASK, Hi16_ZMM, and ZMM_Hi256 bits in XCR0 register. I was able to reproduce the SIGILL crash easily without this fix, and was unable make it crash with this fix. As for windows, I didn't get access to that machine yet, but can't think of a reason this PR wouldn't fix the issue on windows server 2012. I looked through the build history of that machine, and I see the classic manifestation of #21000, wrong result, no SIGILL. That makes no sense as windows server 2012 does not support AVX-512 which is required to reproduce that crash. On the other hand, I found this build, which reproduced the SIGILL (which is what I would expect). So at the very least, I don't think this PR actually makes the issue worse... Can you manually launch a grinder test on On another note, I really wish the crash info would dump 16 bytes from [RIP] to the console to make it easier to see what instruction was generated. |
@0xdaryl Can you launch tests again? |
Jenkins test sanity.functional,sanity.openjdk win jdk21 |
Failure is #21000 |
As far as I can tell, |
It is protected by ifdef? With msvc we use intrinsic, otherwise define this function. #if defined(OMR_OS_WINDOWS) && defined(TR_TARGET_X86)
#include <intrin.h>
#elif defined(TR_TARGET_X86)
inline unsigned long long _xgetbv(unsigned int ecx)
{
unsigned int eax, edx;
__asm__ __volatile__("xgetbv" : "=a"(eax), "=d"(edx) : "c"(ecx));
return ((unsigned long long)edx << 32) | eax;
}
#endif |
@BradleyWood : see @mpirvu comment above |
That means that |
I'm going to assume there is a good reason that perform specific code in this file is guarded by if statements and not |
Prereq eclipse-omr/omr#7602
Issue: #19408