Re: PCI Device Driver: Porting to 2.6 kernel

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Unfortunately I'm under NDA for the vendor's code, except for our
parts of it, of course. I'm unsure why they have an NDA, they give
the drivers to OEMs who use their hardware. Just SOP I guess.

Anyway, the kernel's core pci bus probe will not be able to "see"
beyond the fabric bridge, just the bridge card itself:
   08:01.0 Bridge: Stargen Inc. SG2010 PCI to Starfabric Gateway

It would have to use the methods the driver supplies to pci_register_driver,
and pci_proc_attach_device and pci_enable_device in the pci_driver struct.

Perhaps it would be easier to show you the modules file for the drivers
in our stack responsible for the kernel interface. I've only included the
relevant dependencies.

   pci_add_new_bus
   pci_bus_assign_resources
   pci_enable_device
   pci_mem_start
   pci_proc_attach_device
   pci_proc_detach_bus
   pci_root_buses
   pci_scan_slot
   pci_set_master

Looking at the above list, I notice a few asymmetries. pci_add_new_bus is
called but not pci_proc_attach_bus. pci_proc_attach_device is called but
not pci_proc_detach_device when the driver is unloaded. Perhaps you can
see a call that should be made.

A prime suspect is enhanced error checking in 2.6. For example, the buses
added by the drivers have no parent. While this wasn't a problem in 2.4,
the 2.6 kernel may reject that. I don't think this is the case but just
an example. There were a number of changes concerning hotplug in 2.6.
Since the fabric drivers are loadable modules, the devices added during
initialization are added after boot has completed. I look at the hotplug
functions, as you have suggested


Thanks,

John

Greg KH wrote:

It's the core pci bus probing code that does this.

Do you have a pointer to your driver so that we can take a look at it to
see what you are doing?  The pci core probing logic changed a _lot_ from
2.4 to 2.6.  Take a look at the pci hotplug drivers for examples of what
I think you are wanting to do.

thanks,

greg k-h


--
Kernelnewbies: Help each other learn about the Linux kernel.
Archive:       http://mail.nl.linux.org/kernelnewbies/
FAQ:           http://kernelnewbies.org/faq/


[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux