Lines Matching full:sim
262 static void xptaction(struct cam_sim *sim, union ccb *work_ccb);
263 static void xptpoll(struct cam_sim *sim);
387 * the appropriate SIM lock once the bus/SIM is located.
904 * The xpt layer is, itself, the equivalent of a SIM. in xpt_init()
932 * Looking at the XPT from the SIM layer, the XPT is in xpt_init()
1064 path->bus->sim->sim_name, in xpt_announce_periph_sbuf()
1065 path->bus->sim->unit_number, in xpt_announce_periph_sbuf()
1066 path->bus->sim->bus_id, in xpt_announce_periph_sbuf()
1139 path->bus->sim->sim_name, in xpt_denounce_periph_sbuf()
1140 path->bus->sim->unit_number, in xpt_denounce_periph_sbuf()
1141 path->bus->sim->bus_id, in xpt_denounce_periph_sbuf()
1335 && (cur_pattern->bus_id != bus->sim->bus_id)) in xptbusmatch()
1339 && (cur_pattern->unit_number != bus->sim->unit_number)) in xptbusmatch()
1343 && (strncmp(cur_pattern->dev_name, bus->sim->sim_name, in xptbusmatch()
1643 cdm->matches[j].result.bus_result.bus_id = bus->sim->bus_id; in xptedtbusfunc()
1645 bus->sim->unit_number; in xptedtbusfunc()
1647 bus->sim->sim_name, in xptedtbusfunc()
2537 struct cam_sim *sim; in xpt_action_default() local
2596 devq = path->bus->sim->devq; in xpt_action_default()
2625 devq = device->sim->devq; in xpt_action_default()
2644 * the SIM. Flag it for abort and the in xpt_action_default()
2645 * SIM will do so just before starting in xpt_action_default()
2666 * in the XPT, pass the request down to the SIM for processing. in xpt_action_default()
2684 sim = path->bus->sim; in xpt_action_default()
2685 mtx = sim->mtx; in xpt_action_default()
2692 ("Calling sim->sim_action(): func=%#x\n", start_ccb->ccb_h.func_code)); in xpt_action_default()
2693 (*(sim->sim_action))(sim, start_ccb); in xpt_action_default()
2695 ("sim->sim_action returned: status=%#x\n", start_ccb->ccb_h.status)); in xpt_action_default()
2733 struct cam_devq *devq = bus->sim->devq; in xpt_action_default()
2918 cur_entry->event_lock = (path->bus->sim->mtx && in xpt_action_default()
2919 mtx_owned(path->bus->sim->mtx)) ? 1 : 0; in xpt_action_default()
2952 mtx_lock(&dev->sim->devq->send_mtx); in xpt_action_default()
2996 mtx_unlock(&dev->sim->devq->send_mtx); in xpt_action_default()
3081 * Call the sim poll routine to allow the sim to complete
3086 xpt_sim_poll(struct cam_sim *sim) in xpt_sim_poll() argument
3090 KASSERT(cam_sim_pollable(sim), ("%s: non-pollable sim", __func__)); in xpt_sim_poll()
3091 mtx = sim->mtx; in xpt_sim_poll()
3094 (*(sim->sim_poll))(sim); in xpt_sim_poll()
3104 struct cam_sim *sim; in xpt_poll_setup() local
3109 sim = start_ccb->ccb_h.path->bus->sim; in xpt_poll_setup()
3110 devq = sim->devq; in xpt_poll_setup()
3113 KASSERT(cam_sim_pollable(sim), ("%s: non-pollable sim", __func__)); in xpt_poll_setup()
3125 xpt_sim_poll(sim); in xpt_poll_setup()
3138 KASSERT(cam_sim_pollable(start_ccb->ccb_h.path->bus->sim), in xpt_pollwait()
3139 ("%s: non-pollable sim", __func__)); in xpt_pollwait()
3141 xpt_sim_poll(start_ccb->ccb_h.path->bus->sim); in xpt_pollwait()
3303 struct cam_sim *sim; in xpt_run_devq() local
3377 * Device queues can be shared among multiple SIM instances in xpt_run_devq()
3378 * that reside on different buses. Use the SIM from the in xpt_run_devq()
3381 sim = device->sim; in xpt_run_devq()
3382 mtx = sim->mtx; in xpt_run_devq()
3388 (*(sim->sim_action))(sim, work_ccb); in xpt_run_devq()
3726 device->sim->sim_name, in xpt_device_sbuf()
3727 device->sim->unit_number, in xpt_device_sbuf()
3728 device->sim->bus_id, in xpt_device_sbuf()
3778 sbuf_printf(sb, "%s%d:%d:", path->bus->sim->sim_name, in xpt_path_sbuf()
3779 path->bus->sim->unit_number, in xpt_path_sbuf()
3780 path->bus->sim->bus_id); in xpt_path_sbuf()
3825 return (path->bus->sim); in xpt_path_sim()
3858 /* Functions accessed by SIM drivers */
3874 * A sim structure, listing the SIM entry points and instance
3875 * identification info is passed to xpt_bus_register to hook the SIM
3883 xpt_bus_register(struct cam_sim *sim, device_t parent, uint32_t bus) in xpt_bus_register() argument
3891 sim->bus_id = bus; in xpt_bus_register()
3901 cam_sim_hold(sim); in xpt_bus_register()
3902 new_bus->sim = sim; in xpt_bus_register()
3910 sim->path_id = new_bus->path_id = in xpt_bus_register()
3911 xptpathid(sim->sim_name, sim->unit_number, sim->bus_id); in xpt_bus_register()
3925 * the SIM. This will then allow for probing and attaching of in xpt_bus_register()
3930 status = xpt_create_path(&path, /*periph*/NULL, sim->path_id, in xpt_bus_register()
3965 if (sim->path_id != CAM_XPT_PATH_ID) { in xpt_bus_register()
4234 xpt_release_simq(path->bus->sim, TRUE); in xpt_async_process()
4260 path->device->sim->mtx : NULL; in xpt_async_bcast()
4323 xpt_freeze_simq(path->bus->sim, 1); in xpt_async()
4349 devq = dev->sim->devq; in xpt_freeze_devq_device()
4368 devq = dev->sim->devq; in xpt_freeze_devq()
4377 xpt_freeze_simq(struct cam_sim *sim, u_int count) in xpt_freeze_simq() argument
4382 devq = sim->devq; in xpt_freeze_simq()
4397 devq = dev->sim->devq; in xpt_release_devq_timeout()
4412 devq = dev->sim->devq; in xpt_release_devq()
4415 xpt_run_devq(dev->sim->devq); in xpt_release_devq()
4423 mtx_assert(&dev->sim->devq->send_mtx, MA_OWNED); in xpt_release_devq_device()
4454 xpt_schedule_devq(dev->sim->devq, dev); in xpt_release_devq_device()
4461 xpt_release_simq(struct cam_sim *sim, int run_queue) in xpt_release_simq() argument
4465 devq = sim->devq; in xpt_release_simq()
4479 xpt_run_devq(sim->devq); in xpt_release_simq()
4505 /* Store the time the ccb was in the sim */ in xpt_done()
4529 /* Store the time the ccb was in the sim */ in xpt_done_direct()
4662 cam_sim_release(bus->sim); in xpt_release_bus()
4772 devq = bus->sim->devq; in xpt_alloc_device()
4787 device->sim = bus->sim; in xpt_alloc_device()
4789 bus->sim->max_dev_openings) != 0) { in xpt_alloc_device()
4847 devq = bus->sim->devq; in xpt_release_device()
4888 mtx_lock(&dev->sim->devq->send_mtx); in xpt_dev_ccbq_resize()
4890 mtx_unlock(&dev->sim->devq->send_mtx); in xpt_dev_ccbq_resize()
4954 struct cam_sim *sim; in xpt_start_tags() local
4958 sim = path->bus->sim; in xpt_start_tags()
4966 sim->max_tagged_dev_openings); in xpt_start_tags()
4985 struct cam_sim *sim; in xpt_stop_tags() local
4988 sim = path->bus->sim; in xpt_stop_tags()
4993 xpt_dev_ccbq_resize(path, sim->max_dev_openings); in xpt_stop_tags()
5191 xptaction(struct cam_sim *sim, union ccb *work_ccb) in xptaction() argument
5212 strlcpy(cpi->dev_name, sim->sim_name, DEV_IDLEN); in xptaction()
5213 cpi->unit_number = sim->unit_number; in xptaction()
5214 cpi->bus_id = sim->bus_id; in xptaction()
5235 xptpoll(struct cam_sim *sim) in xptpoll() argument
5261 struct cam_sim *sim = NULL; in xpt_done_process() local
5296 mtx_lock(&device->sim->devq->send_mtx); in xpt_done_process()
5299 mtx_unlock(&device->sim->devq->send_mtx); in xpt_done_process()
5310 sim = ccb_h->path->bus->sim; in xpt_done_process()
5313 KASSERT(sim, ("sim missing for CAM_RELEASE_SIMQ request")); in xpt_done_process()
5314 xpt_release_simq(sim, /*run_queue*/FALSE); in xpt_done_process()
5327 if (sim) in xpt_done_process()
5328 devq = sim->devq; in xpt_done_process()
5467 * When a SIM is created, it registers a bus with a NEWBUS device_t. This is