Author: kp
Date: Tue Oct 15 23:21:52 2019
New Revision: 353600
URL: https://svnweb.freebsd.org/changeset/base/353600

Log:
  Generalize ARM specific comments in devmap
  
  The comments in devmap are very ARM specific, this generalizes them for other
  architectures.
  
  Submitted by: Nicholas O'Brien <nickisobrien_gmail.com>
  Reviewed by:  manu, philip
  Sponsored by: Axiado
  Differential Revision:        https://reviews.freebsd.org/D22035

Modified:
  head/sys/kern/subr_devmap.c
  head/sys/sys/devmap.h

Modified: head/sys/kern/subr_devmap.c
==============================================================================
--- head/sys/kern/subr_devmap.c Tue Oct 15 21:56:19 2019        (r353599)
+++ head/sys/kern/subr_devmap.c Tue Oct 15 23:21:52 2019        (r353600)
@@ -46,7 +46,7 @@ static boolean_t devmap_bootstrap_done = false;
  * The allocated-kva (akva) devmap table and metadata.  Platforms can call
  * devmap_add_entry() to add static device mappings to this table using
  * automatically allocated virtual addresses carved out of the top of kva 
space.
- * Allocation begins immediately below the ARM_VECTORS_HIGH address.
+ * Allocation begins immediately below the max kernel virtual address.
  */
 #define        AKVA_DEVMAP_MAX_ENTRIES 32
 static struct devmap_entry     akva_devmap_entries[AKVA_DEVMAP_MAX_ENTRIES];
@@ -115,8 +115,8 @@ devmap_lastaddr()
  * physical address and size and a virtual address allocated from the top of
  * kva.  This automatically registers the akva table on the first call, so all 
a
  * platform has to do is call this routine to install as many mappings as it
- * needs and when initarm() calls devmap_bootstrap() it will pick up all the
- * entries in the akva table automatically.
+ * needs and when the platform-specific init function calls devmap_bootstrap()
+ * it will pick up all the entries in the akva table automatically.
  */
 void
 devmap_add_entry(vm_paddr_t pa, vm_size_t sz)
@@ -132,13 +132,13 @@ devmap_add_entry(vm_paddr_t pa, vm_size_t sz)
        if (akva_devmap_idx == 0)
                devmap_register_table(akva_devmap_entries);
 
+        /* Allocate virtual address space from the top of kva downwards. */
+#ifdef __arm__
        /*
-        * Allocate virtual address space from the top of kva downwards.  If the
-        * range being mapped is aligned and sized to 1MB boundaries then also
-        * align the virtual address to the next-lower 1MB boundary so that we
-        * end up with a nice efficient section mapping.
+        * If the range being mapped is aligned and sized to 1MB boundaries then
+        * also align the virtual address to the next-lower 1MB boundary so that
+        * we end with a nice efficient section mapping.
         */
-#ifdef __arm__
        if ((pa & 0x000fffff) == 0 && (sz & 0x000fffff) == 0) {
                akva_devmap_vaddr = trunc_1mpage(akva_devmap_vaddr - sz);
        } else
@@ -170,7 +170,8 @@ devmap_register_table(const struct devmap_entry *table
  * the previously-registered table is used.  This smooths transition from 
legacy
  * code that fills in a local table then calls this function passing that 
table,
  * and newer code that uses devmap_register_table() in platform-specific
- * code, then lets the common initarm() call this function with a NULL pointer.
+ * code, then lets the common platform-specific init function call this 
function
+ * with a NULL pointer.
  */
 void
 devmap_bootstrap(vm_offset_t l1pt, const struct devmap_entry *table)

Modified: head/sys/sys/devmap.h
==============================================================================
--- head/sys/sys/devmap.h       Tue Oct 15 21:56:19 2019        (r353599)
+++ head/sys/sys/devmap.h       Tue Oct 15 23:21:52 2019        (r353600)
@@ -63,16 +63,18 @@ void devmap_add_entry(vm_paddr_t pa, vm_size_t sz);
 
 /*
  * Register a platform-local table to be bootstrapped by the generic
- * initarm() in arm/machdep.c.  This is used by newer code that allocates and
- * fills in its own local table but does not have its own initarm() routine.
+ * platform-specific init function in <ARCH>/machdep.c.  This is used by newer
+ * code that allocates and fills in its own local table but does not have its
+ * own platform-specific init routine.
  */
 void devmap_register_table(const struct devmap_entry * _table);
 
 /*
  * Establish mappings for all the entries in the table.  This is called
- * automatically from the common initarm() in arm/machdep.c, and also from the
- * custom initarm() routines in older code.  If the table pointer is NULL, this
- * will use the table installed previously by devmap_register_table().
+ * automatically from the common platform-specific init function in
+ * <ARCH>/machdep.c, and also from the custom platform-specific init routines
+ * in older code.  If the table pointer is NULL, this will use the table
+ * installed previously by devmap_register_table().
  */
 void devmap_bootstrap(vm_offset_t _l1pt,
     const struct devmap_entry *_table);
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to