Subject: Re: siop1: can't map on-board RAM
To: None <hubert.feyrer@informatik.fh-regensburg.de>
From: Manuel Bouyer <bouyer@antioche.lip6.fr>
List: tech-kern
Date: 07/24/2000 18:00:00
--KsGdsel6WgEHnImy
Content-Type: text/plain; charset=us-ascii
On Thu, Jul 06, 2000 at 01:40:07PM +0200, Hubert Feyrer wrote:
>
> I've just tried to boot the 1.5 snapshot from ftp.netbsd.org on the
> Toshiba 4G machine (i know it's a Magnia 7010 now, with only 3G RAM
> installed this week). It seems the siop driver is still having problems,
> though, see the dmesg output below.
The "can't map on-board RAM" looks suspect to me, and points to a problem
either in the PCI code or in the BIOS. I just tested, siop *does* work
without the on-board RAM (it just puts the script in main memory).
But the reason which prevents the RAM mapping may also alter other
functions (access to I/O registers or DMA). Finding why it can't map the
on-board RAM may point to the problem which prevents the whole thing from
working. What's the way of debugging this ?
SIOP preffers memory-mapped registers over I/O mapped registers; but maybe
I/O mapped works better in this case ? could you try the attached patch ?
--
Manuel Bouyer, LIP6, Universite Paris VI. Manuel.Bouyer@lip6.fr
--
--KsGdsel6WgEHnImy
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename=diff
--- siop_pci_common.c.orig Mon Jul 24 17:57:59 2000
+++ siop_pci_common.c Mon Jul 24 17:59:32 2000
@@ -226,14 +226,14 @@
ioh_valid = (pci_mapreg_map(pa, 0x10, PCI_MAPREG_TYPE_IO, 0,
&iot, &ioh, &ioaddr, NULL) == 0);
- if (memh_valid) {
- sc->siop.sc_rt = memt;
- sc->siop.sc_rh = memh;
- sc->siop.sc_raddr = memaddr;
- } else if (ioh_valid) {
+ if (ioh_valid) {
sc->siop.sc_rt = iot;
sc->siop.sc_rh = ioh;
sc->siop.sc_raddr = ioaddr;
+ } else if (memh_valid) {
+ sc->siop.sc_rt = memt;
+ sc->siop.sc_rh = memh;
+ sc->siop.sc_raddr = memaddr;
} else {
printf("%s: unable to map device registers\n",
sc->siop.sc_dev.dv_xname);
--KsGdsel6WgEHnImy--