Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 15 Jul 2014 00:27:08 +0000 (UTC)
From:      Peter Grehan <grehan@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r268639 - head/usr.sbin/bhyve
Message-ID:  <201407150027.s6F0R83v092213@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: grehan
Date: Tue Jul 15 00:27:08 2014
New Revision: 268639
URL: http://svnweb.freebsd.org/changeset/base/268639

Log:
  Use the blockif CHS routine to create fake CHS values,
  and then populate them in the identity page.
  
  This fixes a divide-by-zero error at probe time with NetBSD.
  
  MFC after:	1 week.

Modified:
  head/usr.sbin/bhyve/pci_ahci.c

Modified: head/usr.sbin/bhyve/pci_ahci.c
==============================================================================
--- head/usr.sbin/bhyve/pci_ahci.c	Tue Jul 15 00:25:54 2014	(r268638)
+++ head/usr.sbin/bhyve/pci_ahci.c	Tue Jul 15 00:27:08 2014	(r268639)
@@ -598,10 +598,16 @@ handle_identify(struct ahci_port *p, int
 	} else {
 		uint16_t buf[256];
 		uint64_t sectors;
+		uint16_t cyl;
+		uint8_t sech, heads;
 
 		sectors = blockif_size(p->bctx) / blockif_sectsz(p->bctx);
+		blockif_chs(p->bctx, &cyl, &heads, &sech);
 		memset(buf, 0, sizeof(buf));
 		buf[0] = 0x0040;
+		buf[1] = cyl;
+		buf[3] = heads;
+		buf[6] = sech;
 		/* TODO emulate different serial? */
 		ata_string((uint8_t *)(buf+10), "123456", 20);
 		ata_string((uint8_t *)(buf+23), "001", 8);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201407150027.s6F0R83v092213>