From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:58003) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RQLOd-00065J-1q for qemu-devel@nongnu.org; Tue, 15 Nov 2011 10:58:14 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RQLOZ-0007Js-S2 for qemu-devel@nongnu.org; Tue, 15 Nov 2011 10:58:02 -0500 Received: from mail-yw0-f45.google.com ([209.85.213.45]:48008) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RQLOZ-0007JV-MU for qemu-devel@nongnu.org; Tue, 15 Nov 2011 10:57:59 -0500 Received: by ywa17 with SMTP id 17so4418287ywa.4 for ; Tue, 15 Nov 2011 07:57:58 -0800 (PST) Sender: Paolo Bonzini From: Paolo Bonzini Date: Tue, 15 Nov 2011 16:57:50 +0100 Message-Id: <1321372670-12682-1-git-send-email-pbonzini@redhat.com> Subject: [Qemu-devel] [PATCH 1.0] scsi-disk: guess geometry List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Old operating systems rely on correct geometry to convert from CHS addresses to LBA. Providing correct data is necessary for them to boot. Signed-off-by: Paolo Bonzini --- This fixes booting the FreeDOS image on bochs.sf.net with virtio-scsi. I haven't tested with LSI option ROMs, but it should qualify for 1.0. hw/scsi-disk.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/scsi-disk.c b/hw/scsi-disk.c index 16a4714..cd77780 100644 --- a/hw/scsi-disk.c +++ b/hw/scsi-disk.c @@ -828,7 +828,7 @@ static int mode_sense_page(SCSIDiskState *s, int page, uint8_t **p_outbuf, break; } /* if a geometry hint is available, use it */ - bdrv_get_geometry_hint(bdrv, &cylinders, &heads, &secs); + bdrv_guess_geometry(bdrv, &cylinders, &heads, &secs); p[2] = (cylinders >> 16) & 0xff; p[3] = (cylinders >> 8) & 0xff; p[4] = cylinders & 0xff; @@ -862,7 +862,7 @@ static int mode_sense_page(SCSIDiskState *s, int page, uint8_t **p_outbuf, p[2] = 5000 >> 8; p[3] = 5000 & 0xff; /* if a geometry hint is available, use it */ - bdrv_get_geometry_hint(bdrv, &cylinders, &heads, &secs); + bdrv_guess_geometry(bdrv, &cylinders, &heads, &secs); p[4] = heads & 0xff; p[5] = secs & 0xff; p[6] = s->qdev.blocksize >> 8; -- 1.7.7.1