summaryrefslogtreecommitdiffstats
path: root/freed-ora/current/f13
diff options
context:
space:
mode:
authorAlexandre Oliva <lxoliva@fsfla.org>2010-08-24 19:56:23 +0000
committerAlexandre Oliva <lxoliva@fsfla.org>2010-08-24 19:56:23 +0000
commit561625db20b0c68627d6dcf7ab170db43433ec0c (patch)
tree64f0846409b7b88fe1336545e6625856b88398d1 /freed-ora/current/f13
parent365d388bedffff5dc4cea904439c801d51454252 (diff)
downloadlinux-libre-raptor-561625db20b0c68627d6dcf7ab170db43433ec0c.tar.gz
linux-libre-raptor-561625db20b0c68627d6dcf7ab170db43433ec0c.zip
2.6.34.5-44.fc13
Diffstat (limited to 'freed-ora/current/f13')
-rw-r--r--freed-ora/current/f13/coredump-uid-pipe-check.patch14
-rw-r--r--freed-ora/current/f13/drm-nouveau-updates.patch230
-rw-r--r--freed-ora/current/f13/kernel.spec31
-rw-r--r--freed-ora/current/f13/mm-fix-page-table-unmap-for-stack-guard-page-properly.patch71
-rw-r--r--freed-ora/current/f13/mm-fix-up-some-user-visible-effects-of-the-stack-guard-page.patch85
-rw-r--r--freed-ora/current/f13/patch-libre-2.6.34.4.bz2.sign7
-rw-r--r--freed-ora/current/f13/patch-libre-2.6.34.4.xdeltabin417 -> 0 bytes
-rw-r--r--freed-ora/current/f13/patch-libre-2.6.34.4.xdelta.sign7
-rw-r--r--freed-ora/current/f13/patch-libre-2.6.34.5.bz2.sign7
-rw-r--r--freed-ora/current/f13/patch-libre-2.6.34.5.xdeltabin0 -> 433 bytes
-rw-r--r--freed-ora/current/f13/patch-libre-2.6.34.5.xdelta.sign7
-rw-r--r--freed-ora/current/f13/sources2
12 files changed, 224 insertions, 237 deletions
diff --git a/freed-ora/current/f13/coredump-uid-pipe-check.patch b/freed-ora/current/f13/coredump-uid-pipe-check.patch
deleted file mode 100644
index 4b98a07ab..000000000
--- a/freed-ora/current/f13/coredump-uid-pipe-check.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff -up linux-2.6.32.noarch/fs/exec.c.orig linux-2.6.32.noarch/fs/exec.c
---- linux-2.6.32.noarch/fs/exec.c.orig 2010-02-22 12:40:06.000000000 -0500
-+++ linux-2.6.32.noarch/fs/exec.c 2010-02-22 12:48:34.000000000 -0500
-@@ -1973,8 +1973,9 @@ void do_coredump(long signr, int exit_co
- /*
- * Dont allow local users get cute and trick others to coredump
- * into their pre-created files:
-+ * Note this isn't relevant to pipes
- */
-- if (inode->i_uid != current_fsuid())
-+ if (!ispipe && (inode->i_uid != current_fsuid()))
- goto close_fail;
- if (!cprm.file->f_op)
- goto close_fail;
diff --git a/freed-ora/current/f13/drm-nouveau-updates.patch b/freed-ora/current/f13/drm-nouveau-updates.patch
index 38c59c2d2..0040f546f 100644
--- a/freed-ora/current/f13/drm-nouveau-updates.patch
+++ b/freed-ora/current/f13/drm-nouveau-updates.patch
@@ -1,6 +1,6 @@
* drivers/gpu/drm/nouveau/nouveau_grctx.c: Adjusted, was already deblobbed.
-From 06b70a657cec75d89c60243d6c49bc5dae0b5612 Mon Sep 17 00:00:00 2001
+From 0c03c9751600b40a7c60e525135c75a7ab25a923 Mon Sep 17 00:00:00 2001
From: Ben Skeggs <bskeggs@redhat.com>
Date: Mon, 31 May 2010 12:00:43 +1000
Subject: [PATCH] drm-nouveau-updates
@@ -329,27 +329,39 @@ match the correct output script. However, we never fill in this field
for LVDS so we can never match a script at all.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
+
+drm/nouveau: add nv_mask register accessor
+
+Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
+
+drm/nv50: add function to control GPIO IRQ reporting
+
+Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
+
+drm/nouveau: disable hotplug detect around DP link training
+
+Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
---
drivers/gpu/drm/nouveau/Makefile | 2 +-
drivers/gpu/drm/nouveau/nouveau_acpi.c | 38 +++-
- drivers/gpu/drm/nouveau/nouveau_bios.c | 206 +++++++++------
+ drivers/gpu/drm/nouveau/nouveau_bios.c | 206 ++++++++------
drivers/gpu/drm/nouveau/nouveau_bios.h | 2 +
drivers/gpu/drm/nouveau/nouveau_bo.c | 9 +-
drivers/gpu/drm/nouveau/nouveau_channel.c | 5 -
- drivers/gpu/drm/nouveau/nouveau_connector.c | 281 ++++++++++----------
+ drivers/gpu/drm/nouveau/nouveau_connector.c | 281 +++++++++----------
drivers/gpu/drm/nouveau/nouveau_connector.h | 4 +-
drivers/gpu/drm/nouveau/nouveau_dma.c | 8 +-
- drivers/gpu/drm/nouveau/nouveau_dp.c | 24 ++-
+ drivers/gpu/drm/nouveau/nouveau_dp.c | 39 +++-
drivers/gpu/drm/nouveau/nouveau_drv.c | 26 +--
- drivers/gpu/drm/nouveau/nouveau_drv.h | 89 ++-----
+ drivers/gpu/drm/nouveau/nouveau_drv.h | 98 +++----
drivers/gpu/drm/nouveau/nouveau_encoder.h | 10 +-
drivers/gpu/drm/nouveau/nouveau_fbcon.c | 5 +-
drivers/gpu/drm/nouveau/nouveau_fence.c | 31 +--
drivers/gpu/drm/nouveau/nouveau_gem.c | 11 +-
drivers/gpu/drm/nouveau/nouveau_grctx.c | 160 -----------
- drivers/gpu/drm/nouveau/nouveau_mem.c | 261 ++-----------------
+ drivers/gpu/drm/nouveau/nouveau_mem.c | 261 ++----------------
drivers/gpu/drm/nouveau/nouveau_notifier.c | 30 +--
- drivers/gpu/drm/nouveau/nouveau_object.c | 105 +++-----
+ drivers/gpu/drm/nouveau/nouveau_object.c | 105 ++-----
drivers/gpu/drm/nouveau/nouveau_reg.h | 1 +
drivers/gpu/drm/nouveau/nouveau_sgdma.c | 46 +---
drivers/gpu/drm/nouveau/nouveau_state.c | 172 ++++--------
@@ -368,12 +380,14 @@ Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/nv40_graph.c | 58 ++---
drivers/gpu/drm/nouveau/nv50_crtc.c | 42 +---
drivers/gpu/drm/nouveau/nv50_dac.c | 43 ++-
- drivers/gpu/drm/nouveau/nv50_display.c | 385 ++++++++++++++++-----------
- drivers/gpu/drm/nouveau/nv50_fifo.c | 126 ++++------
+ drivers/gpu/drm/nouveau/nv50_display.c | 405 ++++++++++++++++-----------
+ drivers/gpu/drm/nouveau/nv50_fifo.c | 126 +++------
+ drivers/gpu/drm/nouveau/nv50_gpio.c | 19 ++
drivers/gpu/drm/nouveau/nv50_graph.c | 86 +++----
drivers/gpu/drm/nouveau/nv50_instmem.c | 61 ++---
+ drivers/gpu/drm/nouveau/nv50_mc.c | 13 +
drivers/gpu/drm/nouveau/nv50_sor.c | 105 ++++----
- 43 files changed, 1123 insertions(+), 1598 deletions(-)
+ 45 files changed, 1181 insertions(+), 1616 deletions(-)
delete mode 100644 drivers/gpu/drm/nouveau/nouveau_grctx.c
diff --git a/drivers/gpu/drm/nouveau/Makefile b/drivers/gpu/drm/nouveau/Makefile
@@ -1485,15 +1499,27 @@ index 65c441a..2e3c6ca 100644
/* Insert NOPS for NOUVEAU_DMA_SKIPS */
ret = RING_SPACE(chan, NOUVEAU_DMA_SKIPS);
diff --git a/drivers/gpu/drm/nouveau/nouveau_dp.c b/drivers/gpu/drm/nouveau/nouveau_dp.c
-index deeb21c..184bc95 100644
+index deeb21c..64b4395 100644
--- a/drivers/gpu/drm/nouveau/nouveau_dp.c
+++ b/drivers/gpu/drm/nouveau/nouveau_dp.c
-@@ -271,12 +271,26 @@ nouveau_dp_link_train(struct drm_encoder *encoder)
+@@ -23,8 +23,10 @@
+ */
+
+ #include "drmP.h"
++
+ #include "nouveau_drv.h"
+ #include "nouveau_i2c.h"
++#include "nouveau_connector.h"
+ #include "nouveau_encoder.h"
+
+ static int
+@@ -271,12 +273,36 @@ nouveau_dp_link_train(struct drm_encoder *encoder)
{
struct drm_device *dev = encoder->dev;
struct nouveau_encoder *nv_encoder = nouveau_encoder(encoder);
- uint8_t config[4];
- uint8_t status[3];
++ struct nouveau_connector *nv_connector;
+ struct bit_displayport_encoder_table *dpe;
+ int dpe_headerlen;
+ uint8_t config[4], status[3];
@@ -1502,12 +1528,21 @@ index deeb21c..184bc95 100644
NV_DEBUG_KMS(dev, "link training!!\n");
+
++ nv_connector = nouveau_encoder_connector_get(nv_encoder);
++ if (!nv_connector)
++ return false;
++
+ dpe = nouveau_bios_dp_table(dev, nv_encoder->dcb, &dpe_headerlen);
+ if (!dpe) {
+ NV_ERROR(dev, "SOR-%d: no DP encoder table!\n", nv_encoder->or);
+ return false;
+ }
+
++ /* disable hotplug detect, this flips around on some panels during
++ * link training.
++ */
++ nv50_gpio_irq_enable(dev, nv_connector->dcb->gpio_tag, false);
++
+ if (dpe->script0) {
+ NV_DEBUG_KMS(dev, "SOR-%d: running DP script 0\n", nv_encoder->or);
+ nouveau_bios_run_init_table(dev, le16_to_cpu(dpe->script0),
@@ -1517,7 +1552,7 @@ index deeb21c..184bc95 100644
train:
cr_done = eq_done = false;
-@@ -403,6 +417,12 @@ stop:
+@@ -403,6 +429,15 @@ stop:
}
}
@@ -1527,6 +1562,9 @@ index deeb21c..184bc95 100644
+ nv_encoder->dcb);
+ }
+
++ /* re-enable hotplug detect */
++ nv50_gpio_irq_enable(dev, nv_connector->dcb->gpio_tag, true);
++
return eq_done;
}
@@ -1616,7 +1654,7 @@ index 2737704..b4d958c 100644
nouveau_unregister_dsm_handler();
}
diff --git a/drivers/gpu/drm/nouveau/nouveau_drv.h b/drivers/gpu/drm/nouveau/nouveau_drv.h
-index c697191..51ccd90 100644
+index c697191..7584cd7 100644
--- a/drivers/gpu/drm/nouveau/nouveau_drv.h
+++ b/drivers/gpu/drm/nouveau/nouveau_drv.h
@@ -123,14 +123,6 @@ nvbo_kmap_obj_iovirtual(struct nouveau_bo *nvbo)
@@ -1879,6 +1917,29 @@ index c697191..51ccd90 100644
/* nouveau_gem.c */
extern int nouveau_gem_new(struct drm_device *, struct nouveau_channel *,
+@@ -1174,6 +1139,7 @@ int nv17_gpio_set(struct drm_device *dev, enum dcb_gpio_tag tag, int state);
+ /* nv50_gpio.c */
+ int nv50_gpio_get(struct drm_device *dev, enum dcb_gpio_tag tag);
+ int nv50_gpio_set(struct drm_device *dev, enum dcb_gpio_tag tag, int state);
++void nv50_gpio_irq_enable(struct drm_device *, enum dcb_gpio_tag, bool on);
+
+ /* nv50_calc. */
+ int nv50_calc_pll(struct drm_device *, struct pll_lims *, int clk,
+@@ -1220,6 +1186,14 @@ static inline void nv_wr32(struct drm_device *dev, unsigned reg, u32 val)
+ iowrite32_native(val, dev_priv->mmio + reg);
+ }
+
++static inline void nv_mask(struct drm_device *dev, u32 reg, u32 mask, u32 val)
++{
++ u32 tmp = nv_rd32(dev, reg);
++ tmp &= ~mask;
++ tmp |= val;
++ nv_wr32(dev, reg, tmp);
++}
++
+ static inline u8 nv_rd08(struct drm_device *dev, unsigned reg)
+ {
+ struct drm_nouveau_private *dev_priv = dev->dev_private;
diff --git a/drivers/gpu/drm/nouveau/nouveau_encoder.h b/drivers/gpu/drm/nouveau/nouveau_encoder.h
index e1df820..a1a0d48 100644
--- a/drivers/gpu/drm/nouveau/nouveau_encoder.h
@@ -4578,7 +4639,7 @@ index 1fd9537..1bc0859 100644
}
diff --git a/drivers/gpu/drm/nouveau/nv50_display.c b/drivers/gpu/drm/nouveau/nv50_display.c
-index e6a44af..7d59e91 100644
+index e6a44af..fb5f122 100644
--- a/drivers/gpu/drm/nouveau/nv50_display.c
+++ b/drivers/gpu/drm/nouveau/nv50_display.c
@@ -71,14 +71,13 @@ nv50_evo_dmaobj_new(struct nouveau_channel *evo, uint32_t class, uint32_t name,
@@ -4608,7 +4669,44 @@ index e6a44af..7d59e91 100644
if (ret) {
NV_ERROR(dev, "Error initialising EVO PRAMIN heap: %d\n", ret);
nv50_evo_channel_del(pchan);
-@@ -465,6 +464,7 @@ int nv50_display_create(struct drm_device *dev)
+@@ -185,7 +184,7 @@ nv50_display_init(struct drm_device *dev)
+ struct nouveau_timer_engine *ptimer = &dev_priv->engine.timer;
+ struct nouveau_channel *evo = dev_priv->evo;
+ struct drm_connector *connector;
+- uint32_t val, ram_amount, hpd_en[2];
++ uint32_t val, ram_amount;
+ uint64_t start;
+ int ret, i;
+
+@@ -366,26 +365,10 @@ nv50_display_init(struct drm_device *dev)
+ NV50_PDISPLAY_INTR_EN_CLK_UNK40));
+
+ /* enable hotplug interrupts */
+- hpd_en[0] = hpd_en[1] = 0;
+ list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
+ struct nouveau_connector *conn = nouveau_connector(connector);
+- struct dcb_gpio_entry *gpio;
+-
+- if (conn->dcb->gpio_tag == 0xff)
+- continue;
+
+- gpio = nouveau_bios_gpio_entry(dev, conn->dcb->gpio_tag);
+- if (!gpio)
+- continue;
+-
+- hpd_en[gpio->line >> 4] |= (0x00010001 << (gpio->line & 0xf));
+- }
+-
+- nv_wr32(dev, 0xe054, 0xffffffff);
+- nv_wr32(dev, 0xe050, hpd_en[0]);
+- if (dev_priv->chipset >= 0x90) {
+- nv_wr32(dev, 0xe074, 0xffffffff);
+- nv_wr32(dev, 0xe070, hpd_en[1]);
++ nv50_gpio_irq_enable(dev, conn->dcb->gpio_tag, true);
+ }
+
+ return 0;
+@@ -465,6 +448,7 @@ int nv50_display_create(struct drm_device *dev)
{
struct drm_nouveau_private *dev_priv = dev->dev_private;
struct dcb_table *dcb = &dev_priv->vbios.dcb;
@@ -4616,7 +4714,7 @@ index e6a44af..7d59e91 100644
int ret, i;
NV_DEBUG_KMS(dev, "\n");
-@@ -507,14 +507,18 @@ int nv50_display_create(struct drm_device *dev)
+@@ -507,14 +491,18 @@ int nv50_display_create(struct drm_device *dev)
continue;
}
@@ -4637,7 +4735,7 @@ index e6a44af..7d59e91 100644
break;
default:
NV_WARN(dev, "DCB encoder %d unknown\n", entry->type);
-@@ -522,11 +526,13 @@ int nv50_display_create(struct drm_device *dev)
+@@ -522,11 +510,13 @@ int nv50_display_create(struct drm_device *dev)
}
}
@@ -4656,7 +4754,7 @@ index e6a44af..7d59e91 100644
}
ret = nv50_display_init(dev);
-@@ -552,131 +558,28 @@ int nv50_display_destroy(struct drm_device *dev)
+@@ -552,131 +542,28 @@ int nv50_display_destroy(struct drm_device *dev)
return 0;
}
@@ -4795,7 +4893,7 @@ index e6a44af..7d59e91 100644
case OUTPUT_LVDS:
script = (mc >> 8) & 0xf;
if (bios->fp_no_ddc) {
-@@ -767,17 +670,88 @@ nv50_display_vblank_handler(struct drm_device *dev, uint32_t intr)
+@@ -767,17 +654,88 @@ nv50_display_vblank_handler(struct drm_device *dev, uint32_t intr)
static void
nv50_display_unk10_handler(struct drm_device *dev)
{
@@ -4843,7 +4941,7 @@ index e6a44af..7d59e91 100644
+
+ or = i;
+ }
-+
+
+ for (i = 0; type == OUTPUT_ANY && i < 4; i++) {
+ if (dev_priv->chipset < 0x90 ||
+ dev_priv->chipset == 0x92 ||
@@ -4851,7 +4949,7 @@ index e6a44af..7d59e91 100644
+ mc = nv_rd32(dev, NV50_PDISPLAY_SOR_MODE_CTRL_C(i));
+ else
+ mc = nv_rd32(dev, NV90_PDISPLAY_SOR_MODE_CTRL_C(i));
-
++
+ NV_DEBUG_KMS(dev, "SOR-%d mc: 0x%08x\n", i, mc);
+ if (!(mc & (1 << crtc)))
+ continue;
@@ -4890,7 +4988,7 @@ index e6a44af..7d59e91 100644
ack:
nv_wr32(dev, NV50_PDISPLAY_INTR_1, NV50_PDISPLAY_INTR_1_CLK_UNK10);
nv_wr32(dev, 0x610030, 0x80000000);
-@@ -817,33 +791,103 @@ nv50_display_unk20_dp_hack(struct drm_device *dev, struct dcb_entry *dcb)
+@@ -817,33 +775,103 @@ nv50_display_unk20_dp_hack(struct drm_device *dev, struct dcb_entry *dcb)
static void
nv50_display_unk20_handler(struct drm_device *dev)
{
@@ -4932,17 +5030,14 @@ index e6a44af..7d59e91 100644
- pclk = nv_rd32(dev, NV50_PDISPLAY_CRTC_P(head, CLOCK)) & 0x3fffff;
- script = nv50_display_script_select(dev, dcbent, pclk);
+ pclk = nv_rd32(dev, NV50_PDISPLAY_CRTC_P(crtc, CLOCK)) & 0x003fffff;
-
-- NV_DEBUG_KMS(dev, "head %d pxclk: %dKHz\n", head, pclk);
++
+ /* Find which encoder is connected to the CRTC */
+ for (i = 0; type == OUTPUT_ANY && i < 3; i++) {
+ mc = nv_rd32(dev, NV50_PDISPLAY_DAC_MODE_CTRL_P(i));
+ NV_DEBUG_KMS(dev, "DAC-%d mc: 0x%08x\n", i, mc);
+ if (!(mc & (1 << crtc)))
+ continue;
-
-- if (dcbent->type != OUTPUT_DP)
-- nouveau_bios_run_display_table(dev, dcbent, 0, -2);
++
+ switch ((mc & 0x00000f00) >> 8) {
+ case 0: type = OUTPUT_ANALOG; break;
+ case 1: type = OUTPUT_TV; break;
@@ -4950,12 +5045,11 @@ index e6a44af..7d59e91 100644
+ NV_ERROR(dev, "invalid mc, DAC-%d: 0x%08x\n", i, mc);
+ goto ack;
+ }
-
-- nv50_crtc_set_clock(dev, head, pclk);
++
+ or = i;
+ }
-- nouveau_bios_run_display_table(dev, dcbent, script, pclk);
+- NV_DEBUG_KMS(dev, "head %d pxclk: %dKHz\n", head, pclk);
+ for (i = 0; type == OUTPUT_ANY && i < 4; i++) {
+ if (dev_priv->chipset < 0x90 ||
+ dev_priv->chipset == 0x92 ||
@@ -4964,14 +5058,13 @@ index e6a44af..7d59e91 100644
+ else
+ mc = nv_rd32(dev, NV90_PDISPLAY_SOR_MODE_CTRL_P(i));
-- nv50_display_unk20_dp_hack(dev, dcbent);
+- if (dcbent->type != OUTPUT_DP)
+- nouveau_bios_run_display_table(dev, dcbent, 0, -2);
+ NV_DEBUG_KMS(dev, "SOR-%d mc: 0x%08x\n", i, mc);
+ if (!(mc & (1 << crtc)))
+ continue;
-- tmp = nv_rd32(dev, NV50_PDISPLAY_CRTC_CLK_CTRL2(head));
-- tmp &= ~0x000000f;
-- nv_wr32(dev, NV50_PDISPLAY_CRTC_CLK_CTRL2(head), tmp);
+- nv50_crtc_set_clock(dev, head, pclk);
+ switch ((mc & 0x00000f00) >> 8) {
+ case 0: type = OUTPUT_LVDS; break;
+ case 1: type = OUTPUT_TMDS; break;
@@ -4983,7 +5076,8 @@ index e6a44af..7d59e91 100644
+ NV_ERROR(dev, "invalid mc, SOR-%d: 0x%08x\n", i, mc);
+ goto ack;
+ }
-+
+
+- nouveau_bios_run_display_table(dev, dcbent, script, pclk);
+ or = i;
+ }
+
@@ -5001,10 +5095,14 @@ index e6a44af..7d59e91 100644
+ NV_ERROR(dev, "no dcb for %d %d 0x%08x\n", or, type, mc);
+ goto ack;
+ }
-+
+
+- nv50_display_unk20_dp_hack(dev, dcbent);
+ script = nv50_display_script_select(dev, dcb, mc, pclk);
+ nouveau_bios_run_display_table(dev, dcb, script, pclk);
-+
+
+- tmp = nv_rd32(dev, NV50_PDISPLAY_CRTC_CLK_CTRL2(head));
+- tmp &= ~0x000000f;
+- nv_wr32(dev, NV50_PDISPLAY_CRTC_CLK_CTRL2(head), tmp);
+ nv50_display_unk20_dp_hack(dev, dcb);
- if (dcbent->type != OUTPUT_ANALOG) {
@@ -5012,7 +5110,7 @@ index e6a44af..7d59e91 100644
tmp = nv_rd32(dev, NV50_PDISPLAY_SOR_CLK_CTRL2(or));
tmp &= ~0x00000f0f;
if (script & 0x0100)
-@@ -853,24 +897,61 @@ nv50_display_unk20_handler(struct drm_device *dev)
+@@ -853,24 +881,61 @@ nv50_display_unk20_handler(struct drm_device *dev)
nv_wr32(dev, NV50_PDISPLAY_DAC_CLK_CTRL2(or), 0);
}
@@ -5392,6 +5490,33 @@ index e20c0e2..fb0281a 100644
/*XXX: probably reload ch127 (NULL) state back too */
nv_wr32(dev, NV03_PFIFO_CACHE1_PUSH1, 127);
+diff --git a/drivers/gpu/drm/nouveau/nv50_gpio.c b/drivers/gpu/drm/nouveau/nv50_gpio.c
+index bb47ad7..88715c5 100644
+--- a/drivers/gpu/drm/nouveau/nv50_gpio.c
++++ b/drivers/gpu/drm/nouveau/nv50_gpio.c
+@@ -74,3 +74,22 @@ nv50_gpio_set(struct drm_device *dev, enum dcb_gpio_tag tag, int state)
+ nv_wr32(dev, r, v);
+ return 0;
+ }
++
++void
++nv50_gpio_irq_enable(struct drm_device *dev, enum dcb_gpio_tag tag, bool on)
++{
++ struct dcb_gpio_entry *gpio;
++ u32 reg, mask;
++
++ gpio = nouveau_bios_gpio_entry(dev, tag);
++ if (!gpio) {
++ NV_ERROR(dev, "gpio tag 0x%02x not found\n", tag);
++ return;
++ }
++
++ reg = gpio->line < 16 ? 0xe050 : 0xe070;
++ mask = 0x00010001 << (gpio->line & 0xf);
++
++ nv_wr32(dev, reg + 4, mask);
++ nv_mask(dev, reg + 0, mask, on ? mask : 0);
++}
diff --git a/drivers/gpu/drm/nouveau/nv50_graph.c b/drivers/gpu/drm/nouveau/nv50_graph.c
index b203d06..1413028 100644
--- a/drivers/gpu/drm/nouveau/nv50_graph.c
@@ -5697,6 +5822,31 @@ index 5f21df3..0c8a6f2 100644
+ NV_ERROR(dev, "vm flush timeout: engine %d\n", engine);
}
-
+diff --git a/drivers/gpu/drm/nouveau/nv50_mc.c b/drivers/gpu/drm/nouveau/nv50_mc.c
+index e0a9c3f..f680e8e 100644
+--- a/drivers/gpu/drm/nouveau/nv50_mc.c
++++ b/drivers/gpu/drm/nouveau/nv50_mc.c
+@@ -31,7 +31,20 @@
+ int
+ nv50_mc_init(struct drm_device *dev)
+ {
++ struct drm_nouveau_private *dev_priv = dev->dev_private;
++
+ nv_wr32(dev, NV03_PMC_ENABLE, 0xFFFFFFFF);
++
++ /* disable, and ack any pending gpio interrupts
++ * XXX doesn't technically belong here, but it'll do for the moment
++ */
++ nv_wr32(dev, 0xe050, 0x00000000);
++ nv_wr32(dev, 0xe054, 0xffffffff);
++ if (dev_priv->chipset >= 0x90) {
++ nv_wr32(dev, 0xe070, 0x00000000);
++ nv_wr32(dev, 0xe074, 0xffffffff);
++ }
++
+ return 0;
+ }
+
diff --git a/drivers/gpu/drm/nouveau/nv50_sor.c b/drivers/gpu/drm/nouveau/nv50_sor.c
index 812778d..bcd4cf8 100644
--- a/drivers/gpu/drm/nouveau/nv50_sor.c
@@ -5901,5 +6051,5 @@ index 812778d..bcd4cf8 100644
return 0;
}
--
-1.7.1.1
+1.7.2.1
diff --git a/freed-ora/current/f13/kernel.spec b/freed-ora/current/f13/kernel.spec
index 40d11bbb5..5d504fbed 100644
--- a/freed-ora/current/f13/kernel.spec
+++ b/freed-ora/current/f13/kernel.spec
@@ -48,7 +48,7 @@ Summary: The Linux kernel
# reset this by hand to 1 (or to 0 and then use rpmdev-bumpspec).
# scripts/rebase.sh should be made to do that for you, actually.
#
-%global baserelease 42
+%global baserelease 44
%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
@@ -765,7 +765,6 @@ Patch12017: prevent-runtime-conntrack-changes.patch
Patch12018: neuter_intel_microcode_load.patch
Patch12019: linux-2.6-umh-refactor.patch
-Patch12020: coredump-uid-pipe-check.patch
Patch12030: ssb_check_for_sprom.patch
@@ -789,9 +788,6 @@ Patch12440: direct-io-move-aio_complete-into-end_io.patch
Patch12450: ext4-move-aio-completion-after-unwritten-extent-conversion.patch
Patch12460: xfs-move-aio-completion-after-unwritten-extent-conversion.patch
-Patch12470: mm-fix-page-table-unmap-for-stack-guard-page-properly.patch
-Patch12480: mm-fix-up-some-user-visible-effects-of-the-stack-guard-page.patch
-
%endif
BuildRoot: %{_tmppath}/kernel-%{KVERREL}-root
@@ -1429,8 +1425,7 @@ ApplyPatch disable-i8042-check-on-apple-mac.patch
ApplyPatch neuter_intel_microcode_load.patch
# Refactor UserModeHelper code & satisfy abrt recursion check request
-#ApplyPatch linux-2.6-umh-refactor.patch
-#ApplyPatch coredump-uid-pipe-check.patch
+ApplyPatch linux-2.6-umh-refactor.patch
# rhbz#533746
# awful, ugly conflicts between this patch and the 2.6.34.2 patch:
@@ -1474,10 +1469,6 @@ ApplyPatch direct-io-move-aio_complete-into-end_io.patch
ApplyPatch ext4-move-aio-completion-after-unwritten-extent-conversion.patch
ApplyPatch xfs-move-aio-completion-after-unwritten-extent-conversion.patch
-# Fix fallout from stack guard page
-ApplyPatch mm-fix-page-table-unmap-for-stack-guard-page-properly.patch
-ApplyPatch mm-fix-up-some-user-visible-effects-of-the-stack-guard-page.patch
-
# END OF PATCH APPLICATIONS
%endif
@@ -2099,6 +2090,22 @@ fi
%changelog
+* Mon Aug 23 2010 Alexandre Oliva <lxoliva@fsfla.org> -libre
+- Adjusted patch-libre-2.6.34.5.
+
+* Mon Aug 23 2010 Ben Skeggs <bskeggs@redhat.com> 2.6.34.5-44
+- nouveau: fix eDP panels that flip HPD during link training (rhbz#596562)
+
+* Sat Aug 21 2010 Chuck Ebbert <cebbert@redhat.com> 2.6.34.5-43
+- Linux 2.6.34.5
+- Drop merged patches:
+ mm-fix-page-table-unmap-for-stack-guard-page-properly.patch
+ mm-fix-up-some-user-visible-effects-of-the-stack-guard-page.patch
+
+* Wed Aug 18 2010 Chuck Ebbert <cebbert@redhat.com>
+- Restore linux-2.6-umh-refactor.patch, still needed in 2.6.34 (#625150)
+- Drop coredump-uid-pipe-check.patch, now upstream.
+
* Wed Aug 18 2010 Chuck Ebbert <cebbert@redhat.com> 2.6.34.4-42
- Revert "ata-piix: Detect spurious IRQs and clear them",
should be fixed by commit 27943620c upstream.
diff --git a/freed-ora/current/f13/mm-fix-page-table-unmap-for-stack-guard-page-properly.patch b/freed-ora/current/f13/mm-fix-page-table-unmap-for-stack-guard-page-properly.patch
deleted file mode 100644
index 0989fe3b7..000000000
--- a/freed-ora/current/f13/mm-fix-page-table-unmap-for-stack-guard-page-properly.patch
+++ /dev/null
@@ -1,71 +0,0 @@
-From: Linus Torvalds <torvalds@linux-foundation.org>
-Date: Sat, 14 Aug 2010 18:44:56 +0000 (-0700)
-Subject: mm: fix page table unmap for stack guard page properly
-X-Git-Tag: v2.6.36-rc1~20
-X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=11ac552477e32835cb6970bf0a70c210807f5673
-
-mm: fix page table unmap for stack guard page properly
-
-We do in fact need to unmap the page table _before_ doing the whole
-stack guard page logic, because if it is needed (mainly 32-bit x86 with
-PAE and CONFIG_HIGHPTE, but other architectures may use it too) then it
-will do a kmap_atomic/kunmap_atomic.
-
-And those kmaps will create an atomic region that we cannot do
-allocations in. However, the whole stack expand code will need to do
-anon_vma_prepare() and vma_lock_anon_vma() and they cannot do that in an
-atomic region.
-
-Now, a better model might actually be to do the anon_vma_prepare() when
-_creating_ a VM_GROWSDOWN segment, and not have to worry about any of
-this at page fault time. But in the meantime, this is the
-straightforward fix for the issue.
-
-See https://bugzilla.kernel.org/show_bug.cgi?id=16588 for details.
-
-Reported-by: Wylda <wylda@volny.cz>
-Reported-by: Sedat Dilek <sedat.dilek@gmail.com>
-Reported-by: Mike Pagano <mpagano@gentoo.org>
-Reported-by: François Valenduc <francois.valenduc@tvcablenet.be>
-Tested-by: Ed Tomlinson <edt@aei.ca>
-Cc: Pekka Enberg <penberg@kernel.org>
-Cc: Greg KH <gregkh@suse.de>
-Cc: stable@kernel.org
-Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
----
-
-diff --git a/mm/memory.c b/mm/memory.c
-index 9b3b73f..b6e5fd2 100644
---- a/mm/memory.c
-+++ b/mm/memory.c
-@@ -2792,24 +2792,23 @@ static int do_anonymous_page(struct mm_struct *mm, struct vm_area_struct *vma,
- spinlock_t *ptl;
- pte_t entry;
-
-- if (check_stack_guard_page(vma, address) < 0) {
-- pte_unmap(page_table);
-+ pte_unmap(page_table);
-+
-+ /* Check if we need to add a guard page to the stack */
-+ if (check_stack_guard_page(vma, address) < 0)
- return VM_FAULT_SIGBUS;
-- }
-
-+ /* Use the zero-page for reads */
- if (!(flags & FAULT_FLAG_WRITE)) {
- entry = pte_mkspecial(pfn_pte(my_zero_pfn(address),
- vma->vm_page_prot));
-- ptl = pte_lockptr(mm, pmd);
-- spin_lock(ptl);
-+ page_table = pte_offset_map_lock(mm, pmd, address, &ptl);
- if (!pte_none(*page_table))
- goto unlock;
- goto setpte;
- }
-
- /* Allocate our own private page. */
-- pte_unmap(page_table);
--
- if (unlikely(anon_vma_prepare(vma)))
- goto oom;
- page = alloc_zeroed_user_highpage_movable(vma, address);
diff --git a/freed-ora/current/f13/mm-fix-up-some-user-visible-effects-of-the-stack-guard-page.patch b/freed-ora/current/f13/mm-fix-up-some-user-visible-effects-of-the-stack-guard-page.patch
deleted file mode 100644
index 095a9336d..000000000
--- a/freed-ora/current/f13/mm-fix-up-some-user-visible-effects-of-the-stack-guard-page.patch
+++ /dev/null
@@ -1,85 +0,0 @@
-From: Linus Torvalds <torvalds@linux-foundation.org>
-Date: Sun, 15 Aug 2010 18:35:52 +0000 (-0700)
-Subject: mm: fix up some user-visible effects of the stack guard page
-X-Git-Tag: v2.6.36-rc1~5
-X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=d7824370e26325c881b665350ce64fb0a4fde24a
-
-mm: fix up some user-visible effects of the stack guard page
-
-This commit makes the stack guard page somewhat less visible to user
-space. It does this by:
-
- - not showing the guard page in /proc/<pid>/maps
-
- It looks like lvm-tools will actually read /proc/self/maps to figure
- out where all its mappings are, and effectively do a specialized
- "mlockall()" in user space. By not showing the guard page as part of
- the mapping (by just adding PAGE_SIZE to the start for grows-up
- pages), lvm-tools ends up not being aware of it.
-
- - by also teaching the _real_ mlock() functionality not to try to lock
- the guard page.
-
- That would just expand the mapping down to create a new guard page,
- so there really is no point in trying to lock it in place.
-
-It would perhaps be nice to show the guard page specially in
-/proc/<pid>/maps (or at least mark grow-down segments some way), but
-let's not open ourselves up to more breakage by user space from programs
-that depends on the exact deails of the 'maps' file.
-
-Special thanks to Henrique de Moraes Holschuh for diving into lvm-tools
-source code to see what was going on with the whole new warning.
-
-Reported-and-tested-by: François Valenduc <francois.valenduc@tvcablenet.be
-Reported-by: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
-Cc: stable@kernel.org
-Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
----
-
-diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c
-index aea1d3f..439fc1f 100644
---- a/fs/proc/task_mmu.c
-+++ b/fs/proc/task_mmu.c
-@@ -210,6 +210,7 @@ static void show_map_vma(struct seq_file *m, struct vm_area_struct *vma)
- int flags = vma->vm_flags;
- unsigned long ino = 0;
- unsigned long long pgoff = 0;
-+ unsigned long start;
- dev_t dev = 0;
- int len;
-
-@@ -220,8 +221,13 @@ static void show_map_vma(struct seq_file *m, struct vm_area_struct *vma)
- pgoff = ((loff_t)vma->vm_pgoff) << PAGE_SHIFT;
- }
-
-+ /* We don't show the stack guard page in /proc/maps */
-+ start = vma->vm_start;
-+ if (vma->vm_flags & VM_GROWSDOWN)
-+ start += PAGE_SIZE;
-+
- seq_printf(m, "%08lx-%08lx %c%c%c%c %08llx %02x:%02x %lu %n",
-- vma->vm_start,
-+ start,
- vma->vm_end,
- flags & VM_READ ? 'r' : '-',
- flags & VM_WRITE ? 'w' : '-',
-diff --git a/mm/mlock.c b/mm/mlock.c
-index 3f82720..49e5e4c 100644
---- a/mm/mlock.c
-+++ b/mm/mlock.c
-@@ -167,6 +167,14 @@ static long __mlock_vma_pages_range(struct vm_area_struct *vma,
- if (vma->vm_flags & VM_WRITE)
- gup_flags |= FOLL_WRITE;
-
-+ /* We don't try to access the guard page of a stack vma */
-+ if (vma->vm_flags & VM_GROWSDOWN) {
-+ if (start == vma->vm_start) {
-+ start += PAGE_SIZE;
-+ nr_pages--;
-+ }
-+ }
-+
- while (nr_pages > 0) {
- int i;
-
diff --git a/freed-ora/current/f13/patch-libre-2.6.34.4.bz2.sign b/freed-ora/current/f13/patch-libre-2.6.34.4.bz2.sign
deleted file mode 100644
index 30474c897..000000000
--- a/freed-ora/current/f13/patch-libre-2.6.34.4.bz2.sign
+++ /dev/null
@@ -1,7 +0,0 @@
------BEGIN PGP SIGNATURE-----
-Version: GnuPG v2.0.14 (GNU/Linux)
-
-iEYEABECAAYFAkxoV6YACgkQvLfPh359R6c8yQCfXrw1Uv+agFTLNDB8eQo3ya00
-l9sAnROFpAwMPgdjaAIZ0LRbTzym+Bx3
-=NNos
------END PGP SIGNATURE-----
diff --git a/freed-ora/current/f13/patch-libre-2.6.34.4.xdelta b/freed-ora/current/f13/patch-libre-2.6.34.4.xdelta
deleted file mode 100644
index 4cde3c70d..000000000
--- a/freed-ora/current/f13/patch-libre-2.6.34.4.xdelta
+++ /dev/null
Binary files differ
diff --git a/freed-ora/current/f13/patch-libre-2.6.34.4.xdelta.sign b/freed-ora/current/f13/patch-libre-2.6.34.4.xdelta.sign
deleted file mode 100644
index 3178ba56e..000000000
--- a/freed-ora/current/f13/patch-libre-2.6.34.4.xdelta.sign
+++ /dev/null
@@ -1,7 +0,0 @@
------BEGIN PGP SIGNATURE-----
-Version: GnuPG v2.0.14 (GNU/Linux)
-
-iEYEABECAAYFAkxoV6QACgkQvLfPh359R6f4KgCglXU0wA5sat1ZG5l4wFwL6+pw
-KQgAnj9ajizeeSyXFtyQNLL4FUq3ktGP
-=1/G/
------END PGP SIGNATURE-----
diff --git a/freed-ora/current/f13/patch-libre-2.6.34.5.bz2.sign b/freed-ora/current/f13/patch-libre-2.6.34.5.bz2.sign
new file mode 100644
index 000000000..68256fd14
--- /dev/null
+++ b/freed-ora/current/f13/patch-libre-2.6.34.5.bz2.sign
@@ -0,0 +1,7 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v2.0.14 (GNU/Linux)
+
+iEYEABECAAYFAkxzVn0ACgkQvLfPh359R6dPIACfZiSpelICPhiwa8LkJsnHtoLT
+akgAnib2Bj+VbuFxBji7GX/WlD8AETZ4
+=Z0sT
+-----END PGP SIGNATURE-----
diff --git a/freed-ora/current/f13/patch-libre-2.6.34.5.xdelta b/freed-ora/current/f13/patch-libre-2.6.34.5.xdelta
new file mode 100644
index 000000000..ec93d5227
--- /dev/null
+++ b/freed-ora/current/f13/patch-libre-2.6.34.5.xdelta
Binary files differ
diff --git a/freed-ora/current/f13/patch-libre-2.6.34.5.xdelta.sign b/freed-ora/current/f13/patch-libre-2.6.34.5.xdelta.sign
new file mode 100644
index 000000000..b62d308bd
--- /dev/null
+++ b/freed-ora/current/f13/patch-libre-2.6.34.5.xdelta.sign
@@ -0,0 +1,7 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v2.0.14 (GNU/Linux)
+
+iEYEABECAAYFAkxzVnsACgkQvLfPh359R6c/mACfdnLyb5tOOCruinXZ54jXLA6n
+KSIAn2yL4g6UVs/aaXeF7negtegtlGVB
+=njxt
+-----END PGP SIGNATURE-----
diff --git a/freed-ora/current/f13/sources b/freed-ora/current/f13/sources
index a2e03c327..f81610bde 100644
--- a/freed-ora/current/f13/sources
+++ b/freed-ora/current/f13/sources
@@ -1,2 +1,2 @@
9bd0879fe356e0f0f2b9fdcdc5147cb6 linux-2.6.34-libre1.tar.bz2
-807bfa979996a88bb6b535e00a710841 patch-libre-2.6.34.4.bz2
+88ac110f5194c2f0b059165f8679d3c8 patch-libre-2.6.34.5.bz2
OpenPOWER on IntegriCloud