Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp3149389imu; Fri, 18 Jan 2019 05:43:26 -0800 (PST) X-Google-Smtp-Source: ALg8bN4yh+7SXr8GH9/siMVFcZBskCPwfcJ5fCZRTzclTm0kbfF4O4qjr2RV9SYwwykGwqBEaLPz X-Received: by 2002:a63:cf48:: with SMTP id b8mr18007927pgj.17.1547819006082; Fri, 18 Jan 2019 05:43:26 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1547819006; cv=none; d=google.com; s=arc-20160816; b=T90b4jSaIa4rOdmY3GxHKzbPyNZIGvAmLVFdypoR9MJ7k0Xx9NAqP1bNhroSAYkpr/ GhCAUcy9T0aRVjgRkZZX1Py3q5K1AKzHT3PNtRSRFzRs7nY+44R6e49bHW4jdv8wkknu SUHlP/xObOtzd23DiPTq5EO96sexnmKjUeyr5PFwvKPzhb8VzCiWC9+uu0/NzNNViqiY Blu/pe6f+Bdpo0wxDZFiGopq0XI8Ika0XXIw6Dk3wMhJh1A7vg8FXkdyOb5iiwTviPEh wiuvL7VlNhF1IQH0WldtLxde9AZYQV1iHWU41Rn7Ekbhwjab8pMTx5XWmxPWL9gub5V7 c7XQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature; bh=LZqp/7AgmH73m5EL9rfJzVcjOT6ajbwFOtYRf1lXupE=; b=i6jBWlRPMvQSjUKAsZp8cxVxVTqTNWgM2t50UboE0q10s7Evb3v9aG1oJ0Icblo6UC 43KAYgCG5m6h+IL6hinF5nS0kU+/cE2VKvUEA5Wkw1Ih7r78C+L40In6PnbSq5eJrfAi VVSTxW0AJ4rGoMDG5wZBm+A3GpgUU/K9sKqX8TCNDITBXep2TuaVMcGPj7tmvu5eHnax PfTF/8xkr6NBZeNPHRa9Km4MEzm3kRNlzWh3Ul289Tqdi/EM4JlEdQfrYGAUtEhoJKFg OQ7q5hbVBHXc6qzAIrvpum+p5ukHKn6BZoPkpwNM5u5CQkjuZt8y4Tv8FutGLxAtcKfv LvAg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@baylibre-com.20150623.gappssmtp.com header.s=20150623 header.b="TLEc9M/d"; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a3si4785470pld.252.2019.01.18.05.43.06; Fri, 18 Jan 2019 05:43:26 -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; dkim=pass header.i=@baylibre-com.20150623.gappssmtp.com header.s=20150623 header.b="TLEc9M/d"; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727528AbfARNlm (ORCPT + 99 others); Fri, 18 Jan 2019 08:41:42 -0500 Received: from mail-wr1-f65.google.com ([209.85.221.65]:35945 "EHLO mail-wr1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727017AbfARNll (ORCPT ); Fri, 18 Jan 2019 08:41:41 -0500 Received: by mail-wr1-f65.google.com with SMTP id u4so15118882wrp.3 for ; Fri, 18 Jan 2019 05:41:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=LZqp/7AgmH73m5EL9rfJzVcjOT6ajbwFOtYRf1lXupE=; b=TLEc9M/diHF88vbfjdmgO+GUHKdU2Me4Y0zXs7HPcr4qBKcgYm5o0EKv6UzKZ9baqa 8yqyhwNBzY28wGGLoLW3z+qurM7nCRUJTw9jedh6B02GG2/VJgwmw2LoGB7TAr595Qg/ Upun5iKc1RTV2OE4GzKxaitQ3DwOzTW11g/9WxAgqZuN/LieAxv7mBUXwnucAbwOpZkd 9wC5wz/E9o8CqyZlu3zOAr54oTaq/5k12jmNFDZFXX8NqJRmeqh5z5qvqNRkyqyq7K5u lAjdDuxPXKM/ssX36UPvLlswdDP+/S8Da6utgmhDT3PFX5imOXlLg7co1yKlV0X4ahL7 s/tw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=LZqp/7AgmH73m5EL9rfJzVcjOT6ajbwFOtYRf1lXupE=; b=ceZ1r3L9BDSINO6aortogweXZJDbda/DD3WV0rdbHXgQlzAmgEXKWPeMAT+ZsETTlX hbJvYd2+HLTdURUhB9lr4NJ7o5ilAtsvhgrxBbP0oWkCHjZmE+hW5GxOynwCXpEUakN3 yw4pi7SZ9AkuCYv7qdbZYHnZ357POJKs4YcXE5/wD2W79MkVchyjsPhBVZYH5gxAI0BZ TP+nvgQbe1vpUpO/h+lVv4GlOc/GIA3GW15Ct/TNyA3jqxwI+d7PWFwAS68Y6cewLJGM eS9IVj2JpSdhst6w20QOBwGXr3DjU3X+qQyfRZwhn/VgRBVwxtAdz53bvON/N4FnKBio yyDg== X-Gm-Message-State: AJcUukdpQWOFJpR7vdJNdYuZle6F9UP/jQ9ROlCFbMnGxK9LmFxM/hoC vwNKpoGXM7EtCirtdIrxjnvp5Q== X-Received: by 2002:a05:6000:1251:: with SMTP id j17mr16169399wrx.315.1547818899789; Fri, 18 Jan 2019 05:41:39 -0800 (PST) Received: from Red ([2a01:cb1d:147:7200:2e56:dcff:fed2:c6d6]) by smtp.googlemail.com with ESMTPSA id u204sm69552301wmu.30.2019.01.18.05.41.38 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 18 Jan 2019 05:41:39 -0800 (PST) Date: Fri, 18 Jan 2019 14:41:36 +0100 From: LABBE Corentin To: Robin Murphy Cc: hch@lst.de, m.szyprowski@samsung.com, iommu@lists.linux-foundation.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] dma-debug: add dumping facility via debugfs Message-ID: <20190118134136.GA1078@Red> References: <1547646265-9414-1-git-send-email-clabbe@baylibre.com> <2f43688f-9c08-a9c4-6175-caa3d2e40261@arm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <2f43688f-9c08-a9c4-6175-caa3d2e40261@arm.com> User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Jan 16, 2019 at 06:10:13PM +0000, Robin Murphy wrote: > On 16/01/2019 13:44, Corentin Labbe wrote: > > While debugging a DMA mapping leak, I needed to access > > debug_dma_dump_mappings() but easily from user space. > > > > This patch adds a /sys/kernel/debug/dma-api/dump file which contain all > > current DMA mapping. > > > > Signed-off-by: Corentin Labbe > > --- > > kernel/dma/debug.c | 47 ++++++++++++++++++++++++++++++++++++++++++++++ > > 1 file changed, 47 insertions(+) > > > > diff --git a/kernel/dma/debug.c b/kernel/dma/debug.c > > index 23cf5361bcf1..9253382f5729 100644 > > --- a/kernel/dma/debug.c > > +++ b/kernel/dma/debug.c > > @@ -144,6 +144,7 @@ static struct dentry *num_free_entries_dent __read_mostly; > > static struct dentry *min_free_entries_dent __read_mostly; > > static struct dentry *nr_total_entries_dent __read_mostly; > > static struct dentry *filter_dent __read_mostly; > > +static struct dentry *dump_dent __read_mostly; > > > > /* per-driver filter related state */ > > > > @@ -840,6 +841,47 @@ static const struct file_operations filter_fops = { > > .llseek = default_llseek, > > }; > > > > +static int dump_read(struct seq_file *seq, void *v) > > +{ > > + int idx; > > + > > + for (idx = 0; idx < HASH_SIZE; idx++) { > > + struct hash_bucket *bucket = &dma_entry_hash[idx]; > > + struct dma_debug_entry *entry; > > + unsigned long flags; > > + > > + spin_lock_irqsave(&bucket->lock, flags); > > + > > + list_for_each_entry(entry, &bucket->list, list) { > > + seq_printf(seq, > > + "%s %s %s idx %d P=%llx N=%lx D=%llx L=%llx %s %s\n", > > + dev_name(entry->dev), > > + dev_driver_string(entry->dev), > > + type2name[entry->type], idx, > > + phys_addr(entry), entry->pfn, > > + entry->dev_addr, entry->size, > > + dir2name[entry->direction], > > + maperr2str[entry->map_err_type]); > > + } > > + > > + spin_unlock_irqrestore(&bucket->lock, flags); > > + } > > + return 0; > > +} > > It's a shame that this is pretty much a duplication of > debug_dma_dump_mappings(), but there seems no straightforward way to > define one in terms of the other :/ > > (although given that we'd rather not have that weird external interface > anyway, maybe "now you can use debugfs instead" might be justification > enough for cleaning it up...) > > > + > > +static int dump_open(struct inode *inode, struct file *file) > > +{ > > + return single_open(file, dump_read, inode->i_private); > > +} > > + > > +static const struct file_operations dump_fops = { > > + .owner = THIS_MODULE, > > + .open = dump_open, > > + .read = seq_read, > > + .llseek = seq_lseek, > > + .release = single_release, > > +}; > > + > > DEFINE_SHOW_ATTRIBUTE()? > I will use it Thanks