Message ID | 20220718210156.1535955-5-gjoyce@linux.vnet.ibm.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | sed-opal: keyrings, discovery, revert and key store | expand |
On Mon, Jul 18, 2022 at 04:01:56PM -0500, gjoyce@linux.vnet.ibm.com wrote: > From: Greg Joyce <gjoyce@linux.vnet.ibm.com> > > Platforms that have a permanent key store may provide unique > platform dependent functions to read/write variables. The > default (weak) functions return -EOPNOTSUPP unless overridden > by architecture/platform versions. This is still lacking any useful implementation. It also seems to be used in patch 3 before it actually is used. As the functionality seems optional I'd suggest to drop this patch for now and not call it from patch 3, and do a separate series later that adds the infrastructure, at leat one useful backend and the caller.
On Wed, 2022-07-20 at 00:50 -0700, Christoph Hellwig wrote: > On Mon, Jul 18, 2022 at 04:01:56PM -0500, gjoyce@linux.vnet.ibm.com > wrote: > > From: Greg Joyce <gjoyce@linux.vnet.ibm.com> > > > > Platforms that have a permanent key store may provide unique > > platform dependent functions to read/write variables. The > > default (weak) functions return -EOPNOTSUPP unless overridden > > by architecture/platform versions. > > This is still lacking any useful implementation. It also seems to be > used in patch 3 before it actually is used. > > As the functionality seems optional I'd suggest to drop this patch > for > now and not call it from patch 3, and do a separate series later that > adds the infrastructure, at leat one useful backend and the caller. It's kind of a chicken and egg thing. I'd hoped to add the infrastructure and follow it up with another pseries specific patchset that provided platform specific implementations of those functions. But I can break it up as you suggest. I'll include your other comments as well as the keyring suggestion from Hannes.
diff --git a/include/linux/arch_vars.h b/include/linux/arch_vars.h new file mode 100644 index 000000000000..9c280ff9432e --- /dev/null +++ b/include/linux/arch_vars.h @@ -0,0 +1,23 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Platform variable opearations. + * + * Copyright (C) 2022 IBM Corporation + * + * These are the accessor functions (read/write) for architecture specific + * variables. Specific architectures can provide overrides. + * + */ + +#include <linux/kernel.h> + +enum arch_variable_type { + ARCH_VAR_OPAL_KEY = 0, /* SED Opal Authentication Key */ + ARCH_VAR_OTHER = 1, /* Other type of variable */ + ARCH_VAR_MAX = 1, /* Maximum type value */ +}; + +int arch_read_variable(enum arch_variable_type type, char *varname, + void *varbuf, u_int *varlen); +int arch_write_variable(enum arch_variable_type type, char *varname, + void *varbuf, u_int varlen); diff --git a/lib/Makefile b/lib/Makefile index f99bf61f8bbc..b90c4cb0dbbb 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -48,7 +48,7 @@ obj-y += bcd.o sort.o parser.o debug_locks.o random32.o \ bsearch.o find_bit.o llist.o memweight.o kfifo.o \ percpu-refcount.o rhashtable.o \ once.o refcount.o usercopy.o errseq.o bucket_locks.o \ - generic-radix-tree.o + generic-radix-tree.o arch_vars.o obj-$(CONFIG_STRING_SELFTEST) += test_string.o obj-y += string_helpers.o obj-$(CONFIG_TEST_STRING_HELPERS) += test-string_helpers.o diff --git a/lib/arch_vars.c b/lib/arch_vars.c new file mode 100644 index 000000000000..e6f16d7d09c1 --- /dev/null +++ b/lib/arch_vars.c @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Platform variable operations. + * + * Copyright (C) 2022 IBM Corporation + * + * These are the accessor functions (read/write) for architecture specific + * variables. Specific architectures can provide overrides. + * + */ + +#include <linux/kernel.h> +#include <linux/arch_vars.h> + +int __weak arch_read_variable(enum arch_variable_type type, char *varname, + void *varbuf, u_int *varlen) +{ + return -EOPNOTSUPP; +} + +int __weak arch_write_variable(enum arch_variable_type type, char *varname, + void *varbuf, u_int varlen) +{ + return -EOPNOTSUPP; +}