All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Chen, Tiejun" <Tiejun.Chen@windriver.com>
To: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Bhushan Bharat-R65777 <R65777@freescale.com>,
	Caraman Mihai Claudiu-B02008 <B02008@freescale.com>,
	Wood Scott-B07421 <B07421@freescale.com>,
	"linuxppc-dev@lists.ozlabs.org" <linuxppc-dev@lists.ozlabs.org>,
	"agraf@suse.de" <agraf@suse.de>,
	"kvm-ppc@vger.kernel.org" <kvm-ppc@vger.kernel.org>,
	"kvm@vger.kernel.org" <kvm@vger.kernel.org>
Subject: RE: [RFC][KVM][PATCH 1/1] kvm:ppc:booke-64: soft-disable interrupts
Date: Thu, 9 May 2013 14:13:54 +0000	[thread overview]
Message-ID: <82C960D7DF4A1F47B94FC1C67A29BEE36694AC3C@ALA-MBB.corp.ad.wrs.com> (raw)
In-Reply-To: <1368103062.25488.193.camel@pasglop>

> -----Original Message-----
> From: Benjamin Herrenschmidt [mailto:benh@kernel.crashing.org] 
> Sent: Thursday, May 09, 2013 8:38 PM
> To: Chen, Tiejun
> Cc: Bhushan Bharat-R65777; Caraman Mihai Claudiu-B02008; Wood 
> Scott-B07421; linuxppc-dev@lists.ozlabs.org; agraf@suse.de; 
> kvm-ppc@vger.kernel.org; kvm@vger.kernel.org
> Subject: Re: [RFC][KVM][PATCH 1/1] kvm:ppc:booke-64: 
> soft-disable interrupts
> 
> On Thu, 2013-05-09 at 17:44 +0800, tiejun.chen wrote:
> > 
> > Actually in the case GS=1 even if EE=0, EXT/DEC/DBELL still 
> occur as I 
> > recall.
> 
> Only if directed to the hypervisor.

Yes, this is our current booehv design with EPCR[EXTGS] = 0.

> 
> > > Case 1)
> > >   -> Local_irq_disable()  will set soft_enabled = 0
> > >   -> Now Externel interrupt happens, there we set PACA_IRQ_EE in
> > irq_happened, Also clears EE in SRR1 and rfi. So interrupts 
> are hard 
> > disabled. No more other interrupt gated by MSR.EE can happen. Looks 
> > like the idea here is to not let a device keep on inserting 
> interrupt 
> > till the interrupt condition on device is cleared, right?
> 
> The external interrupt line is level sensitive normally, so 
> we have to mask MSR:EE in that case or the interrupt would 
> keep re-occurring (note that FSL has this concept of 
> auto-acked interrupts via the on die MPIC for which you can 
> potentially use PACA_IRQ_EE_EDGE instead and avoid having to 
> mask MSR:EE).
> 
> > I don't understand "the interrupt condition on device is cleared"
> > here.
> 
> Well, the external interrupt line will remain asserted until 
> the device (via the PIC) stops interrupting the processor :-) 

Yes, the device keeps on interrupting the interrupt until the device clear its interrupted condition.

> Either because we mask at the PIC level (or raise the 
> priority) or because the condition goes away.
>  
> > I think regardless if you clear the device interrupt status, the 
> > system still  receive a pending interrupt once EE or GS = 1.
> 
> Why ? Depends on your PIC actually but if it's a sane one, it 
> won't "remember" a level interrupt that is gone. An edge 
> interrupt is a different matter and is latched.

But the interrupt controller like MPIC should leave this irq as pending if we don't ACK/EOI this irq at all if we just clear the device, right?

> 
> Some MPIC implementations tend to generate a spurrious IRQ in 
> the case of level IRQs going away. IE. they still remember an 
> event occurred and interrupt the processor, but on IACK 
> return the spurious vector. However that isn't guaranteed to 

Yes, this is just what I mean. No matter if this vector is still valid, the external interrupt exception always occur once EE = 1 again.

> be the case and it is perfectly ok (and a good
> idea) for the PIC to just stop asserting the external 
> interrupt line if the original device interrupt goes away 
> (and it's configured as level sensitive).

I don't remember MPIC can work with this way. So I'd like to look the manual again :)

Tiejun

WARNING: multiple messages have this Message-ID (diff)
From: "Chen, Tiejun" <Tiejun.Chen@windriver.com>
To: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Caraman Mihai Claudiu-B02008 <B02008@freescale.com>,
	"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
	Wood Scott-B07421 <B07421@freescale.com>,
	"agraf@suse.de" <agraf@suse.de>,
	"kvm-ppc@vger.kernel.org" <kvm-ppc@vger.kernel.org>,
	Bhushan Bharat-R65777 <R65777@freescale.com>,
	"linuxppc-dev@lists.ozlabs.org" <linuxppc-dev@lists.ozlabs.org>
