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

DRAFT: resources: Add gem5_bridge driver to x86-ubuntu build & boot #48

Draft
wants to merge 8 commits into
base: stable
Choose a base branch
from

Conversation

nkrim
Copy link

@nkrim nkrim commented Aug 19, 2024

Adds commands to scripts/post-installation.sh to make the driver during disk building. The Makefile can take arguments to modify the base address for the gem5ops MMIO range by putting GEM5OPS_BASE=<base_phys_addr> at the end of the make command.

Adds commands to files/gem5_init.sh to detect and add the driver after kernel startup but just before the first gem5-bridge exit.

Relates to gem5/gem5#1480

This is to support backwards compatibility with the former /dev/mem
pokes for disk images that do not or cannot yet support the driver.
In the future, these can potentially be changed if there is a push
for solely using the driver.
Harshil2107 added a commit to gem5/gem5 that referenced this pull request Feb 4, 2025
Adds a Linux kernel module for a character device that can facilitate
address-type `gem5-bridge` commands with user permissions. This is an
improvement over the current system as it no longer requires `sudo`
permissions from the simulation as we replace accesses to `/dev/mem/`
with accesses to `/dev/gem5_bridge` for which we can control
permissions.

Relates to gem5/gem5-resources#48

Adds `util/gem5_bridge` which includes the C source for the driver and a
Makefile to build it from within the disk image -- building and
launching the module are done here
gem5/gem5-resources#48. The Makefile can take
arguments to modify the base address for the gem5ops MMIO range by
putting `GEM5OPS_BASE=<base_phys_addr>` at the end of the make command.

Modifies `util/m5/src/m5_mmap.c` to mmap from our device
`/dev/gem5_bridge` rather than `/dev/mem`.

**Current Issues**
- Requires the module to be built with the exact same version as the
running kernel during simulation. This is most easily achieved by
running the simulation with the `vmlinux` kernel extracted from the
built disk image. However, need to find a proper solution to support
multiple kernel versions. If the kernel headers are available on `apt`,
then this has been shown to work, but efforts to acquire the headers for
an arbitrary kernel version have so far failed.
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.

1 participant