* [Xenomai-help] rtdm_iomap_to_user on PPC @ 2008-10-08 9:49 thomas.debes 2008-10-17 4:46 ` thomas.debes 0 siblings, 1 reply; 11+ messages in thread From: thomas.debes @ 2008-10-08 9:49 UTC (permalink / raw) To: xenomai Hello, in the following thread I was asking for a solution to use rtdm_iomap_to_user() on PPC (MPC5200, Denx 2.4.25) https://mail.gna.org/public/xenomai-help/2008-05/msg00153.html As suggested by Philippe I tried the current 2.4.5 stable release, but the problem still remains. The call to rtdm_iomap_to_user returns success (0) but any access to the mapped memory section ends in freezing the whole system. Thanks for your help! Thomas Achtung: Neue E-Mail-Adresse! Attention: New e-mail-address! thomas.debes@domain.hid -------------------------------------------------------- manroland AG Vorsitzender des Aufsichtsrates: Hanno C. Fiedler Vorstand: Gerd Finkbeiner (Vorsitzender), Dr. Ingo Koch, Dr. Markus Rall, Paul Steidle Sitz der Gesellschaft: Offenbach am Main, Registergericht: Amtsgericht Offenbach HRB-Nr. 42592 USt-Ident-Nr. DE 250200933 ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Xenomai-help] rtdm_iomap_to_user on PPC 2008-10-08 9:49 [Xenomai-help] rtdm_iomap_to_user on PPC thomas.debes @ 2008-10-17 4:46 ` thomas.debes 2008-10-19 0:58 ` Alexis Berlemont 0 siblings, 1 reply; 11+ messages in thread From: thomas.debes @ 2008-10-17 4:46 UTC (permalink / raw) To: xenomai No comments or ideas? Providing this feature is essential for our CPCI drivers. We have to port some Linux applications to Xenomai which use that mmap stuff intensely. Thanks again! Thomas > -----Ursprüngliche Nachricht----- > Von: xenomai-help-bounces@domain.hid > [mailto:xenomai-help-bounces@domain.hid] Im Auftrag von > thomas.debes@domain.hid > Gesendet: Mittwoch, 8. Oktober 2008 11:49 > An: xenomai@xenomai.org > Betreff: [Xenomai-help] rtdm_iomap_to_user on PPC > > Hello, > > in the following thread I was asking for a solution to use > rtdm_iomap_to_user() on PPC (MPC5200, Denx 2.4.25) > > https://mail.gna.org/public/xenomai-help/2008-05/msg00153.html > > As suggested by Philippe I tried the current 2.4.5 stable > release, but the problem still remains. The call to > rtdm_iomap_to_user returns success (0) but any access to the > mapped memory section ends in freezing the whole system. > > Thanks for your help! > > Thomas > > Achtung: Neue E-Mail-Adresse! Attention: New e-mail-address! > thomas.debes@domain.hid > -------------------------------------------------------- > manroland AG > Vorsitzender des Aufsichtsrates: Hanno C. Fiedler > Vorstand: Gerd Finkbeiner (Vorsitzender), Dr. Ingo Koch, Dr. > Markus Rall, Paul Steidle > Sitz der Gesellschaft: Offenbach am Main, Registergericht: > Amtsgericht Offenbach HRB-Nr. 42592 USt-Ident-Nr. DE 250200933 > > _______________________________________________ > Xenomai-help mailing list > Xenomai-help@domain.hid > https://mail.gna.org/listinfo/xenomai-help > Achtung: Neue E-Mail-Adresse! Attention: New e-mail-address! thomas.debes@domain.hid -------------------------------------------------------- manroland AG Vorsitzender des Aufsichtsrates: Hanno C. Fiedler Vorstand: Gerd Finkbeiner (Vorsitzender), Dr. Ingo Koch, Dr. Markus Rall, Paul Steidle Sitz der Gesellschaft: Offenbach am Main, Registergericht: Amtsgericht Offenbach HRB-Nr. 42592 USt-Ident-Nr. DE 250200933 ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Xenomai-help] rtdm_iomap_to_user on PPC 2008-10-17 4:46 ` thomas.debes @ 2008-10-19 0:58 ` Alexis Berlemont 2008-10-19 17:47 ` Gilles Chanteperdrix 0 siblings, 1 reply; 11+ messages in thread From: Alexis Berlemont @ 2008-10-19 0:58 UTC (permalink / raw) To: xenomai Hi, On Friday 17 October 2008 06:46, thomas.debes@domain.hid wrote: > No comments or ideas? Providing this feature is essential for our CPCI > drivers. We have to port some Linux applications to Xenomai which use that > mmap stuff intensely. > > Thanks again! > > Thomas > > > -----Ursprüngliche Nachricht----- > > Von: xenomai-help-bounces@domain.hid > > [mailto:xenomai-help-bounces@domain.hid] Im Auftrag von > > thomas.debes@domain.hid > > Gesendet: Mittwoch, 8. Oktober 2008 11:49 > > An: xenomai@xenomai.org > > Betreff: [Xenomai-help] rtdm_iomap_to_user on PPC > > > > Hello, > > > > in the following thread I was asking for a solution to use > > rtdm_iomap_to_user() on PPC (MPC5200, Denx 2.4.25) In 2.4 kernel, rtdm_iomap_to_user() is based on the function remap_page_range (with vma->vm_flags |= VM_RESERVED). Once, I had to develop a classical Linux driver (for PPC) which provided mmap functionalites so as to let a user application mmap a buffer allocated thanks to __get_free_pages(). On a 2.6 kernel, I used remap_pfn_range() and it works great but on 2.4 kernel the function remap_page_range() did not work as I expected. I had a quick look on its implementation and I found that instead of mapping my buffer it mapped newly allocated zeroed pages (if my memories are correct). If I remember well, these pages were allocated in lazy mode. That could explain the freeze of your whole system: in case a RT application in primary mode tries to access the mmapped buffer. My remembrance are not very accurate and considering the hour, I will just be able to give you some idea of tests to perform. 1) Have you tried to access your driver with a classical NRT process (not with a RT task even on secondary mode); in such a configuration, I think there should be no freeze. 2) Could you try to develop a minimal Linux driver (without RTDM) which maps a buffer thanks to remap_page_range(). Could you check that you are not able to properly access the data (you should read zero everywhere) ? A good test would be to open and perform the mmap with a classical user process and, once the mmap initialization is done, you could shadow your process (rt_task_shadow) and try to access the mmapped buffer. That should freeze your system and then prove that the problem comes from remap_page_range(). In my case, I resolved my problem by using the no_page() way described in Rubbini's book (Linux device driver 2nd edition). By the way, I think that was the recommended method for my configuration. Alexis. > > https://mail.gna.org/public/xenomai-help/2008-05/msg00153.html > > > > As suggested by Philippe I tried the current 2.4.5 stable > > release, but the problem still remains. The call to > > rtdm_iomap_to_user returns success (0) but any access to the > > mapped memory section ends in freezing the whole system. > > > > Thanks for your help! > > > > Thomas > > > > Achtung: Neue E-Mail-Adresse! Attention: New e-mail-address! > > thomas.debes@domain.hid > > -------------------------------------------------------- > > manroland AG > > Vorsitzender des Aufsichtsrates: Hanno C. Fiedler > > Vorstand: Gerd Finkbeiner (Vorsitzender), Dr. Ingo Koch, Dr. > > Markus Rall, Paul Steidle > > Sitz der Gesellschaft: Offenbach am Main, Registergericht: > > Amtsgericht Offenbach HRB-Nr. 42592 USt-Ident-Nr. DE 250200933 > > > > _______________________________________________ > > Xenomai-help mailing list > > Xenomai-help@domain.hid > > https://mail.gna.org/listinfo/xenomai-help > > Achtung: Neue E-Mail-Adresse! Attention: New e-mail-address! > thomas.debes@domain.hid > -------------------------------------------------------- > manroland AG > Vorsitzender des Aufsichtsrates: Hanno C. Fiedler > Vorstand: Gerd Finkbeiner (Vorsitzender), Dr. Ingo Koch, Dr. Markus Rall, > Paul Steidle Sitz der Gesellschaft: Offenbach am Main, Registergericht: > Amtsgericht Offenbach HRB-Nr. 42592 USt-Ident-Nr. DE 250200933 > > _______________________________________________ > Xenomai-help mailing list > Xenomai-help@domain.hid > https://mail.gna.org/listinfo/xenomai-help ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Xenomai-help] rtdm_iomap_to_user on PPC 2008-10-19 0:58 ` Alexis Berlemont @ 2008-10-19 17:47 ` Gilles Chanteperdrix 2008-10-19 17:54 ` Philippe Gerum 0 siblings, 1 reply; 11+ messages in thread From: Gilles Chanteperdrix @ 2008-10-19 17:47 UTC (permalink / raw) To: Alexis Berlemont; +Cc: xenomai Alexis Berlemont wrote: > Hi, > > On Friday 17 October 2008 06:46, thomas.debes@domain.hid wrote: >> No comments or ideas? Providing this feature is essential for our CPCI >> drivers. We have to port some Linux applications to Xenomai which use that >> mmap stuff intensely. >> >> Thanks again! >> >> Thomas >> >>> -----Ursprüngliche Nachricht----- >>> Von: xenomai-help-bounces@domain.hid >>> [mailto:xenomai-help-bounces@domain.hid] Im Auftrag von >>> thomas.debes@domain.hid >>> Gesendet: Mittwoch, 8. Oktober 2008 11:49 >>> An: xenomai@xenomai.org >>> Betreff: [Xenomai-help] rtdm_iomap_to_user on PPC >>> >>> Hello, >>> >>> in the following thread I was asking for a solution to use >>> rtdm_iomap_to_user() on PPC (MPC5200, Denx 2.4.25) > > > In 2.4 kernel, rtdm_iomap_to_user() is based on the function remap_page_range > (with vma->vm_flags |= VM_RESERVED). > > Once, I had to develop a classical Linux driver (for PPC) which provided mmap > functionalites so as to let a user application mmap a buffer allocated thanks > to __get_free_pages(). > > On a 2.6 kernel, I used remap_pfn_range() and it works great but on 2.4 kernel > the function remap_page_range() did not work as I expected. I had a quick > look on its implementation and I found that instead of mapping my buffer it > mapped newly allocated zeroed pages (if my memories are correct). > > If I remember well, these pages were allocated in lazy mode. That could > explain the freeze of your whole system: in case a RT application in primary > mode tries to access the mmapped buffer. Well, normally, the fault should cause the RT application to switch to secondary mode and be handled gracefully from there, unless there is a bug hidden in Xenomai or I-pipe. Besides, RT applications usually use "mlockall", so the kernel should make all the pages present and not rely on further faults (at least, is it how it works on 2.6). -- Gilles. ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Xenomai-help] rtdm_iomap_to_user on PPC 2008-10-19 17:47 ` Gilles Chanteperdrix @ 2008-10-19 17:54 ` Philippe Gerum 2008-10-19 17:56 ` Gilles Chanteperdrix 0 siblings, 1 reply; 11+ messages in thread From: Philippe Gerum @ 2008-10-19 17:54 UTC (permalink / raw) To: Gilles Chanteperdrix; +Cc: xenomai Gilles Chanteperdrix wrote: > Alexis Berlemont wrote: >> Hi, >> >> On Friday 17 October 2008 06:46, thomas.debes@domain.hid wrote: >>> No comments or ideas? Providing this feature is essential for our CPCI >>> drivers. We have to port some Linux applications to Xenomai which use that >>> mmap stuff intensely. >>> >>> Thanks again! >>> >>> Thomas >>> >>>> -----Ursprüngliche Nachricht----- >>>> Von: xenomai-help-bounces@domain.hid >>>> [mailto:xenomai-help-bounces@domain.hid] Im Auftrag von >>>> thomas.debes@domain.hid >>>> Gesendet: Mittwoch, 8. Oktober 2008 11:49 >>>> An: xenomai@xenomai.org >>>> Betreff: [Xenomai-help] rtdm_iomap_to_user on PPC >>>> >>>> Hello, >>>> >>>> in the following thread I was asking for a solution to use >>>> rtdm_iomap_to_user() on PPC (MPC5200, Denx 2.4.25) >> >> In 2.4 kernel, rtdm_iomap_to_user() is based on the function remap_page_range >> (with vma->vm_flags |= VM_RESERVED). >> >> Once, I had to develop a classical Linux driver (for PPC) which provided mmap >> functionalites so as to let a user application mmap a buffer allocated thanks >> to __get_free_pages(). >> >> On a 2.6 kernel, I used remap_pfn_range() and it works great but on 2.4 kernel >> the function remap_page_range() did not work as I expected. I had a quick >> look on its implementation and I found that instead of mapping my buffer it >> mapped newly allocated zeroed pages (if my memories are correct). >> >> If I remember well, these pages were allocated in lazy mode. That could >> explain the freeze of your whole system: in case a RT application in primary >> mode tries to access the mmapped buffer. > > Well, normally, the fault should cause the RT application to switch to > secondary mode and be handled gracefully from there, unless there is a > bug hidden in Xenomai or I-pipe. Besides, RT applications usually use > "mlockall", so the kernel should make all the pages present and not rely > on further faults (at least, is it how it works on 2.6). > powerpc may still trigger minor faults upon TLB misses though. That arch has a software-assisted MMU. -- Philippe. ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Xenomai-help] rtdm_iomap_to_user on PPC 2008-10-19 17:54 ` Philippe Gerum @ 2008-10-19 17:56 ` Gilles Chanteperdrix 2008-10-19 18:10 ` Philippe Gerum 0 siblings, 1 reply; 11+ messages in thread From: Gilles Chanteperdrix @ 2008-10-19 17:56 UTC (permalink / raw) To: rpm; +Cc: xenomai Philippe Gerum wrote: > Gilles Chanteperdrix wrote: >> Alexis Berlemont wrote: >>> Hi, >>> >>> On Friday 17 October 2008 06:46, thomas.debes@domain.hid wrote: >>>> No comments or ideas? Providing this feature is essential for our CPCI >>>> drivers. We have to port some Linux applications to Xenomai which use that >>>> mmap stuff intensely. >>>> >>>> Thanks again! >>>> >>>> Thomas >>>> >>>>> -----Ursprüngliche Nachricht----- >>>>> Von: xenomai-help-bounces@domain.hid >>>>> [mailto:xenomai-help-bounces@domain.hid] Im Auftrag von >>>>> thomas.debes@domain.hid >>>>> Gesendet: Mittwoch, 8. Oktober 2008 11:49 >>>>> An: xenomai@xenomai.org >>>>> Betreff: [Xenomai-help] rtdm_iomap_to_user on PPC >>>>> >>>>> Hello, >>>>> >>>>> in the following thread I was asking for a solution to use >>>>> rtdm_iomap_to_user() on PPC (MPC5200, Denx 2.4.25) >>> In 2.4 kernel, rtdm_iomap_to_user() is based on the function remap_page_range >>> (with vma->vm_flags |= VM_RESERVED). >>> >>> Once, I had to develop a classical Linux driver (for PPC) which provided mmap >>> functionalites so as to let a user application mmap a buffer allocated thanks >>> to __get_free_pages(). >>> >>> On a 2.6 kernel, I used remap_pfn_range() and it works great but on 2.4 kernel >>> the function remap_page_range() did not work as I expected. I had a quick >>> look on its implementation and I found that instead of mapping my buffer it >>> mapped newly allocated zeroed pages (if my memories are correct). >>> >>> If I remember well, these pages were allocated in lazy mode. That could >>> explain the freeze of your whole system: in case a RT application in primary >>> mode tries to access the mmapped buffer. >> Well, normally, the fault should cause the RT application to switch to >> secondary mode and be handled gracefully from there, unless there is a >> bug hidden in Xenomai or I-pipe. Besides, RT applications usually use >> "mlockall", so the kernel should make all the pages present and not rely >> on further faults (at least, is it how it works on 2.6). >> > > powerpc may still trigger minor faults upon TLB misses though. That arch has a > software-assisted MMU. Ok, and can these faults cause lockups when they happen in primary mode? -- Gilles. ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Xenomai-help] rtdm_iomap_to_user on PPC 2008-10-19 17:56 ` Gilles Chanteperdrix @ 2008-10-19 18:10 ` Philippe Gerum 2008-10-21 6:00 ` thomas.debes 0 siblings, 1 reply; 11+ messages in thread From: Philippe Gerum @ 2008-10-19 18:10 UTC (permalink / raw) To: Gilles Chanteperdrix; +Cc: xenomai Gilles Chanteperdrix wrote: > Philippe Gerum wrote: >> Gilles Chanteperdrix wrote: >>> Alexis Berlemont wrote: >>>> Hi, >>>> >>>> On Friday 17 October 2008 06:46, thomas.debes@domain.hid wrote: >>>>> No comments or ideas? Providing this feature is essential for our CPCI >>>>> drivers. We have to port some Linux applications to Xenomai which use that >>>>> mmap stuff intensely. >>>>> >>>>> Thanks again! >>>>> >>>>> Thomas >>>>> >>>>>> -----Ursprüngliche Nachricht----- >>>>>> Von: xenomai-help-bounces@domain.hid >>>>>> [mailto:xenomai-help-bounces@domain.hid] Im Auftrag von >>>>>> thomas.debes@domain.hid >>>>>> Gesendet: Mittwoch, 8. Oktober 2008 11:49 >>>>>> An: xenomai@xenomai.org >>>>>> Betreff: [Xenomai-help] rtdm_iomap_to_user on PPC >>>>>> >>>>>> Hello, >>>>>> >>>>>> in the following thread I was asking for a solution to use >>>>>> rtdm_iomap_to_user() on PPC (MPC5200, Denx 2.4.25) >>>> In 2.4 kernel, rtdm_iomap_to_user() is based on the function remap_page_range >>>> (with vma->vm_flags |= VM_RESERVED). >>>> >>>> Once, I had to develop a classical Linux driver (for PPC) which provided mmap >>>> functionalites so as to let a user application mmap a buffer allocated thanks >>>> to __get_free_pages(). >>>> >>>> On a 2.6 kernel, I used remap_pfn_range() and it works great but on 2.4 kernel >>>> the function remap_page_range() did not work as I expected. I had a quick >>>> look on its implementation and I found that instead of mapping my buffer it >>>> mapped newly allocated zeroed pages (if my memories are correct). >>>> >>>> If I remember well, these pages were allocated in lazy mode. That could >>>> explain the freeze of your whole system: in case a RT application in primary >>>> mode tries to access the mmapped buffer. >>> Well, normally, the fault should cause the RT application to switch to >>> secondary mode and be handled gracefully from there, unless there is a >>> bug hidden in Xenomai or I-pipe. Besides, RT applications usually use >>> "mlockall", so the kernel should make all the pages present and not rely >>> on further faults (at least, is it how it works on 2.6). >>> >> powerpc may still trigger minor faults upon TLB misses though. That arch has a >> software-assisted MMU. > > Ok, and can these faults cause lockups when they happen in primary mode? > Unless I messed up things in the I-pipe patch, no. Depending on the MMU management code, some of them will reach the Linux fault handler and trigger the mode switch via the Xenomai fault handler, others will be processed directly from the low-level exception code when it is possible to fix up the mapping from there. As I mentioned a long time ago, the issue is more likely related to the protection bits used with PCI memory resources, which do require additional fixup on powerpc (_PAGE_GUARDED and _PAGE_NO_CACHE come to mind here). -- Philippe. ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Xenomai-help] rtdm_iomap_to_user on PPC 2008-10-19 18:10 ` Philippe Gerum @ 2008-10-21 6:00 ` thomas.debes 2008-10-21 11:12 ` Philippe Gerum 0 siblings, 1 reply; 11+ messages in thread From: thomas.debes @ 2008-10-21 6:00 UTC (permalink / raw) To: xenomai Hello Alexis, hello Philippe, thanks for your suggestions - the protection bits did the trick! Adding them to xnarch_remap_io_page_range(...) in rtdm_mmap_buffer() solved the problem. We already tried this few months ago using pgprot_val(vma->vm_page_prot) |= _PAGE_NO_CACHE | _PAGE_GUARDED | PAGE_SHARED; but missed the fact that xnarch_remap_io_page_range only takes PAGE_SHARED instead of use vma->vm_page_prot as its 5th parameter. I am not sure wether this extension will have side effects on other architectures. Maybe there is a better place for this fix. What do you think? Thanks again! Thomas > -----Ursprüngliche Nachricht----- > Von: xenomai-help-bounces@domain.hid > [mailto:xenomai-help-bounces@domain.hid] Im Auftrag von Philippe Gerum > Gesendet: Sonntag, 19. Oktober 2008 20:11 > An: Gilles Chanteperdrix > Cc: xenomai@xenomai.org > Betreff: Re: [Xenomai-help] rtdm_iomap_to_user on PPC > > Gilles Chanteperdrix wrote: > > Philippe Gerum wrote: > >> Gilles Chanteperdrix wrote: > >>> Alexis Berlemont wrote: > >>>> Hi, > >>>> > >>>> On Friday 17 October 2008 06:46, > thomas.debes@domain.hid wrote: > >>>>> No comments or ideas? Providing this feature is > essential for our > >>>>> CPCI drivers. We have to port some Linux applications > to Xenomai > >>>>> which use that mmap stuff intensely. > >>>>> > >>>>> Thanks again! > >>>>> > >>>>> Thomas > >>>>> > >>>>>> -----Ursprüngliche Nachricht----- > >>>>>> Von: xenomai-help-bounces@domain.hid > >>>>>> [mailto:xenomai-help-bounces@domain.hid] Im Auftrag von > >>>>>> thomas.debes@domain.hid > >>>>>> Gesendet: Mittwoch, 8. Oktober 2008 11:49 > >>>>>> An: xenomai@xenomai.org > >>>>>> Betreff: [Xenomai-help] rtdm_iomap_to_user on PPC > >>>>>> > >>>>>> Hello, > >>>>>> > >>>>>> in the following thread I was asking for a solution to use > >>>>>> rtdm_iomap_to_user() on PPC (MPC5200, Denx 2.4.25) > >>>> In 2.4 kernel, rtdm_iomap_to_user() is based on the function > >>>> remap_page_range (with vma->vm_flags |= VM_RESERVED). > >>>> > >>>> Once, I had to develop a classical Linux driver (for PPC) which > >>>> provided mmap functionalites so as to let a user > application mmap a > >>>> buffer allocated thanks to __get_free_pages(). > >>>> > >>>> On a 2.6 kernel, I used remap_pfn_range() and it works > great but on > >>>> 2.4 kernel the function remap_page_range() did not work as I > >>>> expected. I had a quick look on its implementation and I > found that > >>>> instead of mapping my buffer it mapped newly allocated > zeroed pages (if my memories are correct). > >>>> > >>>> If I remember well, these pages were allocated in lazy > mode. That > >>>> could explain the freeze of your whole system: in case a RT > >>>> application in primary mode tries to access the mmapped buffer. > >>> Well, normally, the fault should cause the RT application > to switch > >>> to secondary mode and be handled gracefully from there, > unless there > >>> is a bug hidden in Xenomai or I-pipe. Besides, RT applications > >>> usually use "mlockall", so the kernel should make all the pages > >>> present and not rely on further faults (at least, is it > how it works on 2.6). > >>> > >> powerpc may still trigger minor faults upon TLB misses > though. That > >> arch has a software-assisted MMU. > > > > Ok, and can these faults cause lockups when they happen in > primary mode? > > > > Unless I messed up things in the I-pipe patch, no. Depending > on the MMU management code, some of them will reach the Linux > fault handler and trigger the mode switch via the Xenomai > fault handler, others will be processed directly from the > low-level exception code when it is possible to fix up the > mapping from there. > > As I mentioned a long time ago, the issue is more likely > related to the protection bits used with PCI memory > resources, which do require additional fixup on powerpc > (_PAGE_GUARDED and _PAGE_NO_CACHE come to mind here). > > -- > Philippe. > > _______________________________________________ > Xenomai-help mailing list > Xenomai-help@domain.hid > https://mail.gna.org/listinfo/xenomai-help > Achtung: Neue E-Mail-Adresse! Attention: New e-mail-address! thomas.debes@domain.hid -------------------------------------------------------- manroland AG Vorsitzender des Aufsichtsrates: Hanno C. Fiedler Vorstand: Gerd Finkbeiner (Vorsitzender), Dr. Ingo Koch, Dr. Markus Rall, Paul Steidle Sitz der Gesellschaft: Offenbach am Main, Registergericht: Amtsgericht Offenbach HRB-Nr. 42592 USt-Ident-Nr. DE 250200933 ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Xenomai-help] rtdm_iomap_to_user on PPC 2008-10-21 6:00 ` thomas.debes @ 2008-10-21 11:12 ` Philippe Gerum 2008-10-23 5:03 ` thomas.debes 0 siblings, 1 reply; 11+ messages in thread From: Philippe Gerum @ 2008-10-21 11:12 UTC (permalink / raw) To: thomas.debes; +Cc: xenomai [-- Attachment #1: Type: text/plain, Size: 5131 bytes --] thomas.debes@domain.hid wrote: > Hello Alexis, hello Philippe, > > thanks for your suggestions - the protection bits did the trick! Adding them to xnarch_remap_io_page_range(...) in rtdm_mmap_buffer() solved the problem. We already tried this few months ago using > > pgprot_val(vma->vm_page_prot) |= _PAGE_NO_CACHE | _PAGE_GUARDED | PAGE_SHARED; > > but missed the fact that xnarch_remap_io_page_range only takes PAGE_SHARED instead of use vma->vm_page_prot as its 5th parameter. I am not sure wether this extension will have side effects on other architectures. Maybe there is a better place for this fix. What do you think? > Not all archs will have the same requirements, unfortunately. Could you try the attached patch? It also makes sure that prefetchable PCI memory won't be accessed as page guarded in 2.6. TIA, > Thanks again! > > Thomas > > > > >> -----Ursprüngliche Nachricht----- >> Von: xenomai-help-bounces@domain.hid >> [mailto:xenomai-help-bounces@domain.hid] Im Auftrag von Philippe Gerum >> Gesendet: Sonntag, 19. Oktober 2008 20:11 >> An: Gilles Chanteperdrix >> Cc: xenomai@xenomai.org >> Betreff: Re: [Xenomai-help] rtdm_iomap_to_user on PPC >> >> Gilles Chanteperdrix wrote: >>> Philippe Gerum wrote: >>>> Gilles Chanteperdrix wrote: >>>>> Alexis Berlemont wrote: >>>>>> Hi, >>>>>> >>>>>> On Friday 17 October 2008 06:46, >> thomas.debes@domain.hid wrote: >>>>>>> No comments or ideas? Providing this feature is >> essential for our >>>>>>> CPCI drivers. We have to port some Linux applications >> to Xenomai >>>>>>> which use that mmap stuff intensely. >>>>>>> >>>>>>> Thanks again! >>>>>>> >>>>>>> Thomas >>>>>>> >>>>>>>> -----Ursprüngliche Nachricht----- >>>>>>>> Von: xenomai-help-bounces@domain.hid >>>>>>>> [mailto:xenomai-help-bounces@domain.hid] Im Auftrag von >>>>>>>> thomas.debes@domain.hid >>>>>>>> Gesendet: Mittwoch, 8. Oktober 2008 11:49 >>>>>>>> An: xenomai@xenomai.org >>>>>>>> Betreff: [Xenomai-help] rtdm_iomap_to_user on PPC >>>>>>>> >>>>>>>> Hello, >>>>>>>> >>>>>>>> in the following thread I was asking for a solution to use >>>>>>>> rtdm_iomap_to_user() on PPC (MPC5200, Denx 2.4.25) >>>>>> In 2.4 kernel, rtdm_iomap_to_user() is based on the function >>>>>> remap_page_range (with vma->vm_flags |= VM_RESERVED). >>>>>> >>>>>> Once, I had to develop a classical Linux driver (for PPC) which >>>>>> provided mmap functionalites so as to let a user >> application mmap a >>>>>> buffer allocated thanks to __get_free_pages(). >>>>>> >>>>>> On a 2.6 kernel, I used remap_pfn_range() and it works >> great but on >>>>>> 2.4 kernel the function remap_page_range() did not work as I >>>>>> expected. I had a quick look on its implementation and I >> found that >>>>>> instead of mapping my buffer it mapped newly allocated >> zeroed pages (if my memories are correct). >>>>>> If I remember well, these pages were allocated in lazy >> mode. That >>>>>> could explain the freeze of your whole system: in case a RT >>>>>> application in primary mode tries to access the mmapped buffer. >>>>> Well, normally, the fault should cause the RT application >> to switch >>>>> to secondary mode and be handled gracefully from there, >> unless there >>>>> is a bug hidden in Xenomai or I-pipe. Besides, RT applications >>>>> usually use "mlockall", so the kernel should make all the pages >>>>> present and not rely on further faults (at least, is it >> how it works on 2.6). >>>> powerpc may still trigger minor faults upon TLB misses >> though. That >>>> arch has a software-assisted MMU. >>> Ok, and can these faults cause lockups when they happen in >> primary mode? >> Unless I messed up things in the I-pipe patch, no. Depending >> on the MMU management code, some of them will reach the Linux >> fault handler and trigger the mode switch via the Xenomai >> fault handler, others will be processed directly from the >> low-level exception code when it is possible to fix up the >> mapping from there. >> >> As I mentioned a long time ago, the issue is more likely >> related to the protection bits used with PCI memory >> resources, which do require additional fixup on powerpc >> (_PAGE_GUARDED and _PAGE_NO_CACHE come to mind here). >> >> -- >> Philippe. >> >> _______________________________________________ >> Xenomai-help mailing list >> Xenomai-help@domain.hid >> https://mail.gna.org/listinfo/xenomai-help >> > > Achtung: Neue E-Mail-Adresse! Attention: New e-mail-address! thomas.debes@domain.hid > -------------------------------------------------------- > manroland AG > Vorsitzender des Aufsichtsrates: Hanno C. Fiedler > Vorstand: Gerd Finkbeiner (Vorsitzender), Dr. Ingo Koch, Dr. Markus Rall, Paul Steidle > Sitz der Gesellschaft: Offenbach am Main, Registergericht: Amtsgericht Offenbach HRB-Nr. 42592 > USt-Ident-Nr. DE 250200933 > > _______________________________________________ > Xenomai-help mailing list > Xenomai-help@domain.hid > https://mail.gna.org/listinfo/xenomai-help > -- Philippe. [-- Attachment #2: platform-dependent-phys-access-prot.patch --] [-- Type: text/x-diff, Size: 2599 bytes --] Index: include/asm-generic/system.h =================================================================== --- include/asm-generic/system.h (revision 4270) +++ include/asm-generic/system.h (working copy) @@ -409,13 +409,16 @@ return wrap_remap_vm_page(vma,from,to); } -static inline int xnarch_remap_io_page_range(struct vm_area_struct *vma, +static inline int xnarch_remap_io_page_range(struct file *filp, + struct vm_area_struct *vma, unsigned long from, unsigned long to, unsigned long size, pgprot_t prot) { - return wrap_remap_io_page_range(vma,from,to,size,prot); + return wrap_remap_io_page_range(vma,from,to,size, + wrap_phys_mem_prot(filp, (to) >> PAGE_SHIFT, + size, prot)); } static inline int xnarch_remap_kmem_page_range(struct vm_area_struct *vma, Index: include/asm-powerpc/wrappers.h =================================================================== --- include/asm-powerpc/wrappers.h (revision 4270) +++ include/asm-powerpc/wrappers.h (working copy) @@ -31,6 +31,9 @@ #define CONFIG_MMU 1 +#define wrap_phys_mem_prot(filp,pfn,size,prot) \ + __pgprot(pgprot_val(prot) | _PAGE_NO_CACHE | _PAGE_GUARDED) + #define atomic_inc_and_test(v) (atomic_inc_return(v) == 0) #define show_stack(p,sp) print_backtrace(sp) /* Only works for current. */ @@ -51,6 +54,9 @@ #else /* LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0) */ +#define wrap_phys_mem_prot(filp,pfn,size,prot) \ + phys_mem_access_prot(filp, pfn, size, prot) + #ifdef CONFIG_PPC64 #define wrap_range_ok(task,addr,size) \ __access_ok(((__force unsigned long)(addr)),(size),(task->thread.fs)) Index: ksrc/skins/rtdm/drvlib.c =================================================================== --- ksrc/skins/rtdm/drvlib.c (revision 4270) +++ ksrc/skins/rtdm/drvlib.c (working copy) @@ -1807,7 +1807,7 @@ } else #endif /* CONFIG_MMU */ if (mmap_data->src_paddr) - return xnarch_remap_io_page_range(vma, maddr, paddr, + return xnarch_remap_io_page_range(filp, vma, maddr, paddr, size, PAGE_SHARED); else return xnarch_remap_kmem_page_range(vma, maddr, paddr, Index: ksrc/nucleus/heap.c =================================================================== --- ksrc/nucleus/heap.c (revision 4270) +++ ksrc/nucleus/heap.c (working copy) @@ -1053,7 +1053,7 @@ vaddr += PAGE_SIZE; size -= PAGE_SIZE; } - } else if (xnarch_remap_io_page_range(vma, + } else if (xnarch_remap_io_page_range(file,vma, vma->vm_start, virt_to_phys((void *)vaddr), size, PAGE_SHARED)) ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Xenomai-help] rtdm_iomap_to_user on PPC 2008-10-21 11:12 ` Philippe Gerum @ 2008-10-23 5:03 ` thomas.debes 2008-10-23 9:15 ` Philippe Gerum 0 siblings, 1 reply; 11+ messages in thread From: thomas.debes @ 2008-10-23 5:03 UTC (permalink / raw) To: rpm; +Cc: xenomai > -----Ursprüngliche Nachricht----- > Von: Philippe Gerum [mailto:rpm@xenomai.org > Gesendet: Dienstag, 21. Oktober 2008 13:12 > An: Debes, Thomas RAEK3 MRA > Cc: xenomai@xenomai.org > Betreff: Re: [Xenomai-help] rtdm_iomap_to_user on PPC > > thomas.debes@domain.hid wrote: > > Hello Alexis, hello Philippe, > > > > thanks for your suggestions - the protection bits did the trick! > > Adding them to xnarch_remap_io_page_range(...) in > rtdm_mmap_buffer() > > solved the problem. We already tried this few months ago using > > > > pgprot_val(vma->vm_page_prot) |= _PAGE_NO_CACHE | _PAGE_GUARDED | > > PAGE_SHARED; > > > > but missed the fact that xnarch_remap_io_page_range only > takes PAGE_SHARED instead of use vma->vm_page_prot as its 5th > parameter. I am not sure wether this extension will have side > effects on other architectures. Maybe there is a better place > for this fix. What do you think? > > > > Not all archs will have the same requirements, unfortunately. > Could you try the attached patch? It also makes sure that > prefetchable PCI memory won't be accessed as page guarded in 2.6. TIA, Ok, got it working. Everything works as expected (at least for kernel 2.4). Will that patch be included in the next release (2.4.6)? Regards Thomas > > > Thanks again! > > > > Thomas > > > > > > > > > >> -----Ursprüngliche Nachricht----- > >> Von: xenomai-help-bounces@domain.hid > >> [mailto:xenomai-help-bounces@domain.hid] Im Auftrag von Philippe Gerum > >> Gesendet: Sonntag, 19. Oktober 2008 20:11 > >> An: Gilles Chanteperdrix > >> Cc: xenomai@xenomai.org > >> Betreff: Re: [Xenomai-help] rtdm_iomap_to_user on PPC > >> > >> Gilles Chanteperdrix wrote: > >>> Philippe Gerum wrote: > >>>> Gilles Chanteperdrix wrote: > >>>>> Alexis Berlemont wrote: > >>>>>> Hi, > >>>>>> > >>>>>> On Friday 17 October 2008 06:46, > >> thomas.debes@domain.hid wrote: > >>>>>>> No comments or ideas? Providing this feature is > >> essential for our > >>>>>>> CPCI drivers. We have to port some Linux applications > >> to Xenomai > >>>>>>> which use that mmap stuff intensely. > >>>>>>> > >>>>>>> Thanks again! > >>>>>>> > >>>>>>> Thomas > >>>>>>> > >>>>>>>> -----Ursprüngliche Nachricht----- > >>>>>>>> Von: xenomai-help-bounces@domain.hid > >>>>>>>> [mailto:xenomai-help-bounces@domain.hid] Im Auftrag von > >>>>>>>> thomas.debes@domain.hid > >>>>>>>> Gesendet: Mittwoch, 8. Oktober 2008 11:49 > >>>>>>>> An: xenomai@xenomai.org > >>>>>>>> Betreff: [Xenomai-help] rtdm_iomap_to_user on PPC > >>>>>>>> > >>>>>>>> Hello, > >>>>>>>> > >>>>>>>> in the following thread I was asking for a solution to use > >>>>>>>> rtdm_iomap_to_user() on PPC (MPC5200, Denx 2.4.25) > >>>>>> In 2.4 kernel, rtdm_iomap_to_user() is based on the function > >>>>>> remap_page_range (with vma->vm_flags |= VM_RESERVED). > >>>>>> > >>>>>> Once, I had to develop a classical Linux driver (for > PPC) which > >>>>>> provided mmap functionalites so as to let a user > >> application mmap a > >>>>>> buffer allocated thanks to __get_free_pages(). > >>>>>> > >>>>>> On a 2.6 kernel, I used remap_pfn_range() and it works > >> great but on > >>>>>> 2.4 kernel the function remap_page_range() did not work as I > >>>>>> expected. I had a quick look on its implementation and I > >> found that > >>>>>> instead of mapping my buffer it mapped newly allocated > >> zeroed pages (if my memories are correct). > >>>>>> If I remember well, these pages were allocated in lazy > >> mode. That > >>>>>> could explain the freeze of your whole system: in case a RT > >>>>>> application in primary mode tries to access the mmapped buffer. > >>>>> Well, normally, the fault should cause the RT application > >> to switch > >>>>> to secondary mode and be handled gracefully from there, > >> unless there > >>>>> is a bug hidden in Xenomai or I-pipe. Besides, RT applications > >>>>> usually use "mlockall", so the kernel should make all the pages > >>>>> present and not rely on further faults (at least, is it > >> how it works on 2.6). > >>>> powerpc may still trigger minor faults upon TLB misses > >> though. That > >>>> arch has a software-assisted MMU. > >>> Ok, and can these faults cause lockups when they happen in > >> primary mode? > >> Unless I messed up things in the I-pipe patch, no. > Depending on the > >> MMU management code, some of them will reach the Linux > fault handler > >> and trigger the mode switch via the Xenomai fault handler, others > >> will be processed directly from the low-level exception > code when it > >> is possible to fix up the mapping from there. > >> > >> As I mentioned a long time ago, the issue is more likely > related to > >> the protection bits used with PCI memory resources, which > do require > >> additional fixup on powerpc (_PAGE_GUARDED and > _PAGE_NO_CACHE come to > >> mind here). > >> > >> -- > >> Philippe. > >> > >> _______________________________________________ > >> Xenomai-help mailing list > >> Xenomai-help@domain.hid > >> https://mail.gna.org/listinfo/xenomai-help > >> > > > > Achtung: Neue E-Mail-Adresse! Attention: New e-mail-address! > > thomas.debes@domain.hid > > -------------------------------------------------------- > > manroland AG > > Vorsitzender des Aufsichtsrates: Hanno C. Fiedler > > Vorstand: Gerd Finkbeiner (Vorsitzender), Dr. Ingo Koch, > Dr. Markus Rall, Paul Steidle > > Sitz der Gesellschaft: Offenbach am Main, Registergericht: > Amtsgericht > > Offenbach HRB-Nr. 42592 USt-Ident-Nr. DE 250200933 > > > > _______________________________________________ > > Xenomai-help mailing list > > Xenomai-help@domain.hid > > https://mail.gna.org/listinfo/xenomai-help > > > > > -- > Philippe. > Achtung: Neue E-Mail-Adresse! Attention: New e-mail-address! thomas.debes@domain.hid -------------------------------------------------------- manroland AG Vorsitzender des Aufsichtsrates: Hanno C. Fiedler Vorstand: Gerd Finkbeiner (Vorsitzender), Dr. Ingo Koch, Dr. Markus Rall, Paul Steidle Sitz der Gesellschaft: Offenbach am Main, Registergericht: Amtsgericht Offenbach HRB-Nr. 42592 USt-Ident-Nr. DE 250200933 ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Xenomai-help] rtdm_iomap_to_user on PPC 2008-10-23 5:03 ` thomas.debes @ 2008-10-23 9:15 ` Philippe Gerum 0 siblings, 0 replies; 11+ messages in thread From: Philippe Gerum @ 2008-10-23 9:15 UTC (permalink / raw) To: thomas.debes; +Cc: xenomai thomas.debes@domain.hid wrote: >> -----Ursprüngliche Nachricht----- >> Von: Philippe Gerum [mailto:rpm@xenomai.org] >> Gesendet: Dienstag, 21. Oktober 2008 13:12 >> An: Debes, Thomas RAEK3 MRA >> Cc: xenomai@xenomai.org >> Betreff: Re: [Xenomai-help] rtdm_iomap_to_user on PPC >> >> thomas.debes@domain.hid wrote: >>> Hello Alexis, hello Philippe, >>> >>> thanks for your suggestions - the protection bits did the trick! >>> Adding them to xnarch_remap_io_page_range(...) in >> rtdm_mmap_buffer() >>> solved the problem. We already tried this few months ago using >>> >>> pgprot_val(vma->vm_page_prot) |= _PAGE_NO_CACHE | _PAGE_GUARDED | >>> PAGE_SHARED; >>> >>> but missed the fact that xnarch_remap_io_page_range only >> takes PAGE_SHARED instead of use vma->vm_page_prot as its 5th >> parameter. I am not sure wether this extension will have side >> effects on other architectures. Maybe there is a better place >> for this fix. What do you think? >> Not all archs will have the same requirements, unfortunately. >> Could you try the attached patch? It also makes sure that >> prefetchable PCI memory won't be accessed as page guarded in 2.6. TIA, > > > Ok, got it working. Everything works as expected (at least for kernel 2.4). Will that patch be included in the next release (2.4.6)? > Yes. > Regards > Thomas > > >>> Thanks again! >>> >>> Thomas >>> >>> >>> >>> >>>> -----Ursprüngliche Nachricht----- >>>> Von: xenomai-help-bounces@domain.hid >>>> [mailto:xenomai-help-bounces@domain.hid] Im Auftrag von Philippe Gerum >>>> Gesendet: Sonntag, 19. Oktober 2008 20:11 >>>> An: Gilles Chanteperdrix >>>> Cc: xenomai@xenomai.org >>>> Betreff: Re: [Xenomai-help] rtdm_iomap_to_user on PPC >>>> >>>> Gilles Chanteperdrix wrote: >>>>> Philippe Gerum wrote: >>>>>> Gilles Chanteperdrix wrote: >>>>>>> Alexis Berlemont wrote: >>>>>>>> Hi, >>>>>>>> >>>>>>>> On Friday 17 October 2008 06:46, >>>> thomas.debes@domain.hid wrote: >>>>>>>>> No comments or ideas? Providing this feature is >>>> essential for our >>>>>>>>> CPCI drivers. We have to port some Linux applications >>>> to Xenomai >>>>>>>>> which use that mmap stuff intensely. >>>>>>>>> >>>>>>>>> Thanks again! >>>>>>>>> >>>>>>>>> Thomas >>>>>>>>> >>>>>>>>>> -----Ursprüngliche Nachricht----- >>>>>>>>>> Von: xenomai-help-bounces@domain.hid >>>>>>>>>> [mailto:xenomai-help-bounces@domain.hid] Im Auftrag von >>>>>>>>>> thomas.debes@domain.hid >>>>>>>>>> Gesendet: Mittwoch, 8. Oktober 2008 11:49 >>>>>>>>>> An: xenomai@xenomai.org >>>>>>>>>> Betreff: [Xenomai-help] rtdm_iomap_to_user on PPC >>>>>>>>>> >>>>>>>>>> Hello, >>>>>>>>>> >>>>>>>>>> in the following thread I was asking for a solution to use >>>>>>>>>> rtdm_iomap_to_user() on PPC (MPC5200, Denx 2.4.25) >>>>>>>> In 2.4 kernel, rtdm_iomap_to_user() is based on the function >>>>>>>> remap_page_range (with vma->vm_flags |= VM_RESERVED). >>>>>>>> >>>>>>>> Once, I had to develop a classical Linux driver (for >> PPC) which >>>>>>>> provided mmap functionalites so as to let a user >>>> application mmap a >>>>>>>> buffer allocated thanks to __get_free_pages(). >>>>>>>> >>>>>>>> On a 2.6 kernel, I used remap_pfn_range() and it works >>>> great but on >>>>>>>> 2.4 kernel the function remap_page_range() did not work as I >>>>>>>> expected. I had a quick look on its implementation and I >>>> found that >>>>>>>> instead of mapping my buffer it mapped newly allocated >>>> zeroed pages (if my memories are correct). >>>>>>>> If I remember well, these pages were allocated in lazy >>>> mode. That >>>>>>>> could explain the freeze of your whole system: in case a RT >>>>>>>> application in primary mode tries to access the mmapped buffer. >>>>>>> Well, normally, the fault should cause the RT application >>>> to switch >>>>>>> to secondary mode and be handled gracefully from there, >>>> unless there >>>>>>> is a bug hidden in Xenomai or I-pipe. Besides, RT applications >>>>>>> usually use "mlockall", so the kernel should make all the pages >>>>>>> present and not rely on further faults (at least, is it >>>> how it works on 2.6). >>>>>> powerpc may still trigger minor faults upon TLB misses >>>> though. That >>>>>> arch has a software-assisted MMU. >>>>> Ok, and can these faults cause lockups when they happen in >>>> primary mode? >>>> Unless I messed up things in the I-pipe patch, no. >> Depending on the >>>> MMU management code, some of them will reach the Linux >> fault handler >>>> and trigger the mode switch via the Xenomai fault handler, others >>>> will be processed directly from the low-level exception >> code when it >>>> is possible to fix up the mapping from there. >>>> >>>> As I mentioned a long time ago, the issue is more likely >> related to >>>> the protection bits used with PCI memory resources, which >> do require >>>> additional fixup on powerpc (_PAGE_GUARDED and >> _PAGE_NO_CACHE come to >>>> mind here). >>>> >>>> -- >>>> Philippe. >>>> >>>> _______________________________________________ >>>> Xenomai-help mailing list >>>> Xenomai-help@domain.hid >>>> https://mail.gna.org/listinfo/xenomai-help >>>> >>> Achtung: Neue E-Mail-Adresse! Attention: New e-mail-address! >>> thomas.debes@domain.hid >>> -------------------------------------------------------- >>> manroland AG >>> Vorsitzender des Aufsichtsrates: Hanno C. Fiedler >>> Vorstand: Gerd Finkbeiner (Vorsitzender), Dr. Ingo Koch, >> Dr. Markus Rall, Paul Steidle >>> Sitz der Gesellschaft: Offenbach am Main, Registergericht: >> Amtsgericht >>> Offenbach HRB-Nr. 42592 USt-Ident-Nr. DE 250200933 >>> >>> _______________________________________________ >>> Xenomai-help mailing list >>> Xenomai-help@domain.hid >>> https://mail.gna.org/listinfo/xenomai-help >>> >> >> -- >> Philippe. >> > > Achtung: Neue E-Mail-Adresse! Attention: New e-mail-address! thomas.debes@domain.hid > -------------------------------------------------------- > manroland AG > Vorsitzender des Aufsichtsrates: Hanno C. Fiedler > Vorstand: Gerd Finkbeiner (Vorsitzender), Dr. Ingo Koch, Dr. Markus Rall, Paul Steidle > Sitz der Gesellschaft: Offenbach am Main, Registergericht: Amtsgericht Offenbach HRB-Nr. 42592 > USt-Ident-Nr. DE 250200933 > -- Philippe. ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2008-10-23 9:15 UTC | newest] Thread overview: 11+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2008-10-08 9:49 [Xenomai-help] rtdm_iomap_to_user on PPC thomas.debes 2008-10-17 4:46 ` thomas.debes 2008-10-19 0:58 ` Alexis Berlemont 2008-10-19 17:47 ` Gilles Chanteperdrix 2008-10-19 17:54 ` Philippe Gerum 2008-10-19 17:56 ` Gilles Chanteperdrix 2008-10-19 18:10 ` Philippe Gerum 2008-10-21 6:00 ` thomas.debes 2008-10-21 11:12 ` Philippe Gerum 2008-10-23 5:03 ` thomas.debes 2008-10-23 9:15 ` Philippe Gerum
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.