Module Name:    src
Committed By:   maxv
Date:           Sat Jul 16 17:13:25 UTC 2016

Modified Files:
        src/sys/arch/x86/x86: x86_machdep.c

Log Message:
KNF, and rename.


To generate a diff of this commit:
cvs rdiff -u -r1.72 -r1.73 src/sys/arch/x86/x86/x86_machdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/x86/x86/x86_machdep.c
diff -u src/sys/arch/x86/x86/x86_machdep.c:1.72 src/sys/arch/x86/x86/x86_machdep.c:1.73
--- src/sys/arch/x86/x86/x86_machdep.c:1.72	Sat Jul 16 17:02:34 2016
+++ src/sys/arch/x86/x86/x86_machdep.c	Sat Jul 16 17:13:25 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: x86_machdep.c,v 1.72 2016/07/16 17:02:34 maxv Exp $	*/
+/*	$NetBSD: x86_machdep.c,v 1.73 2016/07/16 17:13:25 maxv Exp $	*/
 
 /*-
  * Copyright (c) 2002, 2006, 2007 YAMAMOTO Takashi,
@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: x86_machdep.c,v 1.72 2016/07/16 17:02:34 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: x86_machdep.c,v 1.73 2016/07/16 17:13:25 maxv Exp $");
 
 #include "opt_modular.h"
 #include "opt_physmem.h"
@@ -459,12 +459,51 @@ x86_cpu_idle_set(void (*func)(void), con
 #define KBTOB(x)	((size_t)(x) * 1024UL)
 #define MBTOB(x)	((size_t)(x) * 1024UL * 1024UL)
 
+static struct {
+	int freelist;
+	uint64_t limit;
+} x86_freelists[VM_NFREELIST] = {
+	{ VM_FREELIST_DEFAULT, 0 },
+#ifdef VM_FREELIST_FIRST1T
+	/* 40-bit addresses needed for modern graphics. */
+	{ VM_FREELIST_FIRST1T,	1ULL * 1024 * 1024 * 1024 * 1024 },
+#endif
+#ifdef VM_FREELIST_FIRST64G
+	/* 36-bit addresses needed for oldish graphics. */
+	{ VM_FREELIST_FIRST64G, 64ULL * 1024 * 1024 * 1024 },
+#endif
+#ifdef VM_FREELIST_FIRST4G
+	/* 32-bit addresses needed for PCI 32-bit DMA and old graphics. */
+	{ VM_FREELIST_FIRST4G,  4ULL * 1024 * 1024 * 1024 },
+#endif
+	/* 30-bit addresses needed for ancient graphics. */
+	{ VM_FREELIST_FIRST1G,	1ULL * 1024 * 1024 * 1024 },
+	/* 24-bit addresses needed for ISA DMA. */
+	{ VM_FREELIST_FIRST16,	16 * 1024 * 1024 },
+};
+
 extern paddr_t avail_start, avail_end;
 
+int
+x86_select_freelist(uint64_t maxaddr)
+{
+	unsigned int i;
+
+	if (avail_end <= maxaddr)
+		return VM_NFREELIST;
+
+	for (i = 0; i < __arraycount(x86_freelists); i++) {
+		if ((x86_freelists[i].limit - 1) <= maxaddr)
+			return x86_freelists[i].freelist;
+	}
+
+	panic("no freelist for maximum address %"PRIx64, maxaddr);
+}
+
 static int
-add_mem_cluster(phys_ram_seg_t *seg_clusters, int seg_cluster_cnt,
-	struct extent *iomem_ex,
-	uint64_t seg_start, uint64_t seg_end, uint32_t type)
+x86_add_cluster(phys_ram_seg_t *seg_clusters, int seg_cluster_cnt,
+    struct extent *iomem_ex, uint64_t seg_start, uint64_t seg_end,
+    uint32_t type)
 {
 	uint64_t new_physmem = 0;
 	phys_ram_seg_t *cluster;
@@ -483,15 +522,12 @@ add_mem_cluster(phys_ram_seg_t *seg_clus
 	if (seg_end > TOPLIMIT) {
 		aprint_verbose("WARNING: skipping large memory map entry: "
 		    "0x%"PRIx64"/0x%"PRIx64"/0x%x\n",
-		    seg_start,
-		    (seg_end - seg_start),
-		    type);
+		    seg_start, (seg_end - seg_start), type);
 		return seg_cluster_cnt;
 	}
 
 	/*
-	 * XXX Chop the last page off the size so that
-	 * XXX it can fit in avail_end.
+	 * XXX: Chop the last page off the size so that it can fit in avail_end.
 	 */
 	if (seg_end == TOPLIMIT)
 		seg_end -= PAGE_SIZE;
@@ -501,9 +537,8 @@ add_mem_cluster(phys_ram_seg_t *seg_clus
 
 	for (i = 0; i < seg_cluster_cnt; i++) {
 		cluster = &seg_clusters[i];
-		if ((cluster->start == round_page(seg_start))
-		    && (cluster->size == trunc_page(seg_end) - cluster->start))
-		{
+		if ((cluster->start == round_page(seg_start)) &&
+		    (cluster->size == trunc_page(seg_end) - cluster->start)) {
 #ifdef DEBUG_MEMLOAD
 			printf("WARNING: skipping duplicate segment entry\n");
 #endif
@@ -512,9 +547,8 @@ add_mem_cluster(phys_ram_seg_t *seg_clus
 	}
 
 	/*
-	 * Allocate the physical addresses used by RAM
-	 * from the iomem extent map.  This is done before
-	 * the addresses are page rounded just to make
+	 * Allocate the physical addresses used by RAM from the iomem extent
+	 * map. This is done before the addresses are page rounded just to make
 	 * sure we get them all.
 	 */
 	if (seg_start < 0x100000000ULL) {
@@ -589,7 +623,7 @@ add_mem_cluster(phys_ram_seg_t *seg_clus
 }
 
 static int
-initx86_parse_memmap(struct btinfo_memmap *bim, struct extent *iomem_ex)
+x86_parse_clusters(struct btinfo_memmap *bim, struct extent *iomem_ex)
 {
 	uint64_t seg_start, seg_end;
 	uint64_t addr, size;
@@ -602,6 +636,7 @@ initx86_parse_memmap(struct btinfo_memma
 #ifdef DEBUG_MEMLOAD
 	printf("BIOS MEMORY MAP (%d ENTRIES):\n", bim->num);
 #endif
+
 	for (x = 0; x < bim->num; x++) {
 		addr = bim->entry[x].addr;
 		size = bim->entry[x].size;
@@ -611,9 +646,7 @@ initx86_parse_memmap(struct btinfo_memma
 			addr, size, type);
 #endif
 
-		/*
-		 * If the segment is not memory, skip it.
-		 */
+		/* If the segment is not memory, skip it. */
 		switch (type) {
 		case BIM_Memory:
 		case BIM_ACPI:
@@ -623,60 +656,58 @@ initx86_parse_memmap(struct btinfo_memma
 			continue;
 		}
 
-		/*
-		 * If the segment is smaller than a page, skip it.
-		 */
-		if (size < NBPG)
+		/* If the segment is smaller than a page, skip it. */
+		if (size < PAGE_SIZE)
 			continue;
 
 		seg_start = addr;
 		seg_end = addr + size;
 
 		/*
-		 *   Avoid Compatibility Holes.
-		 * XXX Holes within memory space that allow access
-		 * XXX to be directed to the PC-compatible frame buffer
-		 * XXX (0xa0000-0xbffff), to adapter ROM space
-		 * XXX (0xc0000-0xdffff), and to system BIOS space
-		 * XXX (0xe0000-0xfffff).
-		 * XXX Some laptop(for example,Toshiba Satellite2550X)
-		 * XXX report this area and occurred problems,
-		 * XXX so we avoid this area.
+		 * XXX XXX: Avoid compatibility holes.
+		 *
+		 * Holes within memory space that allow access to be directed
+		 * to the PC-compatible frame buffer (0xa0000-0xbffff), to
+		 * adapter ROM space (0xc0000-0xdffff), and to system BIOS
+		 * space (0xe0000-0xfffff).
+		 * 
+		 * Some laptop (for example, Toshiba Satellite2550X) report
+		 * this area and occurred problems, so we avoid this area.
 		 */
 		if (seg_start < 0x100000 && seg_end > 0xa0000) {
 			printf("WARNING: memory map entry overlaps "
 			    "with ``Compatibility Holes'': "
 			    "0x%"PRIx64"/0x%"PRIx64"/0x%x\n", seg_start,
 			    seg_end - seg_start, type);
-			mem_cluster_cnt = add_mem_cluster(
-				mem_clusters, mem_cluster_cnt, iomem_ex,
-				seg_start, 0xa0000, type);
-			mem_cluster_cnt = add_mem_cluster(
-				mem_clusters, mem_cluster_cnt, iomem_ex,
-				0x100000, seg_end, type);
-		} else
-			mem_cluster_cnt = add_mem_cluster(
-				mem_clusters, mem_cluster_cnt, iomem_ex,
-				seg_start, seg_end, type);
+
+			mem_cluster_cnt = x86_add_cluster(mem_clusters,
+			    mem_cluster_cnt, iomem_ex, seg_start, 0xa0000,
+			    type);
+			mem_cluster_cnt = x86_add_cluster(mem_clusters,
+			    mem_cluster_cnt, iomem_ex, 0x100000, seg_end,
+			    type);
+		} else {
+			mem_cluster_cnt = x86_add_cluster(mem_clusters,
+			    mem_cluster_cnt, iomem_ex, seg_start, seg_end,
+			    type);
+		}
 	}
 
 	return 0;
 }
 
 static int
-initx86_fake_memmap(struct extent *iomem_ex)
+x86_fake_clusters(struct extent *iomem_ex)
 {
 	phys_ram_seg_t *cluster;
 	KASSERT(mem_cluster_cnt == 0);
 
 	/*
-	 * Allocate the physical addresses used by RAM from the iomem
-	 * extent map. This is done before the addresses are
-	 * page rounded just to make sure we get them all.
+	 * Allocate the physical addresses used by RAM from the iomem extent
+	 * map. This is done before the addresses are page rounded just to make
+	 * sure we get them all.
 	 */
-	if (extent_alloc_region(iomem_ex, 0, KBTOB(biosbasemem),
-	    EX_NOWAIT))
-	{
+	if (extent_alloc_region(iomem_ex, 0, KBTOB(biosbasemem), EX_NOWAIT)) {
 		/* XXX What should we do? */
 		printf("WARNING: CAN'T ALLOCATE BASE MEMORY FROM "
 		    "IOMEM EXTENT MAP!\n");
@@ -688,8 +719,7 @@ initx86_fake_memmap(struct extent *iomem
 	physmem += atop(cluster->size);
 
 	if (extent_alloc_region(iomem_ex, IOM_END, KBTOB(biosextmem),
-	    EX_NOWAIT))
-	{
+	    EX_NOWAIT)) {
 		/* XXX What should we do? */
 		printf("WARNING: CAN'T ALLOCATE EXTENDED MEMORY FROM "
 		    "IOMEM EXTENT MAP!\n");
@@ -710,13 +740,12 @@ initx86_fake_memmap(struct extent *iomem
 	if (biosextmem > (15*1024) && biosextmem < (16*1024)) {
 		char pbuf[9];
 
-		format_bytes(pbuf, sizeof(pbuf),
-		    biosextmem - (15*1024));
-		printf("Warning: ignoring %s of remapped memory\n",
-		    pbuf);
+		format_bytes(pbuf, sizeof(pbuf), biosextmem - (15*1024));
+		printf("Warning: ignoring %s of remapped memory\n", pbuf);
 		biosextmem = (15*1024);
 	}
 #endif
+
 	cluster = &mem_clusters[1];
 	cluster->start = IOM_END;
 	cluster->size = trunc_page(KBTOB(biosextmem));
@@ -729,53 +758,9 @@ initx86_fake_memmap(struct extent *iomem
 	return 0;
 }
 
-#ifdef amd64
-extern vaddr_t kern_end;
-extern vaddr_t module_start, module_end;
-#endif
-
-static struct {
-	int freelist;
-	uint64_t limit;
-} x86_freelists[VM_NFREELIST] = {
-	{ VM_FREELIST_DEFAULT, 0 },
-#ifdef VM_FREELIST_FIRST1T
-	/* 40-bit addresses needed for modern graphics. */
-	{ VM_FREELIST_FIRST1T,	1ULL * 1024 * 1024 * 1024 * 1024 },
-#endif
-#ifdef VM_FREELIST_FIRST64G
-	/* 36-bit addresses needed for oldish graphics. */
-	{ VM_FREELIST_FIRST64G, 64ULL * 1024 * 1024 * 1024 },
-#endif
-#ifdef VM_FREELIST_FIRST4G
-	/* 32-bit addresses needed for PCI 32-bit DMA and old graphics. */
-	{ VM_FREELIST_FIRST4G,  4ULL * 1024 * 1024 * 1024 },
-#endif
-	/* 30-bit addresses needed for ancient graphics. */
-	{ VM_FREELIST_FIRST1G,	1ULL * 1024 * 1024 * 1024 },
-	/* 24-bit addresses needed for ISA DMA. */
-	{ VM_FREELIST_FIRST16,	16 * 1024 * 1024 },
-};
-
-int
-x86_select_freelist(uint64_t maxaddr)
-{
-	unsigned int i;
-
-	if (avail_end <= maxaddr)
-		return VM_NFREELIST;
-
-	for (i = 0; i < __arraycount(x86_freelists); i++) {
-		if ((x86_freelists[i].limit - 1) <= maxaddr)
-			return x86_freelists[i].freelist;
-	}
-
-	panic("no freelist for maximum address %"PRIx64, maxaddr);
-}
-
 /*
- * Load the physical memory region from seg_start to seg_end into the VM
- * system.
+ * x86_load_region: load the physical memory region from seg_start to seg_end
+ * into the VM system.
  */
 static void
 x86_load_region(uint64_t seg_start, uint64_t seg_end)
@@ -831,15 +816,16 @@ init_x86_clusters(void)
 	 * the boot program).
 	 */
 #ifdef i386
+	extern int biosmem_implicit;
 	bim = lookup_bootinfo(BTINFO_MEMMAP);
 	if ((biosmem_implicit || (biosbasemem == 0 && biosextmem == 0)) &&
 	    bim != NULL && bim->num > 0)
-		initx86_parse_memmap(bim, iomem_ex);
+		x86_parse_clusters(bim, iomem_ex);
 #else
 #if !defined(REALBASEMEM) && !defined(REALEXTMEM)
 	bim = lookup_bootinfo(BTINFO_MEMMAP);
 	if (bim != NULL && bim->num > 0)
-		initx86_parse_memmap(bim, iomem_ex);
+		x86_parse_clusters(bim, iomem_ex);
 #else
 	(void)bim, (void)iomem_ex;
 #endif
@@ -847,20 +833,20 @@ init_x86_clusters(void)
 
 	if (mem_cluster_cnt == 0) {
 		/*
-		 * If initx86_parse_memmap didn't find any valid segment, create
+		 * If x86_parse_clusters didn't find any valid segment, create
 		 * fake clusters.
 		 */
-		initx86_fake_memmap(iomem_ex);
+		x86_fake_clusters(iomem_ex);
 	}
 }
 
 /*
  * init_x86_vm: initialize the VM system on x86. We basically internalize as
  * many physical pages as we can, starting at avail_start, but we don't
- * internalize the kernel physical pages (from IOM_END to first_avail).
+ * internalize the kernel physical pages (from IOM_END to pa_kend).
  */
 int
-init_x86_vm(paddr_t first_avail)
+init_x86_vm(paddr_t pa_kend)
 {
 	uint64_t seg_start, seg_end;
 	uint64_t seg_start1, seg_end1;
@@ -873,10 +859,13 @@ init_x86_vm(paddr_t first_avail)
 	}
 
 	/* Make sure the end of the space used by the kernel is rounded. */
-	first_avail = round_page(first_avail);
+	pa_kend = round_page(pa_kend);
 
 #ifdef amd64
-	kern_end = KERNBASE + first_avail;
+	extern vaddr_t kern_end;
+	extern vaddr_t module_start, module_end;
+
+	kern_end = KERNBASE + pa_kend;
 	module_start = kern_end;
 	module_end = KERNBASE + NKL2_KIMG_ENTRIES * NBPD_L2;
 #endif
@@ -912,8 +901,8 @@ init_x86_vm(paddr_t first_avail)
 		 * If this segment contains the kernel, split it in two, around
 		 * the kernel.
 		 */
-		if (seg_start <= IOM_END && first_avail <= seg_end) {
-			seg_start1 = first_avail;
+		if (seg_start <= IOM_END && pa_kend <= seg_end) {
+			seg_start1 = pa_kend;
 			seg_end1 = seg_end;
 			seg_end = IOM_END;
 			KASSERT(seg_end < seg_end1);

Reply via email to