<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-toradex.git, branch v2.6.20.4</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>Linux 2.6.20.4</title>
<updated>2007-03-23T19:52:51+00:00</updated>
<author>
<name>Greg Kroah-Hartman</name>
<email>gregkh@suse.de</email>
</author>
<published>2007-03-23T19:52:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=e947fa65e90d410219fc93d4b92c287bbc041773'/>
<id>e947fa65e90d410219fc93d4b92c287bbc041773</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix niagara memory corruption</title>
<updated>2007-03-23T19:49:27+00:00</updated>
<author>
<name>David Miller</name>
<email>davem@davemloft.net</email>
</author>
<published>2007-03-19T21:50:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=9c06278212e2d8f050fbd6ca9cb277836b3c523d'/>
<id>9c06278212e2d8f050fbd6ca9cb277836b3c523d</id>
<content type='text'>
[SPARC64]: store-init needs trailing membar.

The manual says that it is required and we actually have crash reports
where loads see stale data due to not having membars here.

In one case the networking does:

	memset(skb, 0, offsetof(struct sk_buff, truesize));

and then some code later checks skb-&gt;nohdr for zero, but it's still
the value that was there before the memset().

Note that arch/sparc64/lib/xor.S already got this right.

Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[SPARC64]: store-init needs trailing membar.

The manual says that it is required and we actually have crash reports
where loads see stale data due to not having membars here.

In one case the networking does:

	memset(skb, 0, offsetof(struct sk_buff, truesize));

and then some code later checks skb-&gt;nohdr for zero, but it's still
the value that was there before the memset().

Note that arch/sparc64/lib/xor.S already got this right.

Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>st: fix Tape dies if wrong block size used, bug 7919</title>
<updated>2007-03-23T19:49:27+00:00</updated>
<author>
<name>Kai Makisara</name>
<email>Kai.Makisara@kolumbus.fi</email>
</author>
<published>2007-03-19T23:58:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=ad23c76c32efdf8f633cb41c3df0ef6780f5b275'/>
<id>ad23c76c32efdf8f633cb41c3df0ef6780f5b275</id>
<content type='text'>
[SCSI] st: fix Tape dies if wrong block size used, bug 7919

On Thu, 1 Feb 2007, Andrew Morton wrote:
&gt; On Thu, 1 Feb 2007 15:34:29 -0800
&gt; bugme-daemon@bugzilla.kernel.org wrote:
&gt;
&gt; &gt; http://bugzilla.kernel.org/show_bug.cgi?id=7919
&gt; &gt;
&gt; &gt;            Summary: Tape dies if wrong block size used
&gt; &gt;     Kernel Version: 2.6.20-rc5
&gt; &gt;             Status: NEW
&gt; &gt;           Severity: normal
&gt; &gt;              Owner: scsi_drivers-other@kernel-bugs.osdl.org
&gt; &gt;          Submitter: dmartin@sccd.ctc.edu
&gt; &gt;
&gt; &gt;
&gt; &gt; Most recent kernel where this bug did *NOT* occur: 2.6.17.14
&gt; &gt;
&gt; &gt; Other Kernels Tested and Results:
&gt; &gt;
&gt; &gt;     OK 2.6.15.7
&gt; &gt;     OK 2.6.16.37
&gt; &gt;     OK 2.6.17.14
&gt; &gt;     BAD 2.6.18.6
&gt; &gt;     BAD 2.6.18-1.2869.fc6
&gt; &gt;     BAD 2.6.19.2 +
&gt; &gt;     BAD 2.6.20-rc5
&gt; &gt;
&gt; &gt; NOTE: 2.6.18-1.2869.fc6 is a Fedora modified kernel, all others are from kernel.org
&gt; &gt;
...
&gt; &gt; Steps to reproduce:
&gt; &gt; Get a Adaptec AHA-2940U/UW/D / AIC-7881U card and a tape drive,
&gt; &gt; install a recent kernel
&gt; &gt; set the tape block size - mt setblk 4096
&gt; &gt; read from or write to tape using wrong block size - tar -b 7 -cvf /dev/tape foo
&gt; &gt;
Write does not trigger this bug because the driver refuses in fixed block
mode writes that are not a multiple of the block size. Read does trigger
it in my system.

