diff options
author | Alexandre Oliva <lxoliva@fsfla.org> | 2013-01-25 11:06:43 +0000 |
---|---|---|
committer | Alexandre Oliva <lxoliva@fsfla.org> | 2013-01-25 11:06:43 +0000 |
commit | d8b85642043e2c597f0485c9bebdcadaa58a3b14 (patch) | |
tree | f8710e4f4fcc65e7966c37c422516bb04420abe8 /freed-ora/current/f18 | |
parent | 1f2a099a34f9729e32132c2b0c207085ecebdd55 (diff) | |
download | linux-libre-raptor-d8b85642043e2c597f0485c9bebdcadaa58a3b14.tar.gz linux-libre-raptor-d8b85642043e2c597f0485c9bebdcadaa58a3b14.zip |
3.7.4-203.fc18.gnu
Diffstat (limited to 'freed-ora/current/f18')
5 files changed, 263 insertions, 4 deletions
diff --git a/freed-ora/current/f18/arm-l2x0-only-set-set_debug-on-pl310-r3p0-and-earlier.patch b/freed-ora/current/f18/arm-l2x0-only-set-set_debug-on-pl310-r3p0-and-earlier.patch new file mode 100644 index 000000000..662ebe666 --- /dev/null +++ b/freed-ora/current/f18/arm-l2x0-only-set-set_debug-on-pl310-r3p0-and-earlier.patch @@ -0,0 +1,31 @@ +From: Rob Herring <rob.herring at calxeda.com> + +PL310 errata work-arounds using .set_debug function are only needed on +r3p0 and earlier, so check the rev and only set .set_debug on older revs. + +Avoiding debug register accesses fixes aborts on non-secure platforms +like highbank. It is assumed that non-secure platforms needing these +work-arounds have already implemented .set_debug with secure monitor +calls. + +Signed-off-by: Rob Herring <rob.herring at calxeda.com> +--- + arch/arm/mm/cache-l2x0.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/arch/arm/mm/cache-l2x0.c b/arch/arm/mm/cache-l2x0.c +index 8a97e64..6cf2fd1 100644 +--- a/arch/arm/mm/cache-l2x0.c ++++ b/arch/arm/mm/cache-l2x0.c +@@ -334,7 +334,8 @@ void __init l2x0_init(void __iomem *base, u32 aux_val, u32 aux_mask) + /* Unmapped register. */ + sync_reg_offset = L2X0_DUMMY_REG; + #endif +- outer_cache.set_debug = pl310_set_debug; ++ if ((cache_id & L2X0_CACHE_ID_RTL_MASK) <= L2X0_CACHE_ID_RTL_R3P0) ++ outer_cache.set_debug = pl310_set_debug; + break; + case L2X0_CACHE_ID_PART_L210: + ways = (aux >> 13) & 0xf; +-- +1.7.10.4 diff --git a/freed-ora/current/f18/config-armv7 b/freed-ora/current/f18/config-armv7 index f143f3dee..5d6d294ab 100644 --- a/freed-ora/current/f18/config-armv7 +++ b/freed-ora/current/f18/config-armv7 @@ -48,7 +48,7 @@ CONFIG_HIGHPTE=y # CONFIG_ARM_LPAE is not set # CONFIG_THUMB2_KERNEL is not set # CONFIG_XEN is not set -CONFIG_HVC_DCC=y +# CONFIG_HVC_DCC is not set # CONFIG_ARM_VIRT_EXT is not set @@ -144,6 +144,9 @@ CONFIG_SERIAL_AMBA_PL010_CONSOLE=y CONFIG_SERIAL_AMBA_PL011=y CONFIG_SERIAL_AMBA_PL011_CONSOLE=y +# disable VIRTIO console on because not doing real virt and it breaks vexpress on qemu +# CONFIG_VIRTIO_CONSOLE is not set + CONFIG_RTC_DRV_PL030=y CONFIG_RTC_DRV_PL031=y diff --git a/freed-ora/current/f18/drm-invalidate-relocation-presumed_offsets-along-slow-patch.patch b/freed-ora/current/f18/drm-invalidate-relocation-presumed_offsets-along-slow-patch.patch new file mode 100644 index 000000000..be557dc9d --- /dev/null +++ b/freed-ora/current/f18/drm-invalidate-relocation-presumed_offsets-along-slow-patch.patch @@ -0,0 +1,67 @@ +commit 262b6d363fcff16359c93bd58c297f961f6e6273 +Author: Chris Wilson <chris@chris-wilson.co.uk> +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 <chris@chris-wilson.co.uk> + 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 <chris@chris-wilson.co.uk> + Cc: Daniel Vetter <daniel.vetter@fwll.ch> + Cc: stable@vger.kernel.org + Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> + +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/freed-ora/current/f18/kernel.spec b/freed-ora/current/f18/kernel.spec index bfb132aa9..1e99d1150 100644 --- a/freed-ora/current/f18/kernel.spec +++ b/freed-ora/current/f18/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 201 +%global baserelease 203 %global fedora_build %{baserelease} # base_sublevel is the kernel version we're starting with and patching @@ -801,9 +801,12 @@ Patch20001: 0002-x86-EFI-Calculate-the-EFI-framebuffer-size-instead-o.patch # ARM Patch21000: arm-read_current_timer.patch -Patch21001: arm-fix-omapdrm.patch -Patch21003: arm-alignment-faults.patch +# http://lists.infradead.org/pipermail/linux-arm-kernel/2012-December/137164.html +Patch21001: arm-l2x0-only-set-set_debug-on-pl310-r3p0-and-earlier.patch +Patch21002: arm-alignment-faults.patch + # OMAP +Patch21003: arm-fix-omapdrm.patch # ARM tegra Patch21004: arm-tegra-nvec-kconfig.patch @@ -835,6 +838,12 @@ 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 + # END OF PATCH DEFINITIONS %endif @@ -1462,6 +1471,8 @@ ApplyPatch vmbugon-warnon.patch # #ApplyPatch arm-read_current_timer.patch #ApplyPatch arm-fix-omapdrm.patch + +ApplyPatch arm-l2x0-only-set-set_debug-on-pl310-r3p0-and-earlier.patch ApplyPatch arm-tegra-nvec-kconfig.patch ApplyPatch arm-tegra-usb-no-reset-linux33.patch ApplyPatch arm-tegra-sdhci-module-fix.patch @@ -1607,6 +1618,12 @@ 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 + # END OF PATCH APPLICATIONS %endif @@ -2474,6 +2491,16 @@ fi # ||----w | # || || %changelog +* Tue Jan 22 2013 Justin M. Forbes <jforbes@redhat.com> - 3.7.4-203 +- Add i915 bugfix from airlied + +* Tue Jan 22 2013 Peter Robinson <pbrobinson@fedoraproject.org> +- Apply ARM errata fix +- disable HVC_DCC and VIRTIO_CONSOLE on ARM + +* Tue Jan 22 2013 Josh Boyer <jwboyer@redhat.com> +- Fix libata settings bug (rhbz 902523) + * Tue Jan 22 2013 Alexandre Oliva <lxoliva@fsfla.org> -libre - GNU Linux-libre 3.7.4-gnu diff --git a/freed-ora/current/f18/libata-replace-sata_settings-with-devslp_timing.patch b/freed-ora/current/f18/libata-replace-sata_settings-with-devslp_timing.patch new file mode 100644 index 000000000..f620a20bd --- /dev/null +++ b/freed-ora/current/f18/libata-replace-sata_settings-with-devslp_timing.patch @@ -0,0 +1,131 @@ +From 803739d25c2343da6d2f95eebdcbc08bf67097d4 Mon Sep 17 00:00:00 2001 +From: Shane Huang <shane.huang@amd.com> +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 <bp@alien8.de> +Signed-off-by: Shane Huang <shane.huang@amd.com> +Cc: stable@vger.kernel.org +Signed-off-by: Jeff Garzik <jgarzik@redhat.com> +--- + 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 + |