Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp2023530ybl; Sun, 19 Jan 2020 17:06:19 -0800 (PST) X-Google-Smtp-Source: APXvYqwoctLsLoc30vMd3CPmTm4mFQ2Cy3hflZlFGcT2Ks3pLJMovHd7dFeibm7s1IsN012hhwTQ X-Received: by 2002:a05:6808:2d2:: with SMTP id a18mr11436186oid.120.1579482379634; Sun, 19 Jan 2020 17:06:19 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1579482379; cv=none; d=google.com; s=arc-20160816; b=FRT9zt6Fu6LtX0/vaKH6pmFDNu838McvGVqEl0BYpDs95oHbWegwlBgzIgSxqfs3zq 2dNO6Qoorfqzu2JchT1rPx8uq7FDmsKEs7isfimEIRiDPVnMgRvcoGFAyuOqJlNw7dut AaCXuJpZRGBuBMm1dModaxdtvThsSV9f/vlcbbpzjjsK8QhlwZyW1avjkTX6FWcNKWAh GLoBrg270o1SNcLwj+ChSVTccozRpeciBowZWRwa33P6tFbVVgrHy4Gx6LKO8SMZHa+/ aLU/JV56R872QDmNfK/fFtAncyobkuXRmem03XDnQULCBTastXcCTTdSjmEloz4bjt9M tHIg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from; bh=3VT9wlDSUCsWa4b7EAktqrPZYCbWFtr4IyyuWER9Nuk=; b=q8AUjcsCRi+8bkh7s+V1mJnMZ8OJtGfZZPHwfWeh/QvDhiknSZX+y8+gM2N6V/86F5 7tYEprssubZL6B6D1bLWRuYwilfPN1kWa++CEWMIGZCtM1K6efCJedTg7/w7vWujqlLS 0s8MYQJmFgUf0oC88BY8dlS1qNwawYTxA5t/DeM/dhNuHDs6oul6CL3+rDr/uXXwA9gq VBFMy6SRHAnXZtzLq5Wo0q9VcwAdNLv5bT4IvweBPpctBkeqIe1oNdr4gpq8PtmOHQps 5BvcDWHqSetZjSrAVaU6uGhawJB0FmKGJ1SllyE1nuwLzlLzIhcEETf7R1/1SRuITBQS HReQ== ARC-Authentication-Results: i=1; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id d23si17387576oij.270.2020.01.19.17.05.54; Sun, 19 Jan 2020 17:06:19 -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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729277AbgATBE0 (ORCPT + 99 others); Sun, 19 Jan 2020 20:04:26 -0500 Received: from smtp2207-205.mail.aliyun.com ([121.197.207.205]:53312 "EHLO smtp2207-205.mail.aliyun.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729154AbgATBEO (ORCPT ); Sun, 19 Jan 2020 20:04:14 -0500 X-Alimail-AntiSpam: AC=CONTINUE;BC=0.06717829|-1;CH=green;DM=CONTINUE|CONTINUE|true|0.275125-0.0157719-0.709104;DS=CONTINUE|ham_system_inform|0.0526277-0.000678506-0.946694;FP=0|0|0|0|0|-1|-1|-1;HT=e02c03294;MF=liaoweixiong@allwinnertech.com;NM=1;PH=DS;RN=17;RT=17;SR=0;TI=SMTPD_---.Gf.OYKf_1579482234; Received: from PC-liaoweixiong.allwinnertech.com(mailfrom:liaoweixiong@allwinnertech.com fp:SMTPD_---.Gf.OYKf_1579482234) by smtp.aliyun-inc.com(10.147.42.16); Mon, 20 Jan 2020 09:04:09 +0800 From: WeiXiong Liao To: Kees Cook , Anton Vorontsov , Colin Cross , Tony Luck , Jonathan Corbet , Miquel Raynal , Richard Weinberger , Vignesh Raghavendra , Mauro Carvalho Chehab , "David S. Miller" , Rob Herring , Greg Kroah-Hartman , Jonathan Cameron , WeiXiong Liao Cc: linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mtd@lists.infradead.org Subject: [PATCH v1 10/11] blkoops: add interface for dirver to get information of blkoops Date: Mon, 20 Jan 2020 09:03:52 +0800 Message-Id: <1579482233-2672-11-git-send-email-liaoweixiong@allwinnertech.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1579482233-2672-1-git-send-email-liaoweixiong@allwinnertech.com> References: <1579482233-2672-1-git-send-email-liaoweixiong@allwinnertech.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org It's one of a series of patches for adaptive to MTD device. MTD device need to check size of recorder and get mtddev index to verify which mtd device to use. All it needs is defined in blkoops. So, there should be a interface for MTD driver to get all information it need. Signed-off-by: WeiXiong Liao --- fs/pstore/blkoops.c | 47 ++++++++++++++++++++++++++++++++++++----------- include/linux/blkoops.h | 10 ++++++++++ 2 files changed, 46 insertions(+), 11 deletions(-) diff --git a/fs/pstore/blkoops.c b/fs/pstore/blkoops.c index 6b74189e5820..a2f1e31488bb 100644 --- a/fs/pstore/blkoops.c +++ b/fs/pstore/blkoops.c @@ -117,6 +117,20 @@ #define DEFAULT_BLKDEV "" #endif +#define check_size(name, defsize, alignsize) ({ \ + long _##name_ = (name); \ + if ((name) < 0) \ + _##name_ = (defsize); \ + _##name_ = _##name_ <= 0 ? 0 : (_##name_ * 1024); \ + if (_##name_ & (alignsize - 1)) { \ + pr_info(#name " must align to %d\n", \ + (alignsize)); \ + _##name_ = ALIGN(name, alignsize); \ + } \ + _##name_; \ +}) + + /** * register device to blkoops * @@ -148,18 +162,10 @@ int blkoops_register_device(struct blkoops_device *bo_dev) bo_dev->flags = BLKOOPS_DEV_SUPPORT_ALL; #define verify_size(name, defsize, alignsize, enable) { \ long _##name_; \ - if (!(enable)) \ - _##name_ = 0; \ - else if ((name) >= 0) \ - _##name_ = (name); \ + if (enable) \ + _##name_ = check_size(name, defsize, alignsize);\ else \ - _##name_ = (defsize); \ - _##name_ = _##name_ <= 0 ? 0 : (_##name_ * 1024); \ - if (_##name_ & (alignsize - 1)) { \ - pr_info(#name " must align to %d\n", \ - (alignsize)); \ - _##name_ = ALIGN(name, alignsize); \ - } \ + _##name_ = 0; \ name = _##name_ / 1024; \ bzinfo->name = _##name_; \ } @@ -460,6 +466,25 @@ int blkoops_blkdev_info(dev_t *devt, sector_t *nr_sects, sector_t *start_sect) } EXPORT_SYMBOL_GPL(blkoops_blkdev_info); +/* get information of blkoops */ +int blkoops_info(struct blkoops_info *info) +{ + if (!blkdev[0] && strlen(DEFAULT_BLKDEV)) + snprintf(blkdev, 80, "%s", DEFAULT_BLKDEV); + + memcpy(info->device, blkdev, 80); + info->dump_oops = !!(dump_oops < 0 ? DEFAULT_DUMP_OOPS : dump_oops); + + info->dmesg_size = check_size(dmesg_size, DEFAULT_DMESG_SIZE, 4096); + info->pmsg_size = check_size(pmsg_size, DEFAULT_PMSG_SIZE, 4096); + info->ftrace_size = check_size(ftrace_size, DEFAULT_FTRACE_SIZE, 4096); + info->console_size = check_size(console_size, DEFAULT_CONSOLE_SIZE, + 4096); + + return 0; +} +EXPORT_SYMBOL_GPL(blkoops_info); + MODULE_LICENSE("GPL"); MODULE_AUTHOR("WeiXiong Liao "); MODULE_DESCRIPTION("Wrapper for Pstore BLK with Oops logger"); diff --git a/include/linux/blkoops.h b/include/linux/blkoops.h index 11cb3036ad5f..ea56f3f92360 100644 --- a/include/linux/blkoops.h +++ b/include/linux/blkoops.h @@ -81,4 +81,14 @@ int blkoops_register_blkdev(unsigned int major, unsigned int flags, void blkoops_unregister_blkdev(unsigned int major); int blkoops_blkdev_info(dev_t *devt, sector_t *nr_sects, sector_t *start_sect); +struct blkoops_info { + int dump_oops; + char device[80]; + unsigned long dmesg_size; + unsigned long pmsg_size; + unsigned long console_size; + unsigned long ftrace_size; +}; +int blkoops_info(struct blkoops_info *info); + #endif -- 1.9.1