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
Touch seeded packages, 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


-- 
Mailing list: https://launchpad.net/~touch-packages
Post to     : touch-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~touch-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to