RFR: 8219241: Provide basic virtualization related info in the hs_error file on linux/windows x86_64
David Holmes
david.holmes at oracle.com
Fri Mar 29 00:15:48 UTC 2019
Hi Matthias,
I have two issues with this API:
1. Why do we have/need os::<os>::print_virtualization_info when we also
have VM_Version::print_platform_virtualization_info?
2. I don't like the fact that the there are two ways to define the
platform specific information:
a) override VM_Version::print_platform_virtualization_info; or
b) hook into the get_detected_virtualization switch
And IIUC code that uses (a) relies on the switch doing nothing
(NoVirtualization) and code that uses (b) relies on
print_platform_virtualization_info doing nothing!
Why doesn't the default implementation of
VM_Version::print_platform_virtualization_info define the
get_detected_virtualization() switch logic, and do away with
Abstract_VM_Version::print_detected_virtualization? Code that wants to
print this info can just call
VM_Version::print_platform_virtualization_info().
Sorry but I just find the current proposal has too many methods and an
unclear structure.
David
-----
On 29/03/2019 2:12 am, Baesken, Matthias wrote:
>>
>> which calls
>>
>> VM_Version::print_platform_virtualization_info
>>
>> which you have defined for s390 and PPC, but I don't see it for other
>> architectures?
>
>
> Hi David , we have in class Abstract_VM_Version
>
> static void print_detected_virtualization(outputStream*);
>
> http://cr.openjdk.java.net/~mbaesken/webrevs/8219241.3/src/hotspot/share/runtime/vm_version.hpp.frames.html
>
>
> ( same approach that is used for other Abstract_VM_Version methods like
>
> ..... Platforms that
> 83 // need to specialize this define VM_Version::early_initialize().
> 84 static void early_initialize() { }
>
> )
>
>>
>> Are the other platforms handled by the switch on
>> VM_Version::get_detected_virtualization() ? Why isn't that encapsulated
>> in print_platform_virtualization_info for those platforms (which I think
>> is only x86 at this stage?).
>>
>
> Yes (and true, it is x86 only because all the other platforms have _detected_virtualization = NoDetectedVirtualization; ).
>
>
>
> Best regards , Matthias
>
>
>> -----Original Message-----
>> From: David Holmes <david.holmes at oracle.com>
>> Sent: Donnerstag, 28. März 2019 08:21
>> To: Baesken, Matthias <matthias.baesken at sap.com>; 'hotspot-
>> dev at openjdk.java.net' <hotspot-dev at openjdk.java.net>
>> Cc: Doerr, Martin <martin.doerr at sap.com>
>> Subject: Re: RFR: 8219241: Provide basic virtualization related info in the
>> hs_error file on linux/windows x86_64
>>
>> On 26/03/2019 6:32 pm, Baesken, Matthias wrote:
>>> Hi David,
>>>
>>>> This is looking better though I'm struggling to keep all the dots
>>>> connected in terms of the APIs - I can't quite see the pattern for what
>>>> calls what and what overrides what.
>>>
>>> I just followed here what is done at other places of VM_Version /
>> Abstract_VM_Version , see
>>> for example :
>>
>> Sorry but I'm having trouble following all the levels of indirection.
>> You have:
>>
>> VM_version::print_detected_virtualization
>>
>> which calls
>>
>> VM_Version::print_platform_virtualization_info
>>
>> which you have defined for s390 and PPC, but I don't see it for other
>> architectures?
>>
>> Then you have os::Linux and os::Windows print_virtualization_info that
>> then calls VM_version::print_detected_virtualization
>>
>> Are the other platforms handled by the switch on
>> VM_Version::get_detected_virtualization() ? Why isn't that encapsulated
>> in print_platform_virtualization_info for those platforms (which I think
>> is only x86 at this stage?).
>>
>> I'm finding it extremely hard to see the clear shape of this API - sorry.
>>
>> David
>> -----
>>
>>> src/hotspot/share/runtime/vm_version.hpp
>>>
>>> 82 // ..... Platforms that
>>> 83 // need to specialize this define VM_Version::early_initialize().
>>> 84 static void early_initialize() { }
>>> 85
>>> 86 // Called to initialize VM variables needing initialization
>>> 87 // after command line parsing. Platforms that need to specialize
>>> 88 // this should define VM_Version::init_before_ergo().
>>> 89 static void init_before_ergo() {}
>>>
>>>
>>>> 2. os_windows.cpp
>>>>
>>>> Why the indirection through os::win32::print_virtualization_info instead
>>>> of just calling VM_Version::print_detected_virtualization directly?
>>>
>>> Yes that's a good point - I think I should change this .
>>>
>>> Best regards, Matthias
>>>
>>>
>>>
>>>
>>>> -----Original Message-----
>>>> From: David Holmes <david.holmes at oracle.com>
>>>> Sent: Mittwoch, 20. März 2019 07:15
>>>> To: Baesken, Matthias <matthias.baesken at sap.com>; 'hotspot-
>>>> dev at openjdk.java.net' <hotspot-dev at openjdk.java.net>
>>>> Cc: Doerr, Martin <martin.doerr at sap.com>
>>>> Subject: Re: RFR: 8219241: Provide basic virtualization related info in the
>>>> hs_error file on linux/windows x86_64
>>>>
>>>> Hi Matthias,
>>>>
>>>> On 19/03/2019 11:53 pm, Baesken, Matthias wrote:
>>>>> Hello, here is a new webrev :
>>>>>
>>>>> http://cr.openjdk.java.net/~mbaesken/webrevs/8219241.3/
>>>>>
>>>>> This moved the ppc/s390 virtualization related info output into the
>>>> platform/cpu - specific coding .
>>>>
>>>> This is looking better though I'm struggling to keep all the dots
>>>> connected in terms of the APIs - I can't quite see the pattern for what
>>>> calls what and what overrides what. A couple of initial comments:
>>>>
>>>> 1. We already have a ton of cpuid related parsing in
>>>> ./cpu/x86/vm_version_x86.hpp - can't you hook into that to "check
>>>> virtualizations" and store the information for later use?
>>>>
>>>> 2. os_windows.cpp
>>>>
>>>> Why the indirection through os::win32::print_virtualization_info instead
>>>> of just calling VM_Version::print_detected_virtualization directly?
>>>>
>>>> I'll keep trying to piece this together. :)
>>>>
>>>> Thanks,
>>>> David
>>>> -----
>>>>
>>>>>
>>>>> Best regards, Matthias
>>>>>
>>>>>
>>>>>> -----Original Message-----
>>>>>> From: David Holmes <david.holmes at oracle.com>
>>>>>> Sent: Montag, 11. März 2019 08:36
>>>>>> To: Baesken, Matthias <matthias.baesken at sap.com>; 'hotspot-
>>>>>> dev at openjdk.java.net' <hotspot-dev at openjdk.java.net>
>>>>>> Cc: Doerr, Martin <martin.doerr at sap.com>
>>>>>> Subject: Re: RFR: 8219241: Provide basic virtualization related info in the
>>>>>> hs_error file on linux/windows x86_64
>>>>>>
>>>>>> On 7/03/2019 3:13 am, Baesken, Matthias wrote:
>>>>>>> Hello , could I push the latest version of 8219241 ?
>>>>>>
>>>>>> Sorry based on your earlier email I thought you were looking at doing
>>>>>> the restructuring. I was then on vacation most of last week.
>>>>>>
>>>>>>> A change that moves the coding more into platform/cpu - specific
>>>> coding
>>>>>> (if this is wanted)
>>>>>>> could be done when bringing in the AIX virtualization related info
>> in
>>>>>> another patch which I plan to do .
>>>>>>
>>>>>> If that is imminent then okay - I don't like the code as it is.
>>>>>>
>>>>>> Thanks,
>>>>>> David
>>>>>>
>>>>>
More information about the hotspot-dev
mailing list