[Bug 2019856] Re: Add missing ARM-cores to support Grace-based systems

Mauricio Faria de Oliveira 2019856 at bugs.launchpad.net
Tue May 23 21:43:55 UTC 2023


Test packages in ppa:mfo/lp2019856, verified with GDB
(to fake CPU IDs) on Google Cloud ARM-based instances.

No differences in `lscpu` output for non-affected CPU.
Expected output for both affected CPUs (0xd15, 0xd4f).

Tested on LXD containers for Mantic, Lunar, and Jammy
(not on Kinetic as it will EOL soon, ~2 months).

Mantic:
---

$ lxc launch ubuntu-daily:mantic mantic
$ lxc shell mantic

# lsb_release -cs
No LSB modules are available.
mantic

Old:

        # apt install util-linux/mantic-proposed

	# dpkg -s util-linux | grep Version:
	Version: 2.38.1-5ubuntu1

	# lscpu | grep -e 'Vendor ID:' -e 'Model name:'
	Vendor ID:                       ARM
	Model name:                      Neoverse-N1

        # lscpu > lscpu.old

Old/GDB:

        # apt install gdb

	# cat >lp2019856-reproducer.gdb <<EOF
	break arm_ids_decode

	run
	p ct.model
	call (void *) memcpy(ct.model, "0xd15", 6)
	p ct.model
	continue

	run
	p ct.model
	call (void *) memcpy(ct.model, "0xd4f", 6)
	p ct.model
	continue

	quit
	EOF

	# export DEBUGINFOD_URLS="https://debuginfod.ubuntu.com"
	# gdb -x lp2019856-reproducer.gdb -iex 'set debuginfod enabled on' lscpu 2>&1 | grep -e '^\$' -e 'Model name:'
	$1 = 0xaaaaaaad8570 "0xd0c"
	$2 = (void *) 0xaaaaaaad8570
	$3 = 0xaaaaaaad8570 "0xd15"
	Model name:                      -
	$4 = 0xaaaaaaad8570 "0xd0c"
	$5 = (void *) 0xaaaaaaad8570
	$6 = 0xaaaaaaad8570 "0xd4f"
	Model name:                      -

New:

	# add-apt-repository -y ppa:mfo/lp2019856
	# sed -i '/Components:/ s,$, main/debug,' /etc/apt/sources.list.d/mfo-ubuntu-lp2019856-mantic.sources
	# apt update
	# apt install -y util-linux util-linux-dbgsym

	# dpkg -s util-linux | grep Version:
	Version: 2.38.1-5ubuntu2

	# lscpu | grep -e 'Vendor ID:' -e 'Model name:'
	Vendor ID:                       ARM
	Model name:                      Neoverse-N1

	# lscpu > lscpu.new
	# diff lscpu.old lscpu.new
	#

New/GDB:

	# gdb -x lp2019856-reproducer.gdb lscpu 2>&1 | grep -e '^\$' -e 'Model name:'
	$1 = 0xaaaaaaad8570 "0xd0c"
	$2 = (void *) 0xaaaaaaad8570
	$3 = 0xaaaaaaad8570 "0xd15"
	Model name:                      Cortex-R82
	$4 = 0xaaaaaaad8570 "0xd0c"
	$5 = (void *) 0xaaaaaaad8570
	$6 = 0xaaaaaaad8570 "0xd4f"
	Model name:                      Neoverse-V2



Lunar
---


$ lxc launch ubuntu:lunar lunar
$ lxc shell lunar

# lsb_release -cs
No LSB modules are available.
lunar

Old:

	# dpkg -s util-linux | grep Version:
	Version: 2.38.1-4ubuntu1

	# lscpu | grep -e 'Vendor ID:' -e 'Model name:'
	Vendor ID:                       ARM
	Model name:                      Neoverse-N1

	# lscpu > lscpu.old
	#

Old/GDB:

	# apt install gdb
	# export DEBUGINFOD_URLS="https://debuginfod.ubuntu.com"

	# cat >lp2019856-reproducer.gdb <<EOF
	break arm_ids_decode

	run
	p ct.model
	call (void *) memcpy(ct.model, "0xd15", 6)
	p ct.model
	continue

	run
	p ct.model
	call (void *) memcpy(ct.model, "0xd4f", 6)
	p ct.model
	continue

	quit
	EOF

	# gdb -x lp2019856-reproducer.gdb -iex 'set debuginfod enabled on' lscpu 2>&1 | grep -e '^\$' -e 'Model name:'
	$1 = 0xaaaaaaad8570 "0xd0c"
	$2 = (void *) 0xaaaaaaad8570
	$3 = 0xaaaaaaad8570 "0xd15"
	Model name:                      -
	$4 = 0xaaaaaaad8570 "0xd0c"
	$5 = (void *) 0xaaaaaaad8570
	$6 = 0xaaaaaaad8570 "0xd4f"
	Model name:                      -

New:

	# add-apt-repository -y ppa:mfo/lp2019856
	# sed -i '/^deb .* main$/ s:$: main/debug:' /etc/apt/sources.list.d/mfo-ubuntu-lp2019856-lunar.list
	# apt update
	# apt install -y util-linux util-linux-dbgsym

	# dpkg -s util-linux | grep Version:
	Version: 2.38.1-4ubuntu1.1

	# lscpu | grep -e 'Vendor ID:' -e 'Model name:'
	Vendor ID:                       ARM
	Model name:                      Neoverse-N1
	
	# lscpu > lscpu.new
	# diff lscpu.old lscpu.new
	#

