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

Re: [Xen-devel] [RFC PATCH v2 13/22] xen/arm: its: Add virtual ITS command support



Hello Vijay,

More questions/remarks about command processing.

On 19/03/2015 14:38, vijay.kilari@xxxxxxxxx wrote:
+int vgic_its_process_cmd(struct vcpu *v, struct vgic_its *vits)
+{
+    struct its_cmd_block virt_cmd;
+
+    /* XXX: Currently we are processing one cmd at a time */
+    ASSERT(spin_is_locked(&vits->lock));
+
+    do {
+        if ( vgic_its_read_virt_cmd(v, vits, &virt_cmd) )
+            goto err;
+        if ( vgic_its_parse_its_command(v, vits, &virt_cmd) )
+            goto err;
+    } while ( vits->cmd_write != vits->cmd_write_save );
+
+    vits->cmd_write_save = vits->cmd_write;
+    DPRINTK("vITS: write_save 0x%lx write 0x%lx \n",
+            vits->cmd_write_save,
+            vits->cmd_write);
+    /* XXX: Currently we are processing one cmd at a time */
+    vgic_its_update_read_ptr(v, vits);

From the spec the GITS_CREADR should be updated at every command processing. That would make cmd_write_save pointless.

Also, you are taking the VITS lock for the whole process. This process can be very long. How will it affect the other vCPUs of the domain?

Finally, in environment with multiple guests using ITS, the ITS command send to the physical ITS may be interleaved (i.e DOM1 cmd, DOM2 cmd, DOM1 cmd ...). Is there any possible side-effect?

Regards,

--
Julien Grall

_______________________________________________
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®.