Re: [PATCH v7 08/13] KVM: arm/arm64: Remove kvm_vgic_vcpu_early_init
From: kbuild test robot
Date: Mon May 21 2018 - 15:27:24 EST
Hi Eric,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on kvmarm/next]
[also build test WARNING on v4.17-rc6]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/Eric-Auger/KVM-arm-arm64-Allow-multiple-GICv3-redistributor-regions/20180522-004717
base: https://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm.git next
config: arm64-defconfig (attached as .config)
compiler: aarch64-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
make.cross ARCH=arm64
Note: it may well be a FALSE warning. FWIW you are at least aware of it now.
http://gcc.gnu.org/wiki/Better_Uninitialized_Warnings
All warnings (new ones prefixed by >>):
arch/arm64/kvm/../../../virt/kvm/arm/vgic/vgic-init.c: In function 'kvm_vgic_vcpu_init':
>> arch/arm64/kvm/../../../virt/kvm/arm/vgic/vgic-init.c:199:9: warning: 'ret' may be used uninitialized in this function [-Wmaybe-uninitialized]
int i, ret;
^~~
vim +/ret +199 arch/arm64/kvm/../../../virt/kvm/arm/vgic/vgic-init.c
185
186 /**
187 * kvm_vgic_vcpu_init() - Initialize static VGIC VCPU data
188 * structures and register VCPU-specific KVM iodevs
189 *
190 * @vcpu: pointer to the VCPU being created and initialized
191 *
192 * Only do initialization, but do not actually enable the
193 * VGIC CPU interface
194 */
195 int kvm_vgic_vcpu_init(struct kvm_vcpu *vcpu)
196 {
197 struct vgic_cpu *vgic_cpu = &vcpu->arch.vgic_cpu;
198 struct vgic_dist *dist = &vcpu->kvm->arch.vgic;
> 199 int i, ret;
200
201 INIT_LIST_HEAD(&vgic_cpu->ap_list_head);
202 spin_lock_init(&vgic_cpu->ap_list_lock);
203
204 /*
205 * Enable and configure all SGIs to be edge-triggered and
206 * configure all PPIs as level-triggered.
207 */
208 for (i = 0; i < VGIC_NR_PRIVATE_IRQS; i++) {
209 struct vgic_irq *irq = &vgic_cpu->private_irqs[i];
210
211 INIT_LIST_HEAD(&irq->ap_list);
212 spin_lock_init(&irq->irq_lock);
213 irq->intid = i;
214 irq->vcpu = NULL;
215 irq->target_vcpu = vcpu;
216 irq->targets = 1U << vcpu->vcpu_id;
217 kref_init(&irq->refcount);
218 if (vgic_irq_is_sgi(i)) {
219 /* SGIs */
220 irq->enabled = 1;
221 irq->config = VGIC_CONFIG_EDGE;
222 } else {
223 /* PPIs */
224 irq->config = VGIC_CONFIG_LEVEL;
225 }
226 }
227
228 if (!irqchip_in_kernel(vcpu->kvm))
229 return 0;
230
231 /*
232 * If we are creating a VCPU with a GICv3 we must also register the
233 * KVM io device for the redistributor that belongs to this VCPU.
234 */
235 if (dist->vgic_model == KVM_DEV_TYPE_ARM_VGIC_V3) {
236 mutex_lock(&vcpu->kvm->lock);
237 ret = vgic_register_redist_iodev(vcpu);
238 mutex_unlock(&vcpu->kvm->lock);
239 }
240 return ret;
241 }
242
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
Attachment:
.config.gz
Description: application/gzip