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