On 11/15/2010 01:48 PM, Sergei Shtylyov wrote:
> Hello.
> 
> Jason Wessel wrote:
> 
>> Thanks for the bug report Frederic.
> 
>> The attached patch hopefully addresses the problem.
> 
>     You forgot to attach it. :-)
> 
>> Many thanks,
>> Jason.
> 
> WBR, Sergei

I suspect it is the case that the mailing list consumed the post.

Frederic already responded back confirming that the test results are good.

Here is the patch in a form that the list will not eat it.

---


From: Jason Wessel <[email protected]>
Subject: [PATCH] kgdb,x86: fix regression in detach handling
Date: Mon Nov 15 08:07:35 CST 2010

The fix from ba773f7c510c0b252145933926c636c439889207
(x86,kgdb: Fix hw breakpoint regression) was not entirely complete.

The kgdb_remove_all_hw_break() function also needs to call the
hw_break_release_slot() or else a breakpoint can get activated again
after the debugger has detached.

The kgdb test suite exposes the behavior in the form of either a hang
or repetitive failure.  The kernel config that exposes the problem
contains all of the following:

CONFIG_DEBUG_RODATA=y
CONFIG_KGDB_TESTS=y
CONFIG_KGDB_TESTS_ON_BOOT=y
CONFIG_KGDB_TESTS_BOOT_STRING="V1F100"

Reported-by: Frederic Weisbecker <[email protected]>
Tested-by: Frederic Weisbecker <[email protected]>
Signed-off-by: Jason Wessel <[email protected]>

---
 arch/x86/kernel/kgdb.c |   11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

--- a/arch/x86/kernel/kgdb.c
+++ b/arch/x86/kernel/kgdb.c
@@ -315,14 +315,19 @@ static void kgdb_remove_all_hw_break(voi
                if (!breakinfo[i].enabled)
                        continue;
                bp = *per_cpu_ptr(breakinfo[i].pev, cpu);
-               if (bp->attr.disabled == 1)
+               if (!bp->attr.disabled) {
+                       arch_uninstall_hw_breakpoint(bp);
+                       bp->attr.disabled = 1;
                        continue;
+               }
                if (dbg_is_early)
                        early_dr7 &= ~encode_dr7(i, breakinfo[i].len,
                                                 breakinfo[i].type);
                else
-                       arch_uninstall_hw_breakpoint(bp);
-               bp->attr.disabled = 1;
+                       if (hw_break_release_slot(i))
+                               printk(KERN_ERR "KGDB: hw bpt failed %lx\n",
+                                      breakinfo[i].addr);
+               breakinfo[i].enabled = 0;
        }
 }
 

------------------------------------------------------------------------------
Centralized Desktop Delivery: Dell and VMware Reference Architecture
Simplifying enterprise desktop deployment and management using
Dell EqualLogic storage and VMware View: A highly scalable, end-to-end
client virtualization framework. Read more!
http://p.sf.net/sfu/dell-eql-dev2dev
_______________________________________________
Kgdb-bugreport mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/kgdb-bugreport

Reply via email to