mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Vineeth Karumanchi <vineeth.karumanchi@amd.com>,
	nicolas.ferre@microchip.com, claudiu.beznea@tuxon.dev,
	andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com,
	kuba@kernel.org, pabeni@redhat.com
Cc: llvm@lists.linux.dev, oe-kbuild-all@lists.linux.dev, git@amd.com,
	netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
	vineeth.karumanchi@amd.com
Subject: Re: [PATCH net-next 3/6] net: macb: Add IEEE 802.1Qbv TAPRIO REPLACE command offload support
Date: Wed, 23 Jul 2025 18:02:24 +0800	[thread overview]
Message-ID: <202507231739.LnkR6Gdd-lkp@intel.com> (raw)
In-Reply-To: <20250722154111.1871292-4-vineeth.karumanchi@amd.com>

Hi Vineeth,

kernel test robot noticed the following build warnings:

[auto build test WARNING on net-next/main]

url:    https://github.com/intel-lab-lkp/linux/commits/Vineeth-Karumanchi/net-macb-Define-ENST-hardware-registers-for-time-aware-scheduling/20250722-234618
base:   net-next/main
patch link:    https://lore.kernel.org/r/20250722154111.1871292-4-vineeth.karumanchi%40amd.com
patch subject: [PATCH net-next 3/6] net: macb: Add IEEE 802.1Qbv TAPRIO REPLACE command offload support
config: i386-randconfig-015-20250723 (https://download.01.org/0day-ci/archive/20250723/202507231739.LnkR6Gdd-lkp@intel.com/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250723/202507231739.LnkR6Gdd-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202507231739.LnkR6Gdd-lkp@intel.com/

All warnings (new ones prefixed by >>):

>> drivers/net/ethernet/cadence/macb_main.c:4109:7: warning: format specifies type 'unsigned long' but the argument has type 'size_t' (aka 'unsigned int') [-Wformat]
    4108 |                 netdev_err(ndev, "Too many TAPRIO entries: %lu > %d queues\n",
         |                                                            ~~~
         |                                                            %zu
    4109 |                            conf->num_entries, bp->num_queues);
         |                            ^~~~~~~~~~~~~~~~~
   drivers/net/ethernet/cadence/macb_main.c:4212:6: warning: format specifies type 'unsigned long' but the argument has type 'size_t' (aka 'unsigned int') [-Wformat]
    4211 |         netdev_dbg(ndev, "TAPRIO setup: %lu entries, base_time=%lld ns, cycle_time=%llu ns\n",
         |                                         ~~~
         |                                         %zu
    4212 |                    conf->num_entries, conf->base_time, conf->cycle_time);
         |                    ^~~~~~~~~~~~~~~~~
   include/net/net_debug.h:66:46: note: expanded from macro 'netdev_dbg'
      66 |                 netdev_printk(KERN_DEBUG, __dev, format, ##args); \
         |                                                  ~~~~~~    ^~~~
   drivers/net/ethernet/cadence/macb_main.c:4235:7: warning: format specifies type 'unsigned long' but the argument has type 'size_t' (aka 'unsigned int') [-Wformat]
    4234 |         netdev_info(ndev, "TAPRIO configuration completed successfully: %lu entries, %d queues configured\n",
         |                                                                         ~~~
         |                                                                         %zu
    4235 |                     conf->num_entries, hweight32(configured_queues));
         |                     ^~~~~~~~~~~~~~~~~
   drivers/net/ethernet/cadence/macb_main.c:4088:12: warning: unused function 'macb_taprio_setup_replace' [-Wunused-function]
    4088 | static int macb_taprio_setup_replace(struct net_device *ndev,
         |            ^~~~~~~~~~~~~~~~~~~~~~~~~
   4 warnings generated.


vim +4109 drivers/net/ethernet/cadence/macb_main.c

  4087	
  4088	static int macb_taprio_setup_replace(struct net_device *ndev,
  4089					     struct tc_taprio_qopt_offload *conf)
  4090	{
  4091		u64 total_on_time = 0, start_time_sec = 0, start_time = conf->base_time;
  4092		struct queue_enst_configs  *enst_queue;
  4093		u32 configured_queues = 0, speed = 0;
  4094		struct tc_taprio_sched_entry *entry;
  4095		struct macb *bp = netdev_priv(ndev);
  4096		struct ethtool_link_ksettings kset;
  4097		struct macb_queue *queue;
  4098		unsigned long flags;
  4099		int err = 0, i;
  4100	
  4101		/* Validate queue configuration */
  4102		if (bp->num_queues < 1 || bp->num_queues > MACB_MAX_QUEUES) {
  4103			netdev_err(ndev, "Invalid number of queues: %d\n", bp->num_queues);
  4104			return -EINVAL;
  4105		}
  4106	
  4107		if (conf->num_entries > bp->num_queues) {
  4108			netdev_err(ndev, "Too many TAPRIO entries: %lu > %d queues\n",
> 4109				   conf->num_entries, bp->num_queues);
  4110			return -EINVAL;
  4111		}
  4112	
  4113		if (start_time < 0) {
  4114			netdev_err(ndev, "Invalid base_time: must be 0 or positive, got %lld\n",
  4115				   conf->base_time);
  4116			return -ERANGE;
  4117		}
  4118	
  4119		/* Get the current link speed */
  4120		err = phylink_ethtool_ksettings_get(bp->phylink, &kset);
  4121		if (unlikely(err)) {
  4122			netdev_err(ndev, "Failed to get link settings: %d\n", err);
  4123			return err;
  4124		}
  4125	
  4126		speed = kset.base.speed;
  4127		if (unlikely(speed <= 0)) {
  4128			netdev_err(ndev, "Invalid speed: %d\n", speed);
  4129			return -EINVAL;
  4130		}
  4131	
  4132		enst_queue = kcalloc(conf->num_entries, sizeof(*enst_queue), GFP_KERNEL);
  4133		if (!enst_queue)
  4134			return -ENOMEM;
  4135	
  4136		/* Pre-validate all entries before making any hardware changes */
  4137		for (i = 0; i < conf->num_entries; i++) {
  4138			entry = &conf->entries[i];
  4139	
  4140			if (entry->command != TC_TAPRIO_CMD_SET_GATES) {
  4141				netdev_err(ndev, "Entry %d: unsupported command %d\n",
  4142					   i, entry->command);
  4143				err = -EOPNOTSUPP;
  4144				goto cleanup;
  4145			}
  4146	
  4147			/* Validate gate_mask: must be nonzero, single queue, and within range */
  4148			if (!is_power_of_2(entry->gate_mask)) {
  4149				netdev_err(ndev, "Entry %d: gate_mask 0x%x is not a power of 2 (only one queue per entry allowed)\n",
  4150					   i, entry->gate_mask);
  4151				err = -EINVAL;
  4152				goto cleanup;
  4153			}
  4154	
  4155			/* gate_mask must not select queues outside the valid queue_mask */
  4156			if (entry->gate_mask & ~bp->queue_mask) {
  4157				netdev_err(ndev, "Entry %d: gate_mask 0x%x exceeds queue range (max_queues=%d)\n",
  4158					   i, entry->gate_mask, bp->num_queues);
  4159				err = -EINVAL;
  4160				goto cleanup;
  4161			}
  4162	
  4163			/* Check for start time limits */
  4164			start_time_sec = div_u64(start_time, NSEC_PER_SEC);
  4165			if (start_time_sec > ENST_MAX_START_TIME_SEC) {
  4166				netdev_err(ndev, "Entry %d: Start time %llu s exceeds hardware limit\n",
  4167					   i, start_time_sec);
  4168				err = -ERANGE;
  4169				goto cleanup;
  4170			}
  4171	
  4172			/* Check for on time limit*/
  4173			if (entry->interval > ENST_MAX_HW_INTERVAL(speed)) {
  4174				netdev_err(ndev, "Entry %d: interval %u ns exceeds hardware limit %lu ns\n",
  4175					   i, entry->interval, ENST_MAX_HW_INTERVAL(speed));
  4176				err = -ERANGE;
  4177				goto cleanup;
  4178			}
  4179	
  4180			/* Check for off time limit*/
  4181			if ((conf->cycle_time - entry->interval) > ENST_MAX_HW_INTERVAL(speed)) {
  4182				netdev_err(ndev, "Entry %d: off_time %llu ns exceeds hardware limit %lu ns\n",
  4183					   i, conf->cycle_time - entry->interval,
  4184					   ENST_MAX_HW_INTERVAL(speed));
  4185				err = -ERANGE;
  4186				goto cleanup;
  4187			}
  4188	
  4189			enst_queue[i].queue_id = order_base_2(entry->gate_mask);
  4190			enst_queue[i].start_time_mask =
  4191				(start_time_sec << GEM_START_TIME_SEC_OFFSET) |
  4192					  (start_time % NSEC_PER_SEC);
  4193			enst_queue[i].on_time_bytes =
  4194				ENST_NS_TO_HW_UNITS(entry->interval, speed);
  4195			enst_queue[i].off_time_bytes =
  4196				ENST_NS_TO_HW_UNITS(conf->cycle_time - entry->interval, speed);
  4197	
  4198			configured_queues |= entry->gate_mask;
  4199			total_on_time += entry->interval;
  4200			start_time += entry->interval;
  4201		}
  4202	
  4203		/* Check total interval doesn't exceed cycle time */
  4204		if (total_on_time > conf->cycle_time) {
  4205			netdev_err(ndev, "Total ON %llu ns exceeds cycle time %llu ns\n",
  4206				   total_on_time, conf->cycle_time);
  4207			err = -EINVAL;
  4208			goto cleanup;
  4209		}
  4210	
  4211		netdev_dbg(ndev, "TAPRIO setup: %lu entries, base_time=%lld ns, cycle_time=%llu ns\n",
  4212			   conf->num_entries, conf->base_time, conf->cycle_time);
  4213	
  4214		/* All validations passed - proceed with hardware configuration */
  4215		spin_lock_irqsave(&bp->lock, flags);
  4216	
  4217		/* Disable ENST queues if running before configuring */
  4218		if (gem_readl(bp, ENST_CONTROL))
  4219			gem_writel(bp, ENST_CONTROL,
  4220				   GENMASK(bp->num_queues - 1, 0) << GEM_ENST_DISABLE_QUEUE_OFFSET);
  4221	
  4222		for (i = 0; i < conf->num_entries; i++) {
  4223			queue = &bp->queues[enst_queue[i].queue_id];
  4224			/* Configure queue timing registers */
  4225			queue_writel(queue, ENST_START_TIME, enst_queue[i].start_time_mask);
  4226			queue_writel(queue, ENST_ON_TIME, enst_queue[i].on_time_bytes);
  4227			queue_writel(queue, ENST_OFF_TIME, enst_queue[i].off_time_bytes);
  4228		}
  4229	
  4230		/* Enable ENST for all configured queues in one write */
  4231		gem_writel(bp, ENST_CONTROL, configured_queues);
  4232		spin_unlock_irqrestore(&bp->lock, flags);
  4233	
  4234		netdev_info(ndev, "TAPRIO configuration completed successfully: %lu entries, %d queues configured\n",
  4235			    conf->num_entries, hweight32(configured_queues));
  4236	
  4237	cleanup:
  4238		kfree(enst_queue);
  4239		return err;
  4240	}
  4241	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

  reply	other threads:[~2025-07-23 10:03 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-07-22 15:41 [PATCH net-next 0/6] net: macb: Add TAPRIO traffic scheduling support Vineeth Karumanchi
2025-07-22 15:41 ` [PATCH net-next 1/6] net: macb: Define ENST hardware registers for time-aware scheduling Vineeth Karumanchi
2025-07-26 12:23   ` claudiu beznea (tuxon)
2025-07-22 15:41 ` [PATCH net-next 2/6] net: macb: Integrate ENST timing parameters and hardware unit conversion Vineeth Karumanchi
2025-07-26 12:24   ` claudiu beznea (tuxon)
2025-07-22 15:41 ` [PATCH net-next 3/6] net: macb: Add IEEE 802.1Qbv TAPRIO REPLACE command offload support Vineeth Karumanchi
2025-07-23 10:02   ` kernel test robot [this message]
2025-07-26 12:25   ` claudiu beznea (tuxon)
2025-07-26 15:32     ` Andrew Lunn
2025-07-29  8:59     ` Karumanchi, Vineeth
2025-07-31  9:07       ` Claudiu Beznea
2025-07-22 15:41 ` [PATCH net-next 4/6] net: macb: Implement TAPRIO DESTROY command offload for gate cleanup Vineeth Karumanchi
2025-07-26 12:26   ` claudiu beznea (tuxon)
2025-07-22 15:41 ` [PATCH net-next 5/6] net: macb: Implement TAPRIO TC offload command interface Vineeth Karumanchi
2025-07-26 12:29   ` claudiu beznea (tuxon)
2025-07-29  9:38     ` Karumanchi, Vineeth
2025-07-31  9:07       ` Claudiu Beznea
2025-07-28 16:31   ` kernel test robot
2025-07-22 15:41 ` [PATCH net-next 6/6] net: macb: Add MACB_CAPS_QBV capability flag for IEEE 802.1Qbv support Vineeth Karumanchi
2025-07-23 19:05   ` Simon Horman
2025-07-29  9:42     ` Karumanchi, Vineeth
2025-07-24  0:46   ` kernel test robot

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=202507231739.LnkR6Gdd-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=andrew+netdev@lunn.ch \
    --cc=claudiu.beznea@tuxon.dev \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=git@amd.com \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=llvm@lists.linux.dev \
    --cc=netdev@vger.kernel.org \
    --cc=nicolas.ferre@microchip.com \
    --cc=oe-kbuild-all@lists.linux.dev \
    --cc=pabeni@redhat.com \
    --cc=vineeth.karumanchi@amd.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

all inboxes | Powered by JetHome®