All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Li, ZhenHua" <zhen-hual-VXdhtT5mjnY@public.gmane.org>
To: Feng Wu <feng.wu-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
Cc: linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org,
	"Li, ZhenHua" <zhen-hual-VXdhtT5mjnY@public.gmane.org>,
	dwmw2-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org,
	jiang.liu-VuQAYsv1563Yd54FQh9/CA@public.gmane.org
Subject: Re: [v4 0/8] Add VT-d Posted-Interrupts support - IOMMU part
Date: Fri, 03 Apr 2015 16:12:45 +0800	[thread overview]
Message-ID: <551E4B7D.6020108@hp.com> (raw)
In-Reply-To: <20150402112833.GN4441-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>

Hi Feng Wu,
In my patchset, I created a new member ir_table->base_old_phys; In the 
normal kernel, everything is the same. In kdump kernel, ir_table->base 
is used for a buffer, and  ir_table->base_old_phys is the physical 
address of the tables used by the old kernel, also being used by the 
current kernel.

I did this in modify_irte():

         set_64bit(&irte->high, irte_modified->high);
+
+#ifdef CONFIG_CRASH_DUMP
+       if (is_kdump_kernel())
+               __iommu_update_old_irte(iommu, index);
+#endif
         __iommu_flush_cache(iommu, irte, sizeof(*irte));


Here the irte tables are stored in two places:
iommu->ir_table->base : It is a buffer in kdump kernel, which is the 
running kernel;
iommu->ir_table->base_old_phys : It is the irte used by the old kernel;

And function __iommu_update_old_irte is used to save the content of 
iommu->ir_table->base  to iommu->ir_table->base_old_phys. Because in 
kdump kernel, the vt-d is using ir_table->base_old_phys, not 
ir_table->base, so we need to copy the updated ir_table->base to 
ir_table->base_old_phys .


Thanks
Zhenhua

On 04/02/2015 07:28 PM, Joerg Roedel wrote:
> On Mon, Feb 02, 2015 at 04:06:56PM +0800, Feng Wu wrote:
>> VT-d Posted-Interrupts is an enhancement to CPU side Posted-Interrupt.
>> With VT-d Posted-Interrupts enabled, external interrupts from
>> direct-assigned devices can be delivered to guests without VMM
>> intervention when guest is running in non-root mode.
>>
>> You can find the VT-d Posted-Interrtups Spec. in the following URL:
>> http://www.intel.com/content/www/us/en/intelligent-systems/intel-technology/vt-directed-io-spec.html
>>
>> This series was part of http://thread.gmane.org/gmane.linux.kernel.iommu/7708. To make things clear, send out IOMMU part here.
>
> Besides the modify_irte() changes I asked for the patch-set looks good.
> I just have some concerns what these changes mean for the VT-d kdump
> improvements Zhen-Hua Li is working on. Can you please discuss the
> implications of having both patch-sets applied with him and make sure
> they work together? I think in its current form your patch-set breaks
> the kdump support patches. I added Zhen-Hua to Cc.
>
> Thanks,
>
> 	Joerg
>

WARNING: multiple messages have this Message-ID (diff)
From: "Li, ZhenHua" <zhen-hual@hp.com>
To: Feng Wu <feng.wu@intel.com>
Cc: Joerg Roedel <joro@8bytes.org>,
	dwmw2@infradead.org, jiang.liu@linux.intel.com,
	iommu@lists.linux-foundation.org, linux-kernel@vger.kernel.org,
	"Li, ZhenHua" <zhen-hual@hp.com>
Subject: Re: [v4 0/8] Add VT-d Posted-Interrupts support - IOMMU part
Date: Fri, 03 Apr 2015 16:12:45 +0800	[thread overview]
Message-ID: <551E4B7D.6020108@hp.com> (raw)
In-Reply-To: <20150402112833.GN4441@8bytes.org>

Hi Feng Wu,
In my patchset, I created a new member ir_table->base_old_phys; In the 
normal kernel, everything is the same. In kdump kernel, ir_table->base 
is used for a buffer, and  ir_table->base_old_phys is the physical 
address of the tables used by the old kernel, also being used by the 
current kernel.

I did this in modify_irte():

         set_64bit(&irte->high, irte_modified->high);
+
+#ifdef CONFIG_CRASH_DUMP
+       if (is_kdump_kernel())
+               __iommu_update_old_irte(iommu, index);
+#endif
         __iommu_flush_cache(iommu, irte, sizeof(*irte));


Here the irte tables are stored in two places:
iommu->ir_table->base : It is a buffer in kdump kernel, which is the 
running kernel;
iommu->ir_table->base_old_phys : It is the irte used by the old kernel;

