Lines Matching refs:ci
103 struct cpu_info *ci;
111 ci = curcpu();
112 cpu_topology_fake1(ci);
173 cpu_topology_set(struct cpu_info *ci, u_int package_id, u_int core_id,
179 ci->ci_package_id = package_id;
180 ci->ci_core_id = core_id;
181 ci->ci_smt_id = smt_id;
182 ci->ci_numa_id = numa_id;
183 for (rel = 0; rel < __arraycount(ci->ci_sibling); rel++) {
184 ci->ci_sibling[rel] = ci;
185 ci->ci_nsibling[rel] = 1;
193 cpu_topology_setspeed(struct cpu_info *ci, bool slow)
197 ci->ci_is_slow = slow;
204 cpu_topology_link(struct cpu_info *ci, struct cpu_info *ci2, enum cpu_rel rel)
215 ci->ci_sibling[rel] = ci2;
216 ci3->ci_sibling[rel] = ci;
217 ci->ci_nsibling[rel] = ci3->ci_nsibling[rel];
227 struct cpu_info *ci, *ci2;
232 CTASSERT(__arraycount(names) >= __arraycount(ci->ci_sibling));
237 for (CPU_INFO_FOREACH(cii, ci)) {
239 aprint_debug("%s ", ci->ci_is_slow ? "slow" : "fast");
240 for (rel = 0; rel < __arraycount(ci->ci_sibling); rel++) {
241 aprint_debug("%s has %d %s siblings:", cpu_name(ci),
242 ci->ci_nsibling[rel], names[rel]);
243 ci2 = ci->ci_sibling[rel];
248 } while (++i < 64 && ci2 != ci->ci_sibling[rel]);
254 aprint_debug("%s first in package: %s\n", cpu_name(ci),
255 cpu_name(ci->ci_package1st));
264 cpu_topology_fake1(struct cpu_info *ci)
268 for (rel = 0; rel < __arraycount(ci->ci_sibling); rel++) {
269 ci->ci_sibling[rel] = ci;
270 ci->ci_nsibling[rel] = 1;
273 ci->ci_package_id = cpu_index(ci);
275 ci->ci_schedstate.spc_flags |=
277 ci->ci_package1st = ci;
279 ci->ci_is_slow = false;
292 struct cpu_info *ci;
294 for (CPU_INFO_FOREACH(cii, ci)) {
295 cpu_topology_fake1(ci);
297 ci->ci_schedstate.spc_flags &=
310 struct cpu_info *ci, *ci2, *ci3;
319 for (CPU_INFO_FOREACH(cii, ci)) {
320 ci->ci_schedstate.spc_flags &=
324 if (ci2->ci_package_id == ci->ci_package_id &&
325 ci2->ci_core_id == ci->ci_core_id &&
326 ci2->ci_smt_id == ci->ci_smt_id &&
327 ci2 != ci) {
331 cpu_index(ci), ci, ci->ci_package_id,
332 ci->ci_core_id, ci->ci_smt_id,
341 if (ci2 == ci ||
342 ci2->ci_package_id != ci->ci_package_id) {
346 if (ci->ci_nsibling[CPUREL_CORE] == 1 &&
347 ci->ci_core_id == ci2->ci_core_id) {
348 cpu_topology_link(ci, ci2, CPUREL_CORE);
351 if (ci->ci_nsibling[CPUREL_PACKAGE] == 1) {
352 cpu_topology_link(ci, ci2, CPUREL_PACKAGE);
354 if (ci->ci_nsibling[CPUREL_CORE] > 1 &&
355 ci->ci_nsibling[CPUREL_PACKAGE] > 1) {
363 for (CPU_INFO_FOREACH(cii, ci)) {
364 ci2 = ci3 = ci;
365 minsmt = ci->ci_smt_id;
372 } while (ci2 != ci);
378 for (CPU_INFO_FOREACH(cii, ci)) {
379 if ((ci->ci_schedstate.spc_flags & SPCF_CORE1ST) == 0) {
382 ci2 = ci3 = ci;
383 mincore = ci->ci_core_id;
392 } while (ci2 != ci);
420 ci = ci3;
423 ci2 = ci;
426 ci->ci_sibling[CPUREL_PACKAGE1ST];
428 ci->ci_nsibling[CPUREL_PACKAGE1ST];
430 } while (ci2 != ci);
431 ci = ci->ci_sibling[CPUREL_PACKAGE1ST];
432 } while (ci != ci3);
443 for (CPU_INFO_FOREACH(cii, ci)) {
444 if (!ci->ci_is_slow) {
445 ci->ci_schedstate.spc_flags |= SPCF_1STCLASS;
453 for (CPU_INFO_FOREACH(cii, ci)) {
454 if ((ci->ci_schedstate.spc_flags & SPCF_CORE1ST) != 0) {
455 ci->ci_schedstate.spc_flags |= SPCF_1STCLASS;
492 struct cpu_info *ci;
498 KASSERT(sizeof(ci->ci_counts) == sizeof(cpu_counts));
513 for (CPU_INFO_FOREACH(cii, ci)) {
514 ptr = ci->ci_counts;