summerofcode2018projects:convertpcidriverattachmentstotables

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
    • Document PCI_* macros ✔
      • PCI_PNP_INFO
      • PCI_DEV
      • PCI_SUBDEV
      • PCI_DEVID
      • PCI_VID
      • PCI_SUBVID
  • 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 Done ✔
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 iicoc medium Done ✔
63 ipmi medium Done ✔
64 isp hard Done ✔
65 isci medium Done ✔
66 ixl trivial Done ✔
67 ixlv trivial Done ✔
68 iwn trivial Done ✔
69 iwi medium Done ✔
70 ioat trivial Done ✔
71 ida trivial Done ✔
72 le medium Done ✔
73 lio medium Done ✔
74 mpr trivial Done ✔
75 mvs trivial Done ✔
76 my trivial Done ✔
77 mly trivial Done ✔
78 mps trivial Done ✔
79 mskc medium Done ✔
80 mn medium Done ✔
81 mrsas hard Done ✔
82 mxge medium Done ✔
83 mfi trivial Done ✔
84 malo medium Done ✔
85 mwl medium Done ✔
86 nfsmb medium Done ✔
87 nge medium Done ✔
88 ntb_hw_plx medium Done ✔
89 ntb_hw_intel trivial Done ✔
90 nlmsec trivial Done ✔
91 nlmrsa trivial Done ✔
92 nfe hard Done ✔
93 nvme trivial Done ✔
94 ndis trivial Won't do
95 ocs medium In progress
96 ohci hard In progress
97 pcibios medium In progress
98 pcib medium Done ✔
99 qla medium Done ✔
100 qla80xx medium Done ✔
101 ql medium Done ✔
102 piix medium Done ✔
103 rp medium Done ✔
104 oce trivial Done ✔
105 re hard Done ✔
106 ppc medium Done ✔
107 pmspcv ambiguous Won't do
108 ral trivial Done ✔
109 re trivial Done ✔
109 rl trivial Done ✔
110 pcn trivial Done ✔
111 pstpci medium Done ✔
112 sge medium Done ✔
113 sis medium Done ✔
114 ste medium Done ✔
  • summerofcode2018projects/convertpcidriverattachmentstotables.txt
  • Last modified: 2020/02/09 04:19
  • by TrevorRoydhouse