From: netdev-bot+sashiko@kernel.org
To: enelsonmoore@gmail.com
Cc: arend.vanspriel@broadcom.com, aleksandr.loktionov@intel.com,
shaojijie@huawei.com, petrm@nvidia.com, jacob.e.keller@intel.com,
u.kleine-koenig@baylibre.com, netdev@vger.kernel.org,
linux-parisc@vger.kernel.org, andrew+netdev@lunn.ch,
davem@davemloft.net, edumazet@google.com, kuba@kernel.org,
pabeni@redhat.com, mgr@kernel.org
Subject: Re: [PATCH] net: tulip: winbond-840: remove never-true 486 CPU check
Date: Wed, 16 Sep 2026 20:48:53 +0000 [thread overview]
Message-ID: <178959173388.22033.1828981129063538898@kernel.org> (raw)
In-Reply-To: <20260915024551.196126-1-enelsonmoore@gmail.com>
Thank you for your contribution! Sashiko AI review found 3 potential
issue(s) to consider:
Critical: 0 · High: 0 · Medium: 1 · Low: 2
- [Medium] Inverted rationale in the commit message.
- [Low] Stale `#include <asm/processor.h>` with a now-false self-
documenting comment.
- [Low] Comment/code mismatch introduced by the comment rewrite in
init_registers().
--
net: tulip: winbond-840: remove never-true 486 CPU check
This removes the runtime boot_cpu_data.x86 <= 4 test in init_registers()
of the winbond-840 driver and collapses the surrounding preprocessor
chain so that the i386 non-module case now falls into the generic
architecture branch. The comment describing the two cache alignment
cases is reworded at the same time.
> net: tulip: winbond-840: remove never-true 486 CPU check
[Severity: Medium]
The subject and the message body say the condition is always true:
Therefore, since 486 support was removed from the kernel in commit
8b793a92d862 ("x86/cpu: Remove M486/M486SX/ELAN support"), the
condition is always true. Remove the check.
Is the polarity backwards here? boot_cpu_data.x86 holds the CPU family
(3 = 386, 4 = 486, 5 = 586), and after 8b793a92d862 the minimum family
for 32-bit builds is 5:
arch/x86/Kconfig.cpu:
config X86_MINIMUM_CPU_FAMILY
int
default "64" if X86_64
default "6" if X86_32 && (MPENTIUM4 || ...)
default "5"
So a family <= 4 CPU can no longer boot the kernel and the predicate is
never true, which is consistent with the patch keeping i |= 0xE000 (the
else branch) rather than i |= 0x4800.
Should the wording be something like "the condition is never true, so
the else branch is always taken"? As written, a reader or a stable
backporter would expect 0x4800 to be the value preserved for i386
built-in builds.
> diff --git a/drivers/net/ethernet/dec/tulip/winbond-840.c b/drivers/net/ethernet/dec/tulip/winbond-840.c
> index a5581f1d01417..c42eaf0eef642 100644
> --- a/drivers/net/ethernet/dec/tulip/winbond-840.c
> +++ b/drivers/net/ethernet/dec/tulip/winbond-840.c
> @@ -876,24 +876,14 @@ static void init_registers(struct net_device *dev)
> i |= 0x02; /* give Rx priority */
>
> /* Configure the PCI bus bursts and FIFO thresholds.
> - 486: Set 8 longword cache alignment, 8 longword burst.
> - 586: Set 16 longword cache alignment, no burst limit.
> + Set 16 longword cache alignment, no burst limit.
[Severity: Low]
Does this single unconditional line still match the code below it? Two
different values are still programmed, and neither one is "16 longword
cache alignment, no burst limit" (which the table just below decodes as
0x8000):
#if defined(__powerpc__) || defined(__i386__) || ...
i |= 0xE000; /* C000 = 32 longwords | 2000 = 32 longword burst */
#elif defined(CONFIG_SPARC) || defined (CONFIG_PARISC) || defined(CONFIG_ARM)
i |= 0x4800; /* 4000 = 8 longwords | 0800 = 8 longword burst */
#else
i |= 0x4800;
The deleted "486:" line is the one that described 0x4800 accurately, and
that value is still programmed on SPARC, PARISC, ARM and the unknown-arch
fallback. Would it be better to drop the prose entirely, or restate it
for both remaining cases?
The 0xE000 half of the mismatch predates this patch; the new part is that
the wording is now unconditional and also covers the 0x4800 branches.
> Cache alignment bits 15:14 Burst length 13:8
> 0000 <not allowed> 0000 align to cache 0800 8 longwords
> 4000 8 longwords 0100 1 longword 1000 16 longwords
> 8000 16 longwords 0200 2 longwords 2000 32 longwords
> C000 32 longwords 0400 4 longwords */
>
> -#if defined (__i386__) && !defined(MODULE) && !defined(CONFIG_UML)
> - /* When not a module we can work around broken '486 PCI boards. */
> - if (boot_cpu_data.x86 <= 4) {
> - i |= 0x4800;
> - dev_info(&dev->dev,
> - "This is a 386/486 PCI system, setting cache alignment to 8 longwords\n");
> - } else {
> - i |= 0xE000;
> - }
> -#elif defined(__powerpc__) || defined(__i386__) || defined(__alpha__) || defined(__ia64__) || defined(__x86_64__)
> +#if defined(__powerpc__) || defined(__i386__) || defined(__alpha__) || defined(__ia64__) || defined(__x86_64__)
> i |= 0xE000;
[Severity: Low]
With boot_cpu_data gone, is the header include at the top of
drivers/net/ethernet/dec/tulip/winbond-840.c now stale?
#include <asm/processor.h> /* Processor type for cache alignment. */
That was the only user of asm/processor.h in this file, and after the
patch the cache alignment selection in init_registers() is purely
compile-time arch conditionals, so the comment no longer describes
anything the code does. Should the include (or at least the comment) be
dropped in the same change?
> #elif defined(CONFIG_SPARC) || defined (CONFIG_PARISC) || defined(CONFIG_ARM)
> i |= 0x4800;
[ ... ]
--
Sashiko AI review · https://netdev-ai.bots.linux.dev/sashiko/#/patchset/20260915024551.196126-1-enelsonmoore%40gmail.com
next prev parent reply other threads:[~2026-09-16 20:49 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-15 2:45 [PATCH] net: tulip: winbond-840: remove never-true 486 CPU check Ethan Nelson-Moore
2026-09-15 3:36 ` Ethan Nelson-Moore
2026-09-16 20:48 ` netdev-bot+sashiko [this message]
2026-09-18 15:59 ` Loktionov, Aleksandr
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=178959173388.22033.1828981129063538898@kernel.org \
--to=netdev-bot+sashiko@kernel.org \
--cc=aleksandr.loktionov@intel.com \
--cc=andrew+netdev@lunn.ch \
--cc=arend.vanspriel@broadcom.com \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=enelsonmoore@gmail.com \
--cc=jacob.e.keller@intel.com \
--cc=kuba@kernel.org \
--cc=linux-parisc@vger.kernel.org \
--cc=mgr@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=petrm@nvidia.com \
--cc=shaojijie@huawei.com \
--cc=u.kleine-koenig@baylibre.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox