Hi Andrei, > I have read all the books you suggested and I work having all of them on > my desk. I come back to them frequently to check diverse stuff. My > problems are: > - Why Malta implementation doesn't activate cpu_has_veic although they > have 8259 external interrupt controller? Malta implementation doesn't > activate cpu_has_vint too although Vectored interrupt mode should be the > minimum recommended mode if external controller is not present. I am fairly sure at least some configurations with the Malta do use the VEIC or VINT mode; probably both, though not at a time of course, depending on the exact setup. Please note however that the Malta supports a diverse set of CPU cards, some of which not even featuring a MIPS architecture processor (such as the QED RM5261 CPU that is only the legacy MIPS IV ISA). Therefore for the Malta you cannot simply override our default of the dynamic interrupt configuration by hardcoding cpu_has_veic or cpu_has_vint to 1. The value has to be determined at the run time (note that by default cpu_has_veic, etc. macros expand to variable references). The design of the Malta itself (which is from ~2000) also predates the second revision of the MIPS architecture that introduced the VEIC mode and does not allow the 8259 to be used in a manner that would give any advantage for vectored interrupts -- the output of the PIC is simply wired to one of the core card's inputs, that is then routed to one of the CPU interrupt lines, perhaps via the system controller (depending on the exact one used -- they vary significantly between core cards too), and the actual originating source at the 8259 can only be determined either by poking at a special register in the system controller that makes it generate a PCI INTA cycle and returns the vector the 8259 responded with or by the PIC's OCW3 command. > - Looking at Malta_xxxx specific files, it seems to me that they do not > follow Linux Porting Guide document I have read on MIPS Linux. No surprise as I'd expect them to predate the document by many years. > In addition, my company pays Timesys for support and regarding > cpu-feature.h define switches, they said that they know nothing. Hmm, change your support provider then? If I paid someone for support, then I'd expect them to be able to figure out the details I ask them about. And I wouldn't care if they did that themselves or asked someone else in turn. > What I was hoping was to find a MIPS Linux implementation which uses > Vectored Interrupt Mode (VI) with few h/w interrupts including the timer > routed to the MIPS processor or at least some document with some details > of implementation. That will shorten significantly my porting. Sure, if > I find nothing, I'll write from scratch as I understand, but it takes > for sure much longer and is worth to try first finding a close example. While a reasonably comprehensive choice, with its complexity and diversity the Malta is certainly not the simplest one to start with. You may be able to find a simpler one, but I don't know which one that would be (I seem to tend to stick to the complicated bits ;) ) so I cannot point you at that, sorry. You may be able to figure it out yourself -- I suggest starting by checking platforms that do not hardcode cpu_has_veic to 0 (I'm assuming you have verified none sets it to 1 already as otherwise you wouldn't be asking these questions, would you?). Also someone else, more familiar with some platforms that we support, may be able to help you with that. Anyway, good luck! Maciej