The bug is not associated with any specific HBA. st tries to do direct i/o
in fixed block mode with reads that are not a multiple of tape block size.

The patch in this message fixes the st problem by switching to using the
driver buffer up to the next close of the device file in fixed block mode
if the user asks for a read like this.

I don't know why the bug has surfaced only after 2.6.17 although the st
problem is old. There may be another bug in the block subsystem and this
patch works around it. However, the patch fixes a problem in st and in
this way it is a valid fix.

This patch may also fix the bug 7900.

The patch compiles and is lightly tested.

Signed-off-by: Kai Makisara &lt;kai.makisara@kolumbus.fi&gt;
Cc: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: James Bottomley &lt;James.Bottomley@SteelEye.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[SCSI] st: fix Tape dies if wrong block size used, bug 7919

On Thu, 1 Feb 2007, Andrew Morton wrote:
&gt; On Thu, 1 Feb 2007 15:34:29 -0800
&gt; bugme-daemon@bugzilla.kernel.org wrote:
&gt;
&gt; &gt; http://bugzilla.kernel.org/show_bug.cgi?id=7919
&gt; &gt;
&gt; &gt;            Summary: Tape dies if wrong block size used
&gt; &gt;     Kernel Version: 2.6.20-rc5
&gt; &gt;             Status: NEW
&gt; &gt;           Severity: normal
&gt; &gt;              Owner: scsi_drivers-other@kernel-bugs.osdl.org
&gt; &gt;          Submitter: dmartin@sccd.ctc.edu
&gt; &gt;
&gt; &gt;
&gt; &gt; Most recent kernel where this bug did *NOT* occur: 2.6.17.14
&gt; &gt;
&gt; &gt; Other Kernels Tested and Results:
&gt; &gt;
&gt; &gt;     OK 2.6.15.7
&gt; &gt;     OK 2.6.16.37
&gt; &gt;     OK 2.6.17.14
&gt; &gt;     BAD 2.6.18.6
&gt; &gt;     BAD 2.6.18-1.2869.fc6
&gt; &gt;     BAD 2.6.19.2 +
&gt; &gt;     BAD 2.6.20-rc5
&gt; &gt;
&gt; &gt; NOTE: 2.6.18-1.2869.fc6 is a Fedora modified kernel, all others are from kernel.org
&gt; &gt;
...
&gt; &gt; Steps to reproduce:
&gt; &gt; Get a Adaptec AHA-2940U/UW/D / AIC-7881U card and a tape drive,
&gt; &gt; install a recent kernel
&gt; &gt; set the tape block size - mt setblk 4096
&gt; &gt; read from or write to tape using wrong block size - tar -b 7 -cvf /dev/tape foo
&gt; &gt;
Write does not trigger this bug because the driver refuses in fixed block
mode writes that are not a multiple of the block size. Read does trigger
it in my system.

The bug is not associated with any specific HBA. st tries to do direct i/o
in fixed block mode with reads that are not a multiple of tape block size.

The patch in this message fixes the st problem by switching to using the
driver buffer up to the next close of the device file in fixed block mode
if the user asks for a read like this.

I don't know why the bug has surfaced only after 2.6.17 although the st
problem is old. There may be another bug in the block subsystem and this
patch works around it. However, the patch fixes a problem in st and in
this way it is a valid fix.

This patch may also fix the bug 7900.

The patch compiles and is lightly tested.

