Subject: Re:hme ...
To: Eduardo Horvath <eeh@turbolinux.com>
From: Andrei Petrov <and@genesyslab.com>
List: port-sparc64
Date: 08/21/2000 14:48:59
On Mon, 21 Aug 2000, Eduardo Horvath wrote:

> On Mon, 21 Aug 2000, Andrei Petrov wrote:
> 
> > I'm seeing one thing which I hardly believe: when kernel is doing
> > netboot it sends packet and goes to tsleep, but there are no
> > interrupts going thru during that tsleep. The interrupt can only
> > happen after timeout. I changed timeout value in revarpwhoarewe
> > function and sent more rarp replies from server during tsleep. There are
> > no keyboard interrupts, I think there should be, I might be wrong.
> > But timer works. 
> 
> It just occurred to me that the problem may be interrupt delivery from the
> SBus controller to the main CPU.  We have only been using single CPU
> machines where the CPU's UPAID is zero.  On a MPU machine you may need to
> set the destination UPAID for interrupt delivery.  Try the following
> patch and see if it helps any:
> 
> *** sys/arch/sparc64/dev/sbus.c Mon Jul 10 10:23:33 2000
> --- sys/arch/sparc64/dev/newsbus.c      Mon Aug 21 12:33:30 2000
> ***************
> *** 688,693 ****
> --- 688,694 ----
>                                 intrptr = (int64_t *)&sc->sc_sysio->scsi_clr_int;
>                                 ih->ih_clr = &intrptr[i];
>                                 /* Enable the interrupt */
> +                               intrmap |= (cpuinfo->ci_upaid << 25);
>                                 intrmap |= INTMAP_V;
>                                 bus_space_write_8(sc->sc_bustag, ih->ih_map, 0, (u_long)intrmap);
>                         } else
> 
> (We will need to do the same thing to the psycho driver.)
> 

This patch doesn't compile because of cpuinfo. I changed that to cpus to
compile it. So the line looks: 
				intrmap |= (cpus->ci_upaid << 25);
The good thing is that's it compiles and looks close to original but
it didn't change anything in my case.

--
	Andrey