[libvirt] [PATCH V3] AArch64: Porting of armv7l conditons to run qemu for aarch64.

2014-01-02 Thread Pranavkumar Sawargaonkar
AArch64 qemu has similar behavior as armv7l, like use of mmio etc.
This patch adds similar bypass checks what we have for armv7l to aarch64.
E.g. we are enabling mmio transport for Nicdev.
Making addDefaultUSB and addDefaultMemballoon to false etc.

V3:
- Adding missing domain rng schema for aarcg64 and test case in
  testutilsqemu.c which was causing test suite failure
  while running make check.

V2:
- Added testcase to qemuxml2argvtest as suggested
  during review comments of V1.

V1:
- Initial patch.

Signed-off-by: Anup Patel 
Signed-off-by: Pranavkumar Sawargaonkar 
---
 docs/schemas/domaincommon.rng  |   19 +
 src/qemu/qemu_capabilities.c   |2 +-
 src/qemu/qemu_command.c|8 ++--
 src/qemu/qemu_domain.c |4 ++
 .../qemuxml2argv-aarch64-virt-virtio.args  |   14 ++
 .../qemuxml2argv-aarch64-virt-virtio.xml   |   45 
 tests/qemuxml2argvtest.c   |5 +++
 tests/testutilsqemu.c  |   30 +
 8 files changed, 123 insertions(+), 4 deletions(-)
 create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-virtio.args
 create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-virtio.xml

diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng
index be32c6b..86a60c9 100644
--- a/docs/schemas/domaincommon.rng
+++ b/docs/schemas/domaincommon.rng
@@ -305,6 +305,7 @@
   
   
   
+  
 
   
   hvm
@@ -432,6 +433,24 @@
   
 
   
+  
+
+  
+
+  
+aarch64
+  
+
+  
+  
+
+  
+[a-zA-Z0-9_\.\-]+
+  
+
+  
+
+  
   
 
   
diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
index 4f64f87..ed182e0 100644
--- a/src/qemu/qemu_capabilities.c
+++ b/src/qemu/qemu_capabilities.c
@@ -2917,7 +2917,7 @@ virQEMUCapsSupportsChardev(virDomainDefPtr def,
 !virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE))
 return false;
 
-if (def->os.arch != VIR_ARCH_ARMV7L)
+if ((def->os.arch != VIR_ARCH_ARMV7L) && (def->os.arch != 
VIR_ARCH_AARCH64))
 return true;
 
 /* This may not be true for all ARM machine types, but at least
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index d723dc8..2c66718 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -427,7 +427,8 @@ qemuDomainSupportsNicdev(virDomainDefPtr def,
 return false;
 
 /* non-virtio ARM nics require legacy -net nic */
