Skip to content
  1. Dec 11, 2014
  2. Dec 10, 2014
  3. Dec 09, 2014
    • Martin Peres's avatar
      drm: fix a typo in a comment · 393e872e
      Martin Peres authored
      
      
      Spotted while reviewing the DRM changes in Linux 3.18 for LinuxFR.
      
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: default avatarMartin Peres <martin.peres@free.fr>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      393e872e
    • Martin Peres's avatar
      drm: fix a word repetition in a comment · e2db726b
      Martin Peres authored
      
      
      Spotted while reviewing the DRM changes in Linux 3.18 for LinuxFR.
      
      CC: Daniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: default avatarMartin Peres <martin.peres@free.fr>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      e2db726b
    • Dave Airlie's avatar
      Merge branch 'drm-mst-next' of ssh://people.freedesktop.org/~/linux into drm-next · d1b8792b
      Dave Airlie authored
      Merge mst tiling patches and MST fixes
      
      * 'drm-mst-next' of ssh://people.freedesktop.org/~/linux:
        drm/fb: add support for tiled monitor configurations. (v2)
        drm/tile: expose the tile property to userspace (v3)
        drm/connector: store tile information from displayid (v3)
        drm/mst: cached EDID for logical ports (v2)
        drm: add tile_group support. (v3)
        drm/displayid: add displayid defines and edid extension (v2)
        drm/dp-mst: Remove branches before dropping the reference
        drm/fb_helper: move deferred fb checking into restore mode (v2)
        drm/dp: retry AUX transactions 32 times (v1.1)
      d1b8792b
    • Dave Airlie's avatar
      drm/fb: add support for tiled monitor configurations. (v2) · b0ee9e7f
      Dave Airlie authored
      
      
      This adds fbdev/con support for tiled monitors, so that we
      only set a mode on the correct half of the monitor, or
      span the two halves if needed.
      
      v2: remove unneeded ERROR, fix | vs ||
      
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      b0ee9e7f
    • Dave Airlie's avatar
      drm/tile: expose the tile property to userspace (v3) · 6f134d7b
      Dave Airlie authored
      
      
      This takes the tiling info from the connector and
      exposes it to userspace, as a blob object in a
      connector property.
      
      The contents of the blob is ABI.
      
      v2: add property + function documentation.
      
      v3: move property setup from previous patch.
      add boilerplate + fix long line (Daniel)
      
      Reviewed-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      6f134d7b
    • Dave Airlie's avatar
      drm/connector: store tile information from displayid (v3) · 40d9b043
      Dave Airlie authored
      
      
      This creates a tile group from DisplayID block, and
      stores the pieces of parsed info from the DisplayID block
      into the connector.
      
      v2: add missing signoff, add new connector bits to docs.
      
      v3: remove some debugging.
      
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      40d9b043
    • Dave Airlie's avatar
      drm/mst: cached EDID for logical ports (v2) · c6a0aed4
      Dave Airlie authored
      
      
      Logical ports are never going to have EDID changes,
      they are used for the internal ports on MST monitors.
      
      We cache the EDIDs from these to save time at MST probe.
      
      v2: drop misplace tile property line, meant for other patch.
      
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      c6a0aed4
    • Dave Airlie's avatar
      drm: add tile_group support. (v3) · 138f9ebb
      Dave Airlie authored
      
      
      A tile group is an identifier shared by a single monitor,
      DisplayID topology has 8 bytes we can use for this, just
      use those for now until something else comes up in the
      future. We assign these to an idr and use the idr to
      tell userspace what connectors are in the same tile group.
      
      DisplayID v1.3 says the serial number must be unique for
      displays from the same manufacturer.
      
      v2:
      destroy idr (dvdhrm)
      add docbook (danvet)
      airlied:- not sure how to make docbook add fns to tile group section.
      
      v3: fix missing unlock.
      
      Reviewed-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      138f9ebb
    • Dave Airlie's avatar
      drm/displayid: add displayid defines and edid extension (v2) · b49b55bd
      Dave Airlie authored
      
      
      These are just taken from the DisplayID v1.3 spec, and the
      DDC spec.
      
      v2: use __packed (Jani)
      
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      b49b55bd
    • Daniel Vetter's avatar
      drm/dp-mst: Remove branches before dropping the reference · 0391359d
      Daniel Vetter authored
      
      
      When we unplug a dp mst branch we unreference the entire tree from
      the root towards the leaves. Which is ok, since that's the way the
      pointers and so also the refcounts go.
      
      But when we drop the reference we must make sure that we remove the
      branches/ports from the lists/pointers before dropping the reference.
      Otherwise the get_validated functions will still return it instead
      of returning NULL (which indicates a potentially on-going unplug).
      
      The mst branch destroy gets this right for ports: First it deletes
      the port from the ports list, then it unrefs. But the ports destroy
      function gets it wrong: First it unrefs, then it drops the ref. Which
      means a zombie mst branch can still be validate with get_validated_mstb_ref
      when it shouldn't.
      
      Fix this.
      
      This should address a backtrace Dave dug out somewhere on unplug:
      
       [<ffffffffa00cc262>] drm_dp_mst_get_validated_mstb_ref_locked+0x92/0xa0 [drm_kms_helper]
       [<ffffffffa00cc211>] drm_dp_mst_get_validated_mstb_ref_locked+0x41/0xa0 [drm_kms_helper]
       [<ffffffffa00cc2aa>] drm_dp_get_validated_mstb_ref+0x3a/0x60 [drm_kms_helper]
       [<ffffffffa00cc2fb>] drm_dp_payload_send_msg.isra.14+0x2b/0x100 [drm_kms_helper]
       [<ffffffffa00cc547>] drm_dp_update_payload_part1+0x177/0x360 [drm_kms_helper]
       [<ffffffffa015c52e>] intel_mst_disable_dp+0x3e/0x80 [i915]
       [<ffffffffa013d60b>] haswell_crtc_disable+0x1cb/0x340 [i915]
       [<ffffffffa0136739>] intel_crtc_control+0x49/0x100 [i915]
       [<ffffffffa0136857>] intel_crtc_update_dpms+0x67/0x80 [i915]
       [<ffffffffa013fa59>] intel_connector_dpms+0x59/0x70 [i915]
       [<ffffffffa015c752>] intel_dp_destroy_mst_connector+0x32/0xc0 [i915]
       [<ffffffffa00cb44b>] drm_dp_destroy_port+0x6b/0xa0 [drm_kms_helper]
       [<ffffffffa00cb588>] drm_dp_destroy_mst_branch_device+0x108/0x130 [drm_kms_helper]
       [<ffffffffa00cb3cd>] drm_dp_port_teardown_pdt+0x3d/0x50 [drm_kms_helper]
       [<ffffffffa00cdb79>] drm_dp_mst_handle_up_req+0x499/0x540 [drm_kms_helper]
       [<ffffffff810d9ead>] ? trace_hardirqs_on_caller+0x15d/0x200 [<ffffffffa00cdc73>]
       drm_dp_mst_hpd_irq+0x53/0xa00 [drm_kms_helper] [<ffffffffa00c7dfb>]
       ? drm_dp_dpcd_read+0x1b/0x20 [drm_kms_helper] [<ffffffffa0153ed8>]
       ? intel_dp_dpcd_read_wake+0x38/0x70 [i915] [<ffffffffa015a225>]
       intel_dp_check_mst_status+0xb5/0x250 [i915] [<ffffffffa015ac71>]
       intel_dp_hpd_pulse+0x181/0x210 [i915] [<ffffffffa01104f6>]
       i915_digport_work_func+0x96/0x120 [i915]
      
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      0391359d
    • Dave Airlie's avatar
      drm/fb_helper: move deferred fb checking into restore mode (v2) · e2809c7d
      Dave Airlie authored
      
      
      On MST systems the monitors don't appear when we set the fb up,
      but plymouth opens the drm device and holds it open while they
      come up, when plymouth finishes and lastclose gets called we
      don't do the delayed fb probe, so the monitor never appears on the
      console.
      
      Fix this by moving the delayed checking into the mode restore.
      
      v2: Daniel suggested that ->delayed_hotplug is set under
      the mode_config mutex, so we should check it under that as
      well, while we are in the area.
      
      Reviewed-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      e2809c7d
    • Dave Airlie's avatar
      drm/dp: retry AUX transactions 32 times (v1.1) · 19a93f04
      Dave Airlie authored
      
      
      At least on two MST devices I've tested with, when
      they are link training downstream, they are totally
      unable to handle aux ch msgs, so they defer like nuts.
      I tried 16, it wasn't enough, 32 seems better.
      
      This fixes one Dell 4k monitor and one of the
      MST hubs.
      
      v1.1: fixup comment (Tom).
      
      Acked-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      19a93f04
  4. Dec 08, 2014
    • Dave Airlie's avatar
      Merge branch 'drm_iommu_v15' of https://github.com/markyzq/kernel-drm-rockchip into drm-next · b75478d1
      Dave Airlie authored
      Merge rockchip GPU support.
      
      This has a branch in common with the iommu tree, hopefully the
      process works.
      
      * 'drm_iommu_v15' of https://github.com/markyzq/kernel-drm-rockchip:
        dt-bindings: video: Add documentation for rockchip vop
        dt-bindings: video: Add for rockchip display subsytem
        drm: rockchip: Add basic drm driver
        dt-bindings: iommu: Add documentation for rockchip iommu
        iommu/rockchip: rk3288 iommu driver
      b75478d1
    • Dave Airlie's avatar
      Merge branch 'amdkfd-next-3.19' of git://people.freedesktop.org/~gabbayo/linux into drm-next · b00ff043
      Dave Airlie authored
      As discussed on irc, I'm sending a pull request with one important change:
      
      - Disable support for 32-bit user processes. This is done due to AMD's decision
        to remove support for 32-bit user processes on Linux for its HSA stack.
      
      * 'amdkfd-next-3.19' of git://people.freedesktop.org/~gabbayo/linux:
        amdkfd: Disable support for 32-bit user processes
      b00ff043
    • Dave Airlie's avatar
      Merge tag 'v3.18' into drm-next · 8c863944
      Dave Airlie authored
      Linux 3.18
      
      Backmerge Linus tree into -next as we had conflicts in i915/radeon/nouveau,
      and everyone was solving them individually.
      
      * tag 'v3.18': (57 commits)
        Linux 3.18
        watchdog: s3c2410_wdt: Fix the mask bit offset for Exynos7
        uapi: fix to export linux/vm_sockets.h
        i2c: cadence: Set the hardware time-out register to maximum value
        i2c: davinci: generate STP always when NACK is received
        ahci: disable MSI on SAMSUNG 0xa800 SSD
        context_tracking: Restore previous state in schedule_user
        slab: fix nodeid bounds check for non-contiguous node IDs
        lib/genalloc.c: export devm_gen_pool_create() for modules
        mm: fix anon_vma_clone() error treatment
        mm: fix swapoff hang after page migration and fork
        fat: fix oops on corrupted vfat fs
        ipc/sem.c: fully initialize sem_array before making it visible
        drivers/input/evdev.c: don't kfree() a vmalloc address
        cxgb4: Fill in supported link mode for SFP modules
        xen-netfront: Remove BUGs on paged skb data which crosses a page boundary
        mm/vmpressure.c: fix race in vmpressure_work_fn()
        mm: frontswap: invalidate expired data on a dup-store failure
        mm: do not overwrite reserved pages counter at show_mem()
        drm/radeon: kernel panic in drm_calc_vbltimestamp_from_scanoutpos with 3.18.0-rc6
        ...
      
      Conflicts:
      	drivers/gpu/drm/i915/intel_display.c
      	drivers/gpu/drm/nouveau/nouveau_drm.c
      	drivers/gpu/drm/radeon/radeon_cs.c
      8c863944
    • Linus Torvalds's avatar
      Linux 3.18 · b2776bf7
      Linus Torvalds authored
      b2776bf7
    • Linus Torvalds's avatar
      Merge branch 'for-3.18-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata · 820b688b
      Linus Torvalds authored
      Pull libata fixes from Tejun Heo:
       "Three libata fixes for v3.18.  Nothing too interesting.  PCI ID ID and
        quirk additions to ahci and an error handling path fix in sata_fsl"
      
      * 'for-3.18-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata:
        ahci: disable MSI on SAMSUNG 0xa800 SSD
        sata_fsl: fix error handling of irq_of_parse_and_map
        AHCI: Add DeviceIDs for Sunrise Point-LP SATA controller
      820b688b
  5. Dec 07, 2014
  6. Dec 06, 2014
  7. Dec 05, 2014
    • Linus Torvalds's avatar
      Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux · ba2cb64b
      Linus Torvalds authored
      Pull drm intel fixes from Dave Airlie:
       "Two intel stable fixes, that should be it from me for this round"
      
      * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux:
        drm/i915: Unlock panel even when LVDS is disabled
        drm/i915: More cautious with pch fifo underruns
      ba2cb64b
    • Linus Torvalds's avatar
      Merge tag 'pm+acpi-3.18-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · 56c67ce1
      Linus Torvalds authored
      Pull ACPI backlight fix from Rafael Wysocki:
       "This is a simple fix for an ACPI backlight regression introduced by a
        recent commit that overlooked a corner case which should have been
        taken into account"
      
      * tag 'pm+acpi-3.18-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
        ACPI / video: update condition to check if device is in _DOD list
      56c67ce1
    • Dave Airlie's avatar
      Merge tag 'drm-intel-fixes-2014-12-04' of git://anongit.freedesktop.org/drm-intel into drm-fixes · 3e3282c0
      Dave Airlie authored
      Silence some pch fifo underrun reports and panel locking backtraces,
      both cc: stable.
      
      * tag 'drm-intel-fixes-2014-12-04' of git://anongit.freedesktop.org/drm-intel:
        drm/i915: Unlock panel even when LVDS is disabled
        drm/i915: More cautious with pch fifo underruns
      3e3282c0
    • Dave Airlie's avatar
      Merge tag 'drm-intel-next-fixes-2014-12-04' of... · 7608867d
      Dave Airlie authored
      Merge tag 'drm-intel-next-fixes-2014-12-04' of git://anongit.freedesktop.org/drm-intel into drm-next
      
      Fixes for 3.20. I did stick the gen3/4 reset work from Ville in because we
      have an awful lot of gen4 mesa hangs, and with this reset should also work
      on vintage i965g/gm (we already have reset for g4x/gen4.5). So should help
      to appease users suffering from these hangs. Otherwise all over.
      
      This is the last 3.20 pull from me, from here on Jani will take over. By Ville Syrjälä (8) and others
      * tag 'drm-intel-next-fixes-2014-12-04' of git://anongit.freedesktop.org/drm-intel:
        drm/i915: Reject modeset when the same digital port is used more than once
        drm/i915: mask RPS IRQs properly when disabling RPS
        drm/i915: Tune down spurious CRC interrupt warning
        drm/i915: Fix context object leak for legacy contexts
        drm/i915/skl: Update in Gen9 multi-engine forcewake range
        drm/i915/eDP: When enabling panel VDD cancel pending disable worker
        drm/i915: Handle runtime pm in the CRC setup code
        drm/i915: Disable crtcs gracefully before GPU reset on gen3/4
        drm/i915: Grab modeset locks for GPU rest on pre-ctg
        drm/i915: Implement GPU reset for g33
        drm/i915: Implement GPU reset for 915/945
        drm/i915: Restore the display config after a GPU reset on gen4
        drm/i915: Fix gen4 GPU reset
        drm/i915: Stop gathering error states for CS error interrupts
        drm/i915: Disallow pin ioctl completely for kms drivers
        drm/i915: Only warn the first time we attempt to mmio whilst suspended
        drm/i915/chv: Enable AVI, SPD and HDMI infoframes for CHV.
        drm/i915: Don't clobber crtc->new_config when nothing changes
      7608867d
    • Dave Airlie's avatar
      Merge branch 'amdkfd-next-3.19' of git://people.freedesktop.org/~gabbayo/linux into drm-next · 047b35f2
      Dave Airlie authored
      Just three more fixes for 3.19.
      This is the last request until -rc1. I will have our QA team run a full
      HSA stack test on 3.19-rc1 and if we find problems, I will send a fixes pull
      request.
      
      * 'amdkfd-next-3.19' of git://people.freedesktop.org/~gabbayo/linux:
        amdkfd: Set *buffer_ptr to NULL in case of error
        amdkfd: use atomic allocations within srcu callbacks
        amdkfd: use sizeof(long) granularity for the pasid bitmask
      047b35f2
    • Dave Airlie's avatar
      Merge branch 'drm-next-3.19-wip' of git://people.freedesktop.org/~agd5f/linux into drm-next · d58e0d90
      Dave Airlie authored
      - More cursor and hotspot handling fixes
      - Fix some typos in the new smc fan control code and enable on CI
      - VM and CS cleanups
      
      * 'drm-next-3.19-wip' of git://people.freedesktop.org/~agd5f/linux:
        drm/radeon: enable smc fan control on CI
        drm/radeon: use pointers instead of indexes for CS chunks
        drm/radeon: remove duplicates check
        drm/ttm: optionally move duplicates to a separate list
        drm/radeon: check the right ring in radeon_evict_flags()
        drm/radeon: fix copy paste typos in fan control for si/ci
        drm/radeon: Hide cursor on CRTCs used by fbdev (v2)
        drm/radeon: add spinlock for BO_VA status protection (v2)
        drm/radeon: fence PT updates as shared
        drm/radeon: rename radeon_cs_reloc to radeon_bo_list
        drm/radeon: drop the handle from radeon_cs_reloc
        drm/radeon drop gobj from radeon_cs_reloc
        drm/radeon: fix typo in new fan control registers for SI/CI
        drm/radeon: sync all BOs involved in a CS
        drm/radeon: Move hotspot handling out of radeon_set_cursor
        drm/radeon: Re-show the cursor after a modeset
      d58e0d90
    • Linus Torvalds's avatar
      Merge tag 'media/v3.18-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media · ebea76f5
      Linus Torvalds authored
      Pull media fixes from Mauro Carvalho Chehab:
       "A core fix and some driver fixes:
         - regression fix in Remote Controller core affecting RC6 protocol
           handling
         - fix video buffer handling in cx23885
         - race fix in solo6x10
         - fix image selection in smiapp
         - fix reported payload size on s2255drv
         - two updates for MAINTAINERS file"
      
      * tag 'media/v3.18-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media:
        [media] rc-core: fix toggle handling in the rc6 decoder
        MAINTAINERS: Update mchehab's addresses
        [media] cx23885: use sg = sg_next(sg) instead of sg++
        [media] s2255drv: fix payload size for JPG, MJPEG
        [media] Update MAINTAINERS for solo6x10
        [media] solo6x10: fix a race in IRQ handler
        [media] smiapp: Only some selection targets are settable
      ebea76f5
    • Masahiro Yamada's avatar
      uapi: fix to export linux/vm_sockets.h · d0747f10
      Masahiro Yamada authored
      A typo "header=y" was introduced by commit 7071cf7f
      
       ("uapi: add
      missing network related headers to kbuild").
      
      Signed-off-by: default avatarMasahiro Yamada <yamada.m@jp.panasonic.com>
      Cc: Stephen Hemminger <stephen@networkplumber.org>
      Cc: David Miller <davem@davemloft.net>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      d0747f10
    • Vishnu Motghare's avatar
      i2c: cadence: Set the hardware time-out register to maximum value · 681d15a0
      Vishnu Motghare authored
      
      
      Cadence I2C controller has bug wherein it generates invalid read transactions
      after timeout in master receiver mode. This driver does not use the HW
      timeout and this interrupt is disabled but the feature itself cannot be
      disabled. Hence, this patch writes the maximum value (0xFF) to this register.
      This is one of the workarounds to this bug and it will not avoid the issue
      completely but reduces the chances of error.
      
      Signed-off-by: default avatarVishnu Motghare <vishnum@xilinx.com>
      Signed-off-by: default avatarHarini Katakam <harinik@xilinx.com>
      Signed-off-by: default avatarWolfram Sang <wsa@the-dreams.de>
      Cc: stable@kernel.org
      681d15a0
    • Grygorii Strashko's avatar
      i2c: davinci: generate STP always when NACK is received · 9ea359f7
      Grygorii Strashko authored
      According to I2C specification the NACK should be handled as follows:
      "When SDA remains HIGH during this ninth clock pulse, this is defined as the Not
      Acknowledge signal. The master can then generate either a STOP condition to
      abort the transfer, or a repeated START condition to start a new transfer."
      [I2C spec Rev. 6, 3.1.6: http://www.nxp.com/documents/user_manual/UM10204.pdf]
      
      Currently the Davinci i2c driver interrupts the transfer on receipt of a
      NACK but fails to send a STOP in some situations and so makes the bus
      stuck until next I2C IP reset (idle/enable).
      
      For example, the issue will happen during SMBus read transfer which
      consists from two i2c messages write command/address and read data:
      
      S Slave Address Wr A Command Code A Sr Slave Address Rd A D1..Dn A P
      <--- write -----------------------> <--- read --------------------->
      
      The I2C client device will send NACK if it can't recognize "Command Code"
      and it's expected from I2C master to generate STP in this case.
      But now, Davinci i2C driver will just exit with -EREMOTEIO and STP will
      not be generated.
      
      Hence, fix it by generating Stop condition (STP) always when NACK is received.
      
      This patch fixes Davinci I2C in the same way it was done for OMAP I2C
      commit cda2109a
      
       ("i2c: omap: query STP always when NACK is received").
      
      Reviewed-by: default avatarUwe Kleine-König <u.kleine-koenig@pengutronix.de>
      Reported-by: default avatarHein Tibosch <hein_tibosch@yahoo.es>
      Signed-off-by: default avatarGrygorii Strashko <grygorii.strashko@ti.com>
      Signed-off-by: default avatarWolfram Sang <wsa@the-dreams.de>
      Cc: stable@kernel.org
      9ea359f7
    • Tejun Heo's avatar
      ahci: disable MSI on SAMSUNG 0xa800 SSD · 2b21ef0a
      Tejun Heo authored
      Just like 0x1600 which got blacklisted by 66a7cbc3
      
       ("ahci: disable
      MSI instead of NCQ on Samsung pci-e SSDs on macbooks"), 0xa800 chokes
      on NCQ commands if MSI is enabled.  Disable MSI.
      
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Reported-by: default avatarDominik Mierzejewski <dominik@greysector.net>
      Link: https://bugzilla.kernel.org/show_bug.cgi?id=89171
      Cc: stable@vger.kernel.org
      2b21ef0a
  8. Dec 04, 2014