[Patch 0/6] PPC64-HWBKPT: Hardware Breakpoint interfaces - ver VI
From: K.Prasad <hidden>
Date: 2009-06-10 09:07:35
Hi David, Please find a new set of patches that implement the changes described below. Changelog - ver VI ------------------- (Ver I: http://ozlabs.org/pipermail/linuxppc-dev/2009-May/071942.html) (Ver II: http://ozlabs.org/pipermail/linuxppc-dev/2009-May/072106.html) (Ver III: http://ozlabs.org/pipermail/linuxppc-dev/2009-May/072387.html (Ver IV: http://ozlabs.org/pipermail/linuxppc-dev/2009-May/072518.html (Ver V: http://lists.ozlabs.org/pipermail/linuxppc-dev/2009-June/072749.html) 9th June June 2009 ------------------- Changelog - ver VI ------------------ The task of identifying 'genuine' breakpoint exceptions from those caused by 'out-of-range' accesses turned out to be more tricky than originally thought. Some changes to this effect were made in version IV of this patchset, but they were not sufficient for user-space. Basically the breakpoint address received through ptrace is always aligned to 8-bytes since ptrace receives an encoded 'data' (consisting of address | translation_enable | bkpt_type), and the size of the symbol is not known. However for kernel-space addresses, the symbol-size can be determined using kallsyms_lookup_size_offset() and this is used to check if DAR (in the exception context) is 'bkpt_address <= DAR <= (bkpt_address + symbol_size)', failing which we conclude it as a stray exception. The following changes are made to enable check: - Addition of a symbolsize field in 'struct arch_hw_breakpoint' field. - Store the size of the 'watched' kernel symbol into 'symbolsize' field in arch_store_info(0 routine. - Verify if the above described condition is true when is_one_shot is FALSE in hw_breakpoint_handler(). Kindly let me know your comments on the same. Thanks, K.Prasad