Technical data

Device Support on OpenVMS Systems
7.11 Memory Holes on AlphaServer 4100 Systems
Figure 7–1 Example Memory Diagram
1fff.ffff
512 MB memory daughter card pa
ir
ZK−8860A−G
E
2000.0000
2fff.ffff
3fff.ffff
3000.0000
1GB=4000.0000
47ff.ffff
4800.0000
256 MB memory daughter card pa
ir
256 MB hole
128 MB memory daughter card pa
ir
384 MB hole
0
mmg$gl_memsize = 1C000
mmg$gl_maxpfn (regardless of setting of SET MEM)
(regardless of setting of SET MEM)
= 23fff
Note that this configuration impacts the algorithm used to determine whether a
driver needs to use map registers. In releases prior to OpenVMS Alpha Version
7.1, device drivers do the following:
1. Call IOC$NODE_DATA with key IOC$K_DIRECT_DMA_SIZE to obtain the
size of the direct DMA window (in megabytes). This is usually 1 GB.
2. Convert the size returned from IOC$NODE_DATA to pages and compare the
size with mmg$gl_memsize, which contains the number of pages in physical
memory.
3. If mmg$gl_memsize is greater than the size returned from IOC$NODE_
DATA, use map registers; otherwise, use the direct DMA window.
The mmg$gl_memsize global cell does not contain the memory hole. As a result,
the system has only 7/8 GB of memory, but according to the algorithm in releases
prior to OpenVMS Alpha Version 7.1, it appears that the device can use the
direct DMA window. Yet there is 128 MB of memory beyond the 1 GB border,
which requires that the drivers use map registers. To eliminate this problem,
drivers using the algorithm in releases prior to OpenVMS Alpha Version 7.1 must
substitute it with the following algorithm:
1. Call IOC$NODE_DATA with key IOC$K_DIRECT_DMA_SIZE to obtain the
size of the direct DMA window (in megabytes). This is usually 1 GB.
2. Convert the size returned from IOC$NODE_DATA to pages by dividing the
number of bytes by the contents of mmg$gl_page_size. For example:
7–8 Device Support on OpenVMS Systems