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