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

Re: [Xen-devel] use tasklet to handle init/sipi?



On 26/03/2013 03:15, "Zhang, Yang Z" <yang.z.zhang@xxxxxxxxx> wrote:

>>> Also, should we care about such malicious guest? If the guest really did
>>> such
>>> thing, it just block himself. It just eat the cpu time which belong to
>>> himself. A malicious guest can run a non-stop loop to do same thing.
>> 
>> No, the spin loop is in the hypervisor. So it is a denial-of-service attack
>> on the hypervisor -- i.e., a security concern.
> 
> Ok. So we cannot simply removing the tasklet mechanism to fix the issue.
> How about we add all target vcpu to a list and iterate the list to wake up all
> VCPUs in then tasklet callback. Then we can wake up all vcpus by call tasklet
> once.
> 
> Like this:
> static int vlapic_schedule_init_sipi_tasklet(struct vcpu *target, uint32_t
> icr)
>  {
> add target to a list;
> schedule tasklet;
> return X86EMUL_OKAY; //here we return ok instead retry, because we can handle
> all vcpus just once.
> }
> 
> And in tasklet call back:
> for_each_entry_in list
> {
> call vlapic_init_sipi_action();
> }

You'll have t elaborate on the problem *you* are trying to solve, and why
such a change would do the trick. If there's good reason, I'm not against a
change such as this. But the code is subtle and I don't want to mess with it
if there are simpler solutions.

 -- Keir



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