Convert PCI Drivers Attachments to be Table Driven


Project description

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.

Approach to solving the problem

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.

Deliverables

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

Deliverables for the first evaluation

Deliverables for the second evaluation

Deliverables for the final evaluation

Milestones

Test Plan

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

Progress of conversion

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 (./)

The Code

https://github.com/bsdimp/freebsd/tree/lakhan-pnpinfo

https://github.com/bsdimp/freebsd/tree/lakhan-pnpinfo-3

Documentation

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

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

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

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

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

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

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

Phabricator Reviews

https://reviews.freebsd.org/D16612

https://reviews.freebsd.org/D16540

https://reviews.freebsd.org/D16363

https://reviews.freebsd.org/D16253

https://reviews.freebsd.org/D16233

https://reviews.freebsd.org/D15999

https://reviews.freebsd.org/D15996

https://reviews.freebsd.org/D15995

https://reviews.freebsd.org/D15979

https://www.bsdcan.org/2018/schedule/events/934.en.html

AutoLoad

http://bsdimp.blogspot.in/2016/01/details-on-coming-automatic-module.html

SummerOfCode2018Projects/ConvertPCIdriverAttachmentsToTables (last edited 2020-02-09T04:19:02+0000 by TrevorRoydhouse)