Signed-off-by: Kai Makisara &lt;kai.makisara@kolumbus.fi&gt;
Cc: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: James Bottomley &lt;James.Bottomley@SteelEye.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>Input: i8042 - another attempt to fix AUX delivery checks</title>
<updated>2007-03-23T19:49:27+00:00</updated>
<author>
<name>Dmitry Torokhov</name>
<email>dtor@insightbb.com</email>
</author>
<published>2007-03-08T04:20:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=0036a32bcd53c3fa9063577705c2fc95ed45b00c'/>
<id>0036a32bcd53c3fa9063577705c2fc95ed45b00c</id>
<content type='text'>
Do not assume that AUX_LOOP command is broken unless it
completes successfully but returns wrong (unexpected) data.

Cc: Chuck Ebbert &lt;cebbert@redhat.com&gt;
Signed-off-by: Dmitry Torokhov &lt;dtor@mail.ru&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Do not assume that AUX_LOOP command is broken unless it
completes successfully but returns wrong (unexpected) data.

Cc: Chuck Ebbert &lt;cebbert@redhat.com&gt;
Signed-off-by: Dmitry Torokhov &lt;dtor@mail.ru&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>UML - arch_prctl should set thread fs</title>
<updated>2007-03-23T19:49:27+00:00</updated>
<author>
<name>Jeff Dike</name>
<email>jdike@addtoit.com</email>
</author>
<published>2007-03-19T20:12:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=a0518e0445325892f9a92fbd19cbfdb0eecfdb3e'/>
<id>a0518e0445325892f9a92fbd19cbfdb0eecfdb3e</id>
<content type='text'>
x86_64 needs some TLS fixes.  What was missing was remembering the child
thread id during clone and stuffing it into the child during each context
switch.

The %fs value is stored separately in the thread structure since the host
controls what effect it has on the actual register file.  The host also needs
to store it in its own thread struct, so we need the value kept outside the
register file.

arch_prctl_skas was fixed to call PTRACE_ARCH_PRCTL appropriately.  There is
some saving and restoring of registers in the ARCH_SET_* cases so that the
correct set of registers are changed on the host and restored to the process
when it runs again.

Signed-off-by: Jeff Dike &lt;jdike@addtoit.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
x86_64 needs some TLS fixes.  What was missing was remembering the child
thread id during clone and stuffing it into the child during each context
switch.

The %fs value is stored separately in the thread structure since the host
controls what effect it has on the actual register file.  The host also needs
to store it in its own thread struct, so we need the value kept outside the
register file.

arch_prctl_skas was fixed to call PTRACE_ARCH_PRCTL appropriately.  There is
some saving and restoring of registers in the ARCH_SET_* cases so that the
correct set of registers are changed on the host and restored to the process
when it runs again.

Signed-off-by: Jeff Dike &lt;jdike@addtoit.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>fix deadlock in audit_log_task_context()</title>
<updated>2007-03-23T19:49:27+00:00</updated>
<author>
<name>Al Viro</name>
<email>viro@ftp.linux.org.uk</email>
</author>
<published>2007-03-19T15:55:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=7ac7551d5cf0d01b0a67a6653c25045e23904732'/>
<id>7ac7551d5cf0d01b0a67a6653c25045e23904732</id>
<content type='text'>
GFP_KERNEL allocations in non-blocking context; fixed by killing
an idiotic use of security_getprocattr().

Acked-by: Stephen Smalley &lt;sds@tycho.nsa.gov&gt;
Acked-by: James Morris &lt;jmorris@namei.org&gt;
Cc: Chuck Ebbert &lt;cebbert@redhat.com&gt;
Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
GFP_KERNEL allocations in non-blocking context; fixed by killing
an idiotic use of security_getprocattr().

Acked-by: Stephen Smalley &lt;sds@tycho.nsa.gov&gt;
Acked-by: James Morris &lt;jmorris@namei.org&gt;
Cc: Chuck Ebbert &lt;cebbert@redhat.com&gt;
Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>Input: i8042 - fix AUX IRQ delivery check</title>
<updated>2007-03-23T19:49:27+00:00</updated>
<author>
<name>Dmitry Torokhov</name>
<email>dtor@insightbb.com</email>
</author>
<published>2007-03-19T13:06:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=6f09b7b3b28cd65c9a08757fcf6d9762d541ef9a'/>
<id>6f09b7b3b28cd65c9a08757fcf6d9762d541ef9a</id>
<content type='text'>
Input: i8042 - fix AUX IRQ delivery check

