[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference 49.910::kav30

Title:VAX on VMEbus: KAV30
Notice:Could have been as fast as 68K but its a VAX!
Moderator:CSSVMS::KAV30_SUPP
Created:Thu Apr 18 1991
Last Modified:Fri Aug 02 1996
Last Successful Update:Fri Jun 06 1997
Number of topics:159
Total number of notes:645

59.0. "double mapping same physical VMEbus memory" by ZYDECO::BODA (Realtime Products Support) Thu Jul 16 1992 00:11

Hi,

A customer of ours claims that he can use KAV$OUT_MAP to map S0 space
to the VMEbus address space.  However, if he attempts to map to the same
VMEbus address space from another job, he gets the status return indicating
there is no physical memory.  Now for VAXELN, that usually is returned
to indicate that one is trying to double map a given virtual address.
However, is something being done by the KAV30 kernel to determine
that more than one process is trying to map to the same VMEbus address
space?

I did suggest to him that if he does the map once, all he needs to do
is take the S0 address returned and "send" it to the other job which
can simply reference that S0 location since it is always mapped regardless
of which job is executing.  

He would also like to know why KAV$OUT_MAP chooses to use S0 addresses
rather than P0.  Unfortunately, RDEBUG doesn't permit one to deposit
to an 80xxxxxx address.

Thanks,

Alan
T.RTitleUserPersonal
Name
DateLines
59.1HERR::CROSBIEThu Jul 16 1992 11:3528
    Hi Alan,
    

>   A customer of ours claims that he can use KAV$OUT_MAP to map S0 space
>   to the VMEbus address space.  However, if he attempts to map to the same
>   VMEbus address space from another job, he gets the status return indicating
>   there is no physical memory.  Now for VAXELN, that usually is returned
>   to indicate that one is trying to double map a given virtual address.
>   However, is something being done by the KAV30 kernel to determine
>   that more than one process is trying to map to the same VMEbus address
>   space?
    
    The KAV30 kernel doesn't care if another process is mapped to the same
    VMEbus address space.
    
    What is the exact error status that the customer is seeing?
    
>   He would also like to know why KAV$OUT_MAP chooses to use S0 addresses
>   rather than P0.  Unfortunately, RDEBUG doesn't permit one to deposit
>   to an 80xxxxxx address.
    
    Typically an application uses KAV$OUT_MAP to map device registers
    on a VMEbus controller, these device registers nay need to be accessible
    from the device's interrupt service routine running on the KAV30. The
    only virtual address space that can safely be accessed from a KAV30 isr is
    S0.
    
    Graham  
59.2found itZYDECO::BODARealtime Products SupportThu Jul 16 1992 22:0121
Hi Graham,

Thanks for the info.  I did find the problem in his code.  What I didn't
realize was that he was attempting to map 8 Mbyte!!!!  Of course that meant
he needed to boost system region size for each KAV$OUT_MAP by 16,512 pages.
The first one worked, but the second didn't and returns:

%KERNEL-F-NO_MEMORY, no physical memory available

This was easily confirmed.

This may be a bit misleading since it is S0 space and physical memory may
still be available (but then again the S0 is physically contiguous.)

I offered him a much more efficient means of mapping this in only ONE
job and then passing to other jobs the S0 address returned.  This works
just fine for him.

Thanks again,

Alan