* drivers/irqchip/irq-apple-aic.c:941 aic_of_ic_init() error: uninitialized symbol 'off'.
@ 2022-06-06 11:08 ` Dan Carpenter
0 siblings, 0 replies; 14+ messages in thread
From: kernel test robot @ 2022-05-31 20:14 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 8689 bytes --]
CC: kbuild-all(a)lists.01.org
BCC: lkp(a)intel.com
CC: linux-kernel(a)vger.kernel.org
TO: Hector Martin <marcan@marcan.st>
CC: Marc Zyngier <maz@kernel.org>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 8ab2afa23bd197df47819a87f0265c0ac95c5b6a
commit: dc97fd6fec009957e81026055fc99a03877ff3b8 irqchip/apple-aic: Dynamically compute register offsets
date: 3 months ago
:::::: branch date: 24 hours ago
:::::: commit date: 3 months ago
config: arm64-randconfig-m031-20220530 (https://download.01.org/0day-ci/archive/20220601/202206010439.LRgjym7t-lkp(a)intel.com/config)
compiler: aarch64-linux-gcc (GCC) 11.3.0
If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
New smatch warnings:
drivers/irqchip/irq-apple-aic.c:941 aic_of_ic_init() error: uninitialized symbol 'off'.
Old smatch warnings:
drivers/irqchip/irq-apple-aic.c:920 aic_of_ic_init() warn: possible memory leak of 'irqc'
drivers/irqchip/irq-apple-aic.c:998 aic_of_ic_init() warn: 'regs' from of_iomap() not released on lines: 914,920.
vim +/off +941 drivers/irqchip/irq-apple-aic.c
b6ca556c352979 Marc Zyngier 2021-02-28 899
76cde26394114f Hector Martin 2021-01-21 900 static int __init aic_of_ic_init(struct device_node *node, struct device_node *parent)
76cde26394114f Hector Martin 2021-01-21 901 {
76cde26394114f Hector Martin 2021-01-21 902 int i;
dc97fd6fec0099 Hector Martin 2022-03-10 903 u32 off;
76cde26394114f Hector Martin 2021-01-21 904 void __iomem *regs;
76cde26394114f Hector Martin 2021-01-21 905 struct aic_irq_chip *irqc;
2cf68211664acd Hector Martin 2022-03-10 906 const struct of_device_id *match;
76cde26394114f Hector Martin 2021-01-21 907
76cde26394114f Hector Martin 2021-01-21 908 regs = of_iomap(node, 0);
76cde26394114f Hector Martin 2021-01-21 909 if (WARN_ON(!regs))
76cde26394114f Hector Martin 2021-01-21 910 return -EIO;
76cde26394114f Hector Martin 2021-01-21 911
76cde26394114f Hector Martin 2021-01-21 912 irqc = kzalloc(sizeof(*irqc), GFP_KERNEL);
76cde26394114f Hector Martin 2021-01-21 913 if (!irqc)
76cde26394114f Hector Martin 2021-01-21 914 return -ENOMEM;
76cde26394114f Hector Martin 2021-01-21 915
76cde26394114f Hector Martin 2021-01-21 916 irqc->base = regs;
76cde26394114f Hector Martin 2021-01-21 917
2cf68211664acd Hector Martin 2022-03-10 918 match = of_match_node(aic_info_match, node);
2cf68211664acd Hector Martin 2022-03-10 919 if (!match)
2cf68211664acd Hector Martin 2022-03-10 920 return -ENODEV;
2cf68211664acd Hector Martin 2022-03-10 921
2cf68211664acd Hector Martin 2022-03-10 922 irqc->info = *(struct aic_info *)match->data;
2cf68211664acd Hector Martin 2022-03-10 923
2cf68211664acd Hector Martin 2022-03-10 924 aic_irqc = irqc;
2cf68211664acd Hector Martin 2022-03-10 925
dc97fd6fec0099 Hector Martin 2022-03-10 926 switch (irqc->info.version) {
dc97fd6fec0099 Hector Martin 2022-03-10 927 case 1: {
dc97fd6fec0099 Hector Martin 2022-03-10 928 u32 info;
dc97fd6fec0099 Hector Martin 2022-03-10 929
76cde26394114f Hector Martin 2021-01-21 930 info = aic_ic_read(irqc, AIC_INFO);
7c841f5f6fa3f9 Hector Martin 2022-03-10 931 irqc->nr_irq = FIELD_GET(AIC_INFO_NR_IRQ, info);
dc97fd6fec0099 Hector Martin 2022-03-10 932 irqc->max_irq = AIC_MAX_IRQ;
dc97fd6fec0099 Hector Martin 2022-03-10 933
dc97fd6fec0099 Hector Martin 2022-03-10 934 off = irqc->info.target_cpu;
dc97fd6fec0099 Hector Martin 2022-03-10 935 off += sizeof(u32) * irqc->max_irq; /* TARGET_CPU */
dc97fd6fec0099 Hector Martin 2022-03-10 936
dc97fd6fec0099 Hector Martin 2022-03-10 937 break;
dc97fd6fec0099 Hector Martin 2022-03-10 938 }
dc97fd6fec0099 Hector Martin 2022-03-10 939 }
dc97fd6fec0099 Hector Martin 2022-03-10 940
dc97fd6fec0099 Hector Martin 2022-03-10 @941 irqc->info.sw_set = off;
dc97fd6fec0099 Hector Martin 2022-03-10 942 off += sizeof(u32) * (irqc->max_irq >> 5); /* SW_SET */
dc97fd6fec0099 Hector Martin 2022-03-10 943 irqc->info.sw_clr = off;
dc97fd6fec0099 Hector Martin 2022-03-10 944 off += sizeof(u32) * (irqc->max_irq >> 5); /* SW_CLR */
dc97fd6fec0099 Hector Martin 2022-03-10 945 irqc->info.mask_set = off;
dc97fd6fec0099 Hector Martin 2022-03-10 946 off += sizeof(u32) * (irqc->max_irq >> 5); /* MASK_SET */
dc97fd6fec0099 Hector Martin 2022-03-10 947 irqc->info.mask_clr = off;
dc97fd6fec0099 Hector Martin 2022-03-10 948 off += sizeof(u32) * (irqc->max_irq >> 5); /* MASK_CLR */
dc97fd6fec0099 Hector Martin 2022-03-10 949 off += sizeof(u32) * (irqc->max_irq >> 5); /* HW_STATE */
76cde26394114f Hector Martin 2021-01-21 950
2cf68211664acd Hector Martin 2022-03-10 951 if (irqc->info.fast_ipi)
2cf68211664acd Hector Martin 2022-03-10 952 static_branch_enable(&use_fast_ipi);
2cf68211664acd Hector Martin 2022-03-10 953 else
2cf68211664acd Hector Martin 2022-03-10 954 static_branch_disable(&use_fast_ipi);
2cf68211664acd Hector Martin 2022-03-10 955
7c841f5f6fa3f9 Hector Martin 2022-03-10 956 irqc->hw_domain = irq_domain_create_tree(of_node_to_fwnode(node),
76cde26394114f Hector Martin 2021-01-21 957 &aic_irq_domain_ops, irqc);
76cde26394114f Hector Martin 2021-01-21 958 if (WARN_ON(!irqc->hw_domain)) {
76cde26394114f Hector Martin 2021-01-21 959 iounmap(irqc->base);
76cde26394114f Hector Martin 2021-01-21 960 kfree(irqc);
76cde26394114f Hector Martin 2021-01-21 961 return -ENODEV;
76cde26394114f Hector Martin 2021-01-21 962 }
76cde26394114f Hector Martin 2021-01-21 963
76cde26394114f Hector Martin 2021-01-21 964 irq_domain_update_bus_token(irqc->hw_domain, DOMAIN_BUS_WIRED);
76cde26394114f Hector Martin 2021-01-21 965
76cde26394114f Hector Martin 2021-01-21 966 if (aic_init_smp(irqc, node)) {
76cde26394114f Hector Martin 2021-01-21 967 irq_domain_remove(irqc->hw_domain);
76cde26394114f Hector Martin 2021-01-21 968 iounmap(irqc->base);
76cde26394114f Hector Martin 2021-01-21 969 kfree(irqc);
76cde26394114f Hector Martin 2021-01-21 970 return -ENODEV;
76cde26394114f Hector Martin 2021-01-21 971 }
76cde26394114f Hector Martin 2021-01-21 972
76cde26394114f Hector Martin 2021-01-21 973 set_handle_irq(aic_handle_irq);
76cde26394114f Hector Martin 2021-01-21 974 set_handle_fiq(aic_handle_fiq);
76cde26394114f Hector Martin 2021-01-21 975
7c841f5f6fa3f9 Hector Martin 2022-03-10 976 for (i = 0; i < BITS_TO_U32(irqc->nr_irq); i++)
dc97fd6fec0099 Hector Martin 2022-03-10 977 aic_ic_write(irqc, irqc->info.mask_set + i * 4, U32_MAX);
7c841f5f6fa3f9 Hector Martin 2022-03-10 978 for (i = 0; i < BITS_TO_U32(irqc->nr_irq); i++)
dc97fd6fec0099 Hector Martin 2022-03-10 979 aic_ic_write(irqc, irqc->info.sw_clr + i * 4, U32_MAX);
7c841f5f6fa3f9 Hector Martin 2022-03-10 980 for (i = 0; i < irqc->nr_irq; i++)
dc97fd6fec0099 Hector Martin 2022-03-10 981 aic_ic_write(irqc, irqc->info.target_cpu + i * 4, 1);
76cde26394114f Hector Martin 2021-01-21 982
76cde26394114f Hector Martin 2021-01-21 983 if (!is_kernel_in_hyp_mode())
76cde26394114f Hector Martin 2021-01-21 984 pr_info("Kernel running in EL1, mapping interrupts");
76cde26394114f Hector Martin 2021-01-21 985
2cf68211664acd Hector Martin 2022-03-10 986 if (static_branch_likely(&use_fast_ipi))
2cf68211664acd Hector Martin 2022-03-10 987 pr_info("Using Fast IPIs");
2cf68211664acd Hector Martin 2022-03-10 988
76cde26394114f Hector Martin 2021-01-21 989 cpuhp_setup_state(CPUHP_AP_IRQ_APPLE_AIC_STARTING,
76cde26394114f Hector Martin 2021-01-21 990 "irqchip/apple-aic/ipi:starting",
76cde26394114f Hector Martin 2021-01-21 991 aic_init_cpu, NULL);
76cde26394114f Hector Martin 2021-01-21 992
b6ca556c352979 Marc Zyngier 2021-02-28 993 vgic_set_kvm_info(&vgic_info);
b6ca556c352979 Marc Zyngier 2021-02-28 994
dc97fd6fec0099 Hector Martin 2022-03-10 995 pr_info("Initialized with %d/%d IRQs, %d FIQs, %d vIPIs",
dc97fd6fec0099 Hector Martin 2022-03-10 996 irqc->nr_irq, irqc->max_irq, AIC_NR_FIQ, AIC_NR_SWIPI);
76cde26394114f Hector Martin 2021-01-21 997
76cde26394114f Hector Martin 2021-01-21 998 return 0;
76cde26394114f Hector Martin 2021-01-21 999 }
76cde26394114f Hector Martin 2021-01-21 1000
--
0-DAY CI Kernel Test Service
https://01.org/lkp
^ permalink raw reply [flat|nested] 14+ messages in thread
* drivers/irqchip/irq-apple-aic.c:941 aic_of_ic_init() error: uninitialized symbol 'off'.
@ 2022-06-06 11:08 ` Dan Carpenter
0 siblings, 0 replies; 14+ messages in thread
From: Dan Carpenter @ 2022-06-06 11:08 UTC (permalink / raw)
To: kbuild, Hector Martin; +Cc: lkp, kbuild-all, linux-kernel, Marc Zyngier
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 8ab2afa23bd197df47819a87f0265c0ac95c5b6a
commit: dc97fd6fec009957e81026055fc99a03877ff3b8 irqchip/apple-aic: Dynamically compute register offsets
config: arm64-randconfig-m031-20220530 (https://download.01.org/0day-ci/archive/20220601/202206010439.LRgjym7t-lkp@intel.com/config)
compiler: aarch64-linux-gcc (GCC) 11.3.0
If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
New smatch warnings:
drivers/irqchip/irq-apple-aic.c:941 aic_of_ic_init() error: uninitialized symbol 'off'.
vim +/off +941 drivers/irqchip/irq-apple-aic.c
76cde26394114f Hector Martin 2021-01-21 900 static int __init aic_of_ic_init(struct device_node *node, struct device_node *parent)
76cde26394114f Hector Martin 2021-01-21 901 {
76cde26394114f Hector Martin 2021-01-21 902 int i;
dc97fd6fec0099 Hector Martin 2022-03-10 903 u32 off;
76cde26394114f Hector Martin 2021-01-21 904 void __iomem *regs;
76cde26394114f Hector Martin 2021-01-21 905 struct aic_irq_chip *irqc;
2cf68211664acd Hector Martin 2022-03-10 906 const struct of_device_id *match;
76cde26394114f Hector Martin 2021-01-21 907
76cde26394114f Hector Martin 2021-01-21 908 regs = of_iomap(node, 0);
76cde26394114f Hector Martin 2021-01-21 909 if (WARN_ON(!regs))
76cde26394114f Hector Martin 2021-01-21 910 return -EIO;
76cde26394114f Hector Martin 2021-01-21 911
76cde26394114f Hector Martin 2021-01-21 912 irqc = kzalloc(sizeof(*irqc), GFP_KERNEL);
76cde26394114f Hector Martin 2021-01-21 913 if (!irqc)
76cde26394114f Hector Martin 2021-01-21 914 return -ENOMEM;
76cde26394114f Hector Martin 2021-01-21 915
76cde26394114f Hector Martin 2021-01-21 916 irqc->base = regs;
76cde26394114f Hector Martin 2021-01-21 917
2cf68211664acd Hector Martin 2022-03-10 918 match = of_match_node(aic_info_match, node);
2cf68211664acd Hector Martin 2022-03-10 919 if (!match)
2cf68211664acd Hector Martin 2022-03-10 920 return -ENODEV;
2cf68211664acd Hector Martin 2022-03-10 921
2cf68211664acd Hector Martin 2022-03-10 922 irqc->info = *(struct aic_info *)match->data;
2cf68211664acd Hector Martin 2022-03-10 923
2cf68211664acd Hector Martin 2022-03-10 924 aic_irqc = irqc;
2cf68211664acd Hector Martin 2022-03-10 925
dc97fd6fec0099 Hector Martin 2022-03-10 926 switch (irqc->info.version) {
dc97fd6fec0099 Hector Martin 2022-03-10 927 case 1: {
dc97fd6fec0099 Hector Martin 2022-03-10 928 u32 info;
dc97fd6fec0099 Hector Martin 2022-03-10 929
76cde26394114f Hector Martin 2021-01-21 930 info = aic_ic_read(irqc, AIC_INFO);
7c841f5f6fa3f9 Hector Martin 2022-03-10 931 irqc->nr_irq = FIELD_GET(AIC_INFO_NR_IRQ, info);
dc97fd6fec0099 Hector Martin 2022-03-10 932 irqc->max_irq = AIC_MAX_IRQ;
dc97fd6fec0099 Hector Martin 2022-03-10 933
dc97fd6fec0099 Hector Martin 2022-03-10 934 off = irqc->info.target_cpu;
dc97fd6fec0099 Hector Martin 2022-03-10 935 off += sizeof(u32) * irqc->max_irq; /* TARGET_CPU */
dc97fd6fec0099 Hector Martin 2022-03-10 936
dc97fd6fec0099 Hector Martin 2022-03-10 937 break;
"off" uninitialized if irqc->info.version != 1.
dc97fd6fec0099 Hector Martin 2022-03-10 938 }
dc97fd6fec0099 Hector Martin 2022-03-10 939 }
dc97fd6fec0099 Hector Martin 2022-03-10 940
dc97fd6fec0099 Hector Martin 2022-03-10 @941 irqc->info.sw_set = off;
dc97fd6fec0099 Hector Martin 2022-03-10 942 off += sizeof(u32) * (irqc->max_irq >> 5); /* SW_SET */
dc97fd6fec0099 Hector Martin 2022-03-10 943 irqc->info.sw_clr = off;
dc97fd6fec0099 Hector Martin 2022-03-10 944 off += sizeof(u32) * (irqc->max_irq >> 5); /* SW_CLR */
dc97fd6fec0099 Hector Martin 2022-03-10 945 irqc->info.mask_set = off;
dc97fd6fec0099 Hector Martin 2022-03-10 946 off += sizeof(u32) * (irqc->max_irq >> 5); /* MASK_SET */
dc97fd6fec0099 Hector Martin 2022-03-10 947 irqc->info.mask_clr = off;
dc97fd6fec0099 Hector Martin 2022-03-10 948 off += sizeof(u32) * (irqc->max_irq >> 5); /* MASK_CLR */
dc97fd6fec0099 Hector Martin 2022-03-10 949 off += sizeof(u32) * (irqc->max_irq >> 5); /* HW_STATE */
76cde26394114f Hector Martin 2021-01-21 950
2cf68211664acd Hector Martin 2022-03-10 951 if (irqc->info.fast_ipi)
2cf68211664acd Hector Martin 2022-03-10 952 static_branch_enable(&use_fast_ipi);
--
0-DAY CI Kernel Test Service
https://01.org/lkp
^ permalink raw reply [flat|nested] 14+ messages in thread
* drivers/irqchip/irq-apple-aic.c:941 aic_of_ic_init() error: uninitialized symbol 'off'.
@ 2022-06-06 11:08 ` Dan Carpenter
0 siblings, 0 replies; 14+ messages in thread
From: Dan Carpenter @ 2022-06-06 11:08 UTC (permalink / raw)
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 4647 bytes --]
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 8ab2afa23bd197df47819a87f0265c0ac95c5b6a
commit: dc97fd6fec009957e81026055fc99a03877ff3b8 irqchip/apple-aic: Dynamically compute register offsets
config: arm64-randconfig-m031-20220530 (https://download.01.org/0day-ci/archive/20220601/202206010439.LRgjym7t-lkp(a)intel.com/config)
compiler: aarch64-linux-gcc (GCC) 11.3.0
If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
New smatch warnings:
drivers/irqchip/irq-apple-aic.c:941 aic_of_ic_init() error: uninitialized symbol 'off'.
vim +/off +941 drivers/irqchip/irq-apple-aic.c
76cde26394114f Hector Martin 2021-01-21 900 static int __init aic_of_ic_init(struct device_node *node, struct device_node *parent)
76cde26394114f Hector Martin 2021-01-21 901 {
76cde26394114f Hector Martin 2021-01-21 902 int i;
dc97fd6fec0099 Hector Martin 2022-03-10 903 u32 off;
76cde26394114f Hector Martin 2021-01-21 904 void __iomem *regs;
76cde26394114f Hector Martin 2021-01-21 905 struct aic_irq_chip *irqc;
2cf68211664acd Hector Martin 2022-03-10 906 const struct of_device_id *match;
76cde26394114f Hector Martin 2021-01-21 907
76cde26394114f Hector Martin 2021-01-21 908 regs = of_iomap(node, 0);
76cde26394114f Hector Martin 2021-01-21 909 if (WARN_ON(!regs))
76cde26394114f Hector Martin 2021-01-21 910 return -EIO;
76cde26394114f Hector Martin 2021-01-21 911
76cde26394114f Hector Martin 2021-01-21 912 irqc = kzalloc(sizeof(*irqc), GFP_KERNEL);
76cde26394114f Hector Martin 2021-01-21 913 if (!irqc)
76cde26394114f Hector Martin 2021-01-21 914 return -ENOMEM;
76cde26394114f Hector Martin 2021-01-21 915
76cde26394114f Hector Martin 2021-01-21 916 irqc->base = regs;
76cde26394114f Hector Martin 2021-01-21 917
2cf68211664acd Hector Martin 2022-03-10 918 match = of_match_node(aic_info_match, node);
2cf68211664acd Hector Martin 2022-03-10 919 if (!match)
2cf68211664acd Hector Martin 2022-03-10 920 return -ENODEV;
2cf68211664acd Hector Martin 2022-03-10 921
2cf68211664acd Hector Martin 2022-03-10 922 irqc->info = *(struct aic_info *)match->data;
2cf68211664acd Hector Martin 2022-03-10 923
2cf68211664acd Hector Martin 2022-03-10 924 aic_irqc = irqc;
2cf68211664acd Hector Martin 2022-03-10 925
dc97fd6fec0099 Hector Martin 2022-03-10 926 switch (irqc->info.version) {
dc97fd6fec0099 Hector Martin 2022-03-10 927 case 1: {
dc97fd6fec0099 Hector Martin 2022-03-10 928 u32 info;
dc97fd6fec0099 Hector Martin 2022-03-10 929
76cde26394114f Hector Martin 2021-01-21 930 info = aic_ic_read(irqc, AIC_INFO);
7c841f5f6fa3f9 Hector Martin 2022-03-10 931 irqc->nr_irq = FIELD_GET(AIC_INFO_NR_IRQ, info);
dc97fd6fec0099 Hector Martin 2022-03-10 932 irqc->max_irq = AIC_MAX_IRQ;
dc97fd6fec0099 Hector Martin 2022-03-10 933
dc97fd6fec0099 Hector Martin 2022-03-10 934 off = irqc->info.target_cpu;
dc97fd6fec0099 Hector Martin 2022-03-10 935 off += sizeof(u32) * irqc->max_irq; /* TARGET_CPU */
dc97fd6fec0099 Hector Martin 2022-03-10 936
dc97fd6fec0099 Hector Martin 2022-03-10 937 break;
"off" uninitialized if irqc->info.version != 1.
dc97fd6fec0099 Hector Martin 2022-03-10 938 }
dc97fd6fec0099 Hector Martin 2022-03-10 939 }
dc97fd6fec0099 Hector Martin 2022-03-10 940
dc97fd6fec0099 Hector Martin 2022-03-10 @941 irqc->info.sw_set = off;
dc97fd6fec0099 Hector Martin 2022-03-10 942 off += sizeof(u32) * (irqc->max_irq >> 5); /* SW_SET */
dc97fd6fec0099 Hector Martin 2022-03-10 943 irqc->info.sw_clr = off;
dc97fd6fec0099 Hector Martin 2022-03-10 944 off += sizeof(u32) * (irqc->max_irq >> 5); /* SW_CLR */
dc97fd6fec0099 Hector Martin 2022-03-10 945 irqc->info.mask_set = off;
dc97fd6fec0099 Hector Martin 2022-03-10 946 off += sizeof(u32) * (irqc->max_irq >> 5); /* MASK_SET */
dc97fd6fec0099 Hector Martin 2022-03-10 947 irqc->info.mask_clr = off;
dc97fd6fec0099 Hector Martin 2022-03-10 948 off += sizeof(u32) * (irqc->max_irq >> 5); /* MASK_CLR */
dc97fd6fec0099 Hector Martin 2022-03-10 949 off += sizeof(u32) * (irqc->max_irq >> 5); /* HW_STATE */
76cde26394114f Hector Martin 2021-01-21 950
2cf68211664acd Hector Martin 2022-03-10 951 if (irqc->info.fast_ipi)
2cf68211664acd Hector Martin 2022-03-10 952 static_branch_enable(&use_fast_ipi);
--
0-DAY CI Kernel Test Service
https://01.org/lkp
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: drivers/irqchip/irq-apple-aic.c:941 aic_of_ic_init() error: uninitialized symbol 'off'.
2022-06-06 11:08 ` Dan Carpenter
@ 2022-06-06 11:16 ` Marc Zyngier
-1 siblings, 0 replies; 14+ messages in thread
From: Marc Zyngier @ 2022-06-06 11:16 UTC (permalink / raw)
To: Dan Carpenter; +Cc: kbuild, Hector Martin, lkp, kbuild-all, linux-kernel
On Mon, 06 Jun 2022 12:08:03 +0100,
Dan Carpenter <dan.carpenter@oracle.com> wrote:
>
> tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> head: 8ab2afa23bd197df47819a87f0265c0ac95c5b6a
> commit: dc97fd6fec009957e81026055fc99a03877ff3b8 irqchip/apple-aic: Dynamically compute register offsets
> config: arm64-randconfig-m031-20220530 (https://download.01.org/0day-ci/archive/20220601/202206010439.LRgjym7t-lkp@intel.com/config)
> compiler: aarch64-linux-gcc (GCC) 11.3.0
>
> If you fix the issue, kindly add following tag where applicable
> Reported-by: kernel test robot <lkp@intel.com>
> Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
>
> New smatch warnings:
> drivers/irqchip/irq-apple-aic.c:941 aic_of_ic_init() error: uninitialized symbol 'off'.
>
> vim +/off +941 drivers/irqchip/irq-apple-aic.c
>
> 76cde26394114f Hector Martin 2021-01-21 900 static int __init aic_of_ic_init(struct device_node *node, struct device_node *parent)
> 76cde26394114f Hector Martin 2021-01-21 901 {
> 76cde26394114f Hector Martin 2021-01-21 902 int i;
> dc97fd6fec0099 Hector Martin 2022-03-10 903 u32 off;
> 76cde26394114f Hector Martin 2021-01-21 904 void __iomem *regs;
> 76cde26394114f Hector Martin 2021-01-21 905 struct aic_irq_chip *irqc;
> 2cf68211664acd Hector Martin 2022-03-10 906 const struct of_device_id *match;
> 76cde26394114f Hector Martin 2021-01-21 907
> 76cde26394114f Hector Martin 2021-01-21 908 regs = of_iomap(node, 0);
> 76cde26394114f Hector Martin 2021-01-21 909 if (WARN_ON(!regs))
> 76cde26394114f Hector Martin 2021-01-21 910 return -EIO;
> 76cde26394114f Hector Martin 2021-01-21 911
> 76cde26394114f Hector Martin 2021-01-21 912 irqc = kzalloc(sizeof(*irqc), GFP_KERNEL);
> 76cde26394114f Hector Martin 2021-01-21 913 if (!irqc)
> 76cde26394114f Hector Martin 2021-01-21 914 return -ENOMEM;
> 76cde26394114f Hector Martin 2021-01-21 915
> 76cde26394114f Hector Martin 2021-01-21 916 irqc->base = regs;
> 76cde26394114f Hector Martin 2021-01-21 917
> 2cf68211664acd Hector Martin 2022-03-10 918 match = of_match_node(aic_info_match, node);
> 2cf68211664acd Hector Martin 2022-03-10 919 if (!match)
> 2cf68211664acd Hector Martin 2022-03-10 920 return -ENODEV;
> 2cf68211664acd Hector Martin 2022-03-10 921
> 2cf68211664acd Hector Martin 2022-03-10 922 irqc->info = *(struct aic_info *)match->data;
> 2cf68211664acd Hector Martin 2022-03-10 923
> 2cf68211664acd Hector Martin 2022-03-10 924 aic_irqc = irqc;
> 2cf68211664acd Hector Martin 2022-03-10 925
> dc97fd6fec0099 Hector Martin 2022-03-10 926 switch (irqc->info.version) {
> dc97fd6fec0099 Hector Martin 2022-03-10 927 case 1: {
> dc97fd6fec0099 Hector Martin 2022-03-10 928 u32 info;
> dc97fd6fec0099 Hector Martin 2022-03-10 929
> 76cde26394114f Hector Martin 2021-01-21 930 info = aic_ic_read(irqc, AIC_INFO);
> 7c841f5f6fa3f9 Hector Martin 2022-03-10 931 irqc->nr_irq = FIELD_GET(AIC_INFO_NR_IRQ, info);
> dc97fd6fec0099 Hector Martin 2022-03-10 932 irqc->max_irq = AIC_MAX_IRQ;
> dc97fd6fec0099 Hector Martin 2022-03-10 933
> dc97fd6fec0099 Hector Martin 2022-03-10 934 off = irqc->info.target_cpu;
> dc97fd6fec0099 Hector Martin 2022-03-10 935 off += sizeof(u32) * irqc->max_irq; /* TARGET_CPU */
> dc97fd6fec0099 Hector Martin 2022-03-10 936
> dc97fd6fec0099 Hector Martin 2022-03-10 937 break;
>
> "off" uninitialized if irqc->info.version != 1.
Which is pretty much impossible by construction, as as of this
particular commit, all the possible implementations have version == 1.
Subsequent patches do add cases where version == 2, and that gets
covered too.
So unless I'm missing something obvious, there is no bug here.
Thanks,
M.
--
Without deviation from the norm, progress is not possible.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: drivers/irqchip/irq-apple-aic.c:941 aic_of_ic_init() error: uninitialized symbol 'off'.
@ 2022-06-06 11:16 ` Marc Zyngier
0 siblings, 0 replies; 14+ messages in thread
From: Marc Zyngier @ 2022-06-06 11:16 UTC (permalink / raw)
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 3966 bytes --]
On Mon, 06 Jun 2022 12:08:03 +0100,
Dan Carpenter <dan.carpenter@oracle.com> wrote:
>
> tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> head: 8ab2afa23bd197df47819a87f0265c0ac95c5b6a
> commit: dc97fd6fec009957e81026055fc99a03877ff3b8 irqchip/apple-aic: Dynamically compute register offsets
> config: arm64-randconfig-m031-20220530 (https://download.01.org/0day-ci/archive/20220601/202206010439.LRgjym7t-lkp(a)intel.com/config)
> compiler: aarch64-linux-gcc (GCC) 11.3.0
>
> If you fix the issue, kindly add following tag where applicable
> Reported-by: kernel test robot <lkp@intel.com>
> Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
>
> New smatch warnings:
> drivers/irqchip/irq-apple-aic.c:941 aic_of_ic_init() error: uninitialized symbol 'off'.
>
> vim +/off +941 drivers/irqchip/irq-apple-aic.c
>
> 76cde26394114f Hector Martin 2021-01-21 900 static int __init aic_of_ic_init(struct device_node *node, struct device_node *parent)
> 76cde26394114f Hector Martin 2021-01-21 901 {
> 76cde26394114f Hector Martin 2021-01-21 902 int i;
> dc97fd6fec0099 Hector Martin 2022-03-10 903 u32 off;
> 76cde26394114f Hector Martin 2021-01-21 904 void __iomem *regs;
> 76cde26394114f Hector Martin 2021-01-21 905 struct aic_irq_chip *irqc;
> 2cf68211664acd Hector Martin 2022-03-10 906 const struct of_device_id *match;
> 76cde26394114f Hector Martin 2021-01-21 907
> 76cde26394114f Hector Martin 2021-01-21 908 regs = of_iomap(node, 0);
> 76cde26394114f Hector Martin 2021-01-21 909 if (WARN_ON(!regs))
> 76cde26394114f Hector Martin 2021-01-21 910 return -EIO;
> 76cde26394114f Hector Martin 2021-01-21 911
> 76cde26394114f Hector Martin 2021-01-21 912 irqc = kzalloc(sizeof(*irqc), GFP_KERNEL);
> 76cde26394114f Hector Martin 2021-01-21 913 if (!irqc)
> 76cde26394114f Hector Martin 2021-01-21 914 return -ENOMEM;
> 76cde26394114f Hector Martin 2021-01-21 915
> 76cde26394114f Hector Martin 2021-01-21 916 irqc->base = regs;
> 76cde26394114f Hector Martin 2021-01-21 917
> 2cf68211664acd Hector Martin 2022-03-10 918 match = of_match_node(aic_info_match, node);
> 2cf68211664acd Hector Martin 2022-03-10 919 if (!match)
> 2cf68211664acd Hector Martin 2022-03-10 920 return -ENODEV;
> 2cf68211664acd Hector Martin 2022-03-10 921
> 2cf68211664acd Hector Martin 2022-03-10 922 irqc->info = *(struct aic_info *)match->data;
> 2cf68211664acd Hector Martin 2022-03-10 923
> 2cf68211664acd Hector Martin 2022-03-10 924 aic_irqc = irqc;
> 2cf68211664acd Hector Martin 2022-03-10 925
> dc97fd6fec0099 Hector Martin 2022-03-10 926 switch (irqc->info.version) {
> dc97fd6fec0099 Hector Martin 2022-03-10 927 case 1: {
> dc97fd6fec0099 Hector Martin 2022-03-10 928 u32 info;
> dc97fd6fec0099 Hector Martin 2022-03-10 929
> 76cde26394114f Hector Martin 2021-01-21 930 info = aic_ic_read(irqc, AIC_INFO);
> 7c841f5f6fa3f9 Hector Martin 2022-03-10 931 irqc->nr_irq = FIELD_GET(AIC_INFO_NR_IRQ, info);
> dc97fd6fec0099 Hector Martin 2022-03-10 932 irqc->max_irq = AIC_MAX_IRQ;
> dc97fd6fec0099 Hector Martin 2022-03-10 933
> dc97fd6fec0099 Hector Martin 2022-03-10 934 off = irqc->info.target_cpu;
> dc97fd6fec0099 Hector Martin 2022-03-10 935 off += sizeof(u32) * irqc->max_irq; /* TARGET_CPU */
> dc97fd6fec0099 Hector Martin 2022-03-10 936
> dc97fd6fec0099 Hector Martin 2022-03-10 937 break;
>
> "off" uninitialized if irqc->info.version != 1.
Which is pretty much impossible by construction, as as of this
particular commit, all the possible implementations have version == 1.
Subsequent patches do add cases where version == 2, and that gets
covered too.
So unless I'm missing something obvious, there is no bug here.
Thanks,
M.
--
Without deviation from the norm, progress is not possible.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: drivers/irqchip/irq-apple-aic.c:941 aic_of_ic_init() error: uninitialized symbol 'off'.
2022-06-06 11:16 ` Marc Zyngier
(?)
@ 2022-06-06 11:25 ` Dan Carpenter
-1 siblings, 0 replies; 14+ messages in thread
From: Dan Carpenter @ 2022-06-06 11:25 UTC (permalink / raw)
To: Marc Zyngier; +Cc: kbuild, Hector Martin, lkp, kbuild-all, linux-kernel
On Mon, Jun 06, 2022 at 12:16:22PM +0100, Marc Zyngier wrote:
> > dc97fd6fec0099 Hector Martin 2022-03-10 926 switch (irqc->info.version) {
> > dc97fd6fec0099 Hector Martin 2022-03-10 927 case 1: {
> > dc97fd6fec0099 Hector Martin 2022-03-10 928 u32 info;
> > dc97fd6fec0099 Hector Martin 2022-03-10 929
> > 76cde26394114f Hector Martin 2021-01-21 930 info = aic_ic_read(irqc, AIC_INFO);
> > 7c841f5f6fa3f9 Hector Martin 2022-03-10 931 irqc->nr_irq = FIELD_GET(AIC_INFO_NR_IRQ, info);
> > dc97fd6fec0099 Hector Martin 2022-03-10 932 irqc->max_irq = AIC_MAX_IRQ;
> > dc97fd6fec0099 Hector Martin 2022-03-10 933
> > dc97fd6fec0099 Hector Martin 2022-03-10 934 off = irqc->info.target_cpu;
> > dc97fd6fec0099 Hector Martin 2022-03-10 935 off += sizeof(u32) * irqc->max_irq; /* TARGET_CPU */
> > dc97fd6fec0099 Hector Martin 2022-03-10 936
> > dc97fd6fec0099 Hector Martin 2022-03-10 937 break;
> >
> > "off" uninitialized if irqc->info.version != 1.
>
> Which is pretty much impossible by construction, as as of this
> particular commit, all the possible implementations have version == 1.
>
> Subsequent patches do add cases where version == 2, and that gets
> covered too.
>
> So unless I'm missing something obvious, there is no bug here.
I assumed it was something like that. The kbuild bot doesn't do cross
function analysis. Neither does Clang really.
regards,
dan carpenter
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: drivers/irqchip/irq-apple-aic.c:941 aic_of_ic_init() error: uninitialized symbol 'off'.
@ 2022-06-06 11:25 ` Dan Carpenter
0 siblings, 0 replies; 14+ messages in thread
From: Dan Carpenter @ 2022-06-06 11:25 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 1468 bytes --]
On Mon, Jun 06, 2022 at 12:16:22PM +0100, Marc Zyngier wrote:
> > dc97fd6fec0099 Hector Martin 2022-03-10 926 switch (irqc->info.version) {
> > dc97fd6fec0099 Hector Martin 2022-03-10 927 case 1: {
> > dc97fd6fec0099 Hector Martin 2022-03-10 928 u32 info;
> > dc97fd6fec0099 Hector Martin 2022-03-10 929
> > 76cde26394114f Hector Martin 2021-01-21 930 info = aic_ic_read(irqc, AIC_INFO);
> > 7c841f5f6fa3f9 Hector Martin 2022-03-10 931 irqc->nr_irq = FIELD_GET(AIC_INFO_NR_IRQ, info);
> > dc97fd6fec0099 Hector Martin 2022-03-10 932 irqc->max_irq = AIC_MAX_IRQ;
> > dc97fd6fec0099 Hector Martin 2022-03-10 933
> > dc97fd6fec0099 Hector Martin 2022-03-10 934 off = irqc->info.target_cpu;
> > dc97fd6fec0099 Hector Martin 2022-03-10 935 off += sizeof(u32) * irqc->max_irq; /* TARGET_CPU */
> > dc97fd6fec0099 Hector Martin 2022-03-10 936
> > dc97fd6fec0099 Hector Martin 2022-03-10 937 break;
> >
> > "off" uninitialized if irqc->info.version != 1.
>
> Which is pretty much impossible by construction, as as of this
> particular commit, all the possible implementations have version == 1.
>
> Subsequent patches do add cases where version == 2, and that gets
> covered too.
>
> So unless I'm missing something obvious, there is no bug here.
I assumed it was something like that. The kbuild bot doesn't do cross
function analysis. Neither does Clang really.
regards,
dan carpenter
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: drivers/irqchip/irq-apple-aic.c:941 aic_of_ic_init() error: uninitialized symbol 'off'.
@ 2022-06-06 11:25 ` Dan Carpenter
0 siblings, 0 replies; 14+ messages in thread
From: Dan Carpenter @ 2022-06-06 11:25 UTC (permalink / raw)
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 1468 bytes --]
On Mon, Jun 06, 2022 at 12:16:22PM +0100, Marc Zyngier wrote:
> > dc97fd6fec0099 Hector Martin 2022-03-10 926 switch (irqc->info.version) {
> > dc97fd6fec0099 Hector Martin 2022-03-10 927 case 1: {
> > dc97fd6fec0099 Hector Martin 2022-03-10 928 u32 info;
> > dc97fd6fec0099 Hector Martin 2022-03-10 929
> > 76cde26394114f Hector Martin 2021-01-21 930 info = aic_ic_read(irqc, AIC_INFO);
> > 7c841f5f6fa3f9 Hector Martin 2022-03-10 931 irqc->nr_irq = FIELD_GET(AIC_INFO_NR_IRQ, info);
> > dc97fd6fec0099 Hector Martin 2022-03-10 932 irqc->max_irq = AIC_MAX_IRQ;
> > dc97fd6fec0099 Hector Martin 2022-03-10 933
> > dc97fd6fec0099 Hector Martin 2022-03-10 934 off = irqc->info.target_cpu;
> > dc97fd6fec0099 Hector Martin 2022-03-10 935 off += sizeof(u32) * irqc->max_irq; /* TARGET_CPU */
> > dc97fd6fec0099 Hector Martin 2022-03-10 936
> > dc97fd6fec0099 Hector Martin 2022-03-10 937 break;
> >
> > "off" uninitialized if irqc->info.version != 1.
>
> Which is pretty much impossible by construction, as as of this
> particular commit, all the possible implementations have version == 1.
>
> Subsequent patches do add cases where version == 2, and that gets
> covered too.
>
> So unless I'm missing something obvious, there is no bug here.
I assumed it was something like that. The kbuild bot doesn't do cross
function analysis. Neither does Clang really.
regards,
dan carpenter
^ permalink raw reply [flat|nested] 14+ messages in thread
* drivers/irqchip/irq-apple-aic.c:941 aic_of_ic_init() error: uninitialized symbol 'off'.
@ 2023-12-08 21:56 kernel test robot
0 siblings, 0 replies; 14+ messages in thread
From: kernel test robot @ 2023-12-08 21:56 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp, Dan Carpenter
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: Hector Martin <marcan@marcan.st>
CC: Marc Zyngier <maz@kernel.org>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: f2e8a57ee9036c7d5443382b6c3c09b51a92ec7e
commit: dc97fd6fec009957e81026055fc99a03877ff3b8 irqchip/apple-aic: Dynamically compute register offsets
date: 1 year, 9 months ago
:::::: branch date: 76 minutes ago
:::::: commit date: 1 year, 9 months ago
config: arm64-randconfig-r081-20231127 (https://download.01.org/0day-ci/archive/20231209/202312090503.8RHRg2sn-lkp@intel.com/config)
compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project.git f28c006a5895fc0e329fe15fead81e37457cb1d1)
reproduce: (https://download.01.org/0day-ci/archive/20231209/202312090503.8RHRg2sn-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>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202312090503.8RHRg2sn-lkp@intel.com/
New smatch warnings:
drivers/irqchip/irq-apple-aic.c:941 aic_of_ic_init() error: uninitialized symbol 'off'.
Old smatch warnings:
drivers/irqchip/irq-apple-aic.c:920 aic_of_ic_init() warn: possible memory leak of 'irqc'
drivers/irqchip/irq-apple-aic.c:998 aic_of_ic_init() warn: 'regs' from of_iomap() not released on lines: 914,920.
vim +/off +941 drivers/irqchip/irq-apple-aic.c
b6ca556c352979 Marc Zyngier 2021-02-28 899
76cde26394114f Hector Martin 2021-01-21 900 static int __init aic_of_ic_init(struct device_node *node, struct device_node *parent)
76cde26394114f Hector Martin 2021-01-21 901 {
76cde26394114f Hector Martin 2021-01-21 902 int i;
dc97fd6fec0099 Hector Martin 2022-03-10 903 u32 off;
76cde26394114f Hector Martin 2021-01-21 904 void __iomem *regs;
76cde26394114f Hector Martin 2021-01-21 905 struct aic_irq_chip *irqc;
2cf68211664acd Hector Martin 2022-03-10 906 const struct of_device_id *match;
76cde26394114f Hector Martin 2021-01-21 907
76cde26394114f Hector Martin 2021-01-21 908 regs = of_iomap(node, 0);
76cde26394114f Hector Martin 2021-01-21 909 if (WARN_ON(!regs))
76cde26394114f Hector Martin 2021-01-21 910 return -EIO;
76cde26394114f Hector Martin 2021-01-21 911
76cde26394114f Hector Martin 2021-01-21 912 irqc = kzalloc(sizeof(*irqc), GFP_KERNEL);
76cde26394114f Hector Martin 2021-01-21 913 if (!irqc)
76cde26394114f Hector Martin 2021-01-21 914 return -ENOMEM;
76cde26394114f Hector Martin 2021-01-21 915
76cde26394114f Hector Martin 2021-01-21 916 irqc->base = regs;
76cde26394114f Hector Martin 2021-01-21 917
2cf68211664acd Hector Martin 2022-03-10 918 match = of_match_node(aic_info_match, node);
2cf68211664acd Hector Martin 2022-03-10 919 if (!match)
2cf68211664acd Hector Martin 2022-03-10 920 return -ENODEV;
2cf68211664acd Hector Martin 2022-03-10 921
2cf68211664acd Hector Martin 2022-03-10 922 irqc->info = *(struct aic_info *)match->data;
2cf68211664acd Hector Martin 2022-03-10 923
2cf68211664acd Hector Martin 2022-03-10 924 aic_irqc = irqc;
2cf68211664acd Hector Martin 2022-03-10 925
dc97fd6fec0099 Hector Martin 2022-03-10 926 switch (irqc->info.version) {
dc97fd6fec0099 Hector Martin 2022-03-10 927 case 1: {
dc97fd6fec0099 Hector Martin 2022-03-10 928 u32 info;
dc97fd6fec0099 Hector Martin 2022-03-10 929
76cde26394114f Hector Martin 2021-01-21 930 info = aic_ic_read(irqc, AIC_INFO);
7c841f5f6fa3f9 Hector Martin 2022-03-10 931 irqc->nr_irq = FIELD_GET(AIC_INFO_NR_IRQ, info);
dc97fd6fec0099 Hector Martin 2022-03-10 932 irqc->max_irq = AIC_MAX_IRQ;
dc97fd6fec0099 Hector Martin 2022-03-10 933
dc97fd6fec0099 Hector Martin 2022-03-10 934 off = irqc->info.target_cpu;
dc97fd6fec0099 Hector Martin 2022-03-10 935 off += sizeof(u32) * irqc->max_irq; /* TARGET_CPU */
dc97fd6fec0099 Hector Martin 2022-03-10 936
dc97fd6fec0099 Hector Martin 2022-03-10 937 break;
dc97fd6fec0099 Hector Martin 2022-03-10 938 }
dc97fd6fec0099 Hector Martin 2022-03-10 939 }
dc97fd6fec0099 Hector Martin 2022-03-10 940
dc97fd6fec0099 Hector Martin 2022-03-10 @941 irqc->info.sw_set = off;
dc97fd6fec0099 Hector Martin 2022-03-10 942 off += sizeof(u32) * (irqc->max_irq >> 5); /* SW_SET */
dc97fd6fec0099 Hector Martin 2022-03-10 943 irqc->info.sw_clr = off;
dc97fd6fec0099 Hector Martin 2022-03-10 944 off += sizeof(u32) * (irqc->max_irq >> 5); /* SW_CLR */
dc97fd6fec0099 Hector Martin 2022-03-10 945 irqc->info.mask_set = off;
dc97fd6fec0099 Hector Martin 2022-03-10 946 off += sizeof(u32) * (irqc->max_irq >> 5); /* MASK_SET */
dc97fd6fec0099 Hector Martin 2022-03-10 947 irqc->info.mask_clr = off;
dc97fd6fec0099 Hector Martin 2022-03-10 948 off += sizeof(u32) * (irqc->max_irq >> 5); /* MASK_CLR */
dc97fd6fec0099 Hector Martin 2022-03-10 949 off += sizeof(u32) * (irqc->max_irq >> 5); /* HW_STATE */
76cde26394114f Hector Martin 2021-01-21 950
2cf68211664acd Hector Martin 2022-03-10 951 if (irqc->info.fast_ipi)
2cf68211664acd Hector Martin 2022-03-10 952 static_branch_enable(&use_fast_ipi);
2cf68211664acd Hector Martin 2022-03-10 953 else
2cf68211664acd Hector Martin 2022-03-10 954 static_branch_disable(&use_fast_ipi);
2cf68211664acd Hector Martin 2022-03-10 955
7c841f5f6fa3f9 Hector Martin 2022-03-10 956 irqc->hw_domain = irq_domain_create_tree(of_node_to_fwnode(node),
76cde26394114f Hector Martin 2021-01-21 957 &aic_irq_domain_ops, irqc);
76cde26394114f Hector Martin 2021-01-21 958 if (WARN_ON(!irqc->hw_domain)) {
76cde26394114f Hector Martin 2021-01-21 959 iounmap(irqc->base);
76cde26394114f Hector Martin 2021-01-21 960 kfree(irqc);
76cde26394114f Hector Martin 2021-01-21 961 return -ENODEV;
76cde26394114f Hector Martin 2021-01-21 962 }
76cde26394114f Hector Martin 2021-01-21 963
76cde26394114f Hector Martin 2021-01-21 964 irq_domain_update_bus_token(irqc->hw_domain, DOMAIN_BUS_WIRED);
76cde26394114f Hector Martin 2021-01-21 965
76cde26394114f Hector Martin 2021-01-21 966 if (aic_init_smp(irqc, node)) {
76cde26394114f Hector Martin 2021-01-21 967 irq_domain_remove(irqc->hw_domain);
76cde26394114f Hector Martin 2021-01-21 968 iounmap(irqc->base);
76cde26394114f Hector Martin 2021-01-21 969 kfree(irqc);
76cde26394114f Hector Martin 2021-01-21 970 return -ENODEV;
76cde26394114f Hector Martin 2021-01-21 971 }
76cde26394114f Hector Martin 2021-01-21 972
76cde26394114f Hector Martin 2021-01-21 973 set_handle_irq(aic_handle_irq);
76cde26394114f Hector Martin 2021-01-21 974 set_handle_fiq(aic_handle_fiq);
76cde26394114f Hector Martin 2021-01-21 975
7c841f5f6fa3f9 Hector Martin 2022-03-10 976 for (i = 0; i < BITS_TO_U32(irqc->nr_irq); i++)
dc97fd6fec0099 Hector Martin 2022-03-10 977 aic_ic_write(irqc, irqc->info.mask_set + i * 4, U32_MAX);
7c841f5f6fa3f9 Hector Martin 2022-03-10 978 for (i = 0; i < BITS_TO_U32(irqc->nr_irq); i++)
dc97fd6fec0099 Hector Martin 2022-03-10 979 aic_ic_write(irqc, irqc->info.sw_clr + i * 4, U32_MAX);
7c841f5f6fa3f9 Hector Martin 2022-03-10 980 for (i = 0; i < irqc->nr_irq; i++)
dc97fd6fec0099 Hector Martin 2022-03-10 981 aic_ic_write(irqc, irqc->info.target_cpu + i * 4, 1);
76cde26394114f Hector Martin 2021-01-21 982
76cde26394114f Hector Martin 2021-01-21 983 if (!is_kernel_in_hyp_mode())
76cde26394114f Hector Martin 2021-01-21 984 pr_info("Kernel running in EL1, mapping interrupts");
76cde26394114f Hector Martin 2021-01-21 985
2cf68211664acd Hector Martin 2022-03-10 986 if (static_branch_likely(&use_fast_ipi))
2cf68211664acd Hector Martin 2022-03-10 987 pr_info("Using Fast IPIs");
2cf68211664acd Hector Martin 2022-03-10 988
76cde26394114f Hector Martin 2021-01-21 989 cpuhp_setup_state(CPUHP_AP_IRQ_APPLE_AIC_STARTING,
76cde26394114f Hector Martin 2021-01-21 990 "irqchip/apple-aic/ipi:starting",
76cde26394114f Hector Martin 2021-01-21 991 aic_init_cpu, NULL);
76cde26394114f Hector Martin 2021-01-21 992
b6ca556c352979 Marc Zyngier 2021-02-28 993 vgic_set_kvm_info(&vgic_info);
b6ca556c352979 Marc Zyngier 2021-02-28 994
dc97fd6fec0099 Hector Martin 2022-03-10 995 pr_info("Initialized with %d/%d IRQs, %d FIQs, %d vIPIs",
dc97fd6fec0099 Hector Martin 2022-03-10 996 irqc->nr_irq, irqc->max_irq, AIC_NR_FIQ, AIC_NR_SWIPI);
76cde26394114f Hector Martin 2021-01-21 997
76cde26394114f Hector Martin 2021-01-21 998 return 0;
76cde26394114f Hector Martin 2021-01-21 999 }
76cde26394114f Hector Martin 2021-01-21 1000
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 14+ messages in thread
* drivers/irqchip/irq-apple-aic.c:941 aic_of_ic_init() error: uninitialized symbol 'off'.
@ 2023-12-07 20:43 kernel test robot
0 siblings, 0 replies; 14+ messages in thread
From: kernel test robot @ 2023-12-07 20:43 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp, Dan Carpenter
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: Hector Martin <marcan@marcan.st>
CC: Marc Zyngier <maz@kernel.org>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: bee0e7762ad2c6025b9f5245c040fcc36ef2bde8
commit: dc97fd6fec009957e81026055fc99a03877ff3b8 irqchip/apple-aic: Dynamically compute register offsets
date: 1 year, 9 months ago
:::::: branch date: 3 days ago
:::::: commit date: 1 year, 9 months ago
config: arm64-randconfig-r081-20231127 (https://download.01.org/0day-ci/archive/20231208/202312080450.6gI69Jba-lkp@intel.com/config)
compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project.git f28c006a5895fc0e329fe15fead81e37457cb1d1)
reproduce: (https://download.01.org/0day-ci/archive/20231208/202312080450.6gI69Jba-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>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202312080450.6gI69Jba-lkp@intel.com/
New smatch warnings:
drivers/irqchip/irq-apple-aic.c:941 aic_of_ic_init() error: uninitialized symbol 'off'.
Old smatch warnings:
drivers/irqchip/irq-apple-aic.c:920 aic_of_ic_init() warn: possible memory leak of 'irqc'
drivers/irqchip/irq-apple-aic.c:998 aic_of_ic_init() warn: 'regs' from of_iomap() not released on lines: 914,920.
vim +/off +941 drivers/irqchip/irq-apple-aic.c
b6ca556c352979 Marc Zyngier 2021-02-28 899
76cde26394114f Hector Martin 2021-01-21 900 static int __init aic_of_ic_init(struct device_node *node, struct device_node *parent)
76cde26394114f Hector Martin 2021-01-21 901 {
76cde26394114f Hector Martin 2021-01-21 902 int i;
dc97fd6fec0099 Hector Martin 2022-03-10 903 u32 off;
76cde26394114f Hector Martin 2021-01-21 904 void __iomem *regs;
76cde26394114f Hector Martin 2021-01-21 905 struct aic_irq_chip *irqc;
2cf68211664acd Hector Martin 2022-03-10 906 const struct of_device_id *match;
76cde26394114f Hector Martin 2021-01-21 907
76cde26394114f Hector Martin 2021-01-21 908 regs = of_iomap(node, 0);
76cde26394114f Hector Martin 2021-01-21 909 if (WARN_ON(!regs))
76cde26394114f Hector Martin 2021-01-21 910 return -EIO;
76cde26394114f Hector Martin 2021-01-21 911
76cde26394114f Hector Martin 2021-01-21 912 irqc = kzalloc(sizeof(*irqc), GFP_KERNEL);
76cde26394114f Hector Martin 2021-01-21 913 if (!irqc)
76cde26394114f Hector Martin 2021-01-21 914 return -ENOMEM;
76cde26394114f Hector Martin 2021-01-21 915
76cde26394114f Hector Martin 2021-01-21 916 irqc->base = regs;
76cde26394114f Hector Martin 2021-01-21 917
2cf68211664acd Hector Martin 2022-03-10 918 match = of_match_node(aic_info_match, node);
2cf68211664acd Hector Martin 2022-03-10 919 if (!match)
2cf68211664acd Hector Martin 2022-03-10 920 return -ENODEV;
2cf68211664acd Hector Martin 2022-03-10 921
2cf68211664acd Hector Martin 2022-03-10 922 irqc->info = *(struct aic_info *)match->data;
2cf68211664acd Hector Martin 2022-03-10 923
2cf68211664acd Hector Martin 2022-03-10 924 aic_irqc = irqc;
2cf68211664acd Hector Martin 2022-03-10 925
dc97fd6fec0099 Hector Martin 2022-03-10 926 switch (irqc->info.version) {
dc97fd6fec0099 Hector Martin 2022-03-10 927 case 1: {
dc97fd6fec0099 Hector Martin 2022-03-10 928 u32 info;
dc97fd6fec0099 Hector Martin 2022-03-10 929
76cde26394114f Hector Martin 2021-01-21 930 info = aic_ic_read(irqc, AIC_INFO);
7c841f5f6fa3f9 Hector Martin 2022-03-10 931 irqc->nr_irq = FIELD_GET(AIC_INFO_NR_IRQ, info);
dc97fd6fec0099 Hector Martin 2022-03-10 932 irqc->max_irq = AIC_MAX_IRQ;
dc97fd6fec0099 Hector Martin 2022-03-10 933
dc97fd6fec0099 Hector Martin 2022-03-10 934 off = irqc->info.target_cpu;
dc97fd6fec0099 Hector Martin 2022-03-10 935 off += sizeof(u32) * irqc->max_irq; /* TARGET_CPU */
dc97fd6fec0099 Hector Martin 2022-03-10 936
dc97fd6fec0099 Hector Martin 2022-03-10 937 break;
dc97fd6fec0099 Hector Martin 2022-03-10 938 }
dc97fd6fec0099 Hector Martin 2022-03-10 939 }
dc97fd6fec0099 Hector Martin 2022-03-10 940
dc97fd6fec0099 Hector Martin 2022-03-10 @941 irqc->info.sw_set = off;
dc97fd6fec0099 Hector Martin 2022-03-10 942 off += sizeof(u32) * (irqc->max_irq >> 5); /* SW_SET */
dc97fd6fec0099 Hector Martin 2022-03-10 943 irqc->info.sw_clr = off;
dc97fd6fec0099 Hector Martin 2022-03-10 944 off += sizeof(u32) * (irqc->max_irq >> 5); /* SW_CLR */
dc97fd6fec0099 Hector Martin 2022-03-10 945 irqc->info.mask_set = off;
dc97fd6fec0099 Hector Martin 2022-03-10 946 off += sizeof(u32) * (irqc->max_irq >> 5); /* MASK_SET */
dc97fd6fec0099 Hector Martin 2022-03-10 947 irqc->info.mask_clr = off;
dc97fd6fec0099 Hector Martin 2022-03-10 948 off += sizeof(u32) * (irqc->max_irq >> 5); /* MASK_CLR */
dc97fd6fec0099 Hector Martin 2022-03-10 949 off += sizeof(u32) * (irqc->max_irq >> 5); /* HW_STATE */
76cde26394114f Hector Martin 2021-01-21 950
2cf68211664acd Hector Martin 2022-03-10 951 if (irqc->info.fast_ipi)
2cf68211664acd Hector Martin 2022-03-10 952 static_branch_enable(&use_fast_ipi);
2cf68211664acd Hector Martin 2022-03-10 953 else
2cf68211664acd Hector Martin 2022-03-10 954 static_branch_disable(&use_fast_ipi);
2cf68211664acd Hector Martin 2022-03-10 955
7c841f5f6fa3f9 Hector Martin 2022-03-10 956 irqc->hw_domain = irq_domain_create_tree(of_node_to_fwnode(node),
76cde26394114f Hector Martin 2021-01-21 957 &aic_irq_domain_ops, irqc);
76cde26394114f Hector Martin 2021-01-21 958 if (WARN_ON(!irqc->hw_domain)) {
76cde26394114f Hector Martin 2021-01-21 959 iounmap(irqc->base);
76cde26394114f Hector Martin 2021-01-21 960 kfree(irqc);
76cde26394114f Hector Martin 2021-01-21 961 return -ENODEV;
76cde26394114f Hector Martin 2021-01-21 962 }
76cde26394114f Hector Martin 2021-01-21 963
76cde26394114f Hector Martin 2021-01-21 964 irq_domain_update_bus_token(irqc->hw_domain, DOMAIN_BUS_WIRED);
76cde26394114f Hector Martin 2021-01-21 965
76cde26394114f Hector Martin 2021-01-21 966 if (aic_init_smp(irqc, node)) {
76cde26394114f Hector Martin 2021-01-21 967 irq_domain_remove(irqc->hw_domain);
76cde26394114f Hector Martin 2021-01-21 968 iounmap(irqc->base);
76cde26394114f Hector Martin 2021-01-21 969 kfree(irqc);
76cde26394114f Hector Martin 2021-01-21 970 return -ENODEV;
76cde26394114f Hector Martin 2021-01-21 971 }
76cde26394114f Hector Martin 2021-01-21 972
76cde26394114f Hector Martin 2021-01-21 973 set_handle_irq(aic_handle_irq);
76cde26394114f Hector Martin 2021-01-21 974 set_handle_fiq(aic_handle_fiq);
76cde26394114f Hector Martin 2021-01-21 975
7c841f5f6fa3f9 Hector Martin 2022-03-10 976 for (i = 0; i < BITS_TO_U32(irqc->nr_irq); i++)
dc97fd6fec0099 Hector Martin 2022-03-10 977 aic_ic_write(irqc, irqc->info.mask_set + i * 4, U32_MAX);
7c841f5f6fa3f9 Hector Martin 2022-03-10 978 for (i = 0; i < BITS_TO_U32(irqc->nr_irq); i++)
dc97fd6fec0099 Hector Martin 2022-03-10 979 aic_ic_write(irqc, irqc->info.sw_clr + i * 4, U32_MAX);
7c841f5f6fa3f9 Hector Martin 2022-03-10 980 for (i = 0; i < irqc->nr_irq; i++)
dc97fd6fec0099 Hector Martin 2022-03-10 981 aic_ic_write(irqc, irqc->info.target_cpu + i * 4, 1);
76cde26394114f Hector Martin 2021-01-21 982
76cde26394114f Hector Martin 2021-01-21 983 if (!is_kernel_in_hyp_mode())
76cde26394114f Hector Martin 2021-01-21 984 pr_info("Kernel running in EL1, mapping interrupts");
76cde26394114f Hector Martin 2021-01-21 985
2cf68211664acd Hector Martin 2022-03-10 986 if (static_branch_likely(&use_fast_ipi))
2cf68211664acd Hector Martin 2022-03-10 987 pr_info("Using Fast IPIs");
2cf68211664acd Hector Martin 2022-03-10 988
76cde26394114f Hector Martin 2021-01-21 989 cpuhp_setup_state(CPUHP_AP_IRQ_APPLE_AIC_STARTING,
76cde26394114f Hector Martin 2021-01-21 990 "irqchip/apple-aic/ipi:starting",
76cde26394114f Hector Martin 2021-01-21 991 aic_init_cpu, NULL);
76cde26394114f Hector Martin 2021-01-21 992
b6ca556c352979 Marc Zyngier 2021-02-28 993 vgic_set_kvm_info(&vgic_info);
b6ca556c352979 Marc Zyngier 2021-02-28 994
dc97fd6fec0099 Hector Martin 2022-03-10 995 pr_info("Initialized with %d/%d IRQs, %d FIQs, %d vIPIs",
dc97fd6fec0099 Hector Martin 2022-03-10 996 irqc->nr_irq, irqc->max_irq, AIC_NR_FIQ, AIC_NR_SWIPI);
76cde26394114f Hector Martin 2021-01-21 997
76cde26394114f Hector Martin 2021-01-21 998 return 0;
76cde26394114f Hector Martin 2021-01-21 999 }
76cde26394114f Hector Martin 2021-01-21 1000
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: drivers/irqchip/irq-apple-aic.c:941 aic_of_ic_init() error: uninitialized symbol 'off'.
2023-12-04 6:41 Dan Carpenter
@ 2023-12-04 10:32 ` Marc Zyngier
0 siblings, 0 replies; 14+ messages in thread
From: Marc Zyngier @ 2023-12-04 10:32 UTC (permalink / raw)
To: Dan Carpenter; +Cc: oe-kbuild, Hector Martin, lkp, oe-kbuild-all, linux-kernel
On Mon, 04 Dec 2023 06:41:46 +0000,
Dan Carpenter <dan.carpenter@linaro.org> wrote:
>
> tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> head: 33cc938e65a98f1d29d0a18403dbbee050dcad9a
> commit: dc97fd6fec009957e81026055fc99a03877ff3b8 irqchip/apple-aic: Dynamically compute register offsets
> config: arm64-randconfig-r081-20231127 (https://download.01.org/0day-ci/archive/20231203/202312032327.J915WcaL-lkp@intel.com/config)
> compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project.git f28c006a5895fc0e329fe15fead81e37457cb1d1)
> reproduce: (https://download.01.org/0day-ci/archive/20231203/202312032327.J915WcaL-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>
> | Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
> | Closes: https://lore.kernel.org/r/202312032327.J915WcaL-lkp@intel.com/
>
> New smatch warnings:
> drivers/irqchip/irq-apple-aic.c:941 aic_of_ic_init() error: uninitialized symbol 'off'.
>
> Old smatch warnings:
> drivers/irqchip/irq-apple-aic.c:920 aic_of_ic_init() warn: possible memory leak of 'irqc'
> drivers/irqchip/irq-apple-aic.c:998 aic_of_ic_init() warn: 'regs' from of_iomap() not released on lines: 914,920.
>
> vim +/off +941 drivers/irqchip/irq-apple-aic.c
>
> 76cde26394114f Hector Martin 2021-01-21 900 static int __init aic_of_ic_init(struct device_node *node, struct device_node *parent)
> 76cde26394114f Hector Martin 2021-01-21 901 {
> 76cde26394114f Hector Martin 2021-01-21 902 int i;
> dc97fd6fec0099 Hector Martin 2022-03-10 903 u32 off;
> 76cde26394114f Hector Martin 2021-01-21 904 void __iomem *regs;
> 76cde26394114f Hector Martin 2021-01-21 905 struct aic_irq_chip *irqc;
> 2cf68211664acd Hector Martin 2022-03-10 906 const struct of_device_id *match;
> 76cde26394114f Hector Martin 2021-01-21 907
> 76cde26394114f Hector Martin 2021-01-21 908 regs = of_iomap(node, 0);
> 76cde26394114f Hector Martin 2021-01-21 909 if (WARN_ON(!regs))
> 76cde26394114f Hector Martin 2021-01-21 910 return -EIO;
> 76cde26394114f Hector Martin 2021-01-21 911
> 76cde26394114f Hector Martin 2021-01-21 912 irqc = kzalloc(sizeof(*irqc), GFP_KERNEL);
> 76cde26394114f Hector Martin 2021-01-21 913 if (!irqc)
> 76cde26394114f Hector Martin 2021-01-21 914 return -ENOMEM;
> 76cde26394114f Hector Martin 2021-01-21 915
> 76cde26394114f Hector Martin 2021-01-21 916 irqc->base = regs;
> 76cde26394114f Hector Martin 2021-01-21 917
> 2cf68211664acd Hector Martin 2022-03-10 918 match = of_match_node(aic_info_match, node);
> 2cf68211664acd Hector Martin 2022-03-10 919 if (!match)
> 2cf68211664acd Hector Martin 2022-03-10 920 return -ENODEV;
> 2cf68211664acd Hector Martin 2022-03-10 921
> 2cf68211664acd Hector Martin 2022-03-10 922 irqc->info = *(struct aic_info *)match->data;
> 2cf68211664acd Hector Martin 2022-03-10 923
> 2cf68211664acd Hector Martin 2022-03-10 924 aic_irqc = irqc;
> 2cf68211664acd Hector Martin 2022-03-10 925
> dc97fd6fec0099 Hector Martin 2022-03-10 926 switch (irqc->info.version) {
> dc97fd6fec0099 Hector Martin 2022-03-10 927 case 1: {
> dc97fd6fec0099 Hector Martin 2022-03-10 928 u32 info;
> dc97fd6fec0099 Hector Martin 2022-03-10 929
> 76cde26394114f Hector Martin 2021-01-21 930 info = aic_ic_read(irqc, AIC_INFO);
> 7c841f5f6fa3f9 Hector Martin 2022-03-10 931 irqc->nr_irq = FIELD_GET(AIC_INFO_NR_IRQ, info);
> dc97fd6fec0099 Hector Martin 2022-03-10 932 irqc->max_irq = AIC_MAX_IRQ;
> dc97fd6fec0099 Hector Martin 2022-03-10 933
> dc97fd6fec0099 Hector Martin 2022-03-10 934 off = irqc->info.target_cpu;
> dc97fd6fec0099 Hector Martin 2022-03-10 935 off += sizeof(u32) * irqc->max_irq; /* TARGET_CPU */
> dc97fd6fec0099 Hector Martin 2022-03-10 936
> dc97fd6fec0099 Hector Martin 2022-03-10 937 break;
> dc97fd6fec0099 Hector Martin 2022-03-10 938 }
>
> not default statement.
This is yet another case of data-driven dependency that smatch cannot
infer easily. info.version is statically set in aic_info_match[]. 1
and 2 are the only values provided by this array, so off is never left
uninitialised.
Thanks,
M.
--
Without deviation from the norm, progress is not possible.
^ permalink raw reply [flat|nested] 14+ messages in thread
* drivers/irqchip/irq-apple-aic.c:941 aic_of_ic_init() error: uninitialized symbol 'off'.
@ 2023-12-04 6:41 Dan Carpenter
2023-12-04 10:32 ` Marc Zyngier
0 siblings, 1 reply; 14+ messages in thread
From: Dan Carpenter @ 2023-12-04 6:41 UTC (permalink / raw)
To: oe-kbuild, Hector Martin; +Cc: lkp, oe-kbuild-all, linux-kernel, Marc Zyngier
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 33cc938e65a98f1d29d0a18403dbbee050dcad9a
commit: dc97fd6fec009957e81026055fc99a03877ff3b8 irqchip/apple-aic: Dynamically compute register offsets
config: arm64-randconfig-r081-20231127 (https://download.01.org/0day-ci/archive/20231203/202312032327.J915WcaL-lkp@intel.com/config)
compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project.git f28c006a5895fc0e329fe15fead81e37457cb1d1)
reproduce: (https://download.01.org/0day-ci/archive/20231203/202312032327.J915WcaL-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>
| Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
| Closes: https://lore.kernel.org/r/202312032327.J915WcaL-lkp@intel.com/
New smatch warnings:
drivers/irqchip/irq-apple-aic.c:941 aic_of_ic_init() error: uninitialized symbol 'off'.
Old smatch warnings:
drivers/irqchip/irq-apple-aic.c:920 aic_of_ic_init() warn: possible memory leak of 'irqc'
drivers/irqchip/irq-apple-aic.c:998 aic_of_ic_init() warn: 'regs' from of_iomap() not released on lines: 914,920.
vim +/off +941 drivers/irqchip/irq-apple-aic.c
76cde26394114f Hector Martin 2021-01-21 900 static int __init aic_of_ic_init(struct device_node *node, struct device_node *parent)
76cde26394114f Hector Martin 2021-01-21 901 {
76cde26394114f Hector Martin 2021-01-21 902 int i;
dc97fd6fec0099 Hector Martin 2022-03-10 903 u32 off;
76cde26394114f Hector Martin 2021-01-21 904 void __iomem *regs;
76cde26394114f Hector Martin 2021-01-21 905 struct aic_irq_chip *irqc;
2cf68211664acd Hector Martin 2022-03-10 906 const struct of_device_id *match;
76cde26394114f Hector Martin 2021-01-21 907
76cde26394114f Hector Martin 2021-01-21 908 regs = of_iomap(node, 0);
76cde26394114f Hector Martin 2021-01-21 909 if (WARN_ON(!regs))
76cde26394114f Hector Martin 2021-01-21 910 return -EIO;
76cde26394114f Hector Martin 2021-01-21 911
76cde26394114f Hector Martin 2021-01-21 912 irqc = kzalloc(sizeof(*irqc), GFP_KERNEL);
76cde26394114f Hector Martin 2021-01-21 913 if (!irqc)
76cde26394114f Hector Martin 2021-01-21 914 return -ENOMEM;
76cde26394114f Hector Martin 2021-01-21 915
76cde26394114f Hector Martin 2021-01-21 916 irqc->base = regs;
76cde26394114f Hector Martin 2021-01-21 917
2cf68211664acd Hector Martin 2022-03-10 918 match = of_match_node(aic_info_match, node);
2cf68211664acd Hector Martin 2022-03-10 919 if (!match)
2cf68211664acd Hector Martin 2022-03-10 920 return -ENODEV;
2cf68211664acd Hector Martin 2022-03-10 921
2cf68211664acd Hector Martin 2022-03-10 922 irqc->info = *(struct aic_info *)match->data;
2cf68211664acd Hector Martin 2022-03-10 923
2cf68211664acd Hector Martin 2022-03-10 924 aic_irqc = irqc;
2cf68211664acd Hector Martin 2022-03-10 925
dc97fd6fec0099 Hector Martin 2022-03-10 926 switch (irqc->info.version) {
dc97fd6fec0099 Hector Martin 2022-03-10 927 case 1: {
dc97fd6fec0099 Hector Martin 2022-03-10 928 u32 info;
dc97fd6fec0099 Hector Martin 2022-03-10 929
76cde26394114f Hector Martin 2021-01-21 930 info = aic_ic_read(irqc, AIC_INFO);
7c841f5f6fa3f9 Hector Martin 2022-03-10 931 irqc->nr_irq = FIELD_GET(AIC_INFO_NR_IRQ, info);
dc97fd6fec0099 Hector Martin 2022-03-10 932 irqc->max_irq = AIC_MAX_IRQ;
dc97fd6fec0099 Hector Martin 2022-03-10 933
dc97fd6fec0099 Hector Martin 2022-03-10 934 off = irqc->info.target_cpu;
dc97fd6fec0099 Hector Martin 2022-03-10 935 off += sizeof(u32) * irqc->max_irq; /* TARGET_CPU */
dc97fd6fec0099 Hector Martin 2022-03-10 936
dc97fd6fec0099 Hector Martin 2022-03-10 937 break;
dc97fd6fec0099 Hector Martin 2022-03-10 938 }
not default statement.
dc97fd6fec0099 Hector Martin 2022-03-10 939 }
dc97fd6fec0099 Hector Martin 2022-03-10 940
dc97fd6fec0099 Hector Martin 2022-03-10 @941 irqc->info.sw_set = off;
dc97fd6fec0099 Hector Martin 2022-03-10 942 off += sizeof(u32) * (irqc->max_irq >> 5); /* SW_SET */
dc97fd6fec0099 Hector Martin 2022-03-10 943 irqc->info.sw_clr = off;
dc97fd6fec0099 Hector Martin 2022-03-10 944 off += sizeof(u32) * (irqc->max_irq >> 5); /* SW_CLR */
dc97fd6fec0099 Hector Martin 2022-03-10 945 irqc->info.mask_set = off;
dc97fd6fec0099 Hector Martin 2022-03-10 946 off += sizeof(u32) * (irqc->max_irq >> 5); /* MASK_SET */
dc97fd6fec0099 Hector Martin 2022-03-10 947 irqc->info.mask_clr = off;
dc97fd6fec0099 Hector Martin 2022-03-10 948 off += sizeof(u32) * (irqc->max_irq >> 5); /* MASK_CLR */
dc97fd6fec0099 Hector Martin 2022-03-10 949 off += sizeof(u32) * (irqc->max_irq >> 5); /* HW_STATE */
76cde26394114f Hector Martin 2021-01-21 950
2cf68211664acd Hector Martin 2022-03-10 951 if (irqc->info.fast_ipi)
2cf68211664acd Hector Martin 2022-03-10 952 static_branch_enable(&use_fast_ipi);
2cf68211664acd Hector Martin 2022-03-10 953 else
2cf68211664acd Hector Martin 2022-03-10 954 static_branch_disable(&use_fast_ipi);
2cf68211664acd Hector Martin 2022-03-10 955
7c841f5f6fa3f9 Hector Martin 2022-03-10 956 irqc->hw_domain = irq_domain_create_tree(of_node_to_fwnode(node),
76cde26394114f Hector Martin 2021-01-21 957 &aic_irq_domain_ops, irqc);
76cde26394114f Hector Martin 2021-01-21 958 if (WARN_ON(!irqc->hw_domain)) {
76cde26394114f Hector Martin 2021-01-21 959 iounmap(irqc->base);
76cde26394114f Hector Martin 2021-01-21 960 kfree(irqc);
76cde26394114f Hector Martin 2021-01-21 961 return -ENODEV;
76cde26394114f Hector Martin 2021-01-21 962 }
76cde26394114f Hector Martin 2021-01-21 963
76cde26394114f Hector Martin 2021-01-21 964 irq_domain_update_bus_token(irqc->hw_domain, DOMAIN_BUS_WIRED);
76cde26394114f Hector Martin 2021-01-21 965
76cde26394114f Hector Martin 2021-01-21 966 if (aic_init_smp(irqc, node)) {
76cde26394114f Hector Martin 2021-01-21 967 irq_domain_remove(irqc->hw_domain);
76cde26394114f Hector Martin 2021-01-21 968 iounmap(irqc->base);
76cde26394114f Hector Martin 2021-01-21 969 kfree(irqc);
76cde26394114f Hector Martin 2021-01-21 970 return -ENODEV;
76cde26394114f Hector Martin 2021-01-21 971 }
76cde26394114f Hector Martin 2021-01-21 972
76cde26394114f Hector Martin 2021-01-21 973 set_handle_irq(aic_handle_irq);
76cde26394114f Hector Martin 2021-01-21 974 set_handle_fiq(aic_handle_fiq);
76cde26394114f Hector Martin 2021-01-21 975
7c841f5f6fa3f9 Hector Martin 2022-03-10 976 for (i = 0; i < BITS_TO_U32(irqc->nr_irq); i++)
dc97fd6fec0099 Hector Martin 2022-03-10 977 aic_ic_write(irqc, irqc->info.mask_set + i * 4, U32_MAX);
7c841f5f6fa3f9 Hector Martin 2022-03-10 978 for (i = 0; i < BITS_TO_U32(irqc->nr_irq); i++)
dc97fd6fec0099 Hector Martin 2022-03-10 979 aic_ic_write(irqc, irqc->info.sw_clr + i * 4, U32_MAX);
7c841f5f6fa3f9 Hector Martin 2022-03-10 980 for (i = 0; i < irqc->nr_irq; i++)
dc97fd6fec0099 Hector Martin 2022-03-10 981 aic_ic_write(irqc, irqc->info.target_cpu + i * 4, 1);
76cde26394114f Hector Martin 2021-01-21 982
76cde26394114f Hector Martin 2021-01-21 983 if (!is_kernel_in_hyp_mode())
76cde26394114f Hector Martin 2021-01-21 984 pr_info("Kernel running in EL1, mapping interrupts");
76cde26394114f Hector Martin 2021-01-21 985
2cf68211664acd Hector Martin 2022-03-10 986 if (static_branch_likely(&use_fast_ipi))
2cf68211664acd Hector Martin 2022-03-10 987 pr_info("Using Fast IPIs");
2cf68211664acd Hector Martin 2022-03-10 988
76cde26394114f Hector Martin 2021-01-21 989 cpuhp_setup_state(CPUHP_AP_IRQ_APPLE_AIC_STARTING,
76cde26394114f Hector Martin 2021-01-21 990 "irqchip/apple-aic/ipi:starting",
76cde26394114f Hector Martin 2021-01-21 991 aic_init_cpu, NULL);
76cde26394114f Hector Martin 2021-01-21 992
b6ca556c352979 Marc Zyngier 2021-02-28 993 vgic_set_kvm_info(&vgic_info);
b6ca556c352979 Marc Zyngier 2021-02-28 994
dc97fd6fec0099 Hector Martin 2022-03-10 995 pr_info("Initialized with %d/%d IRQs, %d FIQs, %d vIPIs",
dc97fd6fec0099 Hector Martin 2022-03-10 996 irqc->nr_irq, irqc->max_irq, AIC_NR_FIQ, AIC_NR_SWIPI);
76cde26394114f Hector Martin 2021-01-21 997
76cde26394114f Hector Martin 2021-01-21 998 return 0;
76cde26394114f Hector Martin 2021-01-21 999 }
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 14+ messages in thread
* drivers/irqchip/irq-apple-aic.c:941 aic_of_ic_init() error: uninitialized symbol 'off'.
@ 2023-12-03 16:51 kernel test robot
0 siblings, 0 replies; 14+ messages in thread
From: kernel test robot @ 2023-12-03 16:51 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp, Dan Carpenter
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: Hector Martin <marcan@marcan.st>
CC: Marc Zyngier <maz@kernel.org>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 33cc938e65a98f1d29d0a18403dbbee050dcad9a
commit: dc97fd6fec009957e81026055fc99a03877ff3b8 irqchip/apple-aic: Dynamically compute register offsets
date: 1 year, 9 months ago
:::::: branch date: 6 hours ago
:::::: commit date: 1 year, 9 months ago
config: arm64-randconfig-r081-20231127 (https://download.01.org/0day-ci/archive/20231203/202312032327.J915WcaL-lkp@intel.com/config)
compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project.git f28c006a5895fc0e329fe15fead81e37457cb1d1)
reproduce: (https://download.01.org/0day-ci/archive/20231203/202312032327.J915WcaL-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>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202312032327.J915WcaL-lkp@intel.com/
New smatch warnings:
drivers/irqchip/irq-apple-aic.c:941 aic_of_ic_init() error: uninitialized symbol 'off'.
Old smatch warnings:
drivers/irqchip/irq-apple-aic.c:920 aic_of_ic_init() warn: possible memory leak of 'irqc'
drivers/irqchip/irq-apple-aic.c:998 aic_of_ic_init() warn: 'regs' from of_iomap() not released on lines: 914,920.
vim +/off +941 drivers/irqchip/irq-apple-aic.c
b6ca556c352979 Marc Zyngier 2021-02-28 899
76cde26394114f Hector Martin 2021-01-21 900 static int __init aic_of_ic_init(struct device_node *node, struct device_node *parent)
76cde26394114f Hector Martin 2021-01-21 901 {
76cde26394114f Hector Martin 2021-01-21 902 int i;
dc97fd6fec0099 Hector Martin 2022-03-10 903 u32 off;
76cde26394114f Hector Martin 2021-01-21 904 void __iomem *regs;
76cde26394114f Hector Martin 2021-01-21 905 struct aic_irq_chip *irqc;
2cf68211664acd Hector Martin 2022-03-10 906 const struct of_device_id *match;
76cde26394114f Hector Martin 2021-01-21 907
76cde26394114f Hector Martin 2021-01-21 908 regs = of_iomap(node, 0);
76cde26394114f Hector Martin 2021-01-21 909 if (WARN_ON(!regs))
76cde26394114f Hector Martin 2021-01-21 910 return -EIO;
76cde26394114f Hector Martin 2021-01-21 911
76cde26394114f Hector Martin 2021-01-21 912 irqc = kzalloc(sizeof(*irqc), GFP_KERNEL);
76cde26394114f Hector Martin 2021-01-21 913 if (!irqc)
76cde26394114f Hector Martin 2021-01-21 914 return -ENOMEM;
76cde26394114f Hector Martin 2021-01-21 915
76cde26394114f Hector Martin 2021-01-21 916 irqc->base = regs;
76cde26394114f Hector Martin 2021-01-21 917
2cf68211664acd Hector Martin 2022-03-10 918 match = of_match_node(aic_info_match, node);
2cf68211664acd Hector Martin 2022-03-10 919 if (!match)
2cf68211664acd Hector Martin 2022-03-10 920 return -ENODEV;
2cf68211664acd Hector Martin 2022-03-10 921
2cf68211664acd Hector Martin 2022-03-10 922 irqc->info = *(struct aic_info *)match->data;
2cf68211664acd Hector Martin 2022-03-10 923
2cf68211664acd Hector Martin 2022-03-10 924 aic_irqc = irqc;
2cf68211664acd Hector Martin 2022-03-10 925
dc97fd6fec0099 Hector Martin 2022-03-10 926 switch (irqc->info.version) {
dc97fd6fec0099 Hector Martin 2022-03-10 927 case 1: {
dc97fd6fec0099 Hector Martin 2022-03-10 928 u32 info;
dc97fd6fec0099 Hector Martin 2022-03-10 929
76cde26394114f Hector Martin 2021-01-21 930 info = aic_ic_read(irqc, AIC_INFO);
7c841f5f6fa3f9 Hector Martin 2022-03-10 931 irqc->nr_irq = FIELD_GET(AIC_INFO_NR_IRQ, info);
dc97fd6fec0099 Hector Martin 2022-03-10 932 irqc->max_irq = AIC_MAX_IRQ;
dc97fd6fec0099 Hector Martin 2022-03-10 933
dc97fd6fec0099 Hector Martin 2022-03-10 934 off = irqc->info.target_cpu;
dc97fd6fec0099 Hector Martin 2022-03-10 935 off += sizeof(u32) * irqc->max_irq; /* TARGET_CPU */
dc97fd6fec0099 Hector Martin 2022-03-10 936
dc97fd6fec0099 Hector Martin 2022-03-10 937 break;
dc97fd6fec0099 Hector Martin 2022-03-10 938 }
dc97fd6fec0099 Hector Martin 2022-03-10 939 }
dc97fd6fec0099 Hector Martin 2022-03-10 940
dc97fd6fec0099 Hector Martin 2022-03-10 @941 irqc->info.sw_set = off;
dc97fd6fec0099 Hector Martin 2022-03-10 942 off += sizeof(u32) * (irqc->max_irq >> 5); /* SW_SET */
dc97fd6fec0099 Hector Martin 2022-03-10 943 irqc->info.sw_clr = off;
dc97fd6fec0099 Hector Martin 2022-03-10 944 off += sizeof(u32) * (irqc->max_irq >> 5); /* SW_CLR */
dc97fd6fec0099 Hector Martin 2022-03-10 945 irqc->info.mask_set = off;
dc97fd6fec0099 Hector Martin 2022-03-10 946 off += sizeof(u32) * (irqc->max_irq >> 5); /* MASK_SET */
dc97fd6fec0099 Hector Martin 2022-03-10 947 irqc->info.mask_clr = off;
dc97fd6fec0099 Hector Martin 2022-03-10 948 off += sizeof(u32) * (irqc->max_irq >> 5); /* MASK_CLR */
dc97fd6fec0099 Hector Martin 2022-03-10 949 off += sizeof(u32) * (irqc->max_irq >> 5); /* HW_STATE */
76cde26394114f Hector Martin 2021-01-21 950
2cf68211664acd Hector Martin 2022-03-10 951 if (irqc->info.fast_ipi)
2cf68211664acd Hector Martin 2022-03-10 952 static_branch_enable(&use_fast_ipi);
2cf68211664acd Hector Martin 2022-03-10 953 else
2cf68211664acd Hector Martin 2022-03-10 954 static_branch_disable(&use_fast_ipi);
2cf68211664acd Hector Martin 2022-03-10 955
7c841f5f6fa3f9 Hector Martin 2022-03-10 956 irqc->hw_domain = irq_domain_create_tree(of_node_to_fwnode(node),
76cde26394114f Hector Martin 2021-01-21 957 &aic_irq_domain_ops, irqc);
76cde26394114f Hector Martin 2021-01-21 958 if (WARN_ON(!irqc->hw_domain)) {
76cde26394114f Hector Martin 2021-01-21 959 iounmap(irqc->base);
76cde26394114f Hector Martin 2021-01-21 960 kfree(irqc);
76cde26394114f Hector Martin 2021-01-21 961 return -ENODEV;
76cde26394114f Hector Martin 2021-01-21 962 }
76cde26394114f Hector Martin 2021-01-21 963
76cde26394114f Hector Martin 2021-01-21 964 irq_domain_update_bus_token(irqc->hw_domain, DOMAIN_BUS_WIRED);
76cde26394114f Hector Martin 2021-01-21 965
76cde26394114f Hector Martin 2021-01-21 966 if (aic_init_smp(irqc, node)) {
76cde26394114f Hector Martin 2021-01-21 967 irq_domain_remove(irqc->hw_domain);
76cde26394114f Hector Martin 2021-01-21 968 iounmap(irqc->base);
76cde26394114f Hector Martin 2021-01-21 969 kfree(irqc);
76cde26394114f Hector Martin 2021-01-21 970 return -ENODEV;
76cde26394114f Hector Martin 2021-01-21 971 }
76cde26394114f Hector Martin 2021-01-21 972
76cde26394114f Hector Martin 2021-01-21 973 set_handle_irq(aic_handle_irq);
76cde26394114f Hector Martin 2021-01-21 974 set_handle_fiq(aic_handle_fiq);
76cde26394114f Hector Martin 2021-01-21 975
7c841f5f6fa3f9 Hector Martin 2022-03-10 976 for (i = 0; i < BITS_TO_U32(irqc->nr_irq); i++)
dc97fd6fec0099 Hector Martin 2022-03-10 977 aic_ic_write(irqc, irqc->info.mask_set + i * 4, U32_MAX);
7c841f5f6fa3f9 Hector Martin 2022-03-10 978 for (i = 0; i < BITS_TO_U32(irqc->nr_irq); i++)
dc97fd6fec0099 Hector Martin 2022-03-10 979 aic_ic_write(irqc, irqc->info.sw_clr + i * 4, U32_MAX);
7c841f5f6fa3f9 Hector Martin 2022-03-10 980 for (i = 0; i < irqc->nr_irq; i++)
dc97fd6fec0099 Hector Martin 2022-03-10 981 aic_ic_write(irqc, irqc->info.target_cpu + i * 4, 1);
76cde26394114f Hector Martin 2021-01-21 982
76cde26394114f Hector Martin 2021-01-21 983 if (!is_kernel_in_hyp_mode())
76cde26394114f Hector Martin 2021-01-21 984 pr_info("Kernel running in EL1, mapping interrupts");
76cde26394114f Hector Martin 2021-01-21 985
2cf68211664acd Hector Martin 2022-03-10 986 if (static_branch_likely(&use_fast_ipi))
2cf68211664acd Hector Martin 2022-03-10 987 pr_info("Using Fast IPIs");
2cf68211664acd Hector Martin 2022-03-10 988
76cde26394114f Hector Martin 2021-01-21 989 cpuhp_setup_state(CPUHP_AP_IRQ_APPLE_AIC_STARTING,
76cde26394114f Hector Martin 2021-01-21 990 "irqchip/apple-aic/ipi:starting",
76cde26394114f Hector Martin 2021-01-21 991 aic_init_cpu, NULL);
76cde26394114f Hector Martin 2021-01-21 992
b6ca556c352979 Marc Zyngier 2021-02-28 993 vgic_set_kvm_info(&vgic_info);
b6ca556c352979 Marc Zyngier 2021-02-28 994
dc97fd6fec0099 Hector Martin 2022-03-10 995 pr_info("Initialized with %d/%d IRQs, %d FIQs, %d vIPIs",
dc97fd6fec0099 Hector Martin 2022-03-10 996 irqc->nr_irq, irqc->max_irq, AIC_NR_FIQ, AIC_NR_SWIPI);
76cde26394114f Hector Martin 2021-01-21 997
76cde26394114f Hector Martin 2021-01-21 998 return 0;
76cde26394114f Hector Martin 2021-01-21 999 }
76cde26394114f Hector Martin 2021-01-21 1000
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 14+ messages in thread
* drivers/irqchip/irq-apple-aic.c:941 aic_of_ic_init() error: uninitialized symbol 'off'.
@ 2022-06-04 2:29 kernel test robot
0 siblings, 0 replies; 14+ messages in thread
From: kernel test robot @ 2022-06-04 2:29 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 8688 bytes --]
CC: kbuild-all(a)lists.01.org
BCC: lkp(a)intel.com
CC: linux-kernel(a)vger.kernel.org
TO: Hector Martin <marcan@marcan.st>
CC: Marc Zyngier <maz@kernel.org>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 1f952675835bfe18d6ae494a5581724d68c52352
commit: dc97fd6fec009957e81026055fc99a03877ff3b8 irqchip/apple-aic: Dynamically compute register offsets
date: 3 months ago
:::::: branch date: 2 hours ago
:::::: commit date: 3 months ago
config: arm64-randconfig-m031-20220530 (https://download.01.org/0day-ci/archive/20220604/202206041021.KT16mbyS-lkp(a)intel.com/config)
compiler: aarch64-linux-gcc (GCC) 11.3.0
If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
New smatch warnings:
drivers/irqchip/irq-apple-aic.c:941 aic_of_ic_init() error: uninitialized symbol 'off'.
Old smatch warnings:
drivers/irqchip/irq-apple-aic.c:920 aic_of_ic_init() warn: possible memory leak of 'irqc'
drivers/irqchip/irq-apple-aic.c:998 aic_of_ic_init() warn: 'regs' from of_iomap() not released on lines: 914,920.
vim +/off +941 drivers/irqchip/irq-apple-aic.c
b6ca556c352979 Marc Zyngier 2021-02-28 899
76cde26394114f Hector Martin 2021-01-21 900 static int __init aic_of_ic_init(struct device_node *node, struct device_node *parent)
76cde26394114f Hector Martin 2021-01-21 901 {
76cde26394114f Hector Martin 2021-01-21 902 int i;
dc97fd6fec0099 Hector Martin 2022-03-10 903 u32 off;
76cde26394114f Hector Martin 2021-01-21 904 void __iomem *regs;
76cde26394114f Hector Martin 2021-01-21 905 struct aic_irq_chip *irqc;
2cf68211664acd Hector Martin 2022-03-10 906 const struct of_device_id *match;
76cde26394114f Hector Martin 2021-01-21 907
76cde26394114f Hector Martin 2021-01-21 908 regs = of_iomap(node, 0);
76cde26394114f Hector Martin 2021-01-21 909 if (WARN_ON(!regs))
76cde26394114f Hector Martin 2021-01-21 910 return -EIO;
76cde26394114f Hector Martin 2021-01-21 911
76cde26394114f Hector Martin 2021-01-21 912 irqc = kzalloc(sizeof(*irqc), GFP_KERNEL);
76cde26394114f Hector Martin 2021-01-21 913 if (!irqc)
76cde26394114f Hector Martin 2021-01-21 914 return -ENOMEM;
76cde26394114f Hector Martin 2021-01-21 915
76cde26394114f Hector Martin 2021-01-21 916 irqc->base = regs;
76cde26394114f Hector Martin 2021-01-21 917
2cf68211664acd Hector Martin 2022-03-10 918 match = of_match_node(aic_info_match, node);
2cf68211664acd Hector Martin 2022-03-10 919 if (!match)
2cf68211664acd Hector Martin 2022-03-10 920 return -ENODEV;
2cf68211664acd Hector Martin 2022-03-10 921
2cf68211664acd Hector Martin 2022-03-10 922 irqc->info = *(struct aic_info *)match->data;
2cf68211664acd Hector Martin 2022-03-10 923
2cf68211664acd Hector Martin 2022-03-10 924 aic_irqc = irqc;
2cf68211664acd Hector Martin 2022-03-10 925
dc97fd6fec0099 Hector Martin 2022-03-10 926 switch (irqc->info.version) {
dc97fd6fec0099 Hector Martin 2022-03-10 927 case 1: {
dc97fd6fec0099 Hector Martin 2022-03-10 928 u32 info;
dc97fd6fec0099 Hector Martin 2022-03-10 929
76cde26394114f Hector Martin 2021-01-21 930 info = aic_ic_read(irqc, AIC_INFO);
7c841f5f6fa3f9 Hector Martin 2022-03-10 931 irqc->nr_irq = FIELD_GET(AIC_INFO_NR_IRQ, info);
dc97fd6fec0099 Hector Martin 2022-03-10 932 irqc->max_irq = AIC_MAX_IRQ;
dc97fd6fec0099 Hector Martin 2022-03-10 933
dc97fd6fec0099 Hector Martin 2022-03-10 934 off = irqc->info.target_cpu;
dc97fd6fec0099 Hector Martin 2022-03-10 935 off += sizeof(u32) * irqc->max_irq; /* TARGET_CPU */
dc97fd6fec0099 Hector Martin 2022-03-10 936
dc97fd6fec0099 Hector Martin 2022-03-10 937 break;
dc97fd6fec0099 Hector Martin 2022-03-10 938 }
dc97fd6fec0099 Hector Martin 2022-03-10 939 }
dc97fd6fec0099 Hector Martin 2022-03-10 940
dc97fd6fec0099 Hector Martin 2022-03-10 @941 irqc->info.sw_set = off;
dc97fd6fec0099 Hector Martin 2022-03-10 942 off += sizeof(u32) * (irqc->max_irq >> 5); /* SW_SET */
dc97fd6fec0099 Hector Martin 2022-03-10 943 irqc->info.sw_clr = off;
dc97fd6fec0099 Hector Martin 2022-03-10 944 off += sizeof(u32) * (irqc->max_irq >> 5); /* SW_CLR */
dc97fd6fec0099 Hector Martin 2022-03-10 945 irqc->info.mask_set = off;
dc97fd6fec0099 Hector Martin 2022-03-10 946 off += sizeof(u32) * (irqc->max_irq >> 5); /* MASK_SET */
dc97fd6fec0099 Hector Martin 2022-03-10 947 irqc->info.mask_clr = off;
dc97fd6fec0099 Hector Martin 2022-03-10 948 off += sizeof(u32) * (irqc->max_irq >> 5); /* MASK_CLR */
dc97fd6fec0099 Hector Martin 2022-03-10 949 off += sizeof(u32) * (irqc->max_irq >> 5); /* HW_STATE */
76cde26394114f Hector Martin 2021-01-21 950
2cf68211664acd Hector Martin 2022-03-10 951 if (irqc->info.fast_ipi)
2cf68211664acd Hector Martin 2022-03-10 952 static_branch_enable(&use_fast_ipi);
2cf68211664acd Hector Martin 2022-03-10 953 else
2cf68211664acd Hector Martin 2022-03-10 954 static_branch_disable(&use_fast_ipi);
2cf68211664acd Hector Martin 2022-03-10 955
7c841f5f6fa3f9 Hector Martin 2022-03-10 956 irqc->hw_domain = irq_domain_create_tree(of_node_to_fwnode(node),
76cde26394114f Hector Martin 2021-01-21 957 &aic_irq_domain_ops, irqc);
76cde26394114f Hector Martin 2021-01-21 958 if (WARN_ON(!irqc->hw_domain)) {
76cde26394114f Hector Martin 2021-01-21 959 iounmap(irqc->base);
76cde26394114f Hector Martin 2021-01-21 960 kfree(irqc);
76cde26394114f Hector Martin 2021-01-21 961 return -ENODEV;
76cde26394114f Hector Martin 2021-01-21 962 }
76cde26394114f Hector Martin 2021-01-21 963
76cde26394114f Hector Martin 2021-01-21 964 irq_domain_update_bus_token(irqc->hw_domain, DOMAIN_BUS_WIRED);
76cde26394114f Hector Martin 2021-01-21 965
76cde26394114f Hector Martin 2021-01-21 966 if (aic_init_smp(irqc, node)) {
76cde26394114f Hector Martin 2021-01-21 967 irq_domain_remove(irqc->hw_domain);
76cde26394114f Hector Martin 2021-01-21 968 iounmap(irqc->base);
76cde26394114f Hector Martin 2021-01-21 969 kfree(irqc);
76cde26394114f Hector Martin 2021-01-21 970 return -ENODEV;
76cde26394114f Hector Martin 2021-01-21 971 }
76cde26394114f Hector Martin 2021-01-21 972
76cde26394114f Hector Martin 2021-01-21 973 set_handle_irq(aic_handle_irq);
76cde26394114f Hector Martin 2021-01-21 974 set_handle_fiq(aic_handle_fiq);
76cde26394114f Hector Martin 2021-01-21 975
7c841f5f6fa3f9 Hector Martin 2022-03-10 976 for (i = 0; i < BITS_TO_U32(irqc->nr_irq); i++)
dc97fd6fec0099 Hector Martin 2022-03-10 977 aic_ic_write(irqc, irqc->info.mask_set + i * 4, U32_MAX);
7c841f5f6fa3f9 Hector Martin 2022-03-10 978 for (i = 0; i < BITS_TO_U32(irqc->nr_irq); i++)
dc97fd6fec0099 Hector Martin 2022-03-10 979 aic_ic_write(irqc, irqc->info.sw_clr + i * 4, U32_MAX);
7c841f5f6fa3f9 Hector Martin 2022-03-10 980 for (i = 0; i < irqc->nr_irq; i++)
dc97fd6fec0099 Hector Martin 2022-03-10 981 aic_ic_write(irqc, irqc->info.target_cpu + i * 4, 1);
76cde26394114f Hector Martin 2021-01-21 982
76cde26394114f Hector Martin 2021-01-21 983 if (!is_kernel_in_hyp_mode())
76cde26394114f Hector Martin 2021-01-21 984 pr_info("Kernel running in EL1, mapping interrupts");
76cde26394114f Hector Martin 2021-01-21 985
2cf68211664acd Hector Martin 2022-03-10 986 if (static_branch_likely(&use_fast_ipi))
2cf68211664acd Hector Martin 2022-03-10 987 pr_info("Using Fast IPIs");
2cf68211664acd Hector Martin 2022-03-10 988
76cde26394114f Hector Martin 2021-01-21 989 cpuhp_setup_state(CPUHP_AP_IRQ_APPLE_AIC_STARTING,
76cde26394114f Hector Martin 2021-01-21 990 "irqchip/apple-aic/ipi:starting",
76cde26394114f Hector Martin 2021-01-21 991 aic_init_cpu, NULL);
76cde26394114f Hector Martin 2021-01-21 992
b6ca556c352979 Marc Zyngier 2021-02-28 993 vgic_set_kvm_info(&vgic_info);
b6ca556c352979 Marc Zyngier 2021-02-28 994
dc97fd6fec0099 Hector Martin 2022-03-10 995 pr_info("Initialized with %d/%d IRQs, %d FIQs, %d vIPIs",
dc97fd6fec0099 Hector Martin 2022-03-10 996 irqc->nr_irq, irqc->max_irq, AIC_NR_FIQ, AIC_NR_SWIPI);
76cde26394114f Hector Martin 2021-01-21 997
76cde26394114f Hector Martin 2021-01-21 998 return 0;
76cde26394114f Hector Martin 2021-01-21 999 }
76cde26394114f Hector Martin 2021-01-21 1000
--
0-DAY CI Kernel Test Service
https://01.org/lkp
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2023-12-08 21:57 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-31 20:14 drivers/irqchip/irq-apple-aic.c:941 aic_of_ic_init() error: uninitialized symbol 'off' kernel test robot
2022-06-06 11:08 ` Dan Carpenter
2022-06-06 11:08 ` Dan Carpenter
2022-06-06 11:16 ` Marc Zyngier
2022-06-06 11:16 ` Marc Zyngier
2022-06-06 11:25 ` Dan Carpenter
2022-06-06 11:25 ` Dan Carpenter
2022-06-06 11:25 ` Dan Carpenter
2022-06-04 2:29 kernel test robot
2023-12-03 16:51 kernel test robot
2023-12-04 6:41 Dan Carpenter
2023-12-04 10:32 ` Marc Zyngier
2023-12-07 20:43 kernel test robot
2023-12-08 21:56 kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.