diff options
author | Alexandre Oliva <lxoliva@fsfla.org> | 2010-08-24 19:56:23 +0000 |
---|---|---|
committer | Alexandre Oliva <lxoliva@fsfla.org> | 2010-08-24 19:56:23 +0000 |
commit | 561625db20b0c68627d6dcf7ab170db43433ec0c (patch) | |
tree | 64f0846409b7b88fe1336545e6625856b88398d1 /freed-ora/current/f13 | |
parent | 365d388bedffff5dc4cea904439c801d51454252 (diff) | |
download | linux-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.patch | 14 | ||||
-rw-r--r-- | freed-ora/current/f13/drm-nouveau-updates.patch | 230 | ||||
-rw-r--r-- | freed-ora/current/f13/kernel.spec | 31 | ||||
-rw-r--r-- | freed-ora/current/f13/mm-fix-page-table-unmap-for-stack-guard-page-properly.patch | 71 | ||||
-rw-r--r-- | freed-ora/current/f13/mm-fix-up-some-user-visible-effects-of-the-stack-guard-page.patch | 85 | ||||
-rw-r--r-- | freed-ora/current/f13/patch-libre-2.6.34.4.bz2.sign | 7 | ||||
-rw-r--r-- | freed-ora/current/f13/patch-libre-2.6.34.4.xdelta | bin | 417 -> 0 bytes | |||
-rw-r--r-- | freed-ora/current/f13/patch-libre-2.6.34.4.xdelta.sign | 7 | ||||
-rw-r--r-- | freed-ora/current/f13/patch-libre-2.6.34.5.bz2.sign | 7 | ||||
-rw-r--r-- | freed-ora/current/f13/patch-libre-2.6.34.5.xdelta | bin | 0 -> 433 bytes | |||
-rw-r--r-- | freed-ora/current/f13/patch-libre-2.6.34.5.xdelta.sign | 7 | ||||
-rw-r--r-- | freed-ora/current/f13/sources | 2 |
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 Binary files differdeleted file mode 100644 index 4cde3c70d..000000000 --- a/freed-ora/current/f13/patch-libre-2.6.34.4.xdelta +++ /dev/null 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 Binary files differnew file mode 100644 index 000000000..ec93d5227 --- /dev/null +++ b/freed-ora/current/f13/patch-libre-2.6.34.5.xdelta 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 |