Thread (44 messages) 44 messages, 4 authors, 2016-02-16

Re: [PATCH v3 08/18] cxl: IRQ allocation for guests

From: Ian Munsie <hidden>
Date: 2016-02-10 07:24:57

Acked-by: Ian Munsie <redacted>
+    /*
+     * Look for the interrupt number.
+     * On bare-metal, we know the range 0 only contains the PSL
+     * interrupt so, we could start counting at range 1 and initialize
+     * afu_irq at 1.
+     * In a guest, range 0 also contains AFU interrupts, so it must
+     * be counted for, but we initialize afu_irq at 0 to take into
+     * account the PSL interrupt.
+     *
+     * For code-readability, it just seems easier to go over all
+     * the ranges.
+     */
Thanks for adding that explanation :)
+    if (cpu_has_feature(CPU_FTR_HVMODE))
+        alloc_count = count;
+    else
+        alloc_count = count + 1;
Almost a shame you can't reuse the afu_irq_range_start function you
defined for this, but doing so would probably make the code less
readable, so fine to leave this as is.
     /* We've allocated all memory now, so let's do the irq allocations */
     irq_name = list_first_entry(&ctx->irq_names, struct cxl_irq_name, list);
-    for (r = 1; r < CXL_IRQ_RANGES; r++) {
+    for (r = afu_irq_range_start(); r < CXL_IRQ_RANGES; r++) {
         hwirq = ctx->irqs.offset[r];
         for (i = 0; i < ctx->irqs.range[r]; hwirq++, i++) {
-            cxl_map_irq(ctx->afu->adapter, hwirq,
-                    cxl_irq_afu, ctx, irq_name->name);
+            if (r == 0 && i == 0)
+                /* PSL interrupt, only for guest */
That comment is perhaps not as clear as it could be - the interrupt is
used on either, but it's only allocated per context on PowerVM guests.

Cheers,
-Ian
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help