del_page_from_lru_list(page, lruvec, page_lru(page));
                ClearPageActive(page);
                add_page_to_lru_list_tail(page, lruvec, page_lru(page));
-               (*pgmoved)++;
+               (*pgmoved) += hpage_nr_pages(page);
        }
 }
 
                add_page_to_lru_list(page, lruvec, lru);
                trace_mm_lru_activate(page);
 
-               __count_vm_event(PGACTIVATE);
+               __count_vm_events(PGACTIVATE, hpage_nr_pages(page));
        }
 }
 
 {
        int lru;
        bool active;
+       int nr_pages = hpage_nr_pages(page);
 
        if (!PageLRU(page))
                return;
                 * We moves tha page into tail of inactive.
                 */
                add_page_to_lru_list_tail(page, lruvec, lru);
-               __count_vm_event(PGROTATED);
+               __count_vm_events(PGROTATED, nr_pages);
        }
 
        if (active)
-               __count_vm_event(PGDEACTIVATE);
+               __count_vm_events(PGDEACTIVATE, nr_pages);
 }
 
 static void lru_deactivate_fn(struct page *page, struct lruvec *lruvec,
 {
        enum lru_list lru;
        int was_unevictable = TestClearPageUnevictable(page);
+       int nr_pages = hpage_nr_pages(page);
 
        VM_BUG_ON_PAGE(PageLRU(page), page);
 
        if (page_evictable(page)) {
                lru = page_lru(page);
                if (was_unevictable)
-                       count_vm_event(UNEVICTABLE_PGRESCUED);
+                       __count_vm_events(UNEVICTABLE_PGRESCUED, nr_pages);
        } else {
                lru = LRU_UNEVICTABLE;
                ClearPageActive(page);
                SetPageUnevictable(page);
                if (!was_unevictable)
-                       count_vm_event(UNEVICTABLE_PGCULLED);
+                       __count_vm_events(UNEVICTABLE_PGCULLED, nr_pages);
        }
 
        add_page_to_lru_list(page, lruvec, lru);