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