<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/drivers/edac/edac_mc.c, branch linux-4.6.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-4.6.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-4.6.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2016-07-27T15:42:08Z</updated>
<entry>
<title>EDAC: Fix workqueues poll period resetting</title>
<updated>2016-07-27T15:42:08Z</updated>
<author>
<name>Nicholas Krause</name>
</author>
<published>2016-05-19T22:45:58Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=34c1416699777268bc753614bf61160a43f4e47c'/>
<id>urn:sha1:34c1416699777268bc753614bf61160a43f4e47c</id>
<content type='text'>
commit fbedcaf43fba35677c01a4ae51e6f79edf4049ba upstream.

After the workqueue cleanup, we're registering workqueues based on
the presence of an -&gt;edac_check function. When that is the case,
we're setting OP_RUNNING_POLL. But we forgot to check that in
edac_mc_reset_delay_period(), leading to:

  BUG: unable to handle kernel paging request at 0000000000015d10
  IP: [ .. ] queued_spin_lock_slowpath
  PGD 3ffcc8067 PUD 3ffc56067 PMD 0
  Oops: 0002 [#1] SMP
  Modules linked in: ...
  CPU: 1 PID: 2792 Comm: edactest Not tainted 4.6.0-dirty #1
  Hardware name: HP ProLiant MicroServer, BIOS O41     10/01/2013
  Stack:
  Call Trace:
    ? _raw_spin_lock_irqsave
    ? lock_timer_base.isra.34
    ? del_timer
    ? try_to_grab_pending
    ? mod_delayed_work_on
    ? edac_mc_reset_delay_period
    ? edac_set_poll_msec
    ? param_attr_store
    ? module_attr_store
    ? kernfs_fop_write
    ? __vfs_write
    ? __vfs_read
    ? __alloc_fd
    ? vfs_write
    ? SyS_write
    ? entry_SYSCALL_64_fastpath
  Code:
  RIP  [ .. ] queued_spin_lock_slowpath
   RSP &lt;&gt;
  CR2: 0000000000015d10
  ---[ end trace 3f286bc71cca15d1 ]---
  Kernel panic - not syncing: Fatal exception

Fix it.

Signed-off-by: Nicholas Krause &lt;xerofoify@gmail.com&gt;
Cc: Mauro Carvalho Chehab &lt;mchehab@osg.samsung.com&gt;
Cc: linux-edac &lt;linux-edac@vger.kernel.org&gt;
Link: http://lkml.kernel.org/r/1463697958-13406-1-git-send-email-xerofoify@gmail.com
[ Rewrite commit message. ]
Signed-off-by: Borislav Petkov &lt;bp@suse.de&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>EDAC: Cleanup/sync workqueue functions</title>
<updated>2016-02-02T10:38:50Z</updated>
<author>
<name>Borislav Petkov</name>
</author>
<published>2016-02-02T10:36:11Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=06e912d4d4c2624c169997e26b3d7b5746735a14'/>
<id>urn:sha1:06e912d4d4c2624c169997e26b3d7b5746735a14</id>
<content type='text'>
They're both running only when -&gt;edac_check is initialized so remove
that check from the workqueue function itself. Synchronize/generalize
the -&gt;op_state check between the two.

Kill useless comments, while at it.

Signed-off-by: Borislav Petkov &lt;bp@suse.de&gt;
</content>
</entry>
<entry>
<title>EDAC: Kill workqueue setup/teardown functions</title>
<updated>2016-02-02T10:38:43Z</updated>
<author>
<name>Borislav Petkov</name>
</author>
<published>2016-02-02T10:06:41Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=626a7a4dba2ad672b66b675f961de214f0ad0c74'/>
<id>urn:sha1:626a7a4dba2ad672b66b675f961de214f0ad0c74</id>
<content type='text'>
We have the generic wrappers now, use those. edac_pci_workq_setup() had
an unused argument anyway.

Signed-off-by: Borislav Petkov &lt;bp@suse.de&gt;
</content>
</entry>
<entry>
<title>EDAC: Balance workqueue setup and teardown</title>
<updated>2016-02-02T10:04:29Z</updated>
<author>
<name>Borislav Petkov</name>
</author>
<published>2016-02-02T09:59:53Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=096676061987c613bdacddbae838cb63a815db94'/>
<id>urn:sha1:096676061987c613bdacddbae838cb63a815db94</id>
<content type='text'>
We use the -&gt;edac_check function pointers to determine whether we need
to setup a polling workqueue. However, the destroy path is not balanced
and we might try to teardown an unitialized workqueue.

Balance init and destroy paths by looking at -&gt;edac_check in both cases.
Set op_state to OP_OFFLINE *before* destroying anything.

Reported-by: Zhiqiang Hou &lt;Zhiqiang.Hou@freescale.com&gt;
Cc: Varun Sethi &lt;Varun.Sethi@freescale.com&gt;
Signed-off-by: Borislav Petkov &lt;bp@suse.de&gt;
</content>
</entry>
<entry>
<title>EDAC: Rework workqueue handling</title>
<updated>2015-12-11T15:56:43Z</updated>
<author>
<name>Borislav Petkov</name>
</author>
<published>2015-11-30T18:02:01Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=c4cf3b454ecaa222aad9017932bd3b9c9325d931'/>
<id>urn:sha1:c4cf3b454ecaa222aad9017932bd3b9c9325d931</id>
<content type='text'>
Hide the EDAC workqueue pointer in a separate compilation unit and add
accessors for the workqueue manipulations needed.

Remove edac_pci_reset_delay_period() which wasn't used by anything. It
seems it got added without a user with

  91b99041c1d5 ("drivers/edac: updated PCI monitoring")

Signed-off-by: Borislav Petkov &lt;bp@suse.de&gt;
</content>
</entry>
<entry>
<title>EDAC: Robustify workqueues destruction</title>
<updated>2015-12-11T15:56:39Z</updated>
<author>
<name>Borislav Petkov</name>
</author>
<published>2015-11-27T09:38:38Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=fcd5c4dd8201595d4c598c9cca5e54760277d687'/>
<id>urn:sha1:fcd5c4dd8201595d4c598c9cca5e54760277d687</id>
<content type='text'>
EDAC workqueue destruction is really fragile. We cancel delayed work
but if it is still running and requeues itself, we still go ahead and
destroy the workqueue and the queued work explodes when workqueue core
attempts to run it.

Make the destruction more robust by switching op_state to offline so
that requeuing stops. Cancel any pending work *synchronously* too.

  EDAC i7core: Driver loaded.
  general protection fault: 0000 [#1] SMP
  CPU 12
  Modules linked in:
  Supported: Yes
  Pid: 0, comm: kworker/0:1 Tainted: G          IE   3.0.101-0-default #1 HP ProLiant DL380 G7
  RIP: 0010:[&lt;ffffffff8107dcd7&gt;]  [&lt;ffffffff8107dcd7&gt;] __queue_work+0x17/0x3f0
  &lt; ... regs ...&gt;
  Process kworker/0:1 (pid: 0, threadinfo ffff88019def6000, task ffff88019def4600)
  Stack:
   ...
  Call Trace:
   call_timer_fn
   run_timer_softirq
   __do_softirq
   call_softirq
   do_softirq
   irq_exit
   smp_apic_timer_interrupt
   apic_timer_interrupt
   intel_idle
   cpuidle_idle_call
   cpu_idle
  Code: ...
  RIP  __queue_work
   RSP &lt;...&gt;

Signed-off-by: Borislav Petkov &lt;bp@suse.de&gt;
Cc: &lt;stable@vger.kernel.org&gt;
</content>
</entry>
<entry>
<title>EDAC: Fix PAGES_TO_MiB macro misuse</title>
<updated>2015-10-22T20:57:30Z</updated>
<author>
<name>Tan Xiaojun</name>
</author>
<published>2015-10-20T11:45:38Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=990995bad13c2bcf074f87236d1a6c5e09bd5eff'/>
<id>urn:sha1:990995bad13c2bcf074f87236d1a6c5e09bd5eff</id>
<content type='text'>
The PAGES_TO_MiB macro is used for unit conversion but the
trace_mc_event() tracepoint expects a page address. Fix that.

Signed-off-by: Tan Xiaojun &lt;tanxiaojun@huawei.com&gt;
Cc: Mauro Carvalho Chehab &lt;mchehab@osg.samsung.com&gt;
Cc: linux-edac &lt;linux-edac@vger.kernel.org&gt;
Link: http://lkml.kernel.org/r/1445341538-24271-1-git-send-email-tanxiaojun@huawei.com
Signed-off-by: Borislav Petkov &lt;bp@suse.de&gt;
</content>
</entry>
<entry>
<title>EDAC: Cleanup atomic_scrub mess</title>
<updated>2015-05-28T13:31:53Z</updated>
<author>
<name>Borislav Petkov</name>
</author>
<published>2015-05-21T17:59:31Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=b01aec9b2c7d32f17a37553df63efa9f7c0fdaa0'/>
<id>urn:sha1:b01aec9b2c7d32f17a37553df63efa9f7c0fdaa0</id>
<content type='text'>
So first of all, this atomic_scrub() function's naming is bad. It looks
like an atomic_t helper. Change it to edac_atomic_scrub().

The bigger problem is that this function is arch-specific and every new
arch which doesn't necessarily need that functionality still needs to
define it, otherwise EDAC doesn't compile.

So instead of doing that and including arch-specific headers, have each
arch define an EDAC_ATOMIC_SCRUB symbol which can be used in edac_mc.c
for ifdeffery. Much cleaner.

And we already are doing this with another symbol - EDAC_SUPPORT. This
is also much cleaner than having CONFIG_EDAC enumerate all the arches
which need/have EDAC support and drivers.

This way I can kill the useless edac.h header in tile too.

Acked-by: Ralf Baechle &lt;ralf@linux-mips.org&gt;
Acked-by: Michael Ellerman &lt;mpe@ellerman.id.au&gt;
Acked-by: Chris Metcalf &lt;cmetcalf@ezchip.com&gt;
Acked-by: Ingo Molnar &lt;mingo@kernel.org&gt;
Acked-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
Cc: Benjamin Herrenschmidt &lt;benh@kernel.crashing.org&gt;
Cc: Doug Thompson &lt;dougthompson@xmission.com&gt;
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-edac@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Cc: linux-mips@linux-mips.org
Cc: linuxppc-dev@lists.ozlabs.org
Cc: "Maciej W. Rozycki" &lt;macro@codesourcery.com&gt;
Cc: Markos Chandras &lt;markos.chandras@imgtec.com&gt;
Cc: Mauro Carvalho Chehab &lt;mchehab@osg.samsung.com&gt;
Cc: Paul Mackerras &lt;paulus@samba.org&gt;
Cc: "Steven J. Hill" &lt;Steven.Hill@imgtec.com&gt;
Cc: x86@kernel.org
Signed-off-by: Borislav Petkov &lt;bp@suse.de&gt;
</content>
</entry>
<entry>
<title>EDAC: Allow to pass driver-specific attribute groups</title>
<updated>2015-02-23T12:07:41Z</updated>
<author>
<name>Takashi Iwai</name>
</author>
<published>2015-02-04T10:48:52Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=4e8d230de9c1dff8e587ae769e46fcddb3d98f1c'/>
<id>urn:sha1:4e8d230de9c1dff8e587ae769e46fcddb3d98f1c</id>
<content type='text'>
Add edac_mc_add_mc_with_groups() for initializing the mem_ctl_info
object with the optional attribute groups.  This allows drivers to
pass additional sysfs entries without manual (and racy)
device_create_file() and co calls.

edac_mc_add_mc() is kept as is, just calling edac_mc_add_with_groups()
with NULL groups.

Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
Link: http://lkml.kernel.org/r/1423046938-18111-3-git-send-email-tiwai@suse.de
Signed-off-by: Borislav Petkov &lt;bp@suse.de&gt;
</content>
</entry>
<entry>
<title>EDAC: Sync memory types and names</title>
<updated>2014-10-20T12:22:50Z</updated>
<author>
<name>Borislav Petkov</name>
</author>
<published>2014-09-30T18:38:54Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=4cfc3a40f723761a5d374adc618245dca5c895fb'/>
<id>urn:sha1:4cfc3a40f723761a5d374adc618245dca5c895fb</id>
<content type='text'>
Make keeping the sync between the mem_types enum and the actual string
names simpler by using designated initializers.

Signed-off-by: Borislav Petkov &lt;bp@suse.de&gt;
</content>
</entry>
</feed>
