On 15/06/16 10:02 AM, Allen Hubbe wrote:
>> My understanding is that ntb_tool is really just a test client to verify
>> the API and the hardware. I personally would not recommend it for any
>> real applications. As such, I don't think this philosophical argument
>> really matches that goal.
> 
> The purpose is to "verify the API and the hardware", not to support "real 
> applications."
> 
> The link status reported by the tool should be the link status reported by 
> "the API and the hardware," and not something else that might be convenient 
> for "my ntb_test script" or "anyone else trying to script with ntb_tool."  
> The primary purpose of ntb_tool is api-level debugging of hardware and 
> drivers, not scripting.
> 
> The problem with races in ntb_tool is due to auto-configuration of memory 
> windows in ntb_tool.  Instead of having ntb_tool setup the memory windows 
> automatically, maybe instead it should provide a file to control the memory 
> windows via debugfs.  Reading the file can format what is returned by 
> ntb_mw_get_range(), and writing the file can allocate a buffer and call 
> ntb_mw_set_trans(), or ntb_mw_clear_trans() and free the buffer.  Then, the 
> test script can wait for link up, then setup the memory windows, and then 
> finally proceed with the rest of the tests, and there would be no race.  
> There would be no confusion about what "link up" means, and ntb_tool would 
> more closely resemble the ntb.h api for memory windows.

Ok, well this is a good deal more complicated than it is now but I can
live with it. I'll work something up shortly.


> That's interesting about the hardware.  Maybe the driver for that particular 
> hardware should make sure that any translation register programming happens 
> before reporting link up to its clients.  Otherwise, ntb_transport will be 
> broken on that hardware.  The ntb_transport driver configures memory windows 
> the first time the link comes up, and only ever again if a different memory 
> window size is negotiated (unlikely).
> 
> There are two reasons for doing the configuration after link up in 
> ntb_transport.  First, it avoids consuming memory resources if the link never 
> comes up.  Second, ntb_transport negotiates with its peer how much of the 
> memory window will actually be used.  The ntb_perf tool is similar.

Hmm, yes I didn't notice that in ntb_transport. We'll have to make some
considerations for that in our driver.

Logan

Reply via email to