--- /dev/null
+From 9589919fb3d269d4202a112b197468c7db1f97a3 Mon Sep 17 00:00:00 2001
+From: Rodrigo Vivi <rodrigo.vivi@gmail.com>
+Date: Tue, 22 May 2012 15:23:24 -0300
+Subject: drm/i915: Adding TV Out Missing modes.
+
+From: Rodrigo Vivi <rodrigo.vivi@gmail.com>
+
+commit 9589919fb3d269d4202a112b197468c7db1f97a3 upstream.
+
+These 2 modes were removed by mistake during a clean up.
+So, now it is time to add them back. For further info about
+supported mode and standard timing table please check:
+VOL_3_display_registers_updated.pdf at intellinuxgraphics.org.
+
+Note that this regression has been introduce in
+
+commit 55a6713b3f30a5024056027e9dbf03ac8f13bfc9
+Author: Rodrigo Vivi <rodrigo.vivi@gmail.com>
+Date: Thu Dec 15 14:47:33 2011 -0200
+
+ drm/i915: Removing TV Out modes.
+
+and this commit partially reverts it by re-adding the wrongly removed
+modes.
+
+Reported-by: Robert Lowery <rglowery@exemail.com.au>
+Signed-off-by: Rodrigo Vivi <rodrigo.vivi@gmail.com>
+[danvet: Pimped commit message to cite the commit that introduced this
+regression.]
+Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/i915/intel_tv.c | 48 ++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 48 insertions(+)
+
+--- a/drivers/gpu/drm/i915/intel_tv.c
++++ b/drivers/gpu/drm/i915/intel_tv.c
+@@ -674,6 +674,54 @@ static const struct tv_mode tv_modes[] =
+ .filter_table = filter_table,
+ },
+ {
++ .name = "480p",
++ .clock = 107520,
++ .refresh = 59940,
++ .oversample = TV_OVERSAMPLE_4X,
++ .component_only = 1,
++
++ .hsync_end = 64, .hblank_end = 122,
++ .hblank_start = 842, .htotal = 857,
++
++ .progressive = true, .trilevel_sync = false,
++
++ .vsync_start_f1 = 12, .vsync_start_f2 = 12,
++ .vsync_len = 12,
++
++ .veq_ena = false,
++
++ .vi_end_f1 = 44, .vi_end_f2 = 44,
++ .nbr_end = 479,
++
++ .burst_ena = false,
++
++ .filter_table = filter_table,
++ },
++ {
++ .name = "576p",
++ .clock = 107520,
++ .refresh = 50000,
++ .oversample = TV_OVERSAMPLE_4X,
++ .component_only = 1,
++
++ .hsync_end = 64, .hblank_end = 139,
++ .hblank_start = 859, .htotal = 863,
++
++ .progressive = true, .trilevel_sync = false,
++
++ .vsync_start_f1 = 10, .vsync_start_f2 = 10,
++ .vsync_len = 10,
++
++ .veq_ena = false,
++
++ .vi_end_f1 = 48, .vi_end_f2 = 48,
++ .nbr_end = 575,
++
++ .burst_ena = false,
++
++ .filter_table = filter_table,
++ },
++ {
+ .name = "720p@60Hz",
+ .clock = 148800,
+ .refresh = 60000,
--- /dev/null
+From 3347111999870c37eab1b969e90af9fdaf0334ba Mon Sep 17 00:00:00 2001
+From: Jan-Benedict Glaw <jan-benedict.glaw@getslash.de>
+Date: Tue, 22 May 2012 15:21:53 +0200
+Subject: drm/i915: no lvds quirk for HP t5740e Thin Client
+
+From: Jan-Benedict Glaw <jan-benedict.glaw@getslash.de>
+
+commit 3347111999870c37eab1b969e90af9fdaf0334ba upstream.
+
+This box has DisplayPort and VGA, but no LVDS. Product specs are at
+http://h10010.www1.hp.com/wwpc/us/en/sm/WF25a/12454-12454-321959-338927-3640406-4282707.html?dnr=1
+and dmidecode output can be found at http://www.getslash.de/bug_attachments/dmidecode-t5740e.txt
+
+Signed-off-by: Jan-Benedict Glaw <jbglaw@getslash.de>
+Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/i915/intel_lvds.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+--- a/drivers/gpu/drm/i915/intel_lvds.c
++++ b/drivers/gpu/drm/i915/intel_lvds.c
+@@ -747,6 +747,14 @@ static const struct dmi_system_id intel_
+ },
+ {
+ .callback = intel_no_lvds_dmi_callback,
++ .ident = "Hewlett-Packard HP t5740e Thin Client",
++ .matches = {
++ DMI_MATCH(DMI_BOARD_VENDOR, "Hewlett-Packard"),
++ DMI_MATCH(DMI_PRODUCT_NAME, "HP t5740e Thin Client"),
++ },
++ },
++ {
++ .callback = intel_no_lvds_dmi_callback,
+ .ident = "Hewlett-Packard t5745",
+ .matches = {
+ DMI_MATCH(DMI_BOARD_VENDOR, "Hewlett-Packard"),
--- /dev/null
+From 59d92bfa5f0cdf57f82f5181b0ad6af75c3fdf41 Mon Sep 17 00:00:00 2001
+From: Daniel Vetter <daniel.vetter@ffwll.ch>
+Date: Sat, 12 May 2012 22:22:58 +0200
+Subject: drm/i915: properly handle interlaced bit for sdvo dtd conversion
+
+From: Daniel Vetter <daniel.vetter@ffwll.ch>
+
+commit 59d92bfa5f0cdf57f82f5181b0ad6af75c3fdf41 upstream.
+
+We've simply ignored this, which isn't too great. With this, interlaced
+1080i works on my HDMI screen connected through sdvo. For no apparent
+reason anything else still doesn't work as it should.
+
+While at it, give these magic numbers in the dtd proper names and
+add a comment that they match with EDID detailed timings.
+
+v2: Actually use the right bit for interlaced.
+
+Tested-by: Peter Ross <pross@xvid.org>
+Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
+Signed-Off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/i915/intel_sdvo.c | 12 ++++++++----
+ drivers/gpu/drm/i915/intel_sdvo_regs.h | 5 +++++
+ 2 files changed, 13 insertions(+), 4 deletions(-)
+
+--- a/drivers/gpu/drm/i915/intel_sdvo.c
++++ b/drivers/gpu/drm/i915/intel_sdvo.c
+@@ -769,10 +769,12 @@ static void intel_sdvo_get_dtd_from_mode
+ ((v_sync_len & 0x30) >> 4);
+
+ dtd->part2.dtd_flags = 0x18;
++ if (mode->flags & DRM_MODE_FLAG_INTERLACE)
++ dtd->part2.dtd_flags |= DTD_FLAG_INTERLACE;
+ if (mode->flags & DRM_MODE_FLAG_PHSYNC)
+- dtd->part2.dtd_flags |= 0x2;
++ dtd->part2.dtd_flags |= DTD_FLAG_HSYNC_POSITIVE;
+ if (mode->flags & DRM_MODE_FLAG_PVSYNC)
+- dtd->part2.dtd_flags |= 0x4;
++ dtd->part2.dtd_flags |= DTD_FLAG_VSYNC_POSITIVE;
+
+ dtd->part2.sdvo_flags = 0;
+ dtd->part2.v_sync_off_high = v_sync_offset & 0xc0;
+@@ -806,9 +808,11 @@ static void intel_sdvo_get_mode_from_dtd
+ mode->clock = dtd->part1.clock * 10;
+
+ mode->flags &= ~(DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC);
+- if (dtd->part2.dtd_flags & 0x2)
++ if (dtd->part2.dtd_flags & DTD_FLAG_INTERLACE)
++ mode->flags |= DRM_MODE_FLAG_INTERLACE;
++ if (dtd->part2.dtd_flags & DTD_FLAG_HSYNC_POSITIVE)
+ mode->flags |= DRM_MODE_FLAG_PHSYNC;
+- if (dtd->part2.dtd_flags & 0x4)
++ if (dtd->part2.dtd_flags & DTD_FLAG_VSYNC_POSITIVE)
+ mode->flags |= DRM_MODE_FLAG_PVSYNC;
+ }
+
+--- a/drivers/gpu/drm/i915/intel_sdvo_regs.h
++++ b/drivers/gpu/drm/i915/intel_sdvo_regs.h
+@@ -61,6 +61,11 @@ struct intel_sdvo_caps {
+ u16 output_flags;
+ } __attribute__((packed));
+
++/* Note: SDVO detailed timing flags match EDID misc flags. */
++#define DTD_FLAG_HSYNC_POSITIVE (1 << 1)
++#define DTD_FLAG_VSYNC_POSITIVE (1 << 2)
++#define DTD_FLAG_INTERLACE (1 << 7)
++
+ /** This matches the EDID DTD structure, more or less */
+ struct intel_sdvo_dtd {
+ struct {
--- /dev/null
+From bf2125e2f7e931b50a6c76ba0435ba001409ccbf Mon Sep 17 00:00:00 2001
+From: Daniel Vetter <daniel.vetter@ffwll.ch>
+Date: Tue, 22 May 2012 21:41:25 +0200
+Subject: drm/i915: wait for a vblank to pass after tv detect
+
+From: Daniel Vetter <daniel.vetter@ffwll.ch>
+
+commit bf2125e2f7e931b50a6c76ba0435ba001409ccbf upstream.
+
+Otherwise the hw will get confused and result in a black screen.
+
+This regression has been most likely introduce in
+
+commit 974b93315b2213b74a42a87e8a9d4fc8c0dbe90c
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date: Sun Sep 5 00:44:20 2010 +0100
+
+ drm/i915/tv: Poll for DAC state change
+
+That commit replace the first msleep(20) with a busy-loop, but failed
+to keep the 2nd msleep around. Later on we've replaced all these
+msleep(20) by proper vblanks.
+
+For reference also see the commit in xf86-video-intel:
+
+commit 1142be53eb8d2ee8a9b60ace5d49f0ba27332275
+Author: Jesse Barnes <jbarnes@hobbes.lan>
+Date: Mon Jun 9 08:52:59 2008 -0700
+
+ Fix TV programming: add vblank wait after TV_CTL writes
+
+ Fxies FDO bug #14000; we need to wait for vblank after
+ writing TV_CTL or following "DPMS on" calls may not actually enable the output.
+
+v2: As suggested by Chris Wilson, add a small comment to ensure that
+no one accidentally removes this vblank wait again - there really
+seems to be no sane explanation for why we need it, but it is
+required.
+
+Launchpad: https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-video-intel/+bug/763688
+Reported-and-Tested-by: Robert Lowery <rglowery@exemail.com.au>
+Cc: Rodrigo Vivi <rodrigo.vivi@gmail.com>
+Acked-by: Chris Wilson <chris@chris-wilson.co.uk>
+Signed-Off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/i915/intel_tv.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+--- a/drivers/gpu/drm/i915/intel_tv.c
++++ b/drivers/gpu/drm/i915/intel_tv.c
+@@ -1233,6 +1233,11 @@ intel_tv_detect_type(struct intel_tv *in
+
+ I915_WRITE(TV_DAC, save_tv_dac & ~TVDAC_STATE_CHG_EN);
+ I915_WRITE(TV_CTL, save_tv_ctl);
++ POSTING_READ(TV_CTL);
++
++ /* For unknown reasons the hw barfs if we don't do this vblank wait. */
++ intel_wait_for_vblank(intel_tv->base.base.dev,
++ to_intel_crtc(intel_tv->base.base.crtc)->pipe);
+
+ /* Restore interrupt config */
+ if (connector->polled & DRM_CONNECTOR_POLL_HPD) {
--- /dev/null
+From 1f73cca799d29df80de3e8f1f1c488485467577a Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexander.deucher@amd.com>
+Date: Thu, 24 May 2012 22:55:15 -0400
+Subject: drm/radeon: fix typo in trinity tiling setup
+
+From: Alex Deucher <alexander.deucher@amd.com>
+
+commit 1f73cca799d29df80de3e8f1f1c488485467577a upstream.
+
+Using the wrong union.
+
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Dave Airlie <airlied@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/radeon/ni.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/gpu/drm/radeon/ni.c
++++ b/drivers/gpu/drm/radeon/ni.c
+@@ -865,7 +865,7 @@ static void cayman_gpu_init(struct radeo
+
+ /* num banks is 8 on all fusion asics. 0 = 4, 1 = 8, 2 = 16 */
+ if (rdev->flags & RADEON_IS_IGP)
+- rdev->config.evergreen.tile_config |= 1 << 4;
++ rdev->config.cayman.tile_config |= 1 << 4;
+ else
+ rdev->config.cayman.tile_config |=
+ ((mc_arb_ramcfg & NOOFBANK_MASK) >> NOOFBANK_SHIFT) << 4;
--- /dev/null
+From 1ebf169ad4dc68f18cc0dab35163b0f324fc6c41 Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexander.deucher@amd.com>
+Date: Wed, 23 May 2012 11:48:59 -0400
+Subject: drm/radeon: fix XFX quirk
+
+From: Alex Deucher <alexander.deucher@amd.com>
+
+commit 1ebf169ad4dc68f18cc0dab35163b0f324fc6c41 upstream.
+
+Only override the ddc bus if the connector doesn't have
+a valid one. The existing code overrode the ddc bus for
+all connectors even if it had ddc bus.
+
+Fixes ddc on another XFX card with the same pci ids that
+was broken by the quirk overwriting the correct ddc bus.
+
+Reported-by: Mehdi Aqadjani Memar <m.aqadjanimemar@student.ru.nl>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Dave Airlie <airlied@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/radeon/radeon_atombios.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+--- a/drivers/gpu/drm/radeon/radeon_atombios.c
++++ b/drivers/gpu/drm/radeon/radeon_atombios.c
+@@ -444,7 +444,9 @@ static bool radeon_atom_apply_quirks(str
+ */
+ if ((dev->pdev->device == 0x9498) &&
+ (dev->pdev->subsystem_vendor == 0x1682) &&
+- (dev->pdev->subsystem_device == 0x2452)) {
++ (dev->pdev->subsystem_device == 0x2452) &&
++ (i2c_bus->valid == false) &&
++ !(supported_device & (ATOM_DEVICE_TV_SUPPORT | ATOM_DEVICE_CV_SUPPORT))) {
+ struct radeon_device *rdev = dev->dev_private;
+ *i2c_bus = radeon_lookup_i2c_gpio(rdev, 0x93);
+ }
--- /dev/null
+From 3d06fca8d2aa3543030e40b95f1d62f9f5a03540 Mon Sep 17 00:00:00 2001
+From: Joerg Roedel <joerg.roedel@amd.com>
+Date: Thu, 12 Apr 2012 14:12:00 +0200
+Subject: iommu/amd: Add workaround for event log erratum
+
+From: Joerg Roedel <joerg.roedel@amd.com>
+
+commit 3d06fca8d2aa3543030e40b95f1d62f9f5a03540 upstream.
+
+Due to a recent erratum it can happen that the head pointer
+of the event-log is updated before the actual event-log
+entry is written. This patch implements the recommended
+workaround.
+
+Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/iommu/amd_iommu.c | 29 +++++++++++++++++++++++------
+ 1 file changed, 23 insertions(+), 6 deletions(-)
+
+--- a/drivers/iommu/amd_iommu.c
++++ b/drivers/iommu/amd_iommu.c
+@@ -450,12 +450,27 @@ static void dump_command(unsigned long p
+
+ static void iommu_print_event(struct amd_iommu *iommu, void *__evt)
+ {
+- u32 *event = __evt;
+- int type = (event[1] >> EVENT_TYPE_SHIFT) & EVENT_TYPE_MASK;
+- int devid = (event[0] >> EVENT_DEVID_SHIFT) & EVENT_DEVID_MASK;
+- int domid = (event[1] >> EVENT_DOMID_SHIFT) & EVENT_DOMID_MASK;
+- int flags = (event[1] >> EVENT_FLAGS_SHIFT) & EVENT_FLAGS_MASK;
+- u64 address = (u64)(((u64)event[3]) << 32) | event[2];
++ int type, devid, domid, flags;
++ volatile u32 *event = __evt;
++ int count = 0;
++ u64 address;
++
++retry:
++ type = (event[1] >> EVENT_TYPE_SHIFT) & EVENT_TYPE_MASK;
++ devid = (event[0] >> EVENT_DEVID_SHIFT) & EVENT_DEVID_MASK;
++ domid = (event[1] >> EVENT_DOMID_SHIFT) & EVENT_DOMID_MASK;
++ flags = (event[1] >> EVENT_FLAGS_SHIFT) & EVENT_FLAGS_MASK;
++ address = (u64)(((u64)event[3]) << 32) | event[2];
++
++ if (type == 0) {
++ /* Did we hit the erratum? */
++ if (++count == LOOP_TIMEOUT) {
++ pr_err("AMD-Vi: No event written to event log\n");
++ return;
++ }
++ udelay(1);
++ goto retry;
++ }
+
+ printk(KERN_ERR "AMD-Vi: Event logged [");
+
+@@ -508,6 +523,8 @@ static void iommu_print_event(struct amd
+ default:
+ printk(KERN_ERR "UNKNOWN type=0x%02x]\n", type);
+ }
++
++ memset(__evt, 0, 4 * sizeof(u32));
+ }
+
+ static void iommu_poll_events(struct amd_iommu *iommu)
--- /dev/null
+From a3b93121430c7b46c2895a7744261be107ccdf7f Mon Sep 17 00:00:00 2001
+From: Joerg Roedel <joerg.roedel@amd.com>
+Date: Thu, 12 Apr 2012 12:49:26 +0200
+Subject: iommu/amd: Check for the right TLP prefix bit
+
+From: Joerg Roedel <joerg.roedel@amd.com>
+
+commit a3b93121430c7b46c2895a7744261be107ccdf7f upstream.
+
+Unfortunatly the PRI spec changed and moved the
+TLP-prefix-required bit to a different location. This patch
+makes the necessary change in the AMD IOMMU driver.
+Regressions are not expected because all hardware
+implementing the PRI capability sets this bit to zero
+anyway.
+
+Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/iommu/amd_iommu.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+--- a/drivers/iommu/amd_iommu.c
++++ b/drivers/iommu/amd_iommu.c
+@@ -2035,20 +2035,20 @@ out_err:
+ }
+
+ /* FIXME: Move this to PCI code */
+-#define PCI_PRI_TLP_OFF (1 << 2)
++#define PCI_PRI_TLP_OFF (1 << 15)
+
+ bool pci_pri_tlp_required(struct pci_dev *pdev)
+ {
+- u16 control;
++ u16 status;
+ int pos;
+
+ pos = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_PRI);
+ if (!pos)
+ return false;
+
+- pci_read_config_word(pdev, pos + PCI_PRI_CTRL, &control);
++ pci_read_config_word(pdev, pos + PCI_PRI_STATUS, &status);
+
+- return (control & PCI_PRI_TLP_OFF) ? true : false;
++ return (status & PCI_PRI_TLP_OFF) ? true : false;
+ }
+
+ /*
nfs-kmalloc-doesn-t-return-an-err_ptr.patch
nfsv4-map-nfs4err_share_denied-into-an-eacces-error-instead-of-eio.patch
hugetlb-fix-resv_map-leak-in-error-path.patch
+sunrpc-fix-loss-of-task-tk_status-after-rpc_delay-call-in-xprt_alloc_slot.patch
+iommu-amd-check-for-the-right-tlp-prefix-bit.patch
+iommu-amd-add-workaround-for-event-log-erratum.patch
+drm-radeon-fix-xfx-quirk.patch
+drm-radeon-fix-typo-in-trinity-tiling-setup.patch
+drm-i915-properly-handle-interlaced-bit-for-sdvo-dtd-conversion.patch
+drm-i915-adding-tv-out-missing-modes.patch
+drm-i915-wait-for-a-vblank-to-pass-after-tv-detect.patch
+drm-i915-no-lvds-quirk-for-hp-t5740e-thin-client.patch
--- /dev/null
+From 1afeaf5c29aa07db25760d2fbed5c08a3aec3498 Mon Sep 17 00:00:00 2001
+From: Trond Myklebust <Trond.Myklebust@netapp.com>
+Date: Sat, 19 May 2012 12:12:53 -0400
+Subject: sunrpc: fix loss of task->tk_status after rpc_delay call in xprt_alloc_slot
+
+From: Trond Myklebust <Trond.Myklebust@netapp.com>
+
+commit 1afeaf5c29aa07db25760d2fbed5c08a3aec3498 upstream.
+
+xprt_alloc_slot will call rpc_delay() to make the task wait a bit before
+retrying when it gets back an -ENOMEM error from xprt_dynamic_alloc_slot.
+The problem is that rpc_delay will clear the task->tk_status, causing
+call_reserveresult to abort the task.
+
+The solution is simply to let call_reserveresult handle the ENOMEM error
+directly.
+
+Reported-by: Jeff Layton <jlayton@redhat.com>
+Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ net/sunrpc/clnt.c | 2 ++
+ net/sunrpc/xprt.c | 5 +++--
+ 2 files changed, 5 insertions(+), 2 deletions(-)
+
+--- a/net/sunrpc/clnt.c
++++ b/net/sunrpc/clnt.c
+@@ -1288,6 +1288,8 @@ call_reserveresult(struct rpc_task *task
+ }
+
+ switch (status) {
++ case -ENOMEM:
++ rpc_delay(task, HZ >> 2);
+ case -EAGAIN: /* woken up; retry */
+ task->tk_action = call_reserve;
+ return;
+--- a/net/sunrpc/xprt.c
++++ b/net/sunrpc/xprt.c
+@@ -984,15 +984,16 @@ static void xprt_alloc_slot(struct rpc_t
+ goto out_init_req;
+ switch (PTR_ERR(req)) {
+ case -ENOMEM:
+- rpc_delay(task, HZ >> 2);
+ dprintk("RPC: dynamic allocation of request slot "
+ "failed! Retrying\n");
++ task->tk_status = -ENOMEM;
+ break;
+ case -EAGAIN:
+ rpc_sleep_on(&xprt->backlog, task, NULL);
+ dprintk("RPC: waiting for request slot\n");
++ default:
++ task->tk_status = -EAGAIN;
+ }
+- task->tk_status = -EAGAIN;
+ return;
+ out_init_req:
+ task->tk_status = 0;