* [PATCH] io_uring/parisc: Adjust pgoff in io_uring mmap() for parisc [not found] ` <[email protected]> @ 2023-08-07 18:04 ` Helge Deller 2023-08-07 18:24 ` Jens Axboe 2023-08-07 18:34 ` Jens Axboe 0 siblings, 2 replies; 8+ messages in thread From: Helge Deller @ 2023-08-07 18:04 UTC (permalink / raw) To: Christoph Biedl, linux-parisc, io-uring Cc: Jens Axboe, Mike Rapoport, Vlastimil Babka The changes from commit 32832a407a71 ("io_uring: Fix io_uring mmap() by using architecture-provided get_unmapped_area()") to the parisc implementation of get_unmapped_area() broke glibc's locale-gen executable when running on parisc. This patch reverts those architecture-specific changes, and instead adjusts in io_uring_mmu_get_unmapped_area() the pgoff offset which is then given to parisc's get_unmapped_area() function. This is much cleaner than the previous approach, and we still will get a coherent addresss. This patch has no effect on other architectures (SHM_COLOUR is only defined on parisc), and the liburing testcase stil passes on parisc. Signed-off-by: Helge Deller <[email protected]> Reported-by: Christoph Biedl <[email protected]> Fixes: 32832a407a71 ("io_uring: Fix io_uring mmap() by using architecture-provided get_unmapped_area()") Fixes: d808459b2e31 ("io_uring: Adjust mapping wrt architecture aliasing requirements") diff --git a/arch/parisc/kernel/sys_parisc.c b/arch/parisc/kernel/sys_parisc.c index ca2d537e25b1..9915062d5243 100644 --- a/arch/parisc/kernel/sys_parisc.c +++ b/arch/parisc/kernel/sys_parisc.c @@ -27,17 +27,12 @@ #include <linux/elf-randomize.h> /* - * Construct an artificial page offset for the mapping based on the virtual + * Construct an artificial page offset for the mapping based on the physical * address of the kernel file mapping variable. - * If filp is zero the calculated pgoff value aliases the memory of the given - * address. This is useful for io_uring where the mapping shall alias a kernel - * address and a userspace adress where both the kernel and the userspace - * access the same memory region. */ -#define GET_FILP_PGOFF(filp, addr) \ - ((filp ? (((unsigned long) filp->f_mapping) >> 8) \ - & ((SHM_COLOUR-1) >> PAGE_SHIFT) : 0UL) \ - + (addr >> PAGE_SHIFT)) +#define GET_FILP_PGOFF(filp) \ + (filp ? (((unsigned long) filp->f_mapping) >> 8) \ + & ((SHM_COLOUR-1) >> PAGE_SHIFT) : 0UL) static unsigned long shared_align_offset(unsigned long filp_pgoff, unsigned long pgoff) @@ -117,7 +112,7 @@ static unsigned long arch_get_unmapped_area_common(struct file *filp, do_color_align = 0; if (filp || (flags & MAP_SHARED)) do_color_align = 1; - filp_pgoff = GET_FILP_PGOFF(filp, addr); + filp_pgoff = GET_FILP_PGOFF(filp); if (flags & MAP_FIXED) { /* Even MAP_FIXED mappings must reside within TASK_SIZE */ diff --git a/io_uring/io_uring.c b/io_uring/io_uring.c index f4591b912ea8..93db3e4e7b68 100644 --- a/io_uring/io_uring.c +++ b/io_uring/io_uring.c @@ -3470,6 +3470,8 @@ static unsigned long io_uring_mmu_get_unmapped_area(struct file *filp, * - use the kernel virtual address of the shared io_uring context * (instead of the userspace-provided address, which has to be 0UL * anyway). + * - use the same pgoff which the get_unmapped_area() uses to + * calculate the page colouring. * For architectures without such aliasing requirements, the * architecture will return any suitable mapping because addr is 0. */ @@ -3478,6 +3480,7 @@ static unsigned long io_uring_mmu_get_unmapped_area(struct file *filp, pgoff = 0; /* has been translated to ptr above */ #ifdef SHM_COLOUR addr = (uintptr_t) ptr; + pgoff = addr >> PAGE_SHIFT; #else addr = 0UL; #endif ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH] io_uring/parisc: Adjust pgoff in io_uring mmap() for parisc 2023-08-07 18:04 ` [PATCH] io_uring/parisc: Adjust pgoff in io_uring mmap() for parisc Helge Deller @ 2023-08-07 18:24 ` Jens Axboe 2023-08-07 18:27 ` Helge Deller 2023-08-07 18:34 ` Jens Axboe 1 sibling, 1 reply; 8+ messages in thread From: Jens Axboe @ 2023-08-07 18:24 UTC (permalink / raw) To: Helge Deller, Christoph Biedl, linux-parisc, io-uring Cc: Mike Rapoport, Vlastimil Babka On 8/7/23 12:04?PM, Helge Deller wrote: > The changes from commit 32832a407a71 ("io_uring: Fix io_uring mmap() by > using architecture-provided get_unmapped_area()") to the parisc > implementation of get_unmapped_area() broke glibc's locale-gen > executable when running on parisc. > > This patch reverts those architecture-specific changes, and instead > adjusts in io_uring_mmu_get_unmapped_area() the pgoff offset which is > then given to parisc's get_unmapped_area() function. This is much > cleaner than the previous approach, and we still will get a coherent > addresss. > > This patch has no effect on other architectures (SHM_COLOUR is only > defined on parisc), and the liburing testcase stil passes on parisc. What branch is this against? It doesn't apply to my 6.5 io_uring branch, which is odd as that's where the previous commits went through. -- Jens Axboe ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] io_uring/parisc: Adjust pgoff in io_uring mmap() for parisc 2023-08-07 18:24 ` Jens Axboe @ 2023-08-07 18:27 ` Helge Deller 2023-08-07 18:33 ` Jens Axboe 0 siblings, 1 reply; 8+ messages in thread From: Helge Deller @ 2023-08-07 18:27 UTC (permalink / raw) To: Jens Axboe, Christoph Biedl, linux-parisc, io-uring Cc: Mike Rapoport, Vlastimil Babka On 8/7/23 20:24, Jens Axboe wrote: > On 8/7/23 12:04?PM, Helge Deller wrote: >> The changes from commit 32832a407a71 ("io_uring: Fix io_uring mmap() by >> using architecture-provided get_unmapped_area()") to the parisc >> implementation of get_unmapped_area() broke glibc's locale-gen >> executable when running on parisc. >> >> This patch reverts those architecture-specific changes, and instead >> adjusts in io_uring_mmu_get_unmapped_area() the pgoff offset which is >> then given to parisc's get_unmapped_area() function. This is much >> cleaner than the previous approach, and we still will get a coherent >> addresss. >> >> This patch has no effect on other architectures (SHM_COLOUR is only >> defined on parisc), and the liburing testcase stil passes on parisc. > > What branch is this against? It doesn't apply to my 6.5 io_uring branch, > which is odd as that's where the previous commits went through. applies for me on git head / Linux 6.5-rc5 Helge ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] io_uring/parisc: Adjust pgoff in io_uring mmap() for parisc 2023-08-07 18:27 ` Helge Deller @ 2023-08-07 18:33 ` Jens Axboe 2023-08-07 19:30 ` Helge Deller 0 siblings, 1 reply; 8+ messages in thread From: Jens Axboe @ 2023-08-07 18:33 UTC (permalink / raw) To: Helge Deller, Christoph Biedl, linux-parisc, io-uring Cc: Mike Rapoport, Vlastimil Babka On 8/7/23 12:27?PM, Helge Deller wrote: > On 8/7/23 20:24, Jens Axboe wrote: >> On 8/7/23 12:04?PM, Helge Deller wrote: >>> The changes from commit 32832a407a71 ("io_uring: Fix io_uring mmap() by >>> using architecture-provided get_unmapped_area()") to the parisc >>> implementation of get_unmapped_area() broke glibc's locale-gen >>> executable when running on parisc. >>> >>> This patch reverts those architecture-specific changes, and instead >>> adjusts in io_uring_mmu_get_unmapped_area() the pgoff offset which is >>> then given to parisc's get_unmapped_area() function. This is much >>> cleaner than the previous approach, and we still will get a coherent >>> addresss. >>> >>> This patch has no effect on other architectures (SHM_COLOUR is only >>> defined on parisc), and the liburing testcase stil passes on parisc. >> >> What branch is this against? It doesn't apply to my 6.5 io_uring branch, >> which is odd as that's where the previous commits went through. > > applies for me on git head / Linux 6.5-rc5 Hmm, maybe something unrelated then. I'll take a look. The patch is garbled fwiw, but that's nothing new. If you download the raw one from lore you can see how. -- Jens Axboe ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] io_uring/parisc: Adjust pgoff in io_uring mmap() for parisc 2023-08-07 18:33 ` Jens Axboe @ 2023-08-07 19:30 ` Helge Deller 0 siblings, 0 replies; 8+ messages in thread From: Helge Deller @ 2023-08-07 19:30 UTC (permalink / raw) To: Jens Axboe, Christoph Biedl, linux-parisc, io-uring Cc: Mike Rapoport, Vlastimil Babka On 8/7/23 20:33, Jens Axboe wrote: > On 8/7/23 12:27?PM, Helge Deller wrote: >> On 8/7/23 20:24, Jens Axboe wrote: >>> On 8/7/23 12:04?PM, Helge Deller wrote: >>>> The changes from commit 32832a407a71 ("io_uring: Fix io_uring mmap() by >>>> using architecture-provided get_unmapped_area()") to the parisc >>>> implementation of get_unmapped_area() broke glibc's locale-gen >>>> executable when running on parisc. >>>> >>>> This patch reverts those architecture-specific changes, and instead >>>> adjusts in io_uring_mmu_get_unmapped_area() the pgoff offset which is >>>> then given to parisc's get_unmapped_area() function. This is much >>>> cleaner than the previous approach, and we still will get a coherent >>>> addresss. >>>> >>>> This patch has no effect on other architectures (SHM_COLOUR is only >>>> defined on parisc), and the liburing testcase stil passes on parisc. >>> >>> What branch is this against? It doesn't apply to my 6.5 io_uring branch, >>> which is odd as that's where the previous commits went through. >> >> applies for me on git head / Linux 6.5-rc5 > > Hmm, maybe something unrelated then. I'll take a look. The patch is > garbled fwiw, but that's nothing new. If you download the raw one from > lore you can see how. That's strange. I usually send to the mailing list, and then apply from patchwork, in this case from here: https://patchwork.kernel.org/project/linux-parisc/patch/ZNEyGV0jyI8kOOfz@p100/ That worked for me. Helge ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] io_uring/parisc: Adjust pgoff in io_uring mmap() for parisc 2023-08-07 18:04 ` [PATCH] io_uring/parisc: Adjust pgoff in io_uring mmap() for parisc Helge Deller 2023-08-07 18:24 ` Jens Axboe @ 2023-08-07 18:34 ` Jens Axboe 2023-08-07 19:33 ` Helge Deller 1 sibling, 1 reply; 8+ messages in thread From: Jens Axboe @ 2023-08-07 18:34 UTC (permalink / raw) To: Christoph Biedl, linux-parisc, io-uring, Helge Deller Cc: Mike Rapoport, Vlastimil Babka On Mon, 07 Aug 2023 20:04:09 +0200, Helge Deller wrote: > The changes from commit 32832a407a71 ("io_uring: Fix io_uring mmap() by > using architecture-provided get_unmapped_area()") to the parisc > implementation of get_unmapped_area() broke glibc's locale-gen > executable when running on parisc. > > This patch reverts those architecture-specific changes, and instead > adjusts in io_uring_mmu_get_unmapped_area() the pgoff offset which is > then given to parisc's get_unmapped_area() function. This is much > cleaner than the previous approach, and we still will get a coherent > addresss. > > [...] Applied, thanks! [1/1] io_uring/parisc: Adjust pgoff in io_uring mmap() for parisc commit: ce11a0688e67aae1e9ba6c8843d7e8b7dd791ead Best regards, -- Jens Axboe ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] io_uring/parisc: Adjust pgoff in io_uring mmap() for parisc 2023-08-07 18:34 ` Jens Axboe @ 2023-08-07 19:33 ` Helge Deller 2023-08-07 19:55 ` Jens Axboe 0 siblings, 1 reply; 8+ messages in thread From: Helge Deller @ 2023-08-07 19:33 UTC (permalink / raw) To: Jens Axboe, Christoph Biedl, linux-parisc, io-uring Cc: Mike Rapoport, Vlastimil Babka On 8/7/23 20:34, Jens Axboe wrote: > > On Mon, 07 Aug 2023 20:04:09 +0200, Helge Deller wrote: >> The changes from commit 32832a407a71 ("io_uring: Fix io_uring mmap() by >> using architecture-provided get_unmapped_area()") to the parisc >> implementation of get_unmapped_area() broke glibc's locale-gen >> executable when running on parisc. >> >> This patch reverts those architecture-specific changes, and instead >> adjusts in io_uring_mmu_get_unmapped_area() the pgoff offset which is >> then given to parisc's get_unmapped_area() function. This is much >> cleaner than the previous approach, and we still will get a coherent >> addresss. >> >> [...] > > Applied, thanks! That was fast :-) Actually I had hoped for some more testing from Christoph and other parisc guys first. Anyway, since you have a parisc machine in your test ring, you will notice if something breaks, What's important: Please add to the patch: Cc: [email protected] # 6.4 Thank you! Helge > [1/1] io_uring/parisc: Adjust pgoff in io_uring mmap() for parisc > commit: ce11a0688e67aae1e9ba6c8843d7e8b7dd791ead ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] io_uring/parisc: Adjust pgoff in io_uring mmap() for parisc 2023-08-07 19:33 ` Helge Deller @ 2023-08-07 19:55 ` Jens Axboe 0 siblings, 0 replies; 8+ messages in thread From: Jens Axboe @ 2023-08-07 19:55 UTC (permalink / raw) To: Helge Deller Cc: Christoph Biedl, linux-parisc, io-uring, Mike Rapoport, Vlastimil Babka On Aug 7, 2023, at 12:33 PM, Helge Deller <[email protected]> wrote: > > On 8/7/23 20:34, Jens Axboe wrote: >> >>> On Mon, 07 Aug 2023 20:04:09 +0200, Helge Deller wrote: >>> The changes from commit 32832a407a71 ("io_uring: Fix io_uring mmap() by >>> using architecture-provided get_unmapped_area()") to the parisc >>> implementation of get_unmapped_area() broke glibc's locale-gen >>> executable when running on parisc. >>> >>> This patch reverts those architecture-specific changes, and instead >>> adjusts in io_uring_mmu_get_unmapped_area() the pgoff offset which is >>> then given to parisc's get_unmapped_area() function. This is much >>> cleaner than the previous approach, and we still will get a coherent >>> addresss. >>> >>> [...] >> >> Applied, thanks! > > That was fast :-) > Actually I had hoped for some more testing from Christoph and other > parisc guys first. > Anyway, since you have a parisc machine in your test ring, you will > notice if something breaks, > > What's important: > Please add to the patch: > Cc: [email protected] # 6.4 It’s not going upstream just yet, just easiser to apply for testing on my end. I will test it locally too. — Jens Axboe ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2023-08-07 19:55 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- [not found] <[email protected]> [not found] ` <[email protected]> [not found] ` <[email protected]> [not found] ` <[email protected]> [not found] ` <[email protected]> [not found] ` <[email protected]> 2023-08-07 18:04 ` [PATCH] io_uring/parisc: Adjust pgoff in io_uring mmap() for parisc Helge Deller 2023-08-07 18:24 ` Jens Axboe 2023-08-07 18:27 ` Helge Deller 2023-08-07 18:33 ` Jens Axboe 2023-08-07 19:30 ` Helge Deller 2023-08-07 18:34 ` Jens Axboe 2023-08-07 19:33 ` Helge Deller 2023-08-07 19:55 ` Jens Axboe
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox