<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-toradex.git/sound/hda, branch v4.13-rc2</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>ALSA: hda: Fix potential race at unregistration and unsol events</title>
<updated>2017-06-20T05:53:57+00:00</updated>
<author>
<name>Takashi Iwai</name>
<email>tiwai@suse.de</email>
</author>
<published>2017-06-19T15:49:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=eb8d0eaaf84b0398533a7c091a0b65663f2fd7ea'/>
<id>eb8d0eaaf84b0398533a7c091a0b65663f2fd7ea</id>
<content type='text'>
When the codec device is unregistered / freed, it may release the
resource while being used in an unsolicited event like the jack
detection work.  This leads to use-after-free.

The fix here is to unregister the device at first, i.e. removing the
codec from the list, then flushing the pending works to assure that
all unsol events are gone.  After this point, we're free from
accessing the codec via unsol events, thus can release the resources
gracefully.

The issue was spotted originally by Intel CI, but it couldn't be
reproduced reliably by its nature.  So let's hope this fix really
addresses the whole issues.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=196045
Reported-by: Martin Peres &lt;martin.peres@free.fr&gt;
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When the codec device is unregistered / freed, it may release the
resource while being used in an unsolicited event like the jack
detection work.  This leads to use-after-free.

The fix here is to unregister the device at first, i.e. removing the
codec from the list, then flushing the pending works to assure that
all unsol events are gone.  After this point, we're free from
accessing the codec via unsol events, thus can release the resources
gracefully.

The issue was spotted originally by Intel CI, but it couldn't be
reproduced reliably by its nature.  So let's hope this fix really
addresses the whole issues.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=196045
Reported-by: Martin Peres &lt;martin.peres@free.fr&gt;
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ALSA: hda: Fix cpu lockup when stopping the cmd dmas</title>
<updated>2017-05-10T06:47:17+00:00</updated>
<author>
<name>Jeeja KP</name>
<email>jeeja.kp@intel.com</email>
</author>
<published>2017-05-10T06:21:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=960013762df0a214b57f2fce655422fb52bdfd2c'/>
<id>960013762df0a214b57f2fce655422fb52bdfd2c</id>
<content type='text'>
Using jiffies in hdac_wait_for_cmd_dmas() to determine when to time out
when interrupts are off (snd_hdac_bus_stop_cmd_io()/spin_lock_irq())
causes hard lockup so unlock while waiting using jiffies.

---&lt;-snip-&gt;---
&lt;0&gt;[ 1211.603046] NMI watchdog: Watchdog detected hard LOCKUP on cpu 3
&lt;4&gt;[ 1211.603047] Modules linked in: snd_hda_intel i915 vgem
&lt;4&gt;[ 1211.603053] irq event stamp: 13366
&lt;4&gt;[ 1211.603053] hardirqs last  enabled at (13365):
...
&lt;4&gt;[ 1211.603059] Call Trace:
&lt;4&gt;[ 1211.603059]  ? delay_tsc+0x3d/0xc0
&lt;4&gt;[ 1211.603059]  __delay+0xa/0x10
&lt;4&gt;[ 1211.603060]  __const_udelay+0x31/0x40
&lt;4&gt;[ 1211.603060]  snd_hdac_bus_stop_cmd_io+0x96/0xe0 [snd_hda_core]
&lt;4&gt;[ 1211.603060]  ? azx_dev_disconnect+0x20/0x20 [snd_hda_intel]
&lt;4&gt;[ 1211.603061]  snd_hdac_bus_stop_chip+0xb1/0x100 [snd_hda_core]
&lt;4&gt;[ 1211.603061]  azx_stop_chip+0x9/0x10 [snd_hda_codec]
&lt;4&gt;[ 1211.603061]  azx_suspend+0x72/0x220 [snd_hda_intel]
&lt;4&gt;[ 1211.603061]  pci_pm_suspend+0x71/0x140
&lt;4&gt;[ 1211.603062]  dpm_run_callback+0x6f/0x330
&lt;4&gt;[ 1211.603062]  ? pci_pm_freeze+0xe0/0xe0
&lt;4&gt;[ 1211.603062]  __device_suspend+0xf9/0x370
&lt;4&gt;[ 1211.603062]  ? dpm_watchdog_set+0x60/0x60
&lt;4&gt;[ 1211.603063]  async_suspend+0x1a/0x90
&lt;4&gt;[ 1211.603063]  async_run_entry_fn+0x34/0x160
&lt;4&gt;[ 1211.603063]  process_one_work+0x1f4/0x6d0
&lt;4&gt;[ 1211.603063]  ? process_one_work+0x16e/0x6d0
&lt;4&gt;[ 1211.603064]  worker_thread+0x49/0x4a0
&lt;4&gt;[ 1211.603064]  kthread+0x107/0x140
&lt;4&gt;[ 1211.603064]  ? process_one_work+0x6d0/0x6d0
&lt;4&gt;[ 1211.603065]  ? kthread_create_on_node+0x40/0x40
&lt;4&gt;[ 1211.603065]  ret_from_fork+0x2e/0x40

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=100419
Fixes: 38b19ed7f81ec ("ALSA: hda: fix to wait for RIRB &amp; CORB DMA to set")
Reported-by: Marta Lofstedt &lt;marta.lofstedt@intel.com&gt;
Suggested-by: Takashi Iwai &lt;tiwai@suse.de&gt;
Signed-off-by: Jeeja KP &lt;jeeja.kp@intel.com&gt;
Acked-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
CC: stable &lt;stable@vger.kernel.org&gt; # 4.7
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Using jiffies in hdac_wait_for_cmd_dmas() to determine when to time out
when interrupts are off (snd_hdac_bus_stop_cmd_io()/spin_lock_irq())
causes hard lockup so unlock while waiting using jiffies.

---&lt;-snip-&gt;---
&lt;0&gt;[ 1211.603046] NMI watchdog: Watchdog detected hard LOCKUP on cpu 3
&lt;4&gt;[ 1211.603047] Modules linked in: snd_hda_intel i915 vgem
&lt;4&gt;[ 1211.603053] irq event stamp: 13366
&lt;4&gt;[ 1211.603053] hardirqs last  enabled at (13365):
...
&lt;4&gt;[ 1211.603059] Call Trace:
&lt;4&gt;[ 1211.603059]  ? delay_tsc+0x3d/0xc0
&lt;4&gt;[ 1211.603059]  __delay+0xa/0x10
&lt;4&gt;[ 1211.603060]  __const_udelay+0x31/0x40
&lt;4&gt;[ 1211.603060]  snd_hdac_bus_stop_cmd_io+0x96/0xe0 [snd_hda_core]
&lt;4&gt;[ 1211.603060]  ? azx_dev_disconnect+0x20/0x20 [snd_hda_intel]
&lt;4&gt;[ 1211.603061]  snd_hdac_bus_stop_chip+0xb1/0x100 [snd_hda_core]
&lt;4&gt;[ 1211.603061]  azx_stop_chip+0x9/0x10 [snd_hda_codec]
&lt;4&gt;[ 1211.603061]  azx_suspend+0x72/0x220 [snd_hda_intel]
&lt;4&gt;[ 1211.603061]  pci_pm_suspend+0x71/0x140
&lt;4&gt;[ 1211.603062]  dpm_run_callback+0x6f/0x330
&lt;4&gt;[ 1211.603062]  ? pci_pm_freeze+0xe0/0xe0
&lt;4&gt;[ 1211.603062]  __device_suspend+0xf9/0x370
&lt;4&gt;[ 1211.603062]  ? dpm_watchdog_set+0x60/0x60
&lt;4&gt;[ 1211.603063]  async_suspend+0x1a/0x90
&lt;4&gt;[ 1211.603063]  async_run_entry_fn+0x34/0x160
&lt;4&gt;[ 1211.603063]  process_one_work+0x1f4/0x6d0
&lt;4&gt;[ 1211.603063]  ? process_one_work+0x16e/0x6d0
&lt;4&gt;[ 1211.603064]  worker_thread+0x49/0x4a0
&lt;4&gt;[ 1211.603064]  kthread+0x107/0x140
&lt;4&gt;[ 1211.603064]  ? process_one_work+0x6d0/0x6d0
&lt;4&gt;[ 1211.603065]  ? kthread_create_on_node+0x40/0x40
&lt;4&gt;[ 1211.603065]  ret_from_fork+0x2e/0x40

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=100419
Fixes: 38b19ed7f81ec ("ALSA: hda: fix to wait for RIRB &amp; CORB DMA to set")
Reported-by: Marta Lofstedt &lt;marta.lofstedt@intel.com&gt;
Suggested-by: Takashi Iwai &lt;tiwai@suse.de&gt;
Signed-off-by: Jeeja KP &lt;jeeja.kp@intel.com&gt;
Acked-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
CC: stable &lt;stable@vger.kernel.org&gt; # 4.7
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge tag 'asoc-v4.12' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus</title>
<updated>2017-05-02T06:25:25+00:00</updated>
<author>
<name>Takashi Iwai</name>
<email>tiwai@suse.de</email>
</author>
<published>2017-05-02T06:25:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=a5c3b32a1146e44f6b38fdfdfffc27842953420c'/>
<id>a5c3b32a1146e44f6b38fdfdfffc27842953420c</id>
<content type='text'>
ASoC: Updates for v4.12

A quiet release for the core, but lots of new drivers this time around:

 - A new, generalized, API for hooking up jacks which makes it easier to
   write generic machine drivers for simple cases.
 - Continuing fixes for issues with the x86 CPU drivers.
 - New drivers for Cirrus CS35L35, DIO DIO2125, Everest ES7132,
   HiSilicon hi6210, Maxim MAX98927, MT2701 systems with WM8960, Nuvoton
   NAU8824, Odroid systems, ST STM32 SAI controllers and x86 systems with
   DA7213
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
ASoC: Updates for v4.12

A quiet release for the core, but lots of new drivers this time around:

 - A new, generalized, API for hooking up jacks which makes it easier to
   write generic machine drivers for simple cases.
 - Continuing fixes for issues with the x86 CPU drivers.
 - New drivers for Cirrus CS35L35, DIO DIO2125, Everest ES7132,
   HiSilicon hi6210, Maxim MAX98927, MT2701 systems with WM8960, Nuvoton
   NAU8824, Odroid systems, ST STM32 SAI controllers and x86 systems with
   DA7213
</pre>
</div>
</content>
</entry>
<entry>
<title>ALSA: hda - add more ML register definitions</title>
<updated>2017-04-07T08:39:18+00:00</updated>
<author>
<name>Libin Yang</name>
<email>libin.yang@intel.com</email>
</author>
<published>2017-04-06T11:18:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=dde5bff5415953f9cc7413f1b1ceebcdfd583c07'/>
<id>dde5bff5415953f9cc7413f1b1ceebcdfd583c07</id>
<content type='text'>
This patch refines the definition of AZX_MLCTL_SPA and AZX_MLCTL_CPA
and add more definitions of ML registers

Signed-off-by: Libin Yang &lt;libin.yang@intel.com&gt;
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch refines the definition of AZX_MLCTL_SPA and AZX_MLCTL_CPA
and add more definitions of ML registers

Signed-off-by: Libin Yang &lt;libin.yang@intel.com&gt;
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ALSA: hda - Avoid tricky macros</title>
<updated>2017-04-03T06:42:43+00:00</updated>
<author>
<name>Takashi Iwai</name>
<email>tiwai@suse.de</email>
</author>
<published>2017-03-29T06:27:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=2c1f81381eadc6dd3c288ec4477b2fe572cf86dc'/>
<id>2c1f81381eadc6dd3c288ec4477b2fe572cf86dc</id>
<content type='text'>
The macros _snd_hdac_chip_read() and *_write() expand to different
types (b,w,l) per their argument.  They were thought to be used only
internally for other snd_hdac_chip_*() macros, but in some situations
we need to call these directly, and they are way too ugly.

Instead of saving a few lines, we just write these macros explicitly
with the types, so that they can be used in a saner way.

Acked-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The macros _snd_hdac_chip_read() and *_write() expand to different
types (b,w,l) per their argument.  They were thought to be used only
internally for other snd_hdac_chip_*() macros, but in some situations
we need to call these directly, and they are way too ugly.

Instead of saving a few lines, we just write these macros explicitly
with the types, so that they can be used in a saner way.

