On 9/15/26 9:12 AM, Patrice CHOTARD wrote:


On 9/14/26 22:34, Marek Vasut wrote:
On 9/14/26 8:45 AM, Patrice CHOTARD wrote:

Hello Patrice,

schedule() execution doesn't takes 70ms.
Moving schedule() from main loop to same level that ctrlc(), it allows to call 
ctrlc() every ~70ms.
In the current state, the ctrlc() is called every ... how many ... ms ?

Currently ctrlc() is called every 700ms


How come this trips the watchdog timeout ? What is the watchdog timeout delay 
set to in your case ?

In our case, watchdog is set to 32 seconds on STM32MP157c-DK2.

For information, this patch is superseeded by

https://patchwork.ozlabs.org/project/uboot/patch/20260817-move_schedule_inside_sleep_thread-v1-2-0023194e8...@foss.st.com/
Let me ask a different question -- is the problem that this is trying to solve 
the responsiveness of ctrl-c , or is the problem that this trips the WDT ?

If the later, how come 700ms cycle trips 32 second timeout WDT ?

(I'm sorry, I feel like I must be missing something obvious here?)

Hi Marek

The goal of this patch is only to solve the responsiveness of CTRL-C.
In that case, I still don't get it. Moving the schedule() into if (k == 10) won't improve responsiveness of ctrl-c unless schedule takes a long time, which as far as I understand it, it doesn't.

I would understand this patch which would I believe improve the ctrl-c responsiveness, without having severe impact on performance:

diff --git a/drivers/usb/gadget/f_mass_storage.c b/drivers/usb/gadget/f_mass_storage.c
index 7eb667c130d..96581792031 100644
--- a/drivers/usb/gadget/f_mass_storage.c
+++ b/drivers/usb/gadget/f_mass_storage.c
@@ -651,7 +651,7 @@ static void busy_indicator(void)
 static int sleep_thread(struct fsg_common *common)
 {
        int     rc = 0;
-       int i = 0, k = 0;
+       int i = 0;

        /* Wait until a signal arrives or we are woken up */
        for (;;) {
@@ -661,10 +661,7 @@ static int sleep_thread(struct fsg_common *common)
                if (++i == 20000) {
                        busy_indicator();
                        i = 0;
-                       k++;
-               }

-               if (k == 10) {
                        /* Handle START-STOP UNIT */
                        if (common->eject)
                                return -EPIPE;
@@ -676,8 +673,6 @@ static int sleep_thread(struct fsg_common *common)
                        /* Check cable connection */
                        if (!g_dnl_board_usb_cable_connected())
                                return -EIO;
-
-                       k = 0;
                }

                schedule();

Reply via email to