[kernel] r19903 - in dists/sid/linux/debian: . config patches patches/bugfix/all patches/bugfix/x86 patches/debian patches/features/all/drm
Ben Hutchings
benh at alioth.debian.org
Wed Mar 6 14:25:43 UTC 2013
Author: benh
Date: Wed Mar 6 14:25:42 2013
New Revision: 19903
Log:
Update to 3.2.40
Drop various patches which went into this.
Avoid ABI change in PPS, and ignore ABI change in rtlwifi.
rt patch 0134 no longer applies and I can't see how to fix it, but
hopefully this will be resolved in a new stable-rt update shortly.
Added:
dists/sid/linux/debian/patches/debian/pps-avoid-abi-change-in-3.2.40.patch
Deleted:
dists/sid/linux/debian/patches/bugfix/all/USB-usb-storage-unusual_devs-update-for-Super-TOP-SA.patch
dists/sid/linux/debian/patches/bugfix/all/exec-use-ELOOP-for-max-recursion-depth.patch
dists/sid/linux/debian/patches/bugfix/all/ext4-fix-hole-punch-failure-when-depth-is-greater-th.patch
dists/sid/linux/debian/patches/bugfix/all/ext4-fix-kernel-BUG-on-large-scale-rm-rf-commands.patch
dists/sid/linux/debian/patches/bugfix/all/ext4-rewrite-punch-hole-to-use-ext4_ext_remove_space.patch
dists/sid/linux/debian/patches/bugfix/all/fs-cachefiles-add-support-for-large-files-in-filesys.patch
dists/sid/linux/debian/patches/bugfix/all/kmod-introduce-call_modprobe-helper.patch
dists/sid/linux/debian/patches/bugfix/all/kmod-make-__request_module-killable.patch
dists/sid/linux/debian/patches/bugfix/all/mm-fix-pageblock-bitmap-allocation.patch
dists/sid/linux/debian/patches/bugfix/all/speakup-lower-default-software-speech-rate.patch
dists/sid/linux/debian/patches/bugfix/all/usb-Add-USB_QUIRK_RESET_RESUME-for-all-Logitech-UVC-.patch
dists/sid/linux/debian/patches/bugfix/all/usb-Add-quirk-detection-based-on-interface-informati.patch
dists/sid/linux/debian/patches/bugfix/all/usermodehelper-____call_usermodehelper-doesnt-need-do_exit.patch
dists/sid/linux/debian/patches/bugfix/all/usermodehelper-implement-UMH_KILLABLE.patch
dists/sid/linux/debian/patches/bugfix/all/usermodehelper-introduce-umh_complete.patch
dists/sid/linux/debian/patches/bugfix/all/vhost-fix-length-for-cross-region-descriptor.patch
dists/sid/linux/debian/patches/bugfix/x86/asus-laptop-Do-not-call-HWRS-on-init.patch
dists/sid/linux/debian/patches/bugfix/x86/efi-Clear-EFI_RUNTIME_SERVICES-rather-than-EFI_BOOT-.patch
dists/sid/linux/debian/patches/bugfix/x86/x86-efi-Make-noefi-really-disable-EFI-runtime-serivc.patch
Modified:
dists/sid/linux/debian/changelog
dists/sid/linux/debian/config/defines
dists/sid/linux/debian/patches/features/all/drm/drm-3.4.patch
dists/sid/linux/debian/patches/series
Modified: dists/sid/linux/debian/changelog
==============================================================================
--- dists/sid/linux/debian/changelog Mon Mar 4 13:40:56 2013 (r19902)
+++ dists/sid/linux/debian/changelog Wed Mar 6 14:25:42 2013 (r19903)
@@ -1,4 +1,51 @@
-linux (3.2.39-3) UNRELEASED; urgency=low
+linux (3.2.40-1) UNRELEASED; urgency=low
+
+ * New upstream stable update:
+ http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.40
+ - ext4: return ENOMEM if sb_getblk() fails
+ - ext4: fix possible use-after-free with AIO
+ - s390/kvm: Fix store status for ACRS/FPRS
+ - staging: comedi: disallow COMEDI_DEVCONFIG on non-board minors
+ - ext4: fix race in ext4_mb_add_n_trim()
+ - UBIFS: fix double free of ubifs_orphan objects
+ - hrtimer: Prevent hrtimer_enqueue_reprogram race
+ - nfsd: Fix memleak
+ - x86: Do not leak kernel page mapping locations
+ - USB: usb-storage: unusual_devs update for Super TOP SATA bridge
+ - posix-cpu-timers: Fix nanosleep task_struct leak
+ - NFSv4.1: Don't decode skipped layoutgets
+ - cgroup: fix exit() vs rmdir() race
+ - cpuset: fix cpuset_print_task_mems_allowed() vs rename() race
+ - ext4: fix xattr block allocation/release with bigalloc
+ - mm: fix pageblock bitmap allocation
+ - target: Add missing mapped_lun bounds checking during make_mappedlun
+ setup
+ - b43: Increase number of RX DMA slots
+ - posix-timer: Don't call idr_find() with out-of-range ID
+ - fs: Fix possible use-after-free with AIO
+ - powerpc/kexec: Disable hard IRQ before kexec
+ - mmu_notifier_unregister NULL Pointer deref and multiple ->release()
+ callouts
+ - tmpfs: fix use-after-free of mempolicy object (CVE-2013-1767)
+ - ocfs2: fix possible use-after-free with AIO
+ - ocfs2: fix ocfs2_init_security_and_acl() to initialize acl correctly
+ - ocfs2: ac->ac_allow_chain_relink=0 won't disable group relink
+ - idr: fix a subtle bug in idr_get_next()
+ - idr: make idr_get_next() good for rcu_read_lock()
+ - idr: fix top layer handling
+ - sysctl: fix null checking in bin_dn_node_address()
+ - nbd: fsync and kill block device on shutdown
+ - s390/timer: avoid overflow when programming clock comparator
+ (regression in 3.2.38)
+ - xen-pciback: rate limit error messages from xen_pcibk_enable_msi{,x}()
+ (CVE-2013-0231)
+ - xen-netback: correctly return errors from netbk_count_requests()
+ - xen-netback: cancel the credit timer when taking the vif down
+ - ipv6: use a stronger hash for tcp
+ - staging: comedi: ni_labpc: correct differential channel sequence for
+ AI commands
+ - staging: comedi: ni_labpc: set up command4 register *after* command3
+ - vhost: fix length for cross region descriptor (CVE-2013-0311)
[ Aurelien Jarno]
* [mips,mipsel] Disable VGA_CONSOLE and ignore the corresponding ABI
@@ -11,7 +58,6 @@
[ Ben Hutchings ]
* [x86] ata_piix: reenable MS Virtual PC guests (fixes regression in
3.2.19-1)
- * vhost: fix length for cross region descriptor (CVE-2013-0311)
* test-patches: Clean up all previous test patches, whether or not they
were applied
* test-patches: Add --fuzz option to allow testing patches that have fuzz
Modified: dists/sid/linux/debian/config/defines
==============================================================================
--- dists/sid/linux/debian/config/defines Mon Mar 4 13:40:56 2013 (r19902)
+++ dists/sid/linux/debian/config/defines Wed Mar 6 14:25:42 2013 (r19903)
@@ -39,6 +39,8 @@
vring_*
# No-one should depend on staging from OOT
module:drivers/staging/*
+# Private to this family of drivers
+ module:drivers/net/wireless/rtlwifi/*
[base]
arches:
Added: dists/sid/linux/debian/patches/debian/pps-avoid-abi-change-in-3.2.40.patch
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ dists/sid/linux/debian/patches/debian/pps-avoid-abi-change-in-3.2.40.patch Wed Mar 6 14:25:42 2013 (r19903)
@@ -0,0 +1,27 @@
+From: Ben Hutchings <ben at decadent.org.uk>
+Subject: pps: avoid ABI change in 3.2.40
+Date: Wed, 06 Mar 2013 14:15:34 +0000
+
+Move the new member pps_device::lookup_cookie to the end of the
+structure and hide it from genksyms. This structure is always
+allocated by pps_register_source().
+
+---
+--- a/include/linux/pps_kernel.h
++++ b/include/linux/pps_kernel.h
+@@ -69,11 +69,14 @@ struct pps_device {
+ wait_queue_head_t queue; /* PPS event queue */
+
+ unsigned int id; /* PPS source unique ID */
+- void const *lookup_cookie; /* pps_lookup_dev only */
+ struct cdev cdev;
+ struct device *dev;
+ struct fasync_struct *async_queue; /* fasync method */
+ spinlock_t lock;
++
++#ifndef __GENKSYMS__
++ void const *lookup_cookie; /* pps_lookup_dev only */
++#endif
+ };
+
+ /*
Modified: dists/sid/linux/debian/patches/features/all/drm/drm-3.4.patch
==============================================================================
--- dists/sid/linux/debian/patches/features/all/drm/drm-3.4.patch Mon Mar 4 13:40:56 2013 (r19902)
+++ dists/sid/linux/debian/patches/features/all/drm/drm-3.4.patch Wed Mar 6 14:25:42 2013 (r19903)
@@ -2237,20 +2237,10 @@
atomic_inc(&dev->counts[_DRM_STAT_IOCTLS]);
++file_priv->ioctl_count;
diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
-index bb95d59..9d9835a 100644
+index 9080eb7..9d9835a 100644
--- a/drivers/gpu/drm/drm_edid.c
+++ b/drivers/gpu/drm/drm_edid.c
-@@ -87,9 +87,6 @@ static struct edid_quirk {
- int product_id;
- u32 quirks;
- } edid_quirk_list[] = {
-- /* ASUS VW222S */
-- { "ACI", 0x22a2, EDID_QUIRK_FORCE_REDUCED_BLANKING },
--
- /* Acer AL1706 */
- { "ACR", 44358, EDID_QUIRK_PREFER_LARGE_60 },
- /* Acer F51 */
-@@ -157,8 +154,7 @@ EXPORT_SYMBOL(drm_edid_header_is_valid);
+@@ -154,8 +154,7 @@ EXPORT_SYMBOL(drm_edid_header_is_valid);
* Sanity check the EDID block (base or extension). Return 0 if the block
* doesn't check out, or 1 if it's valid.
*/
@@ -2260,7 +2250,7 @@
{
int i;
u8 csum = 0;
-@@ -211,6 +207,7 @@ bad:
+@@ -208,6 +207,7 @@ bad:
}
return 0;
}
@@ -2268,7 +2258,7 @@
/**
* drm_edid_is_valid - sanity check EDID data
-@@ -234,7 +231,6 @@ bool drm_edid_is_valid(struct edid *edid)
+@@ -231,7 +231,6 @@ bool drm_edid_is_valid(struct edid *edid)
}
EXPORT_SYMBOL(drm_edid_is_valid);
@@ -2276,7 +2266,7 @@
#define DDC_SEGMENT_ADDR 0x30
/**
* Get EDID information via I2C.
-@@ -521,25 +517,10 @@ static void
+@@ -518,25 +517,10 @@ static void
cea_for_each_detailed_block(u8 *ext, detailed_cb *cb, void *closure)
{
int i, n = 0;
@@ -2304,7 +2294,7 @@
for (i = 0; i < n; i++)
cb((struct detailed_timing *)(det_base + 18 * i), closure);
}
-@@ -773,7 +754,7 @@ drm_mode_std(struct drm_connector *connector, struct edid *edid,
+@@ -770,7 +754,7 @@ drm_mode_std(struct drm_connector *connector, struct edid *edid,
*/
mode = drm_gtf_mode(dev, hsize, vsize, vrefresh_rate, 0, 0);
if (drm_mode_hsync(mode) > drm_gtf2_hbreak(edid)) {
@@ -2313,7 +2303,7 @@
mode = drm_gtf_mode_complex(dev, hsize, vsize,
vrefresh_rate, 0, 0,
drm_gtf2_m(edid),
-@@ -1341,6 +1322,7 @@ add_detailed_modes(struct drm_connector *connector, struct edid *edid,
+@@ -1338,6 +1322,7 @@ add_detailed_modes(struct drm_connector *connector, struct edid *edid,
#define HDMI_IDENTIFIER 0x000C03
#define AUDIO_BLOCK 0x01
@@ -2321,7 +2311,7 @@
#define VENDOR_BLOCK 0x03
#define SPEAKER_BLOCK 0x04
#define EDID_BASIC_AUDIO (1 << 6)
-@@ -1371,6 +1353,47 @@ u8 *drm_find_cea_extension(struct edid *edid)
+@@ -1368,6 +1353,47 @@ u8 *drm_find_cea_extension(struct edid *edid)
}
EXPORT_SYMBOL(drm_find_cea_extension);
@@ -2369,7 +2359,7 @@
static void
parse_hdmi_vsdb(struct drm_connector *connector, uint8_t *db)
{
-@@ -1454,26 +1477,29 @@ void drm_edid_to_eld(struct drm_connector *connector, struct edid *edid)
+@@ -1451,26 +1477,29 @@ void drm_edid_to_eld(struct drm_connector *connector, struct edid *edid)
eld[18] = edid->prod_code[0];
eld[19] = edid->prod_code[1];
@@ -2418,10 +2408,13 @@
eld[5] |= sad_count << 4;
eld[2] = (20 + mnl + sad_count * 3 + 3) / 4;
-@@ -1744,6 +1770,7 @@ int drm_add_edid_modes(struct drm_connector *connector, struct edid *edid)
+@@ -1740,8 +1769,8 @@ int drm_add_edid_modes(struct drm_connector *connector, struct edid *edid)
+ num_modes += add_cvt_modes(connector, edid);
num_modes += add_standard_modes(connector, edid);
num_modes += add_established_modes(connector, edid);
- num_modes += add_inferred_modes(connector, edid);
+- if (edid->features & DRM_EDID_FEATURE_DEFAULT_GTF)
+- num_modes += add_inferred_modes(connector, edid);
++ num_modes += add_inferred_modes(connector, edid);
+ num_modes += add_cea_modes(connector, edid);
if (quirks & (EDID_QUIRK_PREFER_LARGE_60 | EDID_QUIRK_PREFER_LARGE_75))
@@ -4317,7 +4310,7 @@
diff --git a/drivers/gpu/drm/drm_usb.c b/drivers/gpu/drm/drm_usb.c
-index 445003f..37c9a52 100644
+index 471f453..37c9a52 100644
--- a/drivers/gpu/drm/drm_usb.c
+++ b/drivers/gpu/drm/drm_usb.c
@@ -1,8 +1,7 @@
@@ -4330,6 +4323,15 @@
int drm_get_usb_dev(struct usb_interface *interface,
const struct usb_device_id *id,
struct drm_driver *driver)
+@@ -19,7 +18,7 @@ int drm_get_usb_dev(struct usb_interface *interface,
+
+ usbdev = interface_to_usbdev(interface);
+ dev->usbdev = usbdev;
+- dev->dev = &interface->dev;
++ dev->dev = &usbdev->dev;
+
+ mutex_lock(&drm_global_mutex);
+
@@ -115,4 +114,7 @@ void drm_usb_exit(struct drm_driver *driver,
usb_deregister(udriver);
}
@@ -42875,7 +42877,7 @@
dvo_ch7xxx.o \
dvo_ch7017.o \
diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
-index 10fe480..e6162a1 100644
+index 5620192..e6162a1 100644
--- a/drivers/gpu/drm/i915/i915_debugfs.c
+++ b/drivers/gpu/drm/i915/i915_debugfs.c
@@ -30,7 +30,6 @@
@@ -43063,7 +43065,7 @@
seq_printf(m, "Time: %ld s %ld us\n", error->time.tv_sec,
error->time.tv_usec);
-- seq_printf(m, "Kernel: " UTS_RELEASE);
+- seq_printf(m, "Kernel: " UTS_RELEASE "\n");
seq_printf(m, "PCI ID: 0x%04x\n", dev->pci_device);
seq_printf(m, "EIR: 0x%08x\n", error->eir);
seq_printf(m, "PGTBL_ER: 0x%08x\n", error->pgtbl_er);
@@ -47730,7 +47732,7 @@
drm_encoder_helper_add(&crt->base.base, &intel_crt_helper_funcs);
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
-index 7817429..3c9b9c5 100644
+index 2303c2b..3c9b9c5 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -75,7 +75,7 @@ struct intel_limit {
@@ -47768,6 +47770,17 @@
static inline u32 /* units of 100MHz */
intel_fdi_link_freq(struct drm_device *dev)
+@@ -138,8 +142,8 @@ static const intel_limit_t intel_limits_i9xx_sdvo = {
+ .vco = { .min = 1400000, .max = 2800000 },
+ .n = { .min = 1, .max = 6 },
+ .m = { .min = 70, .max = 120 },
+- .m1 = { .min = 8, .max = 18 },
+- .m2 = { .min = 3, .max = 7 },
++ .m1 = { .min = 10, .max = 22 },
++ .m2 = { .min = 5, .max = 9 },
+ .p = { .min = 5, .max = 80 },
+ .p1 = { .min = 1, .max = 8 },
+ .p2 = { .dot_limit = 200000,
@@ -534,7 +538,8 @@ static bool intel_PLL_is_valid(struct drm_device *dev,
static bool
@@ -48066,7 +48079,29 @@
intel_fdi_normal_train(crtc);
-@@ -3331,10 +3392,12 @@ static void intel_crtc_disable(struct drm_crtc *crtc)
+@@ -3242,7 +3303,6 @@ static void i9xx_crtc_disable(struct drm_crtc *crtc)
+ struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
+ int pipe = intel_crtc->pipe;
+ int plane = intel_crtc->plane;
+- u32 pctl;
+
+ if (!intel_crtc->active)
+ return;
+@@ -3258,13 +3318,6 @@ static void i9xx_crtc_disable(struct drm_crtc *crtc)
+
+ intel_disable_plane(dev_priv, plane, pipe);
+ intel_disable_pipe(dev_priv, pipe);
+-
+- /* Disable pannel fitter if it is on this pipe. */
+- pctl = I915_READ(PFIT_CONTROL);
+- if ((pctl & PFIT_ENABLE) &&
+- ((pctl & PFIT_PIPE_MASK) >> PFIT_PIPE_SHIFT) == pipe)
+- I915_WRITE(PFIT_CONTROL, 0);
+-
+ intel_disable_pll(dev_priv, pipe);
+
+ intel_crtc->active = false;
+@@ -3339,10 +3392,12 @@ static void intel_crtc_disable(struct drm_crtc *crtc)
struct drm_device *dev = crtc->dev;
crtc_funcs->dpms(crtc, DRM_MODE_DPMS_OFF);
@@ -48080,7 +48115,7 @@
mutex_unlock(&dev->struct_mutex);
}
}
-@@ -3408,10 +3471,10 @@ static bool intel_crtc_mode_fixup(struct drm_crtc *crtc,
+@@ -3416,10 +3471,10 @@ static bool intel_crtc_mode_fixup(struct drm_crtc *crtc,
return false;
}
@@ -48095,7 +48130,7 @@
drm_mode_set_crtcinfo(adjusted_mode, 0);
return true;
-@@ -4527,10 +4590,11 @@ static void ironlake_update_wm(struct drm_device *dev)
+@@ -4535,10 +4590,11 @@ static void ironlake_update_wm(struct drm_device *dev)
*/
}
@@ -48108,7 +48143,7 @@
int fbc_wm, plane_wm, cursor_wm;
unsigned int enabled;
-@@ -4539,8 +4603,10 @@ static void sandybridge_update_wm(struct drm_device *dev)
+@@ -4547,8 +4603,10 @@ static void sandybridge_update_wm(struct drm_device *dev)
&sandybridge_display_wm_info, latency,
&sandybridge_cursor_wm_info, latency,
&plane_wm, &cursor_wm)) {
@@ -48121,7 +48156,7 @@
DRM_DEBUG_KMS("FIFO watermarks For pipe A -"
" plane %d, " "cursor: %d\n",
plane_wm, cursor_wm);
-@@ -4551,8 +4617,10 @@ static void sandybridge_update_wm(struct drm_device *dev)
+@@ -4559,8 +4617,10 @@ static void sandybridge_update_wm(struct drm_device *dev)
&sandybridge_display_wm_info, latency,
&sandybridge_cursor_wm_info, latency,
&plane_wm, &cursor_wm)) {
@@ -48134,7 +48169,7 @@
DRM_DEBUG_KMS("FIFO watermarks For pipe B -"
" plane %d, cursor: %d\n",
plane_wm, cursor_wm);
-@@ -4565,8 +4633,10 @@ static void sandybridge_update_wm(struct drm_device *dev)
+@@ -4573,8 +4633,10 @@ static void sandybridge_update_wm(struct drm_device *dev)
&sandybridge_display_wm_info, latency,
&sandybridge_cursor_wm_info, latency,
&plane_wm, &cursor_wm)) {
@@ -48147,7 +48182,7 @@
DRM_DEBUG_KMS("FIFO watermarks For pipe C -"
" plane %d, cursor: %d\n",
plane_wm, cursor_wm);
-@@ -4587,7 +4657,8 @@ static void sandybridge_update_wm(struct drm_device *dev)
+@@ -4595,7 +4657,8 @@ static void sandybridge_update_wm(struct drm_device *dev)
I915_WRITE(WM2_LP_ILK, 0);
I915_WRITE(WM1_LP_ILK, 0);
@@ -48157,7 +48192,7 @@
return;
enabled = ffs(enabled) - 1;
-@@ -4637,6 +4708,161 @@ static void sandybridge_update_wm(struct drm_device *dev)
+@@ -4645,6 +4708,161 @@ static void sandybridge_update_wm(struct drm_device *dev)
cursor_wm);
}
@@ -48319,7 +48354,7 @@
/**
* intel_update_watermarks - update FIFO watermark values based on current modes
*
-@@ -4677,6 +4903,16 @@ static void intel_update_watermarks(struct drm_device *dev)
+@@ -4685,6 +4903,16 @@ static void intel_update_watermarks(struct drm_device *dev)
dev_priv->display.update_wm(dev);
}
@@ -48336,7 +48371,7 @@
static inline bool intel_panel_use_ssc(struct drm_i915_private *dev_priv)
{
if (i915_panel_use_ssc >= 0)
-@@ -4824,6 +5060,82 @@ static bool intel_choose_pipe_bpp_dither(struct drm_crtc *crtc,
+@@ -4832,6 +5060,82 @@ static bool intel_choose_pipe_bpp_dither(struct drm_crtc *crtc,
return display_bpc != bpc;
}
@@ -48419,7 +48454,7 @@
static int i9xx_crtc_mode_set(struct drm_crtc *crtc,
struct drm_display_mode *mode,
struct drm_display_mode *adjusted_mode,
-@@ -4837,7 +5149,7 @@ static int i9xx_crtc_mode_set(struct drm_crtc *crtc,
+@@ -4845,7 +5149,7 @@ static int i9xx_crtc_mode_set(struct drm_crtc *crtc,
int plane = intel_crtc->plane;
int refclk, num_connectors = 0;
intel_clock_t clock, reduced_clock;
@@ -48428,7 +48463,7 @@
bool ok, has_reduced_clock = false, is_sdvo = false, is_dvo = false;
bool is_crt = false, is_lvds = false, is_tv = false, is_dp = false;
struct drm_mode_config *mode_config = &dev->mode_config;
-@@ -4878,15 +5190,7 @@ static int i9xx_crtc_mode_set(struct drm_crtc *crtc,
+@@ -4886,15 +5190,7 @@ static int i9xx_crtc_mode_set(struct drm_crtc *crtc,
num_connectors++;
}
@@ -48445,7 +48480,7 @@
/*
* Returns a set of divisors for the desired target clock with the given
-@@ -4894,7 +5198,8 @@ static int i9xx_crtc_mode_set(struct drm_crtc *crtc,
+@@ -4902,7 +5198,8 @@ static int i9xx_crtc_mode_set(struct drm_crtc *crtc,
* reflck * (5 * (m1 + 2) + (m2 + 2)) / (n + 2) / p1 / p2.
*/
limit = intel_limit(crtc, refclk);
@@ -48455,7 +48490,7 @@
if (!ok) {
DRM_ERROR("Couldn't find PLL settings for mode!\n");
return -EINVAL;
-@@ -4904,53 +5209,24 @@ static int i9xx_crtc_mode_set(struct drm_crtc *crtc,
+@@ -4912,53 +5209,24 @@ static int i9xx_crtc_mode_set(struct drm_crtc *crtc,
intel_crtc_update_cursor(crtc, true);
if (is_lvds && dev_priv->lvds_downclock_avail) {
@@ -48521,7 +48556,7 @@
dpll = DPLL_VGA_MODE_DIS;
-@@ -5024,8 +5300,6 @@ static int i9xx_crtc_mode_set(struct drm_crtc *crtc,
+@@ -5032,8 +5300,6 @@ static int i9xx_crtc_mode_set(struct drm_crtc *crtc,
/* Set up the display plane register */
dspcntr = DISPPLANE_GAMMA_ENABLE;
@@ -48530,7 +48565,7 @@
if (pipe == 0)
dspcntr &= ~DISPPLANE_SEL_PIPE_MASK;
else
-@@ -5060,7 +5334,6 @@ static int i9xx_crtc_mode_set(struct drm_crtc *crtc,
+@@ -5068,7 +5334,6 @@ static int i9xx_crtc_mode_set(struct drm_crtc *crtc,
DRM_DEBUG_KMS("Mode for pipe %c:\n", pipe == 0 ? 'A' : 'B');
drm_mode_debug_printmodeline(mode);
@@ -48538,7 +48573,7 @@
I915_WRITE(DPLL(pipe), dpll & ~DPLL_VCO_ENABLE);
POSTING_READ(DPLL(pipe));
-@@ -5147,33 +5420,32 @@ static int i9xx_crtc_mode_set(struct drm_crtc *crtc,
+@@ -5155,33 +5420,32 @@ static int i9xx_crtc_mode_set(struct drm_crtc *crtc,
I915_WRITE(DPLL(pipe), dpll);
}
@@ -48587,7 +48622,7 @@
I915_WRITE(HTOTAL(pipe),
(adjusted_mode->crtc_hdisplay - 1) |
-@@ -5290,7 +5562,8 @@ void ironlake_init_pch_refclk(struct drm_device *dev)
+@@ -5298,7 +5562,8 @@ void ironlake_init_pch_refclk(struct drm_device *dev)
if (intel_panel_use_ssc(dev_priv) && can_ssc) {
DRM_DEBUG_KMS("Using SSC on panel\n");
temp |= DREF_SSC1_ENABLE;
@@ -48597,7 +48632,7 @@
/* Get SSC going before enabling the outputs */
I915_WRITE(PCH_DREF_CONTROL, temp);
-@@ -5439,7 +5712,8 @@ static int ironlake_crtc_mode_set(struct drm_crtc *crtc,
+@@ -5447,7 +5712,8 @@ static int ironlake_crtc_mode_set(struct drm_crtc *crtc,
* reflck * (5 * (m1 + 2) + (m2 + 2)) / (n + 2) / p1 / p2.
*/
limit = intel_limit(crtc, refclk);
@@ -48607,7 +48642,7 @@
if (!ok) {
DRM_ERROR("Couldn't find PLL settings for mode!\n");
return -EINVAL;
-@@ -5449,21 +5723,17 @@ static int ironlake_crtc_mode_set(struct drm_crtc *crtc,
+@@ -5457,21 +5723,17 @@ static int ironlake_crtc_mode_set(struct drm_crtc *crtc,
intel_crtc_update_cursor(crtc, true);
if (is_lvds && dev_priv->lvds_downclock_avail) {
@@ -48636,7 +48671,7 @@
}
/* SDVO TV has fixed PLL values depend on its clock range,
this mirrors vbios setting. */
-@@ -5758,17 +6028,19 @@ static int ironlake_crtc_mode_set(struct drm_crtc *crtc,
+@@ -5766,17 +6028,19 @@ static int ironlake_crtc_mode_set(struct drm_crtc *crtc,
}
}
@@ -48663,7 +48698,7 @@
I915_WRITE(HTOTAL(pipe),
(adjusted_mode->crtc_hdisplay - 1) |
-@@ -5811,12 +6083,6 @@ static int ironlake_crtc_mode_set(struct drm_crtc *crtc,
+@@ -5819,12 +6083,6 @@ static int ironlake_crtc_mode_set(struct drm_crtc *crtc,
intel_wait_for_vblank(dev, pipe);
@@ -48676,7 +48711,7 @@
I915_WRITE(DSPCNTR(plane), dspcntr);
POSTING_READ(DSPCNTR(plane));
-@@ -5843,14 +6109,45 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc,
+@@ -5851,14 +6109,45 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc,
ret = dev_priv->display.crtc_mode_set(crtc, mode, adjusted_mode,
x, y, old_fb);
@@ -48724,7 +48759,7 @@
static void g4x_write_eld(struct drm_connector *connector,
struct drm_crtc *crtc)
{
-@@ -5867,6 +6164,12 @@ static void g4x_write_eld(struct drm_connector *connector,
+@@ -5875,6 +6164,12 @@ static void g4x_write_eld(struct drm_connector *connector,
else
eldv = G4X_ELDV_DEVCTG;
@@ -48737,7 +48772,7 @@
i = I915_READ(G4X_AUD_CNTL_ST);
i &= ~(eldv | G4X_ELD_ADDR);
len = (i >> 9) & 0x1f; /* ELD buffer size */
-@@ -5894,22 +6197,26 @@ static void ironlake_write_eld(struct drm_connector *connector,
+@@ -5902,22 +6197,26 @@ static void ironlake_write_eld(struct drm_connector *connector,
uint32_t i;
int len;
int hdmiw_hdmiedid;
@@ -48770,7 +48805,7 @@
DRM_DEBUG_DRIVER("ELD on pipe %c\n", pipe_name(i));
-@@ -5918,14 +6225,27 @@ static void ironlake_write_eld(struct drm_connector *connector,
+@@ -5926,14 +6225,27 @@ static void ironlake_write_eld(struct drm_connector *connector,
if (!i) {
DRM_DEBUG_DRIVER("Audio directed to unknown port\n");
/* operate blindly on all ports */
@@ -48802,7 +48837,7 @@
i = I915_READ(aud_cntrl_st2);
i &= ~eldv;
I915_WRITE(aud_cntrl_st2, i);
-@@ -5933,13 +6253,8 @@ static void ironlake_write_eld(struct drm_connector *connector,
+@@ -5941,13 +6253,8 @@ static void ironlake_write_eld(struct drm_connector *connector,
if (!eld[0])
return;
@@ -48817,7 +48852,7 @@
I915_WRITE(aud_cntl_st, i);
len = min_t(uint8_t, eld[2], 21); /* 84 bytes of hw ELD buffer */
-@@ -6319,7 +6634,7 @@ static struct drm_display_mode load_detect_mode = {
+@@ -6327,7 +6634,7 @@ static struct drm_display_mode load_detect_mode = {
static struct drm_framebuffer *
intel_framebuffer_create(struct drm_device *dev,
@@ -48826,7 +48861,7 @@
struct drm_i915_gem_object *obj)
{
struct intel_framebuffer *intel_fb;
-@@ -6361,7 +6676,7 @@ intel_framebuffer_create_for_mode(struct drm_device *dev,
+@@ -6369,7 +6676,7 @@ intel_framebuffer_create_for_mode(struct drm_device *dev,
int depth, int bpp)
{
struct drm_i915_gem_object *obj;
@@ -48835,7 +48870,7 @@
obj = i915_gem_alloc_object(dev,
intel_framebuffer_size_for_mode(mode, bpp));
-@@ -6370,9 +6685,9 @@ intel_framebuffer_create_for_mode(struct drm_device *dev,
+@@ -6378,9 +6685,9 @@ intel_framebuffer_create_for_mode(struct drm_device *dev,
mode_cmd.width = mode->hdisplay;
mode_cmd.height = mode->vdisplay;
@@ -48848,7 +48883,7 @@
return intel_framebuffer_create(dev, &mode_cmd, obj);
}
-@@ -6393,11 +6708,11 @@ mode_fits_in_fbdev(struct drm_device *dev,
+@@ -6401,11 +6708,11 @@ mode_fits_in_fbdev(struct drm_device *dev,
return NULL;
fb = &dev_priv->fbdev->ifb.base;
@@ -48863,7 +48898,7 @@
return NULL;
return fb;
-@@ -6729,9 +7044,7 @@ static void intel_increase_pllclock(struct drm_crtc *crtc)
+@@ -6737,9 +7044,7 @@ static void intel_increase_pllclock(struct drm_crtc *crtc)
if (!HAS_PIPE_CXSR(dev) && (dpll & DISPLAY_RATE_SELECT_FPA1)) {
DRM_DEBUG_DRIVER("upclocking LVDS\n");
@@ -48874,7 +48909,7 @@
dpll &= ~DISPLAY_RATE_SELECT_FPA1;
I915_WRITE(dpll_reg, dpll);
-@@ -6740,9 +7053,6 @@ static void intel_increase_pllclock(struct drm_crtc *crtc)
+@@ -6748,9 +7053,6 @@ static void intel_increase_pllclock(struct drm_crtc *crtc)
dpll = I915_READ(dpll_reg);
if (dpll & DISPLAY_RATE_SELECT_FPA1)
DRM_DEBUG_DRIVER("failed to upclock LVDS!\n");
@@ -48884,7 +48919,7 @@
}
/* Schedule downclock */
-@@ -6755,9 +7065,6 @@ static void intel_decrease_pllclock(struct drm_crtc *crtc)
+@@ -6763,9 +7065,6 @@ static void intel_decrease_pllclock(struct drm_crtc *crtc)
struct drm_device *dev = crtc->dev;
drm_i915_private_t *dev_priv = dev->dev_private;
struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
@@ -48894,7 +48929,7 @@
if (HAS_PCH_SPLIT(dev))
return;
-@@ -6770,23 +7077,22 @@ static void intel_decrease_pllclock(struct drm_crtc *crtc)
+@@ -6778,23 +7077,22 @@ static void intel_decrease_pllclock(struct drm_crtc *crtc)
* the manual case.
*/
if (!HAS_PIPE_CXSR(dev) && intel_crtc->lowfreq_avail) {
@@ -48924,7 +48959,7 @@
}
/**
-@@ -6899,7 +7205,7 @@ static void intel_unpin_work_fn(struct work_struct *__work)
+@@ -6907,7 +7205,7 @@ static void intel_unpin_work_fn(struct work_struct *__work)
container_of(__work, struct intel_unpin_work, work);
mutex_lock(&work->dev->struct_mutex);
@@ -48933,7 +48968,7 @@
drm_gem_object_unreference(&work->pending_flip_obj->base);
drm_gem_object_unreference(&work->old_fb_obj->base);
-@@ -6927,18 +7233,11 @@ static void do_intel_finish_page_flip(struct drm_device *dev,
+@@ -6935,18 +7233,11 @@ static void do_intel_finish_page_flip(struct drm_device *dev,
spin_lock_irqsave(&dev->event_lock, flags);
work = intel_crtc->unpin_work;
@@ -48953,7 +48988,7 @@
intel_crtc->unpin_work = NULL;
if (work->event) {
-@@ -7010,25 +7309,16 @@ void intel_prepare_page_flip(struct drm_device *dev, int plane)
+@@ -7018,25 +7309,16 @@ void intel_prepare_page_flip(struct drm_device *dev, int plane)
to_intel_crtc(dev_priv->plane_to_crtc_mapping[plane]);
unsigned long flags;
@@ -48985,7 +49020,7 @@
static int intel_gen2_queue_flip(struct drm_device *dev,
struct drm_crtc *crtc,
struct drm_framebuffer *fb,
-@@ -7045,7 +7335,7 @@ static int intel_gen2_queue_flip(struct drm_device *dev,
+@@ -7053,7 +7335,7 @@ static int intel_gen2_queue_flip(struct drm_device *dev,
goto err;
/* Offset into the new buffer for cases of shared fbs between CRTCs */
@@ -48994,7 +49029,7 @@
ret = BEGIN_LP_RING(6);
if (ret)
-@@ -7062,16 +7352,14 @@ static int intel_gen2_queue_flip(struct drm_device *dev,
+@@ -7070,16 +7352,14 @@ static int intel_gen2_queue_flip(struct drm_device *dev,
OUT_RING(MI_NOOP);
OUT_RING(MI_DISPLAY_FLIP |
MI_DISPLAY_FLIP_PLANE(intel_crtc->plane));
@@ -49014,7 +49049,7 @@
err:
return ret;
}
-@@ -7092,7 +7380,7 @@ static int intel_gen3_queue_flip(struct drm_device *dev,
+@@ -7100,7 +7380,7 @@ static int intel_gen3_queue_flip(struct drm_device *dev,
goto err;
/* Offset into the new buffer for cases of shared fbs between CRTCs */
@@ -49023,7 +49058,7 @@
ret = BEGIN_LP_RING(6);
if (ret)
-@@ -7106,16 +7394,15 @@ static int intel_gen3_queue_flip(struct drm_device *dev,
+@@ -7114,16 +7394,15 @@ static int intel_gen3_queue_flip(struct drm_device *dev,
OUT_RING(MI_NOOP);
OUT_RING(MI_DISPLAY_FLIP_I915 |
MI_DISPLAY_FLIP_PLANE(intel_crtc->plane));
@@ -49042,7 +49077,7 @@
err:
return ret;
}
-@@ -7144,7 +7431,7 @@ static int intel_gen4_queue_flip(struct drm_device *dev,
+@@ -7152,7 +7431,7 @@ static int intel_gen4_queue_flip(struct drm_device *dev,
*/
OUT_RING(MI_DISPLAY_FLIP |
MI_DISPLAY_FLIP_PLANE(intel_crtc->plane));
@@ -49051,7 +49086,7 @@
OUT_RING(obj->gtt_offset | obj->tiling_mode);
/* XXX Enabling the panel-fitter across page-flip is so far
-@@ -7154,13 +7441,11 @@ static int intel_gen4_queue_flip(struct drm_device *dev,
+@@ -7162,13 +7441,11 @@ static int intel_gen4_queue_flip(struct drm_device *dev,
pf = 0;
pipesrc = I915_READ(PIPESRC(intel_crtc->pipe)) & 0x0fff0fff;
OUT_RING(pf | pipesrc);
@@ -49066,7 +49101,7 @@
err:
return ret;
}
-@@ -7185,19 +7470,23 @@ static int intel_gen6_queue_flip(struct drm_device *dev,
+@@ -7193,19 +7470,23 @@ static int intel_gen6_queue_flip(struct drm_device *dev,
OUT_RING(MI_DISPLAY_FLIP |
MI_DISPLAY_FLIP_PLANE(intel_crtc->plane));
@@ -49095,7 +49130,7 @@
err:
return ret;
}
-@@ -7244,16 +7533,14 @@ static int intel_gen7_queue_flip(struct drm_device *dev,
+@@ -7252,16 +7533,14 @@ static int intel_gen7_queue_flip(struct drm_device *dev,
goto err_unpin;
intel_ring_emit(ring, MI_DISPLAY_FLIP_I915 | plane_bit);
@@ -49114,7 +49149,7 @@
err:
return ret;
}
-@@ -7551,10 +7838,9 @@ static void intel_setup_outputs(struct drm_device *dev)
+@@ -7559,10 +7838,9 @@ static void intel_setup_outputs(struct drm_device *dev)
struct drm_i915_private *dev_priv = dev->dev_private;
struct intel_encoder *encoder;
bool dpd_is_edp = false;
@@ -49127,7 +49162,7 @@
if (!has_lvds && !HAS_PCH_SPLIT(dev)) {
/* disable the panel fitter on everything but LVDS */
I915_WRITE(PFIT_CONTROL, 0);
-@@ -7683,7 +7969,7 @@ static const struct drm_framebuffer_funcs intel_fb_funcs = {
+@@ -7691,7 +7969,7 @@ static const struct drm_framebuffer_funcs intel_fb_funcs = {
int intel_framebuffer_init(struct drm_device *dev,
struct intel_framebuffer *intel_fb,
@@ -49136,7 +49171,7 @@
struct drm_i915_gem_object *obj)
{
int ret;
-@@ -7691,21 +7977,27 @@ int intel_framebuffer_init(struct drm_device *dev,
+@@ -7699,21 +7977,27 @@ int intel_framebuffer_init(struct drm_device *dev,
if (obj->tiling_mode == I915_TILING_Y)
return -EINVAL;
@@ -49174,7 +49209,7 @@
return -EINVAL;
}
-@@ -7723,11 +8015,12 @@ int intel_framebuffer_init(struct drm_device *dev,
+@@ -7731,11 +8015,12 @@ int intel_framebuffer_init(struct drm_device *dev,
static struct drm_framebuffer *
intel_user_framebuffer_create(struct drm_device *dev,
struct drm_file *filp,
@@ -49189,7 +49224,7 @@
if (&obj->base == NULL)
return ERR_PTR(-ENOENT);
-@@ -7996,7 +8289,7 @@ void intel_init_emon(struct drm_device *dev)
+@@ -8004,7 +8289,7 @@ void intel_init_emon(struct drm_device *dev)
dev_priv->corr = (lcfuse & LCFUSE_HIV_MASK);
}
@@ -49198,7 +49233,7 @@
{
/*
* Respect the kernel parameter if it is set
-@@ -8014,11 +8307,11 @@ static bool intel_enable_rc6(struct drm_device *dev)
+@@ -8022,11 +8307,11 @@ static bool intel_enable_rc6(struct drm_device *dev)
* Disable rc6 on Sandybridge
*/
if (INTEL_INFO(dev)->gen == 6) {
@@ -49214,7 +49249,7 @@
}
void gen6_enable_rps(struct drm_i915_private *dev_priv)
-@@ -8026,7 +8319,9 @@ void gen6_enable_rps(struct drm_i915_private *dev_priv)
+@@ -8034,7 +8319,9 @@ void gen6_enable_rps(struct drm_i915_private *dev_priv)
u32 rp_state_cap = I915_READ(GEN6_RP_STATE_CAP);
u32 gt_perf_status = I915_READ(GEN6_GT_PERF_STATUS);
u32 pcu_mbox, rc6_mask = 0;
@@ -49224,7 +49259,7 @@
int i;
/* Here begins a magic sequence of register writes to enable
-@@ -8037,6 +8332,13 @@ void gen6_enable_rps(struct drm_i915_private *dev_priv)
+@@ -8045,6 +8332,13 @@ void gen6_enable_rps(struct drm_i915_private *dev_priv)
*/
I915_WRITE(GEN6_RC_STATE, 0);
mutex_lock(&dev_priv->dev->struct_mutex);
@@ -49238,7 +49273,7 @@
gen6_gt_force_wake_get(dev_priv);
/* disable the counters and set deterministic thresholds */
-@@ -8057,9 +8359,20 @@ void gen6_enable_rps(struct drm_i915_private *dev_priv)
+@@ -8065,9 +8359,20 @@ void gen6_enable_rps(struct drm_i915_private *dev_priv)
I915_WRITE(GEN6_RC6p_THRESHOLD, 100000);
I915_WRITE(GEN6_RC6pp_THRESHOLD, 64000); /* unused */
@@ -49262,7 +49297,7 @@
I915_WRITE(GEN6_RC_CONTROL,
rc6_mask |
-@@ -8287,6 +8600,10 @@ static void gen6_init_clock_gating(struct drm_device *dev)
+@@ -8295,6 +8600,10 @@ static void gen6_init_clock_gating(struct drm_device *dev)
I915_WRITE(WM2_LP_ILK, 0);
I915_WRITE(WM1_LP_ILK, 0);
@@ -49273,7 +49308,7 @@
/* According to the BSpec vol1g, bit 12 (RCPBUNIT) clock
* gating disable must be set. Failure to set it results in
* flickering pixels due to Z write ordering failures after
-@@ -8365,6 +8682,10 @@ static void ivybridge_init_clock_gating(struct drm_device *dev)
+@@ -8373,6 +8682,10 @@ static void ivybridge_init_clock_gating(struct drm_device *dev)
I915_WRITE(ILK_DSPCLK_GATE, IVB_VRHUNIT_CLK_GATE);
@@ -49284,7 +49319,7 @@
/* Apply the WaDisableRHWOOptimizationForRenderHang workaround. */
I915_WRITE(GEN7_COMMON_SLICE_CHICKEN1,
GEN7_CSC1_RHWO_OPT_DISABLE_IN_RCC);
-@@ -8675,9 +8996,15 @@ static void intel_init_display(struct drm_device *dev)
+@@ -8683,9 +8996,15 @@ static void intel_init_display(struct drm_device *dev)
if (IS_IVYBRIDGE(dev)) {
u32 ecobus;
@@ -49301,7 +49336,7 @@
__gen6_gt_force_wake_mt_put(dev_priv);
mutex_unlock(&dev->struct_mutex);
-@@ -8709,6 +9036,7 @@ static void intel_init_display(struct drm_device *dev)
+@@ -8717,6 +9036,7 @@ static void intel_init_display(struct drm_device *dev)
} else if (IS_GEN6(dev)) {
if (SNB_READ_WM0_LATENCY()) {
dev_priv->display.update_wm = sandybridge_update_wm;
@@ -49309,7 +49344,7 @@
} else {
DRM_DEBUG_KMS("Failed to read display plane latency. "
"Disable CxSR\n");
-@@ -8722,6 +9050,7 @@ static void intel_init_display(struct drm_device *dev)
+@@ -8730,6 +9050,7 @@ static void intel_init_display(struct drm_device *dev)
dev_priv->display.fdi_link_train = ivb_manual_fdi_link_train;
if (SNB_READ_WM0_LATENCY()) {
dev_priv->display.update_wm = sandybridge_update_wm;
@@ -49317,7 +49352,7 @@
} else {
DRM_DEBUG_KMS("Failed to read display plane latency. "
"Disable CxSR\n");
-@@ -8834,8 +9163,6 @@ struct intel_quirk {
+@@ -8842,8 +9163,6 @@ struct intel_quirk {
};
struct intel_quirk intel_quirks[] = {
@@ -49326,7 +49361,7 @@
/* HP Mini needs pipe A force quirk (LP: #322104) */
{ 0x27ae, 0x103c, 0x361a, quirk_pipea_force },
-@@ -8902,33 +9229,19 @@ static void i915_disable_vga(struct drm_device *dev)
+@@ -8910,33 +9229,19 @@ static void i915_disable_vga(struct drm_device *dev)
POSTING_READ(vga_reg);
}
@@ -49364,7 +49399,7 @@
dev->mode_config.funcs = (void *)&intel_mode_funcs;
intel_init_quirks(dev);
-@@ -8952,6 +9265,9 @@ void intel_modeset_init(struct drm_device *dev)
+@@ -8960,6 +9265,9 @@ void intel_modeset_init(struct drm_device *dev)
for (i = 0; i < dev_priv->num_pipe; i++) {
intel_crtc_init(dev, i);
@@ -72957,7 +72992,7 @@
#include <linux/kernel.h>
diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c
-index 0977849..c62132c 100644
+index 60d13fe..c62132c 100644
--- a/drivers/gpu/drm/radeon/evergreen.c
+++ b/drivers/gpu/drm/radeon/evergreen.c
@@ -50,6 +50,39 @@ static const u32 crtc_offsets[6] =
@@ -73048,16 +73083,7 @@
blackout = RREG32(MC_SHARED_BLACKOUT_CNTL);
if ((blackout & BLACKOUT_MODE_MASK) != 1) {
-@@ -1137,6 +1183,8 @@ void evergreen_mc_stop(struct radeon_device *rdev, struct evergreen_mc_save *sav
- blackout &= ~BLACKOUT_MODE_MASK;
- WREG32(MC_SHARED_BLACKOUT_CNTL, blackout | 1);
- }
-+ /* wait for the MC to settle */
-+ udelay(100);
- }
-
- void evergreen_mc_resume(struct radeon_device *rdev, struct evergreen_mc_save *save)
-@@ -1166,10 +1214,20 @@ void evergreen_mc_resume(struct radeon_device *rdev, struct evergreen_mc_save *s
+@@ -1168,10 +1214,20 @@ void evergreen_mc_resume(struct radeon_device *rdev, struct evergreen_mc_save *s
WREG32(BIF_FB_EN, FB_READ_EN | FB_WRITE_EN);
for (i = 0; i < rdev->num_crtc; i++) {
@@ -73082,7 +73108,7 @@
/* wait for the next frame */
frame_count = radeon_get_vblank_counter(rdev, i);
for (j = 0; j < rdev->usec_timeout; j++) {
-@@ -1229,7 +1287,10 @@ void evergreen_mc_program(struct radeon_device *rdev)
+@@ -1231,7 +1287,10 @@ void evergreen_mc_program(struct radeon_device *rdev)
rdev->mc.vram_end >> 12);
}
WREG32(MC_VM_SYSTEM_APERTURE_DEFAULT_ADDR, rdev->vram_scratch.gpu_addr >> 12);
@@ -73094,7 +73120,7 @@
tmp = RREG32(MC_FUS_VM_FB_OFFSET) & 0x000FFFFF;
tmp |= ((rdev->mc.vram_end >> 20) & 0xF) << 24;
tmp |= ((rdev->mc.vram_start >> 20) & 0xF) << 20;
-@@ -1264,18 +1325,20 @@ void evergreen_mc_program(struct radeon_device *rdev)
+@@ -1266,18 +1325,20 @@ void evergreen_mc_program(struct radeon_device *rdev)
*/
void evergreen_ring_ib_execute(struct radeon_device *rdev, struct radeon_ib *ib)
{
@@ -73121,7 +73147,7 @@
}
-@@ -1313,71 +1376,73 @@ static int evergreen_cp_load_microcode(struct radeon_device *rdev)
+@@ -1315,71 +1376,73 @@ static int evergreen_cp_load_microcode(struct radeon_device *rdev)
static int evergreen_cp_start(struct radeon_device *rdev)
{
@@ -73226,7 +73252,7 @@
u32 tmp;
u32 rb_bufsz;
int r;
-@@ -1395,13 +1460,14 @@ int evergreen_cp_resume(struct radeon_device *rdev)
+@@ -1397,13 +1460,14 @@ int evergreen_cp_resume(struct radeon_device *rdev)
RREG32(GRBM_SOFT_RESET);
/* Set ring buffer size */
@@ -73243,7 +73269,7 @@
/* Set the write pointer delay */
WREG32(CP_RB_WPTR_DELAY, 0);
-@@ -1409,8 +1475,8 @@ int evergreen_cp_resume(struct radeon_device *rdev)
+@@ -1411,8 +1475,8 @@ int evergreen_cp_resume(struct radeon_device *rdev)
/* Initialize the ring buffer's read and write pointers */
WREG32(CP_RB_CNTL, tmp | RB_RPTR_WR_ENA);
WREG32(CP_RB_RPTR_WR, 0);
@@ -73254,7 +73280,7 @@
/* set the wb address wether it's enabled or not */
WREG32(CP_RB_RPTR_ADDR,
-@@ -1428,16 +1494,16 @@ int evergreen_cp_resume(struct radeon_device *rdev)
+@@ -1430,16 +1494,16 @@ int evergreen_cp_resume(struct radeon_device *rdev)
mdelay(1);
WREG32(CP_RB_CNTL, tmp);
@@ -73276,7 +73302,7 @@
return r;
}
return 0;
-@@ -1730,7 +1796,7 @@ static void evergreen_gpu_init(struct radeon_device *rdev)
+@@ -1732,7 +1796,7 @@ static void evergreen_gpu_init(struct radeon_device *rdev)
case CHIP_SUMO:
rdev->config.evergreen.num_ses = 1;
rdev->config.evergreen.max_pipes = 4;
@@ -73285,7 +73311,7 @@
if (rdev->pdev->device == 0x9648)
rdev->config.evergreen.max_simds = 3;
else if ((rdev->pdev->device == 0x9647) ||
-@@ -1819,7 +1885,7 @@ static void evergreen_gpu_init(struct radeon_device *rdev)
+@@ -1821,7 +1885,7 @@ static void evergreen_gpu_init(struct radeon_device *rdev)
break;
case CHIP_CAICOS:
rdev->config.evergreen.num_ses = 1;
@@ -73294,7 +73320,7 @@
rdev->config.evergreen.max_tile_pipes = 2;
rdev->config.evergreen.max_simds = 2;
rdev->config.evergreen.max_backends = 1 * rdev->config.evergreen.num_ses;
-@@ -1868,7 +1934,9 @@ static void evergreen_gpu_init(struct radeon_device *rdev)
+@@ -1870,7 +1934,9 @@ static void evergreen_gpu_init(struct radeon_device *rdev)
mc_shared_chmap = RREG32(MC_SHARED_CHMAP);
@@ -73305,7 +73331,7 @@
mc_arb_ramcfg = RREG32(FUS_MC_ARB_RAMCFG);
else
mc_arb_ramcfg = RREG32(MC_ARB_RAMCFG);
-@@ -2272,7 +2340,9 @@ int evergreen_mc_init(struct radeon_device *rdev)
+@@ -2274,7 +2340,9 @@ int evergreen_mc_init(struct radeon_device *rdev)
/* Get VRAM informations */
rdev->mc.vram_is_ddr = true;
@@ -73316,7 +73342,7 @@
tmp = RREG32(FUS_MC_ARB_RAMCFG);
else
tmp = RREG32(MC_ARB_RAMCFG);
-@@ -2304,12 +2374,14 @@ int evergreen_mc_init(struct radeon_device *rdev)
+@@ -2306,12 +2374,14 @@ int evergreen_mc_init(struct radeon_device *rdev)
rdev->mc.aper_base = pci_resource_start(rdev->pdev, 0);
rdev->mc.aper_size = pci_resource_len(rdev->pdev, 0);
/* Setup GPU memory space */
@@ -73333,7 +73359,7 @@
rdev->mc.mc_vram_size = RREG32(CONFIG_MEMSIZE) * 1024 * 1024;
rdev->mc.real_vram_size = RREG32(CONFIG_MEMSIZE) * 1024 * 1024;
}
-@@ -2320,7 +2392,7 @@ int evergreen_mc_init(struct radeon_device *rdev)
+@@ -2322,7 +2392,7 @@ int evergreen_mc_init(struct radeon_device *rdev)
return 0;
}
@@ -73342,7 +73368,7 @@
{
u32 srbm_status;
u32 grbm_status;
-@@ -2333,19 +2405,19 @@ bool evergreen_gpu_is_lockup(struct radeon_device *rdev)
+@@ -2335,19 +2405,19 @@ bool evergreen_gpu_is_lockup(struct radeon_device *rdev)
grbm_status_se0 = RREG32(GRBM_STATUS_SE0);
grbm_status_se1 = RREG32(GRBM_STATUS_SE1);
if (!(grbm_status & GUI_ACTIVE)) {
@@ -73369,7 +73395,7 @@
}
static int evergreen_gpu_soft_reset(struct radeon_device *rdev)
-@@ -2437,7 +2509,13 @@ void evergreen_disable_interrupt_state(struct radeon_device *rdev)
+@@ -2439,7 +2509,13 @@ void evergreen_disable_interrupt_state(struct radeon_device *rdev)
{
u32 tmp;
@@ -73384,7 +73410,7 @@
WREG32(GRBM_INT_CNTL, 0);
WREG32(INT_MASK + EVERGREEN_CRTC0_REGISTER_OFFSET, 0);
WREG32(INT_MASK + EVERGREEN_CRTC1_REGISTER_OFFSET, 0);
-@@ -2461,7 +2539,9 @@ void evergreen_disable_interrupt_state(struct radeon_device *rdev)
+@@ -2463,7 +2539,9 @@ void evergreen_disable_interrupt_state(struct radeon_device *rdev)
WREG32(GRPH_INT_CONTROL + EVERGREEN_CRTC5_REGISTER_OFFSET, 0);
}
@@ -73395,7 +73421,7 @@
WREG32(DACB_AUTODETECT_INT_CONTROL, 0);
tmp = RREG32(DC_HPD1_INT_CONTROL) & DC_HPDx_INT_POLARITY;
-@@ -2482,6 +2562,7 @@ void evergreen_disable_interrupt_state(struct radeon_device *rdev)
+@@ -2484,6 +2562,7 @@ void evergreen_disable_interrupt_state(struct radeon_device *rdev)
int evergreen_irq_set(struct radeon_device *rdev)
{
u32 cp_int_cntl = CNTX_BUSY_INT_ENABLE | CNTX_EMPTY_INT_ENABLE;
@@ -73403,7 +73429,7 @@
u32 crtc1 = 0, crtc2 = 0, crtc3 = 0, crtc4 = 0, crtc5 = 0, crtc6 = 0;
u32 hpd1, hpd2, hpd3, hpd4, hpd5, hpd6;
u32 grbm_int_cntl = 0;
-@@ -2506,11 +2587,28 @@ int evergreen_irq_set(struct radeon_device *rdev)
+@@ -2508,11 +2587,28 @@ int evergreen_irq_set(struct radeon_device *rdev)
hpd5 = RREG32(DC_HPD5_INT_CONTROL) & ~DC_HPDx_INT_EN;
hpd6 = RREG32(DC_HPD6_INT_CONTROL) & ~DC_HPDx_INT_EN;
@@ -73436,7 +73462,7 @@
if (rdev->irq.crtc_vblank_int[0] ||
rdev->irq.pflip[0]) {
DRM_DEBUG("evergreen_irq_set: vblank 0\n");
-@@ -2570,7 +2668,12 @@ int evergreen_irq_set(struct radeon_device *rdev)
+@@ -2572,7 +2668,12 @@ int evergreen_irq_set(struct radeon_device *rdev)
grbm_int_cntl |= GUI_IDLE_INT_ENABLE;
}
@@ -73450,7 +73476,7 @@
WREG32(GRBM_INT_CNTL, grbm_int_cntl);
WREG32(INT_MASK + EVERGREEN_CRTC0_REGISTER_OFFSET, crtc1);
-@@ -2985,11 +3088,24 @@ restart_ih:
+@@ -2987,11 +3088,24 @@ restart_ih:
case 177: /* CP_INT in IB1 */
case 178: /* CP_INT in IB2 */
DRM_DEBUG("IH: CP int: 0x%08x\n", src_data);
@@ -73477,7 +73503,7 @@
break;
case 233: /* GUI IDLE */
DRM_DEBUG("IH: GUI idle\n");
-@@ -3019,6 +3135,7 @@ restart_ih:
+@@ -3021,6 +3135,7 @@ restart_ih:
static int evergreen_startup(struct radeon_device *rdev)
{
@@ -73485,7 +73511,7 @@
int r;
/* enable pcie gen2 link */
-@@ -3064,7 +3181,7 @@ static int evergreen_startup(struct radeon_device *rdev)
+@@ -3066,7 +3181,7 @@ static int evergreen_startup(struct radeon_device *rdev)
r = evergreen_blit_init(rdev);
if (r) {
r600_blit_fini(rdev);
@@ -73494,7 +73520,7 @@
dev_warn(rdev->dev, "failed blitter (%d) falling back to memcpy\n", r);
}
-@@ -3073,6 +3190,12 @@ static int evergreen_startup(struct radeon_device *rdev)
+@@ -3075,6 +3190,12 @@ static int evergreen_startup(struct radeon_device *rdev)
if (r)
return r;
@@ -73507,7 +73533,7 @@
/* Enable IRQ */
r = r600_irq_init(rdev);
if (r) {
-@@ -3082,7 +3205,9 @@ static int evergreen_startup(struct radeon_device *rdev)
+@@ -3084,7 +3205,9 @@ static int evergreen_startup(struct radeon_device *rdev)
}
evergreen_irq_set(rdev);
@@ -73518,7 +73544,7 @@
if (r)
return r;
r = evergreen_cp_load_microcode(rdev);
-@@ -3092,6 +3217,23 @@ static int evergreen_startup(struct radeon_device *rdev)
+@@ -3094,6 +3217,23 @@ static int evergreen_startup(struct radeon_device *rdev)
if (r)
return r;
@@ -73542,7 +73568,7 @@
return 0;
}
-@@ -3111,15 +3253,11 @@ int evergreen_resume(struct radeon_device *rdev)
+@@ -3113,15 +3253,11 @@ int evergreen_resume(struct radeon_device *rdev)
/* post card */
atom_asic_init(rdev->mode_info.atom_context);
@@ -73560,7 +73586,7 @@
return r;
}
-@@ -3129,13 +3267,17 @@ int evergreen_resume(struct radeon_device *rdev)
+@@ -3131,13 +3267,17 @@ int evergreen_resume(struct radeon_device *rdev)
int evergreen_suspend(struct radeon_device *rdev)
{
@@ -73580,7 +73606,7 @@
return 0;
}
-@@ -3210,8 +3352,8 @@ int evergreen_init(struct radeon_device *rdev)
+@@ -3212,8 +3352,8 @@ int evergreen_init(struct radeon_device *rdev)
if (r)
return r;
@@ -73591,7 +73617,7 @@
rdev->ih.ring_obj = NULL;
r600_ih_ring_init(rdev, 64 * 1024);
-@@ -3220,29 +3362,24 @@ int evergreen_init(struct radeon_device *rdev)
+@@ -3222,29 +3362,24 @@ int evergreen_init(struct radeon_device *rdev)
if (r)
return r;
@@ -73628,7 +73654,7 @@
/* Don't start up if the MC ucode is missing on BTC parts.
* The default clocks and voltages before the MC ucode
-@@ -3260,15 +3397,17 @@ int evergreen_init(struct radeon_device *rdev)
+@@ -3262,15 +3397,17 @@ int evergreen_init(struct radeon_device *rdev)
void evergreen_fini(struct radeon_device *rdev)
{
@@ -76068,7 +76094,7 @@
+ return ret;
+}
diff --git a/drivers/gpu/drm/radeon/evergreen_reg.h b/drivers/gpu/drm/radeon/evergreen_reg.h
-index e022776..34a0e85 100644
+index e022776b..34a0e85 100644
--- a/drivers/gpu/drm/radeon/evergreen_reg.h
+++ b/drivers/gpu/drm/radeon/evergreen_reg.h
@@ -35,6 +35,14 @@
Modified: dists/sid/linux/debian/patches/series
==============================================================================
--- dists/sid/linux/debian/patches/series Mon Mar 4 13:40:56 2013 (r19902)
+++ dists/sid/linux/debian/patches/series Wed Mar 6 14:25:42 2013 (r19903)
@@ -395,17 +395,13 @@
bugfix/all/PCI-PM-Runtime-make-PCI-traces-quieter.patch
features/all/USB-add-USB_VENDOR_AND_INTERFACE_INFO-macro.patch
-bugfix/all/usb-Add-quirk-detection-based-on-interface-informati.patch
-bugfix/all/usb-Add-USB_QUIRK_RESET_RESUME-for-all-Logitech-UVC-.patch
bugfix/alpha/alpha-use-large-data-model.diff
features/arm/ahci-Add-JMicron-362-device-IDs.patch
-bugfix/all/speakup-lower-default-software-speech-rate.patch
debian/perf-hide-abi-change-in-3.2.30.patch
debian/iwlwifi-do-not-request-unreleased-firmware.patch
debian/hid-avoid-ABI-change-in-3.2.31.patch
debian/xfrm-avoid-ABI-change-in-3.2.31.patch
debian/fs-writeback-avoid-ABI-change-in-3.2.32.patch
-bugfix/x86/asus-laptop-Do-not-call-HWRS-on-init.patch
features/all/xen/microcode.patch
debian/ALSA-avoid-ABI-change-in-3.2.34.patch
@@ -420,12 +416,6 @@
bugfix/all/firmware_class-log-every-success-and-failure.patch
bugfix/all/firmware-remove-redundant-log-messages-from-drivers.patch
-bugfix/all/usermodehelper-introduce-umh_complete.patch
-bugfix/all/usermodehelper-implement-UMH_KILLABLE.patch
-bugfix/all/usermodehelper-____call_usermodehelper-doesnt-need-do_exit.patch
-bugfix/all/kmod-introduce-call_modprobe-helper.patch
-bugfix/all/kmod-make-__request_module-killable.patch
-bugfix/all/exec-use-ELOOP-for-max-recursion-depth.patch
bugfix/all/megaraid_sas-fix-memory-leak-if-SGL-has-zero-length-entries.patch
debian/audit-increase-AUDIT_NAMES.patch
features/all/asix-Adds-support-for-Lenovo-10-100-USB-dongle.patch
@@ -449,10 +439,6 @@
features/all/iguanair/0010-media-iguanair-do-not-modify-transmit-buffer.patch
features/all/iguanair/0011-media-iguanair-cannot-send-data-from-the-stack.patch
features/all/rt2800-add-chipset-revision-RT5390R-support.patch
-bugfix/all/fs-cachefiles-add-support-for-large-files-in-filesys.patch
-bugfix/all/ext4-rewrite-punch-hole-to-use-ext4_ext_remove_space.patch
-bugfix/all/ext4-fix-hole-punch-failure-when-depth-is-greater-th.patch
-bugfix/all/ext4-fix-kernel-BUG-on-large-scale-rm-rf-commands.patch
bugfix/all/md-protect-against-crash-upon-fsync-on-ro-array.patch
debian/net-avoid-ABI-break-in-3.2.37.patch
@@ -625,10 +611,6 @@
features/all/line6/0105-staging-line6-drop-dump-requests-from-pod-startup.patch
features/all/line6/0106-staging-line6-drop-unused-dumprequest-code.patch
bugfix/all/mm-Try-harder-to-allocate-vmemmap-blocks.patch
-bugfix/x86/efi-Clear-EFI_RUNTIME_SERVICES-rather-than-EFI_BOOT-.patch
-bugfix/x86/x86-efi-Make-noefi-really-disable-EFI-runtime-serivc.patch
-bugfix/all/mm-fix-pageblock-bitmap-allocation.patch
-bugfix/all/USB-usb-storage-unusual_devs-update-for-Super-TOP-SA.patch
debian/x86-efi-avoid-abi-change-in-3.2.38.patch
-bugfix/all/vhost-fix-length-for-cross-region-descriptor.patch
features/x86/efi-stub/0019-x86-efi-Fix-processor-specific-memcpy-build-error.patch
+debian/pps-avoid-abi-change-in-3.2.40.patch
More information about the Kernel-svn-changes
mailing list