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 > 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
# dpkg -s util-linux | grep Version: Version: 2.38.1-4ubuntu1
# lscpu > lscpu.old #
# apt install gdb # 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: -
# 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
Jammy ---
$ lxc launch ubuntu:jammy jammy lxc shell jammy
# lsb_release -cs jammy
# dpkg -s util-linux | grep Version: Version: 2.37.2-4ubuntu3 #
# 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
# 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"
# 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
# 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
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" reproducer. gdb -iex 'set debuginfod enabled on' lscpu 2>&1 | grep -e '^\$' -e 'Model name:'
# gdb -x lp2019856-
$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 sources. list.d/ mfo-ubuntu- lp2019856- mantic. sources
# sed -i '/Components:/ s,$, main/debug,' /etc/apt/
# 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 /debuginfod. ubuntu. com"
# export DEBUGINFOD_URLS="https:/
# 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 sources. list.d/ mfo-ubuntu- lp2019856- lunar.list
# sed -i '/^deb .* main$/ s:$: main/debug:' /etc/apt/
# 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 linux-dbgsym_ 2.37.2- 4ubuntu3_ arm64.ddeb
# apt install -y gdb ./util-
* Jammy differences: break on arm_ids_decode() by line, and no Model name if unknown.
# cat >lp2019856- reproducer- jammy.gdb <<EOF lscpu-arm. c:258
break sys-utils/
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 sources. list.d/ mfo-ubuntu- lp2019856- jammy.list
# sed -i '/^deb .* main$/ s:$: main/debug:' /etc/apt/
# 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