Annotation of wikisrc/features/uvm_hotplug.mdwn, revision 1.1

1.1     ! cherry      1: # [[!template id=man name=uvm_hotplug section=9]] port-masters' FAQ.
        !             2: 
        !             3: 1. Why does it matter?
        !             4: 
        !             5: As a port maintainer any architecture that needs to use the virtual memory
        !             6: sub-system of NetBSD aka uvm is affected by the
        !             7: [[!template id=man name=uvm_hotplug section=9]] change.
        !             8: 
        !             9: Early boot code of every port is affected. Global variables:
        !            10: struct vm_physseg vm_physmem;
        !            11: int vm_nphysmem;
        !            12: are no longer visible. They need to be replaced by appropriate
        !            13: accessor calls in [[!template id=man name=uvm_hotplug section=9]]
        !            14: 
        !            15: These calls are documented as "Utility Functions" in the
        !            16: [[!template id=man name=uvm_hotplug section=9]] manual.
        !            17: 
        !            18: 
        !            19: The "switchover" CVS commit log is here:
        !            20: [http://mail-index.netbsd.org/source-changes/2016/12/23/msg080110.html](http://mail-index.netbsd.org/source-changes/2016/12/23/msg080110.html)
        !            21: 
        !            22: 
        !            23: 2. What files may be affected?
        !            24: 
        !            25: In most of the architectures the "sys/arch/<arch_name>/<arch_name>/machdep.c"
        !            26: and "sys/arch/<arch_name>/<arch_name>/pmap.c" if they exist are usually
        !            27: affected.
        !            28: 
        !            29: But this may not be a exhaustive list. Any other files that deals with pmap and
        !            30: stealing pages might also be affected.
        !            31: 
        !            32: 3. What does it do ?
        !            33: 
        !            34: [[!template id=man name=uvm_hotplug section=9]] manages the previously exposed "vm_physmem" static array which
        !            35: used to keep track of the memory segments.
        !            36: 
        !            37: In the current implementation, the array has been replaced with a
        !            38: [[!template id=man name=rbtree section=3]] backing which makes the
        !            39: data structure dynamic.
        !            40: 
        !            41: An array based implementation is also provided, for backwards
        !            42: compatibility. This is the default implementation and does not provide
        !            43: hot pluggability. It is also used without 'options UVM_HOTPLUG'
        !            44: However the API itself is implementation agnostic.
        !            45: 
        !            46: 4. Why is it needed?
        !            47: 
        !            48: With the [[!template id=man name=rbtree section=3]] backing
        !            49: implementation, the list of physical pages 
        !            50: in the system is no longer in a static array and can dynamically
        !            51: expand or collapse, hence adding new pages to the freelist from newly
        !            52: available RAM / physical memory (plug) or removing retired pages
        !            53: (unplug) via taking them off the freelist and the old vm_physmem.
        !            54: 
        !            55: 5. What should I do?
        !            56: 
        !            57: Review the changes to your port due to this new feature. The changes
        !            58: may have been made without direct knowledge of your port architecture.
        !            59: 
        !            60: See if your port has hotpluggable hardware. If it does, write a driver
        !            61: to use the [[!template id=man name=uvm_hotplug section=9]] api.
        !            62: 
        !            63: An example of [[!template id=man name=uvm_hotplug section=9]] api's
        !            64: application can be found in
        !            65: [[!template id=man name=balloon section=4]].

CVSweb for NetBSD wikisrc <wikimaster@NetBSD.org> software: FreeBSD-CVSweb