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,
> +...