From patchwork Thu Mar 3 11:41:01 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kieran Bingham X-Patchwork-Id: 63471 Delivered-To: patch@linaro.org Received: by 10.112.199.169 with SMTP id jl9csp2896386lbc; Thu, 3 Mar 2016 03:47:06 -0800 (PST) X-Received: by 10.66.139.137 with SMTP id qy9mr2964104pab.57.1457005626682; Thu, 03 Mar 2016 03:47:06 -0800 (PST) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 21si32613342pfj.62.2016.03.03.03.47.06; Thu, 03 Mar 2016 03:47:06 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dkim=pass header.i=@linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756939AbcCCLrF (ORCPT + 30 others); Thu, 3 Mar 2016 06:47:05 -0500 Received: from mail-wm0-f41.google.com ([74.125.82.41]:32909 "EHLO mail-wm0-f41.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753077AbcCCLlY (ORCPT ); Thu, 3 Mar 2016 06:41:24 -0500 Received: by mail-wm0-f41.google.com with SMTP id l68so30810434wml.0 for ; Thu, 03 Mar 2016 03:41:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=DLKCKlrm5hwtw6uUCyc1xY+dWPtW09xFr1CZNq+Skg0=; b=AqAoMXFzux8YnYxw7pGtGuS9Ba/H9GVgPLk53cfNLeeTo1N0x5jum7ok2Y+fD409Tx 7+oaMofU7kI9Cl5jdv58WDew3w5kYXS8l6ebK/3owQxZyn6Do/a506jR/LTgvL6PKWab aAFQ0tLNqxSYZ3ndbzbBrF8qo/UypfG95F50g= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=DLKCKlrm5hwtw6uUCyc1xY+dWPtW09xFr1CZNq+Skg0=; b=OWoKojZBLN7c2eHLzdB70DqUCzYQ9diaNfDgrlPBBmzAQl32ohYyi/eYryhwmLH12p K3crjWHysWIkycSsQJydI+J6Qo/bupK64O40o796uGPAo8nhIyu3CftCKQ7iItK1gjBr Eiy/3ZS1V/Vzh1l8X4aSh2L6CsXHfGFvQ49qvn1B70RueOiEj5r8YBLPd205olyPCeos t6R2FImFHaCqL3tawwOeJusovm0/jrC+NwY7xmRRWI/cyxH3BuK/6dlu/oIhgF9eUIc5 KsQRgUZycRlDpoNnIX1oNeKlXn+0Cr2cWWWXMljHRZUTz4/O1QSJOYCo5ZTwaghXMgl0 k5SA== X-Gm-Message-State: AD7BkJI58Me7WYJymoTgiAJlfUDA5uz9Dynu8e9Lr9cPEvQg48SVPMIhpr/AQN3f4/akBXDa X-Received: by 10.28.47.216 with SMTP id v207mr3018327wmv.7.1457005283469; Thu, 03 Mar 2016 03:41:23 -0800 (PST) Received: from localhost.localdomain (cpc87017-aztw30-2-0-cust65.18-1.cable.virginm.net. [92.232.232.66]) by smtp.gmail.com with ESMTPSA id e19sm8570696wmd.1.2016.03.03.03.41.22 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 03 Mar 2016 03:41:23 -0800 (PST) From: Kieran Bingham To: jan.kiszka@siemens.com, linux-kernel@vger.kernel.org Cc: lee.jones@linaro.org, peter.griffin@linaro.org, maxime.coquelin@st.com, Kieran Bingham Subject: [PATCHv3 07/13] scripts/gdb: Add io resource readers Date: Thu, 3 Mar 2016 11:41:01 +0000 Message-Id: <1457005267-843-8-git-send-email-kieran.bingham@linaro.org> X-Mailer: git-send-email 2.5.0 In-Reply-To: <1457005267-843-1-git-send-email-kieran.bingham@linaro.org> References: <1457005267-843-1-git-send-email-kieran.bingham@linaro.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Provide iomem_resource and ioports_resource printers and command hooks It can be quite interesting to halt the kernel as it's booting and check to see this list as it is being populated. It should be useful in the event that a kernel is not booting, you can identify what memory resources have been registered Signed-off-by: Kieran Bingham --- Changes since v1: Permanent commit message updated --- scripts/gdb/linux/proc.py | 57 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) -- 2.5.0 diff --git a/scripts/gdb/linux/proc.py b/scripts/gdb/linux/proc.py index 6e6709c1830c..d855b2fd9a06 100644 --- a/scripts/gdb/linux/proc.py +++ b/scripts/gdb/linux/proc.py @@ -39,3 +39,60 @@ class LxVersion(gdb.Command): gdb.write(gdb.parse_and_eval("linux_banner").string()) LxVersion() + + +# Resource Structure Printers +# /proc/iomem +# /proc/ioports + +def get_resources(resource, depth): + while resource: + yield resource, depth + + child = resource['child'] + if child: + for res, deep in get_resources(child, depth + 1): + yield res, deep + + resource = resource['sibling'] + + +def show_lx_resources(resource_str): + resource = gdb.parse_and_eval(resource_str) + width = 4 if resource['end'] < 0x10000 else 8 + # Iterate straight to the first child + for res, depth in get_resources(resource['child'], 0): + start = int(res['start']) + end = int(res['end']) + gdb.write(" " * depth * 2 + + "{0:0{1}x}-".format(start, width) + + "{0:0{1}x} : ".format(end, width) + + res['name'].string() + "\n") + + +class LxIOMem(gdb.Command): + """Identify the IO memory resource locations defined by the kernel + +Equivalent to cat /proc/iomem on a running target""" + + def __init__(self): + super(LxIOMem, self).__init__("lx-iomem", gdb.COMMAND_DATA) + + def invoke(self, arg, from_tty): + return show_lx_resources("iomem_resource") + +LxIOMem() + + +class LxIOPorts(gdb.Command): + """Identify the IO port resource locations defined by the kernel + +Equivalent to cat /proc/ioports on a running target""" + + def __init__(self): + super(LxIOPorts, self).__init__("lx-ioports", gdb.COMMAND_DATA) + + def invoke(self, arg, from_tty): + return show_lx_resources("ioport_resource") + +LxIOPorts()