-
Notifications
You must be signed in to change notification settings - Fork 175
qemu: Update to QEMU 6.2 release #421
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
Conversation
galak
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.
feels like the patch list needs modification.
3e35f71 to
1f605d4
Compare
|
DO NOT MERGE: Validating the commit that switches to using the Zephyr fork first. The commit that actually updates QEMU to v6.2.0 will be added here soon. |
1f605d4 to
9a05d41
Compare
|
Patch Status |
|
@abrodkin It looks like the QEMU ARC patch ( |
|
@stephanosio well my patch could be easily applied on top of QEMU v6.2 in theory. But the reality is ARC port is still based on upstream v6.0.0 and my quick attempt to rebase on v6.2.0 was not successful as there're not only build-system changes but also some data structures etc. That said I'd like our QEMU guru @cupertinomiranda to conduct that re-base and since he's on Christmas holidays it might only happen sometime early next year. And given ARC pieces were not yet accepted into upstream QEMU I'd like to ask to wait a bit for QEMU update in Zephyr SDK, as otherwise all ARC support will be effectively dropped from QEMU in the SDK/perf-PR CI etc. And I'd like to not add |
d7cad80 to
3543bf4
Compare
|
@abrodkin Thanks. I will put this PR on hold until the rebased ARC patch is provided. |
|
@stephanosio just in case when do you think you'll really need to switch to v6.2? To make sure because of other things we don't slip way too much our rebase. |
@abrodkin Ideally, as soon as possible. The motivation for switching to v6.2 is to support the ARM MVE instruction emulation and testing in the CI using the QEMU (see #420). There are a few Zephyr PRs that are waiting for this as well. |
3543bf4 to
f1b2520
Compare
|
TODO: Install/update meson version in the SDK CI image ( |
|
@abrodkin @cupertinomiranda any updates? |
|
@stephanosio thanks to the work done by @cupertinomiranda we've got our port re-based on top of v6.2.0. |
@abrodkin Thanks! When you are done testing, you can open a pull request to https://github.com/zephyrproject-rtos/qemu/commits/zephyr-qemu-v6.2.0, or you can provide a patch file, whichever is more convenient for you. |
|
Just a heads up that there is a bug with systick in QEMU 6.2.0 that breaks mps2_an521 and mps3_an547 support, perhaps others. I tested this fix this morning, but we will either need to update to the next release to fix MPSx support, or apply this patch: https://lists.gnu.org/archive/html/qemu-devel/2022-02/msg00333.html |
|
@microbuilder Thanks for the heads up. I will make sure to apply that patch and test all supported ARM platforms before merging this. |
An LSM303DLHC magnetometer driver I wrote was merged in, as well as a change to make a subset of I2C drivers available to most ARM QEMU targets that enable I2C (mps2_an521, mps3_an547, etc.). This is after the 6.2.0 tag, but I think these changes are valuable to Zephyr to enable testing I2C in CI with QEMU.
You can enable this optional driver with something like: |
|
@stephanosio oh, sorry for the delay. Indeed, we have now usable QEMU port for ARC based on 6.2. And even though we did and still plan to solve it, to not delay SDK update with newer QEMU, I guess it should be fine to just ignore that test for ARC QEMU platforms for a time being. |
|
@abrodkin Thanks for the update. Since it looks like it will take some time to upstream the ARC support for QEMU and it will be hard to keep the Zephyr SDK QEMU version and the ARC QEMU version in sync until that happens, I think it would be best to create a separate ARC QEMU component, which builds directly from https://github.com/foss-for-synopsys-dwc-arc-processors/qemu, as we do with the Xilinx QEMU. What do you think? |
|
Postponing this to 0.14.1, which will be a quick follow-up to 0.14.0 (multi-platform SDK) in a month or so. |
0acf2dc to
d99c61f
Compare
This commit upgrades the meson package version from 0.55.1, which is provided by the current Poky distribution used, to 0.59.1. Meson 0.58.2 or above is required for building QEMU 6.2. Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
Use the Zephyr QEMU fork (zephyrproject-rtos/qemu) to build the QEMU for the Zephyr SDK. This uses the `zephyr-qemu-v6.0.0` branch in the Zephyr QEMU fork, which is based on the QEMU v6.0.0 release and contains all the Zephyr- related patches previously used by the OE build system. Note that the patch file `cross.patch` was not integrated into the Zephyr fork branch because it is a Yocto/OE build environment-specific workaround. Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
144611c to
818dcd6
Compare
This commit updates the QEMU version to 6.2. QEMU 6.2 is required to support ARM M-Profile Vector Extension (MVE) emulation. Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
This commit makes the following changes to add a separate QEMU recipe for ARC. 1. Re-generate "cross.patch" as there're quite some changes in the newer "configure" script. 2. Remove "--disable-sheepdog" as otherwise configurations fails with --------------->8------------ ERROR: unknown option --disable-sheepdog --------------->8------------ 3. Add symlinks to the ARC QEMU emulator executables in `/usr/bin`. Co-authored-by: Stephanos Ioannidis <root@stephanos.io> Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com> Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
@microbuilder I have integrated this patch here and verified that the Zephyr kernel tests pass on the MPS boards. |
@microbuilder I will look into integrating these patches in a separate PR. |
|
@abrodkin I have verified that all ARC tests pass using the separate ARC QEMU build here. |
|
@microbuilder @abrodkin please review |
abrodkin
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.
Awesome! Thanks for all the work here. LGTM!
The only thing which is IMHO missing inability to download built artifacts, i.e. it's not possible to test-drive built entire SDK. Maybe it's due to this repo settings as back in the days of Buildkite I was able to do so (thanks to @galak who granted me extended permissions).
| =================================================================== | ||
| --- a/configure | ||
| +++ b/configure | ||
| @@ -3934,7 +3934,6 @@ if test "$skip_meson" = no; then |
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.
Offsets differ from the same patch for generic QEMU, so maybe you copy over one version over another so that they match exactly? Otherwise it might look a bit suspicious.
@abrodkin You should find the artifacts under the checks "Summary" tab: |
|
@stephanosio ooops, I didn't notice that section as it was just below my screen edge, sorry for that! |
|
@stephanosio It looks like we only generate x86 builds? I'm on an AArch64 machine, but I'll setup an x86-64 machine to test these and make sure QEMU behaves as expected with the MPS2 and MPS3 targets, etc. |
PR builds are, by default, x86-64 only (need to label the PR |
|
@stephanosio EDIT: Sorry, looks like this was included. |
Not sure if you saw #421 (comment). I have already applied that patch and tested that all tests for the emulated platforms (including MPS) pass. |
|
@stephanosio for the record with the SDK build from this PR's CI I have very clean results while executing full Again, thanks for all the efforts! |
This commit updates the QEMU version to 6.2.
QEMU 6.2 is required to support ARM M-Profile Vector Extension (MVE)
emulation.
Signed-off-by: Stephanos Ioannidis root@stephanos.io
Closes #420.
Closes #423.