summaryrefslogtreecommitdiffstats
path: root/sys/sun4v
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2010-07-27 20:33:50 +0000
committerjhb <jhb@FreeBSD.org>2010-07-27 20:33:50 +0000
commitf27c8b35e2b318d78a7d1b1a5da79b6443afc069 (patch)
tree7e82572d7902fd76fd7aca9ed824e46e66521ec3 /sys/sun4v
parentc5f2739ce161682d9aa352169fde83a2aa2073ae (diff)
downloadFreeBSD-src-f27c8b35e2b318d78a7d1b1a5da79b6443afc069.zip
FreeBSD-src-f27c8b35e2b318d78a7d1b1a5da79b6443afc069.tar.gz
Very rough first cut at NUMA support for the physical page allocator. For
now it uses a very dumb first-touch allocation policy. This will change in the future. - Each architecture indicates the maximum number of supported memory domains via a new VM_NDOMAIN parameter in <machine/vmparam.h>. - Each cpu now has a PCPU_GET(domain) member to indicate the memory domain a CPU belongs to. Domain values are dense and numbered from 0. - When a platform supports multiple domains, the default freelist (VM_FREELIST_DEFAULT) is split up into N freelists, one for each domain. The MD code is required to populate an array of mem_affinity structures. Each entry in the array defines a range of memory (start and end) and a domain for the range. Multiple entries may be present for a single domain. The list is terminated by an entry where all fields are zero. This array of structures is used to split up phys_avail[] regions that fall in VM_FREELIST_DEFAULT into per-domain freelists. - Each memory domain has a separate lookup-array of freelists that is used when fulfulling a physical memory allocation. Right now the per-domain freelists are listed in a round-robin order for each domain. In the future a table such as the ACPI SLIT table may be used to order the per-domain lookup lists based on the penalty for each memory domain relative to a specific domain. The lookup lists may be examined via a new vm.phys.lookup_lists sysctl. - The first-touch policy is implemented by using PCPU_GET(domain) to pick a lookup list when allocating memory. Reviewed by: alc
Diffstat (limited to 'sys/sun4v')
-rw-r--r--sys/sun4v/include/vmparam.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/sys/sun4v/include/vmparam.h b/sys/sun4v/include/vmparam.h
index bd133e8..f4b24b5 100644
--- a/sys/sun4v/include/vmparam.h
+++ b/sys/sun4v/include/vmparam.h
@@ -121,6 +121,13 @@
#define VM_NFREEORDER 12
/*
+ * Only one memory domain.
+ */
+#ifndef VM_NDOMAIN
+#define VM_NDOMAIN 1
+#endif
+
+/*
* Disable superpage reservations.
*/
#ifndef VM_NRESERVLEVEL
OpenPOWER on IntegriCloud