i386/127710: My driver PCI probe is not called for my corresponding
device ID and Vendor ID
Bagavathy kumar . M
bagavathykumar.m at hcl.in
Mon Sep 29 10:10:01 UTC 2008
>Number: 127710
>Category: i386
>Synopsis: My driver PCI probe is not called for my corresponding device ID and Vendor ID
>Confidential: no
>Severity: critical
>Priority: medium
>Responsible: freebsd-i386
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Mon Sep 29 10:10:00 UTC 2008
>Closed-Date:
>Last-Modified:
>Originator: Bagavathy kumar . M
>Release: FreeBSD 6.2
>Organization:
HCL
>Environment:
FreeBSD localhost.localdomain 6.2-RELEASE FreeBSD 6.2-RELEASE #0: Sat Jun 28 01:01:29 IST 2008
>Description:
Unable to probe SAS/SATA Controller (Class ID :0x01,Sub Class:0x07,programming interface:0x00) in FreeBSD 6.2
>How-To-Repeat:
Every Time When iam loading my driver my probe function is not called for my corresponding Device ID & Vendor ID.
>Fix:
A PCI to Card Bus Bridge driver is loaded as a static module probed all the devices having the sub class id 0x07 & programming interface code 0x00.
Source path: /src/sys/dev/pccbb/pccbb_pci.c.
Add a Check of the Class ID as 06 in the pci probe function of the Card bus driver
static int
cbb_pci_probe(device_t brdev)
{
const char *name;
uint32_t progif;
uint32_t subclass;
++++ uint32_t class;
............................
................................................................
/*
* We do support generic CardBus bridges. All that we've seen
* to date have progif 0 (the Yenta spec, and successors mandate
* this).
*/
++++ class = pci_get_class(brdev);
subclass = pci_get_subclass(brdev);
progif = pci_get_progif(brdev);
++++ if(class == PCIC_BRIDGE){
if (subclass == PCIS_BRIDGE_CARDBUS && progif == 0) {
device_set_desc(brdev, "PCI-CardBus Bridge");
return (BUS_PROBE_DEFAULT);
}
++++ }
return (ENXIO);
}
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-i386
mailing list