Message ID | 20230901060431.6170-1-deller@kernel.org (mailing list archive) |
---|---|
State | Accepted, archived |
Headers | show |
Series | parisc: shmparam.h: Document aliasing requirements of PA-RISC | expand |
On 2023-09-01 2:04 a.m., deller@kernel.org wrote: > From: Helge Deller <deller@gmx.de> > > Add some documentation why PA-RISC uses SHMLBA and SHM_COLOUR. > > Signed-off-by: Helge Deller <deller@gmx.de> > --- > arch/parisc/include/asm/shmparam.h | 15 +++++++++++++++ > 1 file changed, 15 insertions(+) > > diff --git a/arch/parisc/include/asm/shmparam.h b/arch/parisc/include/asm/shmparam.h > index 74f74e4d35b7..5a95b0f62b87 100644 > --- a/arch/parisc/include/asm/shmparam.h > +++ b/arch/parisc/include/asm/shmparam.h > @@ -2,6 +2,21 @@ > #ifndef _ASMPARISC_SHMPARAM_H > #define _ASMPARISC_SHMPARAM_H > > +/* > + * PA-RISC uses virtually indexed & physically tagged (VIPT) caches > + * which has strict requirements when two pages to the same physical > + * address are accessed through different mappings. Read the section > + * "Address Aliasing" in the arch docs for more detail: > + * PA-RISC 1.1 (page 3-6): > + * https://parisc.wiki.kernel.org/images-parisc/6/68/Pa11_acd.pdf > + * PA-RISC 2.0 (page F-5): > + * https://parisc.wiki.kernel.org/images-parisc/7/73/Parisc2.0.pdf > + * > + * For Linux we allow kernel and userspace to map pages on page size > + * granularity (SHMLBA) but have to ensure that, if two pages are > + * mapped to the same physical address, the virtual and physical > + * addresses modulo SHM_COLOUR are identical. > + */ > #define SHMLBA PAGE_SIZE /* attach addr a multiple of this */ > #define SHM_COLOUR 0x00400000 /* shared mappings colouring */ Does SHM_COLOUR need to be exposed to user space? See the following issue with sysprof: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1021853 Dave
diff --git a/arch/parisc/include/asm/shmparam.h b/arch/parisc/include/asm/shmparam.h index 74f74e4d35b7..5a95b0f62b87 100644 --- a/arch/parisc/include/asm/shmparam.h +++ b/arch/parisc/include/asm/shmparam.h @@ -2,6 +2,21 @@ #ifndef _ASMPARISC_SHMPARAM_H #define _ASMPARISC_SHMPARAM_H +/* + * PA-RISC uses virtually indexed & physically tagged (VIPT) caches + * which has strict requirements when two pages to the same physical + * address are accessed through different mappings. Read the section + * "Address Aliasing" in the arch docs for more detail: + * PA-RISC 1.1 (page 3-6): + * https://parisc.wiki.kernel.org/images-parisc/6/68/Pa11_acd.pdf + * PA-RISC 2.0 (page F-5): + * https://parisc.wiki.kernel.org/images-parisc/7/73/Parisc2.0.pdf + * + * For Linux we allow kernel and userspace to map pages on page size + * granularity (SHMLBA) but have to ensure that, if two pages are + * mapped to the same physical address, the virtual and physical + * addresses modulo SHM_COLOUR are identical. + */ #define SHMLBA PAGE_SIZE /* attach addr a multiple of this */ #define SHM_COLOUR 0x00400000 /* shared mappings colouring */