Subject: RE: [RFC][KVM][PATCH 1/1] kvm:ppc:booke-64: soft-disable interrupts
Date: Thu, 9 May 2013 14:13:54 +0000	[thread overview]
Message-ID: <82C960D7DF4A1F47B94FC1C67A29BEE36694AC3C@ALA-MBB.corp.ad.wrs.com> (raw)
In-Reply-To: <1368103062.25488.193.camel@pasglop>

> -----Original Message-----
> From: Benjamin Herrenschmidt [mailto:benh@kernel.crashing.org]=20
> Sent: Thursday, May 09, 2013 8:38 PM
> To: Chen, Tiejun
> Cc: Bhushan Bharat-R65777; Caraman Mihai Claudiu-B02008; Wood=20
> Scott-B07421; linuxppc-dev@lists.ozlabs.org; agraf@suse.de;=20
> kvm-ppc@vger.kernel.org; kvm@vger.kernel.org
> Subject: Re: [RFC][KVM][PATCH 1/1] kvm:ppc:booke-64:=20
> soft-disable interrupts
>=20
> On Thu, 2013-05-09 at 17:44 +0800, tiejun.chen wrote:
> >=20
> > Actually in the case GS=3D1 even if EE=3D0, EXT/DEC/DBELL still=20
> occur as I=20
> > recall.
>=20
> Only if directed to the hypervisor.

Yes, this is our current booehv design with EPCR[EXTGS] =3D 0.

>=20
> > > Case 1)
> > >   -> Local_irq_disable()  will set soft_enabled =3D 0
> > >   -> Now Externel interrupt happens, there we set PACA_IRQ_EE in
> > irq_happened, Also clears EE in SRR1 and rfi. So interrupts=20
> are hard=20
> > disabled. No more other interrupt gated by MSR.EE can happen. Looks=20
> > like the idea here is to not let a device keep on inserting=20
> interrupt=20
> > till the interrupt condition on device is cleared, right?
>=20
> The external interrupt line is level sensitive normally, so=20
> we have to mask MSR:EE in that case or the interrupt would=20
> keep re-occurring (note that FSL has this concept of=20
> auto-acked interrupts via the on die MPIC for which you can=20
> potentially use PACA_IRQ_EE_EDGE instead and avoid having to=20
> mask MSR:EE).
>=20
> > I don't understand "the interrupt condition on device is cleared"
> > here.
>=20
> Well, the external interrupt line will remain asserted until=20
> the device (via the PIC) stops interrupting the processor :-)=20

Yes, the device keeps on interrupting the interrupt until the device clear =
its interrupted condition.

> Either because we mask at the PIC level (or raise the=20
> priority) or because the condition goes away.
> =20
> > I think regardless if you clear the device interrupt status, the=20
> > system still  receive a pending interrupt once EE or GS =3D 1.
>=20
> Why ? Depends on your PIC actually but if it's a sane one, it=20
> won't "remember" a level interrupt that is gone. An edge=20
> interrupt is a different matter and is latched.

But the interrupt controller like MPIC should leave this irq as pending if =
we don't ACK/EOI this irq at all if we just clear the device, right?

>=20
> Some MPIC implementations tend to generate a spurrious IRQ in=20
> the case of level IRQs going away. IE. they still remember an=20
> event occurred and interrupt the processor, but on IACK=20
> return the spurious vector. However that isn't guaranteed to=20

Yes, this is just what I mean. No matter if this vector is still valid, the=
 external interrupt exception always occur once EE =3D 1 again.

> be the case and it is perfectly ok (and a good
> idea) for the PIC to just stop asserting the external=20
> interrupt line if the original device interrupt goes away=20
> (and it's configured as level sensitive).

I don't remember MPIC can work with this way. So I'd like to look the manua=
l again :)

Tiejun=

WARNING: multiple messages have this Message-ID (diff)
From: "Chen, Tiejun" <Tiejun.Chen@windriver.com>
To: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Bhushan Bharat-R65777 <R65777@freescale.com>,
	Caraman Mihai Claudiu-B02008 <B02008@freescale.com>,
	Wood Scott-B07421 <B07421@freescale.com>,
	"linuxppc-dev@lists.ozlabs.org" <linuxppc-dev@lists.ozlabs.org>,
	"agraf@suse.de" <agraf@suse.de>,
	"kvm-ppc@vger.kernel.org" <kvm-ppc@vger.kernel.org>,
	"kvm@vger.kernel.org" <kvm@vger.kernel.org>
