[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] Little help with blk ring
I am writing the PV Driver front end in Seabios. Could you explain your method in a little more detail please? Thanks, Daniel On Mon, May 7, 2012 at 5:53 PM, James Harper <james.harper@xxxxxxxxxxxxxxxx> wrote: >> > >> > >>> On 07.05.12 at 08:23, Daniel Castro <evil.dani@xxxxxxxxx> wrote: >> > > Hello List, >> > > >> > > I have a small problem with the ring when transferring blocks the id >> > > on the response is different from the request. >> > > This is the boot up read, count 0. >> > > The guest requests block 0, it has to be located at 7c00. >> > > >> > > I go ahead and create a REQUEST with this data: >> > > ring_req = RING_GET_REQUEST(priv,priv->req_prod_pvt); >> > > ring_req->id = 9; >> > > ring_req->nr_segments=1; >> > > ring_req->operation = BLKIF_OP_READ; ring_req->sector_number = >> > > (int)op->lba; //sector to be read ring_req->seg[0].gref = >> > > (bi->buffer_gref); //this should be get_free_gref(); >> > > ring_req->seg[0].first_sect = 0;//op->lba; >> > > ring_req->seg[0].last_sect = 7;//op->lba + op->count; >> > > >> > > RING_PUSH_REQUESTS_AND_CHECK_NOTIFY((priv),notify); //return >> > notify=0 >> > > if(notify){ >> > > dprintf(1,"Start notify procedure\n"); >> > > evtchn_send_t send; >> > > send.port = (bi->port); >> > > dprintf(1,"In notify before hypercall port is %d\n",send.port); >> > > //hypercall_event_channel_op(EVTCHNOP_send, &send); >> > > dprintf(1,"HYPERCALL read operation notify res %d\n", >> > > hypercall_event_channel_op(EVTCHNOP_send,&send)); >> > > } >> > > ring_res = RING_GET_RESPONSE((priv),(temp->rsp_prod)); >> > > Then I get: >> > > FAIL RING RESPONSE 0x0009a040 id:256 status:9 operation 0 this is >> > > the line: >> > > dprintf(1,"FAIL RING RESPONSE %p id:%d status:%d operation %d\n", >> > > ring_res,ring_res->id,ring_res->status,ring_res->operation); >> > > >> > > >> > > The id should be the same on both the request and response, there >> > > are bi ither requests on the fly. >> > > >> > > Any clue?= >> > >> > With status happening to be 9 when id should be, is this perhaps a >> > broken response structure definition? >> > >> >> That would be my guess too. The structure aligns differently under 64 and 32 >> bits so I'd guess the OP is talking between the two. >> > > Further to this, Dom0 sets the "protocol" entry in the frontend xenstore > (/local/domain/<domu id>/device/vbd/<vbd id>/protocol) to tell it what > alignment it is using. I wrote GPLPV before this setting existed so I solved > the problem by sending 2 invalid requests down the ring and checking the > response. If the fields have shifted around I assume that dom0 is not the > same bit width as the domu and switch structure definitions on the fly. > > Are you writing a new frontend driver? > > James > -- +-=====---------------------------+ | +---------------------------------+ | This space intentionally blank for notetaking. | | | Daniel Castro, | | | | Consultant/Programmer.| | | | U Andes | +-------------------------------------+ _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |