Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1553309 > unrolled thread
| Started by | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| First post | 2017-01-06 23:20 +0100 |
| Last post | 2017-01-07 17:00 +0100 |
| Articles | 10 — 3 participants |
Back to article view | Back to linux.kernel
[PATCH 4.4 00/58] 4.4.41-stable review Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-06 23:20 +0100
[PATCH 4.4 21/58] drm/radeon: add additional pci revision to dpm workaround Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-06 23:30 +0100
[PATCH 4.4 32/58] scsi: avoid a permanent stop of the scsi devices request queue Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-06 23:30 +0100
[PATCH 4.4 33/58] ARC: mm: arc700: Dont assume 2 colours for aliasing VIPT dcache Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-06 23:30 +0100
[PATCH 4.4 01/58] ssb: Fix error routine when fallback SPROM fails Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-06 23:30 +0100
[PATCH 4.4 31/58] scsi: zfcp: fix rport unblock race with LUN recovery Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-06 23:30 +0100
[PATCH 4.4 18/58] drm/nouveau/i2c/gk110b,gm10x: use the correct implementation Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-06 23:30 +0100
[PATCH 4.4 27/58] scsi: megaraid_sas: For SRIOV enabled firmware, ensure VF driver waits for 30secs before reset Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-06 23:30 +0100
Re: [PATCH 4.4 00/58] 4.4.41-stable review Shuah Khan <shuah.kh@samsung.com> - 2017-01-07 03:10 +0100
Re: [PATCH 4.4 00/58] 4.4.41-stable review Guenter Roeck <linux@roeck-us.net> - 2017-01-07 17:00 +0100
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Date | 2017-01-06 23:20 +0100 |
| Subject | [PATCH 4.4 00/58] 4.4.41-stable review |
| Message-ID | <sWKRX-8g7-3@gated-at.bofh.it> |
This is the start of the stable review cycle for the 4.4.41 release.
There are 58 patches in this series, all will be posted as a response
to this one. If anyone has any issues with these being applied, please
let me know.
Responses should be made by Sun Jan 8 21:38:49 UTC 2017.
Anything received after that time might be too late.
The whole patch series can be found in one patch at:
kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.4.41-rc1.gz
or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.4.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Linux 4.4.41-rc1
Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
net: mvpp2: fix dma unmapping of TX buffers for fragments
Al Viro <viro@zeniv.linux.org.uk>
sg_write()/bsg_write() is not fit to be called under KERNEL_DS
Ben Hutchings <ben.hutchings@codethink.co.uk>
kconfig/nconf: Fix hang when editing symbol with a long prompt
Andy Grover <agrover@redhat.com>
target/user: Fix use-after-free of tcmu_cmds if they are expired
Segher Boessenkool <segher@kernel.crashing.org>
powerpc: Convert cmp to cmpd in idle enter sequence
Geoff Levand <geoff@infradead.org>
powerpc/ps3: Fix system hang with GCC 5 builds
Al Viro <viro@zeniv.linux.org.uk>
nfs_write_end(): fix handling of short copies
Ilya Dryomov <idryomov@gmail.com>
libceph: verify authorize reply on connect
Alan Stern <stern@rowland.harvard.edu>
PCI: Check for PME in targeted sleep state
Jingkui Wang <jkwang@google.com>
Input: drv260x - fix input device's parent assignment
Andrey Utkin <andrey.utkin@corp.bluecherry.net>
media: solo6x10: fix lockup by avoiding delayed register write
Bart Van Assche <bart.vanassche@sandisk.com>
IB/cma: Fix a race condition in iboe_addr_get_sgid()
Bart Van Assche <bart.vanassche@sandisk.com>
IB/multicast: Check ib_find_pkey() return value
Bart Van Assche <bart.vanassche@sandisk.com>
IPoIB: Avoid reading an uninitialized member variable
Bart Van Assche <bart.vanassche@sandisk.com>
IB/mad: Fix an array index check
Steven Rostedt (Red Hat) <rostedt@goodmis.org>
fgraph: Handle a case where a tracer ignores set_graph_notrace
Marcos Paulo de Souza <marcos.souza.org@gmail.com>
platform/x86: asus-nb-wmi.c: Add X45U quirk
Steven Rostedt (Red Hat) <rostedt@goodmis.org>
ftrace/x86_32: Set ftrace_stub to weak to prevent gcc from using short jumps to it
Jim Mattson <jmattson@google.com>
kvm: nVMX: Allow L1 to intercept software exceptions (#BP and #OF)
Paul Mackerras <paulus@ozlabs.org>
KVM: PPC: Book3S HV: Don't lose hardware R/C bit updates in H_PROTECT
Paul Mackerras <paulus@ozlabs.org>
KVM: PPC: Book3S HV: Save/restore XER in checkpointed register state
Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
md/raid5: limit request size according to implementation limits
Josh Cartwright <joshc@ni.com>
sc16is7xx: Drop bogus use of IRQF_ONESHOT
Gerald Schaefer <gerald.schaefer@de.ibm.com>
s390/vmlogrdr: fix IUCV buffer allocation
Yves-Alexis Perez <corsac@corsac.net>
firmware: fix usermode helper fallback loading
Vineet Gupta <vgupta@synopsys.com>
ARC: mm: arc700: Don't assume 2 colours for aliasing VIPT dcache
Wei Fang <fangwei1@huawei.com>
scsi: avoid a permanent stop of the scsi device's request queue
Steffen Maier <maier@linux.vnet.ibm.com>
scsi: zfcp: fix rport unblock race with LUN recovery
Steffen Maier <maier@linux.vnet.ibm.com>
scsi: zfcp: do not trace pure benign residual HBA responses at default level
Benjamin Block <bblock@linux.vnet.ibm.com>
scsi: zfcp: fix use-after-"free" in FC ingress path after TMF
Kashyap Desai <kashyap.desai@broadcom.com>
scsi: megaraid_sas: Do not set MPI2_TYPE_CUDA for JBOD FP path for FW which does not support JBOD sequence map
Kashyap Desai <kashyap.desai@broadcom.com>
scsi: megaraid_sas: For SRIOV enabled firmware, ensure VF driver waits for 30secs before reset
Maciej S. Szmigiero <mail@maciej.szmigiero.name>
vt: fix Scroll Lock LED trigger name
Rabin Vincent <rabinv@axis.com>
block: protect iterate_bdevs() against concurrent close
Alexander Usyskin <alexander.usyskin@intel.com>
mei: request async autosuspend at the end of enumeration
Russell Currey <ruscur@russell.cc>
drivers/gpu/drm/ast: Fix infinite loop if read fails
Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
drm/gma500: Add compat ioctl
Alex Deucher <alexander.deucher@amd.com>
drm/radeon: add additional pci revision to dpm workaround
Michel Dänzer <michel.daenzer@amd.com>
drm/radeon: Hide the HW cursor while it's out of bounds
Michel Dänzer <michel.daenzer@amd.com>
drm/radeon: Also call cursor_move_locked when the cursor size changes
Ben Skeggs <bskeggs@redhat.com>
drm/nouveau/i2c/gk110b,gm10x: use the correct implementation
Ben Skeggs <bskeggs@redhat.com>
drm/nouveau/fifo/gf100-: protect channel preempt with subdev mutex
Ben Skeggs <bskeggs@redhat.com>
drm/nouveau/ltc: protect clearing of comptags with mutex
Ben Skeggs <bskeggs@redhat.com>
drm/nouveau/bios: require checksum to match for fast acpi shadow method
Ben Skeggs <bskeggs@redhat.com>
drm/nouveau/kms: lvds panel strap moved again on maxwell
Hans de Goede <hdegoede@redhat.com>
ACPI / video: Add force_native quirk for HP Pavilion dv6
Hans de Goede <hdegoede@redhat.com>
ACPI / video: Add force_native quirk for Dell XPS 17 L702X
Ian Abbott <abbotti@mev.co.uk>
staging: comedi: ni_mio_common: fix E series ni_ai_insn_read() data
Ian Abbott <abbotti@mev.co.uk>
staging: comedi: ni_mio_common: fix M Series ni_ai_insn_read() data mask
Krzysztof Kozlowski <krzk@kernel.org>
thermal: hwmon: Properly report critical temperature in sysfs
Boris Brezillon <boris.brezillon@free-electrons.com>
clk: bcm2835: Avoid overwriting the div info when disabling a pll_div clk
Thomas Gleixner <tglx@linutronix.de>
timekeeping_Force_unsigned_clocksource_to_nanoseconds_conversion
Linus Walleij <linus.walleij@linaro.org>
regulator: stw481x-vmmc: fix ages old enable error
Adrian Hunter <adrian.hunter@intel.com>
mmc: sdhci: Fix recovery from tuning timeout
Vittorio Gambaletta (VittGam) <linux-wireless@vittgam.net>
ath9k: Really fix LED polarity for some Mini PCI AR9220 MB92 cards.
Johannes Berg <johannes.berg@intel.com>
cfg80211/mac80211: fix BSS leaks when abandoning assoc attempts
Larry Finger <Larry.Finger@lwfinger.net>
rtlwifi: Fix enter/exit power_save
Larry Finger <Larry.Finger@lwfinger.net>
ssb: Fix error routine when fallback SPROM fails
-------------
Diffstat:
Documentation/virtual/kvm/api.txt | 1 +
Makefile | 4 +-
arch/arc/include/asm/cacheflush.h | 6 +-
arch/arc/mm/cache.c | 13 ++--
arch/powerpc/boot/ps3-head.S | 5 --
arch/powerpc/boot/ps3.c | 8 +--
arch/powerpc/include/asm/kvm_host.h | 1 +
arch/powerpc/include/uapi/asm/kvm.h | 1 +
arch/powerpc/kernel/asm-offsets.c | 1 +
arch/powerpc/kernel/idle_power7.S | 2 +-
arch/powerpc/kvm/book3s_hv.c | 6 ++
arch/powerpc/kvm/book3s_hv_rm_mmu.c | 2 +
arch/powerpc/kvm/book3s_hv_rmhandlers.S | 4 ++
arch/x86/entry/entry_32.S | 4 +-
arch/x86/kvm/vmx.c | 11 ++--
block/bsg.c | 3 +
drivers/acpi/video_detect.c | 20 +++++++
drivers/base/firmware_class.c | 7 ++-
drivers/clk/bcm/clk-bcm2835.c | 4 +-
drivers/gpu/drm/ast/ast_main.c | 7 ++-
drivers/gpu/drm/gma500/psb_drv.c | 3 +
drivers/gpu/drm/nouveau/nouveau_bios.c | 3 +
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c | 4 +-
.../gpu/drm/nouveau/nvkm/engine/fifo/gpfifogf100.c | 9 ++-
.../gpu/drm/nouveau/nvkm/engine/fifo/gpfifogk104.c | 8 ++-
drivers/gpu/drm/nouveau/nvkm/subdev/bios/priv.h | 1 +
drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadow.c | 7 ++-
.../gpu/drm/nouveau/nvkm/subdev/bios/shadowacpi.c | 1 +
drivers/gpu/drm/nouveau/nvkm/subdev/ltc/base.c | 2 +
drivers/gpu/drm/radeon/radeon_cursor.c | 69 +++++++++++++++-------
drivers/gpu/drm/radeon/radeon_mode.h | 1 +
drivers/gpu/drm/radeon/si_dpm.c | 1 +
drivers/infiniband/core/mad.c | 2 +-
drivers/infiniband/core/multicast.c | 7 ++-
drivers/infiniband/ulp/ipoib/ipoib_multicast.c | 7 ++-
drivers/input/misc/drv260x.c | 1 -
drivers/md/raid5.c | 9 +++
drivers/media/pci/solo6x10/solo6x10.h | 3 +
drivers/misc/mei/client.c | 2 +-
drivers/mmc/host/sdhci.c | 20 +++++++
drivers/net/ethernet/marvell/mvpp2.c | 59 +++++++++---------
drivers/net/wireless/ath/ath9k/pci.c | 7 ++-
drivers/net/wireless/realtek/rtlwifi/base.c | 8 +--
drivers/net/wireless/realtek/rtlwifi/core.c | 9 +--
drivers/net/wireless/realtek/rtlwifi/pci.c | 14 ++---
drivers/net/wireless/realtek/rtlwifi/ps.c | 36 ++++++++---
drivers/pci/pci.c | 4 ++
drivers/platform/x86/asus-nb-wmi.c | 9 +++
drivers/regulator/stw481x-vmmc.c | 3 +-
drivers/s390/char/vmlogrdr.c | 2 +-
drivers/s390/scsi/zfcp_dbf.c | 17 +++++-
drivers/s390/scsi/zfcp_dbf.h | 41 ++++++++++++-
drivers/s390/scsi/zfcp_erp.c | 61 ++++++++++++++++++-
drivers/s390/scsi/zfcp_ext.h | 4 +-
drivers/s390/scsi/zfcp_fsf.h | 3 +-
drivers/s390/scsi/zfcp_reqlist.h | 30 +++++++++-
drivers/s390/scsi/zfcp_scsi.c | 61 +++++++++++++++++--
drivers/scsi/megaraid/megaraid_sas_fusion.c | 9 +--
drivers/scsi/scsi_sysfs.c | 4 --
drivers/scsi/sg.c | 3 +
drivers/ssb/pci.c | 1 +
drivers/staging/comedi/drivers/ni_mio_common.c | 8 +--
drivers/target/target_core_user.c | 2 -
drivers/thermal/thermal_hwmon.c | 2 +-
drivers/tty/serial/sc16is7xx.c | 2 +-
drivers/tty/vt/keyboard.c | 2 +-
fs/block_dev.c | 7 ++-
fs/nfs/file.c | 2 +-
include/net/cfg80211.h | 11 ++++
include/rdma/ib_addr.h | 6 +-
kernel/time/timekeeping.c | 4 +-
kernel/trace/trace_functions_graph.c | 17 +++++-
net/ceph/messenger.c | 13 ++++
net/mac80211/mlme.c | 21 ++++---
net/wireless/core.h | 1 +
net/wireless/mlme.c | 12 ++++
net/wireless/sme.c | 14 +++++
scripts/kconfig/nconf.gui.c | 15 +++--
78 files changed, 606 insertions(+), 188 deletions(-)
[toc] | [next] | [standalone]
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Date | 2017-01-06 23:30 +0100 |
| Subject | [PATCH 4.4 21/58] drm/radeon: add additional pci revision to dpm workaround |
| Message-ID | <sWLbk-8oT-1@gated-at.bofh.it> |
| In reply to | #1553309 |
4.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Alex Deucher <alexander.deucher@amd.com>
commit 8729675c00a8d13cb2094d617d70a4a4da7d83c5 upstream.
New variant.
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/gpu/drm/radeon/si_dpm.c | 1 +
1 file changed, 1 insertion(+)
--- a/drivers/gpu/drm/radeon/si_dpm.c
+++ b/drivers/gpu/drm/radeon/si_dpm.c
@@ -3026,6 +3026,7 @@ static void si_apply_state_adjust_rules(
(rdev->pdev->revision == 0x80) ||
(rdev->pdev->revision == 0x81) ||
(rdev->pdev->revision == 0x83) ||
+ (rdev->pdev->revision == 0x87) ||
(rdev->pdev->device == 0x6604) ||
(rdev->pdev->device == 0x6605)) {
max_sclk = 75000;
[toc] | [prev] | [next] | [standalone]
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Date | 2017-01-06 23:30 +0100 |
| Subject | [PATCH 4.4 32/58] scsi: avoid a permanent stop of the scsi devices request queue |
| Message-ID | <sWLbk-8oT-11@gated-at.bofh.it> |
| In reply to | #1553309 |
4.4-stable review patch. If anyone has any objections, please let me know. ------------------ From: Wei Fang <fangwei1@huawei.com> commit d2a145252c52792bc59e4767b486b26c430af4bb upstream. A race between scanning and fc_remote_port_delete() may result in a permanent stop if the device gets blocked before scsi_sysfs_add_sdev() and unblocked after. The reason is that blocking a device sets both the SDEV_BLOCKED state and the QUEUE_FLAG_STOPPED. However, scsi_sysfs_add_sdev() unconditionally sets SDEV_RUNNING which causes the device to be ignored by scsi_target_unblock() and thus never have its QUEUE_FLAG_STOPPED cleared leading to a device which is apparently running but has a stopped queue. We actually have two places where SDEV_RUNNING is set: once in scsi_add_lun() which respects the blocked flag and once in scsi_sysfs_add_sdev() which doesn't. Since the second set is entirely spurious, simply remove it to fix the problem. Reported-by: Zengxi Chen <chenzengxi@huawei.com> Signed-off-by: Wei Fang <fangwei1@huawei.com> Reviewed-by: Ewan D. Milne <emilne@redhat.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> --- drivers/scsi/scsi_sysfs.c | 4 ---- 1 file changed, 4 deletions(-) --- a/drivers/scsi/scsi_sysfs.c +++ b/drivers/scsi/scsi_sysfs.c @@ -1031,10 +1031,6 @@ int scsi_sysfs_add_sdev(struct scsi_devi struct request_queue *rq = sdev->request_queue; struct scsi_target *starget = sdev->sdev_target; - error = scsi_device_set_state(sdev, SDEV_RUNNING); - if (error) - return error; - error = scsi_target_add(starget); if (error) return error;
[toc] | [prev] | [next] | [standalone]
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Date | 2017-01-06 23:30 +0100 |
| Subject | [PATCH 4.4 33/58] ARC: mm: arc700: Dont assume 2 colours for aliasing VIPT dcache |
| Message-ID | <sWLbl-8oT-23@gated-at.bofh.it> |
| In reply to | #1553309 |
4.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Vineet Gupta <vgupta@synopsys.com>
commit 08fe007968b2b45e831daf74899f79a54d73f773 upstream.
An ARC700 customer reported linux boot crashes when upgrading to bigger
L1 dcache (64K from 32K). Turns out they had an aliasing VIPT config and
current code only assumed 2 colours, while theirs had 4. So default to 4
colours and complain if there are fewer. Ideally this needs to be a
Kconfig option, but heck that's too much of hassle for a single user.
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
arch/arc/include/asm/cacheflush.h | 6 ++++--
arch/arc/mm/cache.c | 11 ++++++++---
2 files changed, 12 insertions(+), 5 deletions(-)
--- a/arch/arc/include/asm/cacheflush.h
+++ b/arch/arc/include/asm/cacheflush.h
@@ -85,6 +85,10 @@ void flush_anon_page(struct vm_area_stru
*/
#define PG_dc_clean PG_arch_1
+#define CACHE_COLORS_NUM 4
+#define CACHE_COLORS_MSK (CACHE_COLORS_NUM - 1)
+#define CACHE_COLOR(addr) (((unsigned long)(addr) >> (PAGE_SHIFT)) & CACHE_COLORS_MSK)
+
/*
* Simple wrapper over config option
* Bootup code ensures that hardware matches kernel configuration
@@ -94,8 +98,6 @@ static inline int cache_is_vipt_aliasing
return IS_ENABLED(CONFIG_ARC_CACHE_VIPT_ALIASING);
}
-#define CACHE_COLOR(addr) (((unsigned long)(addr) >> (PAGE_SHIFT)) & 1)
-
/*
* checks if two addresses (after page aligning) index into same cache set
*/
--- a/arch/arc/mm/cache.c
+++ b/arch/arc/mm/cache.c
@@ -960,11 +960,16 @@ void arc_cache_init(void)
/* check for D-Cache aliasing on ARCompact: ARCv2 has PIPT */
if (is_isa_arcompact()) {
int handled = IS_ENABLED(CONFIG_ARC_CACHE_VIPT_ALIASING);
+ int num_colors = dc->sz_k/dc->assoc/TO_KB(PAGE_SIZE);
- if (dc->alias && !handled)
- panic("Enable CONFIG_ARC_CACHE_VIPT_ALIASING\n");
- else if (!dc->alias && handled)
+ if (dc->alias) {
+ if (!handled)
+ panic("Enable CONFIG_ARC_CACHE_VIPT_ALIASING\n");
+ if (CACHE_COLORS_NUM != num_colors)
+ panic("CACHE_COLORS_NUM not optimized for config\n");
+ } else if (!dc->alias && handled) {
panic("Disable CONFIG_ARC_CACHE_VIPT_ALIASING\n");
+ }
}
}
[toc] | [prev] | [next] | [standalone]
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Date | 2017-01-06 23:30 +0100 |
| Subject | [PATCH 4.4 01/58] ssb: Fix error routine when fallback SPROM fails |
| Message-ID | <sWLbl-8oT-57@gated-at.bofh.it> |
| In reply to | #1553309 |
4.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Larry Finger <Larry.Finger@lwfinger.net>
commit 8052d7245b6089992343c80b38b14dbbd8354651 upstream.
When there is a CRC error in the SPROM read from the device, the code
attempts to handle a fallback SPROM. When this also fails, the driver
returns zero rather than an error code.
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/ssb/pci.c | 1 +
1 file changed, 1 insertion(+)
--- a/drivers/ssb/pci.c
+++ b/drivers/ssb/pci.c
@@ -909,6 +909,7 @@ static int ssb_pci_sprom_get(struct ssb_
if (err) {
ssb_warn("WARNING: Using fallback SPROM failed (err %d)\n",
err);
+ goto out_free;
} else {
ssb_dbg("Using SPROM revision %d provided by platform\n",
sprom->revision);
[toc] | [prev] | [next] | [standalone]
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Date | 2017-01-06 23:30 +0100 |
| Subject | [PATCH 4.4 31/58] scsi: zfcp: fix rport unblock race with LUN recovery |
| Message-ID | <sWLbl-8oT-41@gated-at.bofh.it> |
| In reply to | #1553309 |
4.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Steffen Maier <maier@linux.vnet.ibm.com>
commit 6f2ce1c6af37191640ee3ff6e8fc39ea10352f4c upstream.
It is unavoidable that zfcp_scsi_queuecommand() has to finish requests
with DID_IMM_RETRY (like fc_remote_port_chkready()) during the time
window when zfcp detected an unavailable rport but
fc_remote_port_delete(), which is asynchronous via
zfcp_scsi_schedule_rport_block(), has not yet blocked the rport.
However, for the case when the rport becomes available again, we should
prevent unblocking the rport too early. In contrast to other FCP LLDDs,
zfcp has to open each LUN with the FCP channel hardware before it can
send I/O to a LUN. So if a port already has LUNs attached and we
unblock the rport just after port recovery, recoveries of LUNs behind
this port can still be pending which in turn force
zfcp_scsi_queuecommand() to unnecessarily finish requests with
DID_IMM_RETRY.
This also opens a time window with unblocked rport (until the followup
LUN reopen recovery has finished). If a scsi_cmnd timeout occurs during
this time window fc_timed_out() cannot work as desired and such command
would indeed time out and trigger scsi_eh. This prevents a clean and
timely path failover. This should not happen if the path issue can be
recovered on FC transport layer such as path issues involving RSCNs.
Fix this by only calling zfcp_scsi_schedule_rport_register(), to
asynchronously trigger fc_remote_port_add(), after all LUN recoveries as
children of the rport have finished and no new recoveries of equal or
higher order were triggered meanwhile. Finished intentionally includes
any recovery result no matter if successful or failed (still unblock
rport so other successful LUNs work). For simplicity, we check after
each finished LUN recovery if there is another LUN recovery pending on
the same port and then do nothing. We handle the special case of a
successful recovery of a port without LUN children the same way without
changing this case's semantics.
For debugging we introduce 2 new trace records written if the rport
unblock attempt was aborted due to still unfinished or freshly triggered
recovery. The records are only written above the default trace level.
Benjamin noticed the important special case of new recovery that can be
triggered between having given up the erp_lock and before calling
zfcp_erp_action_cleanup() within zfcp_erp_strategy(). We must avoid the
following sequence:
ERP thread rport_work other context
------------------------- -------------- --------------------------------
port is unblocked, rport still blocked,
due to pending/running ERP action,
so ((port->status & ...UNBLOCK) != 0)
and (port->rport == NULL)
unlock ERP
zfcp_erp_action_cleanup()
case ZFCP_ERP_ACTION_REOPEN_LUN:
zfcp_erp_try_rport_unblock()
((status & ...UNBLOCK) != 0) [OLD!]
zfcp_erp_port_reopen()
lock ERP
zfcp_erp_port_block()
port->status clear ...UNBLOCK
unlock ERP
zfcp_scsi_schedule_rport_block()
port->rport_task = RPORT_DEL
queue_work(rport_work)
zfcp_scsi_rport_work()
(port->rport_task != RPORT_ADD)
port->rport_task = RPORT_NONE
zfcp_scsi_rport_block()
if (!port->rport) return
zfcp_scsi_schedule_rport_register()
port->rport_task = RPORT_ADD
queue_work(rport_work)
zfcp_scsi_rport_work()
(port->rport_task == RPORT_ADD)
port->rport_task = RPORT_NONE
zfcp_scsi_rport_register()
(port->rport == NULL)
rport = fc_remote_port_add()
port->rport = rport;
Now the rport was erroneously unblocked while the zfcp_port is blocked.
This is another situation we want to avoid due to scsi_eh
potential. This state would at least remain until the new recovery from
the other context finished successfully, or potentially forever if it
failed. In order to close this race, we take the erp_lock inside
zfcp_erp_try_rport_unblock() when checking the status of zfcp_port or
LUN. With that, the possible corresponding rport state sequences would
be: (unblock[ERP thread],block[other context]) if the ERP thread gets
erp_lock first and still sees ((port->status & ...UNBLOCK) != 0),
(block[other context],NOP[ERP thread]) if the ERP thread gets erp_lock
after the other context has already cleard ...UNBLOCK from port->status.
Since checking fields of struct erp_action is unsafe because they could
have been overwritten (re-used for new recovery) meanwhile, we only
check status of zfcp_port and LUN since these are only changed under
erp_lock elsewhere. Regarding the check of the proper status flags (port
or port_forced are similar to the shown adapter recovery):
[zfcp_erp_adapter_shutdown()]
zfcp_erp_adapter_reopen()
zfcp_erp_adapter_block()
* clear UNBLOCK ---------------------------------------+
zfcp_scsi_schedule_rports_block() |
write_lock_irqsave(&adapter->erp_lock, flags);-------+ |
zfcp_erp_action_enqueue() | |
zfcp_erp_setup_act() | |
* set ERP_INUSE -----------------------------------|--|--+
write_unlock_irqrestore(&adapter->erp_lock, flags);--+ | |
.context-switch. | |
zfcp_erp_thread() | |
zfcp_erp_strategy() | |
write_lock_irqsave(&adapter->erp_lock, flags);------+ | |
... | | |
zfcp_erp_strategy_check_target() | | |
zfcp_erp_strategy_check_adapter() | | |
zfcp_erp_adapter_unblock() | | |
* set UNBLOCK -----------------------------------|--+ |
zfcp_erp_action_dequeue() | |
* clear ERP_INUSE ---------------------------------|-----+
... |
write_unlock_irqrestore(&adapter->erp_lock, flags);-+
Hence, we should check for both UNBLOCK and ERP_INUSE because they are
interleaved. Also we need to explicitly check ERP_FAILED for the link
down case which currently does not clear the UNBLOCK flag in
zfcp_fsf_link_down_info_eval().
Signed-off-by: Steffen Maier <maier@linux.vnet.ibm.com>
Fixes: 8830271c4819 ("[SCSI] zfcp: Dont fail SCSI commands when transitioning to blocked fc_rport")
Fixes: a2fa0aede07c ("[SCSI] zfcp: Block FC transport rports early on errors")
Fixes: 5f852be9e11d ("[SCSI] zfcp: Fix deadlock between zfcp ERP and SCSI")
Fixes: 338151e06608 ("[SCSI] zfcp: make use of fc_remote_port_delete when target port is unavailable")
Fixes: 3859f6a248cb ("[PATCH] zfcp: add rports to enable scsi_add_device to work again")
Reviewed-by: Benjamin Block <bblock@linux.vnet.ibm.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/s390/scsi/zfcp_dbf.c | 17 +++++++++--
drivers/s390/scsi/zfcp_erp.c | 61 ++++++++++++++++++++++++++++++++++++++++--
drivers/s390/scsi/zfcp_ext.h | 4 ++
drivers/s390/scsi/zfcp_scsi.c | 4 --
4 files changed, 77 insertions(+), 9 deletions(-)
--- a/drivers/s390/scsi/zfcp_dbf.c
+++ b/drivers/s390/scsi/zfcp_dbf.c
@@ -289,11 +289,12 @@ void zfcp_dbf_rec_trig(char *tag, struct
/**
- * zfcp_dbf_rec_run - trace event related to running recovery
+ * zfcp_dbf_rec_run_lvl - trace event related to running recovery
+ * @level: trace level to be used for event
* @tag: identifier for event
* @erp: erp_action running
*/
-void zfcp_dbf_rec_run(char *tag, struct zfcp_erp_action *erp)
+void zfcp_dbf_rec_run_lvl(int level, char *tag, struct zfcp_erp_action *erp)
{
struct zfcp_dbf *dbf = erp->adapter->dbf;
struct zfcp_dbf_rec *rec = &dbf->rec_buf;
@@ -319,11 +320,21 @@ void zfcp_dbf_rec_run(char *tag, struct
else
rec->u.run.rec_count = atomic_read(&erp->adapter->erp_counter);
- debug_event(dbf->rec, 1, rec, sizeof(*rec));
+ debug_event(dbf->rec, level, rec, sizeof(*rec));
spin_unlock_irqrestore(&dbf->rec_lock, flags);
}
/**
+ * zfcp_dbf_rec_run - trace event related to running recovery
+ * @tag: identifier for event
+ * @erp: erp_action running
+ */
+void zfcp_dbf_rec_run(char *tag, struct zfcp_erp_action *erp)
+{
+ zfcp_dbf_rec_run_lvl(1, tag, erp);
+}
+
+/**
* zfcp_dbf_rec_run_wka - trace wka port event with info like running recovery
* @tag: identifier for event
* @wka_port: well known address port
--- a/drivers/s390/scsi/zfcp_erp.c
+++ b/drivers/s390/scsi/zfcp_erp.c
@@ -3,7 +3,7 @@
*
* Error Recovery Procedures (ERP).
*
- * Copyright IBM Corp. 2002, 2015
+ * Copyright IBM Corp. 2002, 2016
*/
#define KMSG_COMPONENT "zfcp"
@@ -1204,6 +1204,62 @@ static void zfcp_erp_action_dequeue(stru
}
}
+/**
+ * zfcp_erp_try_rport_unblock - unblock rport if no more/new recovery
+ * @port: zfcp_port whose fc_rport we should try to unblock
+ */
+static void zfcp_erp_try_rport_unblock(struct zfcp_port *port)
+{
+ unsigned long flags;
+ struct zfcp_adapter *adapter = port->adapter;
+ int port_status;
+ struct Scsi_Host *shost = adapter->scsi_host;
+ struct scsi_device *sdev;
+
+ write_lock_irqsave(&adapter->erp_lock, flags);
+ port_status = atomic_read(&port->status);
+ if ((port_status & ZFCP_STATUS_COMMON_UNBLOCKED) == 0 ||
+ (port_status & (ZFCP_STATUS_COMMON_ERP_INUSE |
+ ZFCP_STATUS_COMMON_ERP_FAILED)) != 0) {
+ /* new ERP of severity >= port triggered elsewhere meanwhile or
+ * local link down (adapter erp_failed but not clear unblock)
+ */
+ zfcp_dbf_rec_run_lvl(4, "ertru_p", &port->erp_action);
+ write_unlock_irqrestore(&adapter->erp_lock, flags);
+ return;
+ }
+ spin_lock(shost->host_lock);
+ __shost_for_each_device(sdev, shost) {
+ struct zfcp_scsi_dev *zsdev = sdev_to_zfcp(sdev);
+ int lun_status;
+
+ if (zsdev->port != port)
+ continue;
+ /* LUN under port of interest */
+ lun_status = atomic_read(&zsdev->status);
+ if ((lun_status & ZFCP_STATUS_COMMON_ERP_FAILED) != 0)
+ continue; /* unblock rport despite failed LUNs */
+ /* LUN recovery not given up yet [maybe follow-up pending] */
+ if ((lun_status & ZFCP_STATUS_COMMON_UNBLOCKED) == 0 ||
+ (lun_status & ZFCP_STATUS_COMMON_ERP_INUSE) != 0) {
+ /* LUN blocked:
+ * not yet unblocked [LUN recovery pending]
+ * or meanwhile blocked [new LUN recovery triggered]
+ */
+ zfcp_dbf_rec_run_lvl(4, "ertru_l", &zsdev->erp_action);
+ spin_unlock(shost->host_lock);
+ write_unlock_irqrestore(&adapter->erp_lock, flags);
+ return;
+ }
+ }
+ /* now port has no child or all children have completed recovery,
+ * and no ERP of severity >= port was meanwhile triggered elsewhere
+ */
+ zfcp_scsi_schedule_rport_register(port);
+ spin_unlock(shost->host_lock);
+ write_unlock_irqrestore(&adapter->erp_lock, flags);
+}
+
static void zfcp_erp_action_cleanup(struct zfcp_erp_action *act, int result)
{
struct zfcp_adapter *adapter = act->adapter;
@@ -1214,6 +1270,7 @@ static void zfcp_erp_action_cleanup(stru
case ZFCP_ERP_ACTION_REOPEN_LUN:
if (!(act->status & ZFCP_STATUS_ERP_NO_REF))
scsi_device_put(sdev);
+ zfcp_erp_try_rport_unblock(port);
break;
case ZFCP_ERP_ACTION_REOPEN_PORT:
@@ -1224,7 +1281,7 @@ static void zfcp_erp_action_cleanup(stru
*/
if (act->step != ZFCP_ERP_STEP_UNINITIALIZED)
if (result == ZFCP_ERP_SUCCEEDED)
- zfcp_scsi_schedule_rport_register(port);
+ zfcp_erp_try_rport_unblock(port);
/* fall through */
case ZFCP_ERP_ACTION_REOPEN_PORT_FORCED:
put_device(&port->dev);
--- a/drivers/s390/scsi/zfcp_ext.h
+++ b/drivers/s390/scsi/zfcp_ext.h
@@ -3,7 +3,7 @@
*
* External function declarations.
*
- * Copyright IBM Corp. 2002, 2015
+ * Copyright IBM Corp. 2002, 2016
*/
#ifndef ZFCP_EXT_H
@@ -35,6 +35,8 @@ extern void zfcp_dbf_adapter_unregister(
extern void zfcp_dbf_rec_trig(char *, struct zfcp_adapter *,
struct zfcp_port *, struct scsi_device *, u8, u8);
extern void zfcp_dbf_rec_run(char *, struct zfcp_erp_action *);
+extern void zfcp_dbf_rec_run_lvl(int level, char *tag,
+ struct zfcp_erp_action *erp);
extern void zfcp_dbf_rec_run_wka(char *, struct zfcp_fc_wka_port *, u64);
extern void zfcp_dbf_hba_fsf_uss(char *, struct zfcp_fsf_req *);
extern void zfcp_dbf_hba_fsf_res(char *, int, struct zfcp_fsf_req *);
--- a/drivers/s390/scsi/zfcp_scsi.c
+++ b/drivers/s390/scsi/zfcp_scsi.c
@@ -88,9 +88,7 @@ int zfcp_scsi_queuecommand(struct Scsi_H
}
if (unlikely(!(status & ZFCP_STATUS_COMMON_UNBLOCKED))) {
- /* This could be either
- * open LUN pending: this is temporary, will result in
- * open LUN or ERP_FAILED, so retry command
+ /* This could be
* call to rport_delete pending: mimic retry from
* fc_remote_port_chkready until rport is BLOCKED
*/
[toc] | [prev] | [next] | [standalone]
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Date | 2017-01-06 23:30 +0100 |
| Subject | [PATCH 4.4 18/58] drm/nouveau/i2c/gk110b,gm10x: use the correct implementation |
| Message-ID | <sWLbl-8oT-51@gated-at.bofh.it> |
| In reply to | #1553309 |
4.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ben Skeggs <bskeggs@redhat.com>
commit 5b3800a6b763874e4a23702fb9628d3bd3315ce9 upstream.
DPAUX registers moved on Kepler, these chipsets were still using the
Fermi implementation for some reason.
This fixes detection of hotplug/sink IRQs on DP connectors.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
--- a/drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
@@ -1833,7 +1833,7 @@ nvf1_chipset = {
.fb = gk104_fb_new,
.fuse = gf100_fuse_new,
.gpio = gk104_gpio_new,
- .i2c = gf119_i2c_new,
+ .i2c = gk104_i2c_new,
.ibus = gk104_ibus_new,
.imem = nv50_instmem_new,
.ltc = gk104_ltc_new,
@@ -1941,7 +1941,7 @@ nv117_chipset = {
.fb = gm107_fb_new,
.fuse = gm107_fuse_new,
.gpio = gk104_gpio_new,
- .i2c = gf119_i2c_new,
+ .i2c = gk104_i2c_new,
.ibus = gk104_ibus_new,
.imem = nv50_instmem_new,
.ltc = gm107_ltc_new,
[toc] | [prev] | [next] | [standalone]
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Date | 2017-01-06 23:30 +0100 |
| Subject | [PATCH 4.4 27/58] scsi: megaraid_sas: For SRIOV enabled firmware, ensure VF driver waits for 30secs before reset |
| Message-ID | <sWLbm-8oT-69@gated-at.bofh.it> |
| In reply to | #1553309 |
4.4-stable review patch. If anyone has any objections, please let me know. ------------------ From: Kashyap Desai <kashyap.desai@broadcom.com> commit 18e1c7f68a5814442abad849abe6eacbf02ffd7c upstream. For SRIOV enabled firmware, if there is a OCR(online controller reset) possibility driver set the convert flag to 1, which is not happening if there are outstanding commands even after 180 seconds. As driver does not set convert flag to 1 and still making the OCR to run, VF(Virtual function) driver is directly writing on to the register instead of waiting for 30 seconds. Setting convert flag to 1 will cause VF driver will wait for 30 secs before going for reset. Signed-off-by: Kiran Kumar Kasturi <kiran-kumar.kasturi@broadcom.com> Signed-off-by: Sumit Saxena <sumit.saxena@broadcom.com> Reviewed-by: Hannes Reinecke <hare@suse.com> Reviewed-by: Tomas Henzl <thenzl@redhat.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> --- drivers/scsi/megaraid/megaraid_sas_fusion.c | 1 + 1 file changed, 1 insertion(+) --- a/drivers/scsi/megaraid/megaraid_sas_fusion.c +++ b/drivers/scsi/megaraid/megaraid_sas_fusion.c @@ -2648,6 +2648,7 @@ int megasas_wait_for_outstanding_fusion( dev_err(&instance->pdev->dev, "pending commands remain after waiting, " "will reset adapter scsi%d.\n", instance->host->host_no); + *convert = 1; retval = 1; } out:
[toc] | [prev] | [next] | [standalone]
| From | Shuah Khan <shuah.kh@samsung.com> |
|---|---|
| Date | 2017-01-07 03:10 +0100 |
| Message-ID | <sWOCd-2li-11@gated-at.bofh.it> |
| In reply to | #1553309 |
On 01/06/2017 02:43 PM, Greg Kroah-Hartman wrote: > This is the start of the stable review cycle for the 4.4.41 release. > There are 58 patches in this series, all will be posted as a response > to this one. If anyone has any issues with these being applied, please > let me know. > > Responses should be made by Sun Jan 8 21:38:49 UTC 2017. > Anything received after that time might be too late. > > The whole patch series can be found in one patch at: > kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.4.41-rc1.gz > or in the git tree and branch at: > git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.4.y > and the diffstat can be found below. > > thanks, > > greg k-h > Compiled and booted on my test system. No dmesg regressions. thanks, -- Shuah -- Shuah Khan Sr. Linux Kernel Developer Open Source Innovation Group Samsung Research America(Silicon Valley) shuah.kh@samsung.com
[toc] | [prev] | [next] | [standalone]
| From | Guenter Roeck <linux@roeck-us.net> |
|---|---|
| Date | 2017-01-07 17:00 +0100 |
| Message-ID | <sX1zs-2hj-7@gated-at.bofh.it> |
| In reply to | #1553309 |
On 01/06/2017 01:43 PM, Greg Kroah-Hartman wrote: > This is the start of the stable review cycle for the 4.4.41 release. > There are 58 patches in this series, all will be posted as a response > to this one. If anyone has any issues with these being applied, please > let me know. > > Responses should be made by Sun Jan 8 21:38:49 UTC 2017. > Anything received after that time might be too late. > Build results: total: 150 pass: 150 fail: 0 Qemu test results: total: 115 pass: 115 fail: 0 Details are available at http://kerneltests.org/builders. Guenter
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web