Lines Matching refs:pcpu
57 struct pcpu { struct
100 struct pcpu *cpu = container_of(dev, struct pcpu, dev); in online_show()
109 struct pcpu *pcpu = container_of(dev, struct pcpu, dev); in online_store() local
121 ret = xen_pcpu_down(pcpu->cpu_id); in online_store()
124 ret = xen_pcpu_up(pcpu->cpu_id); in online_store()
169 struct pcpu *pcpu) in pcpu_online_status() argument
172 !xen_pcpu_online(pcpu->flags)) { in pcpu_online_status()
174 pcpu->flags |= XEN_PCPU_FLAGS_ONLINE; in pcpu_online_status()
175 kobject_uevent(&pcpu->dev.kobj, KOBJ_ONLINE); in pcpu_online_status()
177 xen_pcpu_online(pcpu->flags)) { in pcpu_online_status()
179 pcpu->flags &= ~XEN_PCPU_FLAGS_ONLINE; in pcpu_online_status()
180 kobject_uevent(&pcpu->dev.kobj, KOBJ_OFFLINE); in pcpu_online_status()
184 static struct pcpu *get_pcpu(uint32_t cpu_id) in get_pcpu()
186 struct pcpu *pcpu; in get_pcpu() local
188 list_for_each_entry(pcpu, &xen_pcpus, list) { in get_pcpu()
189 if (pcpu->cpu_id == cpu_id) in get_pcpu()
190 return pcpu; in get_pcpu()
198 struct pcpu *pcpu = container_of(dev, struct pcpu, dev); in pcpu_release() local
200 list_del(&pcpu->list); in pcpu_release()
201 kfree(pcpu); in pcpu_release()
204 static void unregister_and_remove_pcpu(struct pcpu *pcpu) in unregister_and_remove_pcpu() argument
208 if (!pcpu) in unregister_and_remove_pcpu()
211 dev = &pcpu->dev; in unregister_and_remove_pcpu()
216 static int register_pcpu(struct pcpu *pcpu) in register_pcpu() argument
221 if (!pcpu) in register_pcpu()
224 dev = &pcpu->dev; in register_pcpu()
226 dev->id = pcpu->cpu_id; in register_pcpu()
239 static struct pcpu *create_and_register_pcpu(struct xenpf_pcpuinfo *info) in create_and_register_pcpu()
241 struct pcpu *pcpu; in create_and_register_pcpu() local
247 pcpu = kzalloc(sizeof(struct pcpu), GFP_KERNEL); in create_and_register_pcpu()
248 if (!pcpu) in create_and_register_pcpu()
251 INIT_LIST_HEAD(&pcpu->list); in create_and_register_pcpu()
252 pcpu->cpu_id = info->xen_cpuid; in create_and_register_pcpu()
253 pcpu->acpi_id = info->acpi_id; in create_and_register_pcpu()
254 pcpu->flags = info->flags; in create_and_register_pcpu()
257 list_add_tail(&pcpu->list, &xen_pcpus); in create_and_register_pcpu()
259 err = register_pcpu(pcpu); in create_and_register_pcpu()
265 return pcpu; in create_and_register_pcpu()
274 struct pcpu *pcpu = NULL; in sync_pcpu() local
290 pcpu = get_pcpu(cpu); in sync_pcpu()
296 unregister_and_remove_pcpu(pcpu); in sync_pcpu()
300 if (!pcpu) { in sync_pcpu()
301 pcpu = create_and_register_pcpu(info); in sync_pcpu()
302 if (IS_ERR_OR_NULL(pcpu)) in sync_pcpu()
305 pcpu_online_status(info, pcpu); in sync_pcpu()
320 struct pcpu *pcpu, *tmp; in xen_sync_pcpus() local
330 list_for_each_entry_safe(pcpu, tmp, &xen_pcpus, list) in xen_sync_pcpus()
331 unregister_and_remove_pcpu(pcpu); in xen_sync_pcpus()
390 const struct pcpu *pcpu; in xen_processor_present() local
394 list_for_each_entry(pcpu, &xen_pcpus, list) in xen_processor_present()
395 if (pcpu->acpi_id == acpi_id) { in xen_processor_present()
396 online = pcpu->flags & XEN_PCPU_FLAGS_ONLINE; in xen_processor_present()