Hi Boris,
On 1/3/17 22:34, Boris Ostrovsky wrote:
+static int avic_handle_dfr_update(struct vcpu *v)
+{
+ u32 mod;
+ struct svm_domain *d = &v->domain->arch.hvm_domain.svm;
+ u32 *dfr = avic_get_bk_page_entry(v, APIC_DFR);
+
+ if ( !dfr )
+ return -EINVAL;
+
+ mod = (*dfr >> 28) & 0xFu;
+
+ spin_lock(&d->avic_ldr_mode_lock);
+ if ( d->avic_ldr_mode != mod )
+ {
+ /*
+ * We assume that all local APICs are using the same type.
+ * If LDR mode changes, we need to flush the domain AVIC logical
+ * APIC id table.
+ */
+ clear_domain_page(_mfn(d->avic_log_apic_id_table_mfn));
+ smp_wmb();
Is this needed? I think clear_page() guarantees visibility/ordering (we
have SFENCE in clear_page_sse2() for this reason).
-boris
Ah... Okay. Thanks for pointing out.
Suravee
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel