1 // SPDX-License-Identifier: GPL-2.0+
3 * Copyright IBM Corp. 2006, 2023
4 * Author(s): Cornelia Huck <cornelia.huck@de.ibm.com>
5 * Martin Schwidefsky <schwidefsky@de.ibm.com>
6 * Ralph Wuerthner <rwuerthn@de.ibm.com>
7 * Felix Beck <felix.beck@de.ibm.com>
8 * Holger Dengler <hd@linux.vnet.ibm.com>
9 * Harald Freudenberger <freude@linux.ibm.com>
11 * Adjunct processor bus.
14 #define KMSG_COMPONENT "ap"
15 #define pr_fmt(fmt) KMSG_COMPONENT ": " fmt
17 #include <linux/kernel_stat.h>
18 #include <linux/moduleparam.h>
19 #include <linux/init.h>
20 #include <linux/delay.h>
21 #include <linux/err.h>
22 #include <linux/freezer.h>
23 #include <linux/interrupt.h>
24 #include <linux/workqueue.h>
25 #include <linux/slab.h>
26 #include <linux/notifier.h>
27 #include <linux/kthread.h>
28 #include <linux/mutex.h>
31 #include <linux/atomic.h>
33 #include <linux/hrtimer.h>
34 #include <linux/ktime.h>
35 #include <asm/facility.h>
36 #include <linux/crypto.h>
37 #include <linux/mod_devicetable.h>
38 #include <linux/debugfs.h>
39 #include <linux/ctype.h>
40 #include <linux/module.h>
47 MODULE_AUTHOR("IBM Corporation");
48 MODULE_DESCRIPTION("Adjunct Processor Bus driver");
49 MODULE_LICENSE("GPL");
51 int ap_domain_index
= -1; /* Adjunct Processor Domain Index */
52 static DEFINE_SPINLOCK(ap_domain_lock
);
53 module_param_named(domain
, ap_domain_index
, int, 0440);
54 MODULE_PARM_DESC(domain
, "domain index for ap devices");
55 EXPORT_SYMBOL(ap_domain_index
);
57 static int ap_thread_flag
;
58 module_param_named(poll_thread
, ap_thread_flag
, int, 0440);
59 MODULE_PARM_DESC(poll_thread
, "Turn on/off poll thread, default is 0 (off).");
62 module_param_named(apmask
, apm_str
, charp
, 0440);
63 MODULE_PARM_DESC(apmask
, "AP bus adapter mask.");
66 module_param_named(aqmask
, aqm_str
, charp
, 0440);
67 MODULE_PARM_DESC(aqmask
, "AP bus domain mask.");
69 static int ap_useirq
= 1;
70 module_param_named(useirq
, ap_useirq
, int, 0440);
71 MODULE_PARM_DESC(useirq
, "Use interrupt if available, default is 1 (on).");
73 atomic_t ap_max_msg_size
= ATOMIC_INIT(AP_DEFAULT_MAX_MSG_SIZE
);
74 EXPORT_SYMBOL(ap_max_msg_size
);
76 static struct device
*ap_root_device
;
78 /* Hashtable of all queue devices on the AP bus */
79 DEFINE_HASHTABLE(ap_queues
, 8);
80 /* lock used for the ap_queues hashtable */
81 DEFINE_SPINLOCK(ap_queues_lock
);
83 /* Default permissions (ioctl, card and domain masking) */
84 struct ap_perms ap_perms
;
85 EXPORT_SYMBOL(ap_perms
);
86 DEFINE_MUTEX(ap_perms_mutex
);
87 EXPORT_SYMBOL(ap_perms_mutex
);
89 /* # of bindings complete since init */
90 static atomic64_t ap_bindings_complete_count
= ATOMIC64_INIT(0);
92 /* completion for APQN bindings complete */
93 static DECLARE_COMPLETION(ap_apqn_bindings_complete
);
95 static struct ap_config_info qci
[2];
96 static struct ap_config_info
*const ap_qci_info
= &qci
[0];
97 static struct ap_config_info
*const ap_qci_info_old
= &qci
[1];
100 * AP bus related debug feature things.
102 debug_info_t
*ap_dbf_info
;
105 * AP bus rescan related things.
107 static bool ap_scan_bus(void);
108 static bool ap_scan_bus_result
; /* result of last ap_scan_bus() */
109 static DEFINE_MUTEX(ap_scan_bus_mutex
); /* mutex ap_scan_bus() invocations */
110 static struct task_struct
*ap_scan_bus_task
; /* thread holding the scan mutex */
111 static atomic64_t ap_scan_bus_count
; /* counter ap_scan_bus() invocations */
112 static int ap_scan_bus_time
= AP_CONFIG_TIME
;
113 static struct timer_list ap_scan_bus_timer
;
114 static void ap_scan_bus_wq_callback(struct work_struct
*);
115 static DECLARE_WORK(ap_scan_bus_work
, ap_scan_bus_wq_callback
);
118 * Tasklet & timer for AP request polling and interrupts
120 static void ap_tasklet_fn(unsigned long);
121 static DECLARE_TASKLET_OLD(ap_tasklet
, ap_tasklet_fn
);
122 static DECLARE_WAIT_QUEUE_HEAD(ap_poll_wait
);
123 static struct task_struct
*ap_poll_kthread
;
124 static DEFINE_MUTEX(ap_poll_thread_mutex
);
125 static DEFINE_SPINLOCK(ap_poll_timer_lock
);
126 static struct hrtimer ap_poll_timer
;
128 * In LPAR poll with 4kHz frequency. Poll every 250000 nanoseconds.
129 * If z/VM change to 1500000 nanoseconds to adjust to z/VM polling.
131 static unsigned long poll_high_timeout
= 250000UL;
134 * Some state machine states only require a low frequency polling.
135 * We use 25 Hz frequency for these.
137 static unsigned long poll_low_timeout
= 40000000UL;
139 /* Maximum domain id, if not given via qci */
140 static int ap_max_domain_id
= 15;
141 /* Maximum adapter id, if not given via qci */
142 static int ap_max_adapter_id
= 63;
144 static const struct bus_type ap_bus_type
;
146 /* Adapter interrupt definitions */
147 static void ap_interrupt_handler(struct airq_struct
*airq
,
148 struct tpi_info
*tpi_info
);
150 static bool ap_irq_flag
;
152 static struct airq_struct ap_airq
= {
153 .handler
= ap_interrupt_handler
,
158 * ap_airq_ptr() - Get the address of the adapter interrupt indicator
160 * Returns the address of the local-summary-indicator of the adapter
161 * interrupt handler for AP, or NULL if adapter interrupts are not
164 void *ap_airq_ptr(void)
167 return ap_airq
.lsi_ptr
;
172 * ap_interrupts_available(): Test if AP interrupts are available.
174 * Returns 1 if AP interrupts are available.
176 static int ap_interrupts_available(void)
178 return test_facility(65);
182 * ap_qci_available(): Test if AP configuration
183 * information can be queried via QCI subfunction.
185 * Returns 1 if subfunction PQAP(QCI) is available.
187 static int ap_qci_available(void)
189 return test_facility(12);
193 * ap_apft_available(): Test if AP facilities test (APFT)
194 * facility is available.
196 * Returns 1 if APFT is available.
198 static int ap_apft_available(void)
200 return test_facility(15);
204 * ap_qact_available(): Test if the PQAP(QACT) subfunction is available.
206 * Returns 1 if the QACT subfunction is available.
208 static inline int ap_qact_available(void)
210 return ap_qci_info
->qact
;
214 * ap_sb_available(): Test if the AP secure binding facility is available.
216 * Returns 1 if secure binding facility is available.
218 int ap_sb_available(void)
220 return ap_qci_info
->apsb
;
224 * ap_is_se_guest(): Check for SE guest with AP pass-through support.
226 bool ap_is_se_guest(void)
228 return is_prot_virt_guest() && ap_sb_available();
230 EXPORT_SYMBOL(ap_is_se_guest
);
233 * ap_init_qci_info(): Allocate and query qci config info.
234 * Does also update the static variables ap_max_domain_id
235 * and ap_max_adapter_id if this info is available.
237 static void __init
ap_init_qci_info(void)
239 if (!ap_qci_available() ||
240 ap_qci(ap_qci_info
)) {
241 AP_DBF_INFO("%s QCI not supported\n", __func__
);
244 memcpy(ap_qci_info_old
, ap_qci_info
, sizeof(*ap_qci_info
));
245 AP_DBF_INFO("%s successful fetched initial qci info\n", __func__
);
247 if (ap_qci_info
->apxa
) {
248 if (ap_qci_info
->na
) {
249 ap_max_adapter_id
= ap_qci_info
->na
;
250 AP_DBF_INFO("%s new ap_max_adapter_id is %d\n",
251 __func__
, ap_max_adapter_id
);
253 if (ap_qci_info
->nd
) {
254 ap_max_domain_id
= ap_qci_info
->nd
;
255 AP_DBF_INFO("%s new ap_max_domain_id is %d\n",
256 __func__
, ap_max_domain_id
);
262 * ap_test_config(): helper function to extract the nrth bit
263 * within the unsigned int array field.
265 static inline int ap_test_config(unsigned int *field
, unsigned int nr
)
267 return ap_test_bit((field
+ (nr
>> 5)), (nr
& 0x1f));
271 * ap_test_config_card_id(): Test, whether an AP card ID is configured.
273 * Returns 0 if the card is not configured
274 * 1 if the card is configured or
275 * if the configuration information is not available
277 static inline int ap_test_config_card_id(unsigned int id
)
279 if (id
> ap_max_adapter_id
)
281 if (ap_qci_info
->flags
)
282 return ap_test_config(ap_qci_info
->apm
, id
);
287 * ap_test_config_usage_domain(): Test, whether an AP usage domain
290 * Returns 0 if the usage domain is not configured
291 * 1 if the usage domain is configured or
292 * if the configuration information is not available
294 int ap_test_config_usage_domain(unsigned int domain
)
296 if (domain
> ap_max_domain_id
)
298 if (ap_qci_info
->flags
)
299 return ap_test_config(ap_qci_info
->aqm
, domain
);
302 EXPORT_SYMBOL(ap_test_config_usage_domain
);
305 * ap_test_config_ctrl_domain(): Test, whether an AP control domain
307 * @domain AP control domain ID
309 * Returns 1 if the control domain is configured
310 * 0 in all other cases
312 int ap_test_config_ctrl_domain(unsigned int domain
)
314 if (!ap_qci_info
|| domain
> ap_max_domain_id
)
316 return ap_test_config(ap_qci_info
->adm
, domain
);
318 EXPORT_SYMBOL(ap_test_config_ctrl_domain
);
321 * ap_queue_info(): Check and get AP queue info.
322 * Returns: 1 if APQN exists and info is filled,
323 * 0 if APQN seems to exist but there is no info
324 * available (eg. caused by an asynch pending error)
325 * -1 invalid APQN, TAPQ error or AP queue status which
326 * indicates there is no APQN.
328 static int ap_queue_info(ap_qid_t qid
, struct ap_tapq_hwinfo
*hwinfo
,
329 bool *decfg
, bool *cstop
)
331 struct ap_queue_status status
;
335 /* make sure we don't run into a specifiation exception */
336 if (AP_QID_CARD(qid
) > ap_max_adapter_id
||
337 AP_QID_QUEUE(qid
) > ap_max_domain_id
)
340 /* call TAPQ on this APQN */
341 status
= ap_test_queue(qid
, ap_apft_available(), hwinfo
);
343 switch (status
.response_code
) {
344 case AP_RESPONSE_NORMAL
:
345 case AP_RESPONSE_RESET_IN_PROGRESS
:
346 case AP_RESPONSE_DECONFIGURED
:
347 case AP_RESPONSE_CHECKSTOPPED
:
348 case AP_RESPONSE_BUSY
:
349 /* For all these RCs the tapq info should be available */
352 /* On a pending async error the info should be available */
358 /* There should be at least one of the mode bits set */
359 if (WARN_ON_ONCE(!hwinfo
->value
))
362 *decfg
= status
.response_code
== AP_RESPONSE_DECONFIGURED
;
363 *cstop
= status
.response_code
== AP_RESPONSE_CHECKSTOPPED
;
368 void ap_wait(enum ap_sm_wait wait
)
373 case AP_SM_WAIT_AGAIN
:
374 case AP_SM_WAIT_INTERRUPT
:
377 if (ap_poll_kthread
) {
378 wake_up(&ap_poll_wait
);
382 case AP_SM_WAIT_LOW_TIMEOUT
:
383 case AP_SM_WAIT_HIGH_TIMEOUT
:
384 spin_lock_bh(&ap_poll_timer_lock
);
385 if (!hrtimer_is_queued(&ap_poll_timer
)) {
387 wait
== AP_SM_WAIT_LOW_TIMEOUT
?
388 poll_low_timeout
: poll_high_timeout
;
389 hrtimer_forward_now(&ap_poll_timer
, hr_time
);
390 hrtimer_restart(&ap_poll_timer
);
392 spin_unlock_bh(&ap_poll_timer_lock
);
394 case AP_SM_WAIT_NONE
:
401 * ap_request_timeout(): Handling of request timeouts
402 * @t: timer making this callback
404 * Handles request timeouts.
406 void ap_request_timeout(struct timer_list
*t
)
408 struct ap_queue
*aq
= from_timer(aq
, t
, timeout
);
410 spin_lock_bh(&aq
->lock
);
411 ap_wait(ap_sm_event(aq
, AP_SM_EVENT_TIMEOUT
));
412 spin_unlock_bh(&aq
->lock
);
416 * ap_poll_timeout(): AP receive polling for finished AP requests.
417 * @unused: Unused pointer.
419 * Schedules the AP tasklet using a high resolution timer.
421 static enum hrtimer_restart
ap_poll_timeout(struct hrtimer
*unused
)
423 tasklet_schedule(&ap_tasklet
);
424 return HRTIMER_NORESTART
;
428 * ap_interrupt_handler() - Schedule ap_tasklet on interrupt
429 * @airq: pointer to adapter interrupt descriptor
432 static void ap_interrupt_handler(struct airq_struct
*airq
,
433 struct tpi_info
*tpi_info
)
435 inc_irq_stat(IRQIO_APB
);
436 tasklet_schedule(&ap_tasklet
);
440 * ap_tasklet_fn(): Tasklet to poll all AP devices.
441 * @dummy: Unused variable
443 * Poll all AP devices on the bus.
445 static void ap_tasklet_fn(unsigned long dummy
)
449 enum ap_sm_wait wait
= AP_SM_WAIT_NONE
;
451 /* Reset the indicator if interrupts are used. Thus new interrupts can
452 * be received. Doing it in the beginning of the tasklet is therefore
453 * important that no requests on any AP get lost.
456 WRITE_ONCE(*ap_airq
.lsi_ptr
, 0);
458 spin_lock_bh(&ap_queues_lock
);
459 hash_for_each(ap_queues
, bkt
, aq
, hnode
) {
460 spin_lock_bh(&aq
->lock
);
461 wait
= min(wait
, ap_sm_event_loop(aq
, AP_SM_EVENT_POLL
));
462 spin_unlock_bh(&aq
->lock
);
464 spin_unlock_bh(&ap_queues_lock
);
469 static int ap_pending_requests(void)
474 spin_lock_bh(&ap_queues_lock
);
475 hash_for_each(ap_queues
, bkt
, aq
, hnode
) {
476 if (aq
->queue_count
== 0)
478 spin_unlock_bh(&ap_queues_lock
);
481 spin_unlock_bh(&ap_queues_lock
);
486 * ap_poll_thread(): Thread that polls for finished requests.
487 * @data: Unused pointer
489 * AP bus poll thread. The purpose of this thread is to poll for
490 * finished requests in a loop if there is a "free" cpu - that is
491 * a cpu that doesn't have anything better to do. The polling stops
492 * as soon as there is another task or if all messages have been
495 static int ap_poll_thread(void *data
)
497 DECLARE_WAITQUEUE(wait
, current
);
499 set_user_nice(current
, MAX_NICE
);
501 while (!kthread_should_stop()) {
502 add_wait_queue(&ap_poll_wait
, &wait
);
503 set_current_state(TASK_INTERRUPTIBLE
);
504 if (!ap_pending_requests()) {
508 set_current_state(TASK_RUNNING
);
509 remove_wait_queue(&ap_poll_wait
, &wait
);
510 if (need_resched()) {
521 static int ap_poll_thread_start(void)
525 if (ap_irq_flag
|| ap_poll_kthread
)
527 mutex_lock(&ap_poll_thread_mutex
);
528 ap_poll_kthread
= kthread_run(ap_poll_thread
, NULL
, "appoll");
529 rc
= PTR_ERR_OR_ZERO(ap_poll_kthread
);
531 ap_poll_kthread
= NULL
;
532 mutex_unlock(&ap_poll_thread_mutex
);
536 static void ap_poll_thread_stop(void)
538 if (!ap_poll_kthread
)
540 mutex_lock(&ap_poll_thread_mutex
);
541 kthread_stop(ap_poll_kthread
);
542 ap_poll_kthread
= NULL
;
543 mutex_unlock(&ap_poll_thread_mutex
);
546 #define is_card_dev(x) ((x)->parent == ap_root_device)
547 #define is_queue_dev(x) ((x)->parent != ap_root_device)
551 * @dev: Pointer to device
552 * @drv: Pointer to device_driver
554 * AP bus driver registration/unregistration.
556 static int ap_bus_match(struct device
*dev
, const struct device_driver
*drv
)
558 const struct ap_driver
*ap_drv
= to_ap_drv(drv
);
559 struct ap_device_id
*id
;
562 * Compare device type of the device with the list of
563 * supported types of the device_driver.
565 for (id
= ap_drv
->ids
; id
->match_flags
; id
++) {
566 if (is_card_dev(dev
) &&
567 id
->match_flags
& AP_DEVICE_ID_MATCH_CARD_TYPE
&&
568 id
->dev_type
== to_ap_dev(dev
)->device_type
)
570 if (is_queue_dev(dev
) &&
571 id
->match_flags
& AP_DEVICE_ID_MATCH_QUEUE_TYPE
&&
572 id
->dev_type
== to_ap_dev(dev
)->device_type
)
579 * ap_uevent(): Uevent function for AP devices.
580 * @dev: Pointer to device
581 * @env: Pointer to kobj_uevent_env
583 * It sets up a single environment variable DEV_TYPE which contains the
584 * hardware device type.
586 static int ap_uevent(const struct device
*dev
, struct kobj_uevent_env
*env
)
589 const struct ap_device
*ap_dev
= to_ap_dev(dev
);
591 /* Uevents from ap bus core don't need extensions to the env */
592 if (dev
== ap_root_device
)
595 if (is_card_dev(dev
)) {
596 struct ap_card
*ac
= to_ap_card(&ap_dev
->device
);
598 /* Set up DEV_TYPE environment variable. */
599 rc
= add_uevent_var(env
, "DEV_TYPE=%04X", ap_dev
->device_type
);
603 rc
= add_uevent_var(env
, "MODALIAS=ap:t%02X", ap_dev
->device_type
);
607 /* Add MODE=<accel|cca|ep11> */
608 if (ac
->hwinfo
.accel
)
609 rc
= add_uevent_var(env
, "MODE=accel");
610 else if (ac
->hwinfo
.cca
)
611 rc
= add_uevent_var(env
, "MODE=cca");
612 else if (ac
->hwinfo
.ep11
)
613 rc
= add_uevent_var(env
, "MODE=ep11");
617 struct ap_queue
*aq
= to_ap_queue(&ap_dev
->device
);
619 /* Add MODE=<accel|cca|ep11> */
620 if (aq
->card
->hwinfo
.accel
)
621 rc
= add_uevent_var(env
, "MODE=accel");
622 else if (aq
->card
->hwinfo
.cca
)
623 rc
= add_uevent_var(env
, "MODE=cca");
624 else if (aq
->card
->hwinfo
.ep11
)
625 rc
= add_uevent_var(env
, "MODE=ep11");
633 static void ap_send_init_scan_done_uevent(void)
635 char *envp
[] = { "INITSCAN=done", NULL
};
637 kobject_uevent_env(&ap_root_device
->kobj
, KOBJ_CHANGE
, envp
);
640 static void ap_send_bindings_complete_uevent(void)
643 char *envp
[] = { "BINDINGS=complete", buf
, NULL
};
645 snprintf(buf
, sizeof(buf
), "COMPLETECOUNT=%llu",
646 atomic64_inc_return(&ap_bindings_complete_count
));
647 kobject_uevent_env(&ap_root_device
->kobj
, KOBJ_CHANGE
, envp
);
650 void ap_send_config_uevent(struct ap_device
*ap_dev
, bool cfg
)
653 char *envp
[] = { buf
, NULL
};
655 snprintf(buf
, sizeof(buf
), "CONFIG=%d", cfg
? 1 : 0);
657 kobject_uevent_env(&ap_dev
->device
.kobj
, KOBJ_CHANGE
, envp
);
659 EXPORT_SYMBOL(ap_send_config_uevent
);
661 void ap_send_online_uevent(struct ap_device
*ap_dev
, int online
)
664 char *envp
[] = { buf
, NULL
};
666 snprintf(buf
, sizeof(buf
), "ONLINE=%d", online
? 1 : 0);
668 kobject_uevent_env(&ap_dev
->device
.kobj
, KOBJ_CHANGE
, envp
);
670 EXPORT_SYMBOL(ap_send_online_uevent
);
672 static void ap_send_mask_changed_uevent(unsigned long *newapm
,
673 unsigned long *newaqm
)
676 char *envp
[] = { buf
, NULL
};
679 snprintf(buf
, sizeof(buf
),
680 "APMASK=0x%016lx%016lx%016lx%016lx\n",
681 newapm
[0], newapm
[1], newapm
[2], newapm
[3]);
683 snprintf(buf
, sizeof(buf
),
684 "AQMASK=0x%016lx%016lx%016lx%016lx\n",
685 newaqm
[0], newaqm
[1], newaqm
[2], newaqm
[3]);
687 kobject_uevent_env(&ap_root_device
->kobj
, KOBJ_CHANGE
, envp
);
691 * calc # of bound APQNs
694 struct __ap_calc_ctrs
{
699 static int __ap_calc_helper(struct device
*dev
, void *arg
)
701 struct __ap_calc_ctrs
*pctrs
= (struct __ap_calc_ctrs
*)arg
;
703 if (is_queue_dev(dev
)) {
712 static void ap_calc_bound_apqns(unsigned int *apqns
, unsigned int *bound
)
714 struct __ap_calc_ctrs ctrs
;
716 memset(&ctrs
, 0, sizeof(ctrs
));
717 bus_for_each_dev(&ap_bus_type
, NULL
, (void *)&ctrs
, __ap_calc_helper
);
724 * After ap bus scan do check if all existing APQNs are
725 * bound to device drivers.
727 static void ap_check_bindings_complete(void)
729 unsigned int apqns
, bound
;
731 if (atomic64_read(&ap_scan_bus_count
) >= 1) {
732 ap_calc_bound_apqns(&apqns
, &bound
);
733 if (bound
== apqns
) {
734 if (!completion_done(&ap_apqn_bindings_complete
)) {
735 complete_all(&ap_apqn_bindings_complete
);
736 ap_send_bindings_complete_uevent();
737 pr_debug("all apqn bindings complete\n");
744 * Interface to wait for the AP bus to have done one initial ap bus
745 * scan and all detected APQNs have been bound to device drivers.
746 * If these both conditions are not fulfilled, this function blocks
747 * on a condition with wait_for_completion_interruptible_timeout().
748 * If these both conditions are fulfilled (before the timeout hits)
749 * the return value is 0. If the timeout (in jiffies) hits instead
750 * -ETIME is returned. On failures negative return values are
751 * returned to the caller.
753 int ap_wait_apqn_bindings_complete(unsigned long timeout
)
758 if (completion_done(&ap_apqn_bindings_complete
))
762 l
= wait_for_completion_interruptible_timeout(
763 &ap_apqn_bindings_complete
, timeout
);
765 l
= wait_for_completion_interruptible(
766 &ap_apqn_bindings_complete
);
768 rc
= l
== -ERESTARTSYS
? -EINTR
: l
;
769 else if (l
== 0 && timeout
)
772 pr_debug("rc=%d\n", rc
);
775 EXPORT_SYMBOL(ap_wait_apqn_bindings_complete
);
777 static int __ap_queue_devices_with_id_unregister(struct device
*dev
, void *data
)
779 if (is_queue_dev(dev
) &&
780 AP_QID_CARD(to_ap_queue(dev
)->qid
) == (int)(long)data
)
781 device_unregister(dev
);
785 static int __ap_revise_reserved(struct device
*dev
, void *dummy
)
787 int rc
, card
, queue
, devres
, drvres
;
789 if (is_queue_dev(dev
)) {
790 card
= AP_QID_CARD(to_ap_queue(dev
)->qid
);
791 queue
= AP_QID_QUEUE(to_ap_queue(dev
)->qid
);
792 mutex_lock(&ap_perms_mutex
);
793 devres
= test_bit_inv(card
, ap_perms
.apm
) &&
794 test_bit_inv(queue
, ap_perms
.aqm
);
795 mutex_unlock(&ap_perms_mutex
);
796 drvres
= to_ap_drv(dev
->driver
)->flags
797 & AP_DRIVER_FLAG_DEFAULT
;
798 if (!!devres
!= !!drvres
) {
799 pr_debug("reprobing queue=%02x.%04x\n", card
, queue
);
800 rc
= device_reprobe(dev
);
802 AP_DBF_WARN("%s reprobing queue=%02x.%04x failed\n",
803 __func__
, card
, queue
);
810 static void ap_bus_revise_bindings(void)
812 bus_for_each_dev(&ap_bus_type
, NULL
, NULL
, __ap_revise_reserved
);
816 * ap_owned_by_def_drv: indicates whether an AP adapter is reserved for the
817 * default host driver or not.
818 * @card: the APID of the adapter card to check
819 * @queue: the APQI of the queue to check
821 * Note: the ap_perms_mutex must be locked by the caller of this function.
823 * Return: an int specifying whether the AP adapter is reserved for the host (1)
826 int ap_owned_by_def_drv(int card
, int queue
)
830 if (card
< 0 || card
>= AP_DEVICES
|| queue
< 0 || queue
>= AP_DOMAINS
)
833 if (test_bit_inv(card
, ap_perms
.apm
) &&
834 test_bit_inv(queue
, ap_perms
.aqm
))
839 EXPORT_SYMBOL(ap_owned_by_def_drv
);
842 * ap_apqn_in_matrix_owned_by_def_drv: indicates whether every APQN contained in
843 * a set is reserved for the host drivers
845 * @apm: a bitmap specifying a set of APIDs comprising the APQNs to check
846 * @aqm: a bitmap specifying a set of APQIs comprising the APQNs to check
848 * Note: the ap_perms_mutex must be locked by the caller of this function.
850 * Return: an int specifying whether each APQN is reserved for the host (1) or
853 int ap_apqn_in_matrix_owned_by_def_drv(unsigned long *apm
,
856 int card
, queue
, rc
= 0;
858 for (card
= 0; !rc
&& card
< AP_DEVICES
; card
++)
859 if (test_bit_inv(card
, apm
) &&
860 test_bit_inv(card
, ap_perms
.apm
))
861 for (queue
= 0; !rc
&& queue
< AP_DOMAINS
; queue
++)
862 if (test_bit_inv(queue
, aqm
) &&
863 test_bit_inv(queue
, ap_perms
.aqm
))
868 EXPORT_SYMBOL(ap_apqn_in_matrix_owned_by_def_drv
);
870 static int ap_device_probe(struct device
*dev
)
872 struct ap_device
*ap_dev
= to_ap_dev(dev
);
873 struct ap_driver
*ap_drv
= to_ap_drv(dev
->driver
);
874 int card
, queue
, devres
, drvres
, rc
= -ENODEV
;
876 if (!get_device(dev
))
879 if (is_queue_dev(dev
)) {
881 * If the apqn is marked as reserved/used by ap bus and
882 * default drivers, only probe with drivers with the default
883 * flag set. If it is not marked, only probe with drivers
884 * with the default flag not set.
886 card
= AP_QID_CARD(to_ap_queue(dev
)->qid
);
887 queue
= AP_QID_QUEUE(to_ap_queue(dev
)->qid
);
888 mutex_lock(&ap_perms_mutex
);
889 devres
= test_bit_inv(card
, ap_perms
.apm
) &&
890 test_bit_inv(queue
, ap_perms
.aqm
);
891 mutex_unlock(&ap_perms_mutex
);
892 drvres
= ap_drv
->flags
& AP_DRIVER_FLAG_DEFAULT
;
893 if (!!devres
!= !!drvres
)
898 * Rearm the bindings complete completion to trigger
899 * bindings complete when all devices are bound again
901 reinit_completion(&ap_apqn_bindings_complete
);
903 /* Add queue/card to list of active queues/cards */
904 spin_lock_bh(&ap_queues_lock
);
905 if (is_queue_dev(dev
))
906 hash_add(ap_queues
, &to_ap_queue(dev
)->hnode
,
907 to_ap_queue(dev
)->qid
);
908 spin_unlock_bh(&ap_queues_lock
);
910 rc
= ap_drv
->probe
? ap_drv
->probe(ap_dev
) : -ENODEV
;
913 spin_lock_bh(&ap_queues_lock
);
914 if (is_queue_dev(dev
))
915 hash_del(&to_ap_queue(dev
)->hnode
);
916 spin_unlock_bh(&ap_queues_lock
);
925 static void ap_device_remove(struct device
*dev
)
927 struct ap_device
*ap_dev
= to_ap_dev(dev
);
928 struct ap_driver
*ap_drv
= to_ap_drv(dev
->driver
);
930 /* prepare ap queue device removal */
931 if (is_queue_dev(dev
))
932 ap_queue_prepare_remove(to_ap_queue(dev
));
934 /* driver's chance to clean up gracefully */
936 ap_drv
->remove(ap_dev
);
938 /* now do the ap queue device remove */
939 if (is_queue_dev(dev
))
940 ap_queue_remove(to_ap_queue(dev
));
942 /* Remove queue/card from list of active queues/cards */
943 spin_lock_bh(&ap_queues_lock
);
944 if (is_queue_dev(dev
))
945 hash_del(&to_ap_queue(dev
)->hnode
);
946 spin_unlock_bh(&ap_queues_lock
);
951 struct ap_queue
*ap_get_qdev(ap_qid_t qid
)
956 spin_lock_bh(&ap_queues_lock
);
957 hash_for_each(ap_queues
, bkt
, aq
, hnode
) {
958 if (aq
->qid
== qid
) {
959 get_device(&aq
->ap_dev
.device
);
960 spin_unlock_bh(&ap_queues_lock
);
964 spin_unlock_bh(&ap_queues_lock
);
968 EXPORT_SYMBOL(ap_get_qdev
);
970 int ap_driver_register(struct ap_driver
*ap_drv
, struct module
*owner
,
973 struct device_driver
*drv
= &ap_drv
->driver
;
976 drv
->bus
= &ap_bus_type
;
979 rc
= driver_register(drv
);
981 ap_check_bindings_complete();
985 EXPORT_SYMBOL(ap_driver_register
);
987 void ap_driver_unregister(struct ap_driver
*ap_drv
)
989 driver_unregister(&ap_drv
->driver
);
991 EXPORT_SYMBOL(ap_driver_unregister
);
994 * Enforce a synchronous AP bus rescan.
995 * Returns true if the bus scan finds a change in the AP configuration
996 * and AP devices have been added or deleted when this function returns.
998 bool ap_bus_force_rescan(void)
1000 unsigned long scan_counter
= atomic64_read(&ap_scan_bus_count
);
1003 pr_debug("> scan counter=%lu\n", scan_counter
);
1005 /* Only trigger AP bus scans after the initial scan is done */
1006 if (scan_counter
<= 0)
1010 * There is one unlikely but nevertheless valid scenario where the
1011 * thread holding the mutex may try to send some crypto load but
1012 * all cards are offline so a rescan is triggered which causes
1013 * a recursive call of ap_bus_force_rescan(). A simple return if
1014 * the mutex is already locked by this thread solves this.
1016 if (mutex_is_locked(&ap_scan_bus_mutex
)) {
1017 if (ap_scan_bus_task
== current
)
1021 /* Try to acquire the AP scan bus mutex */
1022 if (mutex_trylock(&ap_scan_bus_mutex
)) {
1023 /* mutex acquired, run the AP bus scan */
1024 ap_scan_bus_task
= current
;
1025 ap_scan_bus_result
= ap_scan_bus();
1026 rc
= ap_scan_bus_result
;
1027 ap_scan_bus_task
= NULL
;
1028 mutex_unlock(&ap_scan_bus_mutex
);
1033 * Mutex acquire failed. So there is currently another task
1034 * already running the AP bus scan. Then let's simple wait
1035 * for the lock which means the other task has finished and
1036 * stored the result in ap_scan_bus_result.
1038 if (mutex_lock_interruptible(&ap_scan_bus_mutex
)) {
1039 /* some error occurred, ignore and go out */
1042 rc
= ap_scan_bus_result
;
1043 mutex_unlock(&ap_scan_bus_mutex
);
1046 pr_debug("rc=%d\n", rc
);
1049 EXPORT_SYMBOL(ap_bus_force_rescan
);
1052 * A config change has happened, force an ap bus rescan.
1054 static int ap_bus_cfg_chg(struct notifier_block
*nb
,
1055 unsigned long action
, void *data
)
1057 if (action
!= CHSC_NOTIFY_AP_CFG
)
1060 pr_debug("config change, forcing bus rescan\n");
1062 ap_bus_force_rescan();
1067 static struct notifier_block ap_bus_nb
= {
1068 .notifier_call
= ap_bus_cfg_chg
,
1071 int ap_hex2bitmap(const char *str
, unsigned long *bitmap
, int bits
)
1075 /* bits needs to be a multiple of 8 */
1079 if (str
[0] == '0' && str
[1] == 'x')
1084 for (i
= 0; isxdigit(*str
) && i
< bits
; str
++) {
1085 b
= hex_to_bin(*str
);
1086 for (n
= 0; n
< 4; n
++)
1087 if (b
& (0x08 >> n
))
1088 set_bit_inv(i
+ n
, bitmap
);
1098 EXPORT_SYMBOL(ap_hex2bitmap
);
1101 * modify_bitmap() - parse bitmask argument and modify an existing
1102 * bit mask accordingly. A concatenation (done with ',') of these
1103 * terms is recognized:
1104 * +<bitnr>[-<bitnr>] or -<bitnr>[-<bitnr>]
1105 * <bitnr> may be any valid number (hex, decimal or octal) in the range
1106 * 0...bits-1; the leading + or - is required. Here are some examples:
1107 * +0-15,+32,-128,-0xFF
1108 * -0-255,+1-16,+0x128
1109 * +1,+2,+3,+4,-5,-7-10
1110 * Returns the new bitmap after all changes have been applied. Every
1111 * positive value in the string will set a bit and every negative value
1112 * in the string will clear a bit. As a bit may be touched more than once,
1113 * the last 'operation' wins:
1114 * +0-255,-128 = first bits 0-255 will be set, then bit 128 will be
1115 * cleared again. All other bits are unmodified.
1117 static int modify_bitmap(const char *str
, unsigned long *bitmap
, int bits
)
1119 unsigned long a
, i
, z
;
1122 /* bits needs to be a multiple of 8 */
1128 if (sign
!= '+' && sign
!= '-')
1130 a
= z
= simple_strtoul(str
, &np
, 0);
1131 if (str
== np
|| a
>= bits
)
1135 z
= simple_strtoul(++str
, &np
, 0);
1136 if (str
== np
|| a
> z
|| z
>= bits
)
1140 for (i
= a
; i
<= z
; i
++)
1142 set_bit_inv(i
, bitmap
);
1144 clear_bit_inv(i
, bitmap
);
1145 while (*str
== ',' || *str
== '\n')
1152 static int ap_parse_bitmap_str(const char *str
, unsigned long *bitmap
, int bits
,
1153 unsigned long *newmap
)
1158 size
= BITS_TO_LONGS(bits
) * sizeof(unsigned long);
1159 if (*str
== '+' || *str
== '-') {
1160 memcpy(newmap
, bitmap
, size
);
1161 rc
= modify_bitmap(str
, newmap
, bits
);
1163 memset(newmap
, 0, size
);
1164 rc
= ap_hex2bitmap(str
, newmap
, bits
);
1169 int ap_parse_mask_str(const char *str
,
1170 unsigned long *bitmap
, int bits
,
1173 unsigned long *newmap
, size
;
1176 /* bits needs to be a multiple of 8 */
1180 size
= BITS_TO_LONGS(bits
) * sizeof(unsigned long);
1181 newmap
= kmalloc(size
, GFP_KERNEL
);
1184 if (mutex_lock_interruptible(lock
)) {
1186 return -ERESTARTSYS
;
1188 rc
= ap_parse_bitmap_str(str
, bitmap
, bits
, newmap
);
1190 memcpy(bitmap
, newmap
, size
);
1195 EXPORT_SYMBOL(ap_parse_mask_str
);
1198 * AP bus attributes.
1201 static ssize_t
ap_domain_show(const struct bus_type
*bus
, char *buf
)
1203 return sysfs_emit(buf
, "%d\n", ap_domain_index
);
1206 static ssize_t
ap_domain_store(const struct bus_type
*bus
,
1207 const char *buf
, size_t count
)
1211 if (sscanf(buf
, "%i\n", &domain
) != 1 ||
1212 domain
< 0 || domain
> ap_max_domain_id
||
1213 !test_bit_inv(domain
, ap_perms
.aqm
))
1216 spin_lock_bh(&ap_domain_lock
);
1217 ap_domain_index
= domain
;
1218 spin_unlock_bh(&ap_domain_lock
);
1220 AP_DBF_INFO("%s stored new default domain=%d\n",
1226 static BUS_ATTR_RW(ap_domain
);
1228 static ssize_t
ap_control_domain_mask_show(const struct bus_type
*bus
, char *buf
)
1230 if (!ap_qci_info
->flags
) /* QCI not supported */
1231 return sysfs_emit(buf
, "not supported\n");
1233 return sysfs_emit(buf
, "0x%08x%08x%08x%08x%08x%08x%08x%08x\n",
1234 ap_qci_info
->adm
[0], ap_qci_info
->adm
[1],
1235 ap_qci_info
->adm
[2], ap_qci_info
->adm
[3],
1236 ap_qci_info
->adm
[4], ap_qci_info
->adm
[5],
1237 ap_qci_info
->adm
[6], ap_qci_info
->adm
[7]);
1240 static BUS_ATTR_RO(ap_control_domain_mask
);
1242 static ssize_t
ap_usage_domain_mask_show(const struct bus_type
*bus
, char *buf
)
1244 if (!ap_qci_info
->flags
) /* QCI not supported */
1245 return sysfs_emit(buf
, "not supported\n");
1247 return sysfs_emit(buf
, "0x%08x%08x%08x%08x%08x%08x%08x%08x\n",
1248 ap_qci_info
->aqm
[0], ap_qci_info
->aqm
[1],
1249 ap_qci_info
->aqm
[2], ap_qci_info
->aqm
[3],
1250 ap_qci_info
->aqm
[4], ap_qci_info
->aqm
[5],
1251 ap_qci_info
->aqm
[6], ap_qci_info
->aqm
[7]);
1254 static BUS_ATTR_RO(ap_usage_domain_mask
);
1256 static ssize_t
ap_adapter_mask_show(const struct bus_type
*bus
, char *buf
)
1258 if (!ap_qci_info
->flags
) /* QCI not supported */
1259 return sysfs_emit(buf
, "not supported\n");
1261 return sysfs_emit(buf
, "0x%08x%08x%08x%08x%08x%08x%08x%08x\n",
1262 ap_qci_info
->apm
[0], ap_qci_info
->apm
[1],
1263 ap_qci_info
->apm
[2], ap_qci_info
->apm
[3],
1264 ap_qci_info
->apm
[4], ap_qci_info
->apm
[5],
1265 ap_qci_info
->apm
[6], ap_qci_info
->apm
[7]);
1268 static BUS_ATTR_RO(ap_adapter_mask
);
1270 static ssize_t
ap_interrupts_show(const struct bus_type
*bus
, char *buf
)
1272 return sysfs_emit(buf
, "%d\n", ap_irq_flag
? 1 : 0);
1275 static BUS_ATTR_RO(ap_interrupts
);
1277 static ssize_t
config_time_show(const struct bus_type
*bus
, char *buf
)
1279 return sysfs_emit(buf
, "%d\n", ap_scan_bus_time
);
1282 static ssize_t
config_time_store(const struct bus_type
*bus
,
1283 const char *buf
, size_t count
)
1287 if (sscanf(buf
, "%d\n", &time
) != 1 || time
< 5 || time
> 120)
1289 ap_scan_bus_time
= time
;
1290 mod_timer(&ap_scan_bus_timer
, jiffies
+ ap_scan_bus_time
* HZ
);
1294 static BUS_ATTR_RW(config_time
);
1296 static ssize_t
poll_thread_show(const struct bus_type
*bus
, char *buf
)
1298 return sysfs_emit(buf
, "%d\n", ap_poll_kthread
? 1 : 0);
1301 static ssize_t
poll_thread_store(const struct bus_type
*bus
,
1302 const char *buf
, size_t count
)
1307 rc
= kstrtobool(buf
, &value
);
1312 rc
= ap_poll_thread_start();
1316 ap_poll_thread_stop();
1321 static BUS_ATTR_RW(poll_thread
);
1323 static ssize_t
poll_timeout_show(const struct bus_type
*bus
, char *buf
)
1325 return sysfs_emit(buf
, "%lu\n", poll_high_timeout
);
1328 static ssize_t
poll_timeout_store(const struct bus_type
*bus
, const char *buf
,
1331 unsigned long value
;
1335 rc
= kstrtoul(buf
, 0, &value
);
1339 /* 120 seconds = maximum poll interval */
1340 if (value
> 120000000000UL)
1342 poll_high_timeout
= value
;
1343 hr_time
= poll_high_timeout
;
1345 spin_lock_bh(&ap_poll_timer_lock
);
1346 hrtimer_cancel(&ap_poll_timer
);
1347 hrtimer_set_expires(&ap_poll_timer
, hr_time
);
1348 hrtimer_start_expires(&ap_poll_timer
, HRTIMER_MODE_ABS
);
1349 spin_unlock_bh(&ap_poll_timer_lock
);
1354 static BUS_ATTR_RW(poll_timeout
);
1356 static ssize_t
ap_max_domain_id_show(const struct bus_type
*bus
, char *buf
)
1358 return sysfs_emit(buf
, "%d\n", ap_max_domain_id
);
1361 static BUS_ATTR_RO(ap_max_domain_id
);
1363 static ssize_t
ap_max_adapter_id_show(const struct bus_type
*bus
, char *buf
)
1365 return sysfs_emit(buf
, "%d\n", ap_max_adapter_id
);
1368 static BUS_ATTR_RO(ap_max_adapter_id
);
1370 static ssize_t
apmask_show(const struct bus_type
*bus
, char *buf
)
1374 if (mutex_lock_interruptible(&ap_perms_mutex
))
1375 return -ERESTARTSYS
;
1376 rc
= sysfs_emit(buf
, "0x%016lx%016lx%016lx%016lx\n",
1377 ap_perms
.apm
[0], ap_perms
.apm
[1],
1378 ap_perms
.apm
[2], ap_perms
.apm
[3]);
1379 mutex_unlock(&ap_perms_mutex
);
1384 static int __verify_card_reservations(struct device_driver
*drv
, void *data
)
1387 struct ap_driver
*ap_drv
= to_ap_drv(drv
);
1388 unsigned long *newapm
= (unsigned long *)data
;
1391 * increase the driver's module refcounter to be sure it is not
1392 * going away when we invoke the callback function.
1394 if (!try_module_get(drv
->owner
))
1397 if (ap_drv
->in_use
) {
1398 rc
= ap_drv
->in_use(newapm
, ap_perms
.aqm
);
1403 /* release the driver's module */
1404 module_put(drv
->owner
);
1409 static int apmask_commit(unsigned long *newapm
)
1412 unsigned long reserved
[BITS_TO_LONGS(AP_DEVICES
)];
1415 * Check if any bits in the apmask have been set which will
1416 * result in queues being removed from non-default drivers
1418 if (bitmap_andnot(reserved
, newapm
, ap_perms
.apm
, AP_DEVICES
)) {
1419 rc
= bus_for_each_drv(&ap_bus_type
, NULL
, reserved
,
1420 __verify_card_reservations
);
1425 memcpy(ap_perms
.apm
, newapm
, APMASKSIZE
);
1430 static ssize_t
apmask_store(const struct bus_type
*bus
, const char *buf
,
1433 int rc
, changes
= 0;
1434 DECLARE_BITMAP(newapm
, AP_DEVICES
);
1436 if (mutex_lock_interruptible(&ap_perms_mutex
))
1437 return -ERESTARTSYS
;
1439 rc
= ap_parse_bitmap_str(buf
, ap_perms
.apm
, AP_DEVICES
, newapm
);
1443 changes
= memcmp(ap_perms
.apm
, newapm
, APMASKSIZE
);
1445 rc
= apmask_commit(newapm
);
1448 mutex_unlock(&ap_perms_mutex
);
1453 ap_bus_revise_bindings();
1454 ap_send_mask_changed_uevent(newapm
, NULL
);
1460 static BUS_ATTR_RW(apmask
);
1462 static ssize_t
aqmask_show(const struct bus_type
*bus
, char *buf
)
1466 if (mutex_lock_interruptible(&ap_perms_mutex
))
1467 return -ERESTARTSYS
;
1468 rc
= sysfs_emit(buf
, "0x%016lx%016lx%016lx%016lx\n",
1469 ap_perms
.aqm
[0], ap_perms
.aqm
[1],
1470 ap_perms
.aqm
[2], ap_perms
.aqm
[3]);
1471 mutex_unlock(&ap_perms_mutex
);
1476 static int __verify_queue_reservations(struct device_driver
*drv
, void *data
)
1479 struct ap_driver
*ap_drv
= to_ap_drv(drv
);
1480 unsigned long *newaqm
= (unsigned long *)data
;
1483 * increase the driver's module refcounter to be sure it is not
1484 * going away when we invoke the callback function.
1486 if (!try_module_get(drv
->owner
))
1489 if (ap_drv
->in_use
) {
1490 rc
= ap_drv
->in_use(ap_perms
.apm
, newaqm
);
1495 /* release the driver's module */
1496 module_put(drv
->owner
);
1501 static int aqmask_commit(unsigned long *newaqm
)
1504 unsigned long reserved
[BITS_TO_LONGS(AP_DOMAINS
)];
1507 * Check if any bits in the aqmask have been set which will
1508 * result in queues being removed from non-default drivers
1510 if (bitmap_andnot(reserved
, newaqm
, ap_perms
.aqm
, AP_DOMAINS
)) {
1511 rc
= bus_for_each_drv(&ap_bus_type
, NULL
, reserved
,
1512 __verify_queue_reservations
);
1517 memcpy(ap_perms
.aqm
, newaqm
, AQMASKSIZE
);
1522 static ssize_t
aqmask_store(const struct bus_type
*bus
, const char *buf
,
1525 int rc
, changes
= 0;
1526 DECLARE_BITMAP(newaqm
, AP_DOMAINS
);
1528 if (mutex_lock_interruptible(&ap_perms_mutex
))
1529 return -ERESTARTSYS
;
1531 rc
= ap_parse_bitmap_str(buf
, ap_perms
.aqm
, AP_DOMAINS
, newaqm
);
1535 changes
= memcmp(ap_perms
.aqm
, newaqm
, APMASKSIZE
);
1537 rc
= aqmask_commit(newaqm
);
1540 mutex_unlock(&ap_perms_mutex
);
1545 ap_bus_revise_bindings();
1546 ap_send_mask_changed_uevent(NULL
, newaqm
);
1552 static BUS_ATTR_RW(aqmask
);
1554 static ssize_t
scans_show(const struct bus_type
*bus
, char *buf
)
1556 return sysfs_emit(buf
, "%llu\n", atomic64_read(&ap_scan_bus_count
));
1559 static ssize_t
scans_store(const struct bus_type
*bus
, const char *buf
,
1562 AP_DBF_INFO("%s force AP bus rescan\n", __func__
);
1564 ap_bus_force_rescan();
1569 static BUS_ATTR_RW(scans
);
1571 static ssize_t
bindings_show(const struct bus_type
*bus
, char *buf
)
1574 unsigned int apqns
, n
;
1576 ap_calc_bound_apqns(&apqns
, &n
);
1577 if (atomic64_read(&ap_scan_bus_count
) >= 1 && n
== apqns
)
1578 rc
= sysfs_emit(buf
, "%u/%u (complete)\n", n
, apqns
);
1580 rc
= sysfs_emit(buf
, "%u/%u\n", n
, apqns
);
1585 static BUS_ATTR_RO(bindings
);
1587 static ssize_t
features_show(const struct bus_type
*bus
, char *buf
)
1591 if (!ap_qci_info
->flags
) /* QCI not supported */
1592 return sysfs_emit(buf
, "-\n");
1594 if (ap_qci_info
->apsc
)
1595 n
+= sysfs_emit_at(buf
, n
, "APSC ");
1596 if (ap_qci_info
->apxa
)
1597 n
+= sysfs_emit_at(buf
, n
, "APXA ");
1598 if (ap_qci_info
->qact
)
1599 n
+= sysfs_emit_at(buf
, n
, "QACT ");
1600 if (ap_qci_info
->rc8a
)
1601 n
+= sysfs_emit_at(buf
, n
, "RC8A ");
1602 if (ap_qci_info
->apsb
)
1603 n
+= sysfs_emit_at(buf
, n
, "APSB ");
1605 sysfs_emit_at(buf
, n
== 0 ? 0 : n
- 1, "\n");
1610 static BUS_ATTR_RO(features
);
1612 static struct attribute
*ap_bus_attrs
[] = {
1613 &bus_attr_ap_domain
.attr
,
1614 &bus_attr_ap_control_domain_mask
.attr
,
1615 &bus_attr_ap_usage_domain_mask
.attr
,
1616 &bus_attr_ap_adapter_mask
.attr
,
1617 &bus_attr_config_time
.attr
,
1618 &bus_attr_poll_thread
.attr
,
1619 &bus_attr_ap_interrupts
.attr
,
1620 &bus_attr_poll_timeout
.attr
,
1621 &bus_attr_ap_max_domain_id
.attr
,
1622 &bus_attr_ap_max_adapter_id
.attr
,
1623 &bus_attr_apmask
.attr
,
1624 &bus_attr_aqmask
.attr
,
1625 &bus_attr_scans
.attr
,
1626 &bus_attr_bindings
.attr
,
1627 &bus_attr_features
.attr
,
1630 ATTRIBUTE_GROUPS(ap_bus
);
1632 static const struct bus_type ap_bus_type
= {
1634 .bus_groups
= ap_bus_groups
,
1635 .match
= &ap_bus_match
,
1636 .uevent
= &ap_uevent
,
1637 .probe
= ap_device_probe
,
1638 .remove
= ap_device_remove
,
1642 * ap_select_domain(): Select an AP domain if possible and we haven't
1643 * already done so before.
1645 static void ap_select_domain(void)
1647 struct ap_queue_status status
;
1651 * Choose the default domain. Either the one specified with
1652 * the "domain=" parameter or the first domain with at least
1655 spin_lock_bh(&ap_domain_lock
);
1656 if (ap_domain_index
>= 0) {
1657 /* Domain has already been selected. */
1660 for (dom
= 0; dom
<= ap_max_domain_id
; dom
++) {
1661 if (!ap_test_config_usage_domain(dom
) ||
1662 !test_bit_inv(dom
, ap_perms
.aqm
))
1664 for (card
= 0; card
<= ap_max_adapter_id
; card
++) {
1665 if (!ap_test_config_card_id(card
) ||
1666 !test_bit_inv(card
, ap_perms
.apm
))
1668 status
= ap_test_queue(AP_MKQID(card
, dom
),
1669 ap_apft_available(),
1671 if (status
.response_code
== AP_RESPONSE_NORMAL
)
1674 if (card
<= ap_max_adapter_id
)
1677 if (dom
<= ap_max_domain_id
) {
1678 ap_domain_index
= dom
;
1679 AP_DBF_INFO("%s new default domain is %d\n",
1680 __func__
, ap_domain_index
);
1683 spin_unlock_bh(&ap_domain_lock
);
1687 * This function checks the type and returns either 0 for not
1688 * supported or the highest compatible type value (which may
1689 * include the input type value).
1691 static int ap_get_compatible_type(ap_qid_t qid
, int rawtype
, unsigned int func
)
1695 /* < CEX4 is not supported */
1696 if (rawtype
< AP_DEVICE_TYPE_CEX4
) {
1697 AP_DBF_WARN("%s queue=%02x.%04x unsupported type %d\n",
1698 __func__
, AP_QID_CARD(qid
),
1699 AP_QID_QUEUE(qid
), rawtype
);
1702 /* up to CEX8 known and fully supported */
1703 if (rawtype
<= AP_DEVICE_TYPE_CEX8
)
1706 * unknown new type > CEX8, check for compatibility
1707 * to the highest known and supported type which is
1708 * currently CEX8 with the help of the QACT function.
1710 if (ap_qact_available()) {
1711 struct ap_queue_status status
;
1712 union ap_qact_ap_info apinfo
= {0};
1714 apinfo
.mode
= (func
>> 26) & 0x07;
1715 apinfo
.cat
= AP_DEVICE_TYPE_CEX8
;
1716 status
= ap_qact(qid
, 0, &apinfo
);
1717 if (status
.response_code
== AP_RESPONSE_NORMAL
&&
1718 apinfo
.cat
>= AP_DEVICE_TYPE_CEX4
&&
1719 apinfo
.cat
<= AP_DEVICE_TYPE_CEX8
)
1720 comp_type
= apinfo
.cat
;
1723 AP_DBF_WARN("%s queue=%02x.%04x unable to map type %d\n",
1724 __func__
, AP_QID_CARD(qid
),
1725 AP_QID_QUEUE(qid
), rawtype
);
1726 else if (comp_type
!= rawtype
)
1727 AP_DBF_INFO("%s queue=%02x.%04x map type %d to %d\n",
1728 __func__
, AP_QID_CARD(qid
), AP_QID_QUEUE(qid
),
1729 rawtype
, comp_type
);
1734 * Helper function to be used with bus_find_dev
1735 * matches for the card device with the given id
1737 static int __match_card_device_with_id(struct device
*dev
, const void *data
)
1739 return is_card_dev(dev
) && to_ap_card(dev
)->id
== (int)(long)(void *)data
;
1743 * Helper function to be used with bus_find_dev
1744 * matches for the queue device with a given qid
1746 static int __match_queue_device_with_qid(struct device
*dev
, const void *data
)
1748 return is_queue_dev(dev
) && to_ap_queue(dev
)->qid
== (int)(long)data
;
1752 * Helper function to be used with bus_find_dev
1753 * matches any queue device with given queue id
1755 static int __match_queue_device_with_queue_id(struct device
*dev
, const void *data
)
1757 return is_queue_dev(dev
) &&
1758 AP_QID_QUEUE(to_ap_queue(dev
)->qid
) == (int)(long)data
;
1761 /* Helper function for notify_config_changed */
1762 static int __drv_notify_config_changed(struct device_driver
*drv
, void *data
)
1764 struct ap_driver
*ap_drv
= to_ap_drv(drv
);
1766 if (try_module_get(drv
->owner
)) {
1767 if (ap_drv
->on_config_changed
)
1768 ap_drv
->on_config_changed(ap_qci_info
, ap_qci_info_old
);
1769 module_put(drv
->owner
);
1775 /* Notify all drivers about an qci config change */
1776 static inline void notify_config_changed(void)
1778 bus_for_each_drv(&ap_bus_type
, NULL
, NULL
,
1779 __drv_notify_config_changed
);
1782 /* Helper function for notify_scan_complete */
1783 static int __drv_notify_scan_complete(struct device_driver
*drv
, void *data
)
1785 struct ap_driver
*ap_drv
= to_ap_drv(drv
);
1787 if (try_module_get(drv
->owner
)) {
1788 if (ap_drv
->on_scan_complete
)
1789 ap_drv
->on_scan_complete(ap_qci_info
,
1791 module_put(drv
->owner
);
1797 /* Notify all drivers about bus scan complete */
1798 static inline void notify_scan_complete(void)
1800 bus_for_each_drv(&ap_bus_type
, NULL
, NULL
,
1801 __drv_notify_scan_complete
);
1805 * Helper function for ap_scan_bus().
1806 * Remove card device and associated queue devices.
1808 static inline void ap_scan_rm_card_dev_and_queue_devs(struct ap_card
*ac
)
1810 bus_for_each_dev(&ap_bus_type
, NULL
,
1811 (void *)(long)ac
->id
,
1812 __ap_queue_devices_with_id_unregister
);
1813 device_unregister(&ac
->ap_dev
.device
);
1817 * Helper function for ap_scan_bus().
1818 * Does the scan bus job for all the domains within
1819 * a valid adapter given by an ap_card ptr.
1821 static inline void ap_scan_domains(struct ap_card
*ac
)
1823 struct ap_tapq_hwinfo hwinfo
;
1824 bool decfg
, chkstop
;
1825 struct ap_queue
*aq
;
1831 * Go through the configuration for the domains and compare them
1832 * to the existing queue devices. Also take care of the config
1833 * and error state for the queue devices.
1836 for (dom
= 0; dom
<= ap_max_domain_id
; dom
++) {
1837 qid
= AP_MKQID(ac
->id
, dom
);
1838 dev
= bus_find_device(&ap_bus_type
, NULL
,
1840 __match_queue_device_with_qid
);
1841 aq
= dev
? to_ap_queue(dev
) : NULL
;
1842 if (!ap_test_config_usage_domain(dom
)) {
1844 AP_DBF_INFO("%s(%d,%d) not in config anymore, rm queue dev\n",
1845 __func__
, ac
->id
, dom
);
1846 device_unregister(dev
);
1848 goto put_dev_and_continue
;
1850 /* domain is valid, get info from this APQN */
1851 rc
= ap_queue_info(qid
, &hwinfo
, &decfg
, &chkstop
);
1855 AP_DBF_INFO("%s(%d,%d) queue_info() failed, rm queue dev\n",
1856 __func__
, ac
->id
, dom
);
1857 device_unregister(dev
);
1861 goto put_dev_and_continue
;
1865 /* if no queue device exists, create a new one */
1867 aq
= ap_queue_create(qid
, ac
);
1869 AP_DBF_WARN("%s(%d,%d) ap_queue_create() failed\n",
1870 __func__
, ac
->id
, dom
);
1873 aq
->config
= !decfg
;
1874 aq
->chkstop
= chkstop
;
1875 aq
->se_bstate
= hwinfo
.bs
;
1876 dev
= &aq
->ap_dev
.device
;
1877 dev
->bus
= &ap_bus_type
;
1878 dev
->parent
= &ac
->ap_dev
.device
;
1879 dev_set_name(dev
, "%02x.%04x", ac
->id
, dom
);
1880 /* register queue device */
1881 rc
= device_register(dev
);
1883 AP_DBF_WARN("%s(%d,%d) device_register() failed\n",
1884 __func__
, ac
->id
, dom
);
1885 goto put_dev_and_continue
;
1887 /* get it and thus adjust reference counter */
1890 AP_DBF_INFO("%s(%d,%d) new (decfg) queue dev created\n",
1891 __func__
, ac
->id
, dom
);
1892 } else if (chkstop
) {
1893 AP_DBF_INFO("%s(%d,%d) new (chkstop) queue dev created\n",
1894 __func__
, ac
->id
, dom
);
1896 /* nudge the queue's state machine */
1897 ap_queue_init_state(aq
);
1898 AP_DBF_INFO("%s(%d,%d) new queue dev created\n",
1899 __func__
, ac
->id
, dom
);
1901 goto put_dev_and_continue
;
1903 /* handle state changes on already existing queue device */
1904 spin_lock_bh(&aq
->lock
);
1906 aq
->se_bstate
= hwinfo
.bs
;
1907 /* checkstop state */
1908 if (chkstop
&& !aq
->chkstop
) {
1911 if (aq
->dev_state
> AP_DEV_STATE_UNINITIATED
) {
1912 aq
->dev_state
= AP_DEV_STATE_ERROR
;
1913 aq
->last_err_rc
= AP_RESPONSE_CHECKSTOPPED
;
1915 spin_unlock_bh(&aq
->lock
);
1916 pr_debug("(%d,%d) queue dev checkstop on\n",
1918 /* 'receive' pending messages with -EAGAIN */
1920 goto put_dev_and_continue
;
1921 } else if (!chkstop
&& aq
->chkstop
) {
1923 aq
->chkstop
= false;
1924 if (aq
->dev_state
> AP_DEV_STATE_UNINITIATED
)
1925 _ap_queue_init_state(aq
);
1926 spin_unlock_bh(&aq
->lock
);
1927 pr_debug("(%d,%d) queue dev checkstop off\n",
1929 goto put_dev_and_continue
;
1931 /* config state change */
1932 if (decfg
&& aq
->config
) {
1933 /* config off this queue device */
1935 if (aq
->dev_state
> AP_DEV_STATE_UNINITIATED
) {
1936 aq
->dev_state
= AP_DEV_STATE_ERROR
;
1937 aq
->last_err_rc
= AP_RESPONSE_DECONFIGURED
;
1939 spin_unlock_bh(&aq
->lock
);
1940 pr_debug("(%d,%d) queue dev config off\n",
1942 ap_send_config_uevent(&aq
->ap_dev
, aq
->config
);
1943 /* 'receive' pending messages with -EAGAIN */
1945 goto put_dev_and_continue
;
1946 } else if (!decfg
&& !aq
->config
) {
1947 /* config on this queue device */
1949 if (aq
->dev_state
> AP_DEV_STATE_UNINITIATED
)
1950 _ap_queue_init_state(aq
);
1951 spin_unlock_bh(&aq
->lock
);
1952 pr_debug("(%d,%d) queue dev config on\n",
1954 ap_send_config_uevent(&aq
->ap_dev
, aq
->config
);
1955 goto put_dev_and_continue
;
1957 /* handle other error states */
1958 if (!decfg
&& aq
->dev_state
== AP_DEV_STATE_ERROR
) {
1959 spin_unlock_bh(&aq
->lock
);
1960 /* 'receive' pending messages with -EAGAIN */
1962 /* re-init (with reset) the queue device */
1963 ap_queue_init_state(aq
);
1964 AP_DBF_INFO("%s(%d,%d) queue dev reinit enforced\n",
1965 __func__
, ac
->id
, dom
);
1966 goto put_dev_and_continue
;
1968 spin_unlock_bh(&aq
->lock
);
1969 put_dev_and_continue
:
1975 * Helper function for ap_scan_bus().
1976 * Does the scan bus job for the given adapter id.
1978 static inline void ap_scan_adapter(int ap
)
1980 struct ap_tapq_hwinfo hwinfo
;
1981 int rc
, dom
, comp_type
;
1982 bool decfg
, chkstop
;
1987 /* Is there currently a card device for this adapter ? */
1988 dev
= bus_find_device(&ap_bus_type
, NULL
,
1990 __match_card_device_with_id
);
1991 ac
= dev
? to_ap_card(dev
) : NULL
;
1993 /* Adapter not in configuration ? */
1994 if (!ap_test_config_card_id(ap
)) {
1996 AP_DBF_INFO("%s(%d) ap not in config any more, rm card and queue devs\n",
1998 ap_scan_rm_card_dev_and_queue_devs(ac
);
2005 * Adapter ap is valid in the current configuration. So do some checks:
2006 * If no card device exists, build one. If a card device exists, check
2007 * for type and functions changed. For all this we need to find a valid
2011 for (dom
= 0; dom
<= ap_max_domain_id
; dom
++)
2012 if (ap_test_config_usage_domain(dom
)) {
2013 qid
= AP_MKQID(ap
, dom
);
2014 if (ap_queue_info(qid
, &hwinfo
, &decfg
, &chkstop
) > 0)
2017 if (dom
> ap_max_domain_id
) {
2018 /* Could not find one valid APQN for this adapter */
2020 AP_DBF_INFO("%s(%d) no type info (no APQN found), rm card and queue devs\n",
2022 ap_scan_rm_card_dev_and_queue_devs(ac
);
2025 pr_debug("(%d) no type info (no APQN found), ignored\n",
2031 /* No apdater type info available, an unusable adapter */
2033 AP_DBF_INFO("%s(%d) no valid type (0) info, rm card and queue devs\n",
2035 ap_scan_rm_card_dev_and_queue_devs(ac
);
2038 pr_debug("(%d) no valid type (0) info, ignored\n", ap
);
2042 hwinfo
.value
&= TAPQ_CARD_HWINFO_MASK
; /* filter card specific hwinfo */
2044 /* Check APQN against existing card device for changes */
2045 if (ac
->hwinfo
.at
!= hwinfo
.at
) {
2046 AP_DBF_INFO("%s(%d) hwtype %d changed, rm card and queue devs\n",
2047 __func__
, ap
, hwinfo
.at
);
2048 ap_scan_rm_card_dev_and_queue_devs(ac
);
2051 } else if (ac
->hwinfo
.fac
!= hwinfo
.fac
) {
2052 AP_DBF_INFO("%s(%d) functions 0x%08x changed, rm card and queue devs\n",
2053 __func__
, ap
, hwinfo
.fac
);
2054 ap_scan_rm_card_dev_and_queue_devs(ac
);
2058 /* handle checkstop state change */
2059 if (chkstop
&& !ac
->chkstop
) {
2062 AP_DBF_INFO("%s(%d) card dev checkstop on\n",
2064 } else if (!chkstop
&& ac
->chkstop
) {
2066 ac
->chkstop
= false;
2067 AP_DBF_INFO("%s(%d) card dev checkstop off\n",
2070 /* handle config state change */
2071 if (decfg
&& ac
->config
) {
2073 AP_DBF_INFO("%s(%d) card dev config off\n",
2075 ap_send_config_uevent(&ac
->ap_dev
, ac
->config
);
2076 } else if (!decfg
&& !ac
->config
) {
2078 AP_DBF_INFO("%s(%d) card dev config on\n",
2080 ap_send_config_uevent(&ac
->ap_dev
, ac
->config
);
2086 /* Build a new card device */
2087 comp_type
= ap_get_compatible_type(qid
, hwinfo
.at
, hwinfo
.fac
);
2089 AP_DBF_WARN("%s(%d) type %d, can't get compatibility type\n",
2090 __func__
, ap
, hwinfo
.at
);
2093 ac
= ap_card_create(ap
, hwinfo
, comp_type
);
2095 AP_DBF_WARN("%s(%d) ap_card_create() failed\n",
2099 ac
->config
= !decfg
;
2100 ac
->chkstop
= chkstop
;
2101 dev
= &ac
->ap_dev
.device
;
2102 dev
->bus
= &ap_bus_type
;
2103 dev
->parent
= ap_root_device
;
2104 dev_set_name(dev
, "card%02x", ap
);
2105 /* maybe enlarge ap_max_msg_size to support this card */
2106 if (ac
->maxmsgsize
> atomic_read(&ap_max_msg_size
)) {
2107 atomic_set(&ap_max_msg_size
, ac
->maxmsgsize
);
2108 AP_DBF_INFO("%s(%d) ap_max_msg_size update to %d byte\n",
2110 atomic_read(&ap_max_msg_size
));
2112 /* Register the new card device with AP bus */
2113 rc
= device_register(dev
);
2115 AP_DBF_WARN("%s(%d) device_register() failed\n",
2120 /* get it and thus adjust reference counter */
2123 AP_DBF_INFO("%s(%d) new (decfg) card dev type=%d func=0x%08x created\n",
2124 __func__
, ap
, hwinfo
.at
, hwinfo
.fac
);
2126 AP_DBF_INFO("%s(%d) new (chkstop) card dev type=%d func=0x%08x created\n",
2127 __func__
, ap
, hwinfo
.at
, hwinfo
.fac
);
2129 AP_DBF_INFO("%s(%d) new card dev type=%d func=0x%08x created\n",
2130 __func__
, ap
, hwinfo
.at
, hwinfo
.fac
);
2133 /* Verify the domains and the queue devices for this card */
2134 ap_scan_domains(ac
);
2136 /* release the card device */
2137 put_device(&ac
->ap_dev
.device
);
2141 * ap_get_configuration - get the host AP configuration
2143 * Stores the host AP configuration information returned from the previous call
2144 * to Query Configuration Information (QCI), then retrieves and stores the
2145 * current AP configuration returned from QCI.
2147 * Return: true if the host AP configuration changed between calls to QCI;
2148 * otherwise, return false.
2150 static bool ap_get_configuration(void)
2152 if (!ap_qci_info
->flags
) /* QCI not supported */
2155 memcpy(ap_qci_info_old
, ap_qci_info
, sizeof(*ap_qci_info
));
2156 ap_qci(ap_qci_info
);
2158 return memcmp(ap_qci_info
, ap_qci_info_old
,
2159 sizeof(struct ap_config_info
)) != 0;
2163 * ap_config_has_new_aps - Check current against old qci info if
2164 * new adapters have appeared. Returns true if at least one new
2165 * adapter in the apm mask is showing up. Existing adapters or
2166 * receding adapters are not counted.
2168 static bool ap_config_has_new_aps(void)
2171 unsigned long m
[BITS_TO_LONGS(AP_DEVICES
)];
2173 if (!ap_qci_info
->flags
)
2176 bitmap_andnot(m
, (unsigned long *)ap_qci_info
->apm
,
2177 (unsigned long *)ap_qci_info_old
->apm
, AP_DEVICES
);
2178 if (!bitmap_empty(m
, AP_DEVICES
))
2185 * ap_config_has_new_doms - Check current against old qci info if
2186 * new (usage) domains have appeared. Returns true if at least one
2187 * new domain in the aqm mask is showing up. Existing domains or
2188 * receding domains are not counted.
2190 static bool ap_config_has_new_doms(void)
2192 unsigned long m
[BITS_TO_LONGS(AP_DOMAINS
)];
2194 if (!ap_qci_info
->flags
)
2197 bitmap_andnot(m
, (unsigned long *)ap_qci_info
->aqm
,
2198 (unsigned long *)ap_qci_info_old
->aqm
, AP_DOMAINS
);
2199 if (!bitmap_empty(m
, AP_DOMAINS
))
2206 * ap_scan_bus(): Scan the AP bus for new devices
2207 * Always run under mutex ap_scan_bus_mutex protection
2208 * which needs to get locked/unlocked by the caller!
2209 * Returns true if any config change has been detected
2210 * during the scan, otherwise false.
2212 static bool ap_scan_bus(void)
2214 bool config_changed
;
2219 /* (re-)fetch configuration via QCI */
2220 config_changed
= ap_get_configuration();
2221 if (config_changed
) {
2222 if (ap_config_has_new_aps() || ap_config_has_new_doms()) {
2224 * Appearance of new adapters and/or domains need to
2225 * build new ap devices which need to get bound to an
2226 * device driver. Thus reset the APQN bindings complete
2229 reinit_completion(&ap_apqn_bindings_complete
);
2231 /* post a config change notify */
2232 notify_config_changed();
2236 /* loop over all possible adapters */
2237 for (ap
= 0; ap
<= ap_max_adapter_id
; ap
++)
2238 ap_scan_adapter(ap
);
2240 /* scan complete notify */
2242 notify_scan_complete();
2244 /* check if there is at least one queue available with default domain */
2245 if (ap_domain_index
>= 0) {
2246 struct device
*dev
=
2247 bus_find_device(&ap_bus_type
, NULL
,
2248 (void *)(long)ap_domain_index
,
2249 __match_queue_device_with_queue_id
);
2253 AP_DBF_INFO("%s no queue device with default domain %d available\n",
2254 __func__
, ap_domain_index
);
2257 if (atomic64_inc_return(&ap_scan_bus_count
) == 1) {
2258 pr_debug("init scan complete\n");
2259 ap_send_init_scan_done_uevent();
2262 ap_check_bindings_complete();
2264 mod_timer(&ap_scan_bus_timer
, jiffies
+ ap_scan_bus_time
* HZ
);
2266 pr_debug("< config_changed=%d\n", config_changed
);
2268 return config_changed
;
2272 * Callback for the ap_scan_bus_timer
2273 * Runs periodically, workqueue timer (ap_scan_bus_time)
2275 static void ap_scan_bus_timer_callback(struct timer_list
*unused
)
2278 * schedule work into the system long wq which when
2279 * the work is finally executed, calls the AP bus scan.
2281 queue_work(system_long_wq
, &ap_scan_bus_work
);
2285 * Callback for the ap_scan_bus_work
2287 static void ap_scan_bus_wq_callback(struct work_struct
*unused
)
2290 * Try to invoke an ap_scan_bus(). If the mutex acquisition
2291 * fails there is currently another task already running the
2292 * AP scan bus and there is no need to wait and re-trigger the
2293 * scan again. Please note at the end of the scan bus function
2294 * the AP scan bus timer is re-armed which triggers then the
2295 * ap_scan_bus_timer_callback which enqueues a work into the
2296 * system_long_wq which invokes this function here again.
2298 if (mutex_trylock(&ap_scan_bus_mutex
)) {
2299 ap_scan_bus_task
= current
;
2300 ap_scan_bus_result
= ap_scan_bus();
2301 ap_scan_bus_task
= NULL
;
2302 mutex_unlock(&ap_scan_bus_mutex
);
2306 static inline void __exit
ap_async_exit(void)
2309 ap_poll_thread_stop();
2310 chsc_notifier_unregister(&ap_bus_nb
);
2311 cancel_work(&ap_scan_bus_work
);
2312 hrtimer_cancel(&ap_poll_timer
);
2313 timer_delete(&ap_scan_bus_timer
);
2316 static inline int __init
ap_async_init(void)
2320 /* Setup the AP bus rescan timer. */
2321 timer_setup(&ap_scan_bus_timer
, ap_scan_bus_timer_callback
, 0);
2324 * Setup the high resolution poll timer.
2325 * If we are running under z/VM adjust polling to z/VM polling rate.
2328 poll_high_timeout
= 1500000;
2329 hrtimer_init(&ap_poll_timer
, CLOCK_MONOTONIC
, HRTIMER_MODE_ABS
);
2330 ap_poll_timer
.function
= ap_poll_timeout
;
2332 queue_work(system_long_wq
, &ap_scan_bus_work
);
2334 rc
= chsc_notifier_register(&ap_bus_nb
);
2338 /* Start the low priority AP bus poll thread. */
2339 if (!ap_thread_flag
)
2342 rc
= ap_poll_thread_start();
2349 chsc_notifier_unregister(&ap_bus_nb
);
2351 cancel_work(&ap_scan_bus_work
);
2352 hrtimer_cancel(&ap_poll_timer
);
2353 timer_delete(&ap_scan_bus_timer
);
2357 static inline void ap_irq_exit(void)
2360 unregister_adapter_interrupt(&ap_airq
);
2363 static inline int __init
ap_irq_init(void)
2367 if (!ap_interrupts_available() || !ap_useirq
)
2370 rc
= register_adapter_interrupt(&ap_airq
);
2371 ap_irq_flag
= (rc
== 0);
2376 static inline void ap_debug_exit(void)
2378 debug_unregister(ap_dbf_info
);
2381 static inline int __init
ap_debug_init(void)
2383 ap_dbf_info
= debug_register("ap", 2, 1,
2384 AP_DBF_MAX_SPRINTF_ARGS
* sizeof(long));
2385 debug_register_view(ap_dbf_info
, &debug_sprintf_view
);
2386 debug_set_level(ap_dbf_info
, DBF_ERR
);
2391 static void __init
ap_perms_init(void)
2393 /* all resources usable if no kernel parameter string given */
2394 memset(&ap_perms
.ioctlm
, 0xFF, sizeof(ap_perms
.ioctlm
));
2395 memset(&ap_perms
.apm
, 0xFF, sizeof(ap_perms
.apm
));
2396 memset(&ap_perms
.aqm
, 0xFF, sizeof(ap_perms
.aqm
));
2398 /* apm kernel parameter string */
2400 memset(&ap_perms
.apm
, 0, sizeof(ap_perms
.apm
));
2401 ap_parse_mask_str(apm_str
, ap_perms
.apm
, AP_DEVICES
,
2405 /* aqm kernel parameter string */
2407 memset(&ap_perms
.aqm
, 0, sizeof(ap_perms
.aqm
));
2408 ap_parse_mask_str(aqm_str
, ap_perms
.aqm
, AP_DOMAINS
,
2414 * ap_module_init(): The module initialization code.
2416 * Initializes the module.
2418 static int __init
ap_module_init(void)
2422 rc
= ap_debug_init();
2426 if (!ap_instructions_available()) {
2427 pr_warn("The hardware system does not support AP instructions\n");
2431 /* init ap_queue hashtable */
2432 hash_init(ap_queues
);
2434 /* set up the AP permissions (ioctls, ap and aq masks) */
2437 /* Get AP configuration data if available */
2440 /* check default domain setting */
2441 if (ap_domain_index
< -1 || ap_domain_index
> ap_max_domain_id
||
2442 (ap_domain_index
>= 0 &&
2443 !test_bit_inv(ap_domain_index
, ap_perms
.aqm
))) {
2444 pr_warn("%d is not a valid cryptographic domain\n",
2446 ap_domain_index
= -1;
2449 /* Create /sys/bus/ap. */
2450 rc
= bus_register(&ap_bus_type
);
2454 /* Create /sys/devices/ap. */
2455 ap_root_device
= root_device_register("ap");
2456 rc
= PTR_ERR_OR_ZERO(ap_root_device
);
2459 ap_root_device
->bus
= &ap_bus_type
;
2461 /* enable interrupts if available */
2466 /* Setup asynchronous work (timers, workqueue, etc). */
2467 rc
= ap_async_init();
2476 root_device_unregister(ap_root_device
);
2478 bus_unregister(&ap_bus_type
);
2484 static void __exit
ap_module_exit(void)
2488 root_device_unregister(ap_root_device
);
2489 bus_unregister(&ap_bus_type
);
2493 module_init(ap_module_init
);
2494 module_exit(ap_module_exit
);