Re: [PATCH v5 00/10] NTB Selftest Script

From: Logan Gunthorpe
Date: Mon Jun 27 2016 - 12:09:29 EST


Great! Thanks Jon.

Logan

On 26/06/16 05:29 PM, Jon Mason wrote:
> On Mon, Jun 20, 2016 at 01:15:03PM -0600, Logan Gunthorpe wrote:
>> Sorry, I thought this was done but I found one more minor issue with
>> these patches so I'm resubmitting them one last time. Besides this isuse,
>> I think I have acks for all the patches and everything is working as I'd
>> like.
>
> Applying patch 05/10 to my ntb branch (as it is a bug fix and should
> go into 4.7)
>
> Applying the rest to my ntb-next branch (which should go into 4.8)
>
> Note: I'm including patch 09/10 in my tree, even though it is for the
> selftest subsystem. Given that Shuah Khan acked it, I assume this is
> the desired outcome.
>
> Thanks,
> Jon
>
>>
>> Changes since v4:
>>
>> 1) In patch 0006, when setting a translation fails in tool_setup_mw,
>> we now properly clean up the peer dma memory. Before that patch, it
>> wasn't required because if tool_setup_mw failed the module would clean
>> up all mws. After this patch, the clean up never happened, so it would
>> return an error to the user but the DMA memory would still be allocated
>> and the peer_trans file would report that it's ready but the debugfs
>> file would not have been created. In v5, after an error, no DMA memory
>> is allocated and it will still report that it's not ready to the user when
>> reading peer_trans.
>>
>> ---
>>
>> Changes since v3:
>>
>> 1) Check the error returned when setting the link in ntb_tool and pass
>> it back to the user.
>>
>> 2) If an error occurs when setting the link down during a link test in
>> ntb_test, just print unsupported and continue on. (For hardware that
>> does not support setting the link down.)
>>
>> 3) Fix a race condition problem introduced by clearing the link is
>> up flag in ntb_perf. We do this by getting rid of the link cleanup
>> work and doing the few actions in the link event handler.
>> Dave Jiang has already ok'd this approach.
>>
>> ---
>>
>> Changes since v2:
>>
>> 1) As per Allan's suggestion, I've added a patch to postpone the
>> peer memory window setup until the user requests it with a 'peer_trans*'
>> file. This pushes the ntb_tool API closer to the kernel API and allows
>> the link status file to return the raw status of the NTB link.
>>
>> 2) Change the link status file to return the value of ntb_link_is_up
>> instead of the local 'memory window ready' value.
>>
>> 3) Change the link_event file to just block on write. As it was in v2,
>> if multiple users attempted to use the link_event file they could
>> corrupt the state another user had set. Reads to this file are no
>> longer permitted.
>>
>> 4) Updates to the ntb_test script to accommodate the above changes.
>>
>> 5) Added some link tests to the ntb_test script. It will bring the link
>> down and check that the other side agrees.
>>
>> 6) Added a minor bug fix (Patch #10) to ntb_perf. During discussions
>> with Allen it was noticed that the link_is_up flag is never cleared if
>> the link goes away.
>>
>> ---
>>
>> Changes since v1:
>>
>> 1) Add a comment to explain the *15 in the buf size calculation,
>> as per Allen's feedback.
>>
>> 2) Clean up the changes to the pingpong client as there were some
>> sloppy copying mistakes.
>>
>> 3) Rework the 'link' file in ntb_tool as per Allen's suggestions.
>> I've added a 'link_event' file the works essentially how he's asked.
>> Though, I found no need to use a completion as suggested and the flow
>> is maybe slightly simpler than he's suggested. Just write a boolean
>> to the event file then read to wait for the link to be either up or
>> down. There's still some discussion on the best interface and it's
>> not much work to make additional minor functional changes.
>>
>> 4) Update the selftest script to use the new 'link_event' file.
>>
>> 5) Minor change to the way the selftest script lists devices thanks to
>> Allen's observation.
>>
>> ---
>>
>> I've written a ntb_test.sh script that would probably be useful if it
>> were included in the kernel. This series ends with that script and
>> includes some useful interface improvements and fixes to the existing ntb
>> test modules. Please see each individual commit for more information.
>> They are mostly independent.
>>
>> The series is based off of v4.6 plus the patches I've submitted that
>> have been accepted into ntb-next. They've been run through checkpatch
>> with --strict this time.
>>
>> As always, I'm happy to incorporate any feedback.
>>
>> Thanks,
>>
>> Logan
>>
>> ---
>>
>> Logan Gunthorpe (10):
>> ntb_perf: Schedule based on time not on performance
>> ntb_perf: Improve thread handling to increase robustness
>> ntb_perf: Return results by reading the run file
>> ntb_perf: Wait for link before running test
>> ntb_tool: BUG: Ensure the buffer size is large enough to return all
>> spads
>> ntb_tool: Postpone memory window initialization for the user
>> ntb_tool: Add link status and files to debugfs
>> ntb_pingpong: Add a debugfs file to get the ping count
>> ntb_test: Add a selftest script for the NTB subsystem
>> ntb_perf: clear link_is_up flag when the link goes down.
>>
>> MAINTAINERS | 1 +
>> drivers/ntb/test/ntb_perf.c | 224 +++++++++------
>> drivers/ntb/test/ntb_pingpong.c | 62 ++++-
>> drivers/ntb/test/ntb_tool.c | 468 ++++++++++++++++++++++----------
>> tools/testing/selftests/ntb/ntb_test.sh | 422 ++++++++++++++++++++++++++++
>> 5 files changed, 957 insertions(+), 220 deletions(-)
>> create mode 100755 tools/testing/selftests/ntb/ntb_test.sh
>>
>> --
>> 2.1.4