Subject: RE: [RFC][KVM][PATCH 1/1] kvm:ppc:booke-64: soft-disable interrupts
Date: Thu, 09 May 2013 14:13:54 +0000	[thread overview]
Message-ID: <82C960D7DF4A1F47B94FC1C67A29BEE36694AC3C@ALA-MBB.corp.ad.wrs.com> (raw)
In-Reply-To: <1368103062.25488.193.camel@pasglop>

> -----Original Message-----
> From: Benjamin Herrenschmidt [mailto:benh@kernel.crashing.org] 
> Sent: Thursday, May 09, 2013 8:38 PM
> To: Chen, Tiejun
> Cc: Bhushan Bharat-R65777; Caraman Mihai Claudiu-B02008; Wood 
> Scott-B07421; linuxppc-dev@lists.ozlabs.org; agraf@suse.de; 
> kvm-ppc@vger.kernel.org; kvm@vger.kernel.org
> Subject: Re: [RFC][KVM][PATCH 1/1] kvm:ppc:booke-64: 
> soft-disable interrupts
> 
> On Thu, 2013-05-09 at 17:44 +0800, tiejun.chen wrote:
> > 
> > Actually in the case GS=1 even if EE=0, EXT/DEC/DBELL still 
> occur as I 
> > recall.
> 
> Only if directed to the hypervisor.

Yes, this is our current booehv design with EPCR[EXTGS] = 0.

> 
> > > Case 1)
> > >   -> Local_irq_disable()  will set soft_enabled = 0
> > >   -> Now Externel interrupt happens, there we set PACA_IRQ_EE in
> > irq_happened, Also clears EE in SRR1 and rfi. So interrupts 
> are hard 
> > disabled. No more other interrupt gated by MSR.EE can happen. Looks 
> > like the idea here is to not let a device keep on inserting 
> interrupt 
> > till the interrupt condition on device is cleared, right?
> 
> The external interrupt line is level sensitive normally, so 
> we have to mask MSR:EE in that case or the interrupt would 
> keep re-occurring (note that FSL has this concept of 
> auto-acked interrupts via the on die MPIC for which you can 
> potentially use PACA_IRQ_EE_EDGE instead and avoid having to 
> mask MSR:EE).
> 
> > I don't understand "the interrupt condition on device is cleared"
> > here.
> 
> Well, the external interrupt line will remain asserted until 
> the device (via the PIC) stops interrupting the processor :-) 

Yes, the device keeps on interrupting the interrupt until the device clear its interrupted condition.

> Either because we mask at the PIC level (or raise the 
> priority) or because the condition goes away.
>  
> > I think regardless if you clear the device interrupt status, the 
> > system still  receive a pending interrupt once EE or GS = 1.
> 
> Why ? Depends on your PIC actually but if it's a sane one, it 
> won't "remember" a level interrupt that is gone. An edge 
> interrupt is a different matter and is latched.

But the interrupt controller like MPIC should leave this irq as pending if we don't ACK/EOI this irq at all if we just clear the device, right?

> 
> Some MPIC implementations tend to generate a spurrious IRQ in 
> the case of level IRQs going away. IE. they still remember an 
> event occurred and interrupt the processor, but on IACK 
> return the spurious vector. However that isn't guaranteed to 

Yes, this is just what I mean. No matter if this vector is still valid, the external interrupt exception always occur once EE = 1 again.

> be the case and it is perfectly ok (and a good
> idea) for the PIC to just stop asserting the external 
> interrupt line if the original device interrupt goes away 
> (and it's configured as level sensitive).

I don't remember MPIC can work with this way. So I'd like to look the manual again :)

Tiejun

  parent reply	other threads:[~2013-05-09 14:13 UTC|newest]

