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