Christian Kaiser 写道: > Garrett D'Amore wrote: > >> Christian Kaiser wrote: >> >>> Hi all, >>> >>> I am currently porting a driver from Linux to Solaris. >>> >>> The BAR description in the PCI config space looks like this: >>> >>> BAR0, Offset 0x10, Value 0xcbdc0000 >>> BAR1, Offset 0x14, Value 0x00000000 >>> BAR2, Offset 0x18, Value 0xc4000000 >>> BAR3, Offset 0x1c, Value 0xc0000000 >>> BAR4, Offset 0x20, Value 0xbc000000 >>> BAR5, Offset 0x24, Value 0xb8000000 >>> >>> ddi_dev_nregs returns 6 register sets what is correct but for >>> ddi_dev_regsize I don't get the zero size value for BAR1 (which would >>> be correct) but the size of BAR2. I get an error running >>> ddi_dev_regsize with rnumber=6. It seems that Solaris renumbers the >>> register sets in my special case where one BAR1 value is 0x0 and the >>> size is 0. The same applies to ddi_regs_map_setup. >>> >>> Is my assumption concerning the renumbering correct? Isn't that >>> confusing? >>> >>> Regards, >>> Christian >>> >>> >>> >> For PCI devices, the starting index is 1, not 0. (0 is reserved to >> indicate PCI configuration space.) >> > > And I am aware of this. > > >> I don't know why with rnumber 6 you get an error -- that's surprising. >> I'd have expected rnumber 6 to return the settings for BAR5 above. >> > > OK, let me clarify this: > > BAR layout > ========== > > BAR 0 Offset 0x10 Value 0xcbdc0000 Size 256K > BAR 1 Offset 0x14 Value 0x00000000 Size 0 > BAR 2 Offset 0x18 Value 0xc4000000 Size 64M > BAR 3 Offset 0x1c Value 0xc0000000 Size 64M > BAR 4 Offset 0x20 Value 0xbc000000 Size 64M > BAR 5 Offset 0x24 Value 0xb8000000 Size 64M > > Using ddi_dev_regsize() > ======================= > > rnumber=1 Size 256K > rnumber=2 Size 64M > rnumber=3 Size 64M > rnumber=4 Size 64M > rnumber=5 Size 64M > rnumber=6 n/a (error) > > Do you understand now what I meant by "renumbering"? > >
It's weird. Is it possible that this hardware supports 64bit addressing. What's the exact value if you do pci read from BAR0 ? Are the bit2:1 of BAR0 10B ? Or can you post the prtconf -vp for your device ? -minskey _______________________________________________ opensolaris-code mailing list opensolaris-code@opensolaris.org http://mail.opensolaris.org/mailman/listinfo/opensolaris-code