From: Juergen Gross <jgross@suse.com> To: linux-kernel@vger.kernel.org, x86@kernel.org, linux-arch@vger.kernel.org, linux-s390@vger.kernel.org, linux-hyperv@vger.kernel.org, virtualization@lists.linux-foundation.org Cc: Juergen Gross <jgross@suse.com>, Arnd Bergmann <arnd@arndb.de>, Heiko Carstens <hca@linux.ibm.com>, Vasily Gorbik <gor@linux.ibm.com>, Alexander Gordeev <agordeev@linux.ibm.com>, Christian Borntraeger <borntraeger@linux.ibm.com>, Sven Schnelle <svens@linux.ibm.com>, Thomas Gleixner <tglx@linutronix.de>, Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>, Dave Hansen <dave.hansen@linux.intel.com>, "H. Peter Anvin" <hpa@zytor.com>, "K. Y. Srinivasan" <kys@microsoft.com>, Haiyang Zhang <haiyangz@microsoft.com>, Stephen Hemminger <sthemmin@microsoft.com>, Wei Liu <wei.liu@kernel.org>, Dexuan Cui <decui@microsoft.com>, Andy Lutomirski <luto@kernel.org>, Peter Zijlstra <peterz@infradead.org>, "Michael S. Tsirkin" <mst@redhat.com>, Jason Wang <jasowang@redhat.com>, Christoph Hellwig <hch@infradead.org>, Oleksandr Tyshchenko <olekstysh@gmail.com> Subject: [PATCH 1/2] kernel: add platform_has() infrastructure Date: Tue, 26 Apr 2022 15:40:20 +0200 [thread overview] Message-ID: <20220426134021.11210-2-jgross@suse.com> (raw) In-Reply-To: <20220426134021.11210-1-jgross@suse.com> Add a simple infrastructure for setting, resetting and querying platform feature flags. Flags can be either global or architecture specific. Signed-off-by: Juergen Gross <jgross@suse.com> --- MAINTAINERS | 8 +++++++ include/asm-generic/Kbuild | 1 + include/asm-generic/platform-feature.h | 8 +++++++ include/linux/platform-feature.h | 29 ++++++++++++++++++++++++++ kernel/Makefile | 2 +- kernel/platform-feature.c | 7 +++++++ 6 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 include/asm-generic/platform-feature.h create mode 100644 include/linux/platform-feature.h create mode 100644 kernel/platform-feature.c diff --git a/MAINTAINERS b/MAINTAINERS index 5e8c2f611766..eb943f089eda 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -15650,6 +15650,14 @@ S: Maintained F: Documentation/devicetree/bindings/iio/chemical/plantower,pms7003.yaml F: drivers/iio/chemical/pms7003.c +PLATFORM FEATURE INFRASTRUCTURE +M: Juergen Gross <jgross@suse.com> +S: Maintained +F: arch/*/include/asm/platform-feature.h +F: include/asm-generic/platform-feature.h +F: include/linux/platform-feature.h +F: kernel/platform-feature.c + PLDMFW LIBRARY M: Jacob Keller <jacob.e.keller@intel.com> S: Maintained diff --git a/include/asm-generic/Kbuild b/include/asm-generic/Kbuild index 302506bbc2a4..8e47d483b524 100644 --- a/include/asm-generic/Kbuild +++ b/include/asm-generic/Kbuild @@ -44,6 +44,7 @@ mandatory-y += msi.h mandatory-y += pci.h mandatory-y += percpu.h mandatory-y += pgalloc.h +mandatory-y += platform-feature.h mandatory-y += preempt.h mandatory-y += rwonce.h mandatory-y += sections.h diff --git a/include/asm-generic/platform-feature.h b/include/asm-generic/platform-feature.h new file mode 100644 index 000000000000..4b0af3d51588 --- /dev/null +++ b/include/asm-generic/platform-feature.h @@ -0,0 +1,8 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef _ASM_GENERIC_PLATFORM_FEATURE_H +#define _ASM_GENERIC_PLATFORM_FEATURE_H + +/* Number of arch specific feature flags. */ +#define PLATFORM_ARCH_FEAT_N 0 + +#endif /* _ASM_GENERIC_PLATFORM_FEATURE_H */ diff --git a/include/linux/platform-feature.h b/include/linux/platform-feature.h new file mode 100644 index 000000000000..df393d502a4f --- /dev/null +++ b/include/linux/platform-feature.h @@ -0,0 +1,29 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef _PLATFORM_FEATURE_H +#define _PLATFORM_FEATURE_H + +#include <linux/bitops.h> +#include <asm/platform-feature.h> + +/* The platform features are starting with the architecture specific ones. */ +#define PLATFORM_FEAT_N (0 + PLATFORM_ARCH_FEAT_N) + +#define PLATFORM_FEAT_ARRAY_SZ BITS_TO_LONGS(PLATFORM_FEAT_N) +extern unsigned long platform_features[PLATFORM_FEAT_ARRAY_SZ]; + +static inline void platform_set_feature(unsigned int feature) +{ + set_bit(feature, platform_features); +} + +static inline void platform_reset_feature(unsigned int feature) +{ + clear_bit(feature, platform_features); +} + +static inline bool platform_has(unsigned int feature) +{ + return test_bit(feature, platform_features); +} + +#endif /* _PLATFORM_FEATURE_H */ diff --git a/kernel/Makefile b/kernel/Makefile index 847a82bfe0e3..2f412f80110d 100644 --- a/kernel/Makefile +++ b/kernel/Makefile @@ -7,7 +7,7 @@ obj-y = fork.o exec_domain.o panic.o \ cpu.o exit.o softirq.o resource.o \ sysctl.o capability.o ptrace.o user.o \ signal.o sys.o umh.o workqueue.o pid.o task_work.o \ - extable.o params.o \ + extable.o params.o platform-feature.o \ kthread.o sys_ni.o nsproxy.o \ notifier.o ksysfs.o cred.o reboot.o \ async.o range.o smpboot.o ucount.o regset.o diff --git a/kernel/platform-feature.c b/kernel/platform-feature.c new file mode 100644 index 000000000000..2d52f8442cd5 --- /dev/null +++ b/kernel/platform-feature.c @@ -0,0 +1,7 @@ +// SPDX-License-Identifier: GPL-2.0 + +#include <linux/cache.h> +#include <linux/platform-feature.h> + +unsigned long __read_mostly platform_features[PLATFORM_FEAT_ARRAY_SZ]; +EXPORT_SYMBOL_GPL(platform_features); -- 2.34.1
WARNING: multiple messages have this Message-ID (diff)
From: Juergen Gross via Virtualization <virtualization@lists.linux-foundation.org> To: linux-kernel@vger.kernel.org, x86@kernel.org, linux-arch@vger.kernel.org, linux-s390@vger.kernel.org, linux-hyperv@vger.kernel.org, virtualization@lists.linux-foundation.org Cc: "Michael S. Tsirkin" <mst@redhat.com>, Peter Zijlstra <peterz@infradead.org>, Dave Hansen <dave.hansen@linux.intel.com>, "H. Peter Anvin" <hpa@zytor.com>, Alexander Gordeev <agordeev@linux.ibm.com>, Wei Liu <wei.liu@kernel.org>, Stephen Hemminger <sthemmin@microsoft.com>, Vasily Gorbik <gor@linux.ibm.com>, Dexuan Cui <decui@microsoft.com>, Christoph Hellwig <hch@infradead.org>, Ingo Molnar <mingo@redhat.com>, Haiyang Zhang <haiyangz@microsoft.com>, Arnd Bergmann <arnd@arndb.de>, Heiko Carstens <hca@linux.ibm.com>, Borislav Petkov <bp@alien8.de>, Andy Lutomirski <luto@kernel.org>, Thomas Gleixner <tglx@linutronix.de>, Juergen Gross <jgross@suse.com>, Oleksandr Tyshchenko <olekstysh@gmail.com>, Sven Schnelle <svens@linux.ibm.com> Subject: [PATCH 1/2] kernel: add platform_has() infrastructure Date: Tue, 26 Apr 2022 15:40:20 +0200 [thread overview] Message-ID: <20220426134021.11210-2-jgross@suse.com> (raw) In-Reply-To: <20220426134021.11210-1-jgross@suse.com> Add a simple infrastructure for setting, resetting and querying platform feature flags. Flags can be either global or architecture specific. Signed-off-by: Juergen Gross <jgross@suse.com> --- MAINTAINERS | 8 +++++++ include/asm-generic/Kbuild | 1 + include/asm-generic/platform-feature.h | 8 +++++++ include/linux/platform-feature.h | 29 ++++++++++++++++++++++++++ kernel/Makefile | 2 +- kernel/platform-feature.c | 7 +++++++ 6 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 include/asm-generic/platform-feature.h create mode 100644 include/linux/platform-feature.h create mode 100644 kernel/platform-feature.c diff --git a/MAINTAINERS b/MAINTAINERS index 5e8c2f611766..eb943f089eda 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -15650,6 +15650,14 @@ S: Maintained F: Documentation/devicetree/bindings/iio/chemical/plantower,pms7003.yaml F: drivers/iio/chemical/pms7003.c +PLATFORM FEATURE INFRASTRUCTURE +M: Juergen Gross <jgross@suse.com> +S: Maintained +F: arch/*/include/asm/platform-feature.h +F: include/asm-generic/platform-feature.h +F: include/linux/platform-feature.h +F: kernel/platform-feature.c + PLDMFW LIBRARY M: Jacob Keller <jacob.e.keller@intel.com> S: Maintained diff --git a/include/asm-generic/Kbuild b/include/asm-generic/Kbuild index 302506bbc2a4..8e47d483b524 100644 --- a/include/asm-generic/Kbuild +++ b/include/asm-generic/Kbuild @@ -44,6 +44,7 @@ mandatory-y += msi.h mandatory-y += pci.h mandatory-y += percpu.h mandatory-y += pgalloc.h +mandatory-y += platform-feature.h mandatory-y += preempt.h mandatory-y += rwonce.h mandatory-y += sections.h diff --git a/include/asm-generic/platform-feature.h b/include/asm-generic/platform-feature.h new file mode 100644 index 000000000000..4b0af3d51588 --- /dev/null +++ b/include/asm-generic/platform-feature.h @@ -0,0 +1,8 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef _ASM_GENERIC_PLATFORM_FEATURE_H +#define _ASM_GENERIC_PLATFORM_FEATURE_H + +/* Number of arch specific feature flags. */ +#define PLATFORM_ARCH_FEAT_N 0 + +#endif /* _ASM_GENERIC_PLATFORM_FEATURE_H */ diff --git a/include/linux/platform-feature.h b/include/linux/platform-feature.h new file mode 100644 index 000000000000..df393d502a4f --- /dev/null +++ b/include/linux/platform-feature.h @@ -0,0 +1,29 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef _PLATFORM_FEATURE_H +#define _PLATFORM_FEATURE_H + +#include <linux/bitops.h> +#include <asm/platform-feature.h> + +/* The platform features are starting with the architecture specific ones. */ +#define PLATFORM_FEAT_N (0 + PLATFORM_ARCH_FEAT_N) + +#define PLATFORM_FEAT_ARRAY_SZ BITS_TO_LONGS(PLATFORM_FEAT_N) +extern unsigned long platform_features[PLATFORM_FEAT_ARRAY_SZ]; + +static inline void platform_set_feature(unsigned int feature) +{ + set_bit(feature, platform_features); +} + +static inline void platform_reset_feature(unsigned int feature) +{ + clear_bit(feature, platform_features); +} + +static inline bool platform_has(unsigned int feature) +{ + return test_bit(feature, platform_features); +} + +#endif /* _PLATFORM_FEATURE_H */ diff --git a/kernel/Makefile b/kernel/Makefile index 847a82bfe0e3..2f412f80110d 100644 --- a/kernel/Makefile +++ b/kernel/Makefile @@ -7,7 +7,7 @@ obj-y = fork.o exec_domain.o panic.o \ cpu.o exit.o softirq.o resource.o \ sysctl.o capability.o ptrace.o user.o \ signal.o sys.o umh.o workqueue.o pid.o task_work.o \ - extable.o params.o \ + extable.o params.o platform-feature.o \ kthread.o sys_ni.o nsproxy.o \ notifier.o ksysfs.o cred.o reboot.o \ async.o range.o smpboot.o ucount.o regset.o diff --git a/kernel/platform-feature.c b/kernel/platform-feature.c new file mode 100644 index 000000000000..2d52f8442cd5 --- /dev/null +++ b/kernel/platform-feature.c @@ -0,0 +1,7 @@ +// SPDX-License-Identifier: GPL-2.0 + +#include <linux/cache.h> +#include <linux/platform-feature.h> + +unsigned long __read_mostly platform_features[PLATFORM_FEAT_ARRAY_SZ]; +EXPORT_SYMBOL_GPL(platform_features); -- 2.34.1 _______________________________________________ Virtualization mailing list Virtualization@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/virtualization
next prev parent reply other threads:[~2022-04-26 13:40 UTC|newest] Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-04-26 13:40 [PATCH 0/2] kernel: add new infrastructure for platform_has() support Juergen Gross 2022-04-26 13:40 ` Juergen Gross via Virtualization 2022-04-26 13:40 ` Juergen Gross [this message] 2022-04-26 13:40 ` [PATCH 1/2] kernel: add platform_has() infrastructure Juergen Gross via Virtualization 2022-04-26 17:31 ` Borislav Petkov 2022-04-26 17:31 ` Borislav Petkov 2022-04-26 19:53 ` Heiko Carstens 2022-04-26 20:09 ` Borislav Petkov 2022-04-26 20:09 ` Borislav Petkov 2022-04-27 6:20 ` Juergen Gross 2022-04-27 6:20 ` Juergen Gross via Virtualization 2022-04-26 13:40 ` [PATCH 2/2] virtio: replace arch_has_restricted_virtio_memory_access() Juergen Gross 2022-04-26 13:40 ` Juergen Gross via Virtualization 2022-04-26 17:35 ` Borislav Petkov 2022-04-26 17:35 ` Borislav Petkov 2022-04-26 19:51 ` Heiko Carstens 2022-04-27 6:40 ` Juergen Gross 2022-04-27 6:40 ` Juergen Gross via Virtualization 2022-04-27 12:26 ` Borislav Petkov 2022-04-27 12:26 ` Borislav Petkov 2022-04-27 12:45 ` Juergen Gross 2022-04-27 12:45 ` Juergen Gross via Virtualization 2022-04-27 6:37 ` Juergen Gross 2022-04-27 6:37 ` Juergen Gross via Virtualization 2022-04-27 12:28 ` Borislav Petkov 2022-04-27 12:28 ` Borislav Petkov 2022-04-27 12:37 ` Juergen Gross 2022-04-27 12:37 ` Juergen Gross via Virtualization 2022-04-27 14:09 ` Tom Lendacky 2022-04-27 14:09 ` Tom Lendacky via Virtualization 2022-04-27 14:14 ` Juergen Gross 2022-04-27 14:14 ` Juergen Gross via Virtualization 2022-04-27 7:48 ` [PATCH 0/2] kernel: add new infrastructure for platform_has() support Oleksandr
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20220426134021.11210-2-jgross@suse.com \ --to=jgross@suse.com \ --cc=agordeev@linux.ibm.com \ --cc=arnd@arndb.de \ --cc=borntraeger@linux.ibm.com \ --cc=bp@alien8.de \ --cc=dave.hansen@linux.intel.com \ --cc=decui@microsoft.com \ --cc=gor@linux.ibm.com \ --cc=haiyangz@microsoft.com \ --cc=hca@linux.ibm.com \ --cc=hch@infradead.org \ --cc=hpa@zytor.com \ --cc=jasowang@redhat.com \ --cc=kys@microsoft.com \ --cc=linux-arch@vger.kernel.org \ --cc=linux-hyperv@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-s390@vger.kernel.org \ --cc=luto@kernel.org \ --cc=mingo@redhat.com \ --cc=mst@redhat.com \ --cc=olekstysh@gmail.com \ --cc=peterz@infradead.org \ --cc=sthemmin@microsoft.com \ --cc=svens@linux.ibm.com \ --cc=tglx@linutronix.de \ --cc=virtualization@lists.linux-foundation.org \ --cc=wei.liu@kernel.org \ --cc=x86@kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.