Message ID | 20190925040630.6948-1-ravi.bangoria@linux.ibm.com (mailing list archive) |
---|---|
Headers | show |
Series | Powerpc/Watchpoint: Few important fixes | expand |
On 9/25/19 9:36 AM, Ravi Bangoria wrote: > v3: https://lists.ozlabs.org/pipermail/linuxppc-dev/2019-July/193339.html > > v3->v4: > - Instead of considering exception as extraneous when dar is outside of > user specified range, analyse the instruction and check for overlap > between user specified range and actual load/store range. > - Add selftest for the same in perf-hwbreak.c > - Make ptrace-hwbreak.c selftest more strict by checking address in > check_success. > - Support for 8xx in ptrace-hwbreak.c selftest (Build tested only) > - Rebase to powerpc/next > > @Christope, Can you please check Patch 5. I've just build-tested it > with ep88xc_defconfig. @mpe, @mikey, Any feedback? @Christophe, Is patch5 works for you on 8xx? Thanks, Ravi
Le 07/10/2019 à 08:35, Ravi Bangoria a écrit : > > > On 9/25/19 9:36 AM, Ravi Bangoria wrote: >> v3: https://lists.ozlabs.org/pipermail/linuxppc-dev/2019-July/193339.html >> >> v3->v4: >> - Instead of considering exception as extraneous when dar is outside of >> user specified range, analyse the instruction and check for overlap >> between user specified range and actual load/store range. >> - Add selftest for the same in perf-hwbreak.c >> - Make ptrace-hwbreak.c selftest more strict by checking address in >> check_success. >> - Support for 8xx in ptrace-hwbreak.c selftest (Build tested only) >> - Rebase to powerpc/next >> >> @Christope, Can you please check Patch 5. I've just build-tested it >> with ep88xc_defconfig. > > @mpe, @mikey, Any feedback? > > @Christophe, Is patch5 works for you on 8xx? > Getting the following : root@vgoip:~# ./ptrace-hwbreak test: ptrace-hwbreak tags: git_version:v5.4-rc2-710-gf0082e173fe4-dirty PTRACE_SET_DEBUGREG, WO, len: 1: Ok PTRACE_SET_DEBUGREG, WO, len: 2: Ok PTRACE_SET_DEBUGREG, WO, len: 4: Ok PTRACE_SET_DEBUGREG, WO, len: 8: Ok PTRACE_SET_DEBUGREG, RO, len: 1: Ok PTRACE_SET_DEBUGREG, RO, len: 2: Ok PTRACE_SET_DEBUGREG, RO, len: 4: Ok PTRACE_SET_DEBUGREG, RO, len: 8: Ok PTRACE_SET_DEBUGREG, RW, len: 1: Ok PTRACE_SET_DEBUGREG, RW, len: 2: Ok PTRACE_SET_DEBUGREG, RW, len: 4: Ok PTRACE_SET_DEBUGREG, RW, len: 8: Ok PPC_PTRACE_SETHWDEBUG, MODE_EXACT, WO, len: 1: Ok PPC_PTRACE_SETHWDEBUG, MODE_EXACT, RO, len: 1: Ok PPC_PTRACE_SETHWDEBUG, MODE_EXACT, RW, len: 1: Ok PPC_PTRACE_SETHWDEBUG, MODE_RANGE, DW ALIGNED, WO, len: 6: Ok PPC_PTRACE_SETHWDEBUG, MODE_RANGE, DW ALIGNED, RO, len: 6: Fail failure: ptrace-hwbreak Christophe
>> @Christophe, Is patch5 works for you on 8xx? >> > > Getting the following : > > root@vgoip:~# ./ptrace-hwbreak > test: ptrace-hwbreak > tags: git_version:v5.4-rc2-710-gf0082e173fe4-dirty > PTRACE_SET_DEBUGREG, WO, len: 1: Ok > PTRACE_SET_DEBUGREG, WO, len: 2: Ok > PTRACE_SET_DEBUGREG, WO, len: 4: Ok > PTRACE_SET_DEBUGREG, WO, len: 8: Ok > PTRACE_SET_DEBUGREG, RO, len: 1: Ok > PTRACE_SET_DEBUGREG, RO, len: 2: Ok > PTRACE_SET_DEBUGREG, RO, len: 4: Ok > PTRACE_SET_DEBUGREG, RO, len: 8: Ok > PTRACE_SET_DEBUGREG, RW, len: 1: Ok > PTRACE_SET_DEBUGREG, RW, len: 2: Ok > PTRACE_SET_DEBUGREG, RW, len: 4: Ok > PTRACE_SET_DEBUGREG, RW, len: 8: Ok > PPC_PTRACE_SETHWDEBUG, MODE_EXACT, WO, len: 1: Ok > PPC_PTRACE_SETHWDEBUG, MODE_EXACT, RO, len: 1: Ok > PPC_PTRACE_SETHWDEBUG, MODE_EXACT, RW, len: 1: Ok > PPC_PTRACE_SETHWDEBUG, MODE_RANGE, DW ALIGNED, WO, len: 6: Ok > PPC_PTRACE_SETHWDEBUG, MODE_RANGE, DW ALIGNED, RO, len: 6: Fail > failure: ptrace-hwbreak > Thanks Christophe. I don't have any 8xx box. I checked qemu and it seems qemu emulation for 8xx is not yet supported. So I can't debug this. Can you please check why it's failing? -Ravi
On 10/10/19 10:14 AM, Ravi Bangoria wrote: > >>> @Christophe, Is patch5 works for you on 8xx? >>> >> >> Getting the following : >> >> root@vgoip:~# ./ptrace-hwbreak >> test: ptrace-hwbreak >> tags: git_version:v5.4-rc2-710-gf0082e173fe4-dirty >> PTRACE_SET_DEBUGREG, WO, len: 1: Ok >> PTRACE_SET_DEBUGREG, WO, len: 2: Ok >> PTRACE_SET_DEBUGREG, WO, len: 4: Ok >> PTRACE_SET_DEBUGREG, WO, len: 8: Ok >> PTRACE_SET_DEBUGREG, RO, len: 1: Ok >> PTRACE_SET_DEBUGREG, RO, len: 2: Ok >> PTRACE_SET_DEBUGREG, RO, len: 4: Ok >> PTRACE_SET_DEBUGREG, RO, len: 8: Ok >> PTRACE_SET_DEBUGREG, RW, len: 1: Ok >> PTRACE_SET_DEBUGREG, RW, len: 2: Ok >> PTRACE_SET_DEBUGREG, RW, len: 4: Ok >> PTRACE_SET_DEBUGREG, RW, len: 8: Ok >> PPC_PTRACE_SETHWDEBUG, MODE_EXACT, WO, len: 1: Ok >> PPC_PTRACE_SETHWDEBUG, MODE_EXACT, RO, len: 1: Ok >> PPC_PTRACE_SETHWDEBUG, MODE_EXACT, RW, len: 1: Ok >> PPC_PTRACE_SETHWDEBUG, MODE_RANGE, DW ALIGNED, WO, len: 6: Ok >> PPC_PTRACE_SETHWDEBUG, MODE_RANGE, DW ALIGNED, RO, len: 6: Fail >> failure: ptrace-hwbreak >> > > Thanks Christophe. I don't have any 8xx box. I checked qemu and it seems > qemu emulation for 8xx is not yet supported. So I can't debug this. Can > you please check why it's failing? PPC_PTRACE_SETHWDEBUG internally uses DAWR register and probably 8xx does not emulate DAWR logic, it only uses DABR to emulate double-word watchpoint. In that case, all testcases that uses PPC_PTRACE_SETHWDEBUG should be disabled for 8xx. I'll change [PATCH 5] accordingly and resend. Also, do you think I should fix hw_breakpoint_validate_len() from [PARCH 1] for 8xx? I re-checked you recent patch* to allow any address range size for 8xx. With that patch, hw_breakpoint_validate_len() won't get called at all for 8xx. * Message-Id: 1ed0de54ce6021fa0fdf50e938365546a4f5e316.1566925030.git.christophe.leroy@c-s.fr -Ravi
Le 10/10/2019 à 06:44, Ravi Bangoria a écrit : > >>> @Christophe, Is patch5 works for you on 8xx? >>> >> >> Getting the following : >> >> root@vgoip:~# ./ptrace-hwbreak >> test: ptrace-hwbreak >> tags: git_version:v5.4-rc2-710-gf0082e173fe4-dirty >> PTRACE_SET_DEBUGREG, WO, len: 1: Ok >> PTRACE_SET_DEBUGREG, WO, len: 2: Ok >> PTRACE_SET_DEBUGREG, WO, len: 4: Ok >> PTRACE_SET_DEBUGREG, WO, len: 8: Ok >> PTRACE_SET_DEBUGREG, RO, len: 1: Ok >> PTRACE_SET_DEBUGREG, RO, len: 2: Ok >> PTRACE_SET_DEBUGREG, RO, len: 4: Ok >> PTRACE_SET_DEBUGREG, RO, len: 8: Ok >> PTRACE_SET_DEBUGREG, RW, len: 1: Ok >> PTRACE_SET_DEBUGREG, RW, len: 2: Ok >> PTRACE_SET_DEBUGREG, RW, len: 4: Ok >> PTRACE_SET_DEBUGREG, RW, len: 8: Ok >> PPC_PTRACE_SETHWDEBUG, MODE_EXACT, WO, len: 1: Ok >> PPC_PTRACE_SETHWDEBUG, MODE_EXACT, RO, len: 1: Ok >> PPC_PTRACE_SETHWDEBUG, MODE_EXACT, RW, len: 1: Ok >> PPC_PTRACE_SETHWDEBUG, MODE_RANGE, DW ALIGNED, WO, len: 6: Ok >> PPC_PTRACE_SETHWDEBUG, MODE_RANGE, DW ALIGNED, RO, len: 6: Fail >> failure: ptrace-hwbreak >> > > Thanks Christophe. I don't have any 8xx box. I checked qemu and it seems > qemu emulation for 8xx is not yet supported. So I can't debug this. Can > you please check why it's failing? > First issue: we get a mismatch between the parent and the child, because len 8 test generates two reads/writes while the parent installs the breakpoint only once. Changing glvar from __u64 to unsigned long fixes the problem. Then I get: test: ptrace-hwbreak tags: git_version:v5.4-rc2-710-gf0082e173fe4-dirty PTRACE_SET_DEBUGREG, WO, len: 1: Ok PTRACE_SET_DEBUGREG, WO, len: 2: Ok PTRACE_SET_DEBUGREG, WO, len: 4: Ok PTRACE_SET_DEBUGREG, RO, len: 1: Ok PTRACE_SET_DEBUGREG, RO, len: 2: Ok PTRACE_SET_DEBUGREG, RO, len: 4: Ok PTRACE_SET_DEBUGREG, RW, len: 1: Ok PTRACE_SET_DEBUGREG, RW, len: 2: Ok PTRACE_SET_DEBUGREG, RW, len: 4: Ok PPC_PTRACE_SETHWDEBUG, MODE_EXACT, WO, len: 1: Ok PPC_PTRACE_SETHWDEBUG, MODE_EXACT, RO, len: 1: Ok PPC_PTRACE_SETHWDEBUG, MODE_EXACT, RW, len: 1: Ok PPC_PTRACE_SETHWDEBUG, MODE_RANGE, DW ALIGNED, WO, len: 6: Fail failure: ptrace-hwbreak Which shows that PPC_PTRACE_SETHWDEBUG doesn't work in MODE_RANGE Christophe
Le 10/10/2019 à 08:25, Ravi Bangoria a écrit : > > > On 10/10/19 10:14 AM, Ravi Bangoria wrote: >> >>>> @Christophe, Is patch5 works for you on 8xx? >>>> >>> >>> Getting the following : >>> >>> root@vgoip:~# ./ptrace-hwbreak >>> test: ptrace-hwbreak >>> tags: git_version:v5.4-rc2-710-gf0082e173fe4-dirty >>> PTRACE_SET_DEBUGREG, WO, len: 1: Ok >>> PTRACE_SET_DEBUGREG, WO, len: 2: Ok >>> PTRACE_SET_DEBUGREG, WO, len: 4: Ok >>> PTRACE_SET_DEBUGREG, WO, len: 8: Ok >>> PTRACE_SET_DEBUGREG, RO, len: 1: Ok >>> PTRACE_SET_DEBUGREG, RO, len: 2: Ok >>> PTRACE_SET_DEBUGREG, RO, len: 4: Ok >>> PTRACE_SET_DEBUGREG, RO, len: 8: Ok >>> PTRACE_SET_DEBUGREG, RW, len: 1: Ok >>> PTRACE_SET_DEBUGREG, RW, len: 2: Ok >>> PTRACE_SET_DEBUGREG, RW, len: 4: Ok >>> PTRACE_SET_DEBUGREG, RW, len: 8: Ok >>> PPC_PTRACE_SETHWDEBUG, MODE_EXACT, WO, len: 1: Ok >>> PPC_PTRACE_SETHWDEBUG, MODE_EXACT, RO, len: 1: Ok >>> PPC_PTRACE_SETHWDEBUG, MODE_EXACT, RW, len: 1: Ok >>> PPC_PTRACE_SETHWDEBUG, MODE_RANGE, DW ALIGNED, WO, len: 6: Ok >>> PPC_PTRACE_SETHWDEBUG, MODE_RANGE, DW ALIGNED, RO, len: 6: Fail >>> failure: ptrace-hwbreak >>> >> >> Thanks Christophe. I don't have any 8xx box. I checked qemu and it seems >> qemu emulation for 8xx is not yet supported. So I can't debug this. Can >> you please check why it's failing? > > PPC_PTRACE_SETHWDEBUG internally uses DAWR register and probably 8xx does > not emulate DAWR logic, it only uses DABR to emulate double-word > watchpoint. > In that case, all testcases that uses PPC_PTRACE_SETHWDEBUG should be > disabled for 8xx. I'll change [PATCH 5] accordingly and resend. I think the MODE_EXACT ones are OK with the 8xx at the time being. > > Also, do you think I should fix hw_breakpoint_validate_len() from [PARCH 1] > for 8xx? I re-checked you recent patch* to allow any address range size for > 8xx. With that patch, hw_breakpoint_validate_len() won't get called at all > for 8xx. At the time being, the 8xx emulates DABR so it has the same limitations as BOOK3S. My patch needs to be rebased on top of your series and I think it needs some modifications, as it seems it doesn't properly handle size 1 and size 2 breakpoints at least. So I think that you should leave your Patch1 as is, and I'll modify the validate_len() logic while rebasing my patch. Christophe
Le 10/10/2019 à 06:44, Ravi Bangoria a écrit : > >>> @Christophe, Is patch5 works for you on 8xx? >>> >> >> Getting the following : >> >> root@vgoip:~# ./ptrace-hwbreak >> test: ptrace-hwbreak >> tags: git_version:v5.4-rc2-710-gf0082e173fe4-dirty >> PTRACE_SET_DEBUGREG, WO, len: 1: Ok >> PTRACE_SET_DEBUGREG, WO, len: 2: Ok >> PTRACE_SET_DEBUGREG, WO, len: 4: Ok >> PTRACE_SET_DEBUGREG, WO, len: 8: Ok >> PTRACE_SET_DEBUGREG, RO, len: 1: Ok >> PTRACE_SET_DEBUGREG, RO, len: 2: Ok >> PTRACE_SET_DEBUGREG, RO, len: 4: Ok >> PTRACE_SET_DEBUGREG, RO, len: 8: Ok >> PTRACE_SET_DEBUGREG, RW, len: 1: Ok >> PTRACE_SET_DEBUGREG, RW, len: 2: Ok >> PTRACE_SET_DEBUGREG, RW, len: 4: Ok >> PTRACE_SET_DEBUGREG, RW, len: 8: Ok >> PPC_PTRACE_SETHWDEBUG, MODE_EXACT, WO, len: 1: Ok >> PPC_PTRACE_SETHWDEBUG, MODE_EXACT, RO, len: 1: Ok >> PPC_PTRACE_SETHWDEBUG, MODE_EXACT, RW, len: 1: Ok >> PPC_PTRACE_SETHWDEBUG, MODE_RANGE, DW ALIGNED, WO, len: 6: Ok >> PPC_PTRACE_SETHWDEBUG, MODE_RANGE, DW ALIGNED, RO, len: 6: Fail >> failure: ptrace-hwbreak >> > I also tried on a 83xx (book3s/32). This one has a regular DABR : root@vgoippro:~# ./ptrace-hwbreak test: ptrace-hwbreak tags: git_version:v5.4-rc2-710-gf0082e173fe4-dirty PTRACE_SET_DEBUGREG, WO, len: 1: Ok PTRACE_SET_DEBUGREG, WO, len: 2: Ok PTRACE_SET_DEBUGREG, WO, len: 4: Ok PTRACE_SET_DEBUGREG, WO, len: 8: Ok PTRACE_SET_DEBUGREG, RO, len: 1: Ok PTRACE_SET_DEBUGREG, RO, len: 2: Ok PTRACE_SET_DEBUGREG, RO, len: 4: Ok PTRACE_SET_DEBUGREG, RO, len: 8: Ok PTRACE_SET_DEBUGREG, RW, len: 1: Ok PTRACE_SET_DEBUGREG, RW, len: 2: Ok PTRACE_SET_DEBUGREG, RW, len: 4: Ok PTRACE_SET_DEBUGREG, RW, len: 8: Ok PPC_PTRACE_SETHWDEBUG, MODE_EXACT, WO, len: 1: Ok PPC_PTRACE_SETHWDEBUG, MODE_EXACT, RO, len: 1: Ok PPC_PTRACE_SETHWDEBUG, MODE_EXACT, RW, len: 1: Ok PPC_PTRACE_SETHWDEBUG, MODE_RANGE, DW ALIGNED, WO, len: 6: Ok PPC_PTRACE_SETHWDEBUG, MODE_RANGE, DW ALIGNED, RO, len: 6: Ok PPC_PTRACE_SETHWDEBUG, MODE_RANGE, DW ALIGNED, RW, len: 6: Ok PPC_PTRACE_SETHWDEBUG failed: Invalid argument failure: ptrace-hwbreak Christophe
On 10/12/19 1:01 PM, Christophe Leroy wrote: > > > Le 10/10/2019 à 08:25, Ravi Bangoria a écrit : >> >> >> On 10/10/19 10:14 AM, Ravi Bangoria wrote: >>> >>>>> @Christophe, Is patch5 works for you on 8xx? >>>>> >>>> >>>> Getting the following : >>>> >>>> root@vgoip:~# ./ptrace-hwbreak >>>> test: ptrace-hwbreak >>>> tags: git_version:v5.4-rc2-710-gf0082e173fe4-dirty >>>> PTRACE_SET_DEBUGREG, WO, len: 1: Ok >>>> PTRACE_SET_DEBUGREG, WO, len: 2: Ok >>>> PTRACE_SET_DEBUGREG, WO, len: 4: Ok >>>> PTRACE_SET_DEBUGREG, WO, len: 8: Ok >>>> PTRACE_SET_DEBUGREG, RO, len: 1: Ok >>>> PTRACE_SET_DEBUGREG, RO, len: 2: Ok >>>> PTRACE_SET_DEBUGREG, RO, len: 4: Ok >>>> PTRACE_SET_DEBUGREG, RO, len: 8: Ok >>>> PTRACE_SET_DEBUGREG, RW, len: 1: Ok >>>> PTRACE_SET_DEBUGREG, RW, len: 2: Ok >>>> PTRACE_SET_DEBUGREG, RW, len: 4: Ok >>>> PTRACE_SET_DEBUGREG, RW, len: 8: Ok >>>> PPC_PTRACE_SETHWDEBUG, MODE_EXACT, WO, len: 1: Ok >>>> PPC_PTRACE_SETHWDEBUG, MODE_EXACT, RO, len: 1: Ok >>>> PPC_PTRACE_SETHWDEBUG, MODE_EXACT, RW, len: 1: Ok >>>> PPC_PTRACE_SETHWDEBUG, MODE_RANGE, DW ALIGNED, WO, len: 6: Ok >>>> PPC_PTRACE_SETHWDEBUG, MODE_RANGE, DW ALIGNED, RO, len: 6: Fail >>>> failure: ptrace-hwbreak >>>> >>> >>> Thanks Christophe. I don't have any 8xx box. I checked qemu and it seems >>> qemu emulation for 8xx is not yet supported. So I can't debug this. Can >>> you please check why it's failing? >> >> PPC_PTRACE_SETHWDEBUG internally uses DAWR register and probably 8xx does >> not emulate DAWR logic, it only uses DABR to emulate double-word watchpoint. >> In that case, all testcases that uses PPC_PTRACE_SETHWDEBUG should be >> disabled for 8xx. I'll change [PATCH 5] accordingly and resend. > > I think the MODE_EXACT ones are OK with the 8xx at the time being. Ok. I'll disable other tests for 8xx. Also, I was bit wrong in above point. Actually, PPC_PTRACE_SETHWDEBUG with RANGE breakpoint also support DABR but the length will be 8 only. So I've to change my patch 1 also a bit (ptrace stuff). I'll resend the series with these changes. > >> >> Also, do you think I should fix hw_breakpoint_validate_len() from [PARCH 1] >> for 8xx? I re-checked you recent patch* to allow any address range size for >> 8xx. With that patch, hw_breakpoint_validate_len() won't get called at all >> for 8xx. > > At the time being, the 8xx emulates DABR so it has the same limitations as BOOK3S. > My patch needs to be rebased on top of your series and I think it needs some modifications, as it seems it doesn't properly handle size 1 and size 2 breakpoints at least. > So I think that you should leave your Patch1 as is, and I'll modify the validate_len() logic while rebasing my patch. Sure. Thanks for helping! Ravi
On 10/12/19 2:21 PM, Christophe Leroy wrote: > > > Le 10/10/2019 à 06:44, Ravi Bangoria a écrit : >> >>>> @Christophe, Is patch5 works for you on 8xx? >>>> >>> >>> Getting the following : >>> >>> root@vgoip:~# ./ptrace-hwbreak >>> test: ptrace-hwbreak >>> tags: git_version:v5.4-rc2-710-gf0082e173fe4-dirty >>> PTRACE_SET_DEBUGREG, WO, len: 1: Ok >>> PTRACE_SET_DEBUGREG, WO, len: 2: Ok >>> PTRACE_SET_DEBUGREG, WO, len: 4: Ok >>> PTRACE_SET_DEBUGREG, WO, len: 8: Ok >>> PTRACE_SET_DEBUGREG, RO, len: 1: Ok >>> PTRACE_SET_DEBUGREG, RO, len: 2: Ok >>> PTRACE_SET_DEBUGREG, RO, len: 4: Ok >>> PTRACE_SET_DEBUGREG, RO, len: 8: Ok >>> PTRACE_SET_DEBUGREG, RW, len: 1: Ok >>> PTRACE_SET_DEBUGREG, RW, len: 2: Ok >>> PTRACE_SET_DEBUGREG, RW, len: 4: Ok >>> PTRACE_SET_DEBUGREG, RW, len: 8: Ok >>> PPC_PTRACE_SETHWDEBUG, MODE_EXACT, WO, len: 1: Ok >>> PPC_PTRACE_SETHWDEBUG, MODE_EXACT, RO, len: 1: Ok >>> PPC_PTRACE_SETHWDEBUG, MODE_EXACT, RW, len: 1: Ok >>> PPC_PTRACE_SETHWDEBUG, MODE_RANGE, DW ALIGNED, WO, len: 6: Ok >>> PPC_PTRACE_SETHWDEBUG, MODE_RANGE, DW ALIGNED, RO, len: 6: Fail >>> failure: ptrace-hwbreak >>> >> > > I also tried on a 83xx (book3s/32). This one has a regular DABR : > > root@vgoippro:~# ./ptrace-hwbreak > test: ptrace-hwbreak > tags: git_version:v5.4-rc2-710-gf0082e173fe4-dirty > PTRACE_SET_DEBUGREG, WO, len: 1: Ok > PTRACE_SET_DEBUGREG, WO, len: 2: Ok > PTRACE_SET_DEBUGREG, WO, len: 4: Ok > PTRACE_SET_DEBUGREG, WO, len: 8: Ok > PTRACE_SET_DEBUGREG, RO, len: 1: Ok > PTRACE_SET_DEBUGREG, RO, len: 2: Ok > PTRACE_SET_DEBUGREG, RO, len: 4: Ok > PTRACE_SET_DEBUGREG, RO, len: 8: Ok > PTRACE_SET_DEBUGREG, RW, len: 1: Ok > PTRACE_SET_DEBUGREG, RW, len: 2: Ok > PTRACE_SET_DEBUGREG, RW, len: 4: Ok > PTRACE_SET_DEBUGREG, RW, len: 8: Ok > PPC_PTRACE_SETHWDEBUG, MODE_EXACT, WO, len: 1: Ok > PPC_PTRACE_SETHWDEBUG, MODE_EXACT, RO, len: 1: Ok > PPC_PTRACE_SETHWDEBUG, MODE_EXACT, RW, len: 1: Ok > PPC_PTRACE_SETHWDEBUG, MODE_RANGE, DW ALIGNED, WO, len: 6: Ok > PPC_PTRACE_SETHWDEBUG, MODE_RANGE, DW ALIGNED, RO, len: 6: Ok > PPC_PTRACE_SETHWDEBUG, MODE_RANGE, DW ALIGNED, RW, len: 6: Ok > PPC_PTRACE_SETHWDEBUG failed: Invalid argument Ok. If it has the DABR _only_, creation of MODE RANGE UNALINGED breakpoint will failed because DABR supports only 8 bytes wide breakpoint and it must be doubleword aligned. So this means I've to add all unaligned tests inside if (dawr) condition. Ravi