From 2645e00e7847b5541eccbd9a71f514b3183666cf Mon Sep 17 00:00:00 2001 From: c_ankurb <ankurb@codeaurora.org> Date: Fri, 9 Jun 2017 13:59:00 +0530 Subject: [PATCH] lrdp_v2 : Fix for broken mmcdoctor.py for kernel 4.9 Adding check for kernel 4.9 where radix tree lookup by element has changed to use shift instead of height so now using radix_tree_lookup_element_v2 in kernel 4.9 Change-Id: I8323da2d4ccd52f3dd27a776e9640e1f0d917675 --- linux-ramdump-parser-v2/parsers/mmcdoctor.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/linux-ramdump-parser-v2/parsers/mmcdoctor.py b/linux-ramdump-parser-v2/parsers/mmcdoctor.py index 0d6a820..7f75a54 100644 --- a/linux-ramdump-parser-v2/parsers/mmcdoctor.py +++ b/linux-ramdump-parser-v2/parsers/mmcdoctor.py @@ -121,8 +121,12 @@ def get_sdhci_irqs(ram_dump): if nr_irqs > 50000: return for i in range(0, nr_irqs): - irq_desc = irqs.radix_tree_lookup_element( - ram_dump, irq_desc_tree, i) + if (ram_dump.kernel_version >= (4,9,0)): + irq_desc = irqs.radix_tree_lookup_element_v2( + ram_dump, irq_desc_tree, i) + else: + irq_desc = irqs.radix_tree_lookup_element( + ram_dump, irq_desc_tree, i) if irq_desc is None: continue action = ram_dump.read_word(irq_desc + irq_action_offset) @@ -144,7 +148,12 @@ def find_sdhci_host(ramdump, irq): irq_action_offset = ramdump.field_offset('struct irq_desc', 'action') dev_id = ramdump.field_offset('struct irqaction', 'dev_id') irqs = IrqParse(RamParser) - sdhci_irq_desc = irqs.radix_tree_lookup_element(ramdump, irq_desc_tree, irq) + if (ramdump.kernel_version >= (4,9,0)): + sdhci_irq_desc = irqs.radix_tree_lookup_element_v2( + ramdump, irq_desc_tree, irq) + else: + sdhci_irq_desc = irqs.radix_tree_lookup_element( + ramdump, irq_desc_tree, irq) sdhci_irq_action = ramdump.read_word(sdhci_irq_desc + irq_action_offset) sdhci_host = ramdump.read_word(sdhci_irq_action + dev_id) return sdhci_host -- GitLab