From owner-freebsd-sparc64@FreeBSD.ORG Tue Dec 21 06:43:21 2004 Return-Path: Delivered-To: freebsd-sparc64@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id ED7F916A4CE for ; Tue, 21 Dec 2004 06:43:21 +0000 (GMT) Received: from smtp-relay.tamu.edu (smtp-relay.tamu.edu [165.91.143.199]) by mx1.FreeBSD.org (Postfix) with ESMTP id 71E3D43D1F for ; Tue, 21 Dec 2004 06:43:21 +0000 (GMT) (envelope-from tyler@neo.tamu.edu) Received: from neo.tamu.edu (nobody@xyzzy-1.tamu.edu [165.91.252.74]) by smtp-relay.tamu.edu (8.12.10/8.12.10) with SMTP id iBL6hHEK085224; Tue, 21 Dec 2004 00:43:18 -0600 (CST) Message-Id: <200412210643.iBL6hHEK085224@smtp-relay.tamu.edu> Date: Tue, 21 Dec 2004 06:43:17 -0000 To: From: "Ballance, Robert T" X-Mailer: TWIG 2.6.2 In-Reply-To: <20041221025023.GB4468@kt-is.co.kr> X-Client-IP: cc: freebsd-sparc64@freebsd.org Subject: Re: sysinstall dead in -CURRENT? X-BeenThere: freebsd-sparc64@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list Reply-To: tyler@neo.tamu.edu List-Id: Porting FreeBSD to the Sparc List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 21 Dec 2004 06:43:22 -0000 > AFAIK, this has nothing to do with marius' zs(4) patch. > There is also PR72962 for the issue. > > Long ago, I made a patch for this issue. But it wasn't further > investigated due to lack of time. I sent a mail to one of > developer but got no reply. The following is the summary of > the mail. > > It seems that it happans on on systems with SCSI CDROM. In rev. > 1.90 of scsi_cd.c, phk changed to return 2k sectors when no media > inserted. But open_disk.c:Int_Open_Disk() just check sectorsize > against 0. So if we have no media in CDROM, we would bypass the > check and could generate division by zero exception. I guess we > need at least the following patch. > > It seems that there are two cases here. > 1. No media in CDROM -> sector = 2k, hd = 0 > 2. media present in CDROM -> sector = 0, hd = 0 > > --- open_disk.c.orig Mon Sep 20 11:22:10 2004 > +++ open_disk.c Tue Oct 26 17:45:17 2004 > @@ -94,6 +94,8 @@ > return (NULL); > d->sector_size = s; > len /= s; /* media size in number of sectors. */ > + if (len == 0) > + return (NULL); > > if (Add_Chunk(d, 0, len, name, whole, 0, 0, "-")) { > DPRINT(("Failed to add 'whole' chunk")); > @@ -123,6 +125,10 @@ > */ > o = d->bios_hd * d->bios_sect; > d->bios_cyl = (o != 0) ? len / o : 0; > + if (d->bios_cyl == 0) { > + /* XXX This may indicate it is not DISK. */ > + return (NULL); > + } > > p = q; > lo[0] = 0; > > And another one to plug memory leak. > > --- disk.c.orig Mon May 17 07:08:16 2004 > +++ disk.c Tue Oct 26 16:46:23 2004 > @@ -77,6 +77,7 @@ > struct disk * > Open_Disk(const char *name) > { > + struct disk *d; > char *conftxt; > size_t txtsize; > int error; > @@ -99,7 +100,10 @@ > } > conftxt[txtsize] = ''; /* in case kernel bug is still there */ > > - return Int_Open_Disk(name, conftxt); > + d = Int_Open_Disk(name, conftxt); > + free(conftxt); > + > + return (d); > } > > void > > BTW, I don't know why GEOM thinks SCSI CDROM as a disk. On systems > with IDE CDROM, it is not considered as a disk. So above problem > only happen on systems with SCSI CDROM. With above patches my U2 > displayed install screen successfully with/without CD mdia in CDROM. Is there anything I can do to help get this into the tree/working, and does this problem affect SCSI cdrom's across the board, or just with sparc64? I'm off for a good while from University, and I got access today to another Ultra2 and an Ultra60, so I can test more stuff if needed ;) -R. Tyler Ballance