From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: Little help with Seabios PV-Drivers for XEN Date: Fri, 6 Apr 2012 16:34:47 -0400 Message-ID: <20120406203447.GC15674@phenom.dumpdata.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Daniel Castro Cc: xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org On Fri, Mar 09, 2012 at 08:35:40AM +0900, Daniel Castro wrote: > Hello All, > = > I have a little setback with the development of PV Drivers for Xen in Sea= BIOS. Hey, seems I read your emails out of sync. > The initialization code that runs in 32 Bit is working properly. > But, when the system tries to read on the disk I use the ring macros > to get a request. The macro usage looks like this: > struct blkif_ring * shared =3D memalign_low(4096,4096); //return > 0x000fd630 this above 16bit address space > SHARED_RING_INIT(shared); > So far I have a pointer located at 0x0009a000 > Under 32bit the struct is correct and all is working according to plan. > = > But on 16bit operation read on disk I have > struct blkfront_info * shared_ring =3D > container_of(op->drive_g.info->shared)); // I get d630 I should get it > from the correct segment, but how? > RING_GET_REQUEST(shared_ring); //this returns 0xffff and should be > something 0xa010 segment SS or something like that > = > SeaBios has some macros that convert a pointer in 32Bit to 16Bit by > changing the segment register, yet I do not know in what segment the > ring is located, and the macros are not applied inside the procedure > of the macro, for example: There should be some way to set your physical address (so 9a000) to a segment? > MAKE_FLATPTR(GET_SEG(SS),RING_GET_REQUEST(shared_ring)); > But this will change a 16Bit pointer of segment SS to a 32 bit > segment. There is also the reverse but, again I do not know the > segment in which I should look for. Lastly the process inside the > macro does not get this benefin, and I do not know if the macro will > work with a pointer of size 16bits. 16-bits should be fine. The problem is if you run your pointer outside the 16-bit segment. > = > Any help will be GREATLY appreciated, I am almost done. > = > Thanks, > = > Daniel > -- = > +-=3D=3D=3D=3D=3D---------------------------+ > | +---------------------------------+ | This space intentionally blank > for notetaking. > | |=A0=A0 | Daniel Castro,=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 | > | |=A0=A0 | Consultant/Programmer.| > | |=A0=A0 | U Andes=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0=A0 | > +-------------------------------------+ > = > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xen.org > http://lists.xen.org/xen-devel