All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Kevin D. Kissell" <kevink@paralogos.com>
To: Anoop P A <anoop.pa@gmail.com>
Cc: STUART VENTERS <stuart.venters@adtran.com>,
	"Anoop P.A." <Anoop_P.A@pmc-sierra.com>,
	linux-mips@linux-mips.org
Subject: Re: SMTC support status in latest git head.
Date: Tue, 04 Jan 2011 09:40:29 -0800	[thread overview]
Message-ID: <4D235B8D.2070306@paralogos.com> (raw)
In-Reply-To: <1294146165.27661.361.camel@paanoop1-desktop>

On 01/04/11 05:02, Anoop P A wrote:
> On Tue, 2011-01-04 at 00:17 -0800, Kevin D. Kissell wrote:
>> Those interrupt counters show that IPIs are being taken everywhere,
>> though very few by CPUs 5 and 6.  If I understand the configuration
>> correctly, CPU 4 is a TC in VPE 1, and it's getting a reasonable IPI
> Yes CPU4 is in second VPE
>
>> rate, *if* we're looking at a tickless kernel under low load.  But there
> No it was not the tickless kernel.I had selected 250 MHz timer. can't we
> expect IPI / timer interrupt for all the threads in this case ?.

In that case, you should expect a distribution of timer interrupts that 
favors the low-numbered TCs within the VPE, as you do in VPE0, and a 
distribution of IPIs that is sort-of the inverse, as you do in VPE0.  
But the low counts on VPE1 are indeed suspicious, as you note.

>> may be a clue there to part of your problem.  I have no idea why the
>> behavior would have changed from 2.6.36 to 2.6.37, but it looks as if
>> you're getting your clock interrupts through the MSP CIC interrupt
>> controller on VPE 0.  There's nothing symmetric for VPE1. The Malta
>> example code is perhaps deceptively simple, in that both VPEs have their
>> count/compare indication wired directly to the 2 clock interrupt inputs,
>> so that having both of them running with only a single set of irq state
>> just works.  I don't know whether the MSP CIC timer interrupt is a
> In my case it is separate irq. MSP_INT_VPE1_TIMER (34) and
> MSP_INT_VPE0_TIMER (25) are wired to CIC . CIC interrupt has been
> connected to cpu irq 6.
>
> I can reproduce cpu stall in VSMP mode If I don't setup VPE1 timer
> interrupt . Don't we have support for separate irq in SMTC
> implementation ?..

There are hooks for platform-specific SMTC support, which is implemented 
for the Malta in arch/mips/mti-malta/malta-smtc.c.  See 
msmtc_init_secondary(), for example, where the clock/compare, profile, 
and IPI interrupts are armed for VPE 1, while I/O peripheral interrupts 
are inhibited.

>> gating of the VPE0 count/compare output, or whether it's it's own
>> interval timer, but I suspect that you may need to do some further
>> low-level initialization in the platform-specific code to set up an
>> interrupt on the VPE1 side.  I don't think the snippet you've got below
>> would work as written.
> The routine which I copied works fine for VSMP mode .
>
> / # cat /proc/interrupts
>             CPU0       CPU1
>    0:        187        254            MIPS  IPI_resched
>    1:         77        174            MIPS  IPI_call
>    6:          0          0            MIPS  MSP CIC cascade
>    8:          0          0         MSP_CIC  Softreset button
>    9:          0          0         MSP_CIC  Standby switch
>   21:          0          0         MSP_CIC  MSP PER cascade
>   25:      37077          0         MSP_CIC  timer
>   27:        188          0         MSP_CIC  serial
>   34:          0      36986         MSP_CIC  timer
>
> Do I want to change anything specific for SMTC ? .

