Comment 9 for bug 2019856

Revision history for this message
Mauricio Faria de Oliveira (mfo) wrote :

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