On boxes that do not implement AUX LOOP command we can not
verify AUX IRQ delivery and must assume that it is wired
properly.

Cc: Chuck Ebbert &lt;cebbert@redhat.com&gt;
Signed-off-by: Dmitry Torokhov &lt;dtor@mail.ru&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Input: i8042 - fix AUX IRQ delivery check

On boxes that do not implement AUX LOOP command we can not
verify AUX IRQ delivery and must assume that it is wired
properly.

Cc: Chuck Ebbert &lt;cebbert@redhat.com&gt;
Signed-off-by: Dmitry Torokhov &lt;dtor@mail.ru&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>dio: invalidate clean pages before dio write</title>
<updated>2007-03-23T19:49:26+00:00</updated>
<author>
<name>Zach Brown</name>
<email>zach.brown@oracle.com</email>
</author>
<published>2007-03-18T22:55:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=8479fc42c9696c54858aa8cbb1052c26571436c5'/>
<id>8479fc42c9696c54858aa8cbb1052c26571436c5</id>
<content type='text'>
This patch fixes a user-triggerable oops that was reported by Leonid
Ananiev as archived at http://lkml.org/lkml/2007/2/8/337.

dio writes invalidate clean pages that intersect the written region so that
subsequent buffered reads go to disk to read the new data.  If this fails
the interface tries to tell the caller that the cache is inconsistent by
returning EIO.

Before this patch we had the problem where this invalidation failure would
clobber -EIOCBQUEUED as it made its way from fs/direct-io.c to fs/aio.c.
Both fs/aio.c and bio completion call aio_complete() and we reference freed
memory, usually oopsing.

This patch addresses this problem by invalidating before the write so that
we can cleanly return -EIO before -&gt;direct_IO() has had a chance to return
-EIOCBQUEUED.

There is a compromise here.  During the dio write we can fault in mmap()ed
pages which intersect the written range with get_user_pages() if the user
provided them for the source buffer.  This is a crazy thing to do, but we
can make it mostly work in most cases by trying the invalidation again.
The compromise is that we won't return an error if this second invalidation
fails if it's an AIO write and we have -EIOCBQUEUED.

This was tested by having two processes race performing large O_DIRECT and
buffered ordered writes.  Within minutes ext3 would see a race between
ext3_releasepage() and jbd holding a reference on ordered data buffers and
would cause invalidation to fail, panicing the box.  The test can be found
in the 'aio_dio_bugs' test group in test.kernel.org/autotest.  After this
patch the test passes.

Signed-off-by: Zach Brown &lt;zach.brown@oracle.com&gt;
Signed-off-by: Benjamin LaHaise &lt;bcrl@kvack.org&gt;
Cc: Chuck Ebbert &lt;cebbert@redhat.com&gt;
Cc: Leonid Ananiev &lt;leonid.i.ananiev@linux.intel.com&gt;
Cc: Nick Piggin &lt;nickpiggin@yahoo.com.au&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch fixes a user-triggerable oops that was reported by Leonid
Ananiev as archived at http://lkml.org/lkml/2007/2/8/337.

dio writes invalidate clean pages that intersect the written region so that
subsequent buffered reads go to disk to read the new data.  If this fails
the interface tries to tell the caller that the cache is inconsistent by
returning EIO.

Before this patch we had the problem where this invalidation failure would
clobber -EIOCBQUEUED as it made its way from fs/direct-io.c to fs/aio.c.
Both fs/aio.c and bio completion call aio_complete() and we reference freed
memory, usually oopsing.

This patch addresses this problem by invalidating before the write so that
we can cleanly return -EIO before -&gt;direct_IO() has had a chance to return
-EIOCBQUEUED.