And function __iommu_update_old_irte is used to save the content of 
iommu->ir_table->base  to iommu->ir_table->base_old_phys. Because in 
kdump kernel, the vt-d is using ir_table->base_old_phys, not 
ir_table->base, so we need to copy the updated ir_table->base to 
ir_table->base_old_phys .


Thanks
Zhenhua

On 04/02/2015 07:28 PM, Joerg Roedel wrote:
> On Mon, Feb 02, 2015 at 04:06:56PM +0800, Feng Wu wrote:
>> VT-d Posted-Interrupts is an enhancement to CPU side Posted-Interrupt.
>> With VT-d Posted-Interrupts enabled, external interrupts from
>> direct-assigned devices can be delivered to guests without VMM
>> intervention when guest is running in non-root mode.
>>
>> You can find the VT-d Posted-Interrtups Spec. in the following URL:
>> http://www.intel.com/content/www/us/en/intelligent-systems/intel-technology/vt-directed-io-spec.html
>>
>> This series was part of http://thread.gmane.org/gmane.linux.kernel.iommu/7708. To make things clear, send out IOMMU part here.
>
> Besides the modify_irte() changes I asked for the patch-set looks good.
> I just have some concerns what these changes mean for the VT-d kdump
> improvements Zhen-Hua Li is working on. Can you please discuss the
> implications of having both patch-sets applied with him and make sure
> they work together? I think in its current form your patch-set breaks
> the kdump support patches. I added Zhen-Hua to Cc.
>
> Thanks,
>
> 	Joerg
>


  parent reply	other threads:[~2015-04-03  8:12 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-02-02  8:06 [v4 0/8] Add VT-d Posted-Interrupts support - IOMMU part Feng Wu
2015-02-02  8:06 ` Feng Wu
     [not found] ` <1422864424-19411-1-git-send-email-feng.wu-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2015-02-02  8:06   ` [v4 1/8] iommu: Add new member capability to struct irq_remap_ops Feng Wu
2015-02-02  8:06     ` Feng Wu
2015-02-02  8:06   ` [v4 2/8] iommu, x86: Define new irte structure for VT-d Posted-Interrupts Feng Wu
2015-02-02  8:06     ` Feng Wu
     [not found]     ` <1422864424-19411-3-git-send-email-feng.wu-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2015-03-23 11:57       ` Joerg Roedel
2015-03-23 11:57         ` Joerg Roedel
2015-03-24  2:32         ` Wu, Feng
2015-03-31 15:16           ` Joerg Roedel
     [not found]             ` <20150331151643.GF22683-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>
2015-04-01  8:51               ` Wu, Feng
2015-04-01  8:51                 ` Wu, Feng
2015-02-02  8:06   ` [v4 3/8] iommu, x86: Implement irq_set_vcpu_affinity for intel_ir_chip Feng Wu
2015-02-02  8:06     ` Feng Wu
2015-02-02  8:07   ` [v4 4/8] iommu, x86: No need to migrating irq for VT-d Posted-Interrupts Feng Wu
2015-02-02  8:07     ` Feng Wu
2015-02-02  8:07   ` [v4 5/8] iommu, x86: Add cap_pi_support() to detect VT-d PI capability Feng Wu
2015-02-02  8:07     ` Feng Wu
2015-02-02  8:07   ` [v4 6/8] iommu, x86: Setup Posted-Interrupts capability for Intel iommu Feng Wu
2015-02-02  8:07     ` Feng Wu
2015-02-02  8:07   ` [v4 7/8] iommu, x86: define irq_remapping_cap() Feng Wu
2015-02-02  8:07     ` Feng Wu
2015-02-02  8:07   ` [v4 8/8] iommu, x86: Properly handler PI for IOMMU hotplug Feng Wu
2015-02-02  8:07     ` Feng Wu
2015-04-02 11:28 ` [v4 0/8] Add VT-d Posted-Interrupts support - IOMMU part Joerg Roedel
     [not found]   ` <20150402112833.GN4441-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>
2015-04-03  8:12     ` Li, ZhenHua [this message]
2015-04-03  8:12       ` Li, ZhenHua
     [not found]       ` <551E4B7D.6020108-VXdhtT5mjnY@public.gmane.org>
2015-04-07  5:02         ` Wu, Feng
2015-04-07  5:02           ` Wu, Feng
  -- strict thread matches above, loose matches on Subject: below --
2015-02-02  8:01 Feng Wu
2015-02-02  8:01 ` Feng Wu
     [not found] ` <1422864114-19324-1-git-send-email-feng.wu-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2015-02-02  8:17   ` Wu, Feng
2015-02-02  8:17     ` Wu, Feng

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=551E4B7D.6020108@hp.com \
    --to=zhen-hual-vxdhtt5mjny@public.gmane.org \
    --cc=dwmw2-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org \
    --cc=feng.wu-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
    --cc=iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
    --cc=jiang.liu-VuQAYsv1563Yd54FQh9/CA@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    /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.