From: Dave Young <dyoung@redhat.com> To: "Li, Zhen-Hua" <zhen-hual@hp.com> Cc: dwmw2@infradead.org, indou.takao@jp.fujitsu.com, bhe@redhat.com, joro@8bytes.org, vgoyal@redhat.com, iommu@lists.linux-foundation.org, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, kexec@lists.infradead.org, alex.williamson@redhat.com, ddutile@redhat.com, ishii.hironobu@jp.fujitsu.com, bhelgaas@google.com, doug.hatch@hp.com, jerry.hoemann@hp.com, tom.vaden@hp.com, li.zhang6@hp.com, lisa.mitchell@hp.com, billsumnerlinux@gmail.com, rwright@hp.com Subject: Re: [PATCH v11 02/10] iommu/vt-d: Items required for kdump Date: Tue, 12 May 2015 16:17:23 +0800 [thread overview] Message-ID: <20150512081723.GC4561@localhost.localdomain> (raw) In-Reply-To: <1431337974-545-3-git-send-email-zhen-hual@hp.com> On 05/11/15 at 05:52pm, Li, Zhen-Hua wrote: > Add context entry functions needed for kdump. > > Bill Sumner: > Original version; > > Li, Zhenhua: > Changed the name of new functions, make them consistent with current > context get/set functions. > Remove the structure dve which is not used in new version. > > Signed-off-by: Bill Sumner <billsumnerlinux@gmail.com> > Signed-off-by: Li, Zhen-Hua <zhen-hual@hp.com> > --- > drivers/iommu/intel-iommu.c | 72 +++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 72 insertions(+) > > diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c > index cb9d6cc..1e7ceb5 100644 > --- a/drivers/iommu/intel-iommu.c > +++ b/drivers/iommu/intel-iommu.c > @@ -190,6 +190,31 @@ struct root_entry { > }; > #define ROOT_ENTRY_NR (VTD_PAGE_SIZE/sizeof(struct root_entry)) > > +static inline bool root_present(struct root_entry *root) > +{ > + return (root->lo & 1); > +} > + > +static inline void set_root_value(struct root_entry *root, unsigned long value) > +{ > + root->lo &= ~VTD_PAGE_MASK; > + root->lo |= value & VTD_PAGE_MASK; > +} > + > +static inline struct context_entry * > +get_context_addr_from_root(struct root_entry *root) > +{ > + return (struct context_entry *) > + (root_present(root)?phys_to_virt( > + root->lo & VTD_PAGE_MASK) : > + NULL); > +} > + > +static inline unsigned long > +get_context_phys_from_root(struct root_entry *root) > +{ > + return root_present(root) ? (root->lo & VTD_PAGE_MASK) : 0; > +} > > /* > * low 64 bits: > @@ -211,6 +236,32 @@ static inline bool context_present(struct context_entry *context) > { > return (context->lo & 1); > } > + > +static inline int context_fault_enable(struct context_entry *c) > +{ > + return((c->lo >> 1) & 0x1); > +} > + > +static inline int context_translation_type(struct context_entry *c) > +{ > + return((c->lo >> 2) & 0x3); > +} > + > +static inline u64 context_address_root(struct context_entry *c) > +{ > + return((c->lo >> VTD_PAGE_SHIFT)); > +} > + > +static inline int context_address_width(struct context_entry *c) > +{ > + return((c->hi >> 0) & 0x7); > +} > + > +static inline int context_domain_id(struct context_entry *c) > +{ > + return((c->hi >> 8) & 0xffff); > +} > + > static inline void context_set_present(struct context_entry *context) > { > context->lo |= 1; > @@ -296,6 +347,27 @@ static inline int first_pte_in_page(struct dma_pte *pte) > return !((unsigned long)pte & ~VTD_PAGE_MASK); > } > > + > +/* > + * Fix Crashdump failure caused by leftover DMA through a hardware IOMMU > + * > + * Fixes the crashdump kernel to deal with an active iommu and legacy > + * DMA from the (old) panicked kernel in a manner similar to how legacy > + * DMA is handled when no hardware iommu was in use by the old kernel -- > + * allow the legacy DMA to continue into its current buffers. > + * > + * In the crashdump kernel, this code: > + * 1. skips disabling the IOMMU's translating. > + * 2. Do not re-enable IOMMU's translating. > + * 3. In kdump kernel, use the old root entry table. > + * 4. Allocate pages for new context entry, copy data from old context entries > + * in the old kernel to the new ones. > + * > + * In other kinds of kernel, for example, a kernel started by kexec, > + * do the same thing as crashdump kernel. > + */ > + > + Above comments should come along with the code changes instead of putting it in this patch. BTW, there's one more blank line at the end.. > /* > * This domain is a statically identity mapping domain. > * 1. This domain creats a static 1:1 mapping to all usable memory. > -- > 2.0.0-rc0 >
WARNING: multiple messages have this Message-ID (diff)
From: Dave Young <dyoung@redhat.com> To: "Li, Zhen-Hua" <zhen-hual@hp.com> Cc: alex.williamson@redhat.com, indou.takao@jp.fujitsu.com, bhe@redhat.com, tom.vaden@hp.com, rwright@hp.com, linux-pci@vger.kernel.org, joro@8bytes.org, kexec@lists.infradead.org, linux-kernel@vger.kernel.org, lisa.mitchell@hp.com, jerry.hoemann@hp.com, iommu@lists.linux-foundation.org, ddutile@redhat.com, doug.hatch@hp.com, ishii.hironobu@jp.fujitsu.com, bhelgaas@google.com, billsumnerlinux@gmail.com, li.zhang6@hp.com, dwmw2@infradead.org, vgoyal@redhat.com Subject: Re: [PATCH v11 02/10] iommu/vt-d: Items required for kdump Date: Tue, 12 May 2015 16:17:23 +0800 [thread overview] Message-ID: <20150512081723.GC4561@localhost.localdomain> (raw) In-Reply-To: <1431337974-545-3-git-send-email-zhen-hual@hp.com> On 05/11/15 at 05:52pm, Li, Zhen-Hua wrote: > Add context entry functions needed for kdump. > > Bill Sumner: > Original version; > > Li, Zhenhua: > Changed the name of new functions, make them consistent with current > context get/set functions. > Remove the structure dve which is not used in new version. > > Signed-off-by: Bill Sumner <billsumnerlinux@gmail.com> > Signed-off-by: Li, Zhen-Hua <zhen-hual@hp.com> > --- > drivers/iommu/intel-iommu.c | 72 +++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 72 insertions(+) > > diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c > index cb9d6cc..1e7ceb5 100644 > --- a/drivers/iommu/intel-iommu.c > +++ b/drivers/iommu/intel-iommu.c > @@ -190,6 +190,31 @@ struct root_entry { > }; > #define ROOT_ENTRY_NR (VTD_PAGE_SIZE/sizeof(struct root_entry)) > > +static inline bool root_present(struct root_entry *root) > +{ > + return (root->lo & 1); > +} > + > +static inline void set_root_value(struct root_entry *root, unsigned long value) > +{ > + root->lo &= ~VTD_PAGE_MASK; > + root->lo |= value & VTD_PAGE_MASK; > +} > + > +static inline struct context_entry * > +get_context_addr_from_root(struct root_entry *root) > +{ > + return (struct context_entry *) > + (root_present(root)?phys_to_virt( > + root->lo & VTD_PAGE_MASK) : > + NULL); > +} > + > +static inline unsigned long > +get_context_phys_from_root(struct root_entry *root) > +{ > + return root_present(root) ? (root->lo & VTD_PAGE_MASK) : 0; > +} > > /* > * low 64 bits: > @@ -211,6 +236,32 @@ static inline bool context_present(struct context_entry *context) > { > return (context->lo & 1); > } > + > +static inline int context_fault_enable(struct context_entry *c) > +{ > + return((c->lo >> 1) & 0x1); > +} > + > +static inline int context_translation_type(struct context_entry *c) > +{ > + return((c->lo >> 2) & 0x3); > +} > + > +static inline u64 context_address_root(struct context_entry *c) > +{ > + return((c->lo >> VTD_PAGE_SHIFT)); > +} > + > +static inline int context_address_width(struct context_entry *c) > +{ > + return((c->hi >> 0) & 0x7); > +} > + > +static inline int context_domain_id(struct context_entry *c) > +{ > + return((c->hi >> 8) & 0xffff); > +} > + > static inline void context_set_present(struct context_entry *context) > { > context->lo |= 1; > @@ -296,6 +347,27 @@ static inline int first_pte_in_page(struct dma_pte *pte) > return !((unsigned long)pte & ~VTD_PAGE_MASK); > } > > + > +/* > + * Fix Crashdump failure caused by leftover DMA through a hardware IOMMU > + * > + * Fixes the crashdump kernel to deal with an active iommu and legacy > + * DMA from the (old) panicked kernel in a manner similar to how legacy > + * DMA is handled when no hardware iommu was in use by the old kernel -- > + * allow the legacy DMA to continue into its current buffers. > + * > + * In the crashdump kernel, this code: > + * 1. skips disabling the IOMMU's translating. > + * 2. Do not re-enable IOMMU's translating. > + * 3. In kdump kernel, use the old root entry table. > + * 4. Allocate pages for new context entry, copy data from old context entries > + * in the old kernel to the new ones. > + * > + * In other kinds of kernel, for example, a kernel started by kexec, > + * do the same thing as crashdump kernel. > + */ > + > + Above comments should come along with the code changes instead of putting it in this patch. BTW, there's one more blank line at the end.. > /* > * This domain is a statically identity mapping domain. > * 1. This domain creats a static 1:1 mapping to all usable memory. > -- > 2.0.0-rc0 > _______________________________________________ kexec mailing list kexec@lists.infradead.org http://lists.infradead.org/mailman/listinfo/kexec
next prev parent reply other threads:[~2015-05-12 8:18 UTC|newest] Thread overview: 138+ messages / expand[flat|nested] mbox.gz Atom feed top 2015-05-11 9:52 [PATCH v11 0/10] iommu/vt-d: Fix intel vt-d faults in kdump kernel Li, Zhen-Hua 2015-05-11 9:52 ` Li, Zhen-Hua 2015-05-11 9:52 ` Li, Zhen-Hua 2015-05-11 9:52 ` [PATCH v11 01/10] iommu/vt-d: New function to attach domain with id Li, Zhen-Hua 2015-05-11 9:52 ` Li, Zhen-Hua 2015-05-11 9:52 ` Li, Zhen-Hua 2015-05-11 9:52 ` [PATCH v11 02/10] iommu/vt-d: Items required for kdump Li, Zhen-Hua 2015-05-11 9:52 ` Li, Zhen-Hua 2015-05-11 9:52 ` Li, Zhen-Hua 2015-05-12 8:17 ` Dave Young [this message] 2015-05-12 8:17 ` Dave Young 2015-05-13 1:45 ` Li, ZhenHua 2015-05-13 1:45 ` Li, ZhenHua 2015-05-13 6:31 ` Alexander Duyck 2015-05-13 6:31 ` Alexander Duyck 2015-05-13 8:42 ` Dave Young 2015-05-13 8:42 ` Dave Young 2015-05-13 8:42 ` Dave Young 2015-05-11 9:52 ` [PATCH v11 03/10] iommu/vt-d: Function to get existing context entry Li, Zhen-Hua 2015-05-11 9:52 ` Li, Zhen-Hua 2015-05-11 9:52 ` Li, Zhen-Hua 2015-05-11 9:52 ` [PATCH v11 04/10] iommu/vt-d: functions to copy data from old mem Li, Zhen-Hua 2015-05-11 9:52 ` Li, Zhen-Hua 2015-05-11 9:52 ` Li, Zhen-Hua 2015-05-12 8:29 ` Dave Young 2015-05-12 8:29 ` Dave Young 2015-05-12 8:29 ` Dave Young 2015-05-13 9:00 ` Baoquan He 2015-05-13 9:00 ` Baoquan He 2015-05-13 9:13 ` Li, ZhenHua 2015-05-13 9:13 ` Li, ZhenHua 2015-05-13 9:21 ` Baoquan He 2015-05-13 9:21 ` Baoquan He 2015-06-08 14:15 ` David Woodhouse 2015-06-08 14:15 ` David Woodhouse 2015-06-08 15:21 ` Joerg Roedel 2015-06-08 15:21 ` Joerg Roedel 2015-06-08 15:44 ` David Woodhouse 2015-06-08 15:44 ` David Woodhouse 2015-05-11 9:52 ` [PATCH v11 05/10] iommu/vt-d: Add functions to load and save old re Li, Zhen-Hua 2015-05-11 9:52 ` Li, Zhen-Hua 2015-05-11 9:52 ` Li, Zhen-Hua 2015-05-12 8:37 ` Dave Young 2015-05-12 8:37 ` Dave Young 2015-05-12 8:37 ` Dave Young 2015-05-13 1:47 ` Li, ZhenHua 2015-05-13 1:47 ` Li, ZhenHua 2015-05-13 1:47 ` Li, ZhenHua 2015-05-13 8:49 ` Dave Young 2015-05-13 8:49 ` Dave Young 2015-05-11 9:52 ` [PATCH v11 06/10] iommu/vt-d: datatypes and functions used for kdump Li, Zhen-Hua 2015-05-11 9:52 ` Li, Zhen-Hua 2015-05-11 9:52 ` Li, Zhen-Hua 2015-05-12 8:48 ` Dave Young 2015-05-12 8:48 ` Dave Young 2015-05-13 8:56 ` Baoquan He 2015-05-13 8:56 ` Baoquan He 2015-05-13 8:56 ` Baoquan He 2015-05-13 8:58 ` Li, ZhenHua 2015-05-13 8:58 ` Li, ZhenHua 2015-05-13 8:58 ` Li, ZhenHua 2015-05-13 9:10 ` Baoquan He 2015-05-13 9:10 ` Baoquan He 2015-05-13 9:10 ` Baoquan He 2015-05-11 9:52 ` [PATCH v11 07/10] iommu/vt-d: enable kdump support in iommu module Li, Zhen-Hua 2015-05-11 9:52 ` Li, Zhen-Hua 2015-05-11 9:52 ` Li, Zhen-Hua 2015-05-12 8:52 ` Dave Young 2015-05-12 8:52 ` Dave Young 2015-05-12 8:52 ` Dave Young 2015-05-13 2:10 ` Baoquan He 2015-05-13 2:10 ` Baoquan He 2015-05-13 2:28 ` Li, ZhenHua 2015-05-13 2:28 ` Li, ZhenHua 2015-05-13 2:36 ` Baoquan He 2015-05-13 2:36 ` Baoquan He 2015-05-11 9:52 ` [PATCH v11 08/10] iommu/vt-d: assign new page table for dma_map Li, Zhen-Hua 2015-05-11 9:52 ` Li, Zhen-Hua 2015-05-11 9:52 ` Li, Zhen-Hua 2015-05-20 23:52 ` Baoquan He 2015-05-20 23:52 ` Baoquan He 2015-05-21 1:27 ` Li, ZhenHua 2015-05-21 1:27 ` Li, ZhenHua 2015-05-21 6:54 ` Baoquan He 2015-05-21 6:54 ` Baoquan He 2015-05-21 8:40 ` Li, ZhenHua 2015-05-21 8:40 ` Li, ZhenHua 2015-05-21 8:40 ` Li, ZhenHua 2015-05-21 10:11 ` Baoquan He 2015-05-11 9:52 ` [PATCH v11 09/10] iommu/vt-d: Copy functions for irte Li, Zhen-Hua 2015-05-11 9:52 ` Li, Zhen-Hua 2015-05-11 9:52 ` Li, Zhen-Hua 2015-05-12 9:00 ` Dave Young 2015-05-12 9:00 ` Dave Young 2015-05-11 9:52 ` [PATCH v11 10/10] iommu/vt-d: Use old irte in kdump kernel Li, Zhen-Hua 2015-05-11 9:52 ` Li, Zhen-Hua 2015-05-11 9:52 ` Li, Zhen-Hua 2015-05-12 6:18 ` [PATCH v11 0/10] iommu/vt-d: Fix intel vt-d faults " Baoquan He 2015-05-12 6:18 ` Baoquan He 2015-05-12 6:18 ` Baoquan He 2015-05-12 9:04 ` Dave Young 2015-05-12 9:04 ` Dave Young 2015-05-12 9:04 ` Dave Young 2015-05-12 9:34 ` Li, Zhen-Hua 2015-05-12 9:34 ` Li, Zhen-Hua 2015-05-12 9:34 ` Li, Zhen-Hua 2015-05-13 1:54 ` Li, ZhenHua 2015-05-13 1:54 ` Li, ZhenHua 2015-05-18 10:05 ` Li, ZhenHua 2015-05-18 10:05 ` Li, ZhenHua 2015-05-18 10:05 ` Li, ZhenHua 2015-05-19 1:13 ` Dave Young 2015-05-19 1:13 ` Dave Young 2015-05-19 7:43 ` Li, ZhenHua 2015-05-19 7:43 ` Li, ZhenHua 2015-05-29 16:21 ` Joerg Roedel 2015-05-30 11:23 ` Li, Zhen-Hua 2015-05-30 11:23 ` Li, Zhen-Hua 2015-05-30 11:23 ` Li, Zhen-Hua 2015-05-30 11:23 ` Li, Zhen-Hua 2015-06-08 14:26 ` David Woodhouse 2015-06-08 14:26 ` David Woodhouse 2015-06-08 14:26 ` David Woodhouse 2015-06-08 15:29 ` Joerg Roedel 2015-06-08 15:29 ` Joerg Roedel 2015-06-08 15:50 ` David Woodhouse 2015-06-08 15:50 ` David Woodhouse 2015-06-08 15:50 ` David Woodhouse 2015-06-08 16:13 ` Joerg Roedel 2015-06-09 12:55 ` David Woodhouse 2015-06-09 12:55 ` David Woodhouse 2015-06-10 9:21 ` Joerg Roedel 2015-06-10 9:32 ` Li, ZhenHua 2015-06-10 9:32 ` Li, ZhenHua 2015-06-10 9:32 ` Li, ZhenHua 2015-06-10 14:10 ` David Woodhouse 2015-06-10 14:10 ` David Woodhouse 2015-06-10 14:10 ` David Woodhouse
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=20150512081723.GC4561@localhost.localdomain \ --to=dyoung@redhat.com \ --cc=alex.williamson@redhat.com \ --cc=bhe@redhat.com \ --cc=bhelgaas@google.com \ --cc=billsumnerlinux@gmail.com \ --cc=ddutile@redhat.com \ --cc=doug.hatch@hp.com \ --cc=dwmw2@infradead.org \ --cc=indou.takao@jp.fujitsu.com \ --cc=iommu@lists.linux-foundation.org \ --cc=ishii.hironobu@jp.fujitsu.com \ --cc=jerry.hoemann@hp.com \ --cc=joro@8bytes.org \ --cc=kexec@lists.infradead.org \ --cc=li.zhang6@hp.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-pci@vger.kernel.org \ --cc=lisa.mitchell@hp.com \ --cc=rwright@hp.com \ --cc=tom.vaden@hp.com \ --cc=vgoyal@redhat.com \ --cc=zhen-hual@hp.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.