[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v10 11/20] x86/VPMU: Interface for setting PMU mode and flags



On 09/19/2014 02:51 AM, Jan Beulich wrote:
On 18.09.14 at 23:50, <boris.ostrovsky@xxxxxxxxxx> wrote:
On 09/18/2014 12:11 AM, Tian, Kevin wrote:
From: Boris Ostrovsky [mailto:boris.ostrovsky@xxxxxxxxxx]
+{
+    unsigned i, j, allbutself_num, tasknum, mycpu;
+    static s_time_t start;
+    static struct tasklet **sync_task;
+    struct vcpu *curr_vcpu = current;
+    static struct vcpu *sync_vcpu;
+    int ret = 0;
+
+    tasknum = allbutself_num = num_online_cpus() - 1;
+
+    if ( sync_task ) /* if set, we are in hypercall continuation */
+    {
+        if ( (sync_vcpu != NULL) && (sync_vcpu != curr_vcpu) )
+            /* We are not the original caller */
+            return -EAGAIN;
I assume hypercall continuation will happen on original vcpu context. Under
which situation the hypercall will be continued on a different vcpu? If yes,
would it be an unbounded situation where you may wait unexpected time
to have sync_vcpu==curr_vcpu?
The continuation call is gone in v11. If we are stuck waiting for more
than 5 seconds we'll simply return -EAGAIN and have the caller retry.
That reads wrong, but I'd of course have to see whether the just
wording above is incorrectly reflecting the code changes you did.

The only thing that I can think of that I didn't mention is hypercall_preempt_check() to bail out earlier than 5 seconds. Is that what you are missing in my reply? Otherwise I don't know what else is wrong.

-boris

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.