diff --git a/linux-ramdump-parser-v2/parsers/timerlist.py b/linux-ramdump-parser-v2/parsers/timerlist.py
old mode 100755
new mode 100644
index 80510a01f43caa7044c5b4751280b22bd9e109d9..a6ddaecb1496e9885f62d79fdc9fa32a1d160f87
--- a/linux-ramdump-parser-v2/parsers/timerlist.py
+++ b/linux-ramdump-parser-v2/parsers/timerlist.py
@@ -21,13 +21,24 @@ class TimerList(RamParser) :
         super(TimerList, self).__init__(*args)
         self.vectors = {'tv1': 256, 'tv2': 64, 'tv3': 64, 'tv4': 64, 'tv5': 64}
         self.output = []
+        major, minor, patch = self.ramdump.kernel_version
         self.timer_42 = False
-
+        self.timer_jiffies = 'timer_jiffies'
+        self.tvec_base = 'struct tvec_base'
+        self.tvec_bases = 'tvec_bases'
+        self.next_timer = 'next_timer'
+
+        if (major, minor) >= (4, 9):
+            self.vectors = {'vectors': 512}
+            self.timer_jiffies = 'clk'
+            self.tvec_base = 'struct timer_base'
+            self.tvec_bases = 'timer_bases'
+            self.next_timer = 'next_expiry'
         # Timerlist structure changed in kernel 4.2
         # Requires separate processing
-        if self.ramdump.kernel_version[0] >= 4:
-            if self.ramdump.kernel_version[1] >= 2:
-                self.timer_42 = True
+        if (major, minor) >= (4, 2):
+            self.timer_42 = True
+
 
     def timer_list_walker(self, node, type, index, base):
         if node == self.head:
@@ -65,7 +76,7 @@ class TimerList(RamParser) :
         self.output.append(output)
 
     def iterate_vec(self, type, base):
-        vec_addr = base + self.ramdump.field_offset('struct tvec_base', type)
+        vec_addr = base + self.ramdump.field_offset(self.tvec_base, type)
         for i in range(0, self.vectors[type]):
             index = self.ramdump.array_index(vec_addr, 'struct list_head', i)
             self.head = index
@@ -74,7 +85,7 @@ class TimerList(RamParser) :
             timer_list_walker.walk(index, self.timer_list_walker, type, i, base)
 
     def iterate_vec_v2(self, type, base):
-        vec_addr = base + self.ramdump.field_offset('struct tvec_base', type)
+        vec_addr = base + self.ramdump.field_offset(self.tvec_base, type)
         for i in range(0, self.vectors[type]):
             index = self.ramdump.array_index(vec_addr, 'struct hlist_head', i)
             self.head = index
@@ -101,14 +112,14 @@ class TimerList(RamParser) :
 
         tvec_base_deferral_addr = self.ramdump.address_of('tvec_base_deferrable')
         if tvec_base_deferral_addr:
-            timer_jiffies_addr = tvec_base_deferral_addr + self.ramdump.field_offset('struct tvec_base', 'timer_jiffies')
-            next_timer_addr = tvec_base_deferral_addr + self.ramdump.field_offset('struct tvec_base', 'next_timer')
+            timer_jiffies_addr = tvec_base_deferral_addr + self.ramdump.field_offset(self.tvec_base, self.timer_jiffies)
+            next_timer_addr = tvec_base_deferral_addr + self.ramdump.field_offset(self.tvec_base, self.next_timer)
 
             timer_jiffies = self.ramdump.read_word(timer_jiffies_addr)
             next_timer = self.ramdump.read_word(next_timer_addr)
-            active_timers_offset = self.ramdump.field_offset('struct tvec_base', 'active_timers')
+            active_timers_offset = self.ramdump.field_offset(self.tvec_base, 'active_timers')
             if active_timers_offset is not None:
-                    active_timers_addr = tvec_base_deferral_addr + self.ramdump.field_offset('struct tvec_base', 'active_timers')
+                    active_timers_addr = tvec_base_deferral_addr + self.ramdump.field_offset(self.tvec_base, 'active_timers')
                     active_timers = self.ramdump.read_word(active_timers_addr)
             else:
                     active_timers = "NA"
@@ -127,8 +138,7 @@ class TimerList(RamParser) :
                      self.iterate_vec(vec, tvec_base_deferral_addr)
                 self.print_vec(vec)
 
-        tvec_bases_addr = self.ramdump.address_of('tvec_bases')
-
+        tvec_bases_addr = self.ramdump.address_of(self.tvec_bases)
         for cpu in range(0, self.ramdump.get_num_cpus()):
             title = "CPU {0}".format(cpu)
 
@@ -140,14 +150,14 @@ class TimerList(RamParser) :
 
             title += "(tvec_base: {0:x} ".format(base)
 
-            timer_jiffies_addr = base + self.ramdump.field_offset('struct tvec_base', 'timer_jiffies')
-            next_timer_addr = base + self.ramdump.field_offset('struct tvec_base', 'next_timer')
+            timer_jiffies_addr = base + self.ramdump.field_offset(self.tvec_base, self.timer_jiffies)
+            next_timer_addr = base + self.ramdump.field_offset(self.tvec_base, self.next_timer)
 
             timer_jiffies = self.ramdump.read_word(timer_jiffies_addr)
             next_timer = self.ramdump.read_word(next_timer_addr)
-            active_timers_offset = self.ramdump.field_offset('struct tvec_base', 'active_timers')
+            active_timers_offset = self.ramdump.field_offset(self.tvec_base, 'active_timers')
             if active_timers_offset is not None:
-                active_timers_addr = base + self.ramdump.field_offset('struct tvec_base', 'active_timers')
+                active_timers_addr = base + self.ramdump.field_offset(self.tvec_base, 'active_timers')
                 active_timers = self.ramdump.read_word(active_timers_addr)
             else:
                 active_timers = "NA"