Home | History | Annotate | Download | only in XenPvBlkDxe

Lines Matching refs:Dev

82   @param Dev  The instance to free.

87 IN XEN_BLOCK_FRONT_DEVICE *Dev
90 XENBUS_PROTOCOL *XenBusIo = Dev->XenBusIo;
92 if (Dev->RingRef != 0) {
93 XenBusIo->GrantEndAccess (XenBusIo, Dev->RingRef);
95 if (Dev->Ring.sring != NULL) {
96 FreePages (Dev->Ring.sring, 1);
98 if (Dev->EventChannel != 0) {
99 XenBusIo->EventChannelClose (XenBusIo, Dev->EventChannel);
101 FreePool (Dev);
107 @param Dev A XEN_BLOCK_FRONT_DEVICE instance.
117 IN XEN_BLOCK_FRONT_DEVICE *Dev,
122 XENBUS_PROTOCOL *XenBusIo = Dev->XenBusIo;
148 XenBusIo->WaitForWatch (XenBusIo, Dev->StateWatchToken);
169 XEN_BLOCK_FRONT_DEVICE *Dev;
176 Dev = AllocateZeroPool (sizeof (XEN_BLOCK_FRONT_DEVICE));
177 Dev->Signature = XEN_BLOCK_FRONT_SIGNATURE;
178 Dev->NodeName = NodeName;
179 Dev->XenBusIo = XenBusIo;
180 Dev->DeviceId = XenBusIo->DeviceId;
184 Dev->MediaInfo.CdRom = TRUE;
186 Dev->MediaInfo.CdRom = FALSE;
190 if (Dev->MediaInfo.CdRom) {
210 Dev->DomainId = (domid_t)Value;
211 XenBusIo->EventChannelAllocate (XenBusIo, Dev->DomainId, &Dev->EventChannel);
215 FRONT_RING_INIT (&Dev->Ring, SharedRing, EFI_PAGE_SIZE);
217 Dev->DomainId,
220 &Dev->RingRef);
230 Dev->RingRef);
236 "event-channel", "%d", Dev->EventChannel);
259 XenBusIo->RegisterWatchBackend (XenBusIo, "state", &Dev->StateWatchToken);
264 Status = XenPvBlkWaitForBackendState (Dev, XenbusStateConnected, &State);
276 Dev->MediaInfo.VDiskInfo = (UINT32)Value;
277 if (Dev->MediaInfo.VDiskInfo & VDISK_READONLY) {
278 Dev->MediaInfo.ReadWrite = FALSE;
280 Dev->MediaInfo.ReadWrite = TRUE;
283 Status = XenBusReadUint64 (XenBusIo, "sectors", TRUE, &Dev->MediaInfo.Sectors);
300 Dev->MediaInfo.SectorSize = (UINT32)Value;
306 Dev->MediaInfo.FeatureBarrier = TRUE;
308 Dev->MediaInfo.FeatureBarrier = FALSE;
315 Dev->MediaInfo.FeatureFlushCache = TRUE;
317 Dev->MediaInfo.FeatureFlushCache = FALSE;
321 Dev->MediaInfo.Sectors, Dev->MediaInfo.SectorSize));
323 *DevPtr = Dev;
327 XenBusIo->UnregisterWatch (XenBusIo, Dev->StateWatchToken);
335 XenPvBlockFree (Dev);
341 IN XEN_BLOCK_FRONT_DEVICE *Dev
344 XENBUS_PROTOCOL *XenBusIo = Dev->XenBusIo;
348 XenPvBlockSync (Dev);
358 Status = XenPvBlkWaitForBackendState (Dev, XenbusStateClosing, NULL);
374 Status = XenPvBlkWaitForBackendState (Dev, XenbusStateClosed, NULL);
404 XenBusIo->WaitForWatch (XenBusIo, Dev->StateWatchToken);
408 XenBusIo->UnregisterWatch (XenBusIo, Dev->StateWatchToken);
413 XenPvBlockFree (Dev);
419 IN XEN_BLOCK_FRONT_DEVICE *Dev
423 if (RING_FULL (&Dev->Ring)) {
425 XenPvBlockAsyncIoPoll (Dev);
426 if (!RING_FULL (&Dev->Ring)) {
429 /* Really no slot, could wait for an event on Dev->EventChannel. */
440 XEN_BLOCK_FRONT_DEVICE *Dev = IoData->Dev;
441 XENBUS_PROTOCOL *XenBusIo = Dev->XenBusIo;
449 ASSERT(!(IoData->Sector & ((Dev->MediaInfo.SectorSize / 512) - 1)));
451 ASSERT(!(IoData->Size & (Dev->MediaInfo.SectorSize - 1)));
453 ASSERT(!((UINTN) IoData->Buffer & (Dev->MediaInfo.SectorSize - 1)));
461 XenPvBlockWaitSlot (Dev);
462 RingIndex = Dev->Ring.req_prod_pvt;
463 Request = RING_GET_REQUEST (&Dev->Ring, RingIndex);
467 Request->handle = Dev->DeviceId;
480 XenBusIo->GrantAccess (XenBusIo, Dev->DomainId,
486 Dev->Ring.req_prod_pvt = RingIndex + 1;
489 RING_PUSH_REQUESTS_AND_CHECK_NOTIFY (&Dev->Ring, Notify);
493 ReturnCode = XenBusIo->EventChannelNotify (XenBusIo, Dev->EventChannel);
515 XenPvBlockAsyncIoPoll (IoData->Dev);
524 IN XEN_BLOCK_FRONT_DEVICE *Dev,
533 XenPvBlockWaitSlot (Dev);
534 Index = Dev->Ring.req_prod_pvt;
535 Request = RING_GET_REQUEST(&Dev->Ring, Index);
538 Request->handle = Dev->DeviceId;
542 Dev->Ring.req_prod_pvt = Index + 1;
544 RING_PUSH_REQUESTS_AND_CHECK_NOTIFY (&Dev->Ring, Notify);
546 XENBUS_PROTOCOL *XenBusIo = Dev->XenBusIo;
548 ReturnCode = XenBusIo->EventChannelNotify (XenBusIo, Dev->EventChannel);
559 IN XEN_BLOCK_FRONT_DEVICE *Dev
562 if (Dev->MediaInfo.ReadWrite) {
563 if (Dev->MediaInfo.FeatureBarrier) {
564 XenPvBlockPushOperation (Dev, BLKIF_OP_WRITE_BARRIER, 0);
567 if (Dev->MediaInfo.FeatureFlushCache) {
568 XenPvBlockPushOperation (Dev, BLKIF_OP_FLUSH_DISKCACHE, 0);
574 XenPvBlockAsyncIoPoll (Dev);
575 if (RING_FREE_REQUESTS (&Dev->Ring) == RING_SIZE (&Dev->Ring)) {
583 IN XEN_BLOCK_FRONT_DEVICE *Dev
591 ProducerIndex = Dev->Ring.sring->rsp_prod;
594 ConsumerIndex = Dev->Ring.rsp_cons;
600 Response = RING_GET_RESPONSE (&Dev->Ring, ConsumerIndex);
616 Status, IoData->Dev->NodeName,
622 Dev->XenBusIo->GrantEndAccess (Dev->XenBusIo, IoData->GrantRef[Index]);
646 Dev->Ring.rsp_cons = ++ConsumerIndex;
650 if (Dev->Ring.rsp_cons != ConsumerIndex) {
656 RING_FINAL_CHECK_FOR_RESPONSES (&Dev->Ring, More);