Path: utzoo!mnetor!tmsoft!dptcdc!bar From: bar@dptcdc.datapoint.com (Brian Ruptash) Newsgroups: comp.unix.wizards Subject: Re: Problems using ACC ACP5250 under 4.3-tahoe Message-ID: <414@dptcdc.datapoint.com> Date: 17 Apr 89 04:42:36 GMT References: <16626@mimsy.UUCP> Organization: Datapoint Canada, Toronto, ON Lines: 74 In article <3104@ci.sei.cmu.edu> pdb@sei.cmu.edu (Patrick Barron) writes: >Has anyone successfully gotten ACC's ACP5250 driver working under >4.3-tahoe? ... the kernel panics when turning the ACP5250 board on ... >... when the driver is trying to write to Unibus map registers ... the pointer >it's using contains garbage, and it goes off and tries to poke at >non-existent memory. and in article <16626@mimsy.UUCP> chris@mimsy.umd.edu (Chris Torek) replies: > Between 4.3BSD and 4.3-tahoe, Mike fixed the Unibus code so that it > understands having map registers at a different location from Unibus > adapter registers (if any), and to catch bugs, set the `adapter' > register address to 0xc0000000. That one got caught. > > The map registers are now at uhp->uh_mr, rather than > &uhp->uh_uba->uba_map[0]. > > This does not affect well-behaved vaxif drivers, as they all go > through vaxif/if_uba.c. (The ACC drivers are not well-behaved.) I encountered the same problem in using the CSNET XNI and ACP5250 drivers under 4.3-tahoe. In an attempt to make them more "well behaved" (it took much more than this, for lots of unrelated reasons, but this answers your specific query...), I modified the XNI driver as follows. All the ACC-derived drivers (of which the CSNET XNI is one - change the dda_'s to as_'s in this fix) have the same problem, including the latest ACC beta version. This should work under 4.3 as well, although I never tried it as I had already moved to 4.3-tahoe at this point. *** if_dda.c Mon Mar 6 18:09:21 1989 --- if_dda.c.fix Sun Apr 16 23:56:51 1989 *************** *** 1175,1181 **** return; } /* leave the UNIBUS mapping register */ ! ds->dda_mapreg = (ds->dda_mapreg >> PGSHIFT) & 0x1ff; ds->dda_sioq.sq_head = (struct hdx_chan *) 0; ds->dda_sioq.sq_tail = (struct hdx_chan *) 0; --- 1175,1181 ---- return; } /* leave the UNIBUS mapping register */ ! ds->dda_mapreg = UBAI_MR (ds->dda_mapreg); ds->dda_sioq.sq_head = (struct hdx_chan *) 0; ds->dda_sioq.sq_tail = (struct hdx_chan *) 0; *************** *** 2404,2411 **** #endif MULTINET #else not VAXVMS /* System page table entry for UNIX 4.2 BSD */ ! pte = &Sysmap[btop ((int) hc->hc_addr & ~PG_V)]; ! io = &uh->uh_uba->uba_map[ds->dda_mapreg]; #endif VAXVMS --- 2404,2411 ---- #endif MULTINET #else not VAXVMS /* System page table entry for UNIX 4.2 BSD */ ! pte = kvtopte (hc->hc_addr); ! io = &uh->uh_mr[ds->dda_mapreg]; #endif VAXVMS -- Brian Ruptash | Internet: bar@datapoint.com Principal Architect | UUCP: {uunet, utzoo}!dptcdc!bar Datapoint Corporation | Phone: (416) 222-8005