Re: 8.1 boot failure on Challenge S
George Harvey <[email protected]>
| Newsgroups | gmane.os.netbsd.ports.mips.devel |
|---|---|
| Message-ID | <[email protected]> |
On Sun, 17 Nov 2019 02:03:26 -0500 Michael <[email protected]> wrote: > On Sat, 16 Nov 2019 20:20:40 +0000 > George Harvey <[email protected]> wrote: > > > Since the failure occurred after finding hpc1, which isn't present on > > an Indy, I built a custom kernel with hpc1 disabled. That booted and > > ran normally on the Challenge S so it looks like the problem is related > > to the second hpc. What can I do to narrow it down further? > > Hmm, might be fallout from the bus space rework I did a while ago - > this is a hardware combination I was unable to test. > > > mode status=0x20040003, cause=0xc008, epc=0x880b59e4, vaddr=0 > > tf=0x88061848 ksp=0x880618e8 ra=0x880b59d8 ppl=0x8 > > kernel: TLB miss (load or instr. fetch) trap > > Stopped in pid 0.1 (system) at 880b59e4: lw a0,0(v1) It does appear to be bus space related. I added some printfs and the error occurs at line 484 in hpc.c. That's a bus_space_write_4: bus_space_write_4(ga->ga_iot, ga->ga_ioh, HPC3_PBUS_CFGPIO_REGS, 0x0003ffff); I then printed the values of ga_iot and ga_ioh and found that ga_iot was zero. After some further debugging, I found that ga->ga_iot was set to zero in gio_search in gio.c. Changing that line to set ga_iot to normal_memt instead fixed the error and allowed the kernel to boot normally. ie. change ga->ga_iot = 0; to ga->ga_iot = normal_memt; Is that the correct fix? George