Lines Matching +full:cpu +full:- +full:read

1 /*-
2 * SPDX-License-Identifier: BSD-3-Clause
24 * 3. Neither the name of the author nor the names of any co-contributors
69 * Kernel per-CPU data state. We cache this stuff on the first
72 * XXXRW: Possibly, this (and kvmpcpu_nl) should be per-kvm_t, in case the
91 return (-1); in _kvm_pcpu_init()
93 _kvm_err(kd, kd->program, "unable to find cpuid_to_pcpu"); in _kvm_pcpu_init()
94 return (-1); in _kvm_pcpu_init()
97 _kvm_err(kd, kd->program, "unable to find mp_maxcpus"); in _kvm_pcpu_init()
98 return (-1); in _kvm_pcpu_init()
102 _kvm_err(kd, kd->program, "cannot read mp_maxcpus"); in _kvm_pcpu_init()
103 return (-1); in _kvm_pcpu_init()
106 _kvm_err(kd, kd->program, "unable to find mp_ncpus"); in _kvm_pcpu_init()
107 return (-1); in _kvm_pcpu_init()
111 _kvm_err(kd, kd->program, "cannot read mp_ncpus"); in _kvm_pcpu_init()
112 return (-1); in _kvm_pcpu_init()
116 _kvm_err(kd, kd->program, "unable to find __pcpu"); in _kvm_pcpu_init()
117 return (-1); in _kvm_pcpu_init()
121 _kvm_err(kd, kd->program, "cannot read __pcpu"); in _kvm_pcpu_init()
122 return (-1); in _kvm_pcpu_init()
128 _kvm_err(kd, kd->program, "out of memory"); in _kvm_pcpu_init()
129 return (-1); in _kvm_pcpu_init()
133 _kvm_err(kd, kd->program, "cannot read cpuid_to_pcpu array"); in _kvm_pcpu_init()
135 return (-1); in _kvm_pcpu_init()
152 kvm_getpcpu(kvm_t *kd, int cpu) in kvm_getpcpu() argument
163 return ((void *)-1); in kvm_getpcpu()
165 if (cpu >= maxcpu || pcpu_data[cpu] == NULL) in kvm_getpcpu()
170 _kvm_err(kd, kd->program, "out of memory"); in kvm_getpcpu()
171 return ((void *)-1); in kvm_getpcpu()
173 if (kvm_read(kd, (uintptr_t)pcpu_data[cpu], buf, in kvm_getpcpu()
175 _kvm_err(kd, kd->program, "unable to read per-CPU data"); in kvm_getpcpu()
177 return ((void *)-1); in kvm_getpcpu()
193 return (-1); in kvm_getmaxcpu()
203 return (-1); in kvm_getncpus()
208 _kvm_dpcpu_setcpu(kvm_t *kd, u_int cpu, int report_error) in _kvm_dpcpu_setcpu() argument
211 if (!kd->dpcpu_initialized) { in _kvm_dpcpu_setcpu()
213 _kvm_err(kd, kd->program, "%s: not initialized", in _kvm_dpcpu_setcpu()
215 return (-1); in _kvm_dpcpu_setcpu()
217 if (cpu >= kd->dpcpu_maxcpus) { in _kvm_dpcpu_setcpu()
219 _kvm_err(kd, kd->program, "%s: CPU %u too big", in _kvm_dpcpu_setcpu()
220 __func__, cpu); in _kvm_dpcpu_setcpu()
221 return (-1); in _kvm_dpcpu_setcpu()
223 if (kd->dpcpu_off[cpu] == 0) { in _kvm_dpcpu_setcpu()
225 _kvm_err(kd, kd->program, "%s: CPU %u not found", in _kvm_dpcpu_setcpu()
226 __func__, cpu); in _kvm_dpcpu_setcpu()
227 return (-1); in _kvm_dpcpu_setcpu()
229 kd->dpcpu_curcpu = cpu; in _kvm_dpcpu_setcpu()
230 kd->dpcpu_curoff = kd->dpcpu_off[cpu]; in _kvm_dpcpu_setcpu()
235 * Set up libkvm to handle dynamic per-CPU memory.
259 return (-1); in _kvm_dpcpu_init()
267 return (-1); in _kvm_dpcpu_init()
270 return (-1); in _kvm_dpcpu_init()
274 return (-1); in _kvm_dpcpu_init()
278 return (-1); in _kvm_dpcpu_init()
280 kd->dpcpu_start = nl[NLIST_START_SET_PCPU].n_value; in _kvm_dpcpu_init()
281 kd->dpcpu_stop = nl[NLIST_STOP_SET_PCPU].n_value; in _kvm_dpcpu_init()
282 kd->dpcpu_maxcpus = dpcpu_maxcpus; in _kvm_dpcpu_init()
283 kd->dpcpu_off = dpcpu_off_buf; in _kvm_dpcpu_init()
284 kd->dpcpu_initialized = 1; in _kvm_dpcpu_init()
297 if (kd->dpcpu_initialized || !intialize) in _kvm_dpcpu_initialized()
298 return (kd->dpcpu_initialized); in _kvm_dpcpu_initialized()
302 return (kd->dpcpu_initialized); in _kvm_dpcpu_initialized()
316 if (!kd->dpcpu_initialized) in _kvm_dpcpu_validaddr()
319 if (value < kd->dpcpu_start || value >= kd->dpcpu_stop) in _kvm_dpcpu_validaddr()
322 return (kd->dpcpu_curoff + value); in _kvm_dpcpu_validaddr()
326 kvm_dpcpu_setcpu(kvm_t *kd, u_int cpu) in kvm_dpcpu_setcpu() argument
330 if (!kd->dpcpu_initialized) { in kvm_dpcpu_setcpu()
333 _kvm_err(kd, kd->program, "%s: init failed", in kvm_dpcpu_setcpu()
339 return (_kvm_dpcpu_setcpu(kd, cpu, 1)); in kvm_dpcpu_setcpu()
343 * Obtain a per-CPU copy for given cpu from UMA_ZONE_PCPU allocation.
346 kvm_read_zpcpu(kvm_t *kd, u_long base, void *buf, size_t size, int cpu) in kvm_read_zpcpu() argument
350 return (-1); in kvm_read_zpcpu()
358 return (kvm_read(kd, (uintptr_t)(base + sizeof(struct pcpu) * cpu), in kvm_read_zpcpu()