RFR: 8264412: AArch64: CPU description should refer DMI

Aleksey Shipilev shade at openjdk.java.net
Tue Mar 30 10:47:52 UTC 2021


On Tue, 30 Mar 2021 07:53:59 GMT, Yasumasa Suenaga <ysuenaga at openjdk.org> wrote:

> `jdk.CPUInformation` event on AArch64 has valid CPU description in [JDK-8262491](https://bugs.openjdk.java.net/browse/JDK-8262491), however it does not work on UEFI booted machine.
> 
> [JDK-8262491](https://bugs.openjdk.java.net/browse/JDK-8262491) refers device tree to get board name, however it does not exist on UEFI. We need to refer DMI.
> However we need to have root privilege, so we refer /sys/devices/virtual/dmi/id to avoid it.
> 
> We can get board name from /sys/devices/virtual/dmi/id/board_name, but some machine set empty string to it. So we will refer /sys/devices/virtual/dmi/id/product_name as a fallback.
> 
> For example, we can get following CPU description on AWS A1 instance after this change:
> 
> jdk.CPUInformation {
>   startTime = 05:28:24.506
>   cpu = "AArch64"
>   description = "AArch64 a1.2xlarge  0x41:0x0:0xd08:3, simd, crc, aes, sha1, sha256"
>   sockets = 8
>   cores = 8
>   hwThreads = 8
> }

src/hotspot/os_cpu/linux_aarch64/vm_version_linux_aarch64.cpp line 196:

> 194:   if (!read_fully("/proc/device-tree/compatible", buf, buflen)) {
> 195:     if (!read_fully("/sys/devices/virtual/dmi/id/board_name", buf, buflen)) {
> 196:       read_fully("/sys/devices/virtual/dmi/id/product_name", buf, buflen);

I think it would be nicer to write:

  if (read_fully("/proc/device-tree/compatible", buf, buflen)) {
    return;
  }
  if (read_fully("/sys/devices/virtual/dmi/id/board_name", buf, buflen)) {
    return;
  }
  read_fully("/sys/devices/virtual/dmi/id/product_name", buf, buflen);
...in case we would add more lines afterwards.

-------------

PR: https://git.openjdk.java.net/jdk/pull/3259


More information about the hotspot-runtime-dev mailing list