From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.90_1) id 1nV6Sv-0005CH-60 for mharc-grub-devel@gnu.org; Fri, 18 Mar 2022 02:52:01 -0400 Received: from eggs.gnu.org ([209.51.188.92]:32986) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nV6Sr-0005Am-5S for grub-devel@gnu.org; Fri, 18 Mar 2022 02:51:57 -0400 Received: from [2607:f8b0:4864:20::f33] (port=46806 helo=mail-qv1-xf33.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nV6Sp-0006BM-Ji for grub-devel@gnu.org; Fri, 18 Mar 2022 02:51:56 -0400 Received: by mail-qv1-xf33.google.com with SMTP id j5so5864441qvs.13 for ; Thu, 17 Mar 2022 23:51:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=efficientek-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=N3iQG4NspMspG+zjaP/2/YeqnKVpmsHN80CRO28itls=; b=QeVbO0ijkYsBw7Uiw+/qCn74SNJHBQi+6O1UaTGuUQFrOJkTTGb/M/rKlDpjOX/vPI 2xjq8fY/s9gli1p0KQoGJydCJlOwis8CgLgX4NOD3RSsICjhXtGpBuN5Bx3zDZ7+DPXm ZIlxBS+rWW/12UTdr3hxu04khskFckqjfRI9JUFRELJm+BD5IwkzOhMOS6wQPZlm9DhB l62M0R1RG4W68/EqaE+006mklrxbCZPmvHKPnYLCmhb+bT1sG0VjS0Jfv8A4TjaLjCvo pJ6q+7oLO5edstEj2y5IOvtiqW7XiA5QGKDBud68T/3PF3SsXrNQ+339H02ZR8BjtyBB ezuw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=N3iQG4NspMspG+zjaP/2/YeqnKVpmsHN80CRO28itls=; b=L9wEupTLDOEO2qfEKVBE/kzg0YpMpJQ3V6HwPsIfikjXyzXurEJDNFqjXXXEG1Rghx yAkFbH6ReUX6S2qkvwTFrb+g/l0Euz78gByowPtGHYtrez7Dq+Vm5cD5yOadSWLmJUMO MwOvChC0hwJ9w96g+t5VH/EI2uuMxVz9dG9JCrhek1+u3MeybvF67YbvzduzfR13o2zv G2+gSzzv9mdSe2iO2KmDpxlP8GgpC7jZTjUGVzJBWx620dSKaQW3Wz5vsFWTbUhvZ+Ol B9V/PpKDDO1x4Tp9qBYWALBlxUVsbnDAeg7A9tL0FPlryXO/dneTy4hHi+UOQ4Tiq6ZX JyyA== X-Gm-Message-State: AOAM532K5i0yrxVja9P3lQb1LzfGLing8Ao3s1O7qTnYhqT6dOzOeSZV pFlKE/Q1q8gfndBxoxYW6efk0A== X-Google-Smtp-Source: ABdhPJyxnyGVk89Lvg7FWDU064q9g55Eof/1LbLuEIM40+luwS4p2A4Z7+vRnu2Ngbclw7Cx3IaYFw== X-Received: by 2002:ad4:5d4c:0:b0:435:41df:faa2 with SMTP id jk12-20020ad45d4c000000b0043541dffaa2mr6179094qvb.73.1647586313359; Thu, 17 Mar 2022 23:51:53 -0700 (PDT) Received: from localhost.localdomain (51-15-0-88.rev.poneytelecom.eu. [51.15.0.88]) by smtp.gmail.com with ESMTPSA id o6-20020a05620a22c600b0067d247816eesm3471324qki.85.2022.03.17.23.51.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Mar 2022 23:51:53 -0700 (PDT) From: Glenn Washburn To: Daniel Kiper , grub-devel@gnu.org Cc: Glenn Washburn Subject: [PATCH 0/3] Net fix and improvements Date: Fri, 18 Mar 2022 01:51:30 -0500 Message-Id: X-Mailer: git-send-email 2.27.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::f33 (failed) Received-SPF: pass client-ip=2607:f8b0:4864:20::f33; envelope-from=development@efficientek.com; helo=mail-qv1-xf33.google.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Mar 2022 06:51:58 -0000 v2 updates: * Use == NULL in conditionals * Update commit messages to have more context from previous cover letter Glenn Glenn Washburn (3): net: Unset grub_net_poll_cards_idle when net module has been unloaded net: Avoid unnecessary calls to grub_net_tcp_retransmit net/tcp: Only call grub_get_time_ms when there are sockets to potentially retransmit for grub-core/net/net.c | 5 +++-- grub-core/net/tcp.c | 9 +++++++-- 2 files changed, 10 insertions(+), 4 deletions(-) Range-diff: 1: 324f068453 ! 1: 76bbc12ed1 net: Unset grub_net_poll_cards_idle when net module has been unloaded @@ Metadata ## Commit message ## net: Unset grub_net_poll_cards_idle when net module has been unloaded + This looks like it was a copy/paste error. If the net module is unloaded, + grub_net_poll_cards_idle should be NULL so that GRUB does not try to call a + function which now doesn't exist. + ## grub-core/net/net.c ## @@ grub-core/net/net.c: GRUB_MOD_FINI(net) grub_net_open = NULL; 2: 2e55f210c7 ! 2: 4efca58dab net: Avoid unnecessary calls to grub_net_tcp_retransmit @@ Commit message In grub_net_poll_cards_idle_real, only call grub_net_tcp_retransmit if there are network cards found. If there are no network card found, there can be no - tcp sockets to transmit on. + tcp sockets to transmit on. So no need to go through that logic. ## grub-core/net/net.c ## @@ grub-core/net/net.c: grub_net_poll_cards_idle_real (void) @@ grub-core/net/net.c: grub_net_poll_cards_idle_real (void) receive_packets (card, 0); } - grub_net_tcp_retransmit (); -+ if (grub_net_cards) ++ if (grub_net_cards == NULL) + grub_net_tcp_retransmit (); } 3: 7bef6e122f ! 3: a6328b14cd net/tcp: Only call grub_get_time_ms when there are sockets to potentially retransmit for @@ Metadata ## Commit message ## net/tcp: Only call grub_get_time_ms when there are sockets to potentially retransmit for - If there are no TCP sockets, this call to grub_get_time_ms is unneeded. This - prevents a call into the firmware on some platforms. + If the machine has network cards found, but there are no tcp open sockets + (because the user doesn't use the network to boot), then + grub_net_tcp_retransmit() should be a noop. Thus GRUB doesn't need to call + grub_get_time_ms(), which does a call into firmware on powerpc-ieee1275, + and probably other targets. So only call grub_get_time_ms() if there are tcp + sockets. + + Aside from improving performace, its also useful to stay out of the firmware + as much as possible when debugging via QEMU because its a pain to get back + in to GRUB execution. grub_net_tcp_retransmit() can get called very + frequently via grub_net_poll_cards_idle() when GRUB is waiting for a + keypress (grub_getkey_noblock() calls grub_net_poll_cards_idle()). This can + be annoying when debugging an issue in GRUB on powerpc in QEMU with GDB when + GRUB is waiting for a keypress because interrupting via GDB nearly always + lands in the OpenBIOS firmware's milliseconds call. ## grub-core/net/tcp.c ## @@ grub-core/net/tcp.c: void @@ grub-core/net/tcp.c: void - grub_uint64_t limit_time = ctime - TCP_RETRANSMISSION_TIMEOUT; + grub_uint64_t ctime = 0, limit_time = 0; + -+ if (tcp_sockets) ++ if (tcp_sockets == NULL) + { + ctime = grub_get_time_ms (); + limit_time = ctime - TCP_RETRANSMISSION_TIMEOUT; -- 2.27.0