On Thu 12-12-19 11:04:27, Davidlohr Bueso wrote: > There have been deadlock reports[1, 2] where put_page is called > from softirq context and this causes trouble with the hugetlb_lock, > as well as potentially the subpool lock. > > For such an unlikely scenario, lets not add irq dancing overhead > to the lock+unlock operations, which could incur in expensive > instruction dependencies, particularly when considering hard-irq > safety. For example PUSHF+POPF on x86. > > Instead, just use a workqueue and do the free_huge_page() in regular > task context. I am afraid that work_struct is too large to be stuffed into the struct page array (because of the lockdep part). I think that it would be just safer to make hugetlb_lock irq safe. Are there any other locks that would require the same? -- Michal Hocko SUSE Labs