By: Christian Borntraeger (borntraeger.delete.delete@this.de.ibm.com), February 2, 2017 3:46 am
Room: Moderated Discussions
joncmu (jonathan.delete@this.alumni.cmu.edu) on February 1, 2017 1:36 pm wrote:
> z/Architecture does have the MOVE WITH OPTIONAL SPECIFICATION (MVCOS) instruction
> which the s390x port of linux does use to copy memory back and forth between
> the user address space and the kernel address space (primary and home).
Yes on zarch there have always been different address space for kernel and user, because the hardware provides fast ways of cross address space copies. This actually provided some nice separation. As there is no valid user space pointer in the kernel, there is no big need for things like SMAP. This is no 100% protection as userspace memory is still reachable via the primary mapping of the physical memory.(you would need to find out the physical address of a page, though, e.g. via page table dumping in proc on debug kernels)
>
> Program Call is one of those instructions where I never understood how it worked from reading
> the ISA definition, but only really understood once I saw how it was used by MVS/zOS.
Yes its really hard to grasp. Linux does not use it as of today.
> z/Architecture does have the MOVE WITH OPTIONAL SPECIFICATION (MVCOS) instruction
> which the s390x port of linux does use to copy memory back and forth between
> the user address space and the kernel address space (primary and home).
Yes on zarch there have always been different address space for kernel and user, because the hardware provides fast ways of cross address space copies. This actually provided some nice separation. As there is no valid user space pointer in the kernel, there is no big need for things like SMAP. This is no 100% protection as userspace memory is still reachable via the primary mapping of the physical memory.(you would need to find out the physical address of a page, though, e.g. via page table dumping in proc on debug kernels)
>
> Program Call is one of those instructions where I never understood how it worked from reading
> the ISA definition, but only really understood once I saw how it was used by MVS/zOS.
Yes its really hard to grasp. Linux does not use it as of today.