All of lore.kernel.org
 help / color / mirror / Atom feed
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

  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: link
Be 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.