linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] xen/pv: Add PV specific legacy_pic struct to expose legacy IRQs.
@ 2019-03-19 20:02 Jennifer Herbert
  2019-03-19 23:06 ` Boris Ostrovsky
  0 siblings, 1 reply; 6+ messages in thread
From: Jennifer Herbert @ 2019-03-19 20:02 UTC (permalink / raw)
  To: x86, xen-devel, linux-kernel
  Cc: Jennifer Herbert, Boris Ostrovsky, Juergen Gross,
	Stefano Stabellini, Thomas Gleixner, Ingo Molnar,
	Borislav Petkov, H. Peter Anvin

The ACPI tables doesn't always contain all IRQs for legacy devices
such as RTC.  Since no PIC controller is visible for a PV linux guest,
under Xen, legacy_pic currently defaults to the null_legacy_pic - with
reports no legacy IRQs.  Since the commit "rtc: cmos: Do not assume
irq 8 for rtc when there are no legacy irqs" by Hans de Goede
(commit id: a1e23a42f1bdc00e32fc4869caef12e4e6272f26), the rtc now
incorrectly decides it has no irq it can use, for some hardware.

This patch rectifies the problem by providing a xen legacy_pic
struct, which is much like the null_legacy_pic except that it
reports NR_IRQS_LEGACY irqs.

Signed-off-by: Jennifer Herbert <jennifer.herbert@citrix.com>
---
 arch/x86/xen/enlighten_pv.c | 39 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)

diff --git a/arch/x86/xen/enlighten_pv.c b/arch/x86/xen/enlighten_pv.c
index c54a493..7644bdf 100644
--- a/arch/x86/xen/enlighten_pv.c
+++ b/arch/x86/xen/enlighten_pv.c
@@ -33,6 +33,7 @@
 #include <linux/gfp.h>
 #include <linux/edd.h>
 #include <linux/frame.h>
+#include <linux/irq.h>
 
 #include <xen/xen.h>
 #include <xen/events.h>
@@ -49,6 +50,7 @@
 #include <xen/acpi.h>
 
 #include <asm/paravirt.h>
+#include <asm/i8259.h>
 #include <asm/apic.h>
 #include <asm/page.h>
 #include <asm/xen/pci.h>
@@ -1188,6 +1190,41 @@ static void __init xen_dom0_set_legacy_features(void)
 	x86_platform.legacy.rtc = 1;
 }
 
+/*
+ * The ACPI tables doesn't always contain all IRQ's for legacy devices
+ * such as RTC.  Since no PIC controller is visible, we'd otherwise
+ * default to the null_legacy_pic - with no legacy IRQs.  To allow drivers
+ * to use these IRQs despite this, provide a xen specific legacy_pic
+ * structure, which is noop, other then reporting NR_IRQS_LEGACY irqs.
+ */
+
+static void xen_legacy_pic_noop(void) { };
+static void xen_legacy_pic_uint_noop(unsigned int unused) { };
+static void xen_legacy_pic_int_noop(int unused) { };
+static int xen_legacy_pic_irq_pending_noop(unsigned int irq)
+{
+	return 0;
+}
+
+static int xen_legacy_pic_probe(void)
+{
+	pr_info("Using Xen legacy PIC\n");
+	return nr_legacy_irqs();
+}
+
+struct legacy_pic xen_legacy_pic = {
+	.nr_legacy_irqs = NR_IRQS_LEGACY,
+	.chip = &dummy_irq_chip,
+	.mask = xen_legacy_pic_uint_noop,
+	.unmask = xen_legacy_pic_uint_noop,
+	.mask_all = xen_legacy_pic_noop,
+	.restore_mask = xen_legacy_pic_noop,
+	.init = xen_legacy_pic_int_noop,
+	.probe = xen_legacy_pic_probe,
+	.irq_pending = xen_legacy_pic_irq_pending_noop,
+	.make_irq = xen_legacy_pic_uint_noop,
+};
+
 /* First C function to be called on Xen boot */
 asmlinkage __visible void __init xen_start_kernel(void)
 {
@@ -1267,6 +1304,8 @@ asmlinkage __visible void __init xen_start_kernel(void)
 
 	xen_init_capabilities();
 
+	legacy_pic = &xen_legacy_pic;
+
 #ifdef CONFIG_X86_LOCAL_APIC
 	/*
 	 * set up the basic apic ops.
-- 
1.8.3.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH] xen/pv: Add PV specific legacy_pic struct to expose legacy IRQs.
  2019-03-19 20:02 [PATCH] xen/pv: Add PV specific legacy_pic struct to expose legacy IRQs Jennifer Herbert
@ 2019-03-19 23:06 ` Boris Ostrovsky
  2019-03-21 17:49   ` Jennifer Herbert
  0 siblings, 1 reply; 6+ messages in thread
From: Boris Ostrovsky @ 2019-03-19 23:06 UTC (permalink / raw)
  To: Jennifer Herbert, x86, xen-devel, linux-kernel
  Cc: Juergen Gross, Stefano Stabellini, Thomas Gleixner, Ingo Molnar,
	Borislav Petkov, H. Peter Anvin

On 3/19/19 4:02 PM, Jennifer Herbert wrote:
> The ACPI tables doesn't always contain all IRQs for legacy devices
> such as RTC.  Since no PIC controller is visible for a PV linux guest,
> under Xen, legacy_pic currently defaults to the null_legacy_pic - with
> reports no legacy IRQs.  Since the commit "rtc: cmos: Do not assume
> irq 8 for rtc when there are no legacy irqs" by Hans de Goede
> (commit id: a1e23a42f1bdc00e32fc4869caef12e4e6272f26), the rtc now
> incorrectly decides it has no irq it can use, for some hardware.
>
> This patch rectifies the problem by providing a xen legacy_pic
> struct, which is much like the null_legacy_pic except that it
> reports NR_IRQS_LEGACY irqs.

I assume this is for dom0?

Could there be the same problem with PVH dom0? (and if yes then this
should probably go into arch/x86/xen/enlighten.c).

-boris


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] xen/pv: Add PV specific legacy_pic struct to expose legacy IRQs.
  2019-03-19 23:06 ` Boris Ostrovsky
