On Thu, Sep 17, 2020 at 11:39:21AM +0000, HORIGUCHI NAOYA(堀口 直也) wrote: > Thanks for the update. > This patchset triggers the following BUG_ON() with Aristeu's workload: I just took a look, but I found more oddities. The patchset you sent seems to be a bit buggy and it is missing some things my patchset contains, e.g: static __always_inline bool free_pages_prepare(struct page *page, unsigned int order, bool check_free) { ... if (unlikely(PageHWPoison(page)) && !order) { ... return false; } Moreover, in page_handle_poison, you managed it wrong because: static bool page_handle_poison(struct page *page, bool hugepage_or_freepage, bool release) { if (release) { put_page(page); drain_all_pages(page_zone(page)); } ... SetPageHWPoison(page); page_ref_inc(page); 1) You are freeing the page first, which means it goes to buddy 2) Then you set it as poisoned and you update its refcount. Now we have a page sitting in Buddy with a refcount = 1 and poisoned, and that is quite wrong. Honestly, I do not know how your patchset diverged so much from mine, but is not right. I will go over my patchset and yours and compare/fix things. -- Oscar Salvador SUSE L3