[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