Skip to content
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

Zynqmp vmm #42

Merged
merged 3 commits into from
Nov 2, 2022
Merged

Zynqmp vmm #42

merged 3 commits into from
Nov 2, 2022

Conversation

chrisguikema
Copy link
Contributor

Add support for compiling a zynqmp VMM. Example projects can be added to camkes-vm-examples once the SMC RFC has been worked through. This just adds the structure for the zynqmp.

@chrisguikema chrisguikema force-pushed the zynqmp_vmm branch 2 times, most recently from 0253c17 to 9e73191 Compare October 26, 2022 00:31
@chrisguikema
Copy link
Contributor Author

@yyshen is this good to merge?

Copy link
Member

@axel-h axel-h left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks ok from my side

This commit adds the files necessary to compile for the zynqmp and
ultra96v2 platforms.

Signed-off-by: Chris Guikema <[email protected]>
This commit adds a module that will paravirtualize the guest uart
access. Currently supported platforms are the zynqmp and exynos5.

Signed-off-by: Chris Guikema <[email protected]>
@axel-h
Copy link
Member

axel-h commented Oct 28, 2022

Together with seL4/camkes-vm-images#6, this should allow a CI run of the minimal VM example on ZynqMP hardware (zcu102) then, right?

@chrisguikema
Copy link
Contributor Author

Technically, yes. However, the zynqmp uses a host of SMC calls during the boot process.

            0xc2000001, // PM_GET_API_VERSION
            0xc200000D, // PM_REQ_NODE
            0xc200000E, // PM_RELEASE_NODE
            0xc200000F, // PM_SET_REQUIREMENT
            0xc2000015, // PM_INIT_FINALIZE
            0xc2000017, // PM_FPGA_GET_STATUS
            0xc2000011, // PM_RESET_ASSERT
            0xc2000012, // PM_RESET_GET_STATUS
            0xc2000018, // PM_GET_CHIPID
            0xc200001C, // PM_PINCTRL_REQUEST
            0xc200001D, // PM_PINCTRL_RELEASE
            0xc200001F, // PM_PINCTRL_SET_FUNCTION
            0xc2000020, // PM_PINCTRL_CFG_PARAM_GET
            0xc2000021, // PM_PINCTRL_CFG_PARAM_SET
            0xc2000022, // PM_IOCTL
            0xc2000023, // PM_QUERY_DATA
            0xc2000024, // PM_CLOCK_ENABLE
            0xc2000025, // PM_CLOCK_DISABLE
            0xc2000026, // PM_CLOCK_GETSTATE
            0xc2000027, // PM_CLOCK_SETDIVIDER
            0xc2000028, // PM_CLOCK_GETDIVIDER
            0xc200002C, // PM_CLOCK_GETPARENT
            0xc2000A03, // PM_GET_TRUSTZONE_VERSION
            0x82001000, // IPI_MAILBOX_OPEN
            0x82001001, // IPI_MAILBOX_RELEASE
            0x82001005  // IPI_MAILBOX_ENABLE_IRQ

DW created an RFC to get community discussion on how we can best handle this. So I could create a vm_minimal example, and it would compile, and it would run up to the point of needing to make its first SMC call before dying.

My purpose with creating these PRs is to get the framework in place, such that when the SMC RFC is closed, an example can be created immediately, and we don't need to wait for these extra pieces to be put in place.

@chrisguikema
Copy link
Contributor Author

Alternatively, we could release a FreeRTOS or RTEMS image, but that mostly relies upon my "Mulitple OS" PRs going through, and I think those will have a longer review process.

@chrisguikema
Copy link
Contributor Author

@yyshen can this be merged?

@kent-mcleod kent-mcleod merged commit 9e09ea4 into seL4:master Nov 2, 2022
@chrisguikema chrisguikema deleted the zynqmp_vmm branch March 8, 2023 17:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants