From: H. Peter Anvin Date: Mon, 28 Jun 2010 21:34:08 +0000 (-0700) Subject: diskio: hard-code CD-ROM sectors to 2048 bytes X-Git-Tag: syslinux-4.00~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c126c28095caf13d164b21f4c7cb25a44af859b0;p=platform%2Fupstream%2Fsyslinux.git diskio: hard-code CD-ROM sectors to 2048 bytes At least the ThinkPad T22 and T23 will incorrectly report a sector size of 512 bytes for El Torito CD-ROMs. Ignore the reported sector size for El Torito boots. Reported-by: Helmut Hullen Tested-by: Peter Zijlstra Signed-off-by: H. Peter Anvin --- diff --git a/core/fs/diskio.c b/core/fs/diskio.c index b832868..1625bdb 100644 --- a/core/fs/diskio.c +++ b/core/fs/diskio.c @@ -278,7 +278,18 @@ struct disk *disk_init(uint8_t devno, bool cdrom, sector_t part_start, if (edd_params.len < sizeof edd_params) memset((char *)&edd_params + edd_params.len, 0, sizeof edd_params - edd_params.len); - if (edd_params.sector_size >= 512 && + + /* + * Note: filter impossible sector sizes. Some BIOSes + * are known to report incorrect sector size information + * (usually 512 rather than 2048) for CD-ROMs, so at least + * for now ignore the reported sector size if booted via + * El Torito. + * + * Known affected systems: ThinkPad T22, T23. + */ + if (!cdrom && + edd_params.sector_size >= 512 && is_power_of_2(edd_params.sector_size)) sector_size = edd_params.sector_size; }