On 08/02/2017 03:20 PM, Rik van Riel wrote: > On Wed, 2017-08-02 at 14:59 -0400, Nitesh Narayan Lal wrote: >>>> -struct hypervisor_pages hypervisor_pagelist[MAX_FGPT_ENTRIES]; >>>> +struct hypervisor_pages hypervisor_pagelist[MAX_FGPT_ENTRIES - >>>> 1]; >>>> + >>>> +static void empty_hyperlist(void) >>>> +{ >>>> + int i = 0; >>>> + >>>> + while (i < MAX_FGPT_ENTRIES - 1) { >>> MAX_FGPT_ENTRIES in-place of 'MAX_FGPT_ENTRIES - 1' here >>> and at similar other places? >> This is because CPU local list has a total of 1000 entries >> (MAX_FGPT_ENTRIES) where as CPU global list has 999 entries. If you >> see >> the arch_free_page_slowpath() and consider a situation where there >> are >> 1000 entries of singly allocated free pages in cpu-local list i.e., >> none >> of them are re-allocated. While adding them to the cpu global list >> when >> cpu local list index reaches to 1000 the outer loop will terminate >> due >> to which cpu global list index will never reach to 1000 and >> compress_hyperlist()/make_hypercall() will never be called. > Can you explain why the hypervisor_pagelist > is smaller than the cpu local list? > > This makes no sense to me. Why are they not > the same size? > > That would certainly make the code easier to read. I am sorry. There is no point of complicating things when it could be done in a simpler way. I will make the required changes in my next patch-set. -- Regards Nitesh
Attachment:
signature.asc
Description: OpenPGP digital signature