From patchwork Fri Dec 16 10:56:23 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 9477715 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id E34AE601C2 for ; Fri, 16 Dec 2016 10:57:11 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D2DD9287E2 for ; Fri, 16 Dec 2016 10:57:11 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id C7660287E5; Fri, 16 Dec 2016 10:57:11 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=2.0 tests=BAYES_00,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 4FC8C287E6 for ; Fri, 16 Dec 2016 10:57:11 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1760780AbcLPK5K (ORCPT ); Fri, 16 Dec 2016 05:57:10 -0500 Received: from mout.kundenserver.de ([212.227.17.10]:50357 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1760265AbcLPK5G (ORCPT ); Fri, 16 Dec 2016 05:57:06 -0500 Received: from wuerfel.lan ([78.43.21.235]) by mrelayeu.kundenserver.de (mreue104 [212.227.15.145]) with ESMTPA (Nemesis) id 0LalbM-1d1vVP04VM-00kO3Z; Fri, 16 Dec 2016 11:56:47 +0100 From: Arnd Bergmann To: linux-arch@vger.kernel.org Cc: linux-kbuild@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@vger.kernel.org, Russell King , Andrew Morton , kernel-build-reports@lists.linaro.org, kvmarm@lists.cs.columbia.edu, Arnd Bergmann Subject: [PATCH 02/13] KVM: arm: fix gcc-4.5 build Date: Fri, 16 Dec 2016 11:56:23 +0100 Message-Id: <20161216105634.235457-3-arnd@arndb.de> X-Mailer: git-send-email 2.9.0 In-Reply-To: <20161216105634.235457-1-arnd@arndb.de> References: <20161216105634.235457-1-arnd@arndb.de> X-Provags-ID: V03:K0:DVCkK3KEcguB1qqf1HWMbg0hpnzFrcizh07o9Hxz7RocFz4+fsM cyZwBshFHrz2vVTZMxBsbM+9XI/jC81mwum1gKOiKXOuG+nfhnJC+mbYUZnkyTsMNIh/3xw dYMAaWQnqjtOCS/Wfio8wImPTh3eDmyJCeYMtNShd86ITYcOvb6RBf9qLwiFneqIi1OTzwv Hl6XswuE38jZlXQEItbCg== X-UI-Out-Filterresults: notjunk:1; V01:K0:wtr0xb8jMOM=:4X0/E50Oq98RE3pOFtlkA8 Q2iLPZlZ/9M+KsrBZ7Uodk6NfBmZwkgma5Tz1WScnXLHjpPKQ7PFUzUqCRKaCbSaFHy9XQNmP JUWCCvi4NgS+1hDgbsDqtYeNkPdYJd82G4NvGzdB2XDKSLiRYuSVN/Q0RY8OhH4IjdirYICIp Vlmx2wpleOfb+klBaOJ1AebKJM1DZiLM7bPem/ZmMehIpR9kpJckGgsCcgBPhTjjloyUbhvrE kE16NjTfD9UD73dF68LxpQ+xU7U65szMmUsL0nV60zhPx/mdaiBmV5o1OfN4ETjzvH7Zizw0q WpzGPIpR39qZvoYaf3tKbK4upCv3pzquNT8qYetJ3vFbtjEVhJs0obAve/PaVxz0BdwiEb0Qm O2iAipxDw2w0uoOc3s9YMtSgvGLElUWrtWAqg7zsqvR4cuVD7cn8LqYhbGfgG1u6nbJvpzJH6 jynn1HoQ9P5H78jPcH5XCYAgD9cmTuYRE7kVN09sebw+Sb9/PA32Kc6G9mZpNAG9ch3AHoBZg nvhPmQ4pDu4ZkdgWQPmuJCwSJdF9lxxHjmZJPTbnidvftLrE6a9O7yreYj+0bev23N6gOeC41 /smJgWodduKKmaIj/geaH0SwJcFY/bo/cY/BzsReFOckF/ABt9bF8tU96Jbelm4cZXDaDDXRX C4UucysoST/CVEqwHyxsNt7+6gBBDpfnzPEnwmt0mBUjGqi1ttzgxebcQwyJP3OhO/hQ= Sender: linux-kbuild-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kbuild@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Old gcc versions cannot used named initializers for anonymous unions, leading to a build failure here. This replaces the anonymous union with a named one, which allows us to build with at least gcc-4.3 through 4.5. Versions 4.6 and higher are fine without this. virt/kvm/arm/vgic/vgic-mmio-v2.c:295: error: unknown field 'read' specified in initializer virt/kvm/arm/vgic/vgic-mmio-v2.c:295: warning: missing braces around initializer virt/kvm/arm/vgic/vgic-mmio-v2.c:295: warning: (near initialization for 'vgic_v2_dist_registers[0].') virt/kvm/arm/vgic/vgic-mmio-v2.c:295: error: unknown field 'write' specified in initializer virt/kvm/arm/vgic/vgic-mmio-v2.c:298: error: unknown field 'read' specified in initializer Fixes: 59c5ab40989a ("KVM: arm64: vgic-its: Introduce ITS emulation file with MMIO framework") Signed-off-by: Arnd Bergmann Acked-by: Christoffer Dall --- virt/kvm/arm/vgic/vgic-its.c | 4 ++-- virt/kvm/arm/vgic/vgic-mmio-v3.c | 8 ++++---- virt/kvm/arm/vgic/vgic-mmio.c | 16 ++++++++-------- virt/kvm/arm/vgic/vgic-mmio.h | 12 ++++++------ 4 files changed, 20 insertions(+), 20 deletions(-) diff --git a/virt/kvm/arm/vgic/vgic-its.c b/virt/kvm/arm/vgic/vgic-its.c index 8c2b3cdcb2c5..922d820e2646 100644 --- a/virt/kvm/arm/vgic/vgic-its.c +++ b/virt/kvm/arm/vgic/vgic-its.c @@ -1292,8 +1292,8 @@ static void vgic_mmio_write_its_baser(struct kvm *kvm, .reg_offset = off, \ .len = length, \ .access_flags = acc, \ - .its_read = rd, \ - .its_write = wr, \ + .r.its_read = rd, \ + .w.its_write = wr, \ } static void its_mmio_write_wi(struct kvm *kvm, struct vgic_its *its, diff --git a/virt/kvm/arm/vgic/vgic-mmio-v3.c b/virt/kvm/arm/vgic/vgic-mmio-v3.c index 50f42f0f8c4f..aa31110e4ebd 100644 --- a/virt/kvm/arm/vgic/vgic-mmio-v3.c +++ b/virt/kvm/arm/vgic/vgic-mmio-v3.c @@ -362,15 +362,15 @@ static void vgic_mmio_write_pendbase(struct kvm_vcpu *vcpu, .bits_per_irq = bpi, \ .len = (bpi * VGIC_NR_PRIVATE_IRQS) / 8, \ .access_flags = acc, \ - .read = vgic_mmio_read_raz, \ - .write = vgic_mmio_write_wi, \ + .r.read = vgic_mmio_read_raz, \ + .w.write = vgic_mmio_write_wi, \ }, { \ .reg_offset = off + (bpi * VGIC_NR_PRIVATE_IRQS) / 8, \ .bits_per_irq = bpi, \ .len = (bpi * (1024 - VGIC_NR_PRIVATE_IRQS)) / 8, \ .access_flags = acc, \ - .read = rd, \ - .write = wr, \ + .r.read = rd, \ + .w.write = wr, \ } static const struct vgic_register_region vgic_v3_dist_registers[] = { diff --git a/virt/kvm/arm/vgic/vgic-mmio.c b/virt/kvm/arm/vgic/vgic-mmio.c index ebe1b9fa3c4d..6690922bc6b0 100644 --- a/virt/kvm/arm/vgic/vgic-mmio.c +++ b/virt/kvm/arm/vgic/vgic-mmio.c @@ -500,16 +500,16 @@ static int dispatch_mmio_read(struct kvm_vcpu *vcpu, struct kvm_io_device *dev, switch (iodev->iodev_type) { case IODEV_CPUIF: - data = region->read(vcpu, addr, len); + data = region->r.read(vcpu, addr, len); break; case IODEV_DIST: - data = region->read(vcpu, addr, len); + data = region->r.read(vcpu, addr, len); break; case IODEV_REDIST: - data = region->read(iodev->redist_vcpu, addr, len); + data = region->r.read(iodev->redist_vcpu, addr, len); break; case IODEV_ITS: - data = region->its_read(vcpu->kvm, iodev->its, addr, len); + data = region->r.its_read(vcpu->kvm, iodev->its, addr, len); break; } @@ -531,16 +531,16 @@ static int dispatch_mmio_write(struct kvm_vcpu *vcpu, struct kvm_io_device *dev, switch (iodev->iodev_type) { case IODEV_CPUIF: - region->write(vcpu, addr, len, data); + region->w.write(vcpu, addr, len, data); break; case IODEV_DIST: - region->write(vcpu, addr, len, data); + region->w.write(vcpu, addr, len, data); break; case IODEV_REDIST: - region->write(iodev->redist_vcpu, addr, len, data); + region->w.write(iodev->redist_vcpu, addr, len, data); break; case IODEV_ITS: - region->its_write(vcpu->kvm, iodev->its, addr, len, data); + region->w.its_write(vcpu->kvm, iodev->its, addr, len, data); break; } diff --git a/virt/kvm/arm/vgic/vgic-mmio.h b/virt/kvm/arm/vgic/vgic-mmio.h index 84961b4e4422..7f7da7239612 100644 --- a/virt/kvm/arm/vgic/vgic-mmio.h +++ b/virt/kvm/arm/vgic/vgic-mmio.h @@ -26,14 +26,14 @@ struct vgic_register_region { unsigned int len); unsigned long (*its_read)(struct kvm *kvm, struct vgic_its *its, gpa_t addr, unsigned int len); - }; + } r; union { void (*write)(struct kvm_vcpu *vcpu, gpa_t addr, unsigned int len, unsigned long val); void (*its_write)(struct kvm *kvm, struct vgic_its *its, gpa_t addr, unsigned int len, unsigned long val); - }; + } w; }; extern struct kvm_io_device_ops kvm_io_gic_ops; @@ -72,8 +72,8 @@ extern struct kvm_io_device_ops kvm_io_gic_ops; .bits_per_irq = bpi, \ .len = bpi * 1024 / 8, \ .access_flags = acc, \ - .read = rd, \ - .write = wr, \ + .r.read = rd, \ + .w.write = wr, \ } #define REGISTER_DESC_WITH_LENGTH(off, rd, wr, length, acc) \ @@ -82,8 +82,8 @@ extern struct kvm_io_device_ops kvm_io_gic_ops; .bits_per_irq = 0, \ .len = length, \ .access_flags = acc, \ - .read = rd, \ - .write = wr, \ + .r.read = rd, \ + .w.write = wr, \ } int kvm_vgic_register_mmio_region(struct kvm *kvm, struct kvm_vcpu *vcpu,