On 7/1/21 6:27 PM, Matthew Wilcox wrote: > On Thu, Jul 01, 2021 at 10:51:27AM +0530, Anshuman Khandual wrote: >> >> >> On 5/20/21 4:47 PM, Matthew Wilcox wrote: >>> On Wed, May 19, 2021 at 01:03:06PM +0530, Anshuman Khandual wrote: >>>> Split ptlocks need not be defined and allocated unless they are being used. >>>> ALLOC_SPLIT_PTLOCKS is inherently dependent on USE_SPLIT_PTE_PTLOCKS. This >>>> just makes it explicit and clear. While here drop the spinlock_t element >>>> from the struct page when USE_SPLIT_PTE_PTLOCKS is not enabled. >>> >>> I didn't spot this email yesterday. I'm not a fan. Isn't struct page >>> already complicated enough without adding another ifdef to it? Surely >>> there's a better way than this. >> >> This discussion thread just got dropped off the radar, sorry about it. >> None of the spinlock_t elements are required unless split ptlocks are >> in use. I understand your concern regarding yet another #ifdef in the >> struct page definition. But this change is simple and minimal. Do you >> have any other particular alternative in mind which I could explore ? > > Do nothing? I don't understand what problem you're trying to solve. Currently there is an element (spinlock_t ptl) in the struct page for page table lock. Although a struct page based spinlock is not even required in case USE_SPLIT_PTE_PTLOCKS evaluates to be false. Is not that something to be fixed here i.e drop the splinlock_t element if not required ? The problem is USE_SPLIT_PTE_PTLOCKS and ALLOC_SPLIT_PTLOCKS get evaluated independently, although they are inherently dependent. ALLOC_SPLIT_PTLOCKS could just be set to 0, when USE_SPLIT_PTE_PTLOCKS evaluates to be 0. This patch makes that dependency explicit and also fixes the above situation.