Lines Matching refs:pcpu
57 struct pcpu { struct
99 struct pcpu *cpu = container_of(dev, struct pcpu, dev); in show_online()
108 struct pcpu *pcpu = container_of(dev, struct pcpu, dev); in store_online() local
120 ret = xen_pcpu_down(pcpu->cpu_id); in store_online()
123 ret = xen_pcpu_up(pcpu->cpu_id); in store_online()
141 struct pcpu *pcpu) in pcpu_online_status() argument
144 !xen_pcpu_online(pcpu->flags)) { in pcpu_online_status()
146 pcpu->flags |= XEN_PCPU_FLAGS_ONLINE; in pcpu_online_status()
147 kobject_uevent(&pcpu->dev.kobj, KOBJ_ONLINE); in pcpu_online_status()
149 xen_pcpu_online(pcpu->flags)) { in pcpu_online_status()
151 pcpu->flags &= ~XEN_PCPU_FLAGS_ONLINE; in pcpu_online_status()
152 kobject_uevent(&pcpu->dev.kobj, KOBJ_OFFLINE); in pcpu_online_status()
156 static struct pcpu *get_pcpu(uint32_t cpu_id) in get_pcpu()
158 struct pcpu *pcpu; in get_pcpu() local
160 list_for_each_entry(pcpu, &xen_pcpus, list) { in get_pcpu()
161 if (pcpu->cpu_id == cpu_id) in get_pcpu()
162 return pcpu; in get_pcpu()
170 struct pcpu *pcpu = container_of(dev, struct pcpu, dev); in pcpu_release() local
172 list_del(&pcpu->list); in pcpu_release()
173 kfree(pcpu); in pcpu_release()
176 static void unregister_and_remove_pcpu(struct pcpu *pcpu) in unregister_and_remove_pcpu() argument
180 if (!pcpu) in unregister_and_remove_pcpu()
183 dev = &pcpu->dev; in unregister_and_remove_pcpu()
191 static int register_pcpu(struct pcpu *pcpu) in register_pcpu() argument
196 if (!pcpu) in register_pcpu()
199 dev = &pcpu->dev; in register_pcpu()
201 dev->id = pcpu->cpu_id; in register_pcpu()
226 static struct pcpu *create_and_register_pcpu(struct xenpf_pcpuinfo *info) in create_and_register_pcpu()
228 struct pcpu *pcpu; in create_and_register_pcpu() local
234 pcpu = kzalloc(sizeof(struct pcpu), GFP_KERNEL); in create_and_register_pcpu()
235 if (!pcpu) in create_and_register_pcpu()
238 INIT_LIST_HEAD(&pcpu->list); in create_and_register_pcpu()
239 pcpu->cpu_id = info->xen_cpuid; in create_and_register_pcpu()
240 pcpu->flags = info->flags; in create_and_register_pcpu()
243 list_add_tail(&pcpu->list, &xen_pcpus); in create_and_register_pcpu()
245 err = register_pcpu(pcpu); in create_and_register_pcpu()
251 return pcpu; in create_and_register_pcpu()
260 struct pcpu *pcpu = NULL; in sync_pcpu() local
276 pcpu = get_pcpu(cpu); in sync_pcpu()
282 unregister_and_remove_pcpu(pcpu); in sync_pcpu()
286 if (!pcpu) { in sync_pcpu()
287 pcpu = create_and_register_pcpu(info); in sync_pcpu()
288 if (IS_ERR_OR_NULL(pcpu)) in sync_pcpu()
291 pcpu_online_status(info, pcpu); in sync_pcpu()
306 struct pcpu *pcpu, *tmp; in xen_sync_pcpus() local
316 list_for_each_entry_safe(pcpu, tmp, &xen_pcpus, list) in xen_sync_pcpus()
317 unregister_and_remove_pcpu(pcpu); in xen_sync_pcpus()