lkml.org 
[lkml]   [2020]   [Feb]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [PATCH v12 1/9] hugetlb_cgroup: Add hugetlb_cgroup reservation counter
    On Tue, Feb 18, 2020 at 11:14 AM Mike Kravetz <mike.kravetz@oracle.com> wrote:
    >
    > On 2/18/20 10:35 AM, Mina Almasry wrote:
    > > On Tue, Feb 18, 2020 at 6:21 AM Qian Cai <cai@lca.pw> wrote:
    > >>
    > >> On Tue, 2020-02-11 at 15:19 -0800, Andrew Morton wrote:
    > >>> On Tue, 11 Feb 2020 13:31:20 -0800 Mina Almasry <almasrymina@google.com> wrote:
    > >>>
    > >> [ 7933.806377][T14355] ------------[ cut here ]------------
    > >> [ 7933.806541][T14355] kernel BUG at mm/hugetlb.c:490!
    > >> VM_BUG_ON(t - f <= 1);
    > >> [ 7933.806562][T14355] Oops: Exception in kernel mode, sig: 5 [#1]
    > <snip>
    > > Hi Qian,
    > >
    > > Yes this VM_BUG_ON was added by a patch in the series ("hugetlb:
    > > disable region_add file_region coalescing") so it's definitely related
    > > to the series. I'm taking a look at why this VM_BUG_ON fires. Can you
    > > confirm you reproduce this by running hugemmap06 from the ltp on a
    > > powerpc machine? Can I maybe have your config?
    > >
    > > Thanks!
    >
    > Hi Mina,
    >
    > Looking at the region_chg code again, we do a
    >
    > resv->adds_in_progress += *out_regions_needed;
    >
    > and then potentially drop the lock to allocate the needed entries. Could
    > anopther thread (only adding reservation for a single page) then come in
    > and notice that there are not enough entries in the cache and hit the
    > VM_BUG_ON()?

    Maybe. Also I'm thinking the code thinks actual_regions_needed >=
    in_regions_needed, but that doesn't seem like a guarantee. I think
    this call sequence with the same t->f range would violate that:

    region_chg (regions_needed=1)
    region_chg (regions_needed=1)
    region_add (fills in the range)
    region_add (in_regions_needed = 1, actual_regions_needed = 0, so
    assumptions in the code break).

    Luckily it seems the ltp readily reproduces this, so I'm working on
    reproducing it. I should have a fix soon, at least if I can reproduce
    it as well.

    \
     
     \ /
      Last update: 2020-02-18 20:25    [W:2.639 / U:0.264 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site