| 414 | } |
| 415 | |
| 416 | static void |
| 417 | vm_phys_create_seg(vm_paddr_t start, vm_paddr_t end) |
| 418 | { |
| 419 | #ifdef NUMA |
| 420 | int i; |
| 421 | |
| 422 | if (mem_affinity == NULL) { |
| 423 | _vm_phys_create_seg(start, end, 0); |
| 424 | return; |
| 425 | } |
| 426 | |
| 427 | for (i = 0;; i++) { |
| 428 | if (mem_affinity[i].end == 0) |
| 429 | panic("Reached end of affinity info"); |
| 430 | if (mem_affinity[i].end <= start) |
| 431 | continue; |
| 432 | if (mem_affinity[i].start > start) |
| 433 | panic("No affinity info for start %jx", |
| 434 | (uintmax_t)start); |
| 435 | if (mem_affinity[i].end >= end) { |
| 436 | _vm_phys_create_seg(start, end, |
| 437 | mem_affinity[i].domain); |
| 438 | break; |
| 439 | } |
| 440 | _vm_phys_create_seg(start, mem_affinity[i].end, |
| 441 | mem_affinity[i].domain); |
| 442 | start = mem_affinity[i].end; |
| 443 | } |
| 444 | #else |
| 445 | _vm_phys_create_seg(start, end, 0); |
| 446 | #endif |
| 447 | } |
| 448 | |
| 449 | /* |
| 450 | * Add a physical memory segment. |
no test coverage detected