From: Dave Jones <davej@redhat.com>
To: Paul Mackerras <paulus@samba.org>
Cc: torvalds@osdl.org, benh@kernel.crashing.org,
linux-kernel@vger.kernel.org
Subject: Re: AGP bogosities
Date: Thu, 10 Mar 2005 21:12:48 -0500 [thread overview]
Message-ID: <20050311021248.GA20697@redhat.com> (raw)
In-Reply-To: <16944.62310.967444.786526@cargo.ozlabs.ibm.com>
On Fri, Mar 11, 2005 at 12:24:54PM +1100, Paul Mackerras wrote:
> In fact there are other bogosities in drivers/char/agp/generic.c. I
> can't believe Dave ever tested that code with an AGP 3.0 device.
Hrmm, I'm fairly sure I did. It's also been sat in -mm without complaint
for a few weeks, which is odd.
> you pass in a mode that has the AGP 3.0 bit set, agp_v3_parse_one()
> will first clear that bit (and print a message), and then complain
> because you haven't got that bit set in the mode, with a message that
> the caller is broken. Furthermore, if the mode passed in has both the
> 4x and 8x bits set, the new code will give you 4x where the old code
> would give you 8x (which is what the caller wanted).
>
> The patch below fixes these problems. It will work in the 99.99% of
> cases where we have one AGP bridge and one AGP video card. We should
> eventually cope with multiple AGP bridges, but doing the matching of
> bridges to video cards is a hard problem because the video card is not
> necessarily a child or sibling of the PCI device that we use for
> controlling the AGP bridge. I think we need to see an actual example
> of a system with multiple AGP bridges first.
>
> Oh, and by the way, I have 3D working relatively well on my G5 with a
> 64-bit kernel (and 32-bit X server and clients), which is why I care
> about AGP 3.0 support. :)
>
> Paul.
>
> diff -urN linux-2.5/drivers/char/agp/agp.h g5-bad/drivers/char/agp/agp.h
> --- linux-2.5/drivers/char/agp/agp.h 2005-03-07 14:01:44.000000000 +1100
> +++ g5/drivers/char/agp/agp.h 2005-03-11 11:54:54.000000000 +1100
> @@ -322,7 +322,7 @@
> #define AGPCTRL_GTLBEN (1<<7)
>
> #define AGP2_RESERVED_MASK 0x00fffcc8
> -#define AGP3_RESERVED_MASK 0x00ff00cc
> +#define AGP3_RESERVED_MASK 0x00ff00c4
>
> #define AGP_ERRATA_FASTWRITES 1<<0
> #define AGP_ERRATA_SBA 1<<1
> diff -urN linux-2.5/drivers/char/agp/generic.c g5-bad/drivers/char/agp/generic.c
> --- linux-2.5/drivers/char/agp/generic.c 2005-03-11 11:47:37.000000000 +1100
> +++ g5/drivers/char/agp/generic.c 2005-03-11 12:08:29.000000000 +1100
> @@ -515,13 +515,9 @@
> printk (KERN_INFO PFX "%s tried to set rate=x0. Setting to AGP3 x4 mode.\n", current->comm);
> *requested_mode |= AGPSTAT3_4X;
> }
> - if (tmp == 3) {
> - printk (KERN_INFO PFX "%s tried to set rate=x3. Setting to AGP3 x4 mode.\n", current->comm);
> - *requested_mode |= AGPSTAT3_4X;
> - }
> - if (tmp >3) {
> - printk (KERN_INFO PFX "%s tried to set rate=x%d. Setting to AGP3 x8 mode.\n", current->comm, tmp);
> - *requested_mode |= AGPSTAT3_8X;
> + if (tmp >= 3) {
> + printk (KERN_INFO PFX "%s tried to set rate=x%d. Setting to AGP3 x8 mode.\n", current->comm, tmp * 4);
> + *requested_mode = (*requested_mode & ~7) | AGPSTAT3_8X;
> }
This seems to make sense.
> /* ARQSZ - Set the value to the maximum one.
> @@ -642,11 +638,6 @@
> return 0;
> }
> cap_ptr = pci_find_capability(device, PCI_CAP_ID_AGP);
> - if (!cap_ptr) {
> - pci_dev_put(device);
> - continue;
> - }
> - cap_ptr = 0;
> }
This part I'm not so sure about.
The pci_get_class() call a few lines above will get a refcount that
we will now never release.
Thanks for taking a look at this. The absense of hardware to test
on means I pretty much rely on feedback from inclusion in -mm
to hear about problems like this before it hits mainline.
Unfortunatly, no-one with ppc64 tested it there it seems :-(
Dave
next prev parent reply other threads:[~2005-03-11 2:16 UTC|newest]
Thread overview: 81+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-03-11 1:24 AGP bogosities Paul Mackerras
2005-03-11 2:04 ` Jesse Barnes
2005-03-11 2:11 ` Paul Mackerras
2005-03-11 2:18 ` Jesse Barnes
2005-03-11 2:38 ` Benjamin Herrenschmidt
2005-03-11 4:02 ` Jesse Barnes
2005-03-11 4:30 ` Benjamin Herrenschmidt
2005-03-11 16:39 ` Jesse Barnes
2005-03-11 17:59 ` Bjorn Helgaas
2005-03-11 18:04 ` Jesse Barnes
2005-03-12 3:27 ` Mike Werner
2005-03-12 3:58 ` Dave Jones
2005-03-13 3:13 ` Jesse Barnes
2005-03-13 4:08 ` Dave Jones
2005-03-13 4:28 ` Dave Jones
2005-03-11 22:43 ` Paul Mackerras
2005-03-11 23:22 ` Bjorn Helgaas
2005-03-12 0:12 ` Benjamin Herrenschmidt
2005-03-12 1:34 ` Paul Mackerras
2005-03-11 18:04 ` James Simmons
2005-03-11 18:08 ` Jesse Barnes
2005-03-11 2:04 ` Linus Torvalds
2005-03-11 2:12 ` Dave Jones [this message]
2005-03-11 2:18 ` Paul Mackerras
2005-03-11 2:23 ` Dave Jones
2005-03-11 2:40 ` Benjamin Herrenschmidt
2005-03-11 2:49 ` Dave Jones
2005-03-12 20:49 ` Greg KH
2005-03-11 2:42 ` Linus Torvalds
2005-03-11 22:18 ` OGAWA Hirofumi
2005-03-11 22:26 ` Dave Jones
2005-03-11 22:33 ` Chris Wedgwood
2005-03-11 23:52 ` Gene Heskett
2005-03-11 22:44 ` Linus Torvalds
2005-03-11 23:09 ` Paul Mackerras
2005-03-12 0:06 ` Gene Heskett
2005-03-14 8:17 ` Pavel Machek
2005-03-14 8:27 ` David Lang
2005-03-14 8:37 ` dmesg verbosity [was Re: AGP bogosities] Pavel Machek
2005-03-14 16:55 ` Jesse Barnes
2005-03-14 17:03 ` Pavel Machek
2005-03-14 17:17 ` Dave Jones
2005-03-14 17:18 ` Linus Torvalds
2005-03-14 17:27 ` Jesse Barnes
2005-03-14 17:27 ` Pavel Machek
2005-03-15 20:18 ` Greg Stark
2005-03-14 18:12 ` Diego Calleja
2005-03-14 19:07 ` Lee Revell
2005-03-20 6:44 ` David Lang
2005-03-23 0:37 ` Diego Calleja
2005-03-23 0:53 ` Lee Revell
2005-03-23 1:13 ` Dave Jones
2005-03-23 1:29 ` Andrew Morton
2005-03-23 8:21 ` Giuseppe Bilotta
2005-03-23 16:14 ` Dave Jones
2005-03-23 16:49 ` Giuseppe Bilotta
2005-03-23 17:17 ` Dave Jones
2005-03-23 14:10 ` Diego Calleja
2005-03-23 8:19 ` Giuseppe Bilotta
2005-03-30 9:45 ` Pavel Machek
2005-03-23 0:53 ` Zan Lynx
2005-03-23 0:55 ` Grant Coady
2005-03-14 21:55 ` Benjamin Herrenschmidt
2005-03-14 22:08 ` David Lang
2005-03-15 0:02 ` Pavel Machek
2005-03-11 22:42 ` AGP bogosities Dmitry Torokhov
2005-03-11 22:47 ` Dmitry Torokhov
2005-03-12 17:09 ` Linus Torvalds
2005-03-12 22:26 ` OGAWA Hirofumi
2005-03-12 22:34 ` Linus Torvalds
2005-03-11 2:35 ` Benjamin Herrenschmidt
2005-03-11 2:43 ` Dave Jones
2005-03-11 2:37 ` Linus Torvalds
2005-03-11 22:11 ` J.A. Magallon
2005-03-11 22:18 ` Dave Jones
2005-03-11 22:46 ` J.A. Magallon
2005-03-11 23:16 ` Martin Schlemmer
2005-03-11 23:17 ` J.A. Magallon
2005-03-11 23:23 ` Martin Schlemmer
2005-03-11 23:24 ` J.A. Magallon
-- strict thread matches above, loose matches on Subject: below --
2005-03-12 4:33 Ken Ryan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20050311021248.GA20697@redhat.com \
--to=davej@redhat.com \
--cc=benh@kernel.crashing.org \
--cc=linux-kernel@vger.kernel.org \
--cc=paulus@samba.org \
--cc=torvalds@osdl.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox