.. | .. |
---|
72 | 72 | /* Didn't find it. */ |
---|
73 | 73 | return (lboard_t *)NULL; |
---|
74 | 74 | } |
---|
75 | | - |
---|
76 | | -cnodeid_t get_cpu_cnode(cpuid_t cpu) |
---|
77 | | -{ |
---|
78 | | - return CPUID_TO_COMPACT_NODEID(cpu); |
---|
79 | | -} |
---|
80 | | - |
---|
81 | | -klcpu_t *nasid_slice_to_cpuinfo(nasid_t nasid, int slice) |
---|
82 | | -{ |
---|
83 | | - lboard_t *brd; |
---|
84 | | - klcpu_t *acpu; |
---|
85 | | - |
---|
86 | | - if (!(brd = find_lboard((lboard_t *)KL_CONFIG_INFO(nasid), KLTYPE_IP27))) |
---|
87 | | - return (klcpu_t *)NULL; |
---|
88 | | - |
---|
89 | | - if (!(acpu = (klcpu_t *)find_first_component(brd, KLSTRUCT_CPU))) |
---|
90 | | - return (klcpu_t *)NULL; |
---|
91 | | - |
---|
92 | | - do { |
---|
93 | | - if ((acpu->cpu_info.physid) == slice) |
---|
94 | | - return acpu; |
---|
95 | | - } while ((acpu = (klcpu_t *)find_component(brd, (klinfo_t *)acpu, |
---|
96 | | - KLSTRUCT_CPU))); |
---|
97 | | - return (klcpu_t *)NULL; |
---|
98 | | -} |
---|
99 | | - |
---|
100 | | -klcpu_t *sn_get_cpuinfo(cpuid_t cpu) |
---|
101 | | -{ |
---|
102 | | - nasid_t nasid; |
---|
103 | | - int slice; |
---|
104 | | - klcpu_t *acpu; |
---|
105 | | - gda_t *gdap = GDA; |
---|
106 | | - cnodeid_t cnode; |
---|
107 | | - |
---|
108 | | - if (!(cpu < MAXCPUS)) { |
---|
109 | | - printk("sn_get_cpuinfo: illegal cpuid 0x%lx\n", cpu); |
---|
110 | | - return NULL; |
---|
111 | | - } |
---|
112 | | - |
---|
113 | | - cnode = get_cpu_cnode(cpu); |
---|
114 | | - if (cnode == INVALID_CNODEID) |
---|
115 | | - return NULL; |
---|
116 | | - |
---|
117 | | - if ((nasid = gdap->g_nasidtable[cnode]) == INVALID_NASID) |
---|
118 | | - return NULL; |
---|
119 | | - |
---|
120 | | - for (slice = 0; slice < CPUS_PER_NODE; slice++) { |
---|
121 | | - acpu = nasid_slice_to_cpuinfo(nasid, slice); |
---|
122 | | - if (acpu && acpu->cpu_info.virtid == cpu) |
---|
123 | | - return acpu; |
---|
124 | | - } |
---|
125 | | - return NULL; |
---|
126 | | -} |
---|
127 | | - |
---|
128 | | -int get_cpu_slice(cpuid_t cpu) |
---|
129 | | -{ |
---|
130 | | - klcpu_t *acpu; |
---|
131 | | - |
---|
132 | | - if ((acpu = sn_get_cpuinfo(cpu)) == NULL) |
---|
133 | | - return -1; |
---|
134 | | - return acpu->cpu_info.physid; |
---|
135 | | -} |
---|