Hello community,
here is the log from the commit of package kernel-source for openSUSE:Factory checked in at 2016-03-29 09:54:51
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kernel-source (Old)
and /work/SRC/openSUSE:Factory/.kernel-source.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kernel-source"
Changes:
--------
--- /work/SRC/openSUSE:Factory/kernel-source/kernel-debug.changes 2016-03-17 16:49:40.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.kernel-source.new/kernel-debug.changes 2016-03-29 09:54:53.000000000 +0200
@@ -1,0 +2,38 @@
+Fri Mar 18 21:35:24 CET 2016 - tiwai@suse.de
+
+- ALSA: hda - Fix spurious kernel WARNING on Baytrail HDMI
+ (boo#971737).
+- ALSA: hda - Fix forgotten HDMI monitor_present update
+ (boo#971737).
+- ALSA: hda - Really restrict i915 notifier to HSW+ (boo#971737).
+- commit 9ebd8b6
+
+-------------------------------------------------------------------
+Fri Mar 18 16:21:45 CET 2016 - hare@suse.de
+
+- Update config files: Enable CONFIG_BLK_DEV_NVME_SCSI (bsc#965497)
+- commit 766f032
+
+-------------------------------------------------------------------
+Fri Mar 18 13:33:44 CET 2016 - jslaby@suse.cz
+
+- net: irda: Fix use-after-free in irtty_open() (bnc#967903).
+- commit ff61c16
+
+-------------------------------------------------------------------
+Fri Mar 18 10:45:00 CET 2016 - tiwai@suse.de
+
+- ALSA: hda - Limit i915 HDMI binding only for HSW and later
+ (boo#971737).
+- ALSA: hda - Don't handle ELD notify from invalid port
+ (boo#971737).
+- commit a6b682e
+
+-------------------------------------------------------------------
+Thu Mar 17 11:37:09 CET 2016 - tiwai@suse.de
+
+- ALSA: hda - Fix unexpected resume through regmap code path
+ (bsc#969383).
+- commit 56796b8
+
+-------------------------------------------------------------------
kernel-default.changes: same change
kernel-docs.changes: same change
kernel-lpae.changes: same change
kernel-obs-build.changes: same change
kernel-obs-qa.changes: same change
kernel-pae.changes: same change
kernel-source.changes: same change
kernel-syms.changes: same change
kernel-vanilla.changes: same change
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ kernel-debug.spec ++++++
--- /var/tmp/diff_new_pack.IgI7NJ/_old 2016-03-29 09:54:58.000000000 +0200
+++ /var/tmp/diff_new_pack.IgI7NJ/_new 2016-03-29 09:54:58.000000000 +0200
@@ -63,7 +63,7 @@
Group: System/Kernel
Version: 4.5.0
%if 0%{?is_kotd}
-Release: <RELEASE>.gb2c9ae5
+Release: <RELEASE>.gece3ff2
%else
Release: 0
%endif
kernel-default.spec: same change
++++++ kernel-docs.spec ++++++
--- /var/tmp/diff_new_pack.IgI7NJ/_old 2016-03-29 09:54:58.000000000 +0200
+++ /var/tmp/diff_new_pack.IgI7NJ/_new 2016-03-29 09:54:58.000000000 +0200
@@ -29,7 +29,7 @@
Group: Documentation/Man
Version: 4.5.0
%if 0%{?is_kotd}
-Release: <RELEASE>.gb2c9ae5
+Release: <RELEASE>.gece3ff2
%else
Release: 0
%endif
++++++ kernel-lpae.spec ++++++
--- /var/tmp/diff_new_pack.IgI7NJ/_old 2016-03-29 09:54:58.000000000 +0200
+++ /var/tmp/diff_new_pack.IgI7NJ/_new 2016-03-29 09:54:58.000000000 +0200
@@ -63,7 +63,7 @@
Group: System/Kernel
Version: 4.5.0
%if 0%{?is_kotd}
-Release: <RELEASE>.gb2c9ae5
+Release: <RELEASE>.gece3ff2
%else
Release: 0
%endif
++++++ kernel-obs-build.spec ++++++
--- /var/tmp/diff_new_pack.IgI7NJ/_old 2016-03-29 09:54:58.000000000 +0200
+++ /var/tmp/diff_new_pack.IgI7NJ/_new 2016-03-29 09:54:58.000000000 +0200
@@ -53,7 +53,7 @@
Group: SLES
Version: 4.5.0
%if 0%{?is_kotd}
-Release: <RELEASE>.gb2c9ae5
+Release: <RELEASE>.gece3ff2
%else
Release: 0
%endif
kernel-obs-qa.spec: same change
++++++ kernel-pae.spec ++++++
--- /var/tmp/diff_new_pack.IgI7NJ/_old 2016-03-29 09:54:58.000000000 +0200
+++ /var/tmp/diff_new_pack.IgI7NJ/_new 2016-03-29 09:54:58.000000000 +0200
@@ -63,7 +63,7 @@
Group: System/Kernel
Version: 4.5.0
%if 0%{?is_kotd}
-Release: <RELEASE>.gb2c9ae5
+Release: <RELEASE>.gece3ff2
%else
Release: 0
%endif
++++++ kernel-source.spec ++++++
--- /var/tmp/diff_new_pack.IgI7NJ/_old 2016-03-29 09:54:58.000000000 +0200
+++ /var/tmp/diff_new_pack.IgI7NJ/_new 2016-03-29 09:54:58.000000000 +0200
@@ -32,7 +32,7 @@
Group: Development/Sources
Version: 4.5.0
%if 0%{?is_kotd}
-Release: <RELEASE>.gb2c9ae5
+Release: <RELEASE>.gece3ff2
%else
Release: 0
%endif
++++++ kernel-syms.spec ++++++
--- /var/tmp/diff_new_pack.IgI7NJ/_old 2016-03-29 09:54:58.000000000 +0200
+++ /var/tmp/diff_new_pack.IgI7NJ/_new 2016-03-29 09:54:58.000000000 +0200
@@ -27,7 +27,7 @@
Version: 4.5.0
%if %using_buildservice
%if 0%{?is_kotd}
-Release: <RELEASE>.gb2c9ae5
+Release: <RELEASE>.gece3ff2
%else
Release: 0
%endif
++++++ kernel-vanilla.spec ++++++
--- /var/tmp/diff_new_pack.IgI7NJ/_old 2016-03-29 09:54:58.000000000 +0200
+++ /var/tmp/diff_new_pack.IgI7NJ/_new 2016-03-29 09:54:58.000000000 +0200
@@ -63,7 +63,7 @@
Group: System/Kernel
Version: 4.5.0
%if 0%{?is_kotd}
-Release: <RELEASE>.gb2c9ae5
+Release: <RELEASE>.gece3ff2
%else
Release: 0
%endif
++++++ config.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/arm64/default new/config/arm64/default
--- old/config/arm64/default 2016-03-14 06:14:55.000000000 +0100
+++ new/config/arm64/default 2016-03-18 16:23:56.000000000 +0100
@@ -1733,7 +1733,7 @@
CONFIG_BLK_DEV_RBD=m
CONFIG_BLK_DEV_RSXX=m
CONFIG_BLK_DEV_NVME=m
-# CONFIG_BLK_DEV_NVME_SCSI is not set
+CONFIG_BLK_DEV_NVME_SCSI=y
#
# Misc devices
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/ppc64/debug new/config/ppc64/debug
--- old/config/ppc64/debug 2016-03-14 06:14:55.000000000 +0100
+++ new/config/ppc64/debug 2016-03-18 16:23:56.000000000 +0100
@@ -1636,7 +1636,7 @@
CONFIG_BLK_DEV_RBD=m
CONFIG_BLK_DEV_RSXX=m
CONFIG_BLK_DEV_NVME=m
-# CONFIG_BLK_DEV_NVME_SCSI is not set
+CONFIG_BLK_DEV_NVME_SCSI=y
#
# Misc devices
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/ppc64/default new/config/ppc64/default
--- old/config/ppc64/default 2016-03-14 06:14:55.000000000 +0100
+++ new/config/ppc64/default 2016-03-18 16:23:56.000000000 +0100
@@ -1625,7 +1625,7 @@
CONFIG_BLK_DEV_RBD=m
CONFIG_BLK_DEV_RSXX=m
CONFIG_BLK_DEV_NVME=m
-# CONFIG_BLK_DEV_NVME_SCSI is not set
+CONFIG_BLK_DEV_NVME_SCSI=y
#
# Misc devices
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/ppc64le/debug new/config/ppc64le/debug
--- old/config/ppc64le/debug 2016-03-14 06:14:55.000000000 +0100
+++ new/config/ppc64le/debug 2016-03-18 16:23:56.000000000 +0100
@@ -1544,7 +1544,7 @@
CONFIG_BLK_DEV_RBD=m
CONFIG_BLK_DEV_RSXX=m
CONFIG_BLK_DEV_NVME=m
-# CONFIG_BLK_DEV_NVME_SCSI is not set
+CONFIG_BLK_DEV_NVME_SCSI=y
#
# Misc devices
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/ppc64le/default new/config/ppc64le/default
--- old/config/ppc64le/default 2016-03-14 06:14:55.000000000 +0100
+++ new/config/ppc64le/default 2016-03-18 16:23:56.000000000 +0100
@@ -1533,7 +1533,7 @@
CONFIG_BLK_DEV_RBD=m
CONFIG_BLK_DEV_RSXX=m
CONFIG_BLK_DEV_NVME=m
-# CONFIG_BLK_DEV_NVME_SCSI is not set
+CONFIG_BLK_DEV_NVME_SCSI=y
#
# Misc devices
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/s390x/default new/config/s390x/default
--- old/config/s390x/default 2016-03-14 06:14:55.000000000 +0100
+++ new/config/s390x/default 2016-03-18 16:23:56.000000000 +0100
@@ -1234,7 +1234,7 @@
CONFIG_BLK_DEV_RBD=m
# CONFIG_BLK_DEV_RSXX is not set
CONFIG_BLK_DEV_NVME=m
-# CONFIG_BLK_DEV_NVME_SCSI is not set
+CONFIG_BLK_DEV_NVME_SCSI=y
#
# Misc devices
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/x86_64/debug new/config/x86_64/debug
--- old/config/x86_64/debug 2016-03-14 06:14:55.000000000 +0100
+++ new/config/x86_64/debug 2016-03-18 16:23:56.000000000 +0100
@@ -1997,7 +1997,7 @@
CONFIG_BLK_DEV_RBD=m
CONFIG_BLK_DEV_RSXX=m
CONFIG_BLK_DEV_NVME=m
-# CONFIG_BLK_DEV_NVME_SCSI is not set
+CONFIG_BLK_DEV_NVME_SCSI=y
#
# Misc devices
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/config/x86_64/default new/config/x86_64/default
--- old/config/x86_64/default 2016-03-14 06:14:55.000000000 +0100
+++ new/config/x86_64/default 2016-03-18 16:23:56.000000000 +0100
@@ -1983,7 +1983,7 @@
CONFIG_BLK_DEV_RBD=m
CONFIG_BLK_DEV_RSXX=m
CONFIG_BLK_DEV_NVME=m
-# CONFIG_BLK_DEV_NVME_SCSI is not set
+CONFIG_BLK_DEV_NVME_SCSI=y
#
# Misc devices
++++++ patches.drivers.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.drivers/ALSA-hda-Don-t-handle-ELD-notify-from-invalid-port new/patches.drivers/ALSA-hda-Don-t-handle-ELD-notify-from-invalid-port
--- old/patches.drivers/ALSA-hda-Don-t-handle-ELD-notify-from-invalid-port 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.drivers/ALSA-hda-Don-t-handle-ELD-notify-from-invalid-port 2016-03-18 21:35:29.000000000 +0100
@@ -0,0 +1,39 @@
+From 4f8e4f3537cafc4de128e6bfdf83baa78bc60eb1 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai
+Date: Thu, 10 Mar 2016 12:02:49 +0100
+Subject: [PATCH] ALSA: hda - Don't handle ELD notify from invalid port
+Patch-mainline: Queued in subsystem maintainer repository
+Git-commit: 4f8e4f3537cafc4de128e6bfdf83baa78bc60eb1
+Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git
+References: boo#971737
+
+The current Intel HDMI codec driver supports only three fixed ports
+from port B to port D. However, i915 driver may assign a DP on other
+ports, e.g. port A, when no eDP is used. This incompatibility is
+caught later at pin_nid_to_pin_index() and results in a warning
+message like "HDMI: pin nid 4 not registered" at each time.
+
+This patch filters out such invalid events beforehand, so that the
+kernel won't be too grumbling.
+
+Reported-by: Stefan Assmann
+Cc:
+Signed-off-by: Takashi Iwai
+
+---
+ sound/pci/hda/patch_hdmi.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/sound/pci/hda/patch_hdmi.c
++++ b/sound/pci/hda/patch_hdmi.c
+@@ -2432,6 +2432,10 @@ static void intel_pin_eld_notify(void *a
+ struct hda_codec *codec = audio_ptr;
+ int pin_nid = port + 0x04;
+
++ /* we assume only from port-B to port-D */
++ if (port < 1 || port > 3)
++ return;
++
+ /* skip notification during system suspend (but not in runtime PM);
+ * the state will be updated at resume
+ */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.drivers/ALSA-hda-Fix-forgotten-HDMI-monitor_present-update new/patches.drivers/ALSA-hda-Fix-forgotten-HDMI-monitor_present-update
--- old/patches.drivers/ALSA-hda-Fix-forgotten-HDMI-monitor_present-update 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.drivers/ALSA-hda-Fix-forgotten-HDMI-monitor_present-update 2016-03-18 21:35:29.000000000 +0100
@@ -0,0 +1,31 @@
+From bd48128539ab89986b24ad08ecd3e027dd1993a1 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai
+Date: Fri, 18 Mar 2016 18:01:53 +0100
+Subject: [PATCH] ALSA: hda - Fix forgotten HDMI monitor_present update
+Patch-mainline: Queued in subsystem maintainer repository
+Git-commit: bd48128539ab89986b24ad08ecd3e027dd1993a1
+Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git
+References: boo#971737
+
+We forgot to copy monitor_present value when updating the ELD
+information. This won't change the ELD retrieval and the jack
+notification behavior, but appears only in the proc output. In that
+sense, it's no fatal error, but a bug is a bug is a bug.
+
+Cc:
+Signed-off-by: Takashi Iwai
+
+---
+ sound/pci/hda/patch_hdmi.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/sound/pci/hda/patch_hdmi.c
++++ b/sound/pci/hda/patch_hdmi.c
+@@ -1566,6 +1566,7 @@ static void update_eld(struct hda_codec
+ eld->eld_size) != 0)
+ eld_changed = true;
+
++ pin_eld->monitor_present = eld->monitor_present;
+ pin_eld->eld_valid = eld->eld_valid;
+ pin_eld->eld_size = eld->eld_size;
+ if (eld->eld_valid)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.drivers/ALSA-hda-Fix-spurious-kernel-WARNING-on-Baytrail-HDM new/patches.drivers/ALSA-hda-Fix-spurious-kernel-WARNING-on-Baytrail-HDM
--- old/patches.drivers/ALSA-hda-Fix-spurious-kernel-WARNING-on-Baytrail-HDM 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.drivers/ALSA-hda-Fix-spurious-kernel-WARNING-on-Baytrail-HDM 2016-03-18 21:35:29.000000000 +0100
@@ -0,0 +1,44 @@
+From 93a9ff151754fbdf951b1b993bcf96453f6e36b3 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai
+Date: Fri, 18 Mar 2016 19:45:13 +0100
+Subject: [PATCH] ALSA: hda - Fix spurious kernel WARNING on Baytrail HDMI
+Patch-mainline: Queued in subsystem maintainer repository
+Git-commit: 93a9ff151754fbdf951b1b993bcf96453f6e36b3
+Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git
+References: boo#971737
+Mime-version: 1.0
+Content-type: text/plain; charset=UTF-8
+Content-transfer-encoding: 8bit
+
+snd_hdac_sync_audio_rate() call is mandatory only for HSW and later
+models, but we call the function unconditionally blindly assuming that
+the function doesn't do anything harmful. But since recently, the
+function checks the validity of the passed pin NID, and eventually
+spews the warning if an unexpected pin is passed. This is seen on old
+chips like Baytrail.
+
+The fix is to limit the call of this function again only for the chips
+with the proper binding. This can be identified by the same flag as
+the eld notifier.
+
+Reported-by: Ville Syrjälä
+Tested-by: Ville Syrjälä
+Cc: # v4.5
+Signed-off-by: Takashi Iwai
+
+---
+ sound/pci/hda/patch_hdmi.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/sound/pci/hda/patch_hdmi.c
++++ b/sound/pci/hda/patch_hdmi.c
+@@ -1878,7 +1878,8 @@ static int generic_hdmi_playback_pcm_pre
+
+ /* Call sync_audio_rate to set the N/CTS/M manually if necessary */
+ /* Todo: add DP1.2 MST audio support later */
+- snd_hdac_sync_audio_rate(&codec->bus->core, pin_nid, runtime->rate);
++ if (codec_has_acomp(codec))
++ snd_hdac_sync_audio_rate(&codec->bus->core, pin_nid, runtime->rate);
+
+ non_pcm = check_non_pcm_per_cvt(codec, cvt_nid);
+ mutex_lock(&per_pin->lock);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.drivers/ALSA-hda-Fix-unexpected-resume-through-regmap-code-p new/patches.drivers/ALSA-hda-Fix-unexpected-resume-through-regmap-code-p
--- old/patches.drivers/ALSA-hda-Fix-unexpected-resume-through-regmap-code-p 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.drivers/ALSA-hda-Fix-unexpected-resume-through-regmap-code-p 2016-03-18 21:35:29.000000000 +0100
@@ -0,0 +1,205 @@
+From fc4f000bf8c0cbf38f44de6bd5e225574e572ed4 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai
+Date: Fri, 4 Mar 2016 11:34:18 +0100
+Subject: [PATCH] ALSA: hda - Fix unexpected resume through regmap code path
+Git-commit: fc4f000bf8c0cbf38f44de6bd5e225574e572ed4
+Patch-mainline: Queued in subsystem maintainer repository
+Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git
+References: bsc#969383
+
+HD-audio driver has a mechanism to trigger the runtime resume
+automatically at accessing the verbs. This auto-resume, however,
+causes the mutex deadlock when invoked from the regmap handler since
+the regmap keeps the mutex while auto-resuming. For avoiding that,
+there is some tricky check in the HDA regmap handler to return -EAGAIN
+error to back-off when the codec is powered down. Then the caller of
+regmap r/w will retry after properly turning on the codec power.
+
+This works in most cases, but there seems a slight race between the
+codec power check and the actual on-demand auto-resume trigger. This
+resulted in the lockdep splat, eventually leading to a real deadlock.
+
+This patch tries to address the race window by getting the runtime PM
+refcount at the check time using pm_runtime_get_if_in_use(). With
+this call, we can keep the power on only when the codec has been
+already turned on, and back off if not.
+
+For keeping the code consistency, the code touching the runtime PM is
+stored in hdac_device.c although it's used only locally in
+hdac_regmap.c.
+
+Reported-by: Jiri Slaby
+Cc:
+Signed-off-by: Takashi Iwai
+
+---
+ include/sound/hdaudio.h | 2 +
+ sound/hda/hdac_device.c | 16 +++++++++++
+ sound/hda/hdac_regmap.c | 69 ++++++++++++++++++++++++++++++++----------------
+ 3 files changed, 64 insertions(+), 23 deletions(-)
+
+--- a/include/sound/hdaudio.h
++++ b/include/sound/hdaudio.h
+@@ -168,11 +168,13 @@ int snd_hdac_power_up(struct hdac_device
+ int snd_hdac_power_down(struct hdac_device *codec);
+ int snd_hdac_power_up_pm(struct hdac_device *codec);
+ int snd_hdac_power_down_pm(struct hdac_device *codec);
++int snd_hdac_keep_power_up(struct hdac_device *codec);
+ #else
+ static inline int snd_hdac_power_up(struct hdac_device *codec) { return 0; }
+ static inline int snd_hdac_power_down(struct hdac_device *codec) { return 0; }
+ static inline int snd_hdac_power_up_pm(struct hdac_device *codec) { return 0; }
+ static inline int snd_hdac_power_down_pm(struct hdac_device *codec) { return 0; }
++static inline int snd_hdac_keep_power_up(struct hdac_device *codec) { return 0; }
+ #endif
+
+ /*
+--- a/sound/hda/hdac_device.c
++++ b/sound/hda/hdac_device.c
+@@ -611,6 +611,22 @@ int snd_hdac_power_up_pm(struct hdac_dev
+ }
+ EXPORT_SYMBOL_GPL(snd_hdac_power_up_pm);
+
++/* like snd_hdac_power_up_pm(), but only increment the pm count when
++ * already powered up. Returns -1 if not powered up, 1 if incremented
++ * or 0 if unchanged. Only used in hdac_regmap.c
++ */
++int snd_hdac_keep_power_up(struct hdac_device *codec)
++{
++ if (!atomic_inc_not_zero(&codec->in_pm)) {
++ int ret = pm_runtime_get_if_in_use(&codec->dev);
++ if (!ret)
++ return -1;
++ if (ret < 0)
++ return 0;
++ }
++ return 1;
++}
++
+ /**
+ * snd_hdac_power_down_pm - power down the codec
+ * @codec: the codec object
+--- a/sound/hda/hdac_regmap.c
++++ b/sound/hda/hdac_regmap.c
+@@ -21,13 +21,16 @@
+ #include
+ #include
+
+-#ifdef CONFIG_PM
+-#define codec_is_running(codec) \
+- (atomic_read(&(codec)->in_pm) || \
+- !pm_runtime_suspended(&(codec)->dev))
+-#else
+-#define codec_is_running(codec) true
+-#endif
++static int codec_pm_lock(struct hdac_device *codec)
++{
++ return snd_hdac_keep_power_up(codec);
++}
++
++static void codec_pm_unlock(struct hdac_device *codec, int lock)
++{
++ if (lock == 1)
++ snd_hdac_power_down_pm(codec);
++}
+
+ #define get_verb(reg) (((reg) >> 8) & 0xfff)
+
+@@ -238,20 +241,28 @@ static int hda_reg_read(void *context, u
+ struct hdac_device *codec = context;
+ int verb = get_verb(reg);
+ int err;
++ int pm_lock = 0;
+
+- if (!codec_is_running(codec) && verb != AC_VERB_GET_POWER_STATE)
+- return -EAGAIN;
++ if (verb != AC_VERB_GET_POWER_STATE) {
++ pm_lock = codec_pm_lock(codec);
++ if (pm_lock < 0)
++ return -EAGAIN;
++ }
+ reg |= (codec->addr << 28);
+- if (is_stereo_amp_verb(reg))
+- return hda_reg_read_stereo_amp(codec, reg, val);
+- if (verb == AC_VERB_GET_PROC_COEF)
+- return hda_reg_read_coef(codec, reg, val);
++ if (is_stereo_amp_verb(reg)) {
++ err = hda_reg_read_stereo_amp(codec, reg, val);
++ goto out;
++ }
++ if (verb == AC_VERB_GET_PROC_COEF) {
++ err = hda_reg_read_coef(codec, reg, val);
++ goto out;
++ }
+ if ((verb & 0x700) == AC_VERB_SET_AMP_GAIN_MUTE)
+ reg &= ~AC_AMP_FAKE_MUTE;
+
+ err = snd_hdac_exec_verb(codec, reg, 0, val);
+ if (err < 0)
+- return err;
++ goto out;
+ /* special handling for asymmetric reads */
+ if (verb == AC_VERB_GET_POWER_STATE) {
+ if (*val & AC_PWRST_ERROR)
+@@ -259,7 +270,9 @@ static int hda_reg_read(void *context, u
+ else /* take only the actual state */
+ *val = (*val >> 4) & 0x0f;
+ }
+- return 0;
++ out:
++ codec_pm_unlock(codec, pm_lock);
++ return err;
+ }
+
+ static int hda_reg_write(void *context, unsigned int reg, unsigned int val)
+@@ -267,6 +280,7 @@ static int hda_reg_write(void *context,
+ struct hdac_device *codec = context;
+ unsigned int verb;
+ int i, bytes, err;
++ int pm_lock = 0;
+
+ if (codec->caps_overwriting)
+ return 0;
+@@ -275,14 +289,21 @@ static int hda_reg_write(void *context,
+ reg |= (codec->addr << 28);
+ verb = get_verb(reg);
+
+- if (!codec_is_running(codec) && verb != AC_VERB_SET_POWER_STATE)
+- return codec->lazy_cache ? 0 : -EAGAIN;
++ if (verb != AC_VERB_SET_POWER_STATE) {
++ pm_lock = codec_pm_lock(codec);
++ if (pm_lock < 0)
++ return codec->lazy_cache ? 0 : -EAGAIN;
++ }
+
+- if (is_stereo_amp_verb(reg))
+- return hda_reg_write_stereo_amp(codec, reg, val);
++ if (is_stereo_amp_verb(reg)) {
++ err = hda_reg_write_stereo_amp(codec, reg, val);
++ goto out;
++ }
+
+- if (verb == AC_VERB_SET_PROC_COEF)
+- return hda_reg_write_coef(codec, reg, val);
++ if (verb == AC_VERB_SET_PROC_COEF) {
++ err = hda_reg_write_coef(codec, reg, val);
++ goto out;
++ }
+
+ switch (verb & 0xf00) {
+ case AC_VERB_SET_AMP_GAIN_MUTE:
+@@ -319,10 +340,12 @@ static int hda_reg_write(void *context,
+ reg |= (verb + i) << 8 | ((val >> (8 * i)) & 0xff);
+ err = snd_hdac_exec_verb(codec, reg, 0, NULL);
+ if (err < 0)
+- return err;
++ goto out;
+ }
+
+- return 0;
++ out:
++ codec_pm_unlock(codec, pm_lock);
++ return err;
+ }
+
+ static const struct regmap_config hda_regmap_cfg = {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.drivers/ALSA-hda-Limit-i915-HDMI-binding-only-for-HSW-and-la new/patches.drivers/ALSA-hda-Limit-i915-HDMI-binding-only-for-HSW-and-la
--- old/patches.drivers/ALSA-hda-Limit-i915-HDMI-binding-only-for-HSW-and-la 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.drivers/ALSA-hda-Limit-i915-HDMI-binding-only-for-HSW-and-la 2016-03-18 21:35:29.000000000 +0100
@@ -0,0 +1,43 @@
+From b62232d429fa8b1dcf5d8503aa5a5397a03e646a Mon Sep 17 00:00:00 2001
+From: Takashi Iwai
+Date: Tue, 15 Mar 2016 18:15:26 +0100
+Subject: [PATCH] ALSA: hda - Limit i915 HDMI binding only for HSW and later
+Patch-mainline: Queued in subsystem maintainer repository
+Git-commit: b62232d429fa8b1dcf5d8503aa5a5397a03e646a
+Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git
+References: boo#971737
+Mime-version: 1.0
+Content-type: text/plain; charset=UTF-8
+Content-transfer-encoding: 8bit
+
+It turned out that the pre-HSW Intel chips are incompatible with the
+naive assumption we had -- the fixed mapping between the port and the
+HD-audio widget. This may result in the bad access, as captured by
+the recent patch to add a WARN_ON() for the port mapping check.
+
+As a quick workaround, disable the i915 audio component binding for
+all pre-Haswell models.
+
+Reported-by: Ville Syrjälä
+Cc: # v4.5
+Signed-off-by: Takashi Iwai
+
+---
+ sound/pci/hda/patch_hdmi.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+--- a/sound/pci/hda/patch_hdmi.c
++++ b/sound/pci/hda/patch_hdmi.c
+@@ -2460,9 +2460,10 @@ static int patch_generic_hdmi(struct hda
+ codec->spec = spec;
+ hdmi_array_init(spec, 4);
+
+- /* Try to bind with i915 for any Intel codecs (if not done yet) */
++ /* Try to bind with i915 for Intel HSW+ codecs (if not done yet) */
+ if (!codec_has_acomp(codec) &&
+- (codec->core.vendor_id >> 16) == 0x8086)
++ (codec->core.vendor_id >> 16) == 0x8086 &&
++ is_haswell_plus(codec))
+ if (!snd_hdac_i915_init(&codec->bus->core))
+ spec->i915_bound = true;
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.drivers/ALSA-hda-Really-restrict-i915-notifier-to-HSW new/patches.drivers/ALSA-hda-Really-restrict-i915-notifier-to-HSW
--- old/patches.drivers/ALSA-hda-Really-restrict-i915-notifier-to-HSW 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.drivers/ALSA-hda-Really-restrict-i915-notifier-to-HSW 2016-03-18 21:35:29.000000000 +0100
@@ -0,0 +1,78 @@
+From 691be973c0621255abb31572a98e35c57be70212 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai
+Date: Fri, 18 Mar 2016 15:10:08 +0100
+Subject: [PATCH] ALSA: hda - Really restrict i915 notifier to HSW+
+Patch-mainline: Queued in subsystem maintainer repository
+Git-commit: 691be973c0621255abb31572a98e35c57be70212
+Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git
+References: boo#971737
+Mime-version: 1.0
+Content-type: text/plain; charset=UTF-8
+Content-transfer-encoding: 8bit
+
+The commit [b62232d429fa: ALSA: hda - Limit i915 HDMI binding only for
+HSW and later] tried to limit the usage of i915 audio notifier to the
+recent Intel models and switch to the old method on pre-Haswell
+models. However, it assumed that the i915 component binding hasn't
+been done on such models, and the assumption was wrong: namely,
+Baytrail had already the i915 component binding due to powerwell
+control. Thus, the workaround wasn't applied to Baytrail.
+
+For fixing this properly, this patch introduces a new flag indicating
+the usage of audio notifier and codec_has_acomp() refers to this flag
+instead of checking the existence of audio component.
+
+Reported-by: Ville Syrjälä
+Cc: # v4.5
+Signed-off-by: Takashi Iwai
+
+---
+ sound/pci/hda/patch_hdmi.c | 24 +++++++++++++++++-------
+ 1 file changed, 17 insertions(+), 7 deletions(-)
+
+--- a/sound/pci/hda/patch_hdmi.c
++++ b/sound/pci/hda/patch_hdmi.c
+@@ -152,13 +152,17 @@ struct hdmi_spec {
+ struct hda_pcm_stream pcm_playback;
+
+ /* i915/powerwell (Haswell+/Valleyview+) specific */
++ bool use_acomp_notifier; /* use i915 eld_notify callback for hotplug */
+ struct i915_audio_component_audio_ops i915_audio_ops;
+ bool i915_bound; /* was i915 bound in this driver? */
+ };
+
+ #ifdef CONFIG_SND_HDA_I915
+-#define codec_has_acomp(codec) \
+- ((codec)->bus->core.audio_component != NULL)
++static inline bool codec_has_acomp(struct hda_codec *codec)
++{
++ struct hdmi_spec *spec = codec->spec;
++ return spec->use_acomp_notifier;
++}
+ #else
+ #define codec_has_acomp(codec) false
+ #endif
+@@ -2460,12 +2464,18 @@ static int patch_generic_hdmi(struct hda
+ codec->spec = spec;
+ hdmi_array_init(spec, 4);
+
++#ifdef CONFIG_SND_HDA_I915
+ /* Try to bind with i915 for Intel HSW+ codecs (if not done yet) */
+- if (!codec_has_acomp(codec) &&
+- (codec->core.vendor_id >> 16) == 0x8086 &&
+- is_haswell_plus(codec))
+- if (!snd_hdac_i915_init(&codec->bus->core))
+- spec->i915_bound = true;
++ if ((codec->core.vendor_id >> 16) == 0x8086 &&
++ is_haswell_plus(codec)) {
++ if (!codec->bus->core.audio_component)
++ if (!snd_hdac_i915_init(&codec->bus->core))
++ spec->i915_bound = true;
++ /* use i915 audio component notifier for hotplug */
++ if (codec->bus->core.audio_component)
++ spec->use_acomp_notifier = true;
++ }
++#endif
+
+ if (is_haswell_plus(codec)) {
+ intel_haswell_enable_all_pins(codec, true);
++++++ patches.fixes.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/net-irda-Fix-use-after-free-in-irtty_open.patch new/patches.fixes/net-irda-Fix-use-after-free-in-irtty_open.patch
--- old/patches.fixes/net-irda-Fix-use-after-free-in-irtty_open.patch 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.fixes/net-irda-Fix-use-after-free-in-irtty_open.patch 2016-03-18 13:33:44.000000000 +0100
@@ -0,0 +1,69 @@
+From: Peter Hurley
+Date: Sat, 9 Jan 2016 17:48:45 -0800
+Subject: net: irda: Fix use-after-free in irtty_open()
+Patch-mainline: v4.6-rc1
+Git-commit: 401879c57f01cbf2da204ad2e8db910525c6dbea
+References: bnc#967903
+
+The N_IRDA line discipline may access the previous line discipline's closed
+and already-fre private data on open [1].
+
+The tty->disc_data field _never_ refers to valid data on entry to the
+line discipline's open() method. Rather, the ldisc is expected to
+initialize that field for its own use for the lifetime of the instance
+(ie. from open() to close() only).
+
+[1]
+ ==================================================================
+ BUG: KASAN: use-after-free in irtty_open+0x422/0x550 at addr ffff8800331dd068
+ Read of size 4 by task a.out/13960
+ =============================================================================
+ BUG kmalloc-512 (Tainted: G B ): kasan: bad access detected
+ -----------------------------------------------------------------------------
+ ...
+ Call Trace:
+ [<ffffffff815fa2ae>] __asan_report_load4_noabort+0x3e/0x40 mm/kasan/report.c:279
+ [<ffffffff836938a2>] irtty_open+0x422/0x550 drivers/net/irda/irtty-sir.c:436
+ [<ffffffff829f1b80>] tty_ldisc_open.isra.2+0x60/0xa0 drivers/tty/tty_ldisc.c:447
+ [<ffffffff829f21c0>] tty_set_ldisc+0x1a0/0x940 drivers/tty/tty_ldisc.c:567
+ [< inline >] tiocsetd drivers/tty/tty_io.c:2650
+ [<ffffffff829da49e>] tty_ioctl+0xace/0x1fd0 drivers/tty/tty_io.c:2883
+ [< inline >] vfs_ioctl fs/ioctl.c:43
+ [<ffffffff816708ac>] do_vfs_ioctl+0x57c/0xe60 fs/ioctl.c:607
+ [< inline >] SYSC_ioctl fs/ioctl.c:622
+ [<ffffffff81671204>] SyS_ioctl+0x74/0x80 fs/ioctl.c:613
+ [<ffffffff852a7876>] entry_SYSCALL_64_fastpath+0x16/0x7a
+
+Reported-and-tested-by: Dmitry Vyukov
+Cc:
+Signed-off-by: Peter Hurley
+Signed-off-by: Greg Kroah-Hartman
+Signed-off-by: Jiri Slaby
+---
+ drivers/net/irda/irtty-sir.c | 10 ----------
+ 1 file changed, 10 deletions(-)
+
+diff --git a/drivers/net/irda/irtty-sir.c b/drivers/net/irda/irtty-sir.c
+index 696852eb23c3..7a3f990c1935 100644
+--- a/drivers/net/irda/irtty-sir.c
++++ b/drivers/net/irda/irtty-sir.c
+@@ -430,16 +430,6 @@ static int irtty_open(struct tty_struct *tty)
+
+ /* Module stuff handled via irda_ldisc.owner - Jean II */
+
+- /* First make sure we're not already connected. */
+- if (tty->disc_data != NULL) {
+- priv = tty->disc_data;
+- if (priv && priv->magic == IRTTY_MAGIC) {
+- ret = -EEXIST;
+- goto out;
+- }
+- tty->disc_data = NULL; /* ### */
+- }
+-
+ /* stop the underlying driver */
+ irtty_stop_receiver(tty, TRUE);
+ if (tty->ops->stop)
+--
+2.7.4
+
++++++ series.conf ++++++
--- /var/tmp/diff_new_pack.IgI7NJ/_old 2016-03-29 09:54:59.000000000 +0200
+++ /var/tmp/diff_new_pack.IgI7NJ/_new 2016-03-29 09:54:59.000000000 +0200
@@ -220,6 +220,7 @@
########################################################
# Networking, IPv6
########################################################
+ patches.fixes/net-irda-Fix-use-after-free-in-irtty_open.patch
########################################################
# NFS
@@ -373,6 +374,12 @@
##########################################################
patches.drivers/ALSA-usb-audio-Fix-NULL-dereference-in-create_fixed
patches.drivers/ALSA-usb-audio-Add-sanity-checks-for-endpoint-access
+ patches.drivers/ALSA-hda-Fix-unexpected-resume-through-regmap-code-p
+ patches.drivers/ALSA-hda-Don-t-handle-ELD-notify-from-invalid-port
+ patches.drivers/ALSA-hda-Limit-i915-HDMI-binding-only-for-HSW-and-la
+ patches.drivers/ALSA-hda-Really-restrict-i915-notifier-to-HSW
+ patches.drivers/ALSA-hda-Fix-forgotten-HDMI-monitor_present-update
+ patches.drivers/ALSA-hda-Fix-spurious-kernel-WARNING-on-Baytrail-HDM
########################################################
# Char / serial
++++++ source-timestamp ++++++
--- /var/tmp/diff_new_pack.IgI7NJ/_old 2016-03-29 09:54:59.000000000 +0200
+++ /var/tmp/diff_new_pack.IgI7NJ/_new 2016-03-29 09:54:59.000000000 +0200
@@ -1,3 +1,3 @@
-2016-03-16 18:30:21 +0100
-GIT Revision: b2c9ae5b1d122fe7e8501364ef1b9943207731e1
+2016-03-24 13:22:16 +0100
+GIT Revision: ece3ff2ef508d3cde89ea615cf42ff7b43a86723
GIT Branch: stable