mirror of
https://github.com/brain-hackers/linux-brain.git
synced 2024-06-09 23:36:23 +09:00
16447b2f5c
commit 333cf507465fbebb3727f5b53e77538467df312a upstream. With commit c9f3401313a5 ("powerpc: Always enable queued spinlocks for 64s, disable for others") CONFIG_PPC_QUEUED_SPINLOCKS is always enabled on ppc64le, external modules that use spinlock APIs are failing. ERROR: modpost: GPL-incompatible module XXX.ko uses GPL-only symbol 'shared_processor' Before the above commit, modules were able to build without any issues. Also this problem is not seen on other architectures. This problem can be workaround if CONFIG_UNINLINE_SPIN_UNLOCK is enabled in the config. However CONFIG_UNINLINE_SPIN_UNLOCK is not enabled by default and only enabled in certain conditions like CONFIG_DEBUG_SPINLOCKS is set in the kernel config. #include <linux/module.h> spinlock_t spLock; static int __init spinlock_test_init(void) { spin_lock_init(&spLock); spin_lock(&spLock); spin_unlock(&spLock); return 0; } static void __exit spinlock_test_exit(void) { printk("spinlock_test unloaded\n"); } module_init(spinlock_test_init); module_exit(spinlock_test_exit); MODULE_DESCRIPTION ("spinlock_test"); MODULE_LICENSE ("non-GPL"); MODULE_AUTHOR ("Srikar Dronamraju"); Given that spin locks are one of the basic facilities for module code, this effectively makes it impossible to build/load almost any non GPL modules on ppc64le. This was first reported at https://github.com/openzfs/zfs/issues/11172 Currently shared_processor is exported as GPL only symbol. Fix this for parity with other architectures by exposing shared_processor to non-GPL modules too. Fixes: 14c73bd344da ("powerpc/vcpu: Assume dedicated processors as non-preempt") Cc: stable@vger.kernel.org # v5.5+ Reported-by: marc.c.dionne@gmail.com Signed-off-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/20210729060449.292780-1-srikar@linux.vnet.ibm.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
||
---|---|---|
.. | ||
cmm.c | ||
dlpar.c | ||
dtl.c | ||
eeh_pseries.c | ||
event_sources.c | ||
firmware.c | ||
hotplug-cpu.c | ||
hotplug-memory.c | ||
hvCall_inst.c | ||
hvCall.S | ||
hvconsole.c | ||
hvcserver.c | ||
ibmebus.c | ||
io_event_irq.c | ||
iommu.c | ||
Kconfig | ||
kexec.c | ||
lpar.c | ||
lparcfg.c | ||
Makefile | ||
mobility.c | ||
msi.c | ||
nvram.c | ||
of_helpers.c | ||
of_helpers.h | ||
offline_states.h | ||
papr_scm.c | ||
pci_dlpar.c | ||
pci.c | ||
pmem.c | ||
power.c | ||
pseries_energy.c | ||
pseries.h | ||
ras.c | ||
reconfig.c | ||
rng.c | ||
rtas-fadump.c | ||
rtas-fadump.h | ||
scanlog.c | ||
setup.c | ||
smp.c | ||
suspend.c | ||
svm.c | ||
vio.c | ||
vphn.c |