• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/src/linux/linux-2.6/arch/ia64/sn/kernel/

Lines Matching refs:part

13  *	This is the part of XPC that manages the channels and
60 xpc_initialize_channels(struct xpc_partition *part, partid_t partid)
66 for (ch_number = 0; ch_number < part->nchannels; ch_number++) {
67 ch = &part->channels[ch_number];
73 ch->local_GP = &part->local_GPs[ch_number];
75 &part->local_openclose_args[ch_number];
100 xpc_setup_infrastructure(struct xpc_partition *part)
104 partid_t partid = XPC_PARTID(part);
113 memset(&part->nchannels, 0, sizeof(struct xpc_partition) -
120 part->channels = kzalloc(sizeof(struct xpc_channel) * XPC_NCHANNELS,
122 if (part->channels == NULL) {
127 part->nchannels = XPC_NCHANNELS;
132 part->local_GPs = xpc_kzalloc_cacheline_aligned(XPC_GP_SIZE,
133 GFP_KERNEL, &part->local_GPs_base);
134 if (part->local_GPs == NULL) {
135 kfree(part->channels);
136 part->channels = NULL;
142 part->remote_GPs = xpc_kzalloc_cacheline_aligned(XPC_GP_SIZE,
143 GFP_KERNEL, &part->remote_GPs_base);
144 if (part->remote_GPs == NULL) {
147 kfree(part->local_GPs_base);
148 part->local_GPs = NULL;
149 kfree(part->channels);
150 part->channels = NULL;
157 part->local_openclose_args = xpc_kzalloc_cacheline_aligned(
159 &part->local_openclose_args_base);
160 if (part->local_openclose_args == NULL) {
162 kfree(part->remote_GPs_base);
163 part->remote_GPs = NULL;
164 kfree(part->local_GPs_base);
165 part->local_GPs = NULL;
166 kfree(part->channels);
167 part->channels = NULL;
171 part->remote_openclose_args = xpc_kzalloc_cacheline_aligned(
173 &part->remote_openclose_args_base);
174 if (part->remote_openclose_args == NULL) {
176 kfree(part->local_openclose_args_base);
177 part->local_openclose_args = NULL;
178 kfree(part->remote_GPs_base);
179 part->remote_GPs = NULL;
180 kfree(part->local_GPs_base);
181 part->local_GPs = NULL;
182 kfree(part->channels);
183 part->channels = NULL;
188 xpc_initialize_channels(part, partid);
190 atomic_set(&part->nchannels_active, 0);
191 atomic_set(&part->nchannels_engaged, 0);
197 part->local_IPI_amo_va = xpc_IPI_init(partid);
199 spin_lock_init(&part->IPI_lock);
201 atomic_set(&part->channel_mgr_requests, 1);
202 init_waitqueue_head(&part->channel_mgr_wq);
204 sprintf(part->IPI_owner, "xpc%02d", partid);
206 part->IPI_owner, (void *) (u64) partid);
210 kfree(part->remote_openclose_args_base);
211 part->remote_openclose_args = NULL;
212 kfree(part->local_openclose_args_base);
213 part->local_openclose_args = NULL;
214 kfree(part->remote_GPs_base);
215 part->remote_GPs = NULL;
216 kfree(part->local_GPs_base);
217 part->local_GPs = NULL;
218 kfree(part->channels);
219 part->channels = NULL;
224 timer = &part->dropped_IPI_timer;
227 timer->data = (unsigned long) part;
235 part->setup_state = XPC_P_SETUP;
245 xpc_vars_part[partid].GPs_pa = __pa(part->local_GPs);
247 __pa(part->local_openclose_args);
248 xpc_vars_part[partid].IPI_amo_pa = __pa(part->local_IPI_amo_va);
252 xpc_vars_part[partid].nchannels = part->nchannels;
268 xpc_pull_remote_cachelines(struct xpc_partition *part, void *dst,
278 if (part->act_state == XPC_P_DEACTIVATING) {
279 return part->reason;
289 XPC_PARTID(part), bte_ret);
300 xpc_pull_remote_vars_part(struct xpc_partition *part)
307 partid_t partid = XPC_PARTID(part);
313 DBUG_ON(part->remote_vars_part_pa !=
314 L1_CACHE_ALIGN(part->remote_vars_part_pa));
317 remote_entry_pa = part->remote_vars_part_pa +
325 ret = xpc_pull_remote_cachelines(part, pulled_entry_cacheline,
367 part->remote_GPs_pa = pulled_entry->GPs_pa;
368 part->remote_openclose_args_pa =
370 part->remote_IPI_amo_va =
372 part->remote_IPI_nasid = pulled_entry->IPI_nasid;
373 part->remote_IPI_phys_cpuid = pulled_entry->IPI_phys_cpuid;
375 if (part->nchannels > pulled_entry->nchannels) {
376 part->nchannels = pulled_entry->nchannels;
396 xpc_get_IPI_flags(struct xpc_partition *part)
407 spin_lock_irqsave(&part->IPI_lock, irq_flags);
408 if ((IPI_amo = part->local_IPI_amo) != 0) {
409 part->local_IPI_amo = 0;
411 spin_unlock_irqrestore(&part->IPI_lock, irq_flags);
415 ret = xpc_pull_remote_cachelines(part,
416 part->remote_openclose_args,
417 (void *) part->remote_openclose_args_pa,
420 XPC_DEACTIVATE_PARTITION(part, ret);
423 "partition %d, ret=%d\n", XPC_PARTID(part),
432 ret = xpc_pull_remote_cachelines(part, part->remote_GPs,
433 (void *) part->remote_GPs_pa,
436 XPC_DEACTIVATE_PARTITION(part, ret);
439 "%d, ret=%d\n", XPC_PARTID(part), ret);
743 struct xpc_partition *part = &xpc_partitions[ch->partid];
764 if (part->act_state == XPC_P_DEACTIVATING) {
808 atomic_dec(&part->nchannels_active);
819 if (part->act_state != XPC_P_DEACTIVATING) {
821 spin_lock(&part->IPI_lock);
822 XPC_SET_IPI_FLAGS(part->local_IPI_amo, ch->number,
824 spin_unlock(&part->IPI_lock);
835 xpc_process_openclose_IPI(struct xpc_partition *part, int ch_number,
840 &part->remote_openclose_args[ch_number];
841 struct xpc_channel *ch = &part->channels[ch_number];
892 if ((XPC_GET_IPI_FLAGS(part->local_IPI_amo,
896 spin_lock(&part->IPI_lock);
897 XPC_SET_IPI_FLAGS(part->local_IPI_amo,
900 spin_unlock(&part->IPI_lock);
909 atomic_inc(&part->nchannels_active);
947 DBUG_ON(part->act_state != XPC_P_DEACTIVATING);
955 if ((XPC_GET_IPI_FLAGS(part->local_IPI_amo, ch_number)
959 spin_lock(&part->IPI_lock);
960 XPC_SET_IPI_FLAGS(part->local_IPI_amo,
962 spin_unlock(&part->IPI_lock);
984 if (part->act_state == XPC_P_DEACTIVATING ||
1028 atomic_inc(&part->nchannels_active);
1150 * done with the part that required the registration
1225 xpc_process_msg_IPI(struct xpc_partition *part, int ch_number)
1227 struct xpc_channel *ch = &part->channels[ch_number];
1231 ch->remote_GP = part->remote_GPs[ch_number];
1332 xpc_process_channel_activity(struct xpc_partition *part)
1341 IPI_amo = xpc_get_IPI_flags(part);
1350 for (ch_number = 0; ch_number < part->nchannels; ch_number++) {
1351 ch = &part->channels[ch_number];
1362 xpc_process_openclose_IPI(part, ch_number, IPI_flags);
1374 if (part->act_state == XPC_P_DEACTIVATING) {
1398 xpc_process_msg_IPI(part, ch_number);
1414 xpc_partition_going_down(struct xpc_partition *part, enum xpc_retval reason)
1422 XPC_PARTID(part), reason);
1424 if (!xpc_part_ref(part)) {
1432 for (ch_number = 0; ch_number < part->nchannels; ch_number++) {
1433 ch = &part->channels[ch_number];
1444 xpc_wakeup_channel_mgr(part);
1446 xpc_part_deref(part);
1455 xpc_teardown_infrastructure(struct xpc_partition *part)
1457 partid_t partid = XPC_PARTID(part);
1469 DBUG_ON(atomic_read(&part->nchannels_engaged) != 0);
1470 DBUG_ON(atomic_read(&part->nchannels_active) != 0);
1471 DBUG_ON(part->setup_state != XPC_P_SETUP);
1472 part->setup_state = XPC_P_WTEARDOWN;
1484 wait_event(part->teardown_wq, (atomic_read(&part->references) == 0));
1489 part->setup_state = XPC_P_TORNDOWN;
1492 del_timer_sync(&part->dropped_IPI_timer);
1494 kfree(part->remote_openclose_args_base);
1495 part->remote_openclose_args = NULL;
1496 kfree(part->local_openclose_args_base);
1497 part->local_openclose_args = NULL;
1498 kfree(part->remote_GPs_base);
1499 part->remote_GPs = NULL;
1500 kfree(part->local_GPs_base);
1501 part->local_GPs = NULL;
1502 kfree(part->channels);
1503 part->channels = NULL;
1504 part->local_IPI_amo_va = NULL;
1516 struct xpc_partition *part;
1523 part = &xpc_partitions[partid];
1525 if (xpc_part_ref(part)) {
1526 ch = &part->channels[ch_number];
1532 xpc_wakeup_channel_mgr(part);
1533 xpc_part_deref(part);
1575 struct xpc_partition *part;
1583 part = &xpc_partitions[partid];
1585 if (xpc_part_ref(part)) {
1586 ch = &part->channels[ch_number];
1601 xpc_part_deref(part);
1837 struct xpc_partition *part = &xpc_partitions[partid];
1843 DBUG_ON(ch_number < 0 || ch_number >= part->nchannels);
1847 if (xpc_part_ref(part)) {
1848 ret = xpc_allocate_msg(&part->channels[ch_number], flags, &msg);
1849 xpc_part_deref(part);
2028 struct xpc_partition *part = &xpc_partitions[partid];
2037 DBUG_ON(ch_number < 0 || ch_number >= part->nchannels);
2040 ret = xpc_send_msg(&part->channels[ch_number], msg, 0, NULL, NULL);
2080 struct xpc_partition *part = &xpc_partitions[partid];
2089 DBUG_ON(ch_number < 0 || ch_number >= part->nchannels);
2093 ret = xpc_send_msg(&part->channels[ch_number], msg, XPC_N_CALL,
2102 struct xpc_partition *part = &xpc_partitions[ch->partid];
2135 if ((ret = xpc_pull_remote_cachelines(part, msg, remote_msg,
2143 XPC_DEACTIVATE_PARTITION(part, ret);
2341 struct xpc_partition *part = &xpc_partitions[partid];
2348 DBUG_ON(ch_number < 0 || ch_number >= part->nchannels);
2350 ch = &part->channels[ch_number];