search for: free_area

Displaying 20 results from an estimated 154 matches for "free_area".

2017 Aug 03
4
[PATCH v13 4/5] mm: support reporting free page blocks
...| 109 +++++++++++++++++++++++++++++++++++++++++++++++++ > 3 files changed, 121 insertions(+) > > diff --git a/include/linux/mm.h b/include/linux/mm.h > index 46b9ac5..24481e3 100644 > --- a/include/linux/mm.h > +++ b/include/linux/mm.h > @@ -1835,6 +1835,13 @@ extern void free_area_init_node(int nid, unsigned long * zones_size, > unsigned long zone_start_pfn, unsigned long *zholes_size); > extern void free_initmem(void); > > +#if IS_ENABLED(CONFIG_VIRTIO_BALLOON) > +extern void walk_free_mem_block(void *opaque1, > + unsigned int min_order, > +...
2017 Aug 03
4
[PATCH v13 4/5] mm: support reporting free page blocks
...| 109 +++++++++++++++++++++++++++++++++++++++++++++++++ > 3 files changed, 121 insertions(+) > > diff --git a/include/linux/mm.h b/include/linux/mm.h > index 46b9ac5..24481e3 100644 > --- a/include/linux/mm.h > +++ b/include/linux/mm.h > @@ -1835,6 +1835,13 @@ extern void free_area_init_node(int nid, unsigned long * zones_size, > unsigned long zone_start_pfn, unsigned long *zholes_size); > extern void free_initmem(void); > > +#if IS_ENABLED(CONFIG_VIRTIO_BALLOON) > +extern void walk_free_mem_block(void *opaque1, > + unsigned int min_order, > +...
2017 Aug 03
2
[PATCH v13 4/5] mm: support reporting free page blocks
...lt; MAX_NR_ZONES; i++) { > > struct zone *zone = &pgdat->node_zones[i]; > > > > if (!populated_zone(zone)) > > continue; > > spin_lock_irqsave(&zone->lock, flags); > > for (order = min_order; order < MAX_ORDER; ++order) { > > struct free_area *free_area = &zone->free_area[order]; > > enum migratetype mt; > > struct page *page; > > > > if (!free_area->nr_pages) > > continue; > > > > for_each_migratetype_order(order, mt) { > > list_for_each_entry(page, > >...
2017 Aug 03
2
[PATCH v13 4/5] mm: support reporting free page blocks
...lt; MAX_NR_ZONES; i++) { > > struct zone *zone = &pgdat->node_zones[i]; > > > > if (!populated_zone(zone)) > > continue; > > spin_lock_irqsave(&zone->lock, flags); > > for (order = min_order; order < MAX_ORDER; ++order) { > > struct free_area *free_area = &zone->free_area[order]; > > enum migratetype mt; > > struct page *page; > > > > if (!free_area->nr_pages) > > continue; > > > > for_each_migratetype_order(order, mt) { > > list_for_each_entry(page, > >...
2017 Aug 03
2
[PATCH v13 4/5] mm: support reporting free page blocks
...*zone = &pgdat->node_zones[i]; > >>> > >>> if (!populated_zone(zone)) > >>> continue; > >>> spin_lock_irqsave(&zone->lock, flags); > >>> for (order = min_order; order < MAX_ORDER; ++order) { > >>> struct free_area *free_area = &zone->free_area[order]; > >>> enum migratetype mt; > >>> struct page *page; > >>> > >>> if (!free_area->nr_pages) > >>> continue; > >>> > >>> for_each_migratetype_order(order, mt)...
2017 Aug 03
2
[PATCH v13 4/5] mm: support reporting free page blocks
...*zone = &pgdat->node_zones[i]; > >>> > >>> if (!populated_zone(zone)) > >>> continue; > >>> spin_lock_irqsave(&zone->lock, flags); > >>> for (order = min_order; order < MAX_ORDER; ++order) { > >>> struct free_area *free_area = &zone->free_area[order]; > >>> enum migratetype mt; > >>> struct page *page; > >>> > >>> if (!free_area->nr_pages) > >>> continue; > >>> > >>> for_each_migratetype_order(order, mt)...
2017 Aug 03
2
[PATCH v13 4/5] mm: support reporting free page blocks
...gt;>>> > >>>>> if (!populated_zone(zone)) > >>>>> continue; > >>>>> spin_lock_irqsave(&zone->lock, flags); > >>>>> for (order = min_order; order < MAX_ORDER; ++order) { > >>>>> struct free_area *free_area = &zone->free_area[order]; > >>>>> enum migratetype mt; > >>>>> struct page *page; > >>>>> > >>>>> if (!free_area->nr_pages) > >>>>> continue; > >>>>> > >&...
2017 Aug 03
2
[PATCH v13 4/5] mm: support reporting free page blocks
...gt;>>> > >>>>> if (!populated_zone(zone)) > >>>>> continue; > >>>>> spin_lock_irqsave(&zone->lock, flags); > >>>>> for (order = min_order; order < MAX_ORDER; ++order) { > >>>>> struct free_area *free_area = &zone->free_area[order]; > >>>>> enum migratetype mt; > >>>>> struct page *page; > >>>>> > >>>>> if (!free_area->nr_pages) > >>>>> continue; > >>>>> > >&...
2017 Aug 08
0
[PATCH v13 4/5] mm: support reporting free page blocks
...zone(zone)) > continue; Can we directly use for_each_populated_zone(zone) here? > spin_lock_irqsave(&zone->lock, flags); > for (order = min_order; order < MAX_ORDER; ++order) { This appears to be covered by for_each_migratetype_order(order, mt) below. > struct free_area *free_area = &zone->free_area[order]; > enum migratetype mt; > struct page *page; > > if (!free_area->nr_pages) > continue; > > for_each_migratetype_order(order, mt) { > list_for_each_entry(page, > &free_area->free_list[mt], lru)...
2017 Aug 03
0
[PATCH v13 4/5] mm: support reporting free page blocks
...t;>> struct zone *zone = &pgdat->node_zones[i]; >>> >>> if (!populated_zone(zone)) >>> continue; >>> spin_lock_irqsave(&zone->lock, flags); >>> for (order = min_order; order < MAX_ORDER; ++order) { >>> struct free_area *free_area = &zone->free_area[order]; >>> enum migratetype mt; >>> struct page *page; >>> >>> if (!free_area->nr_pages) >>> continue; >>> >>> for_each_migratetype_order(order, mt) { >>> list_for_ea...
2017 Aug 08
2
[virtio-dev] Re: [PATCH v13 4/5] mm: support reporting free page blocks
...populated_zone(zone) here? > > >> spin_lock_irqsave(&zone->lock, flags); >> for (order = min_order; order < MAX_ORDER; ++order) { > > > This appears to be covered by for_each_migratetype_order(order, mt) > below. > > >> struct free_area *free_area = &zone->free_area[order]; >> enum migratetype mt; >> struct page *page; >> >> if (!free_area->nr_pages) >> continue; >> >> for_each_migratetype_order(order, mt) { >>...
2017 Aug 08
2
[virtio-dev] Re: [PATCH v13 4/5] mm: support reporting free page blocks
...populated_zone(zone) here? > > >> spin_lock_irqsave(&zone->lock, flags); >> for (order = min_order; order < MAX_ORDER; ++order) { > > > This appears to be covered by for_each_migratetype_order(order, mt) > below. > > >> struct free_area *free_area = &zone->free_area[order]; >> enum migratetype mt; >> struct page *page; >> >> if (!free_area->nr_pages) >> continue; >> >> for_each_migratetype_order(order, mt) { >>...
2017 Aug 03
0
[PATCH v13 4/5] mm: support reporting free page blocks
...node_zones[i]; >>>>> >>>>> if (!populated_zone(zone)) >>>>> continue; >>>>> spin_lock_irqsave(&zone->lock, flags); >>>>> for (order = min_order; order < MAX_ORDER; ++order) { >>>>> struct free_area *free_area = &zone->free_area[order]; >>>>> enum migratetype mt; >>>>> struct page *page; >>>>> >>>>> if (!free_area->nr_pages) >>>>> continue; >>>>> >>>>> for_each_mig...
2017 Aug 03
0
[PATCH v13 4/5] mm: support reporting free page blocks
...+++++++++++++++++++++++++++++++ >> 3 files changed, 121 insertions(+) >> >> diff --git a/include/linux/mm.h b/include/linux/mm.h >> index 46b9ac5..24481e3 100644 >> --- a/include/linux/mm.h >> +++ b/include/linux/mm.h >> @@ -1835,6 +1835,13 @@ extern void free_area_init_node(int nid, unsigned long * zones_size, >> unsigned long zone_start_pfn, unsigned long *zholes_size); >> extern void free_initmem(void); >> >> +#if IS_ENABLED(CONFIG_VIRTIO_BALLOON) >> +extern void walk_free_mem_block(void *opaque1, >> + unsign...
2017 Aug 03
0
[PATCH v13 4/5] mm: support reporting free page blocks
...>>>>>> if (!populated_zone(zone)) >>>>>>> continue; >>>>>>> spin_lock_irqsave(&zone->lock, flags); >>>>>>> for (order = min_order; order < MAX_ORDER; ++order) { >>>>>>> struct free_area *free_area = &zone->free_area[order]; >>>>>>> enum migratetype mt; >>>>>>> struct page *page; >>>>>>> >>>>>>> if (!free_area->nr_pages) >>>>>>> continue; >>>>&...
2017 Aug 03
2
[PATCH v13 4/5] mm: support reporting free page blocks
...;>> if (!populated_zone(zone)) > >>>>>>> continue; > >>>>>>> spin_lock_irqsave(&zone->lock, flags); > >>>>>>> for (order = min_order; order < MAX_ORDER; ++order) { > >>>>>>> struct free_area *free_area = &zone->free_area[order]; > >>>>>>> enum migratetype mt; > >>>>>>> struct page *page; > >>>>>>> > >>>>>>> if (!free_area->nr_pages) > >>>>>>> contin...
2017 Aug 03
2
[PATCH v13 4/5] mm: support reporting free page blocks
...;>> if (!populated_zone(zone)) > >>>>>>> continue; > >>>>>>> spin_lock_irqsave(&zone->lock, flags); > >>>>>>> for (order = min_order; order < MAX_ORDER; ++order) { > >>>>>>> struct free_area *free_area = &zone->free_area[order]; > >>>>>>> enum migratetype mt; > >>>>>>> struct page *page; > >>>>>>> > >>>>>>> if (!free_area->nr_pages) > >>>>>>> contin...
2016 Jul 27
4
[PATCH v2 repost 6/7] mm: add the related functions to get free page info
On 07/26/2016 06:23 PM, Liang Li wrote: > + for_each_migratetype_order(order, t) { > + list_for_each(curr, &zone->free_area[order].free_list[t]) { > + pfn = page_to_pfn(list_entry(curr, struct page, lru)); > + if (pfn >= start_pfn && pfn <= end_pfn) { > + page_num = 1UL << order; > + if (pfn + page_num > end_pfn) > + page_num = end_pfn - pfn; > + bitmap_set(bitma...
2016 Jul 27
4
[PATCH v2 repost 6/7] mm: add the related functions to get free page info
On 07/26/2016 06:23 PM, Liang Li wrote: > + for_each_migratetype_order(order, t) { > + list_for_each(curr, &zone->free_area[order].free_list[t]) { > + pfn = page_to_pfn(list_entry(curr, struct page, lru)); > + if (pfn >= start_pfn && pfn <= end_pfn) { > + page_num = 1UL << order; > + if (pfn + page_num > end_pfn) > + page_num = end_pfn - pfn; > + bitmap_set(bitma...
2018 Jun 16
2
[PATCH v33 1/4] mm: add a function to get free page blocks
...> + struct page *page; > + struct list_head *list; > + unsigned long addr, flags; > + uint32_t index = 0; > + > + for_each_populated_zone(zone) { > + spin_lock_irqsave(&zone->lock, flags); > + for (mt = 0; mt < MIGRATE_TYPES; mt++) { > + list = &zone->free_area[order].free_list[mt]; > + list_for_each_entry(page, list, lru) { > + addr = page_to_pfn(page) << PAGE_SHIFT; > + if (likely(index < size)) { > + buf[index++] = cpu_to_le64(addr); > + } else { > + spin_unlock_irqrestore(&zone->lock, > +...