}
EXPORT_SYMBOL(ap_send_online_uevent);
+void ap_send_se_bind_uevent(struct ap_device *ap_dev)
+{
+ char *envp[] = { "SE_BIND=1", NULL };
+
+ kobject_uevent_env(&ap_dev->device.kobj, KOBJ_CHANGE, envp);
+}
+
+void ap_send_se_assoc_uevent(struct ap_device *ap_dev, unsigned int assoc_idx)
+{
+ char buf[32];
+ char *envp[] = { buf, NULL };
+
+ snprintf(buf, sizeof(buf), "SE_ASSOC=%u", assoc_idx);
+
+ kobject_uevent_env(&ap_dev->device.kobj, KOBJ_CHANGE, envp);
+}
+
static void ap_send_mask_changed_uevent(unsigned long *newapm,
unsigned long *newaqm)
{
void ap_send_config_uevent(struct ap_device *ap_dev, bool cfg);
void ap_send_online_uevent(struct ap_device *ap_dev, int online);
+void ap_send_se_bind_uevent(struct ap_device *ap_dev);
+void ap_send_se_assoc_uevent(struct ap_device *ap_dev, unsigned int assoc_idx);
#endif /* _AP_BUS_H_ */
pr_debug("queue 0x%02x.%04x associated with %u\n",
AP_QID_CARD(aq->qid),
AP_QID_QUEUE(aq->qid), aq->assoc_idx);
+ ap_send_se_assoc_uevent(&aq->ap_dev, aq->assoc_idx);
return AP_SM_WAIT_NONE;
case AP_BS_Q_USABLE_NO_SECURE_KEY:
/* association still pending */
/* SE bind was successful */
AP_DBF_INFO("%s bapq(0x%02x.%04x) success\n", __func__,
AP_QID_CARD(aq->qid), AP_QID_QUEUE(aq->qid));
+ ap_send_se_bind_uevent(&aq->ap_dev);
rc = count;
out: