Message ID | 20170805170241.22966-9-npiggin@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
On Sun, 2017-08-06 at 03:02 +1000, Nicholas Piggin wrote: > HVI interrupts have always used 0x500, so remove the dead branch. Maybe we should fix that and "catch" in incorrect entry via 0x500 which would mean the XIVE is trying to deliver guest irqs to the OS... That can happen if some LPCR bits aren't set properly and/or KVM doesn't pull the guest in time. I had bugs like that in my early dev so I've been running with a b . at 0x500 for a while :-) > Signed-off-by: Nicholas Piggin <npiggin@gmail.com> > --- > arch/powerpc/kernel/exceptions-64s.S | 2 -- > 1 file changed, 2 deletions(-) > > diff --git a/arch/powerpc/kernel/exceptions-64s.S b/arch/powerpc/kernel/exceptions-64s.S > index 29253cecf713..566cf126c13b 100644 > --- a/arch/powerpc/kernel/exceptions-64s.S > +++ b/arch/powerpc/kernel/exceptions-64s.S > @@ -1680,8 +1680,6 @@ ALT_FTR_SECTION_END_IFSET(CPU_FTR_HVMODE | CPU_FTR_ARCH_300) > BEGIN_FTR_SECTION > cmpwi r3,0xa00 > beq h_doorbell_common_msgclr > - cmpwi r3,0xea0 > - beq h_virt_irq_common > cmpwi r3,0xe60 > beq hmi_exception_common > FTR_SECTION_ELSE
On Sun, 06 Aug 2017 09:00:32 +1000 Benjamin Herrenschmidt <benh@au1.ibm.com> wrote: > On Sun, 2017-08-06 at 03:02 +1000, Nicholas Piggin wrote: > > HVI interrupts have always used 0x500, so remove the dead branch. > > Maybe we should fix that and "catch" in incorrect entry via 0x500 > which would mean the XIVE is trying to deliver guest irqs to the OS... I should be more clear, when I say 0x500, it is only in reference to the constant used by the soft-irq replay. After patch 6 the replay is sent to the 0xea0 common handler. > That can happen if some LPCR bits aren't set properly and/or KVM > doesn't pull the guest in time. I had bugs like that in my early > dev so I've been running with a b . at 0x500 for a while :-) So that's a separate issue of hardware actually doing a 0x500. I had this http://patchwork.ozlabs.org/patch/750033/ > > > Signed-off-by: Nicholas Piggin <npiggin@gmail.com> > > --- > > arch/powerpc/kernel/exceptions-64s.S | 2 -- > > 1 file changed, 2 deletions(-) > > > > diff --git a/arch/powerpc/kernel/exceptions-64s.S b/arch/powerpc/kernel/exceptions-64s.S > > index 29253cecf713..566cf126c13b 100644 > > --- a/arch/powerpc/kernel/exceptions-64s.S > > +++ b/arch/powerpc/kernel/exceptions-64s.S > > @@ -1680,8 +1680,6 @@ ALT_FTR_SECTION_END_IFSET(CPU_FTR_HVMODE | CPU_FTR_ARCH_300) > > BEGIN_FTR_SECTION > > cmpwi r3,0xa00 > > beq h_doorbell_common_msgclr > > - cmpwi r3,0xea0 > > - beq h_virt_irq_common > > cmpwi r3,0xe60 > > beq hmi_exception_common > > FTR_SECTION_ELSE >
Nicholas Piggin <npiggin@gmail.com> writes: > On Sun, 06 Aug 2017 09:00:32 +1000 > Benjamin Herrenschmidt <benh@au1.ibm.com> wrote: > >> On Sun, 2017-08-06 at 03:02 +1000, Nicholas Piggin wrote: >> > HVI interrupts have always used 0x500, so remove the dead branch. >> >> Maybe we should fix that and "catch" in incorrect entry via 0x500 >> which would mean the XIVE is trying to deliver guest irqs to the OS... > > I should be more clear, when I say 0x500, it is only in reference to > the constant used by the soft-irq replay. After patch 6 the replay is > sent to the 0xea0 common handler. > >> That can happen if some LPCR bits aren't set properly and/or KVM >> doesn't pull the guest in time. I had bugs like that in my early >> dev so I've been running with a b . at 0x500 for a while :-) > > So that's a separate issue of hardware actually doing a 0x500. I > had this > > http://patchwork.ozlabs.org/patch/750033/ Hmm, yeah I was going to merge that. But I got side tracked by HVICE, ie. the "interrupts don't go to 0x500" is only true if we set HVICE. Which we currently always do, in __setup_cpu_power9(), but then we have a DT CPU feature for it, so we really shouldn't be always enabling HVICE, we should leave it up to the DT CPU feature code. And then it becomes controlled by the device tree, which makes your patch potentially wrong depending on the device tree CPU features. Ugh. cheers
diff --git a/arch/powerpc/kernel/exceptions-64s.S b/arch/powerpc/kernel/exceptions-64s.S index 29253cecf713..566cf126c13b 100644 --- a/arch/powerpc/kernel/exceptions-64s.S +++ b/arch/powerpc/kernel/exceptions-64s.S @@ -1680,8 +1680,6 @@ ALT_FTR_SECTION_END_IFSET(CPU_FTR_HVMODE | CPU_FTR_ARCH_300) BEGIN_FTR_SECTION cmpwi r3,0xa00 beq h_doorbell_common_msgclr - cmpwi r3,0xea0 - beq h_virt_irq_common cmpwi r3,0xe60 beq hmi_exception_common FTR_SECTION_ELSE
HVI interrupts have always used 0x500, so remove the dead branch. Signed-off-by: Nicholas Piggin <npiggin@gmail.com> --- arch/powerpc/kernel/exceptions-64s.S | 2 -- 1 file changed, 2 deletions(-)