-if (def->os.arch == VIR_ARCH_ARMV7L &&
+if (((def->os.arch == VIR_ARCH_ARMV7L) ||
+(def->os.arch == VIR_ARCH_AARCH64)) &&
 net->info.type != VIR_DOMAIN_DEVICE_ADDRESS_TYPE_VIRTIO_MMIO)
 return false;
 
@@ -1340,7 +1341,8 @@ static int
 qemuDomainAssignARMVirtioMMIOAddresses(virDomainDefPtr def,
virQEMUCapsPtr qemuCaps)
 {
-if (def->os.arch == VIR_ARCH_ARMV7L &&
+if (((def->os.arch == VIR_ARCH_ARMV7L) ||
+(def->os.arch == VIR_ARCH_AARCH64)) &&
 (STRPREFIX(def->os.machine, "vexpress-") ||
 STREQ(def->os.machine, "virt")) &&
 virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_VIRTIO_MMIO)) {
@@ -1872,7 +1874,7 @@ cleanup:
 
 static bool
 qemuDomainSupportsPCI(virDomainDefPtr def) {
-if (def->os.arch != VIR_ARCH_ARMV7L)
+if ((def->os.arch != VIR_ARCH_ARMV7L) && (def->os.arch != 
VIR_ARCH_AARCH64))
 return true;
 
 if (STREQ(def->os.machine, "versatilepb"))
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index e964c75..c947e2e 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -727,6 +727,10 @@ qemuDomainDefPostParse(virDomainDefPtr def,
addDefaultUSB = false;
addDefaultMemballoon = false;
break;
+case VIR_ARCH_AARCH64:
+   addDefaultUSB = false;
+   addDefaultMemballoon = false;
+   break;
 
 case VIR_ARCH_ALPHA:
 case VIR_ARCH_PPC:
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-virtio.args 
b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-virtio.args
new file mode 100644
index 000..afd6e41
--- /dev/null
+++ b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-virtio.args
@@ -0,0 +1,14 @@
+LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test QEMU_AUDIO_DRV=none \
+/usr/bin/qemu-system-aarch64 -S -M virt -m 1024 -smp 1 -nographic \
+-nodefconfig -nodefaults -monitor unix:/tmp/test-monitor,server,nowait \
+-boot c -kernel /aarch64.kernel -initrd /aarch64.initrd -append \
+'earlyprintk console=ttyAMA0,115200n8 rw root=/dev/vda rootwait' \
+-dtb /aarch64.dtb -device virtio-serial-device,id=vir

[libvirt] [PATCH V2] AArch64: Porting of armv7l conditons to run qemu for aarch64.

2013-12-05 Thread Pranavkumar Sawargaonkar
AArch64 qemu has similar behavior as armv7l, like use of mmio etc.
This patch adds similar bypass checks what we have for armv7l to aarch64.
E.g. we are enabling mmio transport for Nicdev.
Making addDefaultUSB and addDefaultMemballoon to false etc.

This patch also adds testcase to qemuxml2argvtest as suggested
during review comments of V1 of same patch.

Signed-off-by: Anup Patel 
Signed-off-by: Pranavkumar Sawargaonkar 
---
 src/qemu/qemu_capabilities.c   |2 +-
 src/qemu/qemu_command.c|8 ++--
 src/qemu/qemu_domain.c |4 ++
 .../qemuxml2argv-aarch64-virt-virtio.args  |   14 ++
 .../qemuxml2argv-aarch64-virt-virtio.xml   |   45 
 tests/qemuxml2argvtest.c   |4 ++
 6 files changed, 73 insertions(+), 4 deletions(-)
 create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-virtio.args
 create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-virtio.xml

diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
index a68e555..9df3292 100644
--- a/src/qemu/qemu_capabilities.c
+++ b/src/qemu/qemu_capabilities.c
@@ -2889,7 +2889,7 @@ virQEMUCapsSupportsChardev(virDomainDefPtr def,
 !virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE))
 return false;
 
-if (def->os.arch != VIR_ARCH_ARMV7L)
+if ((def->os.arch != VIR_ARCH_ARMV7L) && (def->os.arch != 
VIR_ARCH_AARCH64))
 return true;
 
 /* This may not be true for all ARM machine types, but at least
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index 9539be7..62a16a2 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -427,7 +427,8 @@ qemuDomainSupportsNicdev(virDomainDefPtr def,
 return false;
 
 /* non-virtio ARM nics require legacy -net nic */
-if (def->os.arch == VIR_ARCH_ARMV7L &&
+if (((def->os.arch == VIR_ARCH_ARMV7L) ||
+(def->os.arch == VIR_ARCH_AARCH64)) &&
 net->info.type != VIR_DOMAIN_DEVICE_ADDRESS_TYPE_VIRTIO_MMIO)
 return false;
 
@@ -1340,7 +1341,8 @@ static int
 qemuDomainAssignARMVirtioMMIOAddresses(virDomainDefPtr def,
virQEMUCapsPtr qemuCaps)
 {
-if (def->os.arch == VIR_ARCH_ARMV7L &&
+if (((def->os.arch == VIR_ARCH_ARMV7L) ||
+(def->os.arch == VIR_ARCH_AARCH64)) &&
 (STRPREFIX(def->os.machine, "vexpress-") ||
 STREQ(def->os.machine, "virt")) &&
 virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_VIRTIO_MMIO)) {
@@ -1872,7 +1874,7 @@ cleanup:
 
 static bool
 qemuDomainSupportsPCI(virDomainDefPtr def) {
-if (def->os.arch != VIR_ARCH_ARMV7L)
+if ((def->os.arch != VIR_ARCH_ARMV7L) && (def->os.arch != 
VIR_ARCH_AARCH64))
 return true;
 
 if (STREQ(def->os.machine, "versatilepb"))
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index 346fec3..529b367 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -727,6 +727,10 @@ qemuDomainDefPostParse(virDomainDefPtr def,
addDefaultUSB = false;
addDefaultMemballoon = false;
break;
+case VIR_ARCH_AARCH64:
+   addDefaultUSB = false;
+   addDefaultMemballoon = false;
+   break;
 
 case VIR_ARCH_ALPHA:
 case VIR_ARCH_PPC:
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-virtio.args 
b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-virtio.args
new file mode 100644
index 000..afd6e41
--- /dev/null
+++ b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-virtio.args
@@ -0,0 +1,14 @@
+LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test QEMU_AUDIO_DRV=none \
+/usr/bin/qemu-system-aarch64 -S -M virt -m 1024 -smp 1 -nographic \
+-nodefconfig -nodefaults -monitor unix:/tmp/test-monitor,server,nowait \
+-boot c -kernel /aarch64.kernel -initrd /aarch64.initrd -append \
+'earlyprintk console=ttyAMA0,115200n8 rw root=/dev/vda rootwait' \
+-dtb /aarch64.dtb -device virtio-serial-device,id=virtio-serial0 -usb \
+-drive file=/aarch64.raw,if=none,id=drive-virtio-disk0 \
+-device virtio-blk-device,drive=drive-virtio-disk0,id=virtio-disk0 \
+-device virtio-net-device,vlan=0,id=net0,mac=52:54:00:09:a4:37 \
+-net user,vlan=0,name=hostnet0 -serial pty -chardev pty,id=charconsole1 \
+-device virtconsole,chardev=charconsole1,id=console1 \
+-device virtio-balloon-device,id=balloon0 \
+-object rng-random,id=rng0,filename=/dev/random \
+-device virtio-rng-device,rng=rng0
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-virtio.xml 
b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-virtio.xml
new file mode 100644
index 000..184b62c
--- /dev/null
+++ b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-virtio.xml
@@ -0,0 +1,45 @@
+
+  aarch64test
+  496d7ea8-9739-544b-4ebd-ef08be936e8b
+  1048576
+  

Re: [libvirt] [PATCH 0/6] AArch64 support for libvirt.

2013-10-17 Thread Pranavkumar Sawargaonkar
Hi Cole,

On 16 October 2013 02:34, Cole Robinson  wrote:
> On 10/08/2013 09:49 AM, Pranavkumar Sawargaonkar wrote:
>> This patchset extends libvirt for AArch64 (armv8a).
>>
>> All patches have been tested on APM X-Gene SoC and we are able
>> to run libvirtd on APM X-Gene SOC and spawn VMs remotely using
>> virsh and virt-manager.
>>
>> Pranavkumar Sawargaonkar (6):
>>   AArch64: Add AArch64 architecture to list of valid arches.
>>   AArch64: CPU Support for AArch64 (ARMv8 64bit).
>>   AArch64: Parse cputopology from /proc/cpuinfo.
>>   Implement minimal sysinfo for AArch64 platforms.
>>   Add parsing of AArch64 qemu capabilities.
>>   AArch64: Add qemu capabilities schemeta for test.
>>
>>  src/Makefile.am  |1 +
>>  src/cpu/cpu.c|2 +
>>  src/cpu/cpu_aarch64.c|   79 
>> ++
>>  src/cpu/cpu_aarch64.h|   31 ++
>>  src/nodeinfo.c   |5 +-
>>  src/qemu/qemu_capabilities.c |4 ++
>>  src/util/virarch.c   |1 +
>>  src/util/virarch.h   |1 +
>>  src/util/virsysinfo.c|3 +-
>>  tests/capabilityschemadata/caps-qemu-kvm.xml |   11 
>>  tests/sysinfodata/aarch64cpuinfo.data|   10 
>>  tests/sysinfodata/aarch64sysinfo.expect  |   10 
>>  tests/sysinfotest.c  |   14 -
>>  13 files changed, 168 insertions(+), 4 deletions(-)
>>  create mode 100644 src/cpu/cpu_aarch64.c
>>  create mode 100644 src/cpu/cpu_aarch64.h
>>  create mode 100644 tests/sysinfodata/aarch64cpuinfo.data
>>  create mode 100644 tests/sysinfodata/aarch64sysinfo.expect
>>
>
> I pushed 1-4 and 6, skipping 5 since as Dan pointed out it shouldn't be 
> required.
>
> 2 needed a small fix due to a recent libvirt refactoring.
> 6 needed a small schema addition, please make sure you have xmllint installed,
> since certain tests need it.

Thanks for pushing the patches.
Sure i will install xmllint.
>
> - Cole

Thanks,
Pranav

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list


Re: [libvirt] [PATCH] AArch64: Porting of armv7l conditons to run qemu for aarch64.

2013-10-10 Thread Pranavkumar Sawargaonkar
Hi,

On 10 October 2013 17:20, Daniel P. Berrange  wrote:
> On Thu, Oct 10, 2013 at 05:10:41PM +0530, Pranavkumar Sawargaonkar wrote:
>> AArch64 qemu has similar behavior as armv7l, like use of mmio etc.
>> This patch adds similar bypass checks what we have for armv7l to aarch64.
>> E.g. we are enabling mmio transport for Nicdev.
>> Making addDefaultUSB and addDefaultMemballoon to false etc.
>>
>> Signed-off-by: Anup Patel 
>> Signed-off-by: Pranavkumar Sawargaonkar 
>> ---
>>  src/qemu/qemu_capabilities.c |2 +-
>>  src/qemu/qemu_command.c  |8 +---
>>  src/qemu/qemu_domain.c   |5 -
>>  3 files changed, 10 insertions(+), 5 deletions(-)
>
> Our general rule is that changes to qemu_command.c should be accompanied
> by additions to tests/qemuxml2argvtest.c to validate their correctness,
> otherwise it is all to easy for us to have regressions in behaviour later.
Ok i will revise this patch.

>
> Daniel
> --
> |: http://berrange.com  -o-http://www.flickr.com/photos/dberrange/ :|
> |: http://libvirt.org  -o- http://virt-manager.org :|
> |: http://autobuild.org   -o- http://search.cpan.org/~danberr/ :|
> |: http://entangle-photo.org   -o-   http://live.gnome.org/gtk-vnc :|
Thanks,
Pranav

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list


Re: [libvirt] [PATCH 1/6] AArch64: Add AArch64 architecture to list of valid arches.

2013-10-10 Thread Pranavkumar Sawargaonkar
Hi Daniel,

On 9 October 2013 20:14, Daniel P. Berrange  wrote:
> On Tue, Oct 08, 2013 at 07:19:06PM +0530, Pranavkumar Sawargaonkar wrote:
>> Adding AArch64(ARMv8 64bit) to the current list of valid architectures.
>>
>> For now, AArch64 name would imply AArch64 LE mode only. In future,
>> we might have separate names for AArch64 LE and BE.
>
> Presumably the kernel has fixed 'aarch64' as always referring
> to LE and would add a variant like 'aarch64b' for BE mode if
> that was ever supported ?

Firstly thanks for Acking my patches.
Yes linux currently uses aarch64 for LE . There is a BE port going on
and should add a variant similar to what you have mentioned to
distinguish.

>
>> Signed-off-by: Anup Patel 
>> Signed-off-by: Pranavkumar Sawargaonkar 
>> ---
>>  src/util/virarch.c |1 +
>>  src/util/virarch.h |1 +
>>  2 files changed, 2 insertions(+)
>>
>> diff --git a/src/util/virarch.c b/src/util/virarch.c
>> index 694eba1..9e88c68 100644
>> --- a/src/util/virarch.c
>> +++ b/src/util/virarch.c
>> @@ -38,6 +38,7 @@ static const struct virArchData {
>>  { "armv6l",   32, VIR_ARCH_LITTLE_ENDIAN },
>>  { "armv7l",   32, VIR_ARCH_LITTLE_ENDIAN },
>>  { "armv7b",   32, VIR_ARCH_BIG_ENDIAN },
>> +{ "aarch64",  64, VIR_ARCH_LITTLE_ENDIAN },
>>
>>  { "cris", 32, VIR_ARCH_LITTLE_ENDIAN },
>>  { "i686", 32, VIR_ARCH_LITTLE_ENDIAN },
>> diff --git a/src/util/virarch.h b/src/util/virarch.h
>> index 3530f7c..d0bf9d9 100644
>> --- a/src/util/virarch.h
>> +++ b/src/util/virarch.h
>> @@ -30,6 +30,7 @@ typedef enum {
>>  VIR_ARCH_ARMV6L,   /* ARMv6   32 LE 
>> http://en.wikipedia.org/wiki/ARM_architecture */
>>  VIR_ARCH_ARMV7L,   /* ARMv7   32 LE 
>> http://en.wikipedia.org/wiki/ARM_architecture */
>>  VIR_ARCH_ARMV7B,   /* ARMv7   32 BE 
>> http://en.wikipedia.org/wiki/ARM_architecture */
>> +VIR_ARCH_AARCH64,  /* ARMv8   64 LE 
>> http://en.wikipedia.org/wiki/ARM_architecture */
>>
>>  VIR_ARCH_CRIS, /* ETRAX   32 LE 
>> http://en.wikipedia.org/wiki/ETRAX_CRIS */
>>  VIR_ARCH_I686, /* x86 32 LE 
>> http://en.wikipedia.org/wiki/X86 */
>
> ACK
>
>
> Daniel
> --
> |: http://berrange.com  -o-http://www.flickr.com/photos/dberrange/ :|
> |: http://libvirt.org  -o- http://virt-manager.org :|
> |: http://autobuild.org   -o- http://search.cpan.org/~danberr/ :|
> |: http://entangle-photo.org   -o-   http://live.gnome.org/gtk-vnc :|
>
> --
> libvir-list mailing list
> libvir-list@redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list

Thanks,
Pranav

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list


[libvirt] [PATCH] AArch64: Porting of armv7l conditons to run qemu for aarch64.

2013-10-10 Thread Pranavkumar Sawargaonkar
AArch64 qemu has similar behavior as armv7l, like use of mmio etc.
This patch adds similar bypass checks what we have for armv7l to aarch64.
E.g. we are enabling mmio transport for Nicdev.
Making addDefaultUSB and addDefaultMemballoon to false etc.

Signed-off-by: Anup Patel 
Signed-off-by: Pranavkumar Sawargaonkar 
---
 src/qemu/qemu_capabilities.c |2 +-
 src/qemu/qemu_command.c  |8 +---
 src/qemu/qemu_domain.c   |5 -
 3 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
index 1eae4ba..74a1690 100644
--- a/src/qemu/qemu_capabilities.c
+++ b/src/qemu/qemu_capabilities.c
@@ -2872,7 +2872,7 @@ virQEMUCapsSupportsChardev(virDomainDefPtr def,
 !virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE))
 return false;
 
-if (def->os.arch != VIR_ARCH_ARMV7L)
+if ((def->os.arch != VIR_ARCH_ARMV7L) && (def->os.arch != 
VIR_ARCH_AARCH64))
 return true;
 
 /* This may not be true for all ARM machine types, but at least
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index 22cc5f2..1c4de84 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -427,7 +427,8 @@ qemuDomainSupportsNicdev(virDomainDefPtr def,
 return false;
 
 /* non-virtio ARM nics require legacy -net nic */
-if (def->os.arch == VIR_ARCH_ARMV7L &&
+if (((def->os.arch == VIR_ARCH_ARMV7L) ||
+(def->os.arch == VIR_ARCH_AARCH64)) &&
 net->info.type != VIR_DOMAIN_DEVICE_ADDRESS_TYPE_VIRTIO_MMIO)
 return false;
 
@@ -1339,7 +1340,8 @@ static int
 qemuDomainAssignARMVirtioMMIOAddresses(virDomainDefPtr def,
virQEMUCapsPtr qemuCaps)
 {
-if (def->os.arch == VIR_ARCH_ARMV7L &&
+if (((def->os.arch == VIR_ARCH_ARMV7L) ||
+(def->os.arch == VIR_ARCH_AARCH64)) &&
 STRPREFIX(def->os.machine, "vexpress-") &&
 virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_VIRTIO_MMIO)) {
 qemuDomainPrimeVirtioDeviceAddresses(
@@ -1870,7 +1872,7 @@ cleanup:
 
 static bool
 qemuDomainSupportsPCI(virDomainDefPtr def) {
-if (def->os.arch != VIR_ARCH_ARMV7L)
+if ((def->os.arch != VIR_ARCH_ARMV7L) && (def->os.arch != 
VIR_ARCH_AARCH64))
 return true;
 
 if (STREQ(def->os.machine, "versatilepb"))
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index 968e323..f4986d7 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -727,7 +727,10 @@ qemuDomainDefPostParse(virDomainDefPtr def,
addDefaultUSB = false;
addDefaultMemballoon = false;
break;
-
+case VIR_ARCH_AARCH64:
+   addDefaultUSB = false;
+   addDefaultMemballoon = false;
+   break;
 case VIR_ARCH_ALPHA:
 case VIR_ARCH_PPC:
 case VIR_ARCH_PPC64:
-- 
1.7.9.5

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list


[libvirt] [PATCH 6/6] AArch64: Add qemu capabilities schemeta for test.

2013-10-08 Thread Pranavkumar Sawargaonkar
Add qemu AArch64 capabilities schemeta in caps-qemu-kvm.xml.

Signed-off-by: Anup Patel 
Signed-off-by: Pranavkumar Sawargaonkar 
---
 tests/capabilityschemadata/caps-qemu-kvm.xml |   11 +++
 1 file changed, 11 insertions(+)

diff --git a/tests/capabilityschemadata/caps-qemu-kvm.xml 
b/tests/capabilityschemadata/caps-qemu-kvm.xml
index 1fbc22b..de0c57f 100644
--- a/tests/capabilityschemadata/caps-qemu-kvm.xml
+++ b/tests/capabilityschemadata/caps-qemu-kvm.xml
@@ -113,6 +113,17 @@
 
   
 hvm
+
+  64
+  /usr/bin/qemu-system-aarch64
+  machvirt
+  
+  
+
+  
+
+  
+hvm
 
   32
   /usr/bin/qemu-system-microblaze
-- 
1.7.9.5

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list


[libvirt] [PATCH 5/6] Add parsing of AArch64 qemu capabilities.

2013-10-08 Thread Pranavkumar Sawargaonkar
Parse qemu capabilities AArch64 just like arm 32bit.

Signed-off-by: Anup Patel 
Signed-off-by: Pranavkumar Sawargaonkar 
---
 src/qemu/qemu_capabilities.c |4 
 1 file changed, 4 insertions(+)

diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
index 7c39c1c..1eae4ba 100644
--- a/src/qemu/qemu_capabilities.c
+++ b/src/qemu/qemu_capabilities.c
@@ -300,6 +300,8 @@ static virArch virQEMUCapsArchFromString(const char *arch)
 return VIR_ARCH_I686;
 if (STREQ(arch, "arm"))
 return VIR_ARCH_ARMV7L;
+if (STREQ(arch, "aarch64"))
+return VIR_ARCH_AARCH64;
 
 return virArchFromString(arch);
 }
@@ -311,6 +313,8 @@ static const char *virQEMUCapsArchToString(virArch arch)
 return "i386";
 else if (arch == VIR_ARCH_ARMV7L)
 return "arm";
+else if (arch == VIR_ARCH_AARCH64)
+return "aarch64";
 
 return virArchToString(arch);
 }
-- 
1.7.9.5

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list


[libvirt] [PATCH 3/6] AArch64: Parse cputopology from /proc/cpuinfo.

2013-10-08 Thread Pranavkumar Sawargaonkar
CPU "parser" for AArch64.
Showing cputopology in arm64 linux is work-in-progress so for now
all AArch64 cpus belong to same socket (like PPC).

Also we parse BogoMIPS same like arm 32bit.

Signed-off-by: Anup Patel 
Signed-off-by: Pranavkumar Sawargaonkar 
---
 src/nodeinfo.c |5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/nodeinfo.c b/src/nodeinfo.c
index 320d8f8..309066c 100644
--- a/src/nodeinfo.c
+++ b/src/nodeinfo.c
@@ -205,7 +205,8 @@ virNodeParseSocket(const char *dir, unsigned int cpu)
 # if defined(__powerpc__) || \
 defined(__powerpc64__) || \
 defined(__s390__) || \
-defined(__s390x__)
+defined(__s390x__) || \
+defined(__aarch64__)
 /* ppc and s390(x) has -1 */
 if (ret < 0)
 ret = 0;
@@ -441,7 +442,7 @@ int linuxNodeInfoCPUPopulate(FILE *cpuinfo,
  * and parsed in next iteration, because it is not in expected
  * format and thus lead to error. */
 }
-# elif defined(__arm__)
+# elif defined(__arm__) || defined(__aarch64__)
 char *buf = line;
 if (STRPREFIX(buf, "BogoMIPS")) {
 char *p;
-- 
1.7.9.5

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list


[libvirt] [PATCH 1/6] AArch64: Add AArch64 architecture to list of valid arches.

2013-10-08 Thread Pranavkumar Sawargaonkar
Adding AArch64(ARMv8 64bit) to the current list of valid architectures.

For now, AArch64 name would imply AArch64 LE mode only. In future,
we might have separate names for AArch64 LE and BE.

Signed-off-by: Anup Patel 
Signed-off-by: Pranavkumar Sawargaonkar 
---
 src/util/virarch.c |1 +
 src/util/virarch.h |1 +
 2 files changed, 2 insertions(+)

diff --git a/src/util/virarch.c b/src/util/virarch.c
index 694eba1..9e88c68 100644
--- a/src/util/virarch.c
+++ b/src/util/virarch.c
@@ -38,6 +38,7 @@ static const struct virArchData {
 { "armv6l",   32, VIR_ARCH_LITTLE_ENDIAN },
 { "armv7l",   32, VIR_ARCH_LITTLE_ENDIAN },
 { "armv7b",   32, VIR_ARCH_BIG_ENDIAN },
+{ "aarch64",  64, VIR_ARCH_LITTLE_ENDIAN },
 
 { "cris", 32, VIR_ARCH_LITTLE_ENDIAN },
 { "i686", 32, VIR_ARCH_LITTLE_ENDIAN },
diff --git a/src/util/virarch.h b/src/util/virarch.h
index 3530f7c..d0bf9d9 100644
--- a/src/util/virarch.h
+++ b/src/util/virarch.h
@@ -30,6 +30,7 @@ typedef enum {
 VIR_ARCH_ARMV6L,   /* ARMv6   32 LE 
http://en.wikipedia.org/wiki/ARM_architecture */
 VIR_ARCH_ARMV7L,   /* ARMv7   32 LE 
http://en.wikipedia.org/wiki/ARM_architecture */
 VIR_ARCH_ARMV7B,   /* ARMv7   32 BE 
http://en.wikipedia.org/wiki/ARM_architecture */
+VIR_ARCH_AARCH64,  /* ARMv8   64 LE 
http://en.wikipedia.org/wiki/ARM_architecture */
 
 VIR_ARCH_CRIS, /* ETRAX   32 LE 
http://en.wikipedia.org/wiki/ETRAX_CRIS */
 VIR_ARCH_I686, /* x86 32 LE 
http://en.wikipedia.org/wiki/X86 */
-- 
1.7.9.5

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list


[libvirt] [PATCH 0/6] AArch64 support for libvirt.

2013-10-08 Thread Pranavkumar Sawargaonkar
This patchset extends libvirt for AArch64 (armv8a).

All patches have been tested on APM X-Gene SoC and we are able
to run libvirtd on APM X-Gene SOC and spawn VMs remotely using
virsh and virt-manager.

Pranavkumar Sawargaonkar (6):
  AArch64: Add AArch64 architecture to list of valid arches.
  AArch64: CPU Support for AArch64 (ARMv8 64bit).
  AArch64: Parse cputopology from /proc/cpuinfo.
  Implement minimal sysinfo for AArch64 platforms.
  Add parsing of AArch64 qemu capabilities.
  AArch64: Add qemu capabilities schemeta for test.

 src/Makefile.am  |1 +
 src/cpu/cpu.c|2 +
 src/cpu/cpu_aarch64.c|   79 ++
 src/cpu/cpu_aarch64.h|   31 ++
 src/nodeinfo.c   |5 +-
 src/qemu/qemu_capabilities.c |4 ++
 src/util/virarch.c   |1 +
 src/util/virarch.h   |1 +
 src/util/virsysinfo.c|3 +-
 tests/capabilityschemadata/caps-qemu-kvm.xml |   11 
 tests/sysinfodata/aarch64cpuinfo.data|   10 
 tests/sysinfodata/aarch64sysinfo.expect  |   10 
 tests/sysinfotest.c  |   14 -
 13 files changed, 168 insertions(+), 4 deletions(-)
 create mode 100644 src/cpu/cpu_aarch64.c
 create mode 100644 src/cpu/cpu_aarch64.h
 create mode 100644 tests/sysinfodata/aarch64cpuinfo.data
 create mode 100644 tests/sysinfodata/aarch64sysinfo.expect

-- 
1.7.9.5

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list


[libvirt] [PATCH 2/6] AArch64: CPU Support for AArch64 (ARMv8 64bit).

2013-10-08 Thread Pranavkumar Sawargaonkar
Adding CPU encoder/decoder for AArch64.

Signed-off-by: Anup Patel 
Signed-off-by: Pranavkumar Sawargaonkar 
---
 src/Makefile.am   |1 +
 src/cpu/cpu.c |2 ++
 src/cpu/cpu_aarch64.c |   79 +
 src/cpu/cpu_aarch64.h |   31 +++
 4 files changed, 113 insertions(+)
 create mode 100644 src/cpu/cpu_aarch64.c
 create mode 100644 src/cpu/cpu_aarch64.h

diff --git a/src/Makefile.am b/src/Makefile.am
index 201c268..d5e62d8 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -900,6 +900,7 @@ CPU_SOURCES =   
\
cpu/cpu_x86.h cpu/cpu_x86.c cpu/cpu_x86_data.h  \
cpu/cpu_s390.h cpu/cpu_s390.c   \
cpu/cpu_arm.h cpu/cpu_arm.c \
+   cpu/cpu_aarch64.h cpu/cpu_aarch64.c \
cpu/cpu_map.h cpu/cpu_map.c cpu/cpu_powerpc.h   \
cpu/cpu_powerpc.c cpu/cpu_ppc_data.h
 
diff --git a/src/cpu/cpu.c b/src/cpu/cpu.c
index 31de857..e611452 100644
--- a/src/cpu/cpu.c
+++ b/src/cpu/cpu.c
@@ -32,6 +32,7 @@
 #include "cpu_powerpc.h"
 #include "cpu_s390.h"
 #include "cpu_arm.h"
+#include "cpu_aarch64.h"
 #include "cpu_generic.h"
 #include "util/virstring.h"
 
@@ -44,6 +45,7 @@ static struct cpuArchDriver *drivers[] = {
 &cpuDriverPowerPC,
 &cpuDriverS390,
 &cpuDriverArm,
+&cpuDriverAARCH64,
 /* generic driver must always be the last one */
 &cpuDriverGeneric
 };
diff --git a/src/cpu/cpu_aarch64.c b/src/cpu/cpu_aarch64.c
new file mode 100644
index 000..8c78eca
--- /dev/null
+++ b/src/cpu/cpu_aarch64.c
@@ -0,0 +1,79 @@
+/*
+ * cpu_aarch64.c: CPU driver for AArch64 CPUs
+ *
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library.  If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ * Authors:
+ *  Anup Patel 
+ *  Pranavkumar Sawargaonkar 
+ */
+
+#include 
+
+#include "viralloc.h"
+#include "cpu.h"
+
+#define VIR_FROM_THIS VIR_FROM_CPU
+
+static const virArch archs[] = { VIR_ARCH_AARCH64 };
+
+static virCPUDataPtr
+AArch64NodeData(virArch arch)
+{
+virCPUDataPtr data;
+
+if (VIR_ALLOC(data) < 0)
+return NULL;
+
+data->arch = arch;
+
+return data;
+}
+
+static int
+AArch64Decode(virCPUDefPtr cpu ATTRIBUTE_UNUSED,
+  const virCPUDataPtr data ATTRIBUTE_UNUSED,
+  const char **models ATTRIBUTE_UNUSED,
+  unsigned int nmodels ATTRIBUTE_UNUSED,
+  const char *preferred ATTRIBUTE_UNUSED,
+  unsigned int flags)
+{
+
+virCheckFlags(VIR_CONNECT_BASELINE_CPU_EXPAND_FEATURES, -1);
+
+return 0;
+}
+
+static void
+AArch64DataFree(virCPUDataPtr data)
+{
+VIR_FREE(data);
+}
+
+struct cpuArchDriver cpuDriverAARCH64 = {
+.name = "aarch64",
+.arch = archs,
+.narch = ARRAY_CARDINALITY(archs),
+.compare = NULL,
+.decode = AArch64Decode,
+.encode = NULL,
+.free = AArch64DataFree,
+.nodeData = AArch64NodeData,
+.guestData = NULL,
+.baseline = NULL,
+.update = NULL,
+.hasFeature = NULL,
+};
diff --git a/src/cpu/cpu_aarch64.h b/src/cpu/cpu_aarch64.h
new file mode 100644
index 000..8e48368
--- /dev/null
+++ b/src/cpu/cpu_aarch64.h
@@ -0,0 +1,31 @@
+/*
+ * cpu_aarch64.h: CPU driver for AArch64 CPUs
+ *
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library.  If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ * Authors:
+ *  Anup Patel 
+ *  Pravakumar Sawargaonkar 
+ */
+
+#ifndef __VIR_CPU_AARCH64_H__
+# define __VIR_CPU_AARCH64_H__
+
+# include "cpu.h"
+
+extern struct cpuArchDriver cpuDriverAARCH64;
+
+#endif /* __VIR_CPU_AARCH64_H__ */
-- 
1.7.9.5

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list


[libvirt] [PATCH 4/6] Implement minimal sysinfo for AArch64 platforms.

2013-10-08 Thread Pranavkumar Sawargaonkar
Implement the bare minimal sysinfo for AArch64 platforms by
reading the CPU models from /proc/cpuinfo.

Signed-off-by: Anup Patel 
Signed-off-by: Pranavkumar Sawargaonkar 
---
 src/util/virsysinfo.c   |3 ++-
 tests/sysinfodata/aarch64cpuinfo.data   |   10 ++
 tests/sysinfodata/aarch64sysinfo.expect |   10 ++
 tests/sysinfotest.c |   14 +-
 4 files changed, 35 insertions(+), 2 deletions(-)
 create mode 100644 tests/sysinfodata/aarch64cpuinfo.data
 create mode 100644 tests/sysinfodata/aarch64sysinfo.expect

diff --git a/src/util/virsysinfo.c b/src/util/virsysinfo.c
index 0802124..1c8cae5 100644
--- a/src/util/virsysinfo.c
+++ b/src/util/virsysinfo.c
@@ -244,7 +244,7 @@ no_memory:
 return NULL;
 }
 
-#elif defined(__arm__)
+#elif defined(__arm__) || defined(__aarch64__)
 static int
 virSysinfoParseSystem(const char *base, virSysinfoDefPtr ret)
 {
@@ -505,6 +505,7 @@ no_memory:
   defined(__i386__) ||   \
   defined(__amd64__) || \
   defined(__arm__) || \
+  defined(__aarch64__) || \
   defined(__powerpc__))
 virSysinfoDefPtr
 virSysinfoRead(void) {
diff --git a/tests/sysinfodata/aarch64cpuinfo.data 
b/tests/sysinfodata/aarch64cpuinfo.data
new file mode 100644
index 000..0d63139
--- /dev/null
+++ b/tests/sysinfodata/aarch64cpuinfo.data
@@ -0,0 +1,10 @@
+Processor  : AArch64 Processor rev 0 (aarch64)
+BogoMIPS   : 100.00
+
+Features   : fp asimd
+CPU architecture: AArch64
+CPU variant: 0x0
+CPU part   : 0x000
+CPU revision   : 0
+
+Hardware   : Generic AArch64
diff --git a/tests/sysinfodata/aarch64sysinfo.expect 
b/tests/sysinfodata/aarch64sysinfo.expect
new file mode 100644
index 000..518434d
--- /dev/null
+++ b/tests/sysinfodata/aarch64sysinfo.expect
@@ -0,0 +1,10 @@
+
+  
+0
+AArch64 Processor rev 0 (aarch64) 
+  
+  
+1
+AArch64 Processor rev 0 (aarch64)
+  
+
diff --git a/tests/sysinfotest.c b/tests/sysinfotest.c
index ba57a7a..a88328f 100644
--- a/tests/sysinfotest.c
+++ b/tests/sysinfotest.c
@@ -43,7 +43,7 @@
 # if defined(__s390__) || defined(__s390x__) || \
  defined(__powerpc__) || defined(__powerpc64__) || \
  defined(__i386__) || defined(__x86_64__) || defined(__amd64__) || \
- defined(__arm__)
+ defined(__arm__) || defined(__aarch64__)
 
 /* from sysinfo.c */
 void virSysinfoSetup(const char *decoder,
@@ -179,6 +179,18 @@ test_arm(void)
 }
 
 VIRT_TEST_MAIN(test_arm)
+# elif defined(__aarch64__)
+static int
+test_aarch64(void)
+{
+return sysinfotest_run("aarch64 sysinfo",
+   NULL,
+   NULL,
+   "/sysinfodata/aarch64cpuinfo.data",
+   "/sysinfodata/aarch64sysinfo.expect");
+}
+
+VIRT_TEST_MAIN(test_aarch64)
 # else
 int
 main(void)
-- 
1.7.9.5

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list