Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp9331499imu; Sat, 29 Dec 2018 16:44:02 -0800 (PST) X-Google-Smtp-Source: AFSGD/WnSBTgdLAdRgrXOFkgc2QixaExhno9LfsvlXFB4hZKQAGbfHm26bg+6idSe2jT36qMa/7D X-Received: by 2002:a62:d148:: with SMTP id t8mr34168513pfl.52.1546130642550; Sat, 29 Dec 2018 16:44:02 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1546130642; cv=none; d=google.com; s=arc-20160816; b=pjVikKaA6MgOnQVJbrq6qmKtisuLGEkYDEm9mjYQ9JqHrLsfuiqbtFuSh4Ef7Qj22p mmKJ2jg7+hNSG5RY3yTtwVkgCbYpvT0UinOoxw9fDezgzjb+vD6n1HrwJkxgtE/FVYRk SWV/1vPJpIGfgN2JQFc/FpfnFt7Y4Iy3eGoo1qDnwpe+PY9E/UX9tyEiw7igwekZzQ4U 2wBzk11H9QuIvNOcwAEAVW9i3/4G0VlSCw22qBrtHelDHbo2aKKrtsxhM9QWC+W1LWXj Yw1SVGv7eHa2f5WWVhJkU70DaHwX2gqmoCz1oho/vBDBjVmAqNBHNbTzs57CGH7q1uis Shcw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:references:message-id :in-reply-to:subject:cc:to:from:date; bh=g5sFWVnG1rl8/DnHNLSoWtU+3vii0UpxZvDasIqAzjY=; b=Bsq9tpkiPTTMiIhKw4g4T1lfsZ8PxTXfkgfgh1Ja5XhiIU9imCFxPLfEEpwAgtLyJj P371GcEPxvrN6r9enA7x4sMoagEbWjnjl5Y63H0xRYrZzSDir+VnuS0B9zf/74DRx0BZ oVdjZkZeJQ1RiZTszte6W5W7P5v9KscpNdi+hp6JujQjHVe+uRlHlXxma3uPqSy1hMHO qckXLEKAOWHN0KB2P+9jKMF2pl3KXfsRa5+3w9bKlI5m/VSlb+DgvyMihqgW8hKZAZQE KDgTWdZ6x9oXq6O6KETUUspmPQzlsEXrduMXu63QGUkYWKWaSAf3YVsp381t6hww2vXf MbFQ== 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 m65si42685491pfg.282.2018.12.29.16.43.47; Sat, 29 Dec 2018 16:44:02 -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 S1728004AbeL2XnS (ORCPT + 99 others); Sat, 29 Dec 2018 18:43:18 -0500 Received: from kvm5.telegraphics.com.au ([98.124.60.144]:47396 "EHLO kvm5.telegraphics.com.au" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727144AbeL2XnR (ORCPT ); Sat, 29 Dec 2018 18:43:17 -0500 Received: from localhost (localhost.localdomain [127.0.0.1]) by kvm5.telegraphics.com.au (Postfix) with ESMTP id 5842628EE3; Sat, 29 Dec 2018 18:43:10 -0500 (EST) Date: Sun, 30 Dec 2018 10:43:33 +1100 (AEDT) From: Finn Thain To: LEROY Christophe cc: linux-fbdev@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-m68k@lists.linux-m68k.org, Bartlomiej Zolnierkiewicz , Michael Ellerman , Paul Mackerras , Benjamin Herrenschmidt , Greg Kroah-Hartman , Arnd Bergmann Subject: Re: [PATCH v8 20/25] powerpc, fbdev: Use arch_nvram_ops methods instead of nvram_read_byte() and nvram_write_byte() In-Reply-To: <20181229180236.Horde.idY3gOIzkSWywjIrqlXJMA1@messagerie.si.c-s.fr> Message-ID: References: <7e8eb87ea829c03941c895c968df2ebd0f80512f.1545784679.git.fthain@telegraphics.com.au> <20181229180236.Horde.idY3gOIzkSWywjIrqlXJMA1@messagerie.si.c-s.fr> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sat, 29 Dec 2018, LEROY Christophe wrote: > Finn Thain a ?crit?: > > > Make use of arch_nvram_ops in device drivers so that the nvram_* function > > exports can be removed. > > > > Since they are no longer global symbols, rename the PPC32 nvram_* functions > > appropriately. > > > > Signed-off-by: Finn Thain > > --- > > arch/powerpc/kernel/setup_32.c | 8 ++++---- > > drivers/char/generic_nvram.c | 4 ++-- > > drivers/video/fbdev/controlfb.c | 4 ++-- > > drivers/video/fbdev/imsttfb.c | 4 ++-- > > drivers/video/fbdev/matrox/matroxfb_base.c | 2 +- > > drivers/video/fbdev/platinumfb.c | 4 ++-- > > drivers/video/fbdev/valkyriefb.c | 4 ++-- > > 7 files changed, 15 insertions(+), 15 deletions(-) > > > > diff --git a/arch/powerpc/kernel/setup_32.c b/arch/powerpc/kernel/setup_32.c > > index e0d045677472..bdbe6acbef11 100644 > > --- a/arch/powerpc/kernel/setup_32.c > > +++ b/arch/powerpc/kernel/setup_32.c > > @@ -152,20 +152,18 @@ __setup("l3cr=", ppc_setup_l3cr); > > > > #ifdef CONFIG_GENERIC_NVRAM > > > > -unsigned char nvram_read_byte(int addr) > > +static unsigned char ppc_nvram_read_byte(int addr) > > { > > if (ppc_md.nvram_read_val) > > return ppc_md.nvram_read_val(addr); > > return 0xff; > > } > > -EXPORT_SYMBOL(nvram_read_byte); > > > > -void nvram_write_byte(unsigned char val, int addr) > > +static void ppc_nvram_write_byte(unsigned char val, int addr) > > { > > if (ppc_md.nvram_write_val) > > ppc_md.nvram_write_val(addr, val); > > } > > -EXPORT_SYMBOL(nvram_write_byte); > > > > static ssize_t ppc_nvram_get_size(void) > > { > > @@ -182,6 +180,8 @@ static long ppc_nvram_sync(void) > > } > > > > const struct nvram_ops arch_nvram_ops = { > > + .read_byte = ppc_nvram_read_byte, > > + .write_byte = ppc_nvram_write_byte, > > .get_size = ppc_nvram_get_size, > > .sync = ppc_nvram_sync, > > }; > > diff --git a/drivers/char/generic_nvram.c b/drivers/char/generic_nvram.c > > index f32d5663de95..41b76bf9614e 100644 > > --- a/drivers/char/generic_nvram.c > > +++ b/drivers/char/generic_nvram.c > > @@ -48,7 +48,7 @@ static ssize_t read_nvram(struct file *file, char __user > > *buf, > > if (*ppos >= nvram_len) > > return 0; > > for (i = *ppos; count > 0 && i < nvram_len; ++i, ++p, --count) > > - if (__put_user(nvram_read_byte(i), p)) > > + if (__put_user(arch_nvram_ops.read_byte(i), p)) > > Instead of modifying all drivers (in this patch and previous ones related to > other arches), wouldn't it be better to add helpers like the following in > nvram.h: > > Static inline unsigned char nvram_read_byte(int addr) > { > return arch_nvram_ops.read_byte(addr); > } > Is there some benefit, or is that just personal taste? Avoiding changes to call sites avoids code review, but I think 1) the thinkpad_acpi changes have already been reviewed and 2) the fbdev changes need review anyway. Your suggesion would add several new entities and one extra layer of indirection. I think indirection harms readability because now the reader now has to go and look up the meaning of the new entities. It's not the case that we need to choose between definitions of nvram_read_byte() at compile time, or stub them out: #ifdef CONFIG_FOO static inline unsigned char nvram_read_byte(int addr) { return arch_nvram_ops.read_byte(addr); } #else static inline unsigned char nvram_read_byte(int addr) { } #endif And I don't anticipate a need for a macro here either: #define nvram_read_byte(a) random_nvram_read_byte_impl(a) I think I've used the simplest solution. -- > Christophe >