summerofcode2018projects:convertpcidriverattachmentstotables

This is an old revision of the document!


Convert PCI Drivers Attachments to be Table Driven


The purpose of this project is to convert all PCI Drivers attachments to be table driven. The devmatch infrastructure gives us a way to match up hardware with kernel modules that implement drivers that claim the hardware. The drivers need some modification before devmatch can use them. Specifically, they need to have their device ID scans done via a table and that table needs to be decorated with PNP_INFO tag so the compiler and kld_xref extract the metadata that devmatch needs to do this job.

Work will be needed to move the in-line code to tables, some of the tables lookups may be moved to standardized routines. Trimming GENERIC to show that converted drivers work is also required.

There are about 243 such pci drivers. The plan is to convert a significant portion of them and maintain a documentation of the conversion.

  • A set of 30-40 drivers to be converted and decorated with PNP_INFO
  • Converting 2/3 of the drivers and decorating with PNP_INFO (On an average about 10-12 every week)
  • Converting all the drivers and automated tests for them
  • End of community bonding period:
    • Preliminary wiki page created ✔
    • Development environment set up ✔
    • Learn what drivers are using PCI ✔
  • May 14: Start of coding
    • Make a list of PCI drivers present (Partly done) ✔
    • Convert 5 easy, 2 medium/hard drivers ✔
    • Convert another batch of 5 easy and 2 medium/hard drivers ✔
    • Convert next batch of 5 easy and 2 medium/hard drivers ✔
    • Convert next batch of 5 easy and 2 medium/hard drivers ✔
    • Convert next batch of 5 easy and 2 medium/hard drivers ✔
  • June 11-15: Phase 1 Evaluations
    • Convert next batch of 5 easy and 2 medium/hard drivers ✔
    • Convert next batch of 5 easy and 2 medium/hard drivers ✔
    • Convert next batch of 5 easy and 2 medium/hard drivers ✔
    • Update to use PCI_MATCH macro in a batch of 5 easy and 2 medium/hard drivers ✔
    • Update to use PCI_MATCH macro in next batch of 5 easy and 2 medium/hard drivers ✔
  • July 9-13: Phase 2 Evaluations
    • Convert next batch of 5 easy and 2 medium/hard drivers ✔
    • Convert next batch of 5 easy and 2 medium/hard drivers ✔
    • Convert next batch of 5 easy and 2 medium/hard drivers ✔
    • Convert next batch of 5 easy and 2 medium/hard drivers ✔
  • August 6-14: End of coding
  • August 14-21 16:00 UTC: Final Evaluations

As there a lot of the drivers, the testing needs to be automated in some way.

Sno PCI Driver name Category Status
1 puc trivial Done ✔
2 bce trivial Done ✔
3 xl trivial Done ✔
4 ed trivial Done ✔
5 aac trivial Done ✔
6 ncr hard Done ✔
7 ath hard Done ✔
8 aacraid trivial Done ✔
9 ahci trivial Done ✔
10 an trivial Done ✔
11 bwn medium Done ✔
12 bwi trivial Done ✔
13 ale trivial Done ✔
14 amr trivial Done ✔
15 age trivial Done ✔
16 ae trivial Done ✔
17 alc trivial Done ✔
18 amdsmb medium In progress
19 bfe trivial Done ✔
20 bge trivial Done ✔
21 ce medium Done ✔
22 dpt medium Done ✔
23 dc trivial Done ✔
24 ciss trivial Done ✔
25 ccp trivial Done ✔
26 cp medium Done ✔
27 cas trivial In progress
28 ena trivial Done ✔
29 cy medium In progress
30 esp medium Done ✔
31 bktr hard Done ✔
32 em trivial Done ✔
33 igb trivial Done ✔
34 cxgb trivial In progress
35 fxp trivial Done ✔
36 gem trivial In progress
37 glxsb medium Done ✔
38 grackle_hb medium Done ✔
39 hme medium Done ✔
40 hptio hard In progress
41 arcmsr hard In progress
42 hifn trivial Done ✔
43 bt trivial Done ✔
44 snd_emu10k1 (emu_pci) medium Done ✔
45 emujoy medium Done ✔
46 ebus medium Done ✔
47 cbb trivial In progress
48 de medium Done ✔
49 fixup_pci trivial Done ✔
50 imcsmb medium Done ✔
51 isab medium In progress
52 ignore trivial Done ✔
53 ix trivial In progress
54 ixv trivial In progress
55 ixgbe trivial Done ✔
56 ips medium Done ✔
57 iwm trivial Done ✔
58 iir trivial Done ✔
59 et trivial Done ✔
60 ipw trivial Done ✔
61 ismt medium Done ✔
62 iioc medium In progress
63 ipmi medium In progress
64 isp hard In progress
65 isci medium In progress
66 ixl trivial In progress
67 ixlv trivial In progress
68 iwn trivial In progress
69 iwi medium In progress
70 ioat trivial Done ✔
71 ida trivial In progress
72 le medium In progress
73 lio medium In progress
74 mpr trivial In progress
75 mvs trivial In progress
76 my trivial In progress
77 mly trivial In progress
78 mps trivial In progress
79 mskc medium In progress
80 mn medium In progress
81 mrsas hard In progress
82 mxge medium In progress
83 mfi trivial In progress
84 malo medium In progress
85 mwl medium In progress
86 nfsmb medium In progress
87 nge medium In progress
88 ntb_hw_plx medium In progress
89 ntb_hw_intel trivial Done ✔
90 nlmsec trivial In progress
91 nlmrsa trivial In progress
92 nfe hard In progress
93 nvme trivial In progress
94 ndis trivial In progress
95 ocs medium In progress
96 ohci hard In progress
97 pcibios medium In progress
98 pcib medium In progress
99 qla medium In progress
100 qla80xx medium In progress
101 ql medium In progress
102 piix medium In progress
103 rp medium In progress
104 oce trivial In progress
105 re hard In progress
106 ppc medium In progress
107 pmspcv ambiguous Won't do

https://www.freebsd.org/cgi/man.cgi?query=PCI_PNP_INFO&manpath=FreeBSD+12-current

Note: Documentation links will appear broken until the code is merged into the master branch, please be patient.

  • summerofcode2018projects/convertpcidriverattachmentstotables.1533612926.txt.gz
  • Last modified: 2018/08/07 03:35
  • by LakhanKamireddy