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: <202507231739.LnkR6Gdd-lkp@intel.com>
Date: Wed, 23 Jul 2025 18:02:24 +0800
From: kernel test robot <lkp@...el.com>
To: Vineeth Karumanchi <vineeth.karumanchi@....com>,
	nicolas.ferre@...rochip.com, claudiu.beznea@...on.dev,
	andrew+netdev@...n.ch, davem@...emloft.net, edumazet@...gle.com,
	kuba@...nel.org, pabeni@...hat.com
Cc: llvm@...ts.linux.dev, oe-kbuild-all@...ts.linux.dev, git@....com,
	netdev@...r.kernel.org, linux-kernel@...r.kernel.org,
	vineeth.karumanchi@....com
Subject: Re: [PATCH net-next 3/6] net: macb: Add IEEE 802.1Qbv TAPRIO REPLACE
 command offload support

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@...el.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

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