#ifdef CONFIG_COMPACTION
 TRACE_EVENT(mm_compaction_migratepages,
 
-       TP_PROTO(unsigned long nr_all,
+       TP_PROTO(struct compact_control *cc,
                unsigned int nr_succeeded),
 
-       TP_ARGS(nr_all, nr_succeeded),
+       TP_ARGS(cc, nr_succeeded),
 
        TP_STRUCT__entry(
                __field(unsigned long, nr_migrated)
 
        TP_fast_assign(
                __entry->nr_migrated = nr_succeeded;
-               __entry->nr_failed = nr_all - nr_succeeded;
+               __entry->nr_failed = cc->nr_migratepages - nr_succeeded;
        ),
 
        TP_printk("nr_migrated=%lu nr_failed=%lu",
 );
 
 TRACE_EVENT(mm_compaction_begin,
-       TP_PROTO(unsigned long zone_start, unsigned long migrate_pfn,
-               unsigned long free_pfn, unsigned long zone_end, bool sync),
+       TP_PROTO(struct compact_control *cc, unsigned long zone_start,
+               unsigned long zone_end, bool sync),
 
-       TP_ARGS(zone_start, migrate_pfn, free_pfn, zone_end, sync),
+       TP_ARGS(cc, zone_start, zone_end, sync),
 
        TP_STRUCT__entry(
                __field(unsigned long, zone_start)
 
        TP_fast_assign(
                __entry->zone_start = zone_start;
-               __entry->migrate_pfn = migrate_pfn;
-               __entry->free_pfn = free_pfn;
+               __entry->migrate_pfn = cc->migrate_pfn;
+               __entry->free_pfn = cc->free_pfn;
                __entry->zone_end = zone_end;
                __entry->sync = sync;
        ),
 );
 
 TRACE_EVENT(mm_compaction_end,
-       TP_PROTO(unsigned long zone_start, unsigned long migrate_pfn,
-               unsigned long free_pfn, unsigned long zone_end, bool sync,
+       TP_PROTO(struct compact_control *cc, unsigned long zone_start,
+               unsigned long zone_end, bool sync,
                int status),
 
-       TP_ARGS(zone_start, migrate_pfn, free_pfn, zone_end, sync, status),
+       TP_ARGS(cc, zone_start, zone_end, sync, status),
 
        TP_STRUCT__entry(
                __field(unsigned long, zone_start)
 
        TP_fast_assign(
                __entry->zone_start = zone_start;
-               __entry->migrate_pfn = migrate_pfn;
-               __entry->free_pfn = free_pfn;
+               __entry->migrate_pfn = cc->migrate_pfn;
+               __entry->free_pfn = cc->free_pfn;
                __entry->zone_end = zone_end;
                __entry->sync = sync;
                __entry->status = status;
 
        update_cached = !sync &&
                cc->zone->compact_cached_migrate_pfn[0] == cc->zone->compact_cached_migrate_pfn[1];
 
-       trace_mm_compaction_begin(start_pfn, cc->migrate_pfn,
-                               cc->free_pfn, end_pfn, sync);
+       trace_mm_compaction_begin(cc, start_pfn, end_pfn, sync);
 
        /* lru_add_drain_all could be expensive with involving other CPUs */
        lru_add_drain();
                                compaction_free, (unsigned long)cc, cc->mode,
                                MR_COMPACTION, &nr_succeeded);
 
-               trace_mm_compaction_migratepages(cc->nr_migratepages,
-                                                nr_succeeded);
+               trace_mm_compaction_migratepages(cc, nr_succeeded);
 
                /* All pages were either migrated or will be released */
                cc->nr_migratepages = 0;
        count_compact_events(COMPACTMIGRATE_SCANNED, cc->total_migrate_scanned);
        count_compact_events(COMPACTFREE_SCANNED, cc->total_free_scanned);
 
-       trace_mm_compaction_end(start_pfn, cc->migrate_pfn,
-                               cc->free_pfn, end_pfn, sync, ret);
+       trace_mm_compaction_end(cc, start_pfn, end_pfn, sync, ret);
 
        return ret;
 }