Both patches are available and ready for SRU on Focal and Bionic.
After being tested individually from a ppa ppa:mclemenceau/distro-work on 
ppc64le instances 

** Description changed:

+ 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 <c...@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/tul...@linux.ibm.com 
-  
+     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/tul...@linux.ibm.com
+ 
  ---uname output---
  N/A
-  
- Machine Type = Reproducible on all POWER8 and POWER9 servers 
-  
+ 
+ Machine Type = Reproducible on all POWER8 and POWER9 servers
+ 
  ---Debugger---
  A debugger is not configured
-  
+ 
  ---Steps to Reproduce---
-  $ cat test-sync.c 
+  $ cat test-sync.c
  #define __SYNC(l) ".long (0x7c0004AC | ((" #l ") << 21))"
  
  int
  main ()
  {
-         asm volatile(__SYNC(4) : : : "memory");
+         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== 
+ ==150073==
  dis_memsync(ppc)(sync/lwsync,flag_L)
  disInstr(ppc): unhandled instruction: 0x7C8004AC
-                  primary 31(0x1F), secondary 1196(0x4AC)
+                  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 tool common name: Valgrind
+ 
+ The userspace tool has the following bit modes: 64-bit
  
  Userspace deb: valgrind
  
  Userspace tool obtained from project website:  na

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

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

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

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to