lkml.org 
[lkml]   [2020]   [Aug]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [RESEND PATCHv1] fpga: stratix10-soc: make FPGA task un-interruptible
From
Date
Hi Moritz,

No problem.

Thanks you very much for applying patch to the next!

Regards,
Richard

On 8/4/20 11:43 AM, Moritz Fischer wrote:
> On Fri, Jul 24, 2020 at 11:10:09AM -0500, richard.gong@linux.intel.com wrote:
>> From: Richard Gong <richard.gong@intel.com>
>>
>> When CTRL+C occurs during the process of FPGA reconfiguration, the FPGA
>> reconfiguration process stops and the user can't perform a new FPGA
>> reconfiguration properly.
>>
>> Set FPGA task to be not interruptible so that the user can properly
>> perform FPGA reconfiguration after CTRL+C event.
>>
>> Signed-off-by: Richard Gong <richard.gong@intel.com>
>> Reviewed-by: Tom Rix <trix@redhat.com>
>> ---
>> drivers/fpga/stratix10-soc.c | 23 +++--------------------
>> 1 file changed, 3 insertions(+), 20 deletions(-)
>>
>> diff --git a/drivers/fpga/stratix10-soc.c b/drivers/fpga/stratix10-soc.c
>> index 44b7c56..657a70c 100644
>> --- a/drivers/fpga/stratix10-soc.c
>> +++ b/drivers/fpga/stratix10-soc.c
>> @@ -196,17 +196,13 @@ static int s10_ops_write_init(struct fpga_manager *mgr,
>> if (ret < 0)
>> goto init_done;
>>
>> - ret = wait_for_completion_interruptible_timeout(
>> + ret = wait_for_completion_timeout(
>> &priv->status_return_completion, S10_RECONFIG_TIMEOUT);
>> if (!ret) {
>> dev_err(dev, "timeout waiting for RECONFIG_REQUEST\n");
>> ret = -ETIMEDOUT;
>> goto init_done;
>> }
>> - if (ret < 0) {
>> - dev_err(dev, "error (%d) waiting for RECONFIG_REQUEST\n", ret);
>> - goto init_done;
>> - }
>>
>> ret = 0;
>> if (!test_and_clear_bit(SVC_STATUS_OK, &priv->status)) {
>> @@ -318,7 +314,7 @@ static int s10_ops_write(struct fpga_manager *mgr, const char *buf,
>> */
>> wait_status = 1; /* not timed out */
>> if (!priv->status)
>> - wait_status = wait_for_completion_interruptible_timeout(
>> + wait_status = wait_for_completion_timeout(
>> &priv->status_return_completion,
>> S10_BUFFER_TIMEOUT);
>>
>> @@ -340,13 +336,6 @@ static int s10_ops_write(struct fpga_manager *mgr, const char *buf,
>> ret = -ETIMEDOUT;
>> break;
>> }
>> - if (wait_status < 0) {
>> - ret = wait_status;
>> - dev_err(dev,
>> - "error (%d) waiting for svc layer buffers\n",
>> - ret);
>> - break;
>> - }
>> }
>>
>> if (!s10_free_buffers(mgr))
>> @@ -372,7 +361,7 @@ static int s10_ops_write_complete(struct fpga_manager *mgr,
>> if (ret < 0)
>> break;
>>
>> - ret = wait_for_completion_interruptible_timeout(
>> + ret = wait_for_completion_timeout(
>> &priv->status_return_completion, timeout);
>> if (!ret) {
>> dev_err(dev,
>> @@ -380,12 +369,6 @@ static int s10_ops_write_complete(struct fpga_manager *mgr,
>> ret = -ETIMEDOUT;
>> break;
>> }
>> - if (ret < 0) {
>> - dev_err(dev,
>> - "error (%d) waiting for RECONFIG_COMPLETED\n",
>> - ret);
>> - break;
>> - }
>> /* Not error or timeout, so ret is # of jiffies until timeout */
>> timeout = ret;
>> ret = 0;
>> --
>> 2.7.4
>>
>
> Sorry that one slipped through the cracks, will apply to for-next.
>
> Thanks!
>

\
 
 \ /
  Last update: 2020-08-04 19:50    [W:0.038 / U:0.320 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site