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 ®s) const
+BaseArmKvmCPU::getRegList(kvm_reg_list ®s) const
{
if (ioctl(KVM_GET_REG_LIST, (void *)®s) == -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 ®s) const;
+ bool getRegList(kvm_reg_list ®s) 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