<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-toradex.git/arch/x86/kernel/cpu/mcheck, branch v3.4.68</title>
<subtitle>Linux kernel for Apalis and Colibri modules</subtitle>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/'/>
<entry>
<title>x86/mce: Fix siginfo_t-&gt;si_addr value for non-recoverable memory faults</title>
<updated>2012-08-09T15:31:29+00:00</updated>
<author>
<name>Tony Luck</name>
<email>tony.luck@intel.com</email>
</author>
<published>2012-07-11T17:20:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=7b689c5d930f281e417597af9f817ba03dc9d898'/>
<id>7b689c5d930f281e417597af9f817ba03dc9d898</id>
<content type='text'>
commit 6751ed65dc6642af64f7b8a440a75563c8aab7ae upstream.

In commit dad1743e5993f1 ("x86/mce: Only restart instruction after machine
check recovery if it is safe") we fixed mce_notify_process() to force a
signal to the current process if it was not restartable (RIPV bit not
set in MCG_STATUS). But doing it here means that the process doesn't
get told the virtual address of the fault via siginfo_t-&gt;si_addr. This
would prevent application level recovery from the fault.

Make a new MF_MUST_KILL flag bit for memory_failure() et al. to use so
that we will provide the right information with the signal.

Signed-off-by: Tony Luck &lt;tony.luck@intel.com&gt;
Acked-by: Borislav Petkov &lt;borislav.petkov@amd.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 6751ed65dc6642af64f7b8a440a75563c8aab7ae upstream.

In commit dad1743e5993f1 ("x86/mce: Only restart instruction after machine
check recovery if it is safe") we fixed mce_notify_process() to force a
signal to the current process if it was not restartable (RIPV bit not
set in MCG_STATUS). But doing it here means that the process doesn't
get told the virtual address of the fault via siginfo_t-&gt;si_addr. This
would prevent application level recovery from the fault.

Make a new MF_MUST_KILL flag bit for memory_failure() et al. to use so
that we will provide the right information with the signal.

Signed-off-by: Tony Luck &lt;tony.luck@intel.com&gt;
Acked-by: Borislav Petkov &lt;borislav.petkov@amd.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>x86, MCE, AMD: Make APIC LVT thresholding interrupt optional</title>
<updated>2012-06-17T18:21:23+00:00</updated>
<author>
<name>Borislav Petkov</name>
<email>borislav.petkov@amd.com</email>
</author>
<published>2012-04-16T16:01:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=cc3aeacdba55676938fc11e00e13699141b9aeb8'/>
<id>cc3aeacdba55676938fc11e00e13699141b9aeb8</id>
<content type='text'>
commit f227d4306cf30e1d5b6f231e8ef9006c34f3d186 upstream.

Currently, the APIC LVT interrupt for error thresholding is implicitly
enabled. However, there are models in the F15h range which do not enable
it. Make the code machinery which sets up the APIC interrupt support
an optional setting and add an -&gt;interrupt_capable member to the bank
representation mirroring that capability and enable the interrupt offset
programming only if it is true.

Simplify code and fixup comment style while at it.

Signed-off-by: Borislav Petkov &lt;borislav.petkov@amd.com&gt;
Cc: Robert Richter &lt;robert.richter@amd.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit f227d4306cf30e1d5b6f231e8ef9006c34f3d186 upstream.

Currently, the APIC LVT interrupt for error thresholding is implicitly
enabled. However, there are models in the F15h range which do not enable
it. Make the code machinery which sets up the APIC interrupt support
an optional setting and add an -&gt;interrupt_capable member to the bank
representation mirroring that capability and enable the interrupt offset
programming only if it is true.

Simplify code and fixup comment style while at it.

Signed-off-by: Borislav Petkov &lt;borislav.petkov@amd.com&gt;
Cc: Robert Richter &lt;robert.richter@amd.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>MCE: Fix vm86 handling for 32bit mce handler</title>
<updated>2012-06-01T07:18:28+00:00</updated>
<author>
<name>Andi Kleen</name>
<email>andi@firstfloor.org</email>
</author>
<published>2010-11-19T12:16:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=07e2c719a35160023c327fac6389e106357d734a'/>
<id>07e2c719a35160023c327fac6389e106357d734a</id>
<content type='text'>
commit a129a7c84582629741e5fa6f40026efcd7a65bd4 upstream.

When running on 32bit the mce handler could misinterpret
vm86 mode as ring 0. This can affect whether it does recovery
or not; it was possible to panic when recovery was actually
possible.

Fix this by always forcing vm86 to look like ring 3.

Signed-off-by: Andi Kleen &lt;ak@linux.intel.com&gt;
Signed-off-by: Tony Luck &lt;tony.luck@intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit a129a7c84582629741e5fa6f40026efcd7a65bd4 upstream.

When running on 32bit the mce handler could misinterpret
vm86 mode as ring 0. This can affect whether it does recovery
or not; it was possible to panic when recovery was actually
possible.

Fix this by always forcing vm86 to look like ring 3.

Signed-off-by: Andi Kleen &lt;ak@linux.intel.com&gt;
Signed-off-by: Tony Luck &lt;tony.luck@intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>x86/mce: Fix check for processor context when machine check was taken.</title>
<updated>2012-06-01T07:18:26+00:00</updated>
<author>
<name>Tony Luck</name>
<email>tony.luck@intel.com</email>
</author>
<published>2012-05-23T21:14:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=e6b2a258ab83555e062cd2bc2a0ade31b8c118d1'/>
<id>e6b2a258ab83555e062cd2bc2a0ade31b8c118d1</id>
<content type='text'>
commit 875e26648cf9b6db9d8dc07b7959d7c61fb3f49c upstream.

Linus pointed out that there was no value is checking whether m-&gt;ip
was zero - because zero is a legimate value.  If we have a reliable
(or faked in the VM86 case) "m-&gt;cs" we can use it to tell whether we
were in user mode or kernelwhen the machine check hit.

Reported-by: Linus Torvalds &lt;torvalds@linuxfoundation.org&gt;
Signed-off-by: Tony Luck &lt;tony.luck@intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 875e26648cf9b6db9d8dc07b7959d7c61fb3f49c upstream.

Linus pointed out that there was no value is checking whether m-&gt;ip
was zero - because zero is a legimate value.  If we have a reliable
(or faked in the VM86 case) "m-&gt;cs" we can use it to tell whether we
were in user mode or kernelwhen the machine check hit.

Reported-by: Linus Torvalds &lt;torvalds@linuxfoundation.org&gt;
Signed-off-by: Tony Luck &lt;tony.luck@intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>x86/mce: Only restart instruction after machine check recovery if it is safe</title>
<updated>2012-05-14T22:07:48+00:00</updated>
<author>
<name>Tony Luck</name>
<email>tony.luck@intel.com</email>
</author>
<published>2012-05-14T22:07:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=dad1743e5993f19b3d7e7bd0fb35dc45b5326626'/>
<id>dad1743e5993f19b3d7e7bd0fb35dc45b5326626</id>
<content type='text'>
Section 15.3.1.2 of the software developer manual has this to say about the
RIPV bit in the IA32_MCG_STATUS register:

  RIPV (restart IP valid) flag, bit 0 — Indicates (when set) that program
  execution can be restarted reliably at the instruction pointed to by the
  instruction pointer pushed on the stack when the machine-check exception
  is generated.  When clear, the program cannot be reliably restarted at
  the pushed instruction pointer.

We need to save the state of this bit in do_machine_check() and use it
in mce_notify_process() to force a signal; even if memory_failure() says
it made a complete recovery ... e.g. replaced a clean LRU page.

Acked-by: Borislav Petkov &lt;bp@amd64.org&gt;
Signed-off-by: Tony Luck &lt;tony.luck@intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Section 15.3.1.2 of the software developer manual has this to say about the
RIPV bit in the IA32_MCG_STATUS register:

  RIPV (restart IP valid) flag, bit 0 — Indicates (when set) that program
  execution can be restarted reliably at the instruction pointed to by the
  instruction pointer pushed on the stack when the machine-check exception
  is generated.  When clear, the program cannot be reliably restarted at
  the pushed instruction pointer.

We need to save the state of this bit in do_machine_check() and use it
in mce_notify_process() to force a signal; even if memory_failure() says
it made a complete recovery ... e.g. replaced a clean LRU page.

Acked-by: Borislav Petkov &lt;bp@amd64.org&gt;
Signed-off-by: Tony Luck &lt;tony.luck@intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Disintegrate asm/system.h for X86</title>
<updated>2012-03-28T17:11:12+00:00</updated>
<author>
<name>David Howells</name>
<email>dhowells@redhat.com</email>
</author>
<published>2012-03-28T17:11:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=f05e798ad4c09255f590f5b2c00a7ca6c172f983'/>
<id>f05e798ad4c09255f590f5b2c00a7ca6c172f983</id>
<content type='text'>
Disintegrate asm/system.h for X86.

Signed-off-by: David Howells &lt;dhowells@redhat.com&gt;
Acked-by: H. Peter Anvin &lt;hpa@zytor.com&gt;
cc: x86@kernel.org
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Disintegrate asm/system.h for X86.

Signed-off-by: David Howells &lt;dhowells@redhat.com&gt;
Acked-by: H. Peter Anvin &lt;hpa@zytor.com&gt;
cc: x86@kernel.org
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip</title>
<updated>2012-03-22T16:44:50+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2012-03-22T16:44:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=28f23d1f3b6a6078312b6e9585e583cc7326fe22'/>
<id>28f23d1f3b6a6078312b6e9585e583cc7326fe22</id>
<content type='text'>
Pull x86 "urgent" leftovers from Ingo Molnar:
 "Pending x86/urgent bits that were not high prio enough to warrant
  -rc-less v3.3-final inclusion."

* 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  x86, efi: Fix pointer math issue in handle_ramdisks()
  x86/ioapic: Add register level checks to detect bogus io-apic entries
  x86, mce: Fix rcu splat in drain_mce_log_buffer()
  x86, memblock: Move mem_hole_size() to .init
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Pull x86 "urgent" leftovers from Ingo Molnar:
 "Pending x86/urgent bits that were not high prio enough to warrant
  -rc-less v3.3-final inclusion."

* 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  x86, efi: Fix pointer math issue in handle_ramdisks()
  x86/ioapic: Add register level checks to detect bogus io-apic entries
  x86, mce: Fix rcu splat in drain_mce_log_buffer()
  x86, memblock: Move mem_hole_size() to .init
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge tag 'mce-for-tip' of git://git.kernel.org/pub/scm/linux/kernel/git/ras/ras into x86/mce</title>
<updated>2012-03-14T06:44:48+00:00</updated>
<author>
<name>Ingo Molnar</name>
<email>mingo@elte.hu</email>
</author>
<published>2012-03-14T06:44:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=ea281a9ebaba3287130dbe15bb0aad6f798bb06b'/>
<id>ea281a9ebaba3287130dbe15bb0aad6f798bb06b</id>
<content type='text'>
Apply two miscellaneous MCE fixes.

Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Apply two miscellaneous MCE fixes.

Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge tag 'v3.3-rc7' into x86/mce</title>
<updated>2012-03-14T06:44:11+00:00</updated>
<author>
<name>Ingo Molnar</name>
<email>mingo@elte.hu</email>
</author>
<published>2012-03-14T06:44:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=cd593accdcc27ccbe6498d9ad1c2b6cc8e1d830d'/>
<id>cd593accdcc27ccbe6498d9ad1c2b6cc8e1d830d</id>
<content type='text'>
Merge reason: Update from an ancient -rc1 base to an almost-final stable kernel.

Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Merge reason: Update from an ancient -rc1 base to an almost-final stable kernel.

Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>x86, mce: Fix rcu splat in drain_mce_log_buffer()</title>
<updated>2012-03-07T10:44:29+00:00</updated>
<author>
<name>Srivatsa S. Bhat</name>
<email>srivatsa.bhat@linux.vnet.ibm.com</email>
</author>
<published>2012-03-07T10:44:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=b11e3d782b9c065b3b2fb543bfb0d97801822dc0'/>
<id>b11e3d782b9c065b3b2fb543bfb0d97801822dc0</id>
<content type='text'>
While booting, the following message is seen:

[   21.665087] ===============================
[   21.669439] [ INFO: suspicious RCU usage. ]
[   21.673798] 3.2.0-0.0.0.28.36b5ec9-default #2 Not tainted
[   21.681353] -------------------------------
[   21.685864] arch/x86/kernel/cpu/mcheck/mce.c:194 suspicious rcu_dereference_index_check() usage!
[   21.695013]
[   21.695014] other info that might help us debug this:
[   21.695016]
[   21.703488]
[   21.703489] rcu_scheduler_active = 1, debug_locks = 1
[   21.710426] 3 locks held by modprobe/2139:
[   21.714754]  #0:  (&amp;__lockdep_no_validate__){......}, at: [&lt;ffffffff8133afd3&gt;] __driver_attach+0x53/0xa0
[   21.725020]  #1:
[   21.725323] ioatdma: Intel(R) QuickData Technology Driver 4.00
[   21.733206]  (&amp;__lockdep_no_validate__){......}, at: [&lt;ffffffff8133afe1&gt;] __driver_attach+0x61/0xa0
[   21.743015]  #2:  (i7core_edac_lock){+.+.+.}, at: [&lt;ffffffffa01cfa5f&gt;] i7core_probe+0x1f/0x5c0 [i7core_edac]
[   21.753708]
[   21.753709] stack backtrace:
[   21.758429] Pid: 2139, comm: modprobe Not tainted 3.2.0-0.0.0.28.36b5ec9-default #2
[   21.768253] Call Trace:
[   21.770838]  [&lt;ffffffff810977cd&gt;] lockdep_rcu_suspicious+0xcd/0x100
[   21.777366]  [&lt;ffffffff8101aa41&gt;] drain_mcelog_buffer+0x191/0x1b0
[   21.783715]  [&lt;ffffffff8101aa78&gt;] mce_register_decode_chain+0x18/0x20
[   21.790430]  [&lt;ffffffffa01cf8db&gt;] i7core_register_mci+0x2fb/0x3e4 [i7core_edac]
[   21.798003]  [&lt;ffffffffa01cfb14&gt;] i7core_probe+0xd4/0x5c0 [i7core_edac]
[   21.804809]  [&lt;ffffffff8129566b&gt;] local_pci_probe+0x5b/0xe0
[   21.810631]  [&lt;ffffffff812957c9&gt;] __pci_device_probe+0xd9/0xe0
[   21.816650]  [&lt;ffffffff813362e4&gt;] ? get_device+0x14/0x20
[   21.822178]  [&lt;ffffffff81296916&gt;] pci_device_probe+0x36/0x60
[   21.828061]  [&lt;ffffffff8133ac8a&gt;] really_probe+0x7a/0x2b0
[   21.833676]  [&lt;ffffffff8133af23&gt;] driver_probe_device+0x63/0xc0
[   21.839868]  [&lt;ffffffff8133b01b&gt;] __driver_attach+0x9b/0xa0
[   21.845718]  [&lt;ffffffff8133af80&gt;] ? driver_probe_device+0xc0/0xc0
[   21.852027]  [&lt;ffffffff81339168&gt;] bus_for_each_dev+0x68/0x90
[   21.857876]  [&lt;ffffffff8133aa3c&gt;] driver_attach+0x1c/0x20
[   21.863462]  [&lt;ffffffff8133a64d&gt;] bus_add_driver+0x16d/0x2b0
[   21.869377]  [&lt;ffffffff8133b6dc&gt;] driver_register+0x7c/0x160
[   21.875220]  [&lt;ffffffff81296bda&gt;] __pci_register_driver+0x6a/0xf0
[   21.881494]  [&lt;ffffffffa01fe000&gt;] ? 0xffffffffa01fdfff
[   21.886846]  [&lt;ffffffffa01fe047&gt;] i7core_init+0x47/0x1000 [i7core_edac]
[   21.893737]  [&lt;ffffffff810001ce&gt;] do_one_initcall+0x3e/0x180
[   21.899670]  [&lt;ffffffff810a9b95&gt;] sys_init_module+0xc5/0x220
[   21.905542]  [&lt;ffffffff8149bc39&gt;] system_call_fastpath+0x16/0x1b

Fix this by using ACCESS_ONCE() instead of rcu_dereference_check_mce()
over mcelog.next. Since the access to each entry is controlled by the
-&gt;finished field, ACCESS_ONCE() should work just fine. An rcu_dereference
is unnecessary here.

Signed-off-by: Srivatsa S. Bhat &lt;srivatsa.bhat@linux.vnet.ibm.com&gt;
Suggested-by: Paul E. McKenney &lt;paulmck@linux.vnet.ibm.com&gt;
Cc: Tony Luck &lt;tony.luck@intel.com&gt;
Signed-off-by: Borislav Petkov &lt;borislav.petkov@amd.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
While booting, the following message is seen:

[   21.665087] ===============================
[   21.669439] [ INFO: suspicious RCU usage. ]
[   21.673798] 3.2.0-0.0.0.28.36b5ec9-default #2 Not tainted
[   21.681353] -------------------------------
[   21.685864] arch/x86/kernel/cpu/mcheck/mce.c:194 suspicious rcu_dereference_index_check() usage!
[   21.695013]
[   21.695014] other info that might help us debug this:
[   21.695016]
[   21.703488]
[   21.703489] rcu_scheduler_active = 1, debug_locks = 1
[   21.710426] 3 locks held by modprobe/2139:
[   21.714754]  #0:  (&amp;__lockdep_no_validate__){......}, at: [&lt;ffffffff8133afd3&gt;] __driver_attach+0x53/0xa0
[   21.725020]  #1:
[   21.725323] ioatdma: Intel(R) QuickData Technology Driver 4.00
[   21.733206]  (&amp;__lockdep_no_validate__){......}, at: [&lt;ffffffff8133afe1&gt;] __driver_attach+0x61/0xa0
[   21.743015]  #2:  (i7core_edac_lock){+.+.+.}, at: [&lt;ffffffffa01cfa5f&gt;] i7core_probe+0x1f/0x5c0 [i7core_edac]
[   21.753708]
[   21.753709] stack backtrace:
[   21.758429] Pid: 2139, comm: modprobe Not tainted 3.2.0-0.0.0.28.36b5ec9-default #2
[   21.768253] Call Trace:
[   21.770838]  [&lt;ffffffff810977cd&gt;] lockdep_rcu_suspicious+0xcd/0x100
[   21.777366]  [&lt;ffffffff8101aa41&gt;] drain_mcelog_buffer+0x191/0x1b0
[   21.783715]  [&lt;ffffffff8101aa78&gt;] mce_register_decode_chain+0x18/0x20
[   21.790430]  [&lt;ffffffffa01cf8db&gt;] i7core_register_mci+0x2fb/0x3e4 [i7core_edac]
[   21.798003]  [&lt;ffffffffa01cfb14&gt;] i7core_probe+0xd4/0x5c0 [i7core_edac]
[   21.804809]  [&lt;ffffffff8129566b&gt;] local_pci_probe+0x5b/0xe0
[   21.810631]  [&lt;ffffffff812957c9&gt;] __pci_device_probe+0xd9/0xe0
[   21.816650]  [&lt;ffffffff813362e4&gt;] ? get_device+0x14/0x20
[   21.822178]  [&lt;ffffffff81296916&gt;] pci_device_probe+0x36/0x60
[   21.828061]  [&lt;ffffffff8133ac8a&gt;] really_probe+0x7a/0x2b0
[   21.833676]  [&lt;ffffffff8133af23&gt;] driver_probe_device+0x63/0xc0
[   21.839868]  [&lt;ffffffff8133b01b&gt;] __driver_attach+0x9b/0xa0
[   21.845718]  [&lt;ffffffff8133af80&gt;] ? driver_probe_device+0xc0/0xc0
[   21.852027]  [&lt;ffffffff81339168&gt;] bus_for_each_dev+0x68/0x90
[   21.857876]  [&lt;ffffffff8133aa3c&gt;] driver_attach+0x1c/0x20
[   21.863462]  [&lt;ffffffff8133a64d&gt;] bus_add_driver+0x16d/0x2b0
[   21.869377]  [&lt;ffffffff8133b6dc&gt;] driver_register+0x7c/0x160
[   21.875220]  [&lt;ffffffff81296bda&gt;] __pci_register_driver+0x6a/0xf0
[   21.881494]  [&lt;ffffffffa01fe000&gt;] ? 0xffffffffa01fdfff
[   21.886846]  [&lt;ffffffffa01fe047&gt;] i7core_init+0x47/0x1000 [i7core_edac]
[   21.893737]  [&lt;ffffffff810001ce&gt;] do_one_initcall+0x3e/0x180
[   21.899670]  [&lt;ffffffff810a9b95&gt;] sys_init_module+0xc5/0x220
[   21.905542]  [&lt;ffffffff8149bc39&gt;] system_call_fastpath+0x16/0x1b

Fix this by using ACCESS_ONCE() instead of rcu_dereference_check_mce()
over mcelog.next. Since the access to each entry is controlled by the
-&gt;finished field, ACCESS_ONCE() should work just fine. An rcu_dereference
is unnecessary here.

Signed-off-by: Srivatsa S. Bhat &lt;srivatsa.bhat@linux.vnet.ibm.com&gt;
Suggested-by: Paul E. McKenney &lt;paulmck@linux.vnet.ibm.com&gt;
Cc: Tony Luck &lt;tony.luck@intel.com&gt;
Signed-off-by: Borislav Petkov &lt;borislav.petkov@amd.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
