From: Michael Holzheu <holzheu@linux.vnet.ibm.com> To: Vivek Goyal <vgoyal@redhat.com> Cc: Zhang Yanfei <zhangyanfei.yes@gmail.com>, "Eric W. Biederman" <ebiederm@xmission.com>, HATAYAMA Daisuke <d.hatayama@jp.fujitsu.com>, Jan Willeke <willeke@de.ibm.com>, Martin Schwidefsky <schwidefsky@de.ibm.com>, Heiko Carstens <heiko.carstens@de.ibm.com>, linux-kernel@vger.kernel.org, kexec@lists.infradead.org, Andrew Morton <akpm@linux-foundation.org> Subject: Re: [PATCH 0/2] kdump/mmap: Fix mmap of /proc/vmcore for s390 Date: Mon, 3 Jun 2013 18:48:47 +0200 [thread overview] Message-ID: <20130603184847.4434c7ea@holzheu> (raw) In-Reply-To: <20130603155940.GA6714@redhat.com> On Mon, 3 Jun 2013 11:59:40 -0400 Vivek Goyal <vgoyal@redhat.com> wrote: > On Mon, Jun 03, 2013 at 03:27:18PM +0200, Michael Holzheu wrote: > > [..] > > > If not, how would remap_pfn_range() work with HSA region when > > > /proc/vmcore is mmaped()? > > > > I am no memory management expert, so I discussed that with Martin > > Schwidefsky (s390 architecture maintainer). Perhaps something like > > the following could work: > > > > After vmcore_mmap() is called the HSA pages are not initially > > mapped in the page tables. So when user space accesses those parts > > of /proc/vmcore, a fault will be generated. We implement a mechanism > > that in this case the HSA is copied to a new page in the page cache > > and a mapping is created for it. Since the page is allocated in the > > page cache, it can be released afterwards by the kernel when we get > > memory pressure. > > > > Our current idea for such an implementation: > > > > * Create new address space (struct address_space) for /proc/vmcore. > > * Implement new vm_operations_struct "vmcore_mmap_ops" with > > new vmcore_fault() ".fault" callback for /proc/vmcore. > > * Set vma->vm_ops to vmcore_mmap_ops in mmap_vmcore(). > > * The vmcore_fault() function will get a new page cache page, > > copy HSA page to page cache page add it to vmcore address space. > > To see how this could work, we looked into the functions > > filemap_fault() in "mm/filemap.c" and relay_buf_fault() in > > "kernel/relay.c". > > > > What do you think? > > I am not mm expert either but above proposal sounds reasonable to me. > > So remap_pfn_range() call will go in arch dependent code so that arch > can decide which range can be mapped right away and which ranges will > be filed in when fault happens? I am assuming that s390 will map > everything except for pfn between 0 and HSA_SIZE. Yes, for [0 - HSA_SIZE] the fault handler will be called and for the rest we establish a mapping with remap_pfn_range() as it is currently done. Therefore no fault handler will be called for that part of /proc/vmcore. I will try to find out if it is doable that way. > And regular s390 kdump will map everyting right away and will not > have to rely on fault mechanism? Yes, as kdump on the other archs. Thanks Michael
WARNING: multiple messages have this Message-ID (diff)
From: Michael Holzheu <holzheu@linux.vnet.ibm.com> To: Vivek Goyal <vgoyal@redhat.com> Cc: kexec@lists.infradead.org, Heiko Carstens <heiko.carstens@de.ibm.com>, Jan Willeke <willeke@de.ibm.com>, linux-kernel@vger.kernel.org, HATAYAMA Daisuke <d.hatayama@jp.fujitsu.com>, "Eric W. Biederman" <ebiederm@xmission.com>, Martin Schwidefsky <schwidefsky@de.ibm.com>, Andrew Morton <akpm@linux-foundation.org>, Zhang Yanfei <zhangyanfei.yes@gmail.com> Subject: Re: [PATCH 0/2] kdump/mmap: Fix mmap of /proc/vmcore for s390 Date: Mon, 3 Jun 2013 18:48:47 +0200 [thread overview] Message-ID: <20130603184847.4434c7ea@holzheu> (raw) In-Reply-To: <20130603155940.GA6714@redhat.com> On Mon, 3 Jun 2013 11:59:40 -0400 Vivek Goyal <vgoyal@redhat.com> wrote: > On Mon, Jun 03, 2013 at 03:27:18PM +0200, Michael Holzheu wrote: > > [..] > > > If not, how would remap_pfn_range() work with HSA region when > > > /proc/vmcore is mmaped()? > > > > I am no memory management expert, so I discussed that with Martin > > Schwidefsky (s390 architecture maintainer). Perhaps something like > > the following could work: > > > > After vmcore_mmap() is called the HSA pages are not initially > > mapped in the page tables. So when user space accesses those parts > > of /proc/vmcore, a fault will be generated. We implement a mechanism > > that in this case the HSA is copied to a new page in the page cache > > and a mapping is created for it. Since the page is allocated in the > > page cache, it can be released afterwards by the kernel when we get > > memory pressure. > > > > Our current idea for such an implementation: > > > > * Create new address space (struct address_space) for /proc/vmcore. > > * Implement new vm_operations_struct "vmcore_mmap_ops" with > > new vmcore_fault() ".fault" callback for /proc/vmcore. > > * Set vma->vm_ops to vmcore_mmap_ops in mmap_vmcore(). > > * The vmcore_fault() function will get a new page cache page, > > copy HSA page to page cache page add it to vmcore address space. > > To see how this could work, we looked into the functions > > filemap_fault() in "mm/filemap.c" and relay_buf_fault() in > > "kernel/relay.c". > > > > What do you think? > > I am not mm expert either but above proposal sounds reasonable to me. > > So remap_pfn_range() call will go in arch dependent code so that arch > can decide which range can be mapped right away and which ranges will > be filed in when fault happens? I am assuming that s390 will map > everything except for pfn between 0 and HSA_SIZE. Yes, for [0 - HSA_SIZE] the fault handler will be called and for the rest we establish a mapping with remap_pfn_range() as it is currently done. Therefore no fault handler will be called for that part of /proc/vmcore. I will try to find out if it is doable that way. > And regular s390 kdump will map everyting right away and will not > have to rely on fault mechanism? Yes, as kdump on the other archs. Thanks Michael _______________________________________________ kexec mailing list kexec@lists.infradead.org http://lists.infradead.org/mailman/listinfo/kexec
next prev parent reply other threads:[~2013-06-03 16:48 UTC|newest] Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top 2013-05-24 13:08 [PATCH 0/2] kdump/mmap: Fix mmap of /proc/vmcore for s390 Michael Holzheu 2013-05-24 13:08 ` Michael Holzheu 2013-05-24 13:08 ` [PATCH 1/2] kdump/mmap: Introduce arch_oldmem_remap_pfn_range() Michael Holzheu 2013-05-24 13:08 ` Michael Holzheu 2013-05-24 13:08 ` [PATCH 2/2] s390/kdump/mmap: Implement arch_oldmem_remap_pfn_range() for s390 Michael Holzheu 2013-05-24 13:08 ` Michael Holzheu 2013-05-24 14:36 ` [PATCH 0/2] kdump/mmap: Fix mmap of /proc/vmcore " Vivek Goyal 2013-05-24 14:36 ` Vivek Goyal 2013-05-24 15:06 ` Michael Holzheu 2013-05-24 15:06 ` Michael Holzheu 2013-05-24 15:28 ` Vivek Goyal 2013-05-24 15:28 ` Vivek Goyal 2013-05-24 16:46 ` Michael Holzheu 2013-05-24 16:46 ` Michael Holzheu 2013-05-24 17:05 ` Vivek Goyal 2013-05-24 17:05 ` Vivek Goyal 2013-05-25 13:13 ` Michael Holzheu 2013-05-25 13:13 ` Michael Holzheu 2013-05-24 22:44 ` Eric W. Biederman 2013-05-24 22:44 ` Eric W. Biederman 2013-05-25 0:33 ` Zhang Yanfei 2013-05-25 0:33 ` Zhang Yanfei 2013-05-25 3:01 ` Eric W. Biederman 2013-05-25 3:01 ` Eric W. Biederman 2013-05-25 8:31 ` Zhang Yanfei 2013-05-25 8:31 ` Zhang Yanfei 2013-05-25 12:52 ` Michael Holzheu 2013-05-25 12:52 ` Michael Holzheu 2013-05-28 13:55 ` Vivek Goyal 2013-05-28 13:55 ` Vivek Goyal 2013-05-29 11:51 ` Michael Holzheu 2013-05-29 11:51 ` Michael Holzheu 2013-05-29 16:23 ` Vivek Goyal 2013-05-29 16:23 ` Vivek Goyal 2013-05-29 17:12 ` Michael Holzheu 2013-05-29 17:12 ` Michael Holzheu 2013-05-30 15:00 ` Vivek Goyal 2013-05-30 15:00 ` Vivek Goyal 2013-05-30 20:38 ` Vivek Goyal 2013-05-30 20:38 ` Vivek Goyal 2013-05-31 14:21 ` Michael Holzheu 2013-05-31 14:21 ` Michael Holzheu 2013-05-31 16:01 ` Vivek Goyal 2013-05-31 16:01 ` Vivek Goyal 2013-06-03 13:27 ` Michael Holzheu 2013-06-03 13:27 ` Michael Holzheu 2013-06-03 15:59 ` Vivek Goyal 2013-06-03 15:59 ` Vivek Goyal 2013-06-03 16:48 ` Michael Holzheu [this message] 2013-06-03 16:48 ` Michael Holzheu 2013-05-28 14:44 ` Vivek Goyal 2013-05-28 14:44 ` Vivek Goyal 2013-05-25 20:36 ` Eric W. Biederman 2013-05-25 20:36 ` Eric W. Biederman
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20130603184847.4434c7ea@holzheu \ --to=holzheu@linux.vnet.ibm.com \ --cc=akpm@linux-foundation.org \ --cc=d.hatayama@jp.fujitsu.com \ --cc=ebiederm@xmission.com \ --cc=heiko.carstens@de.ibm.com \ --cc=kexec@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=schwidefsky@de.ibm.com \ --cc=vgoyal@redhat.com \ --cc=willeke@de.ibm.com \ --cc=zhangyanfei.yes@gmail.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
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.