• Ravi Bangoria's avatar
    powerpc/watchpoint: Fix DAWR exception constraint · f6780ce6
    Ravi Bangoria authored
    Pedro Miraglia Franco de Carvalho noticed that on p8/p9, DAR value is
    inconsistent with different type of load/store. Like for byte,word
    etc. load/stores, DAR is set to the address of the first byte of
    overlap between watch range and real access. But for quadword load/
    store it's sometime set to the address of the first byte of real
    access whereas sometime set to the address of the first byte of
    overlap. This issue has been fixed in p10. In p10(ISA 3.1), DAR is
    always set to the address of the first byte of overlap. Commit 27985b2a
    ("powerpc/watchpoint: Don't ignore extraneous exceptions blindly")
    wrongly assumes that DAR is set to the address of the first byte of
    overlap for all load/stores on p8/p9 as well. Fix that. With the fix,
    we now rely on 'ea' provided by analyse_instr(). If analyse_instr()
    fails, generate event unconditionally on p8/p9, and on p10 generate
    event only if DAR is within a DAWR range.
    
    Note: 8xx is not affected.
    
    Fixes: 27985b2a ("powerpc/watchpoint: Don't ignore extraneous exceptions blindly")
    Fixes: 74c68810 ("powerpc/watchpoint: Prepare handler to handle more than one watchpoint")
    Reported-by: default avatarPedro Miraglia Franco de Carvalho <pedromfc@br.ibm.com>
    Signed-off-by: default avatarRavi Bangoria <ravi.bangoria@linux.ibm.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20200723090813.303838-3-ravi.bangoria@linux.ibm.com
    f6780ce6
hw_breakpoint.c 20.4 KB