Commit 12376084 authored by Holger Dengler's avatar Holger Dengler Committed by Alexander Gordeev

s390/ap: modularize ap bus

There is no hard requirement to have the ap bus statically in the
kernel, so add an option to compile it as module.

Cc: Tony Krowiak <akrowiak@linux.ibm.com>
Cc: Halil Pasic <pasic@linux.ibm.com>
Signed-off-by: default avatarHolger Dengler <dengler@linux.ibm.com>
Reviewed-by: default avatarHarald Freudenberger <freude@linux.ibm.com>
Reviewed-by: default avatarAnthony Krowiak <akrowiak@linux.ibm.com>
Signed-off-by: default avatarAlexander Gordeev <agordeev@linux.ibm.com>
parent 2a483d33
......@@ -550,7 +550,7 @@ These are the steps:
following Kconfig elements selected:
* IOMMU_SUPPORT
* S390
* ZCRYPT
* AP
* VFIO
* KVM
......
......@@ -724,6 +724,19 @@ config EADM_SCH
To compile this driver as a module, choose M here: the
module will be called eadm_sch.
config AP
def_tristate y
prompt "Support for Adjunct Processors (ap)"
help
This driver allows usage to Adjunct Processor (AP) devices via
the ap bus, cards and queues. Supported Adjunct Processors are
the CryptoExpress Cards (CEX).
To compile this driver as a module, choose M here: the
module will be called ap.
If unsure, say Y (default).
config VFIO_CCW
def_tristate n
prompt "Support for VFIO-CCW subchannels"
......@@ -740,7 +753,7 @@ config VFIO_AP
prompt "VFIO support for AP devices"
depends on KVM
depends on VFIO
depends on ZCRYPT
depends on AP
select VFIO_MDEV
help
This driver grants access to Adjunct Processor (AP) devices
......
......@@ -67,6 +67,7 @@ config CRYPTO_DEV_GEODE
config ZCRYPT
tristate "Support for s390 cryptographic adapters"
depends on S390
depends on AP
select HW_RANDOM
help
Select this option if you want to enable support for
......
......@@ -32,7 +32,7 @@ obj-$(CONFIG_SCLP_VT220_TTY) += sclp_vt220.o
obj-$(CONFIG_PCI) += sclp_pci.o
obj-$(subst m,y,$(CONFIG_ZCRYPT)) += sclp_ap.o
obj-$(subst m,y,$(CONFIG_AP)) += sclp_ap.o
obj-$(CONFIG_VMLOGRDR) += vmlogrdr.o
obj-$(CONFIG_VMCP) += vmcp.o
......
......@@ -4,7 +4,7 @@
#
ap-objs := ap_bus.o ap_card.o ap_queue.o
obj-$(subst m,y,$(CONFIG_ZCRYPT)) += ap.o
obj-$(CONFIG_AP) += ap.o
# zcrypt_api.o and zcrypt_msgtype*.o depend on ap.o
zcrypt-objs := zcrypt_api.o zcrypt_card.o zcrypt_queue.o
zcrypt-objs += zcrypt_msgtype6.o zcrypt_msgtype50.o
......
......@@ -44,9 +44,10 @@
#include "ap_bus.h"
#include "ap_debug.h"
/*
* Module parameters; note though this file itself isn't modular.
*/
MODULE_AUTHOR("IBM Corporation");
MODULE_DESCRIPTION("Adjunct Processor Bus driver");
MODULE_LICENSE("GPL");
int ap_domain_index = -1; /* Adjunct Processor Domain Index */
static DEFINE_SPINLOCK(ap_domain_lock);
module_param_named(domain, ap_domain_index, int, 0440);
......@@ -2284,6 +2285,16 @@ static void ap_scan_bus_wq_callback(struct work_struct *unused)
}
}
static inline void __exit ap_async_exit(void)
{
if (ap_thread_flag)
ap_poll_thread_stop();
chsc_notifier_unregister(&ap_bus_nb);
cancel_work(&ap_scan_bus_work);
hrtimer_cancel(&ap_poll_timer);
timer_delete(&ap_scan_bus_timer);
}
static inline int __init ap_async_init(void)
{
int rc;
......@@ -2451,4 +2462,15 @@ static int __init ap_module_init(void)
ap_debug_exit();
return rc;
}
device_initcall(ap_module_init);
static void __exit ap_module_exit(void)
{
ap_async_exit();
ap_irq_exit();
root_device_unregister(ap_root_device);
bus_unregister(&ap_bus_type);
ap_debug_exit();
}
module_init(ap_module_init);
module_exit(ap_module_exit);
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment