anchor.diff:  (defconstant +dma-buffer-guard-size+ #x200000)
   (sys.int::defglobal *dma-buffer-virtual-address-bump*)
   
  -(defun make-dma-buffer (length &key name persistent contiguous 32-bit (cache-mode :write-back))
  +(defun make-dma-buffer (length &key name persistent contiguous 32-bit (cache-mode :write-back) (errorp t))
     "Allocate a new DMA buffer of the given length.
   NAME         - Name of the DMA buffer, for debugging.
   PERSISTENT   - If true, the memory will be saved by a snapshot, though the
  
positive.code:   (update-persistent-sg-vec virtual-address sg-vec)
    (values))
  
  (defun alloc-sg-vec (length &key contiguous 32-bit)
    (cond ((or (<= length #x1000)
               contiguous)
           ;; This sg-vec will consist of a single entry, simple.
  
negative.code:              ;; FIXME: What kind of error to signal here?
               ;; TODO: Should this call into the pager to try to convince it
               ;; to free up some memory?
               (when errorp
                 (error "Unable to allocate dma buffer of length ~D" length))
               (return-from alloc-sg-vec nil))
             (setf (svref sg-vec 0) (ash frame 12)
                   (svref sg-vec 1) length)
             sg-vec))
  