Hi,
This is a short announcement following the latest merge of next into
master today. This merge had been delayed due to the 1.6 integration
process, and a discovered incompatibility with GDB, which has now been
addressed. Special thanks to Luis Machado for looking into this on the
GDB side!
As a result, please make sure to use the *latest GDB* [1] when running
the latest kernel from master.
Also part of this merge, an index of CHERI-related documentation is now
available under Documentation/cheri [2], and the PCuABI porting guide
was moved there.
Cheers,
Kevin
[1]
https://sourceware.org/git/?p=binutils-gdb.git;a=shortlog;h=refs/heads/user…
[2]
https://git.morello-project.org/morello/kernel/linux/-/tree/morello/master/…
Hi All,
I am glad to inform you that our SDK for Morello is finally ready. After months
of hard work we are happy to share with you the results of our work.
Our motto is "Let Linux developers focus on the porting of their own
application" and today we are taking the first steps to deliver on that.
[Morello SDK]
In less than 10 minutes you should be able to setup a docker container with
everything you need to build an application for Morello.
- Documentation: https://sdk.morello-project.org/
- Code repository: https://git.morello-project.org/morello/morello-sdk
If you want to try a demo of the SDK that runs on a Morello FVP (for more
information on what is an FVP: www.morello-project.org) please have a look below:
[Morello Linux]
In less than 10 minutes you should be able to setup a docker container with
everything you need to build and boot into a Morello Debian environment.
- Documentation: https://linux.morello-project.org/
- Code repository: https://git.morello-project.org/morello/morello-linux
Note: The documentation covers the instructions for Linux but if you know what
you are doing and are familiar with docker no one stops you from running our
solution on Windows or Mac.
Are we done with it?
No, by any mean. This is just the beginning and we need your help and
collaboration to make sure that we improve our solution to meet developers
needs: your needs!
So why don't you try it and let us know your thoughts?
Thanks and Regards,
Vincenzo
Hi,
The top of the master branch has been tagged [0] as part of the
integration drop 1.6.
Below is the changelog for kernel users, since the previous integration
drop (1.5).
New features
------------
- Read/write tag access in mappings is now advertised as rc/wc in
/proc/<pid>/smaps [1].
- The clone3 syscall now reads full capabilities from userspace in
PCuABI, thanks to an updated layout for struct clone_args. The new
struct definition is documented in the PCuABI specification [2].
- Device trees for the Morello board and FVP are now included [3].
- A minimal set of options to run a graphical environment is now enabled
in the transitional PCuABI defconfig [4].
- The branch was rebased on the 6.1 upstream release. The only
user-facing Morello-related change is an updated value for
HWCAP2_MORELLO; see the announcement email [5] for details.
Bug fixes
---------
- Fixed ptrace(PTRACE_POKEDATA) writing too much data in purecap.
- Fixed most remaining LTP failures in compat64 and purecap (notably by
fixing struct layouts and updating internal constants for compat64).
- Fixed a Bionic tests failure in compat64, which was due to the
preadv/pwritev syscall handlers misreading the offset argument.
- Fixed the vast majority of warnings when building the kernel with GCC.
Cheers,
Kevin
[0]
https://git.morello-project.org/morello/kernel/linux/-/commits/morello-rele…
[1]
https://git.morello-project.org/morello/kernel/linux/-/blob/morello-release…
[2]
https://git.morello-project.org/morello/kernel/linux/-/wikis/Morello-pure-c…
[3] arch/arm64/boot/dts/arm/morello-{soc,fvp}.dts
[4] arch/arm64/configs/morello_transitional_pcuabi_defconfig
[5]
https://op-lists.linaro.org/archives/list/linux-morello@op-lists.linaro.org…
This series of patches enables nfs rootfs support on the Morello board.
Patches 01 and 02 fix the inital kernel build error associated with a wrong
function pointer type within the sunrpc modules due to the unlocked_ioctl fp,
the error occurs upon enabling nfs within the defconfig.
Patches 03-09 deal with the fallout caused by changes inferred by patches 01 and 02.
Details can be found in the description of patch 03.
Patch 10 is enabling nfs rootfs by default in the kernel.
It was confirmed that the kernel can boot with a nfs rootfs,
the other affected modules were not tested.
Pawel Zalewski (10):
net:sunrpc: fix incompatible function pointer type in cache
net:sunrpc: fix incompatible function pointer type in rpc_pipe
include:linux: proc_ioctl should take user_uintptr_t as argument
net:sunrpc: fix incompatible function pointer type in cache
sound:core: fix incompatible function pointer type in info
scsi:esas2r: fix incompatible function pointer type in esas2r_main
pci: fix incompatible function pointer type in proc
hwmon: fix incompatible function pointer type in dell-smm-hwmon
cpu:mtrr: fix incompatible function pointer type in if
defconfig: enable nfs rootfs by default
arch/arm64/configs/morello_transitional_pcuabi_defconfig | 2 ++
arch/x86/kernel/cpu/mtrr/if.c | 2 +-
drivers/hwmon/dell-smm-hwmon.c | 2 +-
drivers/pci/proc.c | 2 +-
drivers/scsi/esas2r/esas2r_main.c | 2 +-
include/linux/proc_fs.h | 4 ++--
include/sound/info.h | 2 +-
net/sunrpc/cache.c | 6 +++---
net/sunrpc/rpc_pipe.c | 2 +-
sound/core/info.c | 2 +-
10 files changed, 14 insertions(+), 12 deletions(-)
--
2.34.1
This commit tackles the issue reported at:
https://git.morello-project.org/morello/kernel/linux/-/issues/6
Commit also available at:
https://git.morello-project.org/Sevenarth/linux/-/commits/morello/futex-v3
v3:
- reworded commit bodies
- removed a redundant include
- fixed whitespace alignment
v2:
- split code in 3 commits as suggested
- added more details in the commit bodies
- updated the TODO notation for futex.h
- updated the prefix for A64/C64 definitions in futex.h
- updated the asm constraint's name to follow naming conventions
- updated the robust list entry fetch code to use the pre-existing
helper USER_PTR_ALIGN_DOWN
- reverted pointer comparisons
Luca Vizzarro (3):
arm64: futex: Enable capability-based uaccess
futex: Handle capability-based robust list entries
futex: Add explicit capability checking TODOs
arch/arm64/include/asm/futex.h | 47 ++++++++++++++++++++++++----------
kernel/futex/core.c | 19 ++++++--------
2 files changed, 41 insertions(+), 25 deletions(-)
--
2.34.1
This series makes it possible for purecap apps to use the io_uring
system.
With these patches, all io_uring LTP tests pass in both Purecap and
plain AArch64 modes. Note that the LTP tests only address the basic
functionality of the io_uring system and a significant portion of the
multiplexed functionality is untested in LTP.
I have finished investigating Purecap and plain AArch64 liburing tests
and examples and the series is updated accordingly.
v6:
- Only Patches 8 and 10 are slighlty modified
- Fix format issues
- Add license header to io_uring_compat.h
- Move __io_get_ith_cqe after __io_get_cqe
- Remove the const from io_user_data_is_same parameters
v5:
- Revert changes in trace/events/io_uring.h
- Add new header trace/events/io_uring.h for compat structs
- Change cqe_cached/ccqe_sentinel to indices
- Move print_sqe and print_cqe macros outside of the function
- Rename is_compat64_io_ring_ctx to io_in_compat64
- Add helper for user_data values comparison
- Add condition to not change addr fielt to a compat_ptr for opcodes where
it's a user_data value stored
- Other small fixes suggested by Kevin
v4:
- Rebase on top of morello/next
- Remove the union for flags in struct compat_io_uring_sqe and only
kept a single member
- Improve format and move functions as per feedback on v3
- Add a new helper for checking if context is compat
- Remove struct conversion in fdinfo and just use macros
- Remove the union from struct io_overflow_cqe and just leave the
native struct
- Fix the cqe_cached/cqe_sentinel mechanism
- Separate the fix for the shared ring size's off-by-one error into a
new PATCH 6
- Remove the compat_ptr for addr fields that represent user_data values
- Extend the trace events accordingly to propagate capabilities
- Use copy*_with_ptr routine for copy_msghdr_from_user in a new PATCH 1
- Fix the misuse of addr2 and off in IORING_OP_CONNECT and
IORING_OP_POLL_REMOVE
v3:
- Introduce Patch 5 which exposes the compat handling logic for
epoll_event. This is used then in io_uring/epoll.c.
- Introduce Patch 6 which makes sure that when struct iovec is copied
from userspace, the capability tags are preserved.
- Fix a few sizeof(var) to sizeof(*var).
- Use iovec_from_user so that compat handling logic is applied instead
of copying directly from user
- Add a few missing copy_from_user_with_ptr where suitable.
v2:
- Rebase on top of release 6.1
- Remove VM_READ_CAPS/VM_LOAD_CAPS patches as they are already merged
- Update commit message in PATCH 1
- Add the generic changes PATCH 2 and PATCH 3 to avoid copying user
pointers from/to userspace unnecesarily. These could be upstreamable.
- Split "pulling the cqes memeber out" change into PATCH 4
- The changes for PATCH 5 and 6 are now split into their respective
files after the rebase.
- Format and change organization based on the feedback on the
previous version, including creating helpers copy_*_from_* for various
uAPI structs
- Add comments related to handling of setup flags IORING_SETUP_SQE128
and IORING_SETUP_CQE32
- Add handling for new uAPI structs: io_uring_buf, io_uring_buf_ring,
io_uring_buf_reg, io_uring_sync_cancel_reg.
Gitlab issue:
https://git.morello-project.org/morello/kernel/linux/-/issues/2
Review branch:
https://git.morello-project.org/tudcre01/linux/-/commits/morello/io_uring_v6
Tudor Cretu (10):
net: socket: use copy_from_user_with_ptr for struct user_msghdr
io_uring/rw: Restrict copy to only uiov->len from userspace
io_uring/tctx: Copy only the offset field back to user
io_uring: Pull cqes member out from rings struct
epoll: Expose compat handling logic of epoll_event
io_uring/kbuf: Fix size for shared buffer ring
io_uring: Make cqe_cached and cqe_sentinel indices instead of pointers
io_uring: Implement compat versions of uAPI structs and handle them
io_uring: Allow capability tag access on the shared memory
io_uring: Use user pointer type in the uAPI structs
fs/eventpoll.c | 38 ++--
include/linux/eventpoll.h | 4 +
include/linux/io_uring_compat.h | 130 +++++++++++++
include/linux/io_uring_types.h | 35 ++--
include/uapi/linux/io_uring.h | 76 ++++----
io_uring/advise.c | 7 +-
io_uring/cancel.c | 32 +++-
io_uring/cancel.h | 2 +-
io_uring/epoll.c | 4 +-
io_uring/fdinfo.c | 79 +++++---
io_uring/fs.c | 16 +-
io_uring/io_uring.c | 323 ++++++++++++++++++++++++--------
io_uring/io_uring.h | 147 +++++++++++++--
io_uring/kbuf.c | 111 +++++++++--
io_uring/kbuf.h | 8 +-
io_uring/msg_ring.c | 4 +-
io_uring/net.c | 25 +--
io_uring/openclose.c | 4 +-
io_uring/poll.c | 8 +-
io_uring/rsrc.c | 138 +++++++++++---
io_uring/rw.c | 22 +--
io_uring/statx.c | 4 +-
io_uring/tctx.c | 56 +++++-
io_uring/timeout.c | 14 +-
io_uring/uring_cmd.c | 5 +
io_uring/uring_cmd.h | 4 +
io_uring/xattr.c | 12 +-
net/socket.c | 2 +-
28 files changed, 1000 insertions(+), 310 deletions(-)
create mode 100644 include/linux/io_uring_compat.h
--
2.34.1
This commit tackles the issue reported at:
https://git.morello-project.org/morello/kernel/linux/-/issues/6
Commit also available at:
https://git.morello-project.org/Sevenarth/linux/-/commits/morello/futex-v2
v2:
- split code in 3 commits as suggested
- added more details in the commit bodies
- updated the TODO notation for futex.h
- updated the prefix for A64/C64 definitions in futex.h
- updated the asm constraint's name to follow naming conventions
- updated the robust list entry fetch code to use the pre-existing
helper USER_PTR_ALIGN_DOWN
- reverted pointer comparisons
Luca Vizzarro (3):
arm64: futex: Enable capability-based uaccess
futex: Handle capability-based robust list entries
futex: Add explicit capability checking TODOs
arch/arm64/include/asm/futex.h | 47 ++++++++++++++++++++++++----------
kernel/futex/core.c | 20 +++++++--------
2 files changed, 42 insertions(+), 25 deletions(-)
--
2.34.1
This series makes it possible for purecap apps to use the io_uring
system.
With these patches, all io_uring LTP tests pass in both Purecap and
plain AArch64 modes. Note that the LTP tests only address the basic
functionality of the io_uring system and a significant portion of the
multiplexed functionality is untested in LTP.
I have finished investigating Purecap and plain AArch64 liburing tests
and examples and the series is updated accordingly.
v5:
- Revert changes in trace/events/io_uring.h
- Add new header trace/events/io_uring.h for compat structs
- Change cqe_cached/ccqe_sentinel to indices
- Move print_sqe and print_cqe macros outside of the function
- Rename is_compat64_io_ring_ctx to io_in_compat64
- Add helper for user_data values comparison
- Add condition to not change addr fielt to a compat_ptr for opcodes where
it's a user_data value stored
- Other small fixes suggested by Kevin
v4:
- Rebase on top of morello/next
- Remove the union for flags in struct compat_io_uring_sqe and only
kept a single member
- Improve format and move functions as per feedback on v3
- Add a new helper for checking if context is compat
- Remove struct conversion in fdinfo and just use macros
- Remove the union from struct io_overflow_cqe and just leave the
native struct
- Fix the cqe_cached/cqe_sentinel mechanism
- Separate the fix for the shared ring size's off-by-one error into a
new PATCH 6
- Remove the compat_ptr for addr fields that represent user_data values
- Extend the trace events accordingly to propagate capabilities
- Use copy*_with_ptr routine for copy_msghdr_from_user in a new PATCH 1
- Fix the misuse of addr2 and off in IORING_OP_CONNECT and
IORING_OP_POLL_REMOVE
v3:
- Introduce Patch 5 which exposes the compat handling logic for
epoll_event. This is used then in io_uring/epoll.c.
- Introduce Patch 6 which makes sure that when struct iovec is copied
from userspace, the capability tags are preserved.
- Fix a few sizeof(var) to sizeof(*var).
- Use iovec_from_user so that compat handling logic is applied instead
of copying directly from user
- Add a few missing copy_from_user_with_ptr where suitable.
v2:
- Rebase on top of release 6.1
- Remove VM_READ_CAPS/VM_LOAD_CAPS patches as they are already merged
- Update commit message in PATCH 1
- Add the generic changes PATCH 2 and PATCH 3 to avoid copying user
pointers from/to userspace unnecesarily. These could be upstreamable.
- Split "pulling the cqes memeber out" change into PATCH 4
- The changes for PATCH 5 and 6 are now split into their respective
files after the rebase.
- Format and change organization based on the feedback on the
previous version, including creating helpers copy_*_from_* for various
uAPI structs
- Add comments related to handling of setup flags IORING_SETUP_SQE128
and IORING_SETUP_CQE32
- Add handling for new uAPI structs: io_uring_buf, io_uring_buf_ring,
io_uring_buf_reg, io_uring_sync_cancel_reg.
Gitlab issue:
https://git.morello-project.org/morello/kernel/linux/-/issues/2
Review branch:
https://git.morello-project.org/tudcre01/linux/-/commits/morello/io_uring_v5
Tudor Cretu (10):
net: socket: use copy_from_user_with_ptr for struct user_msghdr
io_uring/rw: Restrict copy to only uiov->len from userspace
io_uring/tctx: Copy only the offset field back to user
io_uring: Pull cqes member out from rings struct
epoll: Expose compat handling logic of epoll_event
io_uring/kbuf: Fix size for shared buffer ring
io_uring: Make cqe_cached and cqe_sentinel indices instead of pointers
io_uring: Implement compat versions of uAPI structs and handle them
io_uring: Allow capability tag access on the shared memory
io_uring: Use user pointer type in the uAPI structs
fs/eventpoll.c | 38 ++--
include/linux/eventpoll.h | 4 +
include/linux/io_uring_compat.h | 129 +++++++++++++
include/linux/io_uring_types.h | 35 ++--
include/uapi/linux/io_uring.h | 76 ++++----
io_uring/advise.c | 7 +-
io_uring/cancel.c | 32 +++-
io_uring/cancel.h | 2 +-
io_uring/epoll.c | 4 +-
io_uring/fdinfo.c | 82 +++++---
io_uring/fs.c | 16 +-
io_uring/io_uring.c | 321 +++++++++++++++++++++++---------
io_uring/io_uring.h | 147 +++++++++++++--
io_uring/kbuf.c | 111 +++++++++--
io_uring/kbuf.h | 8 +-
io_uring/msg_ring.c | 4 +-
io_uring/net.c | 25 +--
io_uring/openclose.c | 4 +-
io_uring/poll.c | 8 +-
io_uring/rsrc.c | 138 +++++++++++---
io_uring/rw.c | 22 +--
io_uring/statx.c | 4 +-
io_uring/tctx.c | 56 +++++-
io_uring/timeout.c | 14 +-
io_uring/uring_cmd.c | 5 +
io_uring/uring_cmd.h | 4 +
io_uring/xattr.c | 12 +-
net/socket.c | 2 +-
28 files changed, 1000 insertions(+), 310 deletions(-)
create mode 100644 include/linux/io_uring_compat.h
--
2.34.1
Hi,
This is a small update to Vincenzo's series enabling TUN/TAP support.
v1..v2:
- Brought back tun_chr_compat_ioctl(), as we need to keep the handling
of struct compat_ifreq being of a different size. The behaviour is
otherwise unchanged from v1 (arg is always converted to a user pointer
via compat_ptr(), just like when using compat_ptr_ioctl).
- Adjusted the commit message in patch 1 accordingly, changed commit
title as I suggested in v1.
Review branch:
https://git.morello-project.org/kbrodsky-arm/linux/-/commits/morello/tun_v2
Thanks,
Kevin
Vincenzo Frascino (2):
net: tun: Fix ioctl handler argument type
arm64: morello: Enable TUN in defconfig
.../morello_transitional_pcuabi_defconfig | 1 +
drivers/net/tun.c | 22 ++++---------------
2 files changed, 5 insertions(+), 18 deletions(-)
--
2.38.1