On 29/04/2019 11:52, Amit Tomer wrote:
Hello,

Hi,


The proper way is to detect PPI before hand and completely skip the node if any.

I tried the following change:

diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
index d983677..a9ecfed 100644
--- a/xen/arch/arm/domain_build.c
+++ b/xen/arch/arm/domain_build.c
@@ -1353,7 +1353,7 @@ static int __init handle_node(struct domain *d,
struct kernel_info *kinfo,
          { /* sentinel */ },
      };
      struct dt_device_node *child;
-    int res;
+    int res, irq_id;
      const char *name;
      const char *path;

@@ -1399,6 +1399,16 @@ static int __init handle_node(struct domain *d,
struct kernel_info *kinfo,
          return 0;
      }

+    /*Skip the node, using PPI source */
+    irq_id = platform_get_irq(node, 0);

That's only cover the first interrupt of a device. What if the first interrupt is an SPI but all the other are actually PPIs?

In order to black all devices using PPI, we need to go through *all* the interrupts of the device. Otherwise you will miss some.

Cheers,

--
Julien Grall

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

Reply via email to