From patchwork Mon Feb 22 15:24:10 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kieran Bingham X-Patchwork-Id: 62588 Delivered-To: patch@linaro.org Received: by 10.112.43.199 with SMTP id y7csp1302821lbl; Mon, 22 Feb 2016 07:24:42 -0800 (PST) X-Received: by 10.66.160.231 with SMTP id xn7mr39390669pab.134.1456154682470; Mon, 22 Feb 2016 07:24:42 -0800 (PST) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id ff7si40346798pab.184.2016.02.22.07.24.42; Mon, 22 Feb 2016 07:24:42 -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 S1754044AbcBVPYd (ORCPT + 30 others); Mon, 22 Feb 2016 10:24:33 -0500 Received: from mail-wm0-f48.google.com ([74.125.82.48]:38285 "EHLO mail-wm0-f48.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753983AbcBVPY2 (ORCPT ); Mon, 22 Feb 2016 10:24:28 -0500 Received: by mail-wm0-f48.google.com with SMTP id a4so167823008wme.1 for ; Mon, 22 Feb 2016 07:24:28 -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=zErrohJ0yb9MeUN/fUzIEp7Fq3rIEgP0bMgnzqS/JoY=; b=QL9KGpi21rbI28jHBuDmR9bJwNzbkBXEp1peJ2ejJT5YqVqVVgdKnD1kNE5E1ic/wV QS9mh3biQgLfYPzG3HDD4bAd7US7ymrVDhJJFtN8czX/oFvj4tQKECZYQXFf+j4D5Z0I EEvFRljslyOrVUkFZGsC6++8yWCaircKig43w= 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=zErrohJ0yb9MeUN/fUzIEp7Fq3rIEgP0bMgnzqS/JoY=; b=KOvTr+mUa0KZX26Kg3V+SJiLxiW8wQAIqgZp6s6kpO0E2OTZRYM+yEYjm2UWnDPa5g rEZ6dxCAQqOiNY2qGMlf2h1OhJzGSrP9wShHH8oYlDu+PV8aes3w5o34S88QHr9cY6Ct ce8LBUVf0LnGjdt0Si0CBXd43Zi1kfteZfXWuKDjZ2pDC22qxUTqXg+F5CpX665fh69O Lp4U2/47CYhJzcl5kw+v9jIiRwX76GvH7D6+ihfMpdRqxuFZZcIvq0J+Nll5dZmNsPBv TMAKpXwtsBnekMLIrz+parWl7xyKp5YbC5HyL1QdLzbNbeacAOK2AqMywJ5GFtU8pysL Wl9A== X-Gm-Message-State: AG10YOSv4vHpMOddfThrmX+iGuvWKKJ6tbeG3yR66gkVm87wJoBAenAo5Esptt/ZQualfC2G X-Received: by 10.194.77.167 with SMTP id t7mr27509678wjw.90.1456154667656; Mon, 22 Feb 2016 07:24:27 -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 w66sm21557528wmd.2.2016.02.22.07.24.26 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 22 Feb 2016 07:24:27 -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: [PATCH 6/8] scripts/gdb: Add io resource readers Date: Mon, 22 Feb 2016 15:24:10 +0000 Message-Id: <1456154652-29023-7-git-send-email-kieran.bingham@linaro.org> X-Mailer: git-send-email 2.5.0 In-Reply-To: <1456154652-29023-1-git-send-email-kieran.bingham@linaro.org> References: <1456154652-29023-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: Permenant 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()