Garret and Brian,

Thank you very much for your replies. 

After reading your replies, I checked pci_config_* symbols defined in
Solaris10 and Solaris NV kernels. Then I think I understood what happened.

Solaris10 32bit kernel:
% nm genunix | grep pci_config_
[4141]  |    764959|      42|FUNC |GLOB |0    |1      |pci_config_getb
[4142]  |    765043|      39|FUNC |GLOB |0    |1      |pci_config_getl
[7537]  |    765082|      39|FUNC |GLOB |0    |1      |pci_config_getll
[4140]  |    765001|      42|FUNC |GLOB |0    |1      |pci_config_getw
[4132]  |    765121|      44|FUNC |GLOB |0    |1      |pci_config_putb
[4133]  |    765209|      42|FUNC |GLOB |0    |1      |pci_config_putl
[7423]  |    765251|      45|FUNC |GLOB |0    |1      |pci_config_putll
[4131]  |    765165|      44|FUNC |GLOB |0    |1      |pci_config_putw
[7433]  |    763196|      81|FUNC |GLOB |0    |1      |pci_config_setup
[7031]  |    763277|      15|FUNC |GLOB |0    |1      |pci_config_teardown

And pci_config_{get,put}{8,16,32,64} functions are defined to corresponding
old pci_config_{get}{put}{b,w,l,ll} functions.

Solaris nv48 32bit kernel:
% nm genunix | grep pci_config_
[8103]  |    113884|        28|FUNC |GLOB |0    |2      
|i_ddi_get_pci_config_handle
[8102]  |    113912|        27|FUNC |GLOB |0    |2      
|i_ddi_set_pci_config_handle
[1832]  |    468556|       165|FUNC |LOCL |0    |2      |pci_config_check
[7997]  |    873056|        38|FUNC |GLOB |0    |2      |pci_config_get16
[7998]  |    873096|        38|FUNC |GLOB |0    |2      |pci_config_get32
[7999]  |    873136|        38|FUNC |GLOB |0    |2      |pci_config_get64
[4383]  |    873016|        38|FUNC |GLOB |0    |2      |pci_config_get8
[4385]  |    873352|        38|FUNC |GLOB |0    |2      |pci_config_getb
[4386]  |    873432|        38|FUNC |GLOB |0    |2      |pci_config_getl
[8000]  |    873472|        38|FUNC |GLOB |0    |2      |pci_config_getll
[4384]  |    873392|        38|FUNC |GLOB |0    |2      |pci_config_getw
[7878]  |    873220|        43|FUNC |GLOB |0    |2      |pci_config_put16
[7879]  |    873264|        41|FUNC |GLOB |0    |2      |pci_config_put32
[7880]  |    873308|        44|FUNC |GLOB |0    |2      |pci_config_put64
[4372]  |    873176|        43|FUNC |GLOB |0    |2      |pci_config_put8
[4374]  |    873512|        43|FUNC |GLOB |0    |2      |pci_config_putb
[4375]  |    873600|        41|FUNC |GLOB |0    |2      |pci_config_putl
[7881]  |    873644|        44|FUNC |GLOB |0    |2      |pci_config_putll
[4373]  |    873556|        43|FUNC |GLOB |0    |2      |pci_config_putw
[7891]  |    872904|        91|FUNC |GLOB |0    |2      |pci_config_setup
[7465]  |    872996|        19|FUNC |GLOB |0    |2      |pci_config_teardown


Therefore, the possible workaround is to replace to ddi_{get}{put}* functions,
or to force to use *forward compatibility* by redefining pci_config_{get}{put}
{8,16,32,64} functions to corresponding old APIs, i.e. pci_config_{get}{put}
{b,w,l,ll} functions think.

For 64bit kernels, only pci_config_{get]{put}{8,16,32,64] functions are
defined. Workarounds are not required.

Thank you very much again.
-masa
 
 
This message posted from opensolaris.org

Reply via email to