diff --git b/grub-core/disk/i386/pc/biosdisk.c a/grub-core/disk/i386/pc/biosdisk.c index f0aadd1..7ca89e3 100644 --- b/grub-core/disk/i386/pc/biosdisk.c +++ a/grub-core/disk/i386/pc/biosdisk.c @@ -570,6 +547,10 @@ get_safe_sectors (grub_disk_t disk, grub_disk_addr_t sector) size = sectors - offset; + /* Limit the max to 0x7f because of Phoenix EDD. */ + if (size > ((0x7fU << GRUB_DISK_SECTOR_BITS) >> disk->log_sector_size)) + size = ((0x7fU << GRUB_DISK_SECTOR_BITS) >> disk->log_sector_size); + return size; }