[Bug 1887974] Re: [20.04] Valgrind: PPC sync instruction L field should only be 2 bits in ISA 3.0

Brian Murray 1887974 at bugs.launchpad.net
Tue Sep 1 18:28:22 UTC 2020


Hello bugproxy, or anyone else affected,

Accepted valgrind into focal-proposed. The package will build now and be
available at
https://launchpad.net/ubuntu/+source/valgrind/1:3.15.0-1ubuntu9.1 in a
few hours, and then in the -proposed repository.

Please help us by testing this new package.  See
https://wiki.ubuntu.com/Testing/EnableProposed for documentation on how
to enable and use -proposed.  Your feedback will aid us getting this
update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug,
mentioning the version of the package you tested, what testing has been
performed on the package and change the tag from verification-needed-
focal to verification-done-focal. If it does not fix the bug for you,
please add a comment stating that, and change the tag to verification-
failed-focal. In either case, without details of your testing we will
not be able to proceed.

Further information regarding the verification process can be found at
https://wiki.ubuntu.com/QATeam/PerformingSRUVerification .  Thank you in
advance for helping!

N.B. The updated package will be released to -updates after the bug(s)
fixed by this package have been verified and the package has been in
-proposed for a minimum of 7 days.

** Changed in: valgrind (Ubuntu Focal)
       Status: In Progress => Fix Committed

** Tags added: verification-needed verification-needed-focal

** Changed in: valgrind (Ubuntu Bionic)
       Status: In Progress => Fix Committed

** Tags added: verification-needed-bionic

-- 
You received this bug notification because you are a member of Ubuntu
Sponsors Team, which is subscribed to the bug report.
https://bugs.launchpad.net/bugs/1887974

Title:
  [20.04] Valgrind: PPC sync instruction L field should only be 2 bits
  in ISA 3.0

Status in The Ubuntu-power-systems project:
  In Progress
Status in valgrind package in Ubuntu:
  Fix Released
Status in valgrind source package in Bionic:
  Fix Committed
Status in valgrind source package in Focal:
  Fix Committed

Bug description:
  SRU Description

  [Impact]
  Valgrind  mishandles the L field of the sync instruction.
  More details are available at: https://bugs.kde.org/show_bug.cgi?id=422677
  Single line patch available online with commit fb6f7abcbc92506d302fb18a2c5fc853d2929248

  [Test Case]
  On a PPC64le Hardware
  # sudo apt-get install gcc valgrind
  #cat test-sync.c
  define __SYNC(l) ".long (0x7c0004AC | ((" #l ") << 21))"

  int
  main ()
  {
          asm volatile(__SYNC(4) : : : "memory");
  }

  # gcc test-sync.c && valgrind --tool=none ./a.out
  This will report this error unpatched part of the valgrind output

  dis_memsync(ppc)(sync/lwsync,flag_L)
  disInstr(ppc): unhandled instruction: 0x7C8004AC
                   primary 31(0x1F), secondary 1196(0x4AC)

  # This won't report this error once using the updated version

  [Regression Potential]
  The regression potential is very low since this bug has been submitted upstream and is already available in Groovy. Package build and run successfully. Not anticipating regression

  End SRU Description

  
  ---Problem Description---
  This is a bug report for focal.

  Valgrind, including version 3.16, mishandles the L field of the sync instruction.
  More details are available at: https://bugs.kde.org/show_bug.cgi?id=422677

  This is a request to backport the following Valgrind patch from
  upstream:

  commit fb6f7abcbc92506d302fb18a2c5fc853d2929248
  Author: Carl Love <cel at us.ibm.com>
  Date:   Tue Jun 9 10:42:03 2020 -0500

      Power PC Fix extraction of the L field for sync instruction

      The L field is currently a two bit[22:21] field in ISA 3.0. The size of the
      L field has changed over time.

      Currently the ISA 3.0 Valgrind sync instruction support code sets the
      flag_L for the instruction L field to a five bit value that includes bits
      that are marked reserved the sync instruction.  This patch fixes the issue for ISA 3.0
      to only setting flag_L the specified two bits.

      Valgrind bugzilla:   https://bugs.kde.org/show_bug.cgi?id=422677

  Contact Information = Tulio Magno/tuliom at linux.ibm.com

  ---uname output---
  N/A

  Machine Type = Reproducible on all POWER8 and POWER9 servers

  ---Debugger---
  A debugger is not configured

  ---Steps to Reproduce---
   $ cat test-sync.c
  #define __SYNC(l) ".long (0x7c0004AC | ((" #l ") << 21))"

  int
  main ()
  {
          asm volatile(__SYNC(4) : : : "memory");
  }
  $ gcc test-sync.c && valgrind --tool=none ./a.out
  ==150073== Nulgrind, the minimal Valgrind tool
  ==150073== Copyright (C) 2002-2017, and GNU GPL'd, by Nicholas Nethercote.
  ==150073== Using Valgrind-3.13.0 and LibVEX; rerun with -h for copyright info
  ==150073== Command: ./a.out
  ==150073==
  dis_memsync(ppc)(sync/lwsync,flag_L)
  disInstr(ppc): unhandled instruction: 0x7C8004AC
                   primary 31(0x1F), secondary 1196(0x4AC)
  ==150073== valgrind: Unrecognised instruction at address 0x180788.
  ==150073==    at 0x180788: main (in /home/tuliom/tmp/a.out)
  ==150073== Your program just tried to execute an instruction that Valgrind
  ==150073== did not recognise.
  ...

  Userspace tool common name: Valgrind

  The userspace tool has the following bit modes: 64-bit

  Userspace deb: valgrind

  Userspace tool obtained from project website:  na

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu-power-systems/+bug/1887974/+subscriptions



More information about the Ubuntu-sponsors mailing list