lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <39936d44-a802-8105-7d60-97a1e44c163d@kernel.org>
Date:   Wed, 8 Jul 2020 13:47:45 -0500
From:   Dinh Nguyen <dinguyen@...nel.org>
To:     Richard Gong <richard.gong@...ux.intel.com>, mdf@...nel.org
Cc:     linux-fpga@...r.kernel.org, linux-kernel@...r.kernel.org,
        richard.gong@...el.com
Subject: Re: [PATCH] fpga: stratix10-soc: make FPGA task un-interruptible



On 7/8/20 1:30 PM, Richard Gong wrote:
> Hi Dinh,
> 
> 
> On 7/8/20 12:08 PM, Dinh Nguyen wrote:
>> Hi
>>
>> On 7/7/20 11:14 AM, richard.gong@...ux.intel.com wrote:
>>> From: Richard Gong <richard.gong@...el.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 complete 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@...el.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;
>>>
>>
>> Do you need the same change in drivers/fpga/socfpga.c? 
> It is not required.

Why not?

> Also, you did not
>> include Moritz Fisher on this. He's the maintainer.
>>
> I did include Moritz Fisher <mdf@...nel.org> in the submission, is
> something change recently?
> 

My bad, I didn't see his name in the email.

Dinh

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