diff options
-rw-r--r-- | OvmfPkg/XenPvBlkDxe/BlockFront.c | 2 | ||||
-rw-r--r-- | OvmfPkg/XenPvBlkDxe/XenPvBlkDxe.c | 14 |
2 files changed, 10 insertions, 6 deletions
diff --git a/OvmfPkg/XenPvBlkDxe/BlockFront.c b/OvmfPkg/XenPvBlkDxe/BlockFront.c index 5a3ad5e..eb503eb 100644 --- a/OvmfPkg/XenPvBlkDxe/BlockFront.c +++ b/OvmfPkg/XenPvBlkDxe/BlockFront.c @@ -356,7 +356,7 @@ Again: DEBUG ((
DEBUG_INFO,
- "XenPvBlk: New disk with %ld sectors of %d bytes\n",
+ "XenPvBlk: New disk with %ld 512B-sectors and logical sector size of %d bytes\n",
Dev->MediaInfo.Sectors,
Dev->MediaInfo.SectorSize
));
diff --git a/OvmfPkg/XenPvBlkDxe/XenPvBlkDxe.c b/OvmfPkg/XenPvBlkDxe/XenPvBlkDxe.c index dfc40bf..218ada8 100644 --- a/OvmfPkg/XenPvBlkDxe/XenPvBlkDxe.c +++ b/OvmfPkg/XenPvBlkDxe/XenPvBlkDxe.c @@ -295,15 +295,19 @@ XenPvBlkDxeDriverBindingStart ( // MdeModulePkg/Universal/Disk/PartitionDxe/ElTorito.c
//
Media->BlockSize = 2048;
- Media->LastBlock = DivU64x32 (
- Dev->MediaInfo.Sectors,
- Media->BlockSize / Dev->MediaInfo.SectorSize
- ) - 1;
} else {
Media->BlockSize = Dev->MediaInfo.SectorSize;
- Media->LastBlock = Dev->MediaInfo.Sectors - 1;
}
+ //
+ // Sectors is express as 512B unit, size of disk is "Sectors * 512",
+ // independently from SectorSize.
+ //
+ Media->LastBlock = DivU64x32 (
+ Dev->MediaInfo.Sectors,
+ Media->BlockSize / 512
+ ) - 1;
+
ASSERT (Media->BlockSize % 512 == 0);
Dev->BlockIo.Media = Media;
|