eal: allow both allow and block options coexistence
Checks
Commit Message
Currently, all buses use the same eal allow and block options. Need to
allow both allow and block options for different buses to coexist.
It wouldn't be a problem for pci bus if both allow and block options
were present. When the first option occurs, the scan mode for pci bus is
set.
For example:
--allow 0000:05:00.0 --block wq0.0
only pci device 0000:05:00.0 will be scanned
all devices except wq0.0 on dsa bus will be scanned
--allow 0000:05:00.0 --block 0000:05:00.1
block option will be ignored
--block 0000:05:00.1 --allow 0000:05:00.0
allow option will be ignored
Signed-off-by: Marvin Liu <yong.liu@intel.com>
---
.mailmap | 2 +-
lib/eal/common/eal_common_options.c | 14 --------------
2 files changed, 1 insertion(+), 15 deletions(-)
Comments
07/07/2023 07:07, Marvin Liu:
> Currently, all buses use the same eal allow and block options. Need to
> allow both allow and block options for different buses to coexist.
> It wouldn't be a problem for pci bus if both allow and block options
> were present. When the first option occurs, the scan mode for pci bus is
> set.
>
> For example:
> --allow 0000:05:00.0 --block wq0.0
> only pci device 0000:05:00.0 will be scanned
> all devices except wq0.0 on dsa bus will be scanned
> --allow 0000:05:00.0 --block 0000:05:00.1
> block option will be ignored
> --block 0000:05:00.1 --allow 0000:05:00.0
> allow option will be ignored
It is wrong to ignore a user parameter silently.
Also, it would be clearer to use the new devargs syntax
with bus=pci,addr=0000:05:00.0
@@ -1548,7 +1548,7 @@ Yogesh Jangra <yogesh.jangra@intel.com>
Yogev Chaimovich <yogev@cgstowernetworks.com>
Yongjie Gu <yongjiex.gu@intel.com>
Yongji Xie <xieyongji@baidu.com>
-Yong Liu <yong.liu@intel.com>
+Marvin Liu <yong.liu@intel.com>
Yongping Zhang <yongping.zhang@broadcom.com>
Yongseok Koh <yskoh@mellanox.com>
Yong Wang <wang.yong19@zte.com.cn> <yongwang@vmware.com>
@@ -1623,24 +1623,15 @@ int
eal_parse_common_option(int opt, const char *optarg,
struct internal_config *conf)
{
- static int b_used;
- static int a_used;
-
switch (opt) {
case 'b':
- if (a_used)
- goto ba_conflict;
if (eal_option_device_add(RTE_DEVTYPE_BLOCKED, optarg) < 0)
return -1;
- b_used = 1;
break;
case 'a':
- if (b_used)
- goto ba_conflict;
if (eal_option_device_add(RTE_DEVTYPE_ALLOWED, optarg) < 0)
return -1;
- a_used = 1;
break;
/* coremask */
case 'c': {
@@ -1929,11 +1920,6 @@ eal_parse_common_option(int opt, const char *optarg,
}
return 0;
-
-ba_conflict:
- RTE_LOG(ERR, EAL,
- "Options allow (-a) and block (-b) can't be used at the same time\n");
- return -1;
}
static void