Port-sparc64 archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: Keyboard Problem with V5.1 on an E4000
On Thu, 11 Aug 2011, Julian Coleman wrote:
> The reset is at the point where we enable interrupts on the serial port (line
> 473 of sys/arch/sparc64/dev/zs.c [1]). According to the "Sun Enterprise xx00
> Problem Solving Manual", section 4.13 [2], the reset is caused by "an
> interrupt being sent to an unmapped or non-accepting destination".
Looks like the fhc driver is not setting the destination UPAID where it
needs to when establishing an interrupt mapping. I don't have the docs on
the fhc controller, but Sun usually recycled register contents across
designs.
SBus does this:
/* Register the map and clear intr
registers */
ih->ih_map = &intrptr[i];
intrptr = (int64_t
*)&sc->sc_sysio->scsi_clr_int;
ih->ih_clr = &intrptr[i];
/* Enable the interrupt */
imap |= INTMAP_V
|(CPU_UPAID << INTMAP_TID_SHIFT);
/* XXXX */
*(ih->ih_map) = imap;
FHC does this:
if (intrmapptr != NULL) {
u_int64_t r;
r = *intrmapptr;
r |= INTMAP_V;
*intrmapptr = r;
r = *intrmapptr;
ih->ih_number |= r & INTMAP_INR;
}
If you add something like:
r |= (CPU_UPAID << INTMAP_TID_SHIFT);
(after you figure out where those are defined) it will probably solve your
problem.
Eduardo
Home |
Main Index |
Thread Index |
Old Index