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

Conference turris::digital_unix

Title:DIGITAL UNIX(FORMERLY KNOWN AS DEC OSF/1)
Notice:Welcome to the Digital UNIX Conference
Moderator:SMURF::DENHAM
Created:Thu Mar 16 1995
Last Modified:Fri Jun 06 1997
Last Successful Update:Fri Jun 06 1997
Number of topics:10068
Total number of notes:35879

8376.0. "EV56, Any surprises?" by ADISSW::TENHAVE () Tue Jan 07 1997 16:37

T.RTitleUserPersonal
Name
DateLines
8376.1EV5 code oughta just work.PERFOM::HENNINGWed Jan 08 1997 11:548
8376.2I thought so...ButADISSW::TENHAVEFri Jan 10 1997 11:5527
8376.3answersWASTED::mapMark Parenti, Unix Engineering GroupFri Jan 10 1997 13:4937
8376.4fixed, behavior maybe differentADISSW::TENHAVEThu Jan 30 1997 16:4933
    
    I fixed the problem I was having.  What is interesting, is that
    the new EV56 enhanced interfaces brought it out.  Part of our
    initialization of our PCI bus adapter, had us do writes to the
    PCI_CONFIG space of our PCI device.  One of the two writes, was
    a word access to the Latency register (offset 0x0D) and Header
    Type register (offset 0x0E).  The Latency and Header registers
    are 8-bit registers.  On older platforms, this code worked just
    fine.  On the EV56, I crashed with an "unaligned kernel access".
    
    I then ran the EV56 Brett (DUNIX 4.0A) in EV5 mode.  This was done
    by setting ev56_bw_io_maps=0 at boot time.  Using a PCI bus 
    analyzer I saw my word write happen just fine.  Then I ran it 
    under normal for Brett (EV56 mode) and the PCI analyzer shows the
    this word write never occurring (system crashes).  I then tried to do 
    the writes as seperate BYTE accesses and all worked great under 
    normal EV56 mode. 
    
    It appears the EV56-Brett will not let you do a word access to two 
    adjacent byte registers in PCI config space.  To do the actual 
    write, I call the pci_sw table config_fcn for the platform I am
    on. This call eventually makes a write_io_port call.  In the Brett
    platform code, the write_io_port has different code paths for 
    EV56 and non-EV56 systems.  The above variable tells this call
    which path to take.
    
    This is not bad, just different behavior than before. 
    
    This was a platform - Brett configuration write function as well. 
    So behavior on other EV56 platforms may be different. 
    
                       Enjoy, Tim
    
8376.5Conclusion...ADISSW::TENHAVEWed Feb 05 1997 08:4617
    
    To complete this note path...
    
    The UNIX engineering group was very helpful and provided me with
    the reason for the behavior I saw.
    
    The "word" writes I was doing to PCI config space were NOT word
    address aligned.  The new linear I/O features in the EV56 code
    want to be word aligned for word accesses.  In the older code 
    path, the accesses are "sparse" accesses, and since the hardware
    alows this, they complete normally.
    
    Thank you all for your input, it is truelly appreciated, 
    
    				Tim