From: Greg KH <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: torvalds@linux-foundation.org, akpm@linux-foundation.org,
alan@lxorguk.ukuu.org.uk, Adam Jackson <ajax@redhat.com>,
Daniel Vetter <daniel.vetter@ffwll.ch>
Subject: [ 05/68] drm/i915: properly compute dp dithering for user-created modes
Date: Thu, 19 Apr 2012 14:08:23 -0700 [thread overview]
Message-ID: <20120419210819.120235243@linuxfoundation.org> (raw)
In-Reply-To: <20120419210923.GA18589@kroah.com>
3.2-stable review patch. If anyone has any objections, please let me know.
------------------
From: Daniel Vetter <daniel.vetter@ffwll.ch>
commit c4867936474183332db4c19791a65fdad6474fd5 upstream.
We've only computed whether we need to fall back to 6bpc due to dp
link bandwidth constrains in mode_valid, but not mode_fixup. Under
various circumstances X likes to create new modes which then lack
proper 6bpc flags (if required), resulting in mode_fixup failures and
ultimately black screens.
Chris Wilson pointed out that we still get things wrong for bpp > 24,
but that should be fixed in another patch (and it'll be easier because
this patch consolidates the logic).
The likely culprit for this regression is
commit 3d794f87238f74d80e78a7611c7fbde8a54c85c2
Author: Keith Packard <keithp@keithp.com>
Date: Wed Jan 25 08:16:25 2012 -0800
drm/i915: Force explicit bpp selection for intel_dp_link_required
v2: Fix indentation and tune down the too bold claim that this should
fix the world. Both noticed by Chris Wilson.
v3: Try to really git add things.
Reported-and-tested-by: Brice Goglin <Brice.Goglin@ens-lyon.org>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=48170
Cc: stable@kernel.org
Reviewed-by: Adam Jackson <ajax@redhat.com>
Signed-Off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/gpu/drm/i915/intel_dp.c | 49 ++++++++++++++++++++++++++++------------
1 file changed, 35 insertions(+), 14 deletions(-)
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -219,14 +219,38 @@ intel_dp_max_data_rate(int max_link_cloc
return (max_link_clock * max_lanes * 8) / 10;
}
+static bool
+intel_dp_adjust_dithering(struct intel_dp *intel_dp,
+ struct drm_display_mode *mode,
+ struct drm_display_mode *adjusted_mode)
+{
+ int max_link_clock = intel_dp_link_clock(intel_dp_max_link_bw(intel_dp));
+ int max_lanes = intel_dp_max_lane_count(intel_dp);
+ int max_rate, mode_rate;
+
+ mode_rate = intel_dp_link_required(mode->clock, 24);
+ max_rate = intel_dp_max_data_rate(max_link_clock, max_lanes);
+
+ if (mode_rate > max_rate) {
+ mode_rate = intel_dp_link_required(mode->clock, 18);
+ if (mode_rate > max_rate)
+ return false;
+
+ if (adjusted_mode)
+ adjusted_mode->private_flags
+ |= INTEL_MODE_DP_FORCE_6BPC;
+
+ return true;
+ }
+
+ return true;
+}
+
static int
intel_dp_mode_valid(struct drm_connector *connector,
struct drm_display_mode *mode)
{
struct intel_dp *intel_dp = intel_attached_dp(connector);
- int max_link_clock = intel_dp_link_clock(intel_dp_max_link_bw(intel_dp));
- int max_lanes = intel_dp_max_lane_count(intel_dp);
- int max_rate, mode_rate;
if (is_edp(intel_dp) && intel_dp->panel_fixed_mode) {
if (mode->hdisplay > intel_dp->panel_fixed_mode->hdisplay)
@@ -236,16 +260,8 @@ intel_dp_mode_valid(struct drm_connector
return MODE_PANEL;
}
- mode_rate = intel_dp_link_required(mode->clock, 24);
- max_rate = intel_dp_max_data_rate(max_link_clock, max_lanes);
-
- if (mode_rate > max_rate) {
- mode_rate = intel_dp_link_required(mode->clock, 18);
- if (mode_rate > max_rate)
- return MODE_CLOCK_HIGH;
- else
- mode->private_flags |= INTEL_MODE_DP_FORCE_6BPC;
- }
+ if (!intel_dp_adjust_dithering(intel_dp, mode, NULL))
+ return MODE_CLOCK_HIGH;
if (mode->clock < 10000)
return MODE_CLOCK_LOW;
@@ -673,7 +689,7 @@ intel_dp_mode_fixup(struct drm_encoder *
int lane_count, clock;
int max_lane_count = intel_dp_max_lane_count(intel_dp);
int max_clock = intel_dp_max_link_bw(intel_dp) == DP_LINK_BW_2_7 ? 1 : 0;
- int bpp = mode->private_flags & INTEL_MODE_DP_FORCE_6BPC ? 18 : 24;
+ int bpp;
static int bws[2] = { DP_LINK_BW_1_62, DP_LINK_BW_2_7 };
if (is_edp(intel_dp) && intel_dp->panel_fixed_mode) {
@@ -687,6 +703,11 @@ intel_dp_mode_fixup(struct drm_encoder *
mode->clock = intel_dp->panel_fixed_mode->clock;
}
+ if (!intel_dp_adjust_dithering(intel_dp, mode, adjusted_mode))
+ return false;
+
+ bpp = adjusted_mode->private_flags & INTEL_MODE_DP_FORCE_6BPC ? 18 : 24;
+
for (lane_count = 1; lane_count <= max_lane_count; lane_count <<= 1) {
for (clock = 0; clock <= max_clock; clock++) {
int link_avail = intel_dp_max_data_rate(intel_dp_link_clock(bws[clock]), lane_count);
next prev parent reply other threads:[~2012-04-19 21:15 UTC|newest]
Thread overview: 70+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-04-19 21:09 [ 00/68] 3.2.16-stable review Greg KH
2012-04-19 21:08 ` [ 01/68] drm/i915: mask transcoder select bits before setting them on LVDS Greg KH
2012-04-19 21:08 ` [ 02/68] drm/radeon/kms: fix DVO setup on some r4xx chips Greg KH
2012-04-19 21:08 ` [ 03/68] drm/i915/ringbuffer: Exclude last 2 cachlines of ring on 845g Greg KH
2012-04-19 21:08 ` [ 04/68] drm/radeon: only add the mm i2c bus if the hw_i2c module param is set Greg KH
2012-04-19 21:08 ` Greg KH [this message]
2012-04-19 21:08 ` [ 06/68] drm/i915: make rc6 module parameter read-only Greg KH
2012-04-19 21:08 ` [ 07/68] rtlwifi: Add missing DMA buffer unmapping for PCI drivers Greg KH
2012-04-19 21:08 ` [ 08/68] ARM: 7379/1: DT: fix atags_to_fdt() second call site Greg KH
2012-04-19 21:08 ` [ 09/68] ARM: 7384/1: ThumbEE: Disable userspace TEEHBR access for !CONFIG_ARM_THUMBEE Greg KH
2012-04-19 21:08 ` [ 10/68] md/bitmap: prevent bitmap_daemon_work running while initialising bitmap Greg KH
2012-04-19 21:08 ` [ 11/68] [PATCH] Bluetooth: uart-ldisc: Fix memory leak Greg KH
2012-04-19 21:08 ` [ 12/68] Bluetooth: hci_ldisc: fix NULL-pointer dereference on tty_close Greg KH
2012-04-19 21:08 ` [ 13/68] ext4: address scalability issue by removing extent cache statistics Greg KH
2012-04-19 21:08 ` [ 14/68] ia64: fix futex_atomic_cmpxchg_inatomic() Greg KH
2012-04-19 21:08 ` [ 15/68] drivers/rtc/rtc-pl031.c: enable clock on all ST variants Greg KH
2012-04-19 21:08 ` [ 16/68] hugetlb: fix race condition in hugetlb_fault() Greg KH
2012-04-19 21:08 ` [ 17/68] staging: iio: hmc5843: Fix crash in probe function Greg KH
2012-04-19 21:08 ` [ 18/68] tty: serial: altera_uart: Check for NULL platform_data in probe Greg KH
2012-04-19 21:08 ` [ 19/68] sparc64: Eliminate obsolete __handle_softirq() function Greg KH
2012-04-19 21:08 ` [ 20/68] sparc64: Fix bootup crash on sun4v Greg KH
2012-04-19 21:08 ` [ 21/68] cciss: Initialize scsi host max_sectors for tape drive support Greg KH
2012-04-19 21:08 ` [ 22/68] cciss: Fix scsi tape io with more than 255 scatter gather elements Greg KH
2012-04-19 21:08 ` [ 23/68] perf hists: Catch and handle out-of-date hist entry maps Greg KH
2012-04-19 21:08 ` [ 24/68] video:uvesafb: Fix oops that uvesafb try to execute NX-protected page Greg KH
2012-04-19 21:08 ` [ 25/68] nohz: Fix stale jiffies update in tick_nohz_restart() Greg KH
2012-04-19 21:08 ` [ 26/68] pch_uart: Fix MSI setting issue Greg KH
2012-04-19 21:08 ` [ 27/68] USB: serial: fix race between probe and open Greg KH
2012-04-19 21:08 ` [ 28/68] USB: pl2303: fix DTR/RTS being raised on baud rate change Greg KH
2012-04-19 21:08 ` [ 29/68] USB: option: re-add NOVATELWIRELESS_PRODUCT_HSPA_HIGHSPEED to option_id array Greg KH
2012-04-19 21:08 ` [ 30/68] USB: ftdi_sio: fix status line change handling for TIOCMIWAIT and TIOCGICOUNT Greg KH
2012-04-19 21:08 ` [ 31/68] USB: ftdi_sio: fix race condition in TIOCMIWAIT, and abort of TIOCMIWAIT when the device is removed Greg KH
2012-04-19 21:08 ` [ 32/68] USB: sierra: add support for Sierra Wireless MC7710 Greg KH
2012-04-19 21:08 ` [ 33/68] USB: dont clear urb->dev in scatter-gather library Greg KH
2012-04-19 21:08 ` [ 34/68] USB: dont ignore suspend errors for root hubs Greg KH
2012-04-19 21:08 ` [ 35/68] xhci: dont re-enable IE constantly Greg KH
2012-04-19 21:08 ` [ 36/68] xhci: Dont write zeroed pointers to xHC registers Greg KH
2012-04-19 21:08 ` [ 37/68] xhci: Restore event ring dequeue pointer on resume Greg KH
2012-04-19 21:08 ` [ 38/68] USB: fix bug of device descriptor got from superspeed device Greg KH
2012-04-19 21:08 ` [ 39/68] xHCI: add XHCI_RESET_ON_RESUME quirk for VIA xHCI host Greg KH
2012-04-19 21:08 ` [ 40/68] xHCI: Correct the #define XHCI_LEGACY_DISABLE_SMI Greg KH
2012-04-19 21:08 ` [ 41/68] [S390] fix tlb flushing for page table pages Greg KH
2012-04-19 21:09 ` [ 42/68] serial: PL011: clear pending interrupts Greg KH
2012-04-19 21:09 ` [ 43/68] serial: PL011: move interrupt clearing Greg KH
2012-04-19 21:09 ` [ 44/68] fcaps: clear the same personality flags as suid when fcaps are used Greg KH
2012-04-19 21:09 ` [ 45/68] [PATCH] ath9k: fix max noise floor threshold Greg KH
2012-04-19 21:09 ` [ 46/68] xhci: Fix register save/restore order Greg KH
2012-04-19 21:09 ` [ 47/68] Bluetooth: hci_core: fix NULL-pointer dereference at unregister Greg KH
2012-04-19 21:09 ` [ 48/68] pch_gpio: Support new device LAPIS Semiconductor ML7831 IOH Greg KH
2012-04-19 21:09 ` [ 49/68] gpio: Add missing spin_lock_init in gpio-pch driver Greg KH
2012-04-19 21:09 ` [ 50/68] usb: gadget: pch_udc: Fix disconnect issue Greg KH
2012-04-19 21:09 ` [ 51/68] usb: gadget: pch_udc: Fix wrong return value Greg KH
2012-04-19 21:09 ` [ 52/68] usb: gadget: pch_udc: Fix USB suspend issue Greg KH
2012-04-19 21:09 ` [ 53/68] usb: gadget: pch_udc: Fix usb/gadget/pch_udc: Fix ether gadget connect/disconnect issue Greg KH
2012-04-19 21:09 ` [ 54/68] usb: gadget: pch_udc: Reduce redundant interrupt Greg KH
2012-04-19 21:09 ` [ 55/68] ACPICA: Fix to allow region arguments to reference other scopes Greg KH
2012-04-19 21:09 ` [ 56/68] security: fix compile error in commoncap.c Greg KH
2012-04-19 21:09 ` [ 57/68] pch_gbe: Do not abort probe on bad MAC Greg KH
2012-04-19 21:09 ` [ 58/68] pch_gbe: memory corruption calling pch_gbe_validate_option() Greg KH
2012-04-19 21:09 ` [ 59/68] pch_dma: Support new device LAPIS Semiconductor ML7831 IOH Greg KH
2012-04-19 21:09 ` [ 60/68] spi-topcliff-pch: fix -Wuninitialized warning Greg KH
2012-04-19 21:09 ` [ 61/68] spi-topcliff-pch: Support new device LAPIS Semiconductor ML7831 IOH Greg KH
2012-04-19 21:09 ` [ 62/68] Bluetooth: Adding USB device 13d3:3375 as an Atheros AR3012 Greg KH
2012-04-19 21:09 ` [ 63/68] Bluetooth: Add Atheros maryann PIDVID support Greg KH
2012-04-19 21:09 ` [ 64/68] Bluetooth: Add support for BCM20702A0 [0a5c:21e3] Greg KH
2012-04-19 21:09 ` [ 65/68] futex: Do not leak robust list to unprivileged process Greg KH
2012-04-19 21:09 ` [ 66/68] drm/radeon/kms: fix the regression of DVI connector check Greg KH
2012-04-19 21:09 ` [ 67/68] drm/radeon: disable MSI on RV515 Greg KH
2012-04-19 21:09 ` [ 68/68] drm/radeon: fix load detect on rn50 with hardcoded EDIDs Greg KH
2012-04-21 12:55 ` [ 00/68] 3.2.16-stable review Ben Hutchings
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20120419210819.120235243@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=ajax@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=daniel.vetter@ffwll.ch \
--cc=linux-kernel@vger.kernel.org \
--cc=stable@vger.kernel.org \
--cc=torvalds@linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome