win-pvdrivers

changeset 160:71d971853d57

Fixed a structure packing problem which was breaking vbd when used with a 32 bit backend.
author James Harper <james.harper@bendigoit.com.au>
date Fri Feb 01 16:47:42 2008 +1100 (2008-02-01)
parents 6d13e6b110b7
children 15e5060063c5
files common/include/public/io/blkif.h common/include/xen_windows.h xenpci/gnttbl.c xenvbd/sources xenvbd/xenvbd.c
line diff
     1.1 --- a/common/include/public/io/blkif.h	Fri Feb 01 00:22:46 2008 +1100
     1.2 +++ b/common/include/public/io/blkif.h	Fri Feb 01 16:47:42 2008 +1100
     1.3 @@ -1,128 +1,134 @@
     1.4 -/******************************************************************************
     1.5 - * blkif.h
     1.6 - * 
     1.7 - * Unified block-device I/O interface for Xen guest OSes.
     1.8 - * 
     1.9 - * Permission is hereby granted, free of charge, to any person obtaining a copy
    1.10 - * of this software and associated documentation files (the "Software"), to
    1.11 - * deal in the Software without restriction, including without limitation the
    1.12 - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
    1.13 - * sell copies of the Software, and to permit persons to whom the Software is
    1.14 - * furnished to do so, subject to the following conditions:
    1.15 - *
    1.16 - * The above copyright notice and this permission notice shall be included in
    1.17 - * all copies or substantial portions of the Software.
    1.18 - *
    1.19 - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    1.20 - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    1.21 - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    1.22 - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    1.23 - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
    1.24 - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
    1.25 - * DEALINGS IN THE SOFTWARE.
    1.26 - *
    1.27 - * Copyright (c) 2003-2004, Keir Fraser
    1.28 - */
    1.29 -
    1.30 -#ifndef __XEN_PUBLIC_IO_BLKIF_H__
    1.31 -#define __XEN_PUBLIC_IO_BLKIF_H__
    1.32 -
    1.33 -#include "ring.h"
    1.34 -#include "../grant_table.h"
    1.35 -
    1.36 -/*
    1.37 - * Front->back notifications: When enqueuing a new request, sending a
    1.38 - * notification can be made conditional on req_event (i.e., the generic
    1.39 - * hold-off mechanism provided by the ring macros). Backends must set
    1.40 - * req_event appropriately (e.g., using RING_FINAL_CHECK_FOR_REQUESTS()).
    1.41 - * 
    1.42 - * Back->front notifications: When enqueuing a new response, sending a
    1.43 - * notification can be made conditional on rsp_event (i.e., the generic
    1.44 - * hold-off mechanism provided by the ring macros). Frontends must set
    1.45 - * rsp_event appropriately (e.g., using RING_FINAL_CHECK_FOR_RESPONSES()).
    1.46 - */
    1.47 -
    1.48 -#ifndef blkif_vdev_t
    1.49 -#define blkif_vdev_t   uint16_t
    1.50 -#endif
    1.51 -#define blkif_sector_t uint64_t
    1.52 -
    1.53 -/*
    1.54 - * REQUEST CODES.
    1.55 - */
    1.56 -#define BLKIF_OP_READ              0
    1.57 -#define BLKIF_OP_WRITE             1
    1.58 -/*
    1.59 - * Recognised only if "feature-barrier" is present in backend xenbus info.
    1.60 - * The "feature_barrier" node contains a boolean indicating whether barrier
    1.61 - * requests are likely to succeed or fail. Either way, a barrier request
    1.62 - * may fail at any time with BLKIF_RSP_EOPNOTSUPP if it is unsupported by
    1.63 - * the underlying block-device hardware. The boolean simply indicates whether
    1.64 - * or not it is worthwhile for the frontend to attempt barrier requests.
    1.65 - * If a backend does not recognise BLKIF_OP_WRITE_BARRIER, it should *not*
    1.66 - * create the "feature-barrier" node!
    1.67 - */
    1.68 -#define BLKIF_OP_WRITE_BARRIER     2
    1.69 -
    1.70 -/*
    1.71 - * Maximum scatter/gather segments per request.
    1.72 - * This is carefully chosen so that sizeof(blkif_ring_t) <= PAGE_SIZE.
    1.73 - * NB. This could be 12 if the ring indexes weren't stored in the same page.
    1.74 - */
    1.75 -#define BLKIF_MAX_SEGMENTS_PER_REQUEST 11
    1.76 -
    1.77 -struct blkif_request_segment {
    1.78 -    grant_ref_t gref;        /* reference to I/O buffer frame        */
    1.79 -    /* @first_sect: first sector in frame to transfer (inclusive).   */
    1.80 -    /* @last_sect: last sector in frame to transfer (inclusive).     */
    1.81 -    uint8_t     first_sect, last_sect;
    1.82 -};
    1.83 -
    1.84 -struct blkif_request {
    1.85 -    uint8_t        operation;    /* BLKIF_OP_???                         */
    1.86 -    uint8_t        nr_segments;  /* number of segments                   */
    1.87 -    blkif_vdev_t   handle;       /* only for read/write requests         */
    1.88 -    uint64_t       id;           /* private guest value, echoed in resp  */
    1.89 -    blkif_sector_t sector_number;/* start sector idx on disk (r/w only)  */
    1.90 -    struct blkif_request_segment seg[BLKIF_MAX_SEGMENTS_PER_REQUEST];
    1.91 -};
    1.92 -typedef struct blkif_request blkif_request_t;
    1.93 -
    1.94 -struct blkif_response {
    1.95 -    uint64_t        id;              /* copied from request */
    1.96 -    uint8_t         operation;       /* copied from request */
    1.97 -    int16_t         status;          /* BLKIF_RSP_???       */
    1.98 -};
    1.99 -typedef struct blkif_response blkif_response_t;
   1.100 -
   1.101 -/*
   1.102 - * STATUS RETURN CODES.
   1.103 - */
   1.104 - /* Operation not supported (only happens on barrier writes). */
   1.105 -#define BLKIF_RSP_EOPNOTSUPP  -2
   1.106 - /* Operation failed for some unspecified reason (-EIO). */
   1.107 -#define BLKIF_RSP_ERROR       -1
   1.108 - /* Operation completed successfully. */
   1.109 -#define BLKIF_RSP_OKAY         0
   1.110 -
   1.111 -/*
   1.112 - * Generate blkif ring structures and types.
   1.113 - */
   1.114 -
   1.115 -DEFINE_RING_TYPES(blkif, struct blkif_request, struct blkif_response);
   1.116 -
   1.117 -#define VDISK_CDROM        0x1
   1.118 -#define VDISK_REMOVABLE    0x2
   1.119 -#define VDISK_READONLY     0x4
   1.120 -
   1.121 -#endif /* __XEN_PUBLIC_IO_BLKIF_H__ */
   1.122 -
   1.123 -/*
   1.124 - * Local variables:
   1.125 - * mode: C
   1.126 - * c-set-style: "BSD"
   1.127 - * c-basic-offset: 4
   1.128 - * tab-width: 4
   1.129 - * indent-tabs-mode: nil
   1.130 - * End:
   1.131 - */
   1.132 +/******************************************************************************
   1.133 + * blkif.h
   1.134 + * 
   1.135 + * Unified block-device I/O interface for Xen guest OSes.
   1.136 + * 
   1.137 + * Permission is hereby granted, free of charge, to any person obtaining a copy
   1.138 + * of this software and associated documentation files (the "Software"), to
   1.139 + * deal in the Software without restriction, including without limitation the
   1.140 + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
   1.141 + * sell copies of the Software, and to permit persons to whom the Software is
   1.142 + * furnished to do so, subject to the following conditions:
   1.143 + *
   1.144 + * The above copyright notice and this permission notice shall be included in
   1.145 + * all copies or substantial portions of the Software.
   1.146 + *
   1.147 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
   1.148 + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
   1.149 + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
   1.150 + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
   1.151 + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
   1.152 + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
   1.153 + * DEALINGS IN THE SOFTWARE.
   1.154 + *
   1.155 + * Copyright (c) 2003-2004, Keir Fraser
   1.156 + */
   1.157 +
   1.158 +#ifndef __XEN_PUBLIC_IO_BLKIF_H__
   1.159 +#define __XEN_PUBLIC_IO_BLKIF_H__
   1.160 +
   1.161 +#include "ring.h"
   1.162 +#include "../grant_table.h"
   1.163 +
   1.164 +/*
   1.165 + * Front->back notifications: When enqueuing a new request, sending a
   1.166 + * notification can be made conditional on req_event (i.e., the generic
   1.167 + * hold-off mechanism provided by the ring macros). Backends must set
   1.168 + * req_event appropriately (e.g., using RING_FINAL_CHECK_FOR_REQUESTS()).
   1.169 + * 
   1.170 + * Back->front notifications: When enqueuing a new response, sending a
   1.171 + * notification can be made conditional on rsp_event (i.e., the generic
   1.172 + * hold-off mechanism provided by the ring macros). Frontends must set
   1.173 + * rsp_event appropriately (e.g., using RING_FINAL_CHECK_FOR_RESPONSES()).
   1.174 + */
   1.175 +
   1.176 +#ifndef blkif_vdev_t
   1.177 +#define blkif_vdev_t   uint16_t
   1.178 +#endif
   1.179 +#define blkif_sector_t uint64_t
   1.180 +
   1.181 +/*
   1.182 + * REQUEST CODES.
   1.183 + */
   1.184 +#define BLKIF_OP_READ              0
   1.185 +#define BLKIF_OP_WRITE             1
   1.186 +/*
   1.187 + * Recognised only if "feature-barrier" is present in backend xenbus info.
   1.188 + * The "feature_barrier" node contains a boolean indicating whether barrier
   1.189 + * requests are likely to succeed or fail. Either way, a barrier request
   1.190 + * may fail at any time with BLKIF_RSP_EOPNOTSUPP if it is unsupported by
   1.191 + * the underlying block-device hardware. The boolean simply indicates whether
   1.192 + * or not it is worthwhile for the frontend to attempt barrier requests.
   1.193 + * If a backend does not recognise BLKIF_OP_WRITE_BARRIER, it should *not*
   1.194 + * create the "feature-barrier" node!
   1.195 + */
   1.196 +#define BLKIF_OP_WRITE_BARRIER     2
   1.197 +
   1.198 +/*
   1.199 + * Maximum scatter/gather segments per request.
   1.200 + * This is carefully chosen so that sizeof(blkif_ring_t) <= PAGE_SIZE.
   1.201 + * NB. This could be 12 if the ring indexes weren't stored in the same page.
   1.202 + */
   1.203 +#define BLKIF_MAX_SEGMENTS_PER_REQUEST 11
   1.204 +
   1.205 +#if defined(__i386__)
   1.206 +#pragma pack(4)
   1.207 +#endif
   1.208 +struct blkif_request_segment {
   1.209 +    grant_ref_t gref;        /* reference to I/O buffer frame        */
   1.210 +    /* @first_sect: first sector in frame to transfer (inclusive).   */
   1.211 +    /* @last_sect: last sector in frame to transfer (inclusive).     */
   1.212 +    uint8_t     first_sect, last_sect;
   1.213 +};
   1.214 +
   1.215 +struct blkif_request {
   1.216 +    uint8_t        operation;    /* BLKIF_OP_???                         */
   1.217 +    uint8_t        nr_segments;  /* number of segments                   */
   1.218 +    blkif_vdev_t   handle;       /* only for read/write requests         */
   1.219 +    uint64_t       id;           /* private guest value, echoed in resp  */
   1.220 +    blkif_sector_t sector_number;/* start sector idx on disk (r/w only)  */
   1.221 +    struct blkif_request_segment seg[BLKIF_MAX_SEGMENTS_PER_REQUEST];
   1.222 +};
   1.223 +typedef struct blkif_request blkif_request_t;
   1.224 +
   1.225 +struct blkif_response {
   1.226 +    uint64_t        id;              /* copied from request */
   1.227 +    uint8_t         operation;       /* copied from request */
   1.228 +    int16_t         status;          /* BLKIF_RSP_???       */
   1.229 +};
   1.230 +typedef struct blkif_response blkif_response_t;
   1.231 +#if defined(__i386__)
   1.232 +#pragma pack()
   1.233 +#endif
   1.234 +
   1.235 +/*
   1.236 + * STATUS RETURN CODES.
   1.237 + */
   1.238 + /* Operation not supported (only happens on barrier writes). */
   1.239 +#define BLKIF_RSP_EOPNOTSUPP  -2
   1.240 + /* Operation failed for some unspecified reason (-EIO). */
   1.241 +#define BLKIF_RSP_ERROR       -1
   1.242 + /* Operation completed successfully. */
   1.243 +#define BLKIF_RSP_OKAY         0
   1.244 +
   1.245 +/*
   1.246 + * Generate blkif ring structures and types.
   1.247 + */
   1.248 +
   1.249 +DEFINE_RING_TYPES(blkif, struct blkif_request, struct blkif_response);
   1.250 +
   1.251 +#define VDISK_CDROM        0x1
   1.252 +#define VDISK_REMOVABLE    0x2
   1.253 +#define VDISK_READONLY     0x4
   1.254 +
   1.255 +#endif /* __XEN_PUBLIC_IO_BLKIF_H__ */
   1.256 +
   1.257 +/*
   1.258 + * Local variables:
   1.259 + * mode: C
   1.260 + * c-set-style: "BSD"
   1.261 + * c-basic-offset: 4
   1.262 + * tab-width: 4
   1.263 + * indent-tabs-mode: nil
   1.264 + * End:
   1.265 + */
   1.266 \ No newline at end of file
     2.1 --- a/common/include/xen_windows.h	Fri Feb 01 00:22:46 2008 +1100
     2.2 +++ b/common/include/xen_windows.h	Fri Feb 01 16:47:42 2008 +1100
     2.3 @@ -108,12 +108,15 @@ AllocatePages(int Pages)
     2.4    if (Buf == NULL)
     2.5    {
     2.6      KdPrint((__DRIVER_NAME "     AllocatePages Failed at ExAllocatePoolWithTag\n"));
     2.7 +    return NULL;
     2.8    }
     2.9    KdPrint((__DRIVER_NAME " --- AllocatePages IRQL = %d, Buf = %p\n", KeGetCurrentIrql(), Buf));
    2.10    Mdl = IoAllocateMdl(Buf, Pages * PAGE_SIZE, FALSE, FALSE, NULL);
    2.11    if (Mdl == NULL)
    2.12    {
    2.13 +    // free the memory here
    2.14      KdPrint((__DRIVER_NAME "     AllocatePages Failed at IoAllocateMdl\n"));
    2.15 +    return NULL;
    2.16    }
    2.17    MmBuildMdlForNonPagedPool(Mdl);
    2.18    
     3.1 --- a/xenpci/gnttbl.c	Fri Feb 01 00:22:46 2008 +1100
     3.2 +++ b/xenpci/gnttbl.c	Fri Feb 01 16:47:42 2008 +1100
     3.3 @@ -38,15 +38,6 @@ get_free_entry(WDFDEVICE Device)
     3.4    return ref;
     3.5  }
     3.6  
     3.7 -/*
     3.8 -struct grant_entry {
     3.9 -    uint16_t flags;
    3.10 -    domid_t  domid;
    3.11 -    uint32_t frame;
    3.12 -};
    3.13 -typedef struct grant_entry grant_entry_t;
    3.14 -*/
    3.15 -
    3.16  static int 
    3.17  GntTab_Map(WDFDEVICE Device, unsigned int start_idx, unsigned int end_idx)
    3.18  {
    3.19 @@ -115,7 +106,6 @@ GntTbl_GrantAccess(
    3.20    ref = get_free_entry(Device);
    3.21    xpdd->gnttab_table[ref].frame = frame;
    3.22    xpdd->gnttab_table[ref].domid = domid;
    3.23 -  //_WriteBarrier();
    3.24    KeMemoryBarrier();
    3.25    readonly *= GTF_readonly;
    3.26    xpdd->gnttab_table[ref].flags = GTF_permit_access | (uint16_t)readonly;
     4.1 --- a/xenvbd/sources	Fri Feb 01 00:22:46 2008 +1100
     4.2 +++ b/xenvbd/sources	Fri Feb 01 16:47:42 2008 +1100
     4.3 @@ -1,7 +1,7 @@
     4.4  TARGETNAME=XENVBD
     4.5  TARGETTYPE=DRIVER
     4.6  TARGETPATH=..\Target\$(DDK_TARGET_OS)
     4.7 -VERSION=0.6.1.2
     4.8 +VERSION=0.6.1.14
     4.9  KMDF_VERSION=1
    4.10  MSC_WARNING_LEVEL=/W4
    4.11  INF_NAME=xenvbd
     5.1 --- a/xenvbd/xenvbd.c	Fri Feb 01 00:22:46 2008 +1100
     5.2 +++ b/xenvbd/xenvbd.c	Fri Feb 01 16:47:42 2008 +1100
     5.3 @@ -6,6 +6,7 @@
     5.4  #include <stdlib.h>
     5.5  #include <xen_public.h>
     5.6  #include <io/xenbus.h>
     5.7 +#include <io/protocols.h>
     5.8  
     5.9  #pragma warning(disable: 4127)
    5.10  
    5.11 @@ -140,6 +141,9 @@ XenVbd_HwScsiInterruptTarget(PVOID Devic
    5.12      for (i = TargetData->Ring.rsp_cons; i != rp; i++)
    5.13      {
    5.14        rep = RING_GET_RESPONSE(&TargetData->Ring, i);
    5.15 +//KdPrint((__DRIVER_NAME "     rep = %p\n", rep));
    5.16 +//KdPrint((__DRIVER_NAME "     rep->id = %d\n", rep->id));
    5.17 +
    5.18        Srb = TargetData->shadow[rep->id].Srb;
    5.19        BlockCount = (Srb->Cdb[7] << 8) | Srb->Cdb[8];
    5.20  
    5.21 @@ -282,11 +286,19 @@ XenVbd_BackEndStateHandler(char *Path, P
    5.22      RtlStringCbCopyA(TmpPath, 128, TargetData->Path);
    5.23      RtlStringCbCatA(TmpPath, 128, "/event-channel");
    5.24      DeviceData->XenDeviceData->XenInterface.XenBus_Printf(DeviceData->XenDeviceData->XenInterface.InterfaceHeader.Context, XBT_NIL, TmpPath, "%d", TargetData->EventChannel);
    5.25 +
    5.26 +    RtlStringCbCopyA(TmpPath, 128, TargetData->Path);
    5.27 +    RtlStringCbCatA(TmpPath, 128, "/protocol");
    5.28 +    DeviceData->XenDeviceData->XenInterface.XenBus_Printf(DeviceData->XenDeviceData->XenInterface.InterfaceHeader.Context, XBT_NIL, TmpPath, "%s", XEN_IO_PROTO_ABI_NATIVE);
    5.29 +//    DeviceData->XenDeviceData->XenInterface.XenBus_Printf(DeviceData->XenDeviceData->XenInterface.InterfaceHeader.Context, XBT_NIL, TmpPath, "%s", XEN_IO_PROTO_ABI_X86_64);
    5.30    
    5.31      RtlStringCbCopyA(TmpPath, 128, TargetData->Path);
    5.32      RtlStringCbCatA(TmpPath, 128, "/state");
    5.33      DeviceData->XenDeviceData->XenInterface.XenBus_Printf(DeviceData->XenDeviceData->XenInterface.InterfaceHeader.Context, XBT_NIL, TmpPath, "%d", XenbusStateInitialised);
    5.34  
    5.35 +    KdPrint((__DRIVER_NAME "     sizeof(blkif_request) = %d\n", sizeof(struct blkif_request)));
    5.36 +    KdPrint((__DRIVER_NAME "     sizeof( blkif_request_segment) = %d\n", sizeof(struct blkif_request_segment)));
    5.37 +    KdPrint((__DRIVER_NAME "     sizeof(blkif_response) = %d\n", sizeof(struct blkif_response)));
    5.38      KdPrint((__DRIVER_NAME "     Set Frontend state to Initialised\n"));
    5.39      break;
    5.40  
    5.41 @@ -712,7 +724,7 @@ XenVbd_PutSrbOnRing(PXENVBD_TARGET_DATA 
    5.42  
    5.43  // can use SRB_STATUS_BUSY to push the SRB back to windows...
    5.44  
    5.45 -//  KdPrint((__DRIVER_NAME " --> PutSrbOnRing\n"));
    5.46 +//  KdPrint((__DRIVER_NAME " --> " __FUNCTION__ "\n"));
    5.47  
    5.48    if (RING_FULL(&TargetData->Ring))
    5.49    {
    5.50 @@ -727,6 +739,10 @@ XenVbd_PutSrbOnRing(PXENVBD_TARGET_DATA 
    5.51  
    5.52    req->id = GET_ID_FROM_FREELIST(TargetData);
    5.53  
    5.54 +//KdPrint((__DRIVER_NAME "     req = %p\n", req));
    5.55 +//KdPrint((__DRIVER_NAME "     req->id = %ld\n", req->id));
    5.56 +//KdPrint((__DRIVER_NAME "     ((blkif_response *)req)->id = %ld\n", req->id));
    5.57 +
    5.58    if (req->id == 0x0fffffff)
    5.59    {
    5.60      KdPrint((__DRIVER_NAME "     Something is horribly wrong in PutSrbOnRing\n"));
    5.61 @@ -742,11 +758,16 @@ XenVbd_PutSrbOnRing(PXENVBD_TARGET_DATA 
    5.62    req->nr_segments = (UINT8)((BlockCount * TargetData->BytesPerSector + PAGE_SIZE - 1) / PAGE_SIZE);
    5.63  //  KdPrint((__DRIVER_NAME "     req->nr_segments = %08X\n", req->nr_segments));
    5.64  
    5.65 +
    5.66    for (i = 0; i < req->nr_segments; i++)
    5.67    {
    5.68 +//KdPrint((__DRIVER_NAME "     (ULONG)MmGetMdlPfnArray(TargetData->shadow[req->id].Mdl)[i] = %d\n", (ULONG)MmGetMdlPfnArray(TargetData->shadow[req->id].Mdl)[i]));
    5.69 +//KdBreakPoint();
    5.70      req->seg[i].gref = DeviceData->XenDeviceData->XenInterface.GntTbl_GrantAccess(
    5.71        DeviceData->XenDeviceData->XenInterface.InterfaceHeader.Context,
    5.72        0, (ULONG)MmGetMdlPfnArray(TargetData->shadow[req->id].Mdl)[i], FALSE);
    5.73 +//KdPrint((__DRIVER_NAME "     req->seg[i].gref = %d\n", req->seg[i].gref));
    5.74 +//KdBreakPoint();
    5.75      ASSERT((signed short)req->seg[i].gref >= 0);
    5.76      req->seg[i].first_sect = 0;
    5.77      if (i == req->nr_segments - 1)
    5.78 @@ -760,7 +781,7 @@ XenVbd_PutSrbOnRing(PXENVBD_TARGET_DATA 
    5.79    TargetData->shadow[req->id].req = *req;
    5.80    TargetData->Ring.req_prod_pvt++;
    5.81  
    5.82 -//  KdPrint((__DRIVER_NAME " <-- PutSrbOnRing\n"));
    5.83 +//  KdPrint((__DRIVER_NAME " <-- " __FUNCTION__ "\n"));
    5.84  }
    5.85  
    5.86  static BOOLEAN
    5.87 @@ -773,8 +794,8 @@ XenVbd_HwScsiStartIo(PVOID DeviceExtensi
    5.88    unsigned int i;
    5.89    int notify;
    5.90  
    5.91 -  KdPrint((__DRIVER_NAME " --> HwScsiStartIo PathId = %d, TargetId = %d, Lun = %d\n", Srb->PathId, Srb->TargetId, Srb->Lun));
    5.92 -  KdPrint((__DRIVER_NAME "     IRQL = %d\n", KeGetCurrentIrql()));
    5.93 +//  KdPrint((__DRIVER_NAME " --> HwScsiStartIo PathId = %d, TargetId = %d, Lun = %d\n", Srb->PathId, Srb->TargetId, Srb->Lun));
    5.94 +//  KdPrint((__DRIVER_NAME "     IRQL = %d\n", KeGetCurrentIrql()));
    5.95  
    5.96    // If we haven't enumerated all the devices yet then just defer the request
    5.97    // A timer will issue a NextRequest to get things started again...
    5.98 @@ -1073,7 +1094,7 @@ XenVbd_HwScsiStartIo(PVOID DeviceExtensi
    5.99      break;
   5.100    }
   5.101  
   5.102 -  KdPrint((__DRIVER_NAME " <-- HwScsiStartIo\n"));
   5.103 +//  KdPrint((__DRIVER_NAME " <-- HwScsiStartIo\n"));
   5.104  
   5.105    return TRUE;
   5.106  }