-
Notifications
You must be signed in to change notification settings - Fork 291
engine: aarch64 support #1041
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
engine: aarch64 support #1041
Conversation
dupondje
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
First of all thanks for this patch. I think this is a great addition! :)
I added some remarks in the code already. Think it's a very good start, just some things we need to improve.
Did you already had a running Arm VM in oVirt? Or not there yet?
I think it might be useful to have some full libvirt xml of the started VM also.
To see if everything is in there, and if we need to make some improvements.
...odules/bll/src/main/java/org/ovirt/engine/core/bll/architecture/HasMaximumNumberOfDisks.java
Outdated
Show resolved
Hide resolved
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/UpdateVmCommandTest.java
Show resolved
Hide resolved
...dules/bll/src/test/java/org/ovirt/engine/core/bll/utils/CompatibilityVersionUpdaterTest.java
Show resolved
Hide resolved
...d/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/VmValidatorTest.java
Show resolved
Hide resolved
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/utils/ovf/OvfManagerTest.java
Show resolved
Hide resolved
Of course, we had manual installations with ubuntu, centos, sles and rhel.
See attached file |
backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/OsRepositoryImpl.java
Show resolved
Hide resolved
201e924 to
f8746f7
Compare
|
Is there anything blocking this PR or can we get it merged? According to https://www.ovirt.org/develop/dev-process/install-nightly-snapshot.html
it would be great to reduce the effort for the enduser and get some feedback from the community. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sorry for the delay.
We are currently focussing on getting everything build for CentOS 10, which takes most of our time.
Getting this in would be very nice, but I want to make sure it's (almost) perfect before we merge it.
I added some additional comments when I reviewed the code.
Next to that, I also found some old patch the openkylin project did to support ARM on oVirt:
https://gitee.com/openkylin-backup/ovirt-engine/pulls/1/files
It would also be nice if we could get rid of the TODO's before we merge it.
Cause 'TODO' comments are good, but they will be forgotten and it will stay unimplemented,
So I think it would be nice to have them correct before getting merged.
A last point of attention is the CPU type we should pick for ARM and which flags should be used. I don't know on which CPU you are testing this?
Next to that it could be nice if you joined our Matrix channel. Then we can discuss this easily :)
...odules/bll/src/main/java/org/ovirt/engine/core/bll/architecture/HasMaximumNumberOfDisks.java
Outdated
Show resolved
Hide resolved
| int powerOf2 = Integer.highestOneBit(maxRam); | ||
| pageTable = (maxRam > powerOf2 ? powerOf2 * 2 : powerOf2) / 64; | ||
| } else { | ||
| // TODO, aarch64 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What still has to be fixed here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks like the current overhead calculation is a good guess.
This is what I can see from the two active VMs on different architectures:
aarch64:
oVirt: 48G = 49152 MB
VM /proc/meminfo: MemTotal: 48899820 kB
x86:
oVirt: 48G = 49152 MB
VM /proc/meminfo: MemTotal: 49316136 kB
I have not checked on ppc64le so far, but is this aarch64 specific overhead significant and should there be an aarch64 specific overhead?
...er/modules/bll/src/test/java/org/ovirt/engine/core/bll/exportimport/ImportVmCommandTest.java
Outdated
Show resolved
Hide resolved
...va/org/ovirt/engine/core/vdsbroker/architecture/CreateAdditionalControllersForDomainXml.java
Outdated
Show resolved
Hide resolved
...broker/src/main/java/org/ovirt/engine/core/vdsbroker/builder/vminfo/LibvirtVmXmlBuilder.java
Show resolved
Hide resolved
|
lscpu.txt |
This patch adds basic support for aarch64 hosts. The 'Compatibility Version' 4.8 provides * CPU architecture aarch64 * CPU type 'ARM64 V8' CPU model/feature detection is based on the asmid flag. Several architecture specific settings have initial values and should be validated. The intended scope of this patch is to add initial aarch64 support and a starting point for further aarch64 related patches. Co-authored-by: Richard Treu <[email protected]> Signed-off-by: Michael Trapp <[email protected]>
|
Sorry for the delayed reply! Based on our last discussion I've fixed a couple of things and had further tests. First of all, it looks like copr is not available for aarch64 and with that, restricting aarch64 support to combat level 4.8 requires a local build of the copr packages for aarch64 and several manual tasks. There might be other ways around but that's not what you want for a test setup, especially when anybody else might be interested in testing this PR. Secure boot support is not in the scope of this PR, I've already commented that in the review. On a bottom line it's not just another BiosType with a few modifications. But what I've seen, most of the related changes can be tested without the need for having a aarch64 host in a test setup. I guess there are only two topics left on the list - memory overhead and memory alignment. Could you please review the changes and let me know what has to be fixed to merge this PR. |
Issue
ovirt engine currently does not support aarch64 hosts
Changes introduced with this PR
Add basic support for aarch64
Are you the owner of the code you are sending in, or do you have permission of the owner?
Yes
--
We've been working on aarch64 support in ovirt engine and these are the required changes to get
an aarch64 VM started in our dev setup.
It is still work in progress and there are several open topics,
but we want to share the current status, because we are looking for feedback and support.
We've built and tested with a x86_64 container based setup,
a single aarch64 host on CentOS 9 and local storage.
Installed a VM with CentOS 10 aarch64.
Basic storage/ISO/network access works as expected.
VNC based console access with keyboard + mouse is available.
At the moment, aarch64 is configured to be available in 'compatibility version' 4.8 (and 4.7 for testing)
and the OS type is restricted to 'Other OS'/Linux. Most of the platform specific values in the code
(hugepagesize, maxcpu ...) are copied from other architectures and should be validated.
The feature/model detection for aarch64 seems to be incomplete, we haven't found any 'model_' labeling
for aarch64. This might need additional patches in vdsm or qemu. Due to that, the current model detection in this PR
is very basic - just to get it up and running.
Known issues:
QEMU recommends the 'virt' board for aarch64 VMs and you will also need the following vdsm patch on the aarch64 host
oVirt/vdsm@4127dfc
We had to disable the repo 'resilientstorage' because it seems to be unavailabel for aarch64.
Open topics: