[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 06/12] x86/IRQ: consolidate use of ->arch.cpu_mask
>>> On 13.05.19 at 13:32, <roger.pau@xxxxxxxxxx> wrote: > On Wed, May 08, 2019 at 07:10:29AM -0600, Jan Beulich wrote: >> --- a/xen/arch/x86/io_apic.c >> +++ b/xen/arch/x86/io_apic.c >> @@ -680,7 +680,7 @@ void /*__init*/ setup_ioapic_dest(void) >> continue; >> irq = pin_2_irq(irq_entry, ioapic, pin); >> desc = irq_to_desc(irq); >> - BUG_ON(cpumask_empty(desc->arch.cpu_mask)); >> + BUG_ON(!cpumask_intersects(desc->arch.cpu_mask, >> &cpu_online_map)); > > I wonder if maybe you could instead do: > > if ( cpumask_intersects(desc->arch.cpu_mask, &cpu_online_map) ) > set_ioapic_affinity_irq(desc, desc->arch.cpu_mask); > else > ASSERT_UNREACHABLE(); > > I guess if the IRQ is in use by Xen itself the failure ought to be > fatal. And imo also when it's another one (used by Dom0). Iirc we get here only during Dom0 boot (the commented out __init serving as a hint). Hence I think BUG_ON() is better in this case than any for of assertion. >> @@ -2232,11 +2231,17 @@ int io_apic_set_pci_routing (int ioapic, >> return vector; >> entry.vector = vector; >> >> - cpumask_copy(&mask, TARGET_CPUS); >> - /* Don't chance ending up with an empty mask. */ >> - if (cpumask_intersects(&mask, desc->arch.cpu_mask)) >> - cpumask_and(&mask, &mask, desc->arch.cpu_mask); >> - SET_DEST(entry, logical, cpu_mask_to_apicid(&mask)); >> + if (cpumask_intersects(desc->arch.cpu_mask, TARGET_CPUS)) { >> + cpumask_t *mask = this_cpu(scratch_cpumask); >> + >> + cpumask_and(mask, desc->arch.cpu_mask, TARGET_CPUS); >> + SET_DEST(entry, logical, cpu_mask_to_apicid(mask)); >> + } else { >> + printk(XENLOG_ERR "IRQ%d: no target CPU (%*pb vs %*pb)\n", >> + irq, nr_cpu_ids, cpumask_bits(desc->arch.cpu_mask), >> + nr_cpu_ids, cpumask_bits(TARGET_CPUS)); >> + desc->status |= IRQ_DISABLED; >> + } > > Hm, part of this file doesn't seem to use Xen coding style, but the > chunk you add below does use it. And there are functions (like > mask_and_ack_level_ioapic_irq that seem to use a mix of coding > styles). > > I'm not sure what's the policy here, should new chunks follow Xen's > coding style? Well, I've decided to match surrounding code's style, until the file gets morphed into consistent shape. Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |