Continuing to convert uvm_km_valloc() calls to km_alloc(), sparc64's
struct cpu_info wants to be allocated on an 8 page boundary, so it needs
a custom kmem_va_mode. My T5120 didn't blow up with this, so I think it
works.
ok?
Index: arch/sparc64/sparc64/cpu.c
===================================================================
RCS file: /cvs/src/sys/arch/sparc64/sparc64/cpu.c,v
retrieving revision 1.71
diff -u -p -u -p -r1.71 cpu.c
--- arch/sparc64/sparc64/cpu.c 31 Jul 2020 11:19:12 -0000 1.71
+++ arch/sparc64/sparc64/cpu.c 21 Dec 2020 05:12:32 -0000
@@ -113,6 +113,12 @@ void hummingbird_init(struct cpu_info *c
#define IU_IMPL(v) ((((u_int64_t)(v))&VER_IMPL) >> VER_IMPL_SHIFT)
#define IU_VERS(v) ((((u_int64_t)(v))&VER_MASK) >> VER_MASK_SHIFT)
+/* virtual address allocation mode for struct cpu_info */
+struct kmem_va_mode kv_cpu_info = {
+ .kv_map = &kernel_map,
+ .kv_align = 8 * PAGE_SIZE
+};
+
struct cpu_info *
alloc_cpuinfo(struct mainbus_attach_args *ma)
{
@@ -137,7 +143,7 @@ alloc_cpuinfo(struct mainbus_attach_args
if (cpi->ci_upaid == portid)
return cpi;
- va = uvm_km_valloc_align(kernel_map, sz, 8 * PAGE_SIZE, 0);
+ va = (vaddr_t)km_alloc(sz, &kv_cpu_info, &kp_none, &kd_nowait);
if (va == 0)
panic("alloc_cpuinfo: no virtual space");
va0 = va;