Thread overview: 88+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-05-06  3:10 [RFC][KVM][PATCH 1/1] kvm:ppc:booke-64: soft-disable interrupts Tiejun Chen
2013-05-06  3:10 ` Tiejun Chen
2013-05-06  3:10 ` Tiejun Chen
2013-05-06  3:13 ` tiejun.chen
2013-05-06  3:13   ` tiejun.chen
2013-05-06  3:13   ` tiejun.chen
2013-05-06 23:50   ` Scott Wood
2013-05-06 23:50     ` Scott Wood
2013-05-07  1:56     ` tiejun.chen
2013-05-07  1:56       ` tiejun.chen
2013-05-07  1:56       ` tiejun.chen
2013-05-07  2:06       ` Scott Wood
2013-05-07  2:06         ` Scott Wood
2013-05-07  2:43         ` tiejun.chen
2013-05-07  2:43           ` tiejun.chen
2013-05-07  2:43           ` tiejun.chen
2013-05-07  3:04           ` Scott Wood
2013-05-07  3:04             ` Scott Wood
2013-05-08 13:14         ` Caraman Mihai Claudiu-B02008
2013-05-08 13:14           ` Caraman Mihai Claudiu-B02008
2013-05-09  7:33           ` Bhushan Bharat-R65777
2013-05-09  7:33             ` Bhushan Bharat-R65777
2013-05-09  7:47             ` tiejun.chen
2013-05-09  7:47               ` tiejun.chen
2013-05-09  7:47               ` tiejun.chen
2013-05-09  7:51               ` Bhushan Bharat-R65777
2013-05-09  7:51                 ` Bhushan Bharat-R65777
2013-05-09  8:04                 ` tiejun.chen
2013-05-09  8:04                   ` tiejun.chen
2013-05-09  8:04                   ` tiejun.chen
2013-05-09  8:08                 ` Kevin Hao
2013-05-09  8:08                   ` Kevin Hao
2013-05-09  8:08                   ` Kevin Hao
2013-05-09  8:12                   ` Bhushan Bharat-R65777
2013-05-09  8:12                     ` Bhushan Bharat-R65777
2013-05-09  8:17                     ` tiejun.chen
2013-05-09  8:17                       ` tiejun.chen
2013-05-09  8:17                       ` tiejun.chen
2013-05-09  8:26                       ` Bhushan Bharat-R65777
2013-05-09  8:26                         ` Bhushan Bharat-R65777
2013-05-09  8:21                     ` Kevin Hao
2013-05-09  8:21                       ` Kevin Hao
2013-05-09  8:21                       ` Kevin Hao
2013-05-09 12:26                       ` Benjamin Herrenschmidt
2013-05-09 12:26                         ` Benjamin Herrenschmidt
2013-05-09 12:26                         ` Benjamin Herrenschmidt
2013-05-09  8:23           ` Bhushan Bharat-R65777
2013-05-09  8:23             ` Bhushan Bharat-R65777
2013-05-09  9:44             ` tiejun.chen
2013-05-09  9:44               ` tiejun.chen
2013-05-09  9:44               ` tiejun.chen
2013-05-09 10:00               ` Bhushan Bharat-R65777
2013-05-09 10:00                 ` Bhushan Bharat-R65777
2013-05-09 10:18                 ` [RFC][PATCH " tiejun.chen
2013-05-09 10:18                   ` [RFC][KVM][PATCH " tiejun.chen
2013-05-09 10:18                   ` tiejun.chen
2013-05-09 11:21                   ` Bhushan Bharat-R65777
2013-05-09 11:21                     ` Bhushan Bharat-R65777
2013-05-09 11:35                     ` tiejun.chen
2013-05-09 11:35                       ` tiejun.chen
2013-05-09 11:35                       ` tiejun.chen
2013-05-09 12:37               ` [RFC][PATCH " Benjamin Herrenschmidt
2013-05-09 12:37                 ` [RFC][KVM][PATCH " Benjamin Herrenschmidt
2013-05-09 12:37                 ` Benjamin Herrenschmidt
2013-05-09 13:28                 ` David Laight
2013-05-09 13:28                   ` David Laight
2013-05-09 13:28                   ` David Laight
2013-05-09 22:01                   ` Benjamin Herrenschmidt
2013-05-09 22:01                     ` Benjamin Herrenschmidt
2013-05-09 22:01                     ` Benjamin Herrenschmidt
2013-05-09 14:13                 ` Chen, Tiejun [this message]
2013-05-09 14:13                   ` Chen, Tiejun
2013-05-09 14:13                   ` Chen, Tiejun
2013-05-09 21:27                 ` Scott Wood
2013-05-09 21:27                   ` Scott Wood
2013-05-09 22:07                   ` [RFC][PATCH " Benjamin Herrenschmidt
2013-05-09 22:07                     ` [RFC][KVM][PATCH " Benjamin Herrenschmidt
2013-05-09 22:07                     ` Benjamin Herrenschmidt
2013-05-09 22:13                     ` Scott Wood
2013-05-09 22:13                       ` Scott Wood
2013-05-10 14:12                     ` Kevin Hao
2013-05-10 14:12                       ` Kevin Hao
2013-05-10 14:12                       ` Kevin Hao
2013-05-10 21:49                       ` Benjamin Herrenschmidt
2013-05-10 21:49                         ` Benjamin Herrenschmidt
2013-05-10 21:49                         ` Benjamin Herrenschmidt
2013-05-10 21:50                         ` Benjamin Herrenschmidt
2013-05-10 21:50                           ` Benjamin Herrenschmidt

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=82C960D7DF4A1F47B94FC1C67A29BEE36694AC3C@ALA-MBB.corp.ad.wrs.com \
    --to=tiejun.chen@windriver.com \
    --cc=B02008@freescale.com \
    --cc=B07421@freescale.com \
    --cc=R65777@freescale.com \
    --cc=agraf@suse.de \
    --cc=benh@kernel.crashing.org \
    --cc=kvm-ppc@vger.kernel.org \
    --cc=kvm@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    /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.