@ 2019-03-21 17:49   ` Jennifer Herbert
  2019-03-25 14:23     ` [Xen-devel] " Jennifer Herbert
  0 siblings, 1 reply; 6+ messages in thread
From: Jennifer Herbert @ 2019-03-21 17:49 UTC (permalink / raw)
  To: Boris Ostrovsky, x86, xen-devel, linux-kernel
  Cc: Juergen Gross, Stefano Stabellini, Thomas Gleixner, Ingo Molnar,
	Borislav Petkov, H. Peter Anvin



On 19/03/19 23:06, Boris Ostrovsky wrote:
> On 3/19/19 4:02 PM, Jennifer Herbert wrote:
>> The ACPI tables doesn't always contain all IRQs for legacy devices
>> such as RTC.  Since no PIC controller is visible for a PV linux guest,
>> under Xen, legacy_pic currently defaults to the null_legacy_pic - with
>> reports no legacy IRQs.  Since the commit "rtc: cmos: Do not assume
>> irq 8 for rtc when there are no legacy irqs" by Hans de Goede
>> (commit id: a1e23a42f1bdc00e32fc4869caef12e4e6272f26), the rtc now
>> incorrectly decides it has no irq it can use, for some hardware.
>>
>> This patch rectifies the problem by providing a xen legacy_pic
>> struct, which is much like the null_legacy_pic except that it
>> reports NR_IRQS_LEGACY irqs.
> I assume this is for dom0?
>
> Could there be the same problem with PVH dom0? (and if yes then this
> should probably go into arch/x86/xen/enlighten.c).
>
> -boris
>

I am doing this to fix a problem with dom0.  DomU doesn't seem to have 
an RTC, and so it is unaffected.

I'm not familiar with PVH, but have now done some experiments.  The RTC 
on PVH seems broken - but not quite in the same way as PV. More research 
is needed, however simply doing the same trick I did with PV will not 
fix the issue.

I'll look further into it.

Cheer,

-jenny


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Xen-devel] [PATCH] xen/pv: Add PV specific legacy_pic struct to expose legacy IRQs.
  2019-03-21 17:49   ` Jennifer Herbert
@ 2019-03-25 14:23     ` Jennifer Herbert
  2019-03-25 14:40       ` Paul Durrant
  0 siblings, 1 reply; 6+ messages in thread
From: Jennifer Herbert @ 2019-03-25 14:23 UTC (permalink / raw)
  To: Boris Ostrovsky, x86, xen-devel, linux-kernel
  Cc: Juergen Gross, Stefano Stabellini, Ingo Molnar, Borislav Petkov,
	H. Peter Anvin, Thomas Gleixner



On 21/03/19 17:49, Jennifer Herbert wrote:
>
>
> On 19/03/19 23:06, Boris Ostrovsky wrote:
>> On 3/19/19 4:02 PM, Jennifer Herbert wrote:
>>> The ACPI tables doesn't always contain all IRQs for legacy devices
>>> such as RTC.  Since no PIC controller is visible for a PV linux guest,
>>> under Xen, legacy_pic currently defaults to the null_legacy_pic - with
>>> reports no legacy IRQs.  Since the commit "rtc: cmos: Do not assume
>>> irq 8 for rtc when there are no legacy irqs" by Hans de Goede
>>> (commit id: a1e23a42f1bdc00e32fc4869caef12e4e6272f26), the rtc now
>>> incorrectly decides it has no irq it can use, for some hardware.
>>>
>>> This patch rectifies the problem by providing a xen legacy_pic
>>> struct, which is much like the null_legacy_pic except that it
>>> reports NR_IRQS_LEGACY irqs.
>> I assume this is for dom0?
>>
>> Could there be the same problem with PVH dom0? (and if yes then this
>> should probably go into arch/x86/xen/enlighten.c).
>>
>> -boris
>>
>
> I am doing this to fix a problem with dom0.  DomU doesn't seem to have 
> an RTC, and so it is unaffected.
>
> I'm not familiar with PVH, but have now done some experiments. The RTC 
> on PVH seems broken - but not quite in the same way as PV. More 
> research is needed, however simply doing the same trick I did with PV 
> will not fix the issue.
>
> I'll look further into it.
>

The same problem does exist with PVH - however its worse with the 
presence of the IO-APIC, as with my patch it tries to set up with IRQ, 
and fails.  I'm not sure how would be best to deal with this.
However, the RTC seems broken even for machines without the ACPI omission.
I can see fixing it for just PV doesn't seem too nice, but unsure how to 
fix this for PVH.  I'm open to suggestions, but otherwise I'll put this 
on hold.




^ permalink raw reply	[flat|nested] 6+ messages in thread

* RE: [Xen-devel] [PATCH] xen/pv: Add PV specific legacy_pic struct to expose legacy IRQs.
  2019-03-25 14:23     ` [Xen-devel] " Jennifer Herbert
@ 2019-03-25 14:40       ` Paul Durrant
  2019-03-27 15:02         ` Boris Ostrovsky
  0 siblings, 1 reply; 6+ messages in thread
From: Paul Durrant @ 2019-03-25 14:40 UTC (permalink / raw)
  To: Jennifer Herbert, Boris Ostrovsky, x86, xen-devel, linux-kernel
  Cc: Juergen Gross, Stefano Stabellini, Ingo Molnar, Borislav Petkov,
	H. Peter Anvin, Thomas Gleixner

> -----Original Message-----
> From: Xen-devel [mailto:xen-devel-bounces@lists.xenproject.org] On Behalf Of Jennifer Herbert
> Sent: 25 March 2019 14:24
> To: Boris Ostrovsky <boris.ostrovsky@oracle.com>; x86@kernel.org; xen-devel@lists.xenproject.org;
> linux-kernel@vger.kernel.org
> Cc: Juergen Gross <jgross@suse.com>; Stefano Stabellini <sstabellini@kernel.org>; Ingo Molnar
> <mingo@redhat.com>; Borislav Petkov <bp@alien8.de>; H. Peter Anvin <hpa@zytor.com>; Thomas Gleixner
> <tglx@linutronix.de>
> Subject: Re: [Xen-devel] [PATCH] xen/pv: Add PV specific legacy_pic struct to expose legacy IRQs.
> 
> 
> 
> On 21/03/19 17:49, Jennifer Herbert wrote:
> >
> >
> > On 19/03/19 23:06, Boris Ostrovsky wrote:
> >> On 3/19/19 4:02 PM, Jennifer Herbert wrote:
> >>> The ACPI tables doesn't always contain all IRQs for legacy devices
> >>> such as RTC.  Since no PIC controller is visible for a PV linux guest,
> >>> under Xen, legacy_pic currently defaults to the null_legacy_pic - with
> >>> reports no legacy IRQs.  Since the commit "rtc: cmos: Do not assume
> >>> irq 8 for rtc when there are no legacy irqs" by Hans de Goede
> >>> (commit id: a1e23a42f1bdc00e32fc4869caef12e4e6272f26), the rtc now
> >>> incorrectly decides it has no irq it can use, for some hardware.
> >>>
> >>> This patch rectifies the problem by providing a xen legacy_pic
> >>> struct, which is much like the null_legacy_pic except that it
> >>> reports NR_IRQS_LEGACY irqs.
> >> I assume this is for dom0?
> >>
> >> Could there be the same problem with PVH dom0? (and if yes then this
> >> should probably go into arch/x86/xen/enlighten.c).
> >>
> >> -boris
> >>
> >
> > I am doing this to fix a problem with dom0.  DomU doesn't seem to have
> > an RTC, and so it is unaffected.
> >
> > I'm not familiar with PVH, but have now done some experiments. The RTC
> > on PVH seems broken - but not quite in the same way as PV. More
> > research is needed, however simply doing the same trick I did with PV
> > will not fix the issue.
> >
> > I'll look further into it.
> >
> 
> The same problem does exist with PVH - however its worse with the
> presence of the IO-APIC, as with my patch it tries to set up with IRQ,
> and fails.  I'm not sure how would be best to deal with this.
> However, the RTC seems broken even for machines without the ACPI omission.
> I can see fixing it for just PV doesn't seem too nice, but unsure how to
> fix this for PVH.  I'm open to suggestions, but otherwise I'll put this
> on hold.

AFAICT from the code in libxl__arch_domain_prepare_config(), PVH domains don't get an RTC, just a local APIC.

  Paul 

> 
> 
> 
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xenproject.org
> https://lists.xenproject.org/mailman/listinfo/xen-devel

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Xen-devel] [PATCH] xen/pv: Add PV specific legacy_pic struct to expose legacy IRQs.
  2019-03-25 14:40       ` Paul Durrant
@ 2019-03-27 15:02         ` Boris Ostrovsky
  0 siblings, 0 replies; 6+ messages in thread
From: Boris Ostrovsky @ 2019-03-27 15:02 UTC (permalink / raw)
  To: Paul Durrant, Jennifer Herbert, x86, xen-devel, linux-kernel
  Cc: Juergen Gross, Stefano Stabellini, Ingo Molnar, Borislav Petkov,
	H. Peter Anvin, Thomas Gleixner, Roger Pau Monné

On 3/25/19 10:40 AM, Paul Durrant wrote:
>> -----Original Message-----
>> From: Xen-devel [mailto:xen-devel-bounces@lists.xenproject.org] On Behalf Of Jennifer Herbert
>> Sent: 25 March 2019 14:24
>> To: Boris Ostrovsky <boris.ostrovsky@oracle.com>; x86@kernel.org; xen-devel@lists.xenproject.org;
>> linux-kernel@vger.kernel.org
>> Cc: Juergen Gross <jgross@suse.com>; Stefano Stabellini <sstabellini@kernel.org>; Ingo Molnar
>> <mingo@redhat.com>; Borislav Petkov <bp@alien8.de>; H. Peter Anvin <hpa@zytor.com>; Thomas Gleixner
>> <tglx@linutronix.de>
>> Subject: Re: [Xen-devel] [PATCH] xen/pv: Add PV specific legacy_pic struct to expose legacy IRQs.
>>
>>
>>
>> On 21/03/19 17:49, Jennifer Herbert wrote:
>>>
>>> On 19/03/19 23:06, Boris Ostrovsky wrote:
>>>> On 3/19/19 4:02 PM, Jennifer Herbert wrote:
>>>>> The ACPI tables doesn't always contain all IRQs for legacy devices
>>>>> such as RTC.  Since no PIC controller is visible for a PV linux guest,
>>>>> under Xen, legacy_pic currently defaults to the null_legacy_pic - with
>>>>> reports no legacy IRQs.  Since the commit "rtc: cmos: Do not assume
>>>>> irq 8 for rtc when there are no legacy irqs" by Hans de Goede
>>>>> (commit id: a1e23a42f1bdc00e32fc4869caef12e4e6272f26), the rtc now
>>>>> incorrectly decides it has no irq it can use, for some hardware.
>>>>>
>>>>> This patch rectifies the problem by providing a xen legacy_pic
>>>>> struct, which is much like the null_legacy_pic except that it
>>>>> reports NR_IRQS_LEGACY irqs.
>>>> I assume this is for dom0?
>>>>
>>>> Could there be the same problem with PVH dom0? (and if yes then this
>>>> should probably go into arch/x86/xen/enlighten.c).
>>>>
>>>> -boris
>>>>
>>> I am doing this to fix a problem with dom0.  DomU doesn't seem to have
>>> an RTC, and so it is unaffected.
>>>
>>> I'm not familiar with PVH, but have now done some experiments. The RTC
>>> on PVH seems broken - but not quite in the same way as PV. More
>>> research is needed, however simply doing the same trick I did with PV
>>> will not fix the issue.
>>>
>>> I'll look further into it.
>>>
>> The same problem does exist with PVH - however its worse with the
>> presence of the IO-APIC, as with my patch it tries to set up with IRQ,
>> and fails.  I'm not sure how would be best to deal with this.
>> However, the RTC seems broken even for machines without the ACPI omission.
>> I can see fixing it for just PV doesn't seem too nice, but unsure how to
>> fix this for PVH.  I'm open to suggestions, but otherwise I'll put this
>> on hold.
> AFAICT from the code in libxl__arch_domain_prepare_config(), PVH domains don't get an RTC, just a local APIC.
>


That's true for domU but not for PVH dom0 I believe. Roger?

-boris

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2019-03-27 14:57 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-03-19 20:02 [PATCH] xen/pv: Add PV specific legacy_pic struct to expose legacy IRQs Jennifer Herbert
2019-03-19 23:06 ` Boris Ostrovsky
2019-03-21 17:49   ` Jennifer Herbert
2019-03-25 14:23     ` [Xen-devel] " Jennifer Herbert
2019-03-25 14:40       ` Paul Durrant
2019-03-27 15:02         ` Boris Ostrovsky

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).