lkml.org 
[lkml]   [2013]   [Mar]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH 2/2] mm: remove_memory: Fix end_pfn setting
    From
    Date
    On Fri, 2013-03-08 at 13:31 -0800, Andrew Morton wrote:
    > On Fri, 8 Mar 2013 08:41:41 -0700 Toshi Kani <toshi.kani@hp.com> wrote:
    >
    > > remove_memory() calls walk_memory_range() with [start_pfn, end_pfn),
    > > where end_pfn is exclusive in this range. Therefore, end_pfn needs
    > > to be set to the next page of the end address.
    > >
    > > ...
    > >
    > > --- a/mm/memory_hotplug.c
    > > +++ b/mm/memory_hotplug.c
    > > @@ -1801,7 +1801,7 @@ int __ref remove_memory(int nid, u64 start, u64 size)
    > > int retry = 1;
    > >
    > > start_pfn = PFN_DOWN(start);
    > > - end_pfn = start_pfn + PFN_DOWN(size);
    > > + end_pfn = PFN_UP(start + size - 1);
    > >
    > > /*
    > > * When CONFIG_MEMCG is on, one memory block may be used by other
    >
    > That looks right, although these rounding/boundary things are always
    > hard. I wonder if `start' and `size' are ever not multiples of
    > PAGE_SIZE..
    >
    > How did you discover this? Code inspection, or some runtime
    > malfunction? Please always include this info when fixing bugs.

    It was found in code inspection. For ACPI memory hot-delete, both start
    and size values are obtained from ACPI, and should always be
    page-aligned. So, this issue is not exposed at this point. That said,
    it should handle the boundary condition correctly since it might be
    called from other path in future. Yes, I will include such info when
    fixing bugs.

    Thanks,
    -Toshi




    \
     
     \ /
      Last update: 2013-03-08 23:42    [W:2.293 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site