summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--OvmfPkg/XenPvBlkDxe/BlockFront.c2
-rw-r--r--OvmfPkg/XenPvBlkDxe/XenPvBlkDxe.c14
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;