summaryrefslogtreecommitdiffstats
path: root/freed-ora/current/f17
diff options
context:
space:
mode:
authorAlexandre Oliva <lxoliva@fsfla.org>2013-01-26 04:36:46 +0000
committerAlexandre Oliva <lxoliva@fsfla.org>2013-01-26 04:36:46 +0000
commite84f906bfe8788c9e385950206801044068f52fe (patch)
tree00136003a9223cf224a0b4acc101968bf918792e /freed-ora/current/f17
parentc2c8a3fccb5a6b6686242ef81977bc7f24beab26 (diff)
downloadlinux-libre-raptor-e84f906bfe8788c9e385950206801044068f52fe.tar.gz
linux-libre-raptor-e84f906bfe8788c9e385950206801044068f52fe.zip
3.7.4-104.fc17.gnu
Diffstat (limited to 'freed-ora/current/f17')
-rw-r--r--freed-ora/current/f17/brcmsmac-updates-rhbz892428.patch28
-rw-r--r--freed-ora/current/f17/drm-invalidate-relocation-presumed_offsets-along-slow-patch.patch67
-rw-r--r--freed-ora/current/f17/kernel.spec36
-rw-r--r--freed-ora/current/f17/libata-replace-sata_settings-with-devslp_timing.patch131
-rw-r--r--freed-ora/current/f17/silence-empty-ipi-mask-warning.patch11
5 files changed, 272 insertions, 1 deletions
diff --git a/freed-ora/current/f17/brcmsmac-updates-rhbz892428.patch b/freed-ora/current/f17/brcmsmac-updates-rhbz892428.patch
new file mode 100644
index 000000000..8b5e08f04
--- /dev/null
+++ b/freed-ora/current/f17/brcmsmac-updates-rhbz892428.patch
@@ -0,0 +1,28 @@
+diff --git a/drivers/net/wireless/brcm80211/brcmsmac/dma.c b/drivers/net/wireless/brcm80211/brcmsmac/dma.c
+index 426b9a9..d7ce1ac 100644
+--- a/drivers/net/wireless/brcm80211/brcmsmac/dma.c
++++ b/drivers/net/wireless/brcm80211/brcmsmac/dma.c
+@@ -361,7 +361,7 @@ static uint prevtxd(struct dma_info *di, uint i)
+
+ static uint nextrxd(struct dma_info *di, uint i)
+ {
+- return txd(di, i + 1);
++ return rxd(di, i + 1);
+ }
+
+ static uint ntxdactive(struct dma_info *di, uint h, uint t)
+diff --git a/drivers/net/wireless/brcm80211/brcmsmac/main.c b/drivers/net/wireless/brcm80211/brcmsmac/main.c
+index 5710dc0..25c5410 100644
+--- a/drivers/net/wireless/brcm80211/brcmsmac/main.c
++++ b/drivers/net/wireless/brcm80211/brcmsmac/main.c
+@@ -232,8 +232,8 @@
+
+ #define MAX_DMA_SEGS 4
+
+-/* Max # of entries in Tx FIFO based on 4kb page size */
+-#define NTXD 256
++/* # of entries in Tx FIFO */
++#define NTXD 64
+ /* Max # of entries in Rx FIFO based on 4kb page size */
+ #define NRXD 256
+
diff --git a/freed-ora/current/f17/drm-invalidate-relocation-presumed_offsets-along-slow-patch.patch b/freed-ora/current/f17/drm-invalidate-relocation-presumed_offsets-along-slow-patch.patch
new file mode 100644
index 000000000..be557dc9d
--- /dev/null
+++ b/freed-ora/current/f17/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/f17/kernel.spec b/freed-ora/current/f17/kernel.spec
index 7a241916e..ceedd4a68 100644
--- a/freed-ora/current/f17/kernel.spec
+++ b/freed-ora/current/f17/kernel.spec
@@ -54,7 +54,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 101
+%global baserelease 104
%global fedora_build %{baserelease}
# base_sublevel is the kernel version we're starting with and patching
@@ -717,6 +717,7 @@ Patch510: linux-2.6-silence-noise.patch
Patch520: quite-apm.patch
Patch530: linux-2.6-silence-fbcon-logo.patch
+Patch540: silence-empty-ipi-mask-warning.patch
Patch700: linux-2.6-e1000-ich9-montevina.patch
@@ -804,6 +805,15 @@ Patch21233: 8139cp-re-enable-interrupts-after-tx-timeout.patch
#rhbz 886946
Patch21241: 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
+
# END OF PATCH DEFINITIONS
%endif
@@ -1486,6 +1496,9 @@ ApplyPatch linux-2.6-silence-noise.patch
# Make fbcon not show the penguins with 'quiet'
ApplyPatch linux-2.6-silence-fbcon-logo.patch
+# No-one cares about these warnings
+ApplyPatch silence-empty-ipi-mask-warning.patch
+
# Changes to upstream defaults.
@@ -1563,6 +1576,15 @@ ApplyPatch 8139cp-re-enable-interrupts-after-tx-timeout.patch
#rhbz 886946
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
+
# END OF PATCH APPLICATIONS
%endif
@@ -2422,6 +2444,18 @@ fi
# '-' | |
# '-'
%changelog
+* Wed Jan 23 2013 Justin M. Forbes <jforbes@redhat.com> - 3.7.4-104
+- brcmsmac fixes from upstream (rhbz 892428)
+
+* Wed Jan 23 2013 Dave Jones <davej@redhat.com>
+- Remove empty IPI mask warnings.
+
+* Tue Jan 22 2013 Justin M. Forbes <jforbes@redhat.com>
+- Add i915 bugfix from airlied
+
+* Tue Jan 22 2013 Josh Boyer <jwboyer@redhat.com>
+- Fix libata settings bug (rhbz 902523)
+
* Tue Jan 22 2013 Alexandre Oliva <lxoliva@fsfla.org>
- GNU Linux-libre 3.7.4-gnu
diff --git a/freed-ora/current/f17/libata-replace-sata_settings-with-devslp_timing.patch b/freed-ora/current/f17/libata-replace-sata_settings-with-devslp_timing.patch
new file mode 100644
index 000000000..f620a20bd
--- /dev/null
+++ b/freed-ora/current/f17/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
+
diff --git a/freed-ora/current/f17/silence-empty-ipi-mask-warning.patch b/freed-ora/current/f17/silence-empty-ipi-mask-warning.patch
new file mode 100644
index 000000000..65a637c06
--- /dev/null
+++ b/freed-ora/current/f17/silence-empty-ipi-mask-warning.patch
@@ -0,0 +1,11 @@
+--- linux-3.6.noarch/arch/x86/kernel/apic/ipi.c~ 2013-01-23 10:48:14.716069615 -0500
++++ linux-3.6.noarch/arch/x86/kernel/apic/ipi.c 2013-01-23 10:48:26.217046545 -0500
+@@ -106,7 +106,7 @@ void default_send_IPI_mask_logical(const
+ unsigned long mask = cpumask_bits(cpumask)[0];
+ unsigned long flags;
+
+- if (WARN_ONCE(!mask, "empty IPI mask"))
++ if (!mask)
+ return;
+
+ local_irq_save(flags);
OpenPOWER on IntegriCloud