[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v8 1/9] x86/xpti: avoid copying L4 page table contents when possible
>>> On 18.04.18 at 10:30, <jgross@xxxxxxxx> wrote: > @@ -160,5 +161,20 @@ unsigned int flush_area_local(const void *va, unsigned > int flags) > > local_irq_restore(irqfl); > > + if ( flags & FLUSH_ROOT_PGTBL ) > + get_cpu_info()->root_pgt_changed = true; > + > return flags; > } > + > +void flush_root_pgt_mask(cpumask_t *mask) const > +{ > + int cpu; unsigned int > + struct cpu_info *cpu_info; Declaration in most narrow possible scope please. > + for_each_cpu(cpu, mask) > + { > + cpu_info = (struct cpu_info *)(stack_base[cpu] + STACK_SIZE) - 1; > + cpu_info->root_pgt_changed = true; > + } > +} So why is this not sending an IPI to trigger the FLUSH_ROOT_PGTBL processing visible above? Especially the cast you need here looks quite undesirable. Plus I think this is racy (even if quite unlikely to trigger) with a CPU being brought down: What if stack_base[cpu] becomes NULL after you've found the respective bit in mask set. Especially when Xen runs itself virtualized, (almost) arbitrarily long periods of time may pass between any two instructions. 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 |