Lines Matching refs:user
194 static struct ipmi_user *acquire_ipmi_user(struct ipmi_user *user, int *index) in acquire_ipmi_user() argument
195 __acquires(user->release_barrier) in acquire_ipmi_user()
199 *index = srcu_read_lock(&user->release_barrier); in acquire_ipmi_user()
200 ruser = srcu_dereference(user->self, &user->release_barrier); in acquire_ipmi_user()
202 srcu_read_unlock(&user->release_barrier, *index); in acquire_ipmi_user()
206 static void release_ipmi_user(struct ipmi_user *user, int index) in release_ipmi_user() argument
208 srcu_read_unlock(&user->release_barrier, index); in release_ipmi_user()
214 struct ipmi_user *user; member
876 if (!msg->user) { in deliver_response()
894 struct ipmi_user *user = acquire_ipmi_user(msg->user, &index); in deliver_response() local
896 if (user) { in deliver_response()
897 user->handler->ipmi_recv_hndl(msg, user->handler_data); in deliver_response()
898 release_ipmi_user(user, index); in deliver_response()
1145 struct ipmi_user *user = container_of(work, struct ipmi_user, in free_user_work() local
1148 cleanup_srcu_struct(&user->release_barrier); in free_user_work()
1149 vfree(user); in free_user_work()
1155 struct ipmi_user **user) in ipmi_create_user() argument
1223 *user = new_user; in ipmi_create_user()
1261 struct ipmi_user *user = container_of(ref, struct ipmi_user, refcount); in free_user() local
1264 schedule_work(&user->remove_work); in free_user()
1267 static void _ipmi_destroy_user(struct ipmi_user *user) in _ipmi_destroy_user() argument
1269 struct ipmi_smi *intf = user->intf; in _ipmi_destroy_user()
1275 if (!acquire_ipmi_user(user, &i)) { in _ipmi_destroy_user()
1280 synchronize_srcu(&user->release_barrier); in _ipmi_destroy_user()
1284 rcu_assign_pointer(user->self, NULL); in _ipmi_destroy_user()
1285 release_ipmi_user(user, i); in _ipmi_destroy_user()
1287 synchronize_srcu(&user->release_barrier); in _ipmi_destroy_user()
1289 if (user->handler->shutdown) in _ipmi_destroy_user()
1290 user->handler->shutdown(user->handler_data); in _ipmi_destroy_user()
1292 if (user->handler->ipmi_watchdog_pretimeout) in _ipmi_destroy_user()
1295 if (user->gets_events) in _ipmi_destroy_user()
1300 list_del_rcu(&user->link); in _ipmi_destroy_user()
1304 && (intf->seq_table[i].recv_msg->user == user)) { in _ipmi_destroy_user()
1321 if (rcvr->user == user) { in _ipmi_destroy_user()
1339 int ipmi_destroy_user(struct ipmi_user *user) in ipmi_destroy_user() argument
1341 _ipmi_destroy_user(user); in ipmi_destroy_user()
1343 kref_put(&user->refcount, free_user); in ipmi_destroy_user()
1349 int ipmi_get_version(struct ipmi_user *user, in ipmi_get_version() argument
1356 user = acquire_ipmi_user(user, &index); in ipmi_get_version()
1357 if (!user) in ipmi_get_version()
1360 rv = bmc_get_device_id(user->intf, NULL, &id, NULL, NULL); in ipmi_get_version()
1365 release_ipmi_user(user, index); in ipmi_get_version()
1371 int ipmi_set_my_address(struct ipmi_user *user, in ipmi_set_my_address() argument
1377 user = acquire_ipmi_user(user, &index); in ipmi_set_my_address()
1378 if (!user) in ipmi_set_my_address()
1385 user->intf->addrinfo[channel].address = address; in ipmi_set_my_address()
1387 release_ipmi_user(user, index); in ipmi_set_my_address()
1393 int ipmi_get_my_address(struct ipmi_user *user, in ipmi_get_my_address() argument
1399 user = acquire_ipmi_user(user, &index); in ipmi_get_my_address()
1400 if (!user) in ipmi_get_my_address()
1407 *address = user->intf->addrinfo[channel].address; in ipmi_get_my_address()
1409 release_ipmi_user(user, index); in ipmi_get_my_address()
1415 int ipmi_set_my_LUN(struct ipmi_user *user, in ipmi_set_my_LUN() argument
1421 user = acquire_ipmi_user(user, &index); in ipmi_set_my_LUN()
1422 if (!user) in ipmi_set_my_LUN()
1429 user->intf->addrinfo[channel].lun = LUN & 0x3; in ipmi_set_my_LUN()
1431 release_ipmi_user(user, index); in ipmi_set_my_LUN()
1437 int ipmi_get_my_LUN(struct ipmi_user *user, in ipmi_get_my_LUN() argument
1443 user = acquire_ipmi_user(user, &index); in ipmi_get_my_LUN()
1444 if (!user) in ipmi_get_my_LUN()
1451 *address = user->intf->addrinfo[channel].lun; in ipmi_get_my_LUN()
1453 release_ipmi_user(user, index); in ipmi_get_my_LUN()
1459 int ipmi_get_maintenance_mode(struct ipmi_user *user) in ipmi_get_maintenance_mode() argument
1464 user = acquire_ipmi_user(user, &index); in ipmi_get_maintenance_mode()
1465 if (!user) in ipmi_get_maintenance_mode()
1468 spin_lock_irqsave(&user->intf->maintenance_mode_lock, flags); in ipmi_get_maintenance_mode()
1469 mode = user->intf->maintenance_mode; in ipmi_get_maintenance_mode()
1470 spin_unlock_irqrestore(&user->intf->maintenance_mode_lock, flags); in ipmi_get_maintenance_mode()
1471 release_ipmi_user(user, index); in ipmi_get_maintenance_mode()
1484 int ipmi_set_maintenance_mode(struct ipmi_user *user, int mode) in ipmi_set_maintenance_mode() argument
1488 struct ipmi_smi *intf = user->intf; in ipmi_set_maintenance_mode()
1490 user = acquire_ipmi_user(user, &index); in ipmi_set_maintenance_mode()
1491 if (!user) in ipmi_set_maintenance_mode()
1520 release_ipmi_user(user, index); in ipmi_set_maintenance_mode()
1526 int ipmi_set_gets_events(struct ipmi_user *user, bool val) in ipmi_set_gets_events() argument
1529 struct ipmi_smi *intf = user->intf; in ipmi_set_gets_events()
1534 user = acquire_ipmi_user(user, &index); in ipmi_set_gets_events()
1535 if (!user) in ipmi_set_gets_events()
1541 if (user->gets_events == val) in ipmi_set_gets_events()
1544 user->gets_events = val; in ipmi_set_gets_events()
1561 while (user->gets_events && !list_empty(&intf->waiting_events)) { in ipmi_set_gets_events()
1574 msg->user = user; in ipmi_set_gets_events()
1575 kref_get(&user->refcount); in ipmi_set_gets_events()
1585 release_ipmi_user(user, index); in ipmi_set_gets_events()
1623 int ipmi_register_for_cmd(struct ipmi_user *user, in ipmi_register_for_cmd() argument
1628 struct ipmi_smi *intf = user->intf; in ipmi_register_for_cmd()
1632 user = acquire_ipmi_user(user, &index); in ipmi_register_for_cmd()
1633 if (!user) in ipmi_register_for_cmd()
1644 rcvr->user = user; in ipmi_register_for_cmd()
1662 release_ipmi_user(user, index); in ipmi_register_for_cmd()
1668 int ipmi_unregister_for_cmd(struct ipmi_user *user, in ipmi_unregister_for_cmd() argument
1673 struct ipmi_smi *intf = user->intf; in ipmi_unregister_for_cmd()
1678 user = acquire_ipmi_user(user, &index); in ipmi_unregister_for_cmd()
1679 if (!user) in ipmi_unregister_for_cmd()
1689 if (rcvr->user == user) { in ipmi_unregister_for_cmd()
1701 release_ipmi_user(user, index); in ipmi_unregister_for_cmd()
2178 static int i_ipmi_request(struct ipmi_user *user, in i_ipmi_request() argument
2225 recv_msg->user = user; in i_ipmi_request()
2226 if (user) in i_ipmi_request()
2228 kref_get(&user->refcount); in i_ipmi_request()
2280 int ipmi_request_settime(struct ipmi_user *user, in ipmi_request_settime() argument
2292 if (!user) in ipmi_request_settime()
2295 user = acquire_ipmi_user(user, &index); in ipmi_request_settime()
2296 if (!user) in ipmi_request_settime()
2299 rv = check_addr(user->intf, addr, &saddr, &lun); in ipmi_request_settime()
2301 rv = i_ipmi_request(user, in ipmi_request_settime()
2302 user->intf, in ipmi_request_settime()
2314 release_ipmi_user(user, index); in ipmi_request_settime()
2319 int ipmi_request_supply_msgs(struct ipmi_user *user, in ipmi_request_supply_msgs() argument
2331 if (!user) in ipmi_request_supply_msgs()
2334 user = acquire_ipmi_user(user, &index); in ipmi_request_supply_msgs()
2335 if (!user) in ipmi_request_supply_msgs()
2338 rv = check_addr(user->intf, addr, &saddr, &lun); in ipmi_request_supply_msgs()
2340 rv = i_ipmi_request(user, in ipmi_request_supply_msgs()
2341 user->intf, in ipmi_request_supply_msgs()
2353 release_ipmi_user(user, index); in ipmi_request_supply_msgs()
3367 void ipmi_poll_interface(struct ipmi_user *user) in ipmi_poll_interface() argument
3369 ipmi_poll(user->intf); in ipmi_poll_interface()
3601 struct ipmi_user *user = in ipmi_unregister_smi() local
3605 _ipmi_destroy_user(user); in ipmi_unregister_smi()
3692 struct ipmi_user *user = NULL; in handle_ipmb_get_msg_cmd() local
3714 user = rcvr->user; in handle_ipmb_get_msg_cmd()
3715 kref_get(&user->refcount); in handle_ipmb_get_msg_cmd()
3717 user = NULL; in handle_ipmb_get_msg_cmd()
3720 if (user == NULL) { in handle_ipmb_get_msg_cmd()
3760 kref_put(&user->refcount, free_user); in handle_ipmb_get_msg_cmd()
3773 recv_msg->user = user; in handle_ipmb_get_msg_cmd()
3872 struct ipmi_user *user = NULL; in handle_lan_get_msg_cmd() local
3894 user = rcvr->user; in handle_lan_get_msg_cmd()
3895 kref_get(&user->refcount); in handle_lan_get_msg_cmd()
3897 user = NULL; in handle_lan_get_msg_cmd()
3900 if (user == NULL) { in handle_lan_get_msg_cmd()
3917 kref_put(&user->refcount, free_user); in handle_lan_get_msg_cmd()
3933 recv_msg->user = user; in handle_lan_get_msg_cmd()
3971 struct ipmi_user *user = NULL; in handle_oem_get_msg_cmd() local
4001 user = rcvr->user; in handle_oem_get_msg_cmd()
4002 kref_get(&user->refcount); in handle_oem_get_msg_cmd()
4004 user = NULL; in handle_oem_get_msg_cmd()
4007 if (user == NULL) { in handle_oem_get_msg_cmd()
4026 kref_put(&user->refcount, free_user); in handle_oem_get_msg_cmd()
4040 recv_msg->user = user; in handle_oem_get_msg_cmd()
4087 struct ipmi_user *user; in handle_read_event_rsp() local
4113 list_for_each_entry_rcu(user, &intf->users, link) { in handle_read_event_rsp()
4114 if (!user->gets_events) in handle_read_event_rsp()
4137 recv_msg->user = user; in handle_read_event_rsp()
4138 kref_get(&user->refcount); in handle_read_event_rsp()
4464 struct ipmi_user *user; in handle_new_recv_msgs() local
4468 list_for_each_entry_rcu(user, &intf->users, link) { in handle_new_recv_msgs()
4469 if (user->handler->ipmi_watchdog_pretimeout) in handle_new_recv_msgs()
4470 user->handler->ipmi_watchdog_pretimeout( in handle_new_recv_msgs()
4471 user->handler_data); in handle_new_recv_msgs()
4820 rv->user = NULL; in ipmi_alloc_recv_msg()
4829 if (msg->user) in ipmi_free_recv_msg()
4830 kref_put(&msg->user->refcount, free_user); in ipmi_free_recv_msg()
5063 struct ipmi_user *user; in panic_event() local
5100 list_for_each_entry_rcu(user, &intf->users, link) { in panic_event()
5101 if (user->handler->ipmi_panic_handler) in panic_event()
5102 user->handler->ipmi_panic_handler( in panic_event()
5103 user->handler_data); in panic_event()