]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blob - releases/2.6.20.2/agp-intel-agp-bugfix.patch
4.9-stable patches
[thirdparty/kernel/stable-queue.git] / releases / 2.6.20.2 / agp-intel-agp-bugfix.patch
1 From stable-bounces@linux.kernel.org Sun Feb 4 14:40:37 2007
2 Date: Sun, 4 Feb 2007 12:18:50 -0500
3 From: Dave Jones <davej@redhat.com>
4 To: Eric Piel <Eric.Piel@tremplin-utc.net>
5 Cc: Wang Zhenyu <zhenyu.z.wang@intel.com>, linux-kernel@vger.kernel.org, Adrian Bunk <bunk@stusta.de>
6 Subject: AGP: intel-agp bugfix
7 Message-ID: <20070204171850.GA17171@redhat.com>
8
9 From: Dave Jones <davej@redhat.com>
10
11 On Sun, Feb 04, 2007 at 04:51:38PM +0100, Eric Piel wrote:
12 > Hello,
13 >
14 > I've got a regression in 2.6.20-rc7 (-rc6 was fine) due to commit
15 > 4b95320fc4d21b0ff2f8604305dd6c851aff6096 ([AGPGART] intel_agp: restore
16 > graphics device's pci space early in resume).
17
18 I think the key to this failure is the last line here ..
19
20 > agpgart-intel 0000:00:00.0: resuming
21 > PM: Writing back config space on device 0000:00:02.0 at offset f (was 10b, writing 0)
22 > PM: Writing back config space on device 0000:00:02.0 at offset d (was dc, writing 0)
23 > PM: Writing back config space on device 0000:00:02.0 at offset b (was 10161025, writing 0)
24 > PM: Writing back config space on device 0000:00:02.0 at offset 5 (was f4000000, writing 0)
25 > PM: Writing back config space on device 0000:00:02.0 at offset 4 (was f8000008, writing 0)
26 > PM: Writing back config space on device 0000:00:02.0 at offset 2 (was 3000011, writing 0)
27 > PM: Writing back config space on device 0000:00:02.0 at offset 1 (was 2b00007, writing 0)
28 > PM: Writing back config space on device 0000:00:02.0 at offset 0 (was 11328086, writing 0)
29 > agpgart: Unable to remap memory.
30
31 This then blows up the next access to intel_i810_private.registers, which happens to
32 be intel_i810_insert_entries.
33
34 Either we need .suspend methods which unmap these regions, or we need
35 to skip trying to map them a second time on resume.
36
37 There's an ugly patch below which does the latter. Give it a try?
38
39 The intel-agp suspend/resume code has really grown into something
40 of a monster, and could use some refactoring in a big way.
41
42 Dave
43
44
45 From: Dave Jones <davej@redhat.com>
46 Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
47
48 ---
49 drivers/char/agp/intel-agp.c | 14 ++++++++------
50 1 file changed, 8 insertions(+), 6 deletions(-)
51
52 --- linux-2.6.20.1.orig/drivers/char/agp/intel-agp.c
53 +++ linux-2.6.20.1/drivers/char/agp/intel-agp.c
54 @@ -117,13 +117,15 @@ static int intel_i810_configure(void)
55
56 current_size = A_SIZE_FIX(agp_bridge->current_size);
57
58 - pci_read_config_dword(intel_i810_private.i810_dev, I810_MMADDR, &temp);
59 - temp &= 0xfff80000;
60 -
61 - intel_i810_private.registers = ioremap(temp, 128 * 4096);
62 if (!intel_i810_private.registers) {
63 - printk(KERN_ERR PFX "Unable to remap memory.\n");
64 - return -ENOMEM;
65 + pci_read_config_dword(intel_i810_private.i810_dev, I810_MMADDR, &temp);
66 + temp &= 0xfff80000;
67 +
68 + intel_i810_private.registers = ioremap(temp, 128 * 4096);
69 + if (!intel_i810_private.registers) {
70 + printk(KERN_ERR PFX "Unable to remap memory.\n");
71 + return -ENOMEM;
72 + }
73 }
74
75 if ((readl(intel_i810_private.registers+I810_DRAM_CTL)