Re: [PATCH v8 24/25] powerpc: Adopt nvram module for PPC64

From: Arnd Bergmann
Date: Sat Dec 29 2018 - 17:37:09 EST


On Wed, Dec 26, 2018 at 1:43 AM Finn Thain <fthain@xxxxxxxxxxxxxxxxxxx> wrote:

> +static ssize_t ppc_nvram_get_size(void)
> +{
> + if (ppc_md.nvram_size)
> + return ppc_md.nvram_size();
> + return -ENODEV;
> +}

> +const struct nvram_ops arch_nvram_ops = {
> + .read = ppc_nvram_read,
> + .write = ppc_nvram_write,
> + .get_size = ppc_nvram_get_size,
> + .sync = ppc_nvram_sync,
> +};

Coming back to this after my comment on the m68k side, I notice that
there is now a double indirection through function pointers. Have you
considered completely removing the operations from ppc_md instead
by having multiple copies of nvram_ops?

With the current method, it does seem odd to have a single
per-architecture instance of the exported structure containing
function pointers. This doesn't give us the flexibility of having
multiple copies in the kernel the way that ppc_md does, but it adds
overhead compared to simply exporting the functions directly.

Arnd