From patchwork Wed Mar 30 12:00:46 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kieran Bingham X-Patchwork-Id: 64693 Delivered-To: patch@linaro.org Received: by 10.112.199.169 with SMTP id jl9csp2550898lbc; Wed, 30 Mar 2016 05:02:54 -0700 (PDT) X-Received: by 10.66.222.129 with SMTP id qm1mr12401176pac.22.1459339373967; Wed, 30 Mar 2016 05:02:53 -0700 (PDT) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id ku9si5803669pab.99.2016.03.30.05.02.53; Wed, 30 Mar 2016 05:02:53 -0700 (PDT) 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; dkim=pass header.i=@linaro.org; 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; dmarc=pass (p=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753511AbcC3MCs (ORCPT + 29 others); Wed, 30 Mar 2016 08:02:48 -0400 Received: from mail-wm0-f48.google.com ([74.125.82.48]:37088 "EHLO mail-wm0-f48.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752870AbcC3MBO (ORCPT ); Wed, 30 Mar 2016 08:01:14 -0400 Received: by mail-wm0-f48.google.com with SMTP id p65so68291059wmp.0 for ; Wed, 30 Mar 2016 05:01:13 -0700 (PDT) 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=CZAn/yCRcnlJ8+qncUIRVAOHjwQMDpb4p6H5G8ehr3YLYAihExqH5ctcUqRntbbsKP UjOOqvgya2iApkSNHFhXOUNLpyQotzjEba85seooVxJlfjVjsH8YirGlJyuOkjhVUQ3i LVkKDMnQj/QElkIOAQwlvUJP8EEZvypqCocvw= 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=XRAbKqO/MD7pOjabX8ncfWT4x1T5N6uGxJya1Qq69ZbBhxUH0bgI9XeIfiV/Ndc4he d8oty2UTLp7XHDeF4JiOQL6jNZpDJS07G2uqJGpmKZtnSKncLq8pyK6aINg//IIa9X09 3jSZfV5YhOlg2Cl9A5PXzRUmMZ+gDuOCqtrGGPaXcGo5+uqo6SvgoHBe3nuzwgrJGIZ8 5wf66CZfkVJNT4Rmdox8HSpcEZClw2ZaybFscPEgArg2PeiYBSK284SSAy9n3FXhV1Pi 7haBWs3+HWmyb1Q3gDmpC6CV8iRj5HZkvdST5qQr/G4p8agNmoTlNJR/qctYkX9ePtB0 cmMw== X-Gm-Message-State: AD7BkJIwWIl2DdirLMez0+t/T9DSiRt9B4Z3HZxWl1ffwMaompQqa26m5NDjbpDdEfuhm/xV X-Received: by 10.28.5.85 with SMTP id 82mr3400084wmf.26.1459339272990; Wed, 30 Mar 2016 05:01:12 -0700 (PDT) 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 e190sm1175530wma.15.2016.03.30.05.01.12 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 30 Mar 2016 05:01:12 -0700 (PDT) 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: [PATCHv4 07/12] scripts/gdb: Add io resource readers Date: Wed, 30 Mar 2016 13:00:46 +0100 Message-Id: <1459339251-29611-8-git-send-email-kieran.bingham@linaro.org> X-Mailer: git-send-email 2.5.0 In-Reply-To: <1459339251-29611-1-git-send-email-kieran.bingham@linaro.org> References: <1459339251-29611-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()