Bug 673736

Summary: Kernel got deadlock in function rcu_check_quiescent_state()
Product: Red Hat Enterprise Linux 5 Reporter: Mark Wu <dwu>
Component: kernelAssignee: Prarit Bhargava <prarit>
Status: CLOSED INSUFFICIENT_DATA QA Contact: Red Hat Kernel QE team <kernel-qe>
Severity: high Docs Contact:
Priority: high    
Version: 5.5CC: jarod, pyu
Target Milestone: rcKeywords: Reopened
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
: 734989 (view as bug list) Environment:
Last Closed: 2011-08-30 10:17:05 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Bug Depends On:    
Bug Blocks: 734989    
Attachments:
Description Flags
RHEL5 fix for this issue none

Comment 1 Prarit Bhargava 2011-02-09 16:06:48 UTC
(In reply to comment #0)
> Description of problem:
> Kernel got deadlock in function rcu_check_quiescent_state(). Here's how the
> problem happen:
> 1. CPU_1 was processing rcu callbacks via __rcu_process_callbacks
> 2. CPU_2 call smp_call_function() to all other cpus in set_mtrr
> 3. All other cpus including CPU_1 were beginning to run ipi_handler() as a
> result of the smp all interruption. They all had already decreased the
> data.count and been waiting for CPU_2 setting gate to 1.
> 4. But interruption happened on CPU_2 before it set gate to 1. And then it
> entered __rcu_process_callbacks too, so it got deadlock because the spinlock
> was held by CPU_1.
> 
> Please additional info for detailed vmcore analysis.
> 
>  

Mark, can you try to reproduce using the debug kernel which has lockdep enabled?

Thanks,

P.

Comment 4 Prarit Bhargava 2011-02-09 20:04:56 UTC
Created attachment 477896 [details]
RHEL5 fix for this issue

Mark, please apply and test.

Thanks,

P.

Comment 5 Mark Wu 2011-02-10 10:06:05 UTC
Prarit,
Thanks for your patch. I have built a test kernel and delivered it to customer. I will come back to you when I get feedback from customer.