Yes BAR0 is an I/O mapped address. I think it is the BAR number problem because of which I'm not being able to map BAR1. Also from the man pages of devmap_devmem_setup it isn't clear that we pass a pointer to devmap_cookie_t and I have been passing the cookie itself, am I correct? I'll change these two things and come back. Thanks a lot. Bhaskar. ________________________________________ From: Garrett D'Amore [garr...@damore.org] Sent: Thursday, September 17, 2009 9:41 AM To: Jayaraman, Bhaskar Cc: opensolaris-code@opensolaris.org Subject: Re: [osol-code]devmap_devmem_setup()
Jayaraman, Bhaskar wrote: > Garrett, I'm trying to port xenbus drivers onto Solaris HVM and hence I need > to get to the register space of the platform PCI device which xen emulates > for each VM. So any help in this regard would be very helpful. I'm attaching > the sample code which I picked up from > http://dsc.sun.com/solaris/developer/support/driver/faqs.html#QA3.17 and then > modified. > > In the attach routine I tried doing the ddi_regs_map_setup on BAR1 of the > platform device but I keep getting 0xc000 as its virtual address. If I try > writing anything to it the driver crashes the system. Then I decided to > switch to devmap_devmem_setup but then on calling it the driver crashes the > system. > Sounds to me like this might be an "IO" device BAR, rather than a memory BAR. You do know that to access BAR0, you have to pass index 1, and to access BAR1, you pass index 2, to ddi_regs_map_setup()... right? - Garrett > Regards, > Bhaskar. > > > -----Original Message----- > From: Garrett D'Amore [mailto:garr...@damore.org] > Sent: Wednesday, September 16, 2009 7:13 PM > To: Jayaraman, Bhaskar > Cc: opensolaris-code@opensolaris.org > Subject: Re: [osol-code] Doubt in ddi_regs_map_setup! > > Jayaraman, Bhaskar wrote: > >> Ok I changed the call to devmap_devmem_setup() but my driver is crashing. >> Any idea why this could be happening? I'm calling it from the 'attach' >> routine which I hope is allowed. Also all my callbacks do nothing and return >> 0 unless they're void i.e. I'm not setting the pvtp pointers in the >> callbacks or anything. >> Regards, >> Bhaskar. >> >> > > It doesn't sound like conceptually you are doing anything wrong. I > think we'd need to look at the crash dump and source code in order to > understand why you're experiencing these crashes. > > - Garrett > >> -----Original Message----- >> From: Garrett D'Amore [mailto:garr...@damore.org] >> Sent: Tuesday, September 15, 2009 7:35 PM >> To: Jayaraman, Bhaskar >> Cc: opensolaris-code@opensolaris.org >> Subject: Re: [osol-code] Doubt in ddi_regs_map_setup! >> >> Jayaraman, Bhaskar wrote: >> >> >>> Hi, I'm making this call on my driver's BAR1 which has a physical >>> address 0xf2000008 written on it. So I'm assuming that when I call a >>> hat_getpfnum(kas.a_hat, returned_address), I should get the physical >>> page frame number. >>> >>> Instead I get 0xffffffff as its return value (which is definitely some >>> error). Also the virtual address that ddi_regs_map_setup is returning >>> 0xc000 as the virtual address for the physical address in the BAR1. >>> >>> Please note that hat_getpfnum returns proper values for other virtual >>> addresses. Can someone help me understand what is going on in my case? >>> >>> >>> >> I'm not sure exactly why this is failing, but you do know that >> hat_getkpfnum() is an obsolete interface, right? Its been obsolete for >> quite a long time now. (I think maybe as far back as Solaris 8.) >> >> If you're using this for mmap(), you should try implementing a >> devmap(9e) routine instead. >> >> -- Garrett >> >> >>> Regards, >>> >>> Bhaskar. >>> >>> ------------------------------------------------------------------------ >>> >>> _______________________________________________ >>> opensolaris-code mailing list >>> opensolaris-code@opensolaris.org >>> http://mail.opensolaris.org/mailman/listinfo/opensolaris-code >>> >>> >>> >> >> > > _______________________________________________ opensolaris-code mailing list opensolaris-code@opensolaris.org http://mail.opensolaris.org/mailman/listinfo/opensolaris-code