New/GDB:

	# gdb -x lp2019856-reproducer.gdb lscpu 2>&1 | grep -e '^\$' -e 'Model name:'
	$1 = 0xaaaaaaad8570 "0xd0c"
	$2 = (void *) 0xaaaaaaad8570
	$3 = 0xaaaaaaad8570 "0xd15"
	Model name:                      Cortex-R82
	$4 = 0xaaaaaaad8570 "0xd0c"
	$5 = (void *) 0xaaaaaaad8570
	$6 = 0xaaaaaaad8570 "0xd4f"
	Model name:                      Neoverse-V2


Jammy
---

$ lxc launch ubuntu:jammy jammy
lxc shell jammy

# lsb_release -cs
jammy

Old:

	# dpkg -s util-linux | grep Version:
	Version: 2.37.2-4ubuntu3
	#

	# lscpu | grep -e 'Vendor ID:' -e 'Model name:'
	Vendor ID:                       ARM
	Model name:                      Neoverse-N1

        # lscpu > lscpu.old

Old/GDB:

	# wget https://launchpad.net/ubuntu/+archive/primary/+files/util-linux-dbgsym_2.37.2-4ubuntu3_arm64.ddeb
	# apt install -y gdb ./util-linux-dbgsym_2.37.2-4ubuntu3_arm64.ddeb

        * Jammy differences: break on arm_ids_decode() by line, and no
Model name if unknown.

	# cat >lp2019856-reproducer-jammy.gdb <<EOF
	break sys-utils/lscpu-arm.c:258

	run
	p ct.model
	call (void *) memcpy(ct.model, "0xd15", 6)
	p ct.model
	continue

	run
	p ct.model
	call (void *) memcpy(ct.model, "0xd4f", 6)
	p ct.model
	continue

	quit
	EOF


	# gdb -x lp2019856-reproducer-jammy.gdb lscpu 2>&1 | grep -e '^\$' -e 'Model name:'
	$1 = 0xaaaaaaacf5b0 "0xd0c"
	$2 = (void *) 0xaaaaaaacf5b0
	$3 = 0xaaaaaaacf5b0 "0xd15"
	$4 = 0xaaaaaaacf5b0 "0xd0c"
	$5 = (void *) 0xaaaaaaacf5b0
	$6 = 0xaaaaaaacf5b0 "0xd4f"

New:

	# add-apt-repository -y ppa:mfo/lp2019856
	# sed -i '/^deb .* main$/ s:$: main/debug:' /etc/apt/sources.list.d/mfo-ubuntu-lp2019856-jammy.list
	# apt update
	# apt install -y util-linux util-linux-dbgsym

	# dpkg -s util-linux | grep Version:
	Version: 2.37.2-4ubuntu3.1
	# lscpu | grep -e 'Vendor ID:' -e 'Model name:'
	Vendor ID:                       ARM
	Model name:                      Neoverse-N1

	# lscpu > lscpu.new
	# diff lscpu.old lscpu.new
	#
	
New/GDB:

	# gdb -x lp2019856-reproducer-jammy.gdb lscpu 2>&1 | grep -e '^\$' -e 'Model name:'
	$1 = 0xaaaaaaacf5b0 "0xd0c"
	$2 = (void *) 0xaaaaaaacf5b0
	$3 = 0xaaaaaaacf5b0 "0xd15"
	Model name:                      Cortex-R82
	$4 = 0xaaaaaaacf5b0 "0xd0c"
	$5 = (void *) 0xaaaaaaacf5b0
	$6 = 0xaaaaaaacf5b0 "0xd4f"
	Model name:                      Neoverse-V2

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to util-linux in Ubuntu.
https://bugs.launchpad.net/bugs/2019856

Title:
  Add missing ARM-cores to support Grace-based systems

Status in util-linux package in Ubuntu:
  In Progress
Status in util-linux source package in Jammy:
  In Progress
Status in util-linux source package in Kinetic:
  Won't Fix
Status in util-linux source package in Lunar:
  In Progress
Status in util-linux source package in Mantic:
  In Progress

Bug description:
  [Impact]

  When running "lscpu" on a Grace-based system + Ubuntu 22.04, it
  doesn't report a model name:

  Vendor ID: ARM
  Model: 0

  [Fix]

  Adding the additional arm_part to sys-utils/lscpu-arm.c solves the
  problem. The commit below adds the specific codes missing from Jammy's
  version.

  https://github.com/util-linux/util-
  linux/commit/6857cccbb4157d5da34ca98f77a0ac9d68e1e740

  [Test Steps]

  * Verify whether output of lscpu is correct on new CPUs; eg:
  Vendor ID: ARM
  Model name: Neoverse-V2

  * Verify whether output of lscpu doesn't change on old CPUs; eg:
  Vendor ID: ARM
  Model name: Neoverse-N1

  [What Could Go Wrong]

  The fix only introduces additional model identifiers to match
  against and print a model name string, thus regression impact
  should be contained within lscpu and printing cpus model name
  on ARM systems. 

  Output doesn't change on systems with non-affected CPU models.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/util-linux/+bug/2019856/+subscriptions




More information about the foundations-bugs mailing list