Received: by 10.223.176.46 with SMTP id f43csp1471412wra; Wed, 24 Jan 2018 17:43:05 -0800 (PST) X-Google-Smtp-Source: AH8x226ydFu/XEYYB8gSJkf0xmJnJzvakiEOo5TIW/WKH4ux9VpOxUHOnPsFtngdIXBv0PvrR9hB X-Received: by 2002:a17:902:6e8c:: with SMTP id v12-v6mr9984169plk.14.1516844585445; Wed, 24 Jan 2018 17:43:05 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1516844585; cv=none; d=google.com; s=arc-20160816; b=rL1pYOB+evFUybulFIZU6KR5ZFK538cUkbrFWo07tpZ0fV7/Sou6UDSiKa5boqP5GB giZ6MAiQ28x3++ani1jNumWctuXZYUDvHX/hRYMduVjK3IwGNOV5LrMSppYOBaLfKU3i slSWga2X/gGASBsN+fQVPIyrLWTdXTpZ0IQc5beBaZPUOUBFFjMsuWjb2lUwfm4mmvCB eA43xcc29k8JHgKcaaM+8tkaPdt5gnFC52XDw/msrhNIzcO1ffMCOPGCicBBwpllrXWU r1vSpc3o/NncdJW3Blrwq16378h+cA2DZD+MEnQX14IGd5vJgjL8O1w2RpqIsih8Mnt9 FrAQ== 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:dkim-signature:dkim-signature :arc-authentication-results; bh=A/9B0N7b4hgQWz+ONgai9G9cWUtnRIxwidB86QFNzek=; b=SaGfL8/r7RXPKrAtVvI22ZD12DXe+02Ufr3sNF8OCm5FmTsNcwiig9uwvGi0pZ9JO/ U7hrAmx0ZWluJw2xL1XSZWVrRXNNXVL5CtX6Zl/krW3vd5fV4FjPkAVdOdMhY2Hn1M7H A9TT2Vk3Ka+bpVAld8SOUJOXiaQF+HA7vMtk4b7LADxTbYGb7oaWusTwR6CCmLfM/xB4 eCf/cOnxwNQkg9zncvyrxowuqeGptQoY9dxDUEe11aaJgus/25T+kKQL/NJ66xyQSL7b mgEVcnY5+fi5a0C5tAtBiU2/NfoKxPGYu8dDDaipbB3SemrQARCSj2kIsaxvFkOFBhV6 1yyQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@sholland.org header.s=fm1 header.b=SOIOrPr8; dkim=pass header.i=@messagingengine.com header.s=fm1 header.b=E0ll01bo; 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 g11si849691pgf.367.2018.01.24.17.42.51; Wed, 24 Jan 2018 17:43:05 -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=@sholland.org header.s=fm1 header.b=SOIOrPr8; dkim=pass header.i=@messagingengine.com header.s=fm1 header.b=E0ll01bo; 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 S1752600AbeAYBla (ORCPT + 99 others); Wed, 24 Jan 2018 20:41:30 -0500 Received: from out3-smtp.messagingengine.com ([66.111.4.27]:58237 "EHLO out3-smtp.messagingengine.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752149AbeAYBl0 (ORCPT ); Wed, 24 Jan 2018 20:41:26 -0500 Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailout.nyi.internal (Postfix) with ESMTP id DA0542271C; Wed, 24 Jan 2018 20:41:25 -0500 (EST) Received: from frontend1 ([10.202.2.160]) by compute5.internal (MEProxy); Wed, 24 Jan 2018 20:41:25 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sholland.org; h= cc:date:from:in-reply-to:message-id:references:subject:to :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; bh=A/9B0N7b4hgQWz+ON gai9G9cWUtnRIxwidB86QFNzek=; b=SOIOrPr8UqfbRqw8qLIsa0utAEJpeuxD/ DdLwNojwehPg+q4NZ7Akx7IOPROz3PQuJNhsoyR8S7OMx3i6mpODThH7b3C14UhJ MZ3GcAuHcT5lYwrZYq+64gr7RrDQh586zeICngPv9lRFtPpoIOvW9OmegL9V95wh pDG4+QY6grzK6D3wfBHoUc224pOEbMjAJdjCcKQVEMFKZJNORdYvyah8Fyap4cnt Ba1pczTmxRNvaPiFJAVsY1E3uynuLTLPBtmrRBoXM5S9WlsRUrg0WdnC6hVUiNfT 2C4T2m/sJyRjh/15osE46Rd3N2Uy2yy+Cy3S5byeuX6LZIrQMdRXQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:date:from:in-reply-to:message-id :references:subject:to:x-me-sender:x-me-sender:x-sasl-enc; s= fm1; bh=A/9B0N7b4hgQWz+ONgai9G9cWUtnRIxwidB86QFNzek=; b=E0ll01bo 1OinKtyZRjq4J7wXIath+Nq728AcZuEVNbh4Ks8WYyQKDO/BRCGhbCOPtY6eiy8k pMkWDbO9kzLLfhtXxoGZQIPChuQVaYCAeqz30ZrMlRcQ4IMjwVtjdiAsTrkj5JJz LqCbpZwXu6mhNn1Ojb4mEP/wno/du8o5/BYSwt68u94VjAGy2udWtDrCFn6O2DiA C8NzLBQUNJPkqtMjZ+rBMasAY0t7PgOd6IlaRnVmBEytNi6/0d8/NOlXcO9HiYzj F72+XcihnhBEtHcZPJnvhGIuCleKiZCun4hK+0UaXNkDKV/FsmPawDy1At/5F97S pbSjK8DG1GOzTA== X-ME-Sender: Received: from indium.zzz.sholland.net (unknown [99.198.199.144]) by mail.messagingengine.com (Postfix) with ESMTPA id B8FB37E12E; Wed, 24 Jan 2018 20:41:24 -0500 (EST) From: Samuel Holland To: linux-kernel@vger.kernel.org, Greg Kroah-Hartman Cc: coreboot@coreboot.org, Thierry Escande , Wei-Ning Huang , Julius Werner , Dmitry Torokhov , Guenter Roeck , Samuel Holland Subject: [PATCH 2/5] firmware: memconsole: Probe via coreboot bus Date: Wed, 24 Jan 2018 19:41:17 -0600 Message-Id: <20180125014120.20851-3-samuel@sholland.org> X-Mailer: git-send-email 2.13.6 In-Reply-To: <20180125014120.20851-1-samuel@sholland.org> References: <20180125014120.20851-1-samuel@sholland.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Remove the ad-hoc coreboot table search. Now the driver will only be probed when the necessary coreboot table entry has already been found. Signed-off-by: Samuel Holland --- drivers/firmware/google/memconsole-coreboot.c | 49 ++++++++++----------------- 1 file changed, 17 insertions(+), 32 deletions(-) diff --git a/drivers/firmware/google/memconsole-coreboot.c b/drivers/firmware/google/memconsole-coreboot.c index 52738887735c..b29e10757bfb 100644 --- a/drivers/firmware/google/memconsole-coreboot.c +++ b/drivers/firmware/google/memconsole-coreboot.c @@ -15,9 +15,9 @@ * GNU General Public License for more details. */ +#include #include #include -#include #include "memconsole.h" #include "coreboot_table.h" @@ -73,18 +73,19 @@ static ssize_t memconsole_coreboot_read(char *buf, loff_t pos, size_t count) return done; } -static int memconsole_coreboot_init(phys_addr_t physaddr) +static int memconsole_probe(struct coreboot_device *dev) { struct cbmem_cons __iomem *tmp_cbmc; - tmp_cbmc = memremap(physaddr, sizeof(*tmp_cbmc), MEMREMAP_WB); + tmp_cbmc = memremap(dev->cbmem_ref.cbmem_addr, + sizeof(*tmp_cbmc), MEMREMAP_WB); if (!tmp_cbmc) return -ENOMEM; /* Read size only once to prevent overrun attack through /dev/mem. */ cbmem_console_size = tmp_cbmc->size_dont_access_after_boot; - cbmem_console = memremap(physaddr, + cbmem_console = memremap(dev->cbmem_ref.cbmem_addr, cbmem_console_size + sizeof(*cbmem_console), MEMREMAP_WB); memunmap(tmp_cbmc); @@ -93,26 +94,11 @@ static int memconsole_coreboot_init(phys_addr_t physaddr) return -ENOMEM; memconsole_setup(memconsole_coreboot_read); - return 0; -} - -static int memconsole_probe(struct platform_device *pdev) -{ - int ret; - struct lb_cbmem_ref entry; - - ret = coreboot_table_find(CB_TAG_CBMEM_CONSOLE, &entry, sizeof(entry)); - if (ret) - return ret; - - ret = memconsole_coreboot_init(entry.cbmem_addr); - if (ret) - return ret; return memconsole_sysfs_init(); } -static int memconsole_remove(struct platform_device *pdev) +static int memconsole_remove(struct coreboot_device *dev) { memconsole_exit(); @@ -122,28 +108,27 @@ static int memconsole_remove(struct platform_device *pdev) return 0; } -static struct platform_driver memconsole_driver = { +static struct coreboot_driver memconsole_driver = { .probe = memconsole_probe, .remove = memconsole_remove, - .driver = { + .drv = { .name = "memconsole", }, + .tag = CB_TAG_CBMEM_CONSOLE, }; -static int __init platform_memconsole_init(void) +static void coreboot_memconsole_exit(void) { - struct platform_device *pdev; - - pdev = platform_device_register_simple("memconsole", -1, NULL, 0); - if (IS_ERR(pdev)) - return PTR_ERR(pdev); - - platform_driver_register(&memconsole_driver); + coreboot_driver_unregister(&memconsole_driver); +} - return 0; +static int __init coreboot_memconsole_init(void) +{ + return coreboot_driver_register(&memconsole_driver); } -module_init(platform_memconsole_init); +module_exit(coreboot_memconsole_exit); +module_init(coreboot_memconsole_init); MODULE_AUTHOR("Google, Inc."); MODULE_LICENSE("GPL"); -- 2.13.6