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);
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to