Acked-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'topic/hda' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into asoc-intel</title>
<updated>2017-03-29T11:50:26+00:00</updated>
<author>
<name>Mark Brown</name>
<email>broonie@kernel.org</email>
</author>
<published>2017-03-29T11:50:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=240a07dbc30db6e728625e4e0eb736bbeefed6e6'/>
<id>240a07dbc30db6e728625e4e0eb736bbeefed6e6</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>ALSA: hda: Fix LLCH register read</title>
<updated>2017-03-29T11:01:35+00:00</updated>
<author>
<name>B, Jayachandran</name>
<email>jayachandran.b@intel.com</email>
</author>
<published>2017-03-24T17:40:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=ccfdf9f6a47179941cb8b5f1d3df9734e54b38c4'/>
<id>ccfdf9f6a47179941cb8b5f1d3df9734e54b38c4</id>
<content type='text'>
LLCH is a 16 bit register. Use readw instead of readl API.

Signed-off-by: B, Jayachandran &lt;jayachandran.b@intel.com&gt;
Signed-off-by: Jeeja KP &lt;jeeja.kp@intel.com&gt;
Acked-by: Takashi Iwai &lt;tiwai@suse.de&gt;
Acked-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
Signed-off-by: Mark Brown &lt;broonie@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
LLCH is a 16 bit register. Use readw instead of readl API.

Signed-off-by: B, Jayachandran &lt;jayachandran.b@intel.com&gt;
Signed-off-by: Jeeja KP &lt;jeeja.kp@intel.com&gt;
Acked-by: Takashi Iwai &lt;tiwai@suse.de&gt;
Acked-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
Signed-off-by: Mark Brown &lt;broonie@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge tag 'v4.10-rc1' into asoc-intel</title>
<updated>2017-01-24T16:24:18+00:00</updated>
<author>
<name>Mark Brown</name>
<email>broonie@kernel.org</email>
</author>
<published>2017-01-24T16:24:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=dbbc21bbf2c640dd148903e82f752c2f269fc58a'/>
<id>dbbc21bbf2c640dd148903e82f752c2f269fc58a</id>
<content type='text'>
Linux 4.10-rc1
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Linux 4.10-rc1
</pre>
</div>
</content>
</entry>
<entry>
<title>ALSA: hda: check stream decoupled register state</title>
<updated>2017-01-06T18:16:10+00:00</updated>
<author>
<name>Jeeja KP</name>
<email>jeeja.kp@intel.com</email>
</author>
<published>2017-01-02T07:14:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=09a8bf812c662c833621f19955a1d3fa495801bc'/>
<id>09a8bf812c662c833621f19955a1d3fa495801bc</id>
<content type='text'>
Check stream decoupled register value with requested value
before decoupling/coupling the stream.

Signed-off-by: Jeeja KP &lt;jeeja.kp@intel.com&gt;
Acked-by: Takashi Iwai &lt;tiwai@suse.de&gt;
Signed-off-by: Mark Brown &lt;broonie@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Check stream decoupled register value with requested value
before decoupling/coupling the stream.

Signed-off-by: Jeeja KP &lt;jeeja.kp@intel.com&gt;
Acked-by: Takashi Iwai &lt;tiwai@suse.de&gt;
Signed-off-by: Mark Brown &lt;broonie@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>clocksource: Use a plain u64 instead of cycle_t</title>
<updated>2016-12-25T10:04:12+00:00</updated>
<author>
<name>Thomas Gleixner</name>
<email>tglx@linutronix.de</email>
</author>
<published>2016-12-21T19:32:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=a5a1d1c2914b5316924c7893eb683a5420ebd3be'/>
<id>a5a1d1c2914b5316924c7893eb683a5420ebd3be</id>
<content type='text'>
There is no point in having an extra type for extra confusion. u64 is
unambiguous.

Conversion was done with the following coccinelle script:

@rem@
@@
-typedef u64 cycle_t;

@fix@
typedef cycle_t;
@@
-cycle_t
+u64

Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Cc: Peter Zijlstra &lt;peterz@infradead.org&gt;
Cc: John Stultz &lt;john.stultz@linaro.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
There is no point in having an extra type for extra confusion. u64 is
unambiguous.

Conversion was done with the following coccinelle script:

@rem@
@@
-typedef u64 cycle_t;

@fix@
typedef cycle_t;
@@
-cycle_t
+u64

Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Cc: Peter Zijlstra &lt;peterz@infradead.org&gt;
Cc: John Stultz &lt;john.stultz@linaro.org&gt;
</pre>
</div>
</content>
</entry>
</feed>