There is a compromise here.  During the dio write we can fault in mmap()ed
pages which intersect the written range with get_user_pages() if the user
provided them for the source buffer.  This is a crazy thing to do, but we
can make it mostly work in most cases by trying the invalidation again.
The compromise is that we won't return an error if this second invalidation
fails if it's an AIO write and we have -EIOCBQUEUED.

This was tested by having two processes race performing large O_DIRECT and
buffered ordered writes.  Within minutes ext3 would see a race between
ext3_releasepage() and jbd holding a reference on ordered data buffers and
would cause invalidation to fail, panicing the box.  The test can be found
in the 'aio_dio_bugs' test group in test.kernel.org/autotest.  After this
patch the test passes.

Signed-off-by: Zach Brown &lt;zach.brown@oracle.com&gt;
Signed-off-by: Benjamin LaHaise &lt;bcrl@kvack.org&gt;
Cc: Chuck Ebbert &lt;cebbert@redhat.com&gt;
Cc: Leonid Ananiev &lt;leonid.i.ananiev@linux.intel.com&gt;
Cc: Nick Piggin &lt;nickpiggin@yahoo.com.au&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>oom fix: prevent oom from killing a process with children/sibling unkillable</title>
<updated>2007-03-23T19:49:26+00:00</updated>
<author>
<name>Ankita Garg</name>
<email>ankita@in.ibm.com</email>
</author>
<published>2007-03-18T22:54:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=86fef703b93a7337ec932f12ca23ae365cb730a2'/>
<id>86fef703b93a7337ec932f12ca23ae365cb730a2</id>
<content type='text'>
Looking at oom_kill.c, found that the intention to not kill the selected
process if any of its children/siblings has OOM_DISABLE set, is not being
met.

Signed-off-by: Ankita Garg &lt;ankita@in.ibm.com&gt;
Cc: Chuck Ebbert &lt;cebbert@redhat.com&gt;
Acked-by: Nick Piggin &lt;npiggin@suse.de&gt;
Acked-by: William Irwin &lt;wli@holomorphy.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Looking at oom_kill.c, found that the intention to not kill the selected
process if any of its children/siblings has OOM_DISABLE set, is not being
met.

Signed-off-by: Ankita Garg &lt;ankita@in.ibm.com&gt;
Cc: Chuck Ebbert &lt;cebbert@redhat.com&gt;
Acked-by: Nick Piggin &lt;npiggin@suse.de&gt;
Acked-by: William Irwin &lt;wli@holomorphy.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>hda-intel - Fix codec probe with ATI controllers</title>
<updated>2007-03-23T19:49:26+00:00</updated>
<author>
<name>Takashi Iwai</name>
<email>tiwai@suse.de</email>
</author>
<published>2007-03-18T22:19:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=0a67204c5d11aca00fafc3ebe95be9a72447f70c'/>
<id>0a67204c5d11aca00fafc3ebe95be9a72447f70c</id>
<content type='text'>
[ALSA] hda-intel - Fix codec probe with ATI contorllers

ATI controllers may have up to 4 codecs while ICH up to 3.
Thus the earlier fix to change AZX_MAX_CODECS to 3 cause a regression
on some devices that have the audio codec at bit#3.
Now max codecs is defined according to the driver type, either 3 or 4.
Currently 4 is set only to ATI chips.  Other might need the same
change, too.

Cc: Chuck Ebbert &lt;cebbert@redhat.com&gt;
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
Signed-off-by: Jaroslav Kysela &lt;perex@suse.cz&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ALSA] hda-intel - Fix codec probe with ATI contorllers

ATI controllers may have up to 4 codecs while ICH up to 3.
Thus the earlier fix to change AZX_MAX_CODECS to 3 cause a regression
on some devices that have the audio codec at bit#3.
Now max codecs is defined according to the driver type, either 3 or 4.
Currently 4 is set only to ATI chips.  Other might need the same
change, too.

Cc: Chuck Ebbert &lt;cebbert@redhat.com&gt;
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
Signed-off-by: Jaroslav Kysela &lt;perex@suse.cz&gt;

</pre>
</div>
</content>
</entry>
</feed>
