[PATCH] wifi: ath10k: consistently use kstrtoX_from_user() functions

2023-09-20 Thread Dmitry Antipov
Use 'kstrtoul_from_user()', 'kstrtobool_from_user()' and
'kstrtoint_from_user()' where appropriate and thus avoid
some code duplication.

Signed-off-by: Dmitry Antipov 
---
Hopefully this doesn't violate "if it isn't broke, don't fix
it" rule (the same thing was recently accepted for ath9k).
---
 drivers/net/wireless/ath/ath10k/debug.c| 47 +++---
 drivers/net/wireless/ath/ath10k/spectral.c | 26 
 2 files changed, 22 insertions(+), 51 deletions(-)

diff --git a/drivers/net/wireless/ath/ath10k/debug.c 
b/drivers/net/wireless/ath/ath10k/debug.c
index f9518e1c9903..ea6e0d50e933 100644
--- a/drivers/net/wireless/ath/ath10k/debug.c
+++ b/drivers/net/wireless/ath/ath10k/debug.c
@@ -1964,20 +1964,13 @@ static ssize_t ath10k_write_btcoex(struct file *file,
   size_t count, loff_t *ppos)
 {
struct ath10k *ar = file->private_data;
-   char buf[32];
-   size_t buf_size;
-   int ret;
+   ssize_t ret;
bool val;
u32 pdev_param;
 
-   buf_size = min(count, (sizeof(buf) - 1));
-   if (copy_from_user(buf, ubuf, buf_size))
-   return -EFAULT;
-
-   buf[buf_size] = '\0';
-
-   if (kstrtobool(buf, &val) != 0)
-   return -EINVAL;
+   ret = kstrtobool_from_user(ubuf, count, &val);
+   if (ret)
+   return ret;
 
if (!ar->coex_support)
return -EOPNOTSUPP;
@@ -2000,7 +1993,7 @@ static ssize_t ath10k_write_btcoex(struct file *file,
 ar->running_fw->fw_file.fw_features)) {
ret = ath10k_wmi_pdev_set_param(ar, pdev_param, val);
if (ret) {
-   ath10k_warn(ar, "failed to enable btcoex: %d\n", ret);
+   ath10k_warn(ar, "failed to enable btcoex: %ld\n", ret);
ret = count;
goto exit;
}
@@ -2103,19 +2096,12 @@ static ssize_t ath10k_write_peer_stats(struct file 
*file,
   size_t count, loff_t *ppos)
 {
struct ath10k *ar = file->private_data;
-   char buf[32];
-   size_t buf_size;
-   int ret;
+   ssize_t ret;
bool val;
 
-   buf_size = min(count, (sizeof(buf) - 1));
-   if (copy_from_user(buf, ubuf, buf_size))
-   return -EFAULT;
-
-   buf[buf_size] = '\0';
-
-   if (kstrtobool(buf, &val) != 0)
-   return -EINVAL;
+   ret = kstrtobool_from_user(ubuf, count, &val);
+   if (ret)
+   return ret;
 
mutex_lock(&ar->conf_mutex);
 
@@ -2239,21 +2225,16 @@ static ssize_t ath10k_sta_tid_stats_mask_write(struct 
file *file,
   size_t count, loff_t *ppos)
 {
struct ath10k *ar = file->private_data;
-   char buf[32];
-   ssize_t len;
+   ssize_t ret;
u32 mask;
 
-   len = min(count, sizeof(buf) - 1);
-   if (copy_from_user(buf, user_buf, len))
-   return -EFAULT;
-
-   buf[len] = '\0';
-   if (kstrtoint(buf, 0, &mask))
-   return -EINVAL;
+   ret = kstrtoint_from_user(user_buf, count, 0, &mask);
+   if (ret)
+   return ret;
 
ar->sta_tid_stats_mask = mask;
 
-   return len;
+   return count;
 }
 
 static const struct file_operations fops_sta_tid_stats_mask = {
diff --git a/drivers/net/wireless/ath/ath10k/spectral.c 
b/drivers/net/wireless/ath/ath10k/spectral.c
index 68254a967ccb..2240994390ed 100644
--- a/drivers/net/wireless/ath/ath10k/spectral.c
+++ b/drivers/net/wireless/ath/ath10k/spectral.c
@@ -384,16 +384,11 @@ static ssize_t write_file_spectral_count(struct file 
*file,
 {
struct ath10k *ar = file->private_data;
unsigned long val;
-   char buf[32];
-   ssize_t len;
-
-   len = min(count, sizeof(buf) - 1);
-   if (copy_from_user(buf, user_buf, len))
-   return -EFAULT;
+   ssize_t ret;
 
-   buf[len] = '\0';
-   if (kstrtoul(buf, 0, &val))
-   return -EINVAL;
+   ret = kstrtoul_from_user(user_buf, count, 0, &val);
+   if (ret)
+   return ret;
 
if (val > 255)
return -EINVAL;
@@ -440,16 +435,11 @@ static ssize_t write_file_spectral_bins(struct file *file,
 {
struct ath10k *ar = file->private_data;
unsigned long val;
-   char buf[32];
-   ssize_t len;
-
-   len = min(count, sizeof(buf) - 1);
-   if (copy_from_user(buf, user_buf, len))
-   return -EFAULT;
+   ssize_t ret;
 
-   buf[len] = '\0';
-   if (kstrtoul(buf, 0, &val))
-   return -EINVAL;
+   ret = kstrtoul_from_user(user_buf, count, 0, &val);
+   if (ret)
+   return ret;
 
if (val < 64 || val > SPECTRAL_ATH10K_MAX_NUM_BINS)
return -EINVAL;
-- 
2.41.0


___
ath10k mailing list
ath10k@lists.infradead.org
http://lists.

Re: [PATCH 1/6] [v3] wifi: ath10k: cleanup CE ring initialization

2023-09-20 Thread Kalle Valo
Dmitry Antipov  writes:

> Commit 25d0dbcbd5c7 ("ath10k: split ce initialization and allocation")
> changes 'ath10k_ce_init_src_ring()' and 'ath10k_ce_init_dest_ring()'
> so these functions can't return -ENOMEM but always returns 0. This way
> both of them may be converted to 'void', and 'ath10k_ce_init_pipe()'
> may be simplified accordingly.
>
> Found by Linux Verification Center (linuxtesting.org) with SVACE.
>
> Signed-off-by: Dmitry Antipov 
> ---
> v3: split to smaller units per Jeff's suggestion
> v2: change 'ath10k_ce_alloc_rri()' to return -ENOMEM in case
> of 'dma_alloc_coherent()' failure and fix error handling in
> 'ath10k_snoc_hif_power_up()'

[...]

> -static int ath10k_ce_init_src_ring(struct ath10k *ar,
> -unsigned int ce_id,
> -const struct ce_attr *attr)
> +static void ath10k_ce_init_src_ring(struct ath10k *ar,
> + unsigned int ce_id,
> + const struct ce_attr *attr)

I have on purpose avoided to use void functions in ath10k/ath11k/ath12k.
The problem is that if some of the functions return void and some of the
functions return int it's much harder to review the code. If most/all of
the functions return the same error value type as int it makes a lot
easier to read the code.

Is there a benefit from function returning void? Why do this in the
first place?

-- 
https://patchwork.kernel.org/project/linux-wireless/list/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches

___
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k


Re: [PATCH] wifi: ath10k: fix clang-specific fortify warning

2023-09-20 Thread Kalle Valo
Dmitry Antipov  wrote:

> When compiling with clang 16.0.6 and CONFIG_FORTIFY_SOURCE=y, I've
> noticed the following (somewhat confusing due to absence of an actual
> source code location):
> 
> In file included from drivers/net/wireless/ath/ath10k/debug.c:8:
> In file included from ./include/linux/module.h:13:
> In file included from ./include/linux/stat.h:19:
> In file included from ./include/linux/time.h:60:
> In file included from ./include/linux/time32.h:13:
> In file included from ./include/linux/timex.h:67:
> In file included from ./arch/x86/include/asm/timex.h:5:
> In file included from ./arch/x86/include/asm/processor.h:23:
> In file included from ./arch/x86/include/asm/msr.h:11:
> In file included from ./arch/x86/include/asm/cpumask.h:5:
> In file included from ./include/linux/cpumask.h:12:
> In file included from ./include/linux/bitmap.h:11:
> In file included from ./include/linux/string.h:254:
> ./include/linux/fortify-string.h:592:4: warning: call to 
> '__read_overflow2_field'
> declared with 'warning' attribute: detected read beyond size of field (2nd
> parameter); maybe use struct_group()? [-Wattribute-warning]
> __read_overflow2_field(q_size_field, size);
> 
> The compiler actually complains on 'ath10k_debug_get_et_strings()' where
> fortification logic inteprets call to 'memcpy()' as an attempt to copy
> the whole 'ath10k_gstrings_stats' array from it's first member and so
> issues an overread warning. This warning may be silenced by passing
> an address of the whole array and not the first member to 'memcpy()'.
> 
> Signed-off-by: Dmitry Antipov 
> Acked-by: Jeff Johnson 
> Signed-off-by: Kalle Valo 

Patch applied to ath-next branch of ath.git, thanks.

cb4c132ebfea wifi: ath10k: fix clang-specific fortify warning

-- 
https://patchwork.kernel.org/project/linux-wireless/patch/20230829093652.234537-1-dmanti...@yandex.ru/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches


___
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k


Re: [PATCH] wifi: ath10k: consistently use kstrtoX_from_user() functions

2023-09-20 Thread kernel test robot
Hi Dmitry,

kernel test robot noticed the following build warnings:

[auto build test WARNING on kvalo-ath/ath-next]
[also build test WARNING on wireless-next/main wireless/main linus/master 
v6.6-rc2 next-20230920]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:
https://github.com/intel-lab-lkp/linux/commits/Dmitry-Antipov/wifi-ath10k-consistently-use-kstrtoX_from_user-functions/20230920-195625
base:   https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git ath-next
patch link:
https://lore.kernel.org/r/20230920115249.38296-1-dmantipov%40yandex.ru
patch subject: [PATCH] wifi: ath10k: consistently use kstrtoX_from_user() 
functions
config: parisc-allyesconfig 
(https://download.01.org/0day-ci/archive/20230920/202309202242.glxozks6-...@intel.com/config)
compiler: hppa-linux-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): 
(https://download.01.org/0day-ci/archive/20230920/202309202242.glxozks6-...@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 
| Closes: 
https://lore.kernel.org/oe-kbuild-all/202309202242.glxozks6-...@intel.com/

All warnings (new ones prefixed by >>):

   drivers/net/wireless/ath/ath10k/debug.c: In function 'ath10k_write_btcoex':
>> drivers/net/wireless/ath/ath10k/debug.c:1996:69: warning: format '%ld' 
>> expects argument of type 'long int', but argument 3 has type 'ssize_t' {aka 
>> 'int'} [-Wformat=]
1996 | ath10k_warn(ar, "failed to enable btcoex: 
%ld\n", ret);
 |   
~~^ ~~~
 | 
| |
 | 
| ssize_t {aka int}
 | 
long int
 |   %d


vim +1996 drivers/net/wireless/ath/ath10k/debug.c

  1961  
  1962  static ssize_t ath10k_write_btcoex(struct file *file,
  1963 const char __user *ubuf,
  1964 size_t count, loff_t *ppos)
  1965  {
  1966  struct ath10k *ar = file->private_data;
  1967  ssize_t ret;
  1968  bool val;
  1969  u32 pdev_param;
  1970  
  1971  ret = kstrtobool_from_user(ubuf, count, &val);
  1972  if (ret)
  1973  return ret;
  1974  
  1975  if (!ar->coex_support)
  1976  return -EOPNOTSUPP;
  1977  
  1978  mutex_lock(&ar->conf_mutex);
  1979  
  1980  if (ar->state != ATH10K_STATE_ON &&
  1981  ar->state != ATH10K_STATE_RESTARTED) {
  1982  ret = -ENETDOWN;
  1983  goto exit;
  1984  }
  1985  
  1986  if (!(test_bit(ATH10K_FLAG_BTCOEX, &ar->dev_flags) ^ val)) {
  1987  ret = count;
  1988  goto exit;
  1989  }
  1990  
  1991  pdev_param = ar->wmi.pdev_param->enable_btcoex;
  1992  if (test_bit(ATH10K_FW_FEATURE_BTCOEX_PARAM,
  1993   ar->running_fw->fw_file.fw_features)) {
  1994  ret = ath10k_wmi_pdev_set_param(ar, pdev_param, val);
  1995  if (ret) {
> 1996  ath10k_warn(ar, "failed to enable btcoex: 
> %ld\n", ret);
  1997  ret = count;
  1998  goto exit;
  1999  }
  2000  } else {
  2001  ath10k_info(ar, "restarting firmware due to btcoex 
change");
  2002  ath10k_core_start_recovery(ar);
  2003  }
  2004  
  2005  if (val)
  2006  set_bit(ATH10K_FLAG_BTCOEX, &ar->dev_flags);
  2007  else
  2008  clear_bit(ATH10K_FLAG_BTCOEX, &ar->dev_flags);
  2009  
  2010  ret = count;
  2011  
  2012  exit:
  2013  mutex_unlock(&ar->conf_mutex);
  2014  
  2015  return ret;
  2016  }
  2017  

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

___
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k


[PATCH] [v2] wifi: ath10k: consistently use kstrtoX_from_user() functions

2023-09-20 Thread Dmitry Antipov
Use 'kstrtoul_from_user()', 'kstrtobool_from_user()' and
'kstrtoint_from_user()' where appropriate and thus avoid
some code duplication.

Signed-off-by: Dmitry Antipov 
---
v2: fix ath10k_warn() format specifier (kernel test robot)
---
 drivers/net/wireless/ath/ath10k/debug.c| 47 +++---
 drivers/net/wireless/ath/ath10k/spectral.c | 26 
 2 files changed, 22 insertions(+), 51 deletions(-)

diff --git a/drivers/net/wireless/ath/ath10k/debug.c 
b/drivers/net/wireless/ath/ath10k/debug.c
index f9518e1c9903..5a8c74db974d 100644
--- a/drivers/net/wireless/ath/ath10k/debug.c
+++ b/drivers/net/wireless/ath/ath10k/debug.c
@@ -1964,20 +1964,13 @@ static ssize_t ath10k_write_btcoex(struct file *file,
   size_t count, loff_t *ppos)
 {
struct ath10k *ar = file->private_data;
-   char buf[32];
-   size_t buf_size;
-   int ret;
+   ssize_t ret;
bool val;
u32 pdev_param;
 
-   buf_size = min(count, (sizeof(buf) - 1));
-   if (copy_from_user(buf, ubuf, buf_size))
-   return -EFAULT;
-
-   buf[buf_size] = '\0';
-
-   if (kstrtobool(buf, &val) != 0)
-   return -EINVAL;
+   ret = kstrtobool_from_user(ubuf, count, &val);
+   if (ret)
+   return ret;
 
if (!ar->coex_support)
return -EOPNOTSUPP;
@@ -2000,7 +1993,7 @@ static ssize_t ath10k_write_btcoex(struct file *file,
 ar->running_fw->fw_file.fw_features)) {
ret = ath10k_wmi_pdev_set_param(ar, pdev_param, val);
if (ret) {
-   ath10k_warn(ar, "failed to enable btcoex: %d\n", ret);
+   ath10k_warn(ar, "failed to enable btcoex: %zd\n", ret);
ret = count;
goto exit;
}
@@ -2103,19 +2096,12 @@ static ssize_t ath10k_write_peer_stats(struct file 
*file,
   size_t count, loff_t *ppos)
 {
struct ath10k *ar = file->private_data;
-   char buf[32];
-   size_t buf_size;
-   int ret;
+   ssize_t ret;
bool val;
 
-   buf_size = min(count, (sizeof(buf) - 1));
-   if (copy_from_user(buf, ubuf, buf_size))
-   return -EFAULT;
-
-   buf[buf_size] = '\0';
-
-   if (kstrtobool(buf, &val) != 0)
-   return -EINVAL;
+   ret = kstrtobool_from_user(ubuf, count, &val);
+   if (ret)
+   return ret;
 
mutex_lock(&ar->conf_mutex);
 
@@ -2239,21 +2225,16 @@ static ssize_t ath10k_sta_tid_stats_mask_write(struct 
file *file,
   size_t count, loff_t *ppos)
 {
struct ath10k *ar = file->private_data;
-   char buf[32];
-   ssize_t len;
+   ssize_t ret;
u32 mask;
 
-   len = min(count, sizeof(buf) - 1);
-   if (copy_from_user(buf, user_buf, len))
-   return -EFAULT;
-
-   buf[len] = '\0';
-   if (kstrtoint(buf, 0, &mask))
-   return -EINVAL;
+   ret = kstrtoint_from_user(user_buf, count, 0, &mask);
+   if (ret)
+   return ret;
 
ar->sta_tid_stats_mask = mask;
 
-   return len;
+   return count;
 }
 
 static const struct file_operations fops_sta_tid_stats_mask = {
diff --git a/drivers/net/wireless/ath/ath10k/spectral.c 
b/drivers/net/wireless/ath/ath10k/spectral.c
index 68254a967ccb..2240994390ed 100644
--- a/drivers/net/wireless/ath/ath10k/spectral.c
+++ b/drivers/net/wireless/ath/ath10k/spectral.c
@@ -384,16 +384,11 @@ static ssize_t write_file_spectral_count(struct file 
*file,
 {
struct ath10k *ar = file->private_data;
unsigned long val;
-   char buf[32];
-   ssize_t len;
-
-   len = min(count, sizeof(buf) - 1);
-   if (copy_from_user(buf, user_buf, len))
-   return -EFAULT;
+   ssize_t ret;
 
-   buf[len] = '\0';
-   if (kstrtoul(buf, 0, &val))
-   return -EINVAL;
+   ret = kstrtoul_from_user(user_buf, count, 0, &val);
+   if (ret)
+   return ret;
 
if (val > 255)
return -EINVAL;
@@ -440,16 +435,11 @@ static ssize_t write_file_spectral_bins(struct file *file,
 {
struct ath10k *ar = file->private_data;
unsigned long val;
-   char buf[32];
-   ssize_t len;
-
-   len = min(count, sizeof(buf) - 1);
-   if (copy_from_user(buf, user_buf, len))
-   return -EFAULT;
+   ssize_t ret;
 
-   buf[len] = '\0';
-   if (kstrtoul(buf, 0, &val))
-   return -EINVAL;
+   ret = kstrtoul_from_user(user_buf, count, 0, &val);
+   if (ret)
+   return ret;
 
if (val < 64 || val > SPECTRAL_ATH10K_MAX_NUM_BINS)
return -EINVAL;
-- 
2.41.0


___
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k


Re: [PATCH 5/5] ath10k: reduce invalid ht params rate message noise

2023-09-20 Thread James Prestwood

On 2/26/21 10:01 AM, Shuah Khan wrote:

On 2/11/21 4:24 AM, Kalle Valo wrote:

Shuah Khan  writes:


On 2/10/21 1:28 AM, Kalle Valo wrote:

Wen Gong  writes:


On 2021-02-10 08:42, Shuah Khan wrote:

ath10k_mac_get_rate_flags_ht() floods dmesg with the following
messages,
when it fails to find a match for mcs=7 and rate=1440.

supported_ht_mcs_rate_nss2:
{7,  {1300, 2700, 1444, 3000} }

ath10k_pci :02:00.0: invalid ht params rate 1440 100kbps nss 2
mcs 7

dev_warn_ratelimited() isn't helping the noise. Use dev_warn_once()
instead.

Signed-off-by: Shuah Khan 
---
   drivers/net/wireless/ath/ath10k/mac.c | 5 +++--
   1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wireless/ath/ath10k/mac.c
b/drivers/net/wireless/ath/ath10k/mac.c
index 3545ce7dce0a..276321f0cfdd 100644
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
@@ -8970,8 +8970,9 @@ static void 
ath10k_mac_get_rate_flags_ht(struct

ath10k *ar, u32 rate, u8 nss, u8
   *bw |= RATE_INFO_BW_40;
   *flags |= RATE_INFO_FLAGS_SHORT_GI;
   } else {
-    ath10k_warn(ar, "invalid ht params rate %d 100kbps nss 
%d mcs %d",

-    rate, nss, mcs);
+    dev_warn_once(ar->dev,
+  "invalid ht params rate %d 100kbps nss %d mcs 
%d",

+  rate, nss, mcs);
   }
   }


The {7,  {1300, 2700, 1444, 3000} } is a correct value.
The 1440 is report from firmware, its a wrong value, it has fixed in
firmware.


In what version?



Here is the info:

ath10k_pci :02:00.0: qca6174 hw3.2 target 0x0503 chip_id
0x00340aff sub 17aa:0827

ath10k_pci :02:00.0: firmware ver WLAN.RM.4.4.1-00140-QCARMSWPZ-1
api 6 features wowlan,ignore-otp,mfp crc32 29eb8ca1

ath10k_pci :02:00.0: board_file api 2 bmi_id N/A crc32 4ac0889b

ath10k_pci :02:00.0: htt-ver 3.60 wmi-op 4 htt-op 3 cal otp
max-sta 32 raw 0 hwcrypto 1

If change it to dev_warn_once, then it will have no chance to find 
the

other wrong values which report by firmware, and it indicate
a wrong value to mac80211/cfg80211 and lead "iw wlan0 station dump"
get a wrong bitrate.




Agreed.


I agree, we should keep this warning. If the firmware still keeps
sending invalid rates we should add a specific check to ignore the 
known

invalid values, but not all of them.



Would it be helpful to adjust the default rate limits and set the to
a higher value instead. It might be difficult to account all possible
invalid values?

Something like, ath10k_warn_ratelimited() to adjust the

DEFAULT_RATELIMIT_INTERVAL and DEFAULT_RATELIMIT_BURST using
DEFINE_RATELIMIT_STATE

Let me know if you like this idea. I can send a patch in to do this.
I will hang on to this firmware version for a little but longer, so
we have a test case. :)


I would rather first try to fix the root cause, which is the firmware
sending invalid rates. Wen, you mentioned there's a fix in firmware. Do
you know which firmware version (and branch) has the fix?



Picking this back up. Wen, which firmware version has this fix? I can
test this on my system and get rid of the noisy messages. :)

thanks,
-- Shuah


I know its been years, but reading through this Wen mentioned there is a 
fix in the firmware? I haven't tried all of the firmware binaries in 
Kalle's tree but the most recent definitely still spam the logs with 
this message. Is there a specific version I can use to get rid of these?


One thing to note is the older "firmware-4.bin" did not have this 
problem, but was met with worse problems like driver/firmware crashes.


Thanks,

James



___
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k



___
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k


Re: [PATCH v2 wireless-next 6/9] wifi: ath10k: Remove unnecessary (void*) conversions

2023-09-20 Thread Jeff Johnson

On 9/18/2023 9:50 PM, Wu Yunchuan wrote:

No need cast (void*) to (struct htt_rx_ring_setup_ring32 *),
(struct htt_rx_ring_setup_ring64 *). Change the prototype to
remove the local variable.

Signed-off-by: Wu Yunchuan 
Suggested-by: Jeff Johnson 


Ideally your Signed-off-by: should be the last tag you add, but in this 
context I don't think it matters.


Acked-by: Jeff Johnson 



___
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k


Re: [PATCH] [v2] wifi: ath10k: consistently use kstrtoX_from_user() functions

2023-09-20 Thread Jeff Johnson

On 9/20/2023 8:39 AM, Dmitry Antipov wrote:

Use 'kstrtoul_from_user()', 'kstrtobool_from_user()' and
'kstrtoint_from_user()' where appropriate and thus avoid
some code duplication.

Signed-off-by: Dmitry Antipov 


...


+   ssize_t ret;


curious why you changed this, especially given that you were bitten by 
the format change required. I would have left this as int and just let 
it promote to size_t or ssize_t as needed.


That said:
Acked-by: Jeff Johnson 

P.S.:
> Hopefully this doesn't violate "if it isn't broke, don't fix
> it" rule (the same thing was recently accepted for ath9k).

Patches that are very self-contained are more likely to be reviewed and 
accepted. But the maintainers don't have infinite bandwidth...


/jeff

___
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k


Re: [PATCH 5/5] ath10k: reduce invalid ht params rate message noise

2023-09-20 Thread Jeff Johnson

(just a resend with Wen's current e-mail address, no further comments)
On 9/20/2023 11:27 AM, James Prestwood wrote:

On 2/26/21 10:01 AM, Shuah Khan wrote:

On 2/11/21 4:24 AM, Kalle Valo wrote:

Shuah Khan  writes:


On 2/10/21 1:28 AM, Kalle Valo wrote:

Wen Gong  writes:


On 2021-02-10 08:42, Shuah Khan wrote:

ath10k_mac_get_rate_flags_ht() floods dmesg with the following
messages,
when it fails to find a match for mcs=7 and rate=1440.

supported_ht_mcs_rate_nss2:
{7,  {1300, 2700, 1444, 3000} }

ath10k_pci :02:00.0: invalid ht params rate 1440 100kbps nss 2
mcs 7

dev_warn_ratelimited() isn't helping the noise. Use dev_warn_once()
instead.

Signed-off-by: Shuah Khan 
---
   drivers/net/wireless/ath/ath10k/mac.c | 5 +++--
   1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wireless/ath/ath10k/mac.c
b/drivers/net/wireless/ath/ath10k/mac.c
index 3545ce7dce0a..276321f0cfdd 100644
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
@@ -8970,8 +8970,9 @@ static void 
ath10k_mac_get_rate_flags_ht(struct

ath10k *ar, u32 rate, u8 nss, u8
   *bw |= RATE_INFO_BW_40;
   *flags |= RATE_INFO_FLAGS_SHORT_GI;
   } else {
-    ath10k_warn(ar, "invalid ht params rate %d 100kbps nss 
%d mcs %d",

-    rate, nss, mcs);
+    dev_warn_once(ar->dev,
+  "invalid ht params rate %d 100kbps nss %d mcs 
%d",

+  rate, nss, mcs);
   }
   }


The {7,  {1300, 2700, 1444, 3000} } is a correct value.
The 1440 is report from firmware, its a wrong value, it has fixed in
firmware.


In what version?



Here is the info:

ath10k_pci :02:00.0: qca6174 hw3.2 target 0x0503 chip_id
0x00340aff sub 17aa:0827

ath10k_pci :02:00.0: firmware ver WLAN.RM.4.4.1-00140-QCARMSWPZ-1
api 6 features wowlan,ignore-otp,mfp crc32 29eb8ca1

ath10k_pci :02:00.0: board_file api 2 bmi_id N/A crc32 4ac0889b

ath10k_pci :02:00.0: htt-ver 3.60 wmi-op 4 htt-op 3 cal otp
max-sta 32 raw 0 hwcrypto 1

If change it to dev_warn_once, then it will have no chance to find 
the

other wrong values which report by firmware, and it indicate
a wrong value to mac80211/cfg80211 and lead "iw wlan0 station dump"
get a wrong bitrate.




Agreed.


I agree, we should keep this warning. If the firmware still keeps
sending invalid rates we should add a specific check to ignore the 
known

invalid values, but not all of them.



Would it be helpful to adjust the default rate limits and set the to
a higher value instead. It might be difficult to account all possible
invalid values?

Something like, ath10k_warn_ratelimited() to adjust the

DEFAULT_RATELIMIT_INTERVAL and DEFAULT_RATELIMIT_BURST using
DEFINE_RATELIMIT_STATE

Let me know if you like this idea. I can send a patch in to do this.
I will hang on to this firmware version for a little but longer, so
we have a test case. :)


I would rather first try to fix the root cause, which is the firmware
sending invalid rates. Wen, you mentioned there's a fix in firmware. Do
you know which firmware version (and branch) has the fix?



Picking this back up. Wen, which firmware version has this fix? I can
test this on my system and get rid of the noisy messages. :)

thanks,
-- Shuah


I know its been years, but reading through this Wen mentioned there is a 
fix in the firmware? I haven't tried all of the firmware binaries in 
Kalle's tree but the most recent definitely still spam the logs with 
this message. Is there a specific version I can use to get rid of these?


One thing to note is the older "firmware-4.bin" did not have this 
problem, but was met with worse problems like driver/firmware crashes.



___
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k


[kvalo-ath:ath-next] BUILD SUCCESS cb4c132ebfeac5962f7258ffc831caa0c4dada1a

2023-09-20 Thread kernel test robot
tree/branch: https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git 
ath-next
branch HEAD: cb4c132ebfeac5962f7258ffc831caa0c4dada1a  wifi: ath10k: fix 
clang-specific fortify warning

elapsed time: 722m

configs tested: 135
configs skipped: 2

The following configs have been built successfully.
More configs may be tested in the coming days.

tested configs:
alpha allnoconfig   gcc  
alphaallyesconfig   gcc  
alpha   defconfig   gcc  
arc  allmodconfig   gcc  
arc   allnoconfig   gcc  
arc  allyesconfig   gcc  
arc defconfig   gcc  
arc   randconfig-001-20230921   gcc  
arm  allmodconfig   gcc  
arm   allnoconfig   gcc  
arm  allyesconfig   gcc  
arm defconfig   gcc  
arm   randconfig-001-20230921   gcc  
arm64allmodconfig   gcc  
arm64 allnoconfig   gcc  
arm64allyesconfig   gcc  
arm64   defconfig   gcc  
csky allmodconfig   gcc  
csky  allnoconfig   gcc  
csky allyesconfig   gcc  
cskydefconfig   gcc  
i386 allmodconfig   gcc  
i386  allnoconfig   gcc  
i386 allyesconfig   gcc  
i386 buildonly-randconfig-001-20230921   gcc  
i386 buildonly-randconfig-002-20230921   gcc  
i386 buildonly-randconfig-003-20230921   gcc  
i386 buildonly-randconfig-004-20230921   gcc  
i386 buildonly-randconfig-005-20230921   gcc  
i386 buildonly-randconfig-006-20230921   gcc  
i386  debian-10.3   gcc  
i386defconfig   gcc  
i386  randconfig-001-20230921   gcc  
i386  randconfig-002-20230921   gcc  
i386  randconfig-003-20230921   gcc  
i386  randconfig-004-20230921   gcc  
i386  randconfig-005-20230921   gcc  
i386  randconfig-006-20230921   gcc  
i386  randconfig-011-20230921   gcc  
i386  randconfig-012-20230921   gcc  
i386  randconfig-013-20230921   gcc  
i386  randconfig-014-20230921   gcc  
i386  randconfig-015-20230921   gcc  
i386  randconfig-016-20230921   gcc  
loongarchallmodconfig   gcc  
loongarch allnoconfig   gcc  
loongarchallyesconfig   gcc  
loongarch   defconfig   gcc  
loongarch randconfig-001-20230921   gcc  
m68k allmodconfig   gcc  
m68k  allnoconfig   gcc  
m68k allyesconfig   gcc  
m68kdefconfig   gcc  
microblaze   allmodconfig   gcc  
microblazeallnoconfig   gcc  
microblaze   allyesconfig   gcc  
microblaze  defconfig   gcc  
mips allmodconfig   gcc  
mips  allnoconfig   gcc  
mips allyesconfig   gcc  
nios2allmodconfig   gcc  
nios2 allnoconfig   gcc  
nios2allyesconfig   gcc  
nios2   defconfig   gcc  
openrisc allmodconfig   gcc  
openrisc  allnoconfig   gcc  
openrisc allyesconfig   gcc  
openriscdefconfig   gcc  
parisc   allmodconfig   gcc  
pariscallnoconfig   gcc  
parisc   allyesconfig   gcc  
parisc  defconfig   gcc  
parisc64defconfig   gcc  
powerpc  allmodconfig   gcc  
powerpc   allnoconfig   gcc  
powerpc  allyesconfig   gcc  
riscvallmodconfig   gcc  
riscv allnoconfig   gcc  
riscvallyesconfig   gcc  
riscv   defconfig   gcc  
riscv randconfig-001-20230921   gcc  
riscv  rv32_defconfig   gcc  
s390 allmodconfig   gcc  
s390  allnoconfig   gcc  
s390 allyesconfig   gcc  
s390

[kvalo-ath:master] BUILD SUCCESS 928e3d18bf568970b23d53c9c7ae8d56952352ff

2023-09-20 Thread kernel test robot
tree/branch: https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git 
master
branch HEAD: 928e3d18bf568970b23d53c9c7ae8d56952352ff  Revert "PCI: Release 
resource invalidated by coalescing"

elapsed time: 722m

configs tested: 135
configs skipped: 2

The following configs have been built successfully.
More configs may be tested in the coming days.

tested configs:
alpha allnoconfig   gcc  
alphaallyesconfig   gcc  
alpha   defconfig   gcc  
arc  allmodconfig   gcc  
arc   allnoconfig   gcc  
arc  allyesconfig   gcc  
arc defconfig   gcc  
arc   randconfig-001-20230921   gcc  
arm  allmodconfig   gcc  
arm   allnoconfig   gcc  
arm  allyesconfig   gcc  
arm defconfig   gcc  
arm64allmodconfig   gcc  
arm64 allnoconfig   gcc  
arm64allyesconfig   gcc  
arm64   defconfig   gcc  
csky allmodconfig   gcc  
csky  allnoconfig   gcc  
csky allyesconfig   gcc  
cskydefconfig   gcc  
i386 allmodconfig   gcc  
i386  allnoconfig   gcc  
i386 allyesconfig   gcc  
i386 buildonly-randconfig-001-20230921   gcc  
i386 buildonly-randconfig-002-20230921   gcc  
i386 buildonly-randconfig-003-20230921   gcc  
i386 buildonly-randconfig-004-20230921   gcc  
i386 buildonly-randconfig-005-20230921   gcc  
i386 buildonly-randconfig-006-20230921   gcc  
i386  debian-10.3   gcc  
i386defconfig   gcc  
i386  randconfig-001-20230921   gcc  
i386  randconfig-002-20230921   gcc  
i386  randconfig-003-20230921   gcc  
i386  randconfig-004-20230921   gcc  
i386  randconfig-005-20230921   gcc  
i386  randconfig-006-20230921   gcc  
i386  randconfig-011-20230921   gcc  
i386  randconfig-012-20230921   gcc  
i386  randconfig-013-20230921   gcc  
i386  randconfig-014-20230921   gcc  
i386  randconfig-015-20230921   gcc  
i386  randconfig-016-20230921   gcc  
loongarchallmodconfig   gcc  
loongarch allnoconfig   gcc  
loongarchallyesconfig   gcc  
loongarch   defconfig   gcc  
loongarch randconfig-001-20230921   gcc  
m68k allmodconfig   gcc  
m68k  allnoconfig   gcc  
m68k allyesconfig   gcc  
m68kdefconfig   gcc  
microblaze   allmodconfig   gcc  
microblazeallnoconfig   gcc  
microblaze   allyesconfig   gcc  
microblaze  defconfig   gcc  
mips allmodconfig   gcc  
mips  allnoconfig   gcc  
mips allyesconfig   gcc  
nios2allmodconfig   gcc  
nios2 allnoconfig   gcc  
nios2allyesconfig   gcc  
nios2   defconfig   gcc  
openrisc allmodconfig   gcc  
openrisc  allnoconfig   gcc  
openrisc allyesconfig   gcc  
openriscdefconfig   gcc  
parisc   allmodconfig   gcc  
pariscallnoconfig   gcc  
parisc   allyesconfig   gcc  
parisc  defconfig   gcc  
parisc64defconfig   gcc  
powerpc  allmodconfig   gcc  
powerpc   allnoconfig   gcc  
powerpc  allyesconfig   gcc  
riscvallmodconfig   gcc  
riscv allnoconfig   gcc  
riscvallyesconfig   gcc  
riscv   defconfig   gcc  
riscv randconfig-001-20230921   gcc  
riscv  rv32_defconfig   gcc  
s390 allmodconfig   gcc  
s390  allnoconfig   gcc  
s390 allyesconfig   gcc  
s390defconfig   gcc  
s390  randconf

[kvalo-ath:ath-qca] BUILD SUCCESS 7d0675450235eb3d930483ca565d56aaad751edd

2023-09-20 Thread kernel test robot
tree/branch: https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git 
ath-qca
branch HEAD: 7d0675450235eb3d930483ca565d56aaad751edd  Merge branch 'ath-next' 
into ath-qca

elapsed time: 722m

configs tested: 136
configs skipped: 2

The following configs have been built successfully.
More configs may be tested in the coming days.

tested configs:
alpha allnoconfig   gcc  
alphaallyesconfig   gcc  
alpha   defconfig   gcc  
arc  allmodconfig   gcc  
arc   allnoconfig   gcc  
arc  allyesconfig   gcc  
arc defconfig   gcc  
arc   randconfig-001-20230921   gcc  
arm  allmodconfig   gcc  
arm   allnoconfig   gcc  
arm  allyesconfig   gcc  
arm defconfig   gcc  
arm   randconfig-001-20230921   gcc  
arm64allmodconfig   gcc  
arm64 allnoconfig   gcc  
arm64allyesconfig   gcc  
arm64   defconfig   gcc  
csky allmodconfig   gcc  
csky  allnoconfig   gcc  
csky allyesconfig   gcc  
cskydefconfig   gcc  
i386 allmodconfig   gcc  
i386  allnoconfig   gcc  
i386 allyesconfig   gcc  
i386 buildonly-randconfig-001-20230921   gcc  
i386 buildonly-randconfig-002-20230921   gcc  
i386 buildonly-randconfig-003-20230921   gcc  
i386 buildonly-randconfig-004-20230921   gcc  
i386 buildonly-randconfig-005-20230921   gcc  
i386 buildonly-randconfig-006-20230921   gcc  
i386  debian-10.3   gcc  
i386defconfig   gcc  
i386  randconfig-001-20230921   gcc  
i386  randconfig-002-20230921   gcc  
i386  randconfig-003-20230921   gcc  
i386  randconfig-004-20230921   gcc  
i386  randconfig-005-20230921   gcc  
i386  randconfig-006-20230921   gcc  
i386  randconfig-011-20230921   gcc  
i386  randconfig-012-20230921   gcc  
i386  randconfig-013-20230921   gcc  
i386  randconfig-014-20230921   gcc  
i386  randconfig-015-20230921   gcc  
i386  randconfig-016-20230921   gcc  
loongarchallmodconfig   gcc  
loongarch allnoconfig   gcc  
loongarchallyesconfig   gcc  
loongarch   defconfig   gcc  
loongarch randconfig-001-20230921   gcc  
m68k allmodconfig   gcc  
m68k  allnoconfig   gcc  
m68k allyesconfig   gcc  
m68kdefconfig   gcc  
microblaze   allmodconfig   gcc  
microblazeallnoconfig   gcc  
microblaze   allyesconfig   gcc  
microblaze  defconfig   gcc  
mips allmodconfig   gcc  
mips  allnoconfig   gcc  
mips allyesconfig   gcc  
nios2allmodconfig   gcc  
nios2 allnoconfig   gcc  
nios2allyesconfig   gcc  
nios2   defconfig   gcc  
openrisc allmodconfig   gcc  
openrisc  allnoconfig   gcc  
openrisc allyesconfig   gcc  
openriscdefconfig   gcc  
parisc   allmodconfig   gcc  
pariscallnoconfig   gcc  
parisc   allyesconfig   gcc  
parisc  defconfig   gcc  
parisc64defconfig   gcc  
powerpc  allmodconfig   gcc  
powerpc   allnoconfig   gcc  
powerpc  allyesconfig   gcc  
riscvallmodconfig   gcc  
riscv allnoconfig   gcc  
riscvallyesconfig   gcc  
riscv   defconfig   gcc  
riscv randconfig-001-20230921   gcc  
riscv  rv32_defconfig   gcc  
s390 allmodconfig   gcc  
s390  allnoconfig   gcc  
s390 allyesconfig   gcc  
s390defconfig   g

[kvalo-ath:pending] BUILD SUCCESS ddd71f306b9f6fd663cf260be6534651d13bc504

2023-09-20 Thread kernel test robot
tree/branch: https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git 
pending
branch HEAD: ddd71f306b9f6fd663cf260be6534651d13bc504  wifi: ath11k: drop NULL 
pointer check in ath11k_update_per_peer_tx_stats()

elapsed time: 741m

configs tested: 130
configs skipped: 2

The following configs have been built successfully.
More configs may be tested in the coming days.

tested configs:
alpha allnoconfig   gcc  
alphaallyesconfig   gcc  
alpha   defconfig   gcc  
arc  allmodconfig   gcc  
arc   allnoconfig   gcc  
arc  allyesconfig   gcc  
arc defconfig   gcc  
arc   randconfig-001-20230921   gcc  
arm  allmodconfig   gcc  
arm   allnoconfig   gcc  
arm  allyesconfig   gcc  
arm defconfig   gcc  
arm   randconfig-001-20230921   gcc  
arm64allmodconfig   gcc  
arm64 allnoconfig   gcc  
arm64allyesconfig   gcc  
arm64   defconfig   gcc  
csky allmodconfig   gcc  
csky  allnoconfig   gcc  
csky allyesconfig   gcc  
cskydefconfig   gcc  
i386 allmodconfig   gcc  
i386  allnoconfig   gcc  
i386 allyesconfig   gcc  
i386 buildonly-randconfig-001-20230921   gcc  
i386 buildonly-randconfig-002-20230921   gcc  
i386 buildonly-randconfig-003-20230921   gcc  
i386 buildonly-randconfig-004-20230921   gcc  
i386 buildonly-randconfig-005-20230921   gcc  
i386 buildonly-randconfig-006-20230921   gcc  
i386  debian-10.3   gcc  
i386defconfig   gcc  
i386  randconfig-001-20230921   gcc  
i386  randconfig-002-20230921   gcc  
i386  randconfig-003-20230921   gcc  
i386  randconfig-004-20230921   gcc  
i386  randconfig-005-20230921   gcc  
i386  randconfig-006-20230921   gcc  
i386  randconfig-011-20230921   gcc  
i386  randconfig-012-20230921   gcc  
i386  randconfig-013-20230921   gcc  
i386  randconfig-014-20230921   gcc  
i386  randconfig-015-20230921   gcc  
i386  randconfig-016-20230921   gcc  
loongarchallmodconfig   gcc  
loongarch allnoconfig   gcc  
loongarchallyesconfig   gcc  
loongarch   defconfig   gcc  
loongarch randconfig-001-20230921   gcc  
m68k allmodconfig   gcc  
m68k  allnoconfig   gcc  
m68k allyesconfig   gcc  
m68kdefconfig   gcc  
microblaze   allmodconfig   gcc  
microblazeallnoconfig   gcc  
microblaze   allyesconfig   gcc  
microblaze  defconfig   gcc  
mips allmodconfig   gcc  
mips  allnoconfig   gcc  
mips allyesconfig   gcc  
nios2allmodconfig   gcc  
nios2 allnoconfig   gcc  
nios2allyesconfig   gcc  
nios2   defconfig   gcc  
openrisc allmodconfig   gcc  
openrisc  allnoconfig   gcc  
openrisc allyesconfig   gcc  
openriscdefconfig   gcc  
parisc   allmodconfig   gcc  
pariscallnoconfig   gcc  
parisc   allyesconfig   gcc  
parisc  defconfig   gcc  
parisc64defconfig   gcc  
powerpc  allmodconfig   gcc  
powerpc   allnoconfig   gcc  
powerpc  allyesconfig   gcc  
riscvallmodconfig   gcc  
riscv allnoconfig   gcc  
riscvallyesconfig   gcc  
riscv   defconfig   gcc  
riscv randconfig-001-20230921   gcc  
riscv  rv32_defconfig   gcc  
s390 allmodconfig   gcc  
s390  allnoconfig   gcc  
s390 allyesconfig   gcc  
s390   

[kvalo-ath:master-pending] BUILD SUCCESS 34f71f7b0f654f5d381fa89d5f56cdd03bfd4bd0

2023-09-20 Thread kernel test robot
tree/branch: https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git 
master-pending
branch HEAD: 34f71f7b0f654f5d381fa89d5f56cdd03bfd4bd0  Merge branch 'pending' 
into master-pending

elapsed time: 777m

configs tested: 136
configs skipped: 2

The following configs have been built successfully.
More configs may be tested in the coming days.

tested configs:
alpha allnoconfig   gcc  
alphaallyesconfig   gcc  
alpha   defconfig   gcc  
arc  allmodconfig   gcc  
arc   allnoconfig   gcc  
arc  allyesconfig   gcc  
arc defconfig   gcc  
arc   randconfig-001-20230921   gcc  
arm  allmodconfig   gcc  
arm   allnoconfig   gcc  
arm  allyesconfig   gcc  
arm defconfig   gcc  
arm   randconfig-001-20230921   gcc  
arm64allmodconfig   gcc  
arm64 allnoconfig   gcc  
arm64allyesconfig   gcc  
arm64   defconfig   gcc  
csky allmodconfig   gcc  
csky  allnoconfig   gcc  
csky allyesconfig   gcc  
cskydefconfig   gcc  
i386 allmodconfig   gcc  
i386  allnoconfig   gcc  
i386 allyesconfig   gcc  
i386 buildonly-randconfig-001-20230921   gcc  
i386 buildonly-randconfig-002-20230921   gcc  
i386 buildonly-randconfig-003-20230921   gcc  
i386 buildonly-randconfig-004-20230921   gcc  
i386 buildonly-randconfig-005-20230921   gcc  
i386 buildonly-randconfig-006-20230921   gcc  
i386  debian-10.3   gcc  
i386defconfig   gcc  
i386  randconfig-001-20230921   gcc  
i386  randconfig-002-20230921   gcc  
i386  randconfig-003-20230921   gcc  
i386  randconfig-004-20230921   gcc  
i386  randconfig-005-20230921   gcc  
i386  randconfig-006-20230921   gcc  
i386  randconfig-011-20230921   gcc  
i386  randconfig-012-20230921   gcc  
i386  randconfig-013-20230921   gcc  
i386  randconfig-014-20230921   gcc  
i386  randconfig-015-20230921   gcc  
i386  randconfig-016-20230921   gcc  
loongarchallmodconfig   gcc  
loongarch allnoconfig   gcc  
loongarchallyesconfig   gcc  
loongarch   defconfig   gcc  
loongarch randconfig-001-20230921   gcc  
m68k allmodconfig   gcc  
m68k  allnoconfig   gcc  
m68k allyesconfig   gcc  
m68kdefconfig   gcc  
microblaze   allmodconfig   gcc  
microblazeallnoconfig   gcc  
microblaze   allyesconfig   gcc  
microblaze  defconfig   gcc  
mips allmodconfig   gcc  
mips  allnoconfig   gcc  
mips allyesconfig   gcc  
nios2allmodconfig   gcc  
nios2 allnoconfig   gcc  
nios2allyesconfig   gcc  
nios2   defconfig   gcc  
openrisc allmodconfig   gcc  
openrisc  allnoconfig   gcc  
openrisc allyesconfig   gcc  
openriscdefconfig   gcc  
parisc   allmodconfig   gcc  
pariscallnoconfig   gcc  
parisc   allyesconfig   gcc  
parisc  defconfig   gcc  
parisc64defconfig   gcc  
powerpc  allmodconfig   gcc  
powerpc   allnoconfig   gcc  
powerpc  allyesconfig   gcc  
riscvallmodconfig   gcc  
riscv allnoconfig   gcc  
riscvallyesconfig   gcc  
riscv   defconfig   gcc  
riscv randconfig-001-20230921   gcc  
riscv  rv32_defconfig   gcc  
s390 allmodconfig   gcc  
s390  allnoconfig   gcc  
s390 allyesconfig   gcc  
s390