If it works (which I doubt), then we can critique stylistic points like 
using

		if ((1==get_current_vpe())

Instead of the more readable and general

		if (get_current_vpe()>  0)


But I think you're generally looking in the wrong place.  Look at the 
Malta code and see what's done where.  The initial SMTC code had a lot 
of Malta assumptions in the main line that I pushed out to platform code 
in later patches.  I can see how things could be made even more modular, 
but for the moment I think it's just that there's some stuff that ought 
to be done in a "msp_smtc.c" file that doesn't exist in 2.6.37.

             Regards,

             Kevin K.
>
>
>> If it's purely an issue with clock distribution on VPE1, then a boot
>> with maxvpes=1 maxtcs=4 should be stable.
> Yes the kernel seems to be stable if I boot with maxvpes=1 maxtcs=4 .
>
>> /K.
>>
>> On 1/3/2011 11:20 AM, Anoop P A wrote:
>>> Hi Kevin,
>>>
>>> On Mon, 2011-01-03 at 08:14 -0800, Kevin D. Kissell wrote:
>>>> The very first SMTC implementations didn't support full kernel-mode
>>>> preemption, which anyway wasn't a priority, given the hardware event
>>>> response support in MIPS MT.  I believe it was later made compatible,
>>>> but it was never extensively exercised.  Since SMTC has fingers in some
>>>> pretty low-level atomicity mechanisms, if a new, parallel set was
>>>> implemented for RCU, I can easily imagine that nobody has yet
>>>> implemented SMTC-ified variants of that set.
>>>>
>>>> Your last statement isn't very clear, though.  Are you saying that if
>>>> you configure for no forced preemption and with TREE_CPU, the 2.6.37
>>>> kernel boots all the way up, or that it simply hangs later?   What's the
>>>> last rev kernel that actually boots all the way up?
>>> I have debugged this a bit more. It seems that kernel getting stalled
>>> while executing on TC's of second VPE .
>>> INFO: rcu_sched_state detected stalls on CPUs/tasks: { 4 5 6} (detected
>>> by 1, t=2504 jiffies)
>>> INFO: rcu_sched_state detected stalls on CPUs/tasks: { 4 5 6} (detected
>>> by 1, t=10036 jiffies)
>>> INFO: rcu_sched_state detected stalls on CPUs/tasks: { 4 5 6} (detected
>>> by 1, t=17568 jiffies)
>>> INFO: rcu_sched_state detected stalls on CPUs/tasks: { 4 5 6} (detected
>>> by 1, t=25100 jiffies)
>>> INFO: rcu_sched_state detected stalls on CPUs/tasks: { 4 5 6} (detected
>>> by 1, t=32632 jiffies)
>>> INFO: rcu_sched_state detected stalls on CPUs/tasks: { 4 5 6} (detected
>>> by 1, t=40164 jiffies)
>>>
>>> With CONFIG_TREE_CPU we were not hitting this scenario very often.
>>> However with CONFIG_PREEMPT_TREE_CPU stall happens most of the time.
>>>
>>> I presume some issue in my timer setup . I am not seeing timer interrupt
>>> (or IPI interrupt) getting  incremented for VPE1 tcs on a completely
>>> booted 2.6.32-stable kernel.
>>>
>>> / # cat /proc/interrupts
>>>             CPU0       CPU1       CPU2       CPU3       CPU4       CPU5
>>> CPU6
>>>    1:        148      15023      15140      15093       3779          8
>>> 2            MIPS  SMTC_IPI
>>>    6:          0          0          0          0          0          0
>>> 0            MIPS  MSP CIC cascade
>>>    8:          0          0          0          0          0          0
>>> 0         MSP_CIC  Softreset button
>>>    9:          0          0          0          0          0          0
>>> 0         MSP_CIC  Standby switch
>>>   21:          0          0          0          0          0          0
>>> 0         MSP_CIC  MSP PER cascade
>>>   25:      15113        341          4          7          0          0
>>> 0         MSP_CIC  timer
>>>   27:        260          9          0          1          0          0
>>> 0         MSP_CIC  serial
>>>   34:          0          0          0          0          0          0
>>> 0         MSP_CIC  timer
>>>
>>> Can't we use separate timer interrupts for VPE1 and VPE0 in SMTC ?.
>>>
>>> I have tried setting up VPE1 timer from get_co_compare_int as follows
>>>
>>> unsigned int __cpuinit get_c0_compare_int(void)
>>> {
>>> 	if ((1==get_current_vpe())&&  !vpe1_timr_installed){
>>> 	
>>> 	memcpy(&timer_vpe1,&c0_compare_irqaction,sizeof(timer_vpe1));
>>> 	
>>> 	setup_irq(MSP_INT_VPE1_TIMER,&timer_vpe1);
>>>                    vpe1_timr_installed++;
>>>            }
>>>            return (get_current_vpe() ? MSP_INT_VPE1_TIMER :
>>> MSP_INT_VPE0_TIMER);
>>> }
>>>
>>> Thanks
>>> Anoop

  parent reply	other threads:[~2011-01-04 17:40 UTC|newest]

Thread overview: 68+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-12-16 15:37 SMTC support status in latest git head STUART VENTERS
2010-12-16 15:37 ` STUART VENTERS
     [not found] ` <4D0A677C.6040104@paralogos.com>
2010-12-16 19:58   ` Kevin D. Kissell
2010-12-17 21:35     ` Kevin D. Kissell
2010-12-20 10:44       ` Anoop P A
     [not found]         ` <4D10F7A9.1020306@paralogos.com>
2010-12-21 20:06           ` Anoop P.A.
2010-12-21 20:06             ` Anoop P.A.
2010-12-21 20:29             ` Anoop P.A.
2010-12-21 20:29               ` Anoop P.A.
2010-12-22 10:27               ` Kevin D. Kissell
2010-12-22 11:35                 ` Anoop P A
2010-12-22 11:37                   ` Kevin D. Kissell
2010-12-22 11:51                     ` Anoop P A
2010-12-22 13:03                       ` Kevin D. Kissell
2010-12-22 16:34                         ` STUART VENTERS
2010-12-22 16:34                           ` STUART VENTERS
2010-12-23 21:09                         ` STUART VENTERS
2010-12-23 21:09                           ` STUART VENTERS
2010-12-24 12:32                           ` Kevin D. Kissell
2010-12-24 14:39                             ` Anoop P A
2010-12-24 14:53                               ` Kevin D. Kissell
2010-12-24 16:02                                 ` Anoop P A
2010-12-24 23:34                                   ` Kevin D. Kissell
2010-12-25  7:32                                     ` Anoop P A
2010-12-25 15:17                                       ` Kevin D. Kissell
2010-12-27 15:49                                     ` STUART VENTERS
2010-12-27 15:49                                       ` STUART VENTERS
2010-12-27 17:19                                       ` Anoop P A
2010-12-28  8:19                                         ` Anoop P A
2010-12-28  8:43                                           ` Kevin D. Kissell
2010-12-31 12:27                                             ` Anoop P A
2011-01-01  8:42                                               ` Kevin D. Kissell
2011-01-03 15:12                                                 ` Anoop P A
2011-01-03 16:14                                                   ` Kevin D. Kissell
2011-01-03 19:20                                                     ` Anoop P A
2011-01-04  8:17                                                       ` Kevin D. Kissell
2011-01-04 13:02                                                         ` Anoop P A
2011-01-04 14:37                                                           ` Anoop P A
2011-01-04 17:21                                                             ` Kevin D. Kissell
2011-01-04 17:54                                                               ` Anoop P A
2011-01-04 18:33                                                                 ` Kevin D. Kissell
2011-01-05 13:11                                                                   ` Anoop P A
2011-01-05 19:23                                                                     ` Kevin D. Kissell
2011-01-06 20:23                                                                       ` Anoop P A
2011-01-06 23:31                                                                         ` Kevin D. Kissell
2011-01-07  7:56                                                                           ` Anoop P A
2011-01-07 18:46                                                                             ` Kevin D. Kissell
2011-01-08 19:33                                                                               ` Anoop P A
2011-01-10 19:30                                                                             ` Kevin D. Kissell
2011-01-11  4:05                                                                               ` Anoop P A
2011-01-13  7:53                                                                               ` Kevin D. Kissell
2011-01-04 17:40                                                           ` Kevin D. Kissell [this message]
2011-01-05 13:09                                                             ` Anoop P A
  -- strict thread matches above, loose matches on Subject: below --
2010-12-14 21:27 STUART VENTERS
2010-12-14 21:27 ` STUART VENTERS
2010-12-14 23:01 ` Kevin D. Kissell
2010-12-08 13:48 Anoop P.A.
2010-12-08 13:48 ` Anoop P.A.
2010-12-09 17:07 ` Ralf Baechle
2010-12-09 18:52 ` Kevin D. Kissell
2010-12-14 15:25   ` Anoop P.A.
2010-12-14 15:25     ` Anoop P.A.
2010-12-14 18:32     ` Kevin D. Kissell
2010-12-14 18:50       ` Ralf Baechle
2010-12-15 19:18       ` Anoop P A
2010-12-15 19:58         ` Kevin D. Kissell
2010-12-16 13:03           ` Anoop P A
2010-12-16 18:43             ` Kevin D. Kissell

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4D235B8D.2070306@paralogos.com \
    --to=kevink@paralogos.com \
    --cc=Anoop_P.A@pmc-sierra.com \
    --cc=anoop.pa@gmail.com \
    --cc=linux-mips@linux-mips.org \
    --cc=stuart.venters@adtran.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.