diff --git a/drm-invalidate-relocation-presumed_offsets-along-slow-patch.patch b/drm-invalidate-relocation-presumed_offsets-along-slow-patch.patch deleted file mode 100644 index be557dc9d..000000000 --- a/drm-invalidate-relocation-presumed_offsets-along-slow-patch.patch +++ /dev/null @@ -1,67 +0,0 @@ -commit 262b6d363fcff16359c93bd58c297f961f6e6273 -Author: Chris Wilson -Date: Tue Jan 15 16:17:54 2013 +0000 - - drm/i915: Invalidate the relocation presumed_offsets along the slow path - - In the slow path, we are forced to copy the relocations prior to - acquiring the struct mutex in order to handle pagefaults. We forgo - copying the new offsets back into the relocation entries in order to - prevent a recursive locking bug should we trigger a pagefault whilst - holding the mutex for the reservations of the execbuffer. Therefore, we - need to reset the presumed_offsets just in case the objects are rebound - back into their old locations after relocating for this exexbuffer - if - that were to happen we would assume the relocations were valid and leave - the actual pointers to the kernels dangling, instant hang. - - Fixes regression from commit bcf50e2775bbc3101932d8e4ab8c7902aa4163b4 - Author: Chris Wilson - Date: Sun Nov 21 22:07:12 2010 +0000 - - drm/i915: Handle pagefaults in execbuffer user relocations - - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=55984 - Signed-off-by: Chris Wilson - Cc: Daniel Vetter - Cc: stable@vger.kernel.org - Signed-off-by: Daniel Vetter - -diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c -index d6a994a..26d08bb 100644 ---- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c -+++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c -@@ -539,6 +539,8 @@ i915_gem_execbuffer_relocate_slow(struct drm_device *dev, - total = 0; - for (i = 0; i < count; i++) { - struct drm_i915_gem_relocation_entry __user *user_relocs; -+ u64 invalid_offset = (u64)-1; -+ int j; - - user_relocs = (void __user *)(uintptr_t)exec[i].relocs_ptr; - -@@ -549,6 +551,25 @@ i915_gem_execbuffer_relocate_slow(struct drm_device *dev, - goto err; - } - -+ /* As we do not update the known relocation offsets after -+ * relocating (due to the complexities in lock handling), -+ * we need to mark them as invalid now so that we force the -+ * relocation processing next time. Just in case the target -+ * object is evicted and then rebound into its old -+ * presumed_offset before the next execbuffer - if that -+ * happened we would make the mistake of assuming that the -+ * relocations were valid. -+ */ -+ for (j = 0; j < exec[i].relocation_count; j++) { -+ if (copy_to_user(&user_relocs[j].presumed_offset, -+ &invalid_offset, -+ sizeof(invalid_offset))) { -+ ret = -EFAULT; -+ mutex_lock(&dev->struct_mutex); -+ goto err; -+ } -+ } -+ - reloc_offset[i] = total; - total += exec[i].relocation_count; - } diff --git a/kernel.spec b/kernel.spec index ee9ff3689..c7c166118 100644 --- a/kernel.spec +++ b/kernel.spec @@ -62,7 +62,7 @@ Summary: The Linux kernel # For non-released -rc kernels, this will be appended after the rcX and # gitX tags, so a 3 here would become part of release "0.rcX.gitX.3" # -%global baserelease 204 +%global baserelease 201 %global fedora_build %{baserelease} # base_sublevel is the kernel version we're starting with and patching @@ -74,7 +74,7 @@ Summary: The Linux kernel %if 0%{?released_kernel} # Do we have a -stable update to apply? -%define stable_update 4 +%define stable_update 5 # Is it a -stable RC? %define stable_rc 0 # Set rpm version accordingly @@ -776,12 +776,6 @@ Patch21233: 8139cp-re-enable-interrupts-after-tx-timeout.patch #rhbz 886946 Patch21234: iwlegacy-fix-IBSS-cleanup.patch -#rhbz 902523 -Patch21236: libata-replace-sata_settings-with-devslp_timing.patch - -#i915 hang fixes -Patch21237: drm-invalidate-relocation-presumed_offsets-along-slow-patch.patch - #rhbz 892428 Patch21238: brcmsmac-updates-rhbz892428.patch @@ -1498,12 +1492,6 @@ ApplyPatch 8139cp-re-enable-interrupts-after-tx-timeout.patch #rhbz 886948 ApplyPatch iwlegacy-fix-IBSS-cleanup.patch -#rhbz 902523 -ApplyPatch libata-replace-sata_settings-with-devslp_timing.patch - -#i915 -ApplyPatch drm-invalidate-relocation-presumed_offsets-along-slow-patch.patch - #rhbz 892428 ApplyPatch brcmsmac-updates-rhbz892428.patch @@ -2370,6 +2358,9 @@ fi # ||----w | # || || %changelog +* Mon Jan 28 2013 Josh Boyer +- Linux v3.7.5 + * Sun Jan 27 2013 Peter Robinson - Build and package dtbs on ARM - Enable FB options for qemu vexpress on unified diff --git a/libata-replace-sata_settings-with-devslp_timing.patch b/libata-replace-sata_settings-with-devslp_timing.patch deleted file mode 100644 index f620a20bd..000000000 --- a/libata-replace-sata_settings-with-devslp_timing.patch +++ /dev/null @@ -1,131 +0,0 @@ -From 803739d25c2343da6d2f95eebdcbc08bf67097d4 Mon Sep 17 00:00:00 2001 -From: Shane Huang -Date: Mon, 17 Dec 2012 23:18:59 +0800 -Subject: [PATCH] [libata] replace sata_settings with devslp_timing - -NCQ capability was used to check availability of SATA Settings page -from Identify Device Data Log, which contains DevSlp timing variables. -It does not work on some HDDs and leads to error messages. - -IDENTIFY word 78 bit 5(Hardware Feature Control) can't work either -because it is only the sufficient condition of Identify Device data -log, not the necessary condition. - -This patch replaced ata_device->sata_settings with ->devslp_timing -to only save DevSlp timing variables(8 bytes), instead of the whole -SATA Settings page(512 bytes). - -Addresses https://bugzilla.kernel.org/show_bug.cgi?id=51881 - -Reported-by: Borislav Petkov -Signed-off-by: Shane Huang -Cc: stable@vger.kernel.org -Signed-off-by: Jeff Garzik ---- - drivers/ata/libahci.c | 6 +++--- - drivers/ata/libata-core.c | 22 +++++++++++++--------- - include/linux/ata.h | 8 +++++--- - include/linux/libata.h | 4 ++-- - 4 files changed, 23 insertions(+), 17 deletions(-) - -diff --git a/drivers/ata/libahci.c b/drivers/ata/libahci.c -index 320712a..6cd7805 100644 ---- a/drivers/ata/libahci.c -+++ b/drivers/ata/libahci.c -@@ -1951,13 +1951,13 @@ static void ahci_set_aggressive_devslp(struct ata_port *ap, bool sleep) - /* Use the nominal value 10 ms if the read MDAT is zero, - * the nominal value of DETO is 20 ms. - */ -- if (dev->sata_settings[ATA_LOG_DEVSLP_VALID] & -+ if (dev->devslp_timing[ATA_LOG_DEVSLP_VALID] & - ATA_LOG_DEVSLP_VALID_MASK) { -- mdat = dev->sata_settings[ATA_LOG_DEVSLP_MDAT] & -+ mdat = dev->devslp_timing[ATA_LOG_DEVSLP_MDAT] & - ATA_LOG_DEVSLP_MDAT_MASK; - if (!mdat) - mdat = 10; -- deto = dev->sata_settings[ATA_LOG_DEVSLP_DETO]; -+ deto = dev->devslp_timing[ATA_LOG_DEVSLP_DETO]; - if (!deto) - deto = 20; - } else { -diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c -index 9e8b99a..46cd3f4 100644 ---- a/drivers/ata/libata-core.c -+++ b/drivers/ata/libata-core.c -@@ -2325,24 +2325,28 @@ int ata_dev_configure(struct ata_device *dev) - } - } - -- /* check and mark DevSlp capability */ -- if (ata_id_has_devslp(dev->id)) -- dev->flags |= ATA_DFLAG_DEVSLP; -- -- /* Obtain SATA Settings page from Identify Device Data Log, -- * which contains DevSlp timing variables etc. -- * Exclude old devices with ata_id_has_ncq() -+ /* Check and mark DevSlp capability. Get DevSlp timing variables -+ * from SATA Settings page of Identify Device Data Log. - */ -- if (ata_id_has_ncq(dev->id)) { -+ if (ata_id_has_devslp(dev->id)) { -+ u8 sata_setting[ATA_SECT_SIZE]; -+ int i, j; -+ -+ dev->flags |= ATA_DFLAG_DEVSLP; - err_mask = ata_read_log_page(dev, - ATA_LOG_SATA_ID_DEV_DATA, - ATA_LOG_SATA_SETTINGS, -- dev->sata_settings, -+ sata_setting, - 1); - if (err_mask) - ata_dev_dbg(dev, - "failed to get Identify Device Data, Emask 0x%x\n", - err_mask); -+ else -+ for (i = 0; i < ATA_LOG_DEVSLP_SIZE; i++) { -+ j = ATA_LOG_DEVSLP_OFFSET + i; -+ dev->devslp_timing[i] = sata_setting[j]; -+ } - } - - dev->cdb_len = 16; -diff --git a/include/linux/ata.h b/include/linux/ata.h -index 408da95..8f7a3d6 100644 ---- a/include/linux/ata.h -+++ b/include/linux/ata.h -@@ -297,10 +297,12 @@ enum { - ATA_LOG_SATA_NCQ = 0x10, - ATA_LOG_SATA_ID_DEV_DATA = 0x30, - ATA_LOG_SATA_SETTINGS = 0x08, -- ATA_LOG_DEVSLP_MDAT = 0x30, -+ ATA_LOG_DEVSLP_OFFSET = 0x30, -+ ATA_LOG_DEVSLP_SIZE = 0x08, -+ ATA_LOG_DEVSLP_MDAT = 0x00, - ATA_LOG_DEVSLP_MDAT_MASK = 0x1F, -- ATA_LOG_DEVSLP_DETO = 0x31, -- ATA_LOG_DEVSLP_VALID = 0x37, -+ ATA_LOG_DEVSLP_DETO = 0x01, -+ ATA_LOG_DEVSLP_VALID = 0x07, - ATA_LOG_DEVSLP_VALID_MASK = 0x80, - - /* READ/WRITE LONG (obsolete) */ -diff --git a/include/linux/libata.h b/include/linux/libata.h -index 83ba0ab..649e5f8 100644 ---- a/include/linux/libata.h -+++ b/include/linux/libata.h -@@ -652,8 +652,8 @@ struct ata_device { - u32 gscr[SATA_PMP_GSCR_DWORDS]; /* PMP GSCR block */ - }; - -- /* Identify Device Data Log (30h), SATA Settings (page 08h) */ -- u8 sata_settings[ATA_SECT_SIZE]; -+ /* DEVSLP Timing Variables from Identify Device Data Log */ -+ u8 devslp_timing[ATA_LOG_DEVSLP_SIZE]; - - /* error history */ - int spdn_cnt; --- -1.7.7.6 - diff --git a/sources b/sources index 373e02c6f..17024d936 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ 21223369d682bcf44bcdfe1521095983 linux-3.7.tar.xz -87640faf7264639e1300829d1b292076 patch-3.7.4.xz +c100b62e571bfb80e8c290e811c0963c patch-3.7.5.xz