Giacomo Travaglini has submitted this change. ( https://gem5-review.googlesource.com/c/public/gem5/+/47619 )

Change subject: arch-arm: Forward declare kvm_reg_list
......................................................................

arch-arm: Forward declare kvm_reg_list

The adoption of the gem5 namespace [1] broke aarch64 builds with
the following error:

build/ARM/arch/arm/kvm/base_cpu.cc:198:22: error: aggregate
'gem5::kvm_reg_list regs_probe' has incomplete type and cannot be
defined

In file included from build/ARM/arch/arm/kvm/base_cpu.cc:38:0:
build/ARM/arch/arm/kvm/base_cpu.hh:115:28: note: forward declaration of
'struct gem5::kvm_reg_list'
     std::unique_ptr<struct kvm_reg_list> tryGetRegList(uint64_t nelem)
const;

Forward declaring the struct defined in linux/kvm.hh (included in source
file) in the global namespace, rather than the gem5 one fixes the
problem

[1]: https://gem5-review.googlesource.com/c/public/gem5/+/46323

Signed-off-by: Giacomo Travaglini <[email protected]>
Change-Id: I96c7d31aa4810edcf98e23cefeaf4895620b6444
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/47619
Reviewed-by: Daniel Carvalho <[email protected]>
Reviewed-by: Richard Cooper <[email protected]>
Tested-by: kokoro <[email protected]>
---
M src/arch/arm/kvm/base_cpu.cc
M src/arch/arm/kvm/base_cpu.hh
2 files changed, 8 insertions(+), 6 deletions(-)

Approvals:
  Daniel Carvalho: Looks good to me, approved
  Richard Cooper: Looks good to me, but someone else must approve
  Giacomo Travaglini: Looks good to me, approved
  kokoro: Regressions pass



diff --git a/src/arch/arm/kvm/base_cpu.cc b/src/arch/arm/kvm/base_cpu.cc
index d7df280..524b410 100644
--- a/src/arch/arm/kvm/base_cpu.cc
+++ b/src/arch/arm/kvm/base_cpu.cc
@@ -201,10 +201,10 @@

         // Request the actual register list now that we know how many
         // register we need to allocate space for.
-        std::unique_ptr<struct kvm_reg_list> regs;
-        const size_t size(sizeof(struct kvm_reg_list) +
+        std::unique_ptr<kvm_reg_list> regs;
+        const size_t size(sizeof(kvm_reg_list) +
                           regs_probe.n * sizeof(uint64_t));
-        regs.reset((struct kvm_reg_list *)operator new(size));
+        regs.reset((kvm_reg_list *)operator new(size));
         regs->n = regs_probe.n;
         if (!getRegList(*regs))
             panic("Failed to determine register list size.\n");
@@ -223,7 +223,7 @@
 }

 bool
-BaseArmKvmCPU::getRegList(struct kvm_reg_list &regs) const
+BaseArmKvmCPU::getRegList(kvm_reg_list &regs) const
 {
     if (ioctl(KVM_GET_REG_LIST, (void *)&regs) == -1) {
         if (errno == E2BIG) {
diff --git a/src/arch/arm/kvm/base_cpu.hh b/src/arch/arm/kvm/base_cpu.hh
index 81e8596..ec9e5ad 100644
--- a/src/arch/arm/kvm/base_cpu.hh
+++ b/src/arch/arm/kvm/base_cpu.hh
@@ -43,6 +43,8 @@
 #include "cpu/kvm/base.hh"
 #include "dev/arm/base_gic.hh"

+struct kvm_reg_list;
+
 namespace gem5
 {

@@ -112,7 +114,7 @@
     void kvmArmVCpuInit(const struct kvm_vcpu_init &init);

   private:
- std::unique_ptr<struct kvm_reg_list> tryGetRegList(uint64_t nelem) const;
+    std::unique_ptr<kvm_reg_list> tryGetRegList(uint64_t nelem) const;

     /**
      * Get a list of registers supported by getOneReg() and setOneReg().
@@ -121,7 +123,7 @@
      * is too small to hold the complete register list (the required
      * size is written to regs.n in this case). True on success.
      */
-    bool getRegList(struct kvm_reg_list &regs) const;
+    bool getRegList(kvm_reg_list &regs) const;

     /**
      * Cached copy of the list of registers supported by KVM

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/47619
To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings

Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I96c7d31aa4810edcf98e23cefeaf4895620b6444
Gerrit-Change-Number: 47619
Gerrit-PatchSet: 3
Gerrit-Owner: Giacomo Travaglini <[email protected]>
Gerrit-Reviewer: Andreas Sandberg <[email protected]>
Gerrit-Reviewer: Daniel Carvalho <[email protected]>
Gerrit-Reviewer: Giacomo Travaglini <[email protected]>
Gerrit-Reviewer: Richard Cooper <[email protected]>
Gerrit-Reviewer: kokoro <[email protected]>
Gerrit-MessageType: merged
_______________________________________________
gem5-dev mailing list -- [email protected]
To unsubscribe send an email to [email protected]
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

Reply via email to