Date: Fri, 29 Aug 2003 10:13:20 -0400 From: Andrew Atrens <atrens@nortelnetworks.com> To: Hendrik Hasenbein <hhasenbe@techfak.uni-bielefeld.de> Cc: freebsd-current@freebsd.org Subject: Re: nvidia.ko freezes system in -current Message-ID: <3F4F5F80.8050205@nortelnetworks.com> In-Reply-To: <3F4F57FA.4030605@techfak.uni-bielefeld.de> References: <200308281540.h7SFeUV22668@accms33.physik.rwth-aachen.de> <20030828201301.GA14685@gattaca.yadt.co.uk> <3F4F57FA.4030605@techfak.uni-bielefeld.de>
next in thread | previous in thread | raw e-mail | index | archive | help
Hendrik Hasenbein wrote:
>
> Does somebody use the nvidia driver together with a nforce2 chipset?
> The driver won't enable the agp port:
>
> nvidia0: <Unknown> at device 0.1 on pci0
> nvidia0: Unable to enable PCI busmastering.
> device_probe_and_attach: nvidia0 attach returned 6
These messages are actually bogus.
The problem is that the driver tries to attach any devices whose
vendorid is nVIDIA.
In the port, there's a file called nvidia_pci.c. I've modified the
probe to ignore the mb devices -
Try this version -
int nvidia_pci_probe(device_t dev)
{
U016 vendor;
U016 device;
char name[NV_DEVICE_NAME_LENGTH];
vendor = pci_get_vendor(dev);
device = pci_get_device(dev);
if (vendor != NVIDIA_VENDORID || device < 0x0020)
return ENXIO;
switch ( device ) {
/* exclude these nForce and nForce2 devices from the probe */
case 0x01e0: /* nForce2 AGP Controller */
case 0x01e8: /* nForce2 AGP Host to PCI Bridge */
case 0x01eb: /* nForce2 Memory Controller 1 */
case 0x01ee: /* nForce2 Memory Controller 4 */
case 0x01ed: /* nForce2 Memory Controller 3 */
case 0x01ec: /* nForce2 Memory Controller 2 */
case 0x01ef: /* nForce2 Memory Controller 5 */
case 0x0060: /* nForce MCP2 ISA Bridge */
case 0x0064: /* nForce MCP-T? SMBus Controller */
case 0x0067: /* nForce MCP2 OpenHCI USB Controller */
case 0x006b: /* nForce MCP-T? Audio Processing Unit (Dolby
Digital) */
case 0x006a: /* nForce MCP2 Audio Codec Interface */
case 0x006c: /* nForce PCI to PCI Bridge */
case 0x0065: /* nForce MCP2 EIDE Controller */
case 0x006d: /* Nvidia (unknown) PCI to PCI Bridge */
case 0x006e: /* nForce MCP2 OHCI Compliant IEEE 1394
Controller */
return ENXIO;
break;
default:
break;
}
if (rm_get_device_name(device, NV_DEVICE_NAME_LENGTH, name)
!= RM_OK) {
strcpy(name, "Unknown");
}
device_set_desc_copy(dev, name);
return 0;
}
Note that I don't have the usb2.0 controller (ehci) enabled, because
it's not supported yet in -STABLE. Because it's not support I've
disabled it in the bios and didn't add the device id to the switch
statement for it (actually I don't know what it is :) )... If you have
USB2.0 support enabled in your bios you can do a 'pciconf -l -v' to
extract the device id, and then add that device to the 'ignore list' aka
switch statement :)
Here's an example snippet of pciconf output -
atapci0@pci0:9:0: class=0x01018a card=0x0c111043 chip=0x006510de
rev=0xa2 hdr=0x00
^^
0x10de is the vendorid, and the top part 0x0065 is your device id.
The combination that works for me (in -STABLE) is nvidia gart and no
hacks. I spent some time trying to get Matt Dodd's os agp to work,
again in -STABLE, and while it does probe and attach the agp correctly -
and from what I could tell seems to follow the linux code very closely -
I can't get the nvidia driver to work with it.
Good luck,
Andrew.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3F4F5F80.8050205>
