[PATCH v5 5/8] iommu/amd: copy old trans table from old kernel

Baoquan He bhe at redhat.com
Wed Sep 28 06:01:36 PDT 2016


On 09/28/16 at 09:37am, Baoquan He wrote:
> Hi Joerg,
> 
> On 09/20/16 at 02:40pm, Joerg Roedel wrote:
> > > +	if ( !is_pre_enabled) {
> > > +		for_each_iommu(iommu)
> > > +			early_enable_iommu(iommu);
> > > +	} else {
> > > +		if (copy_dev_tables()) {
> > > +			pr_err("Failed to copy DEV table from previous kernel.\n");
> > > +			/*
> > > +			 * If failed to copy dev tables from old kernel, continue to proceed
> > > +			 * as it does in normal kernel.
> > > +			 */
> > > +			for_each_iommu(iommu) {
> > > +				clear_translation_pre_enabled(iommu);
> > > +				early_enable_iommu(iommu);
> > > +			}
> > > +		} else {
> > > +			pr_info("Copied DEV table from previous kernel.\n");
> > > +			for_each_iommu(iommu) {
> > > +				iommu_feature_disable(iommu, CONTROL_CMDBUF_EN);
> > > +		                iommu_feature_disable(iommu, CONTROL_EVT_LOG_EN);
> > 
> > Could you move that into new helpers (iommu_disable_command_buffer...)?
> 
> Did you mean wraping iommu_feature_disable(iommu, CONTROL_CMDBUF_EN) into a
> helper function like iommu_disable_command_buffer(), and wraping
> iommu_feature_disable(iommu, CONTROL_EVT_LOG_EN) into
> iommu_disable_event_buffer()?
> 
> I retest with not disabling command buffer and event log here, it works
> on amd iommu v1 and v2 systems. So if I understand your comment
> correctly, there's no need to add "iommu_feature_disable(iommu,
> CONTROL_CMDBUF_EN)"  and "iommu_feature_disable(iommu,
> CONTROL_EVT_LOG_EN)" here. I remember I added them here because more
> IO_PAGE_FAULT messages are printed without them. But now it seems not to
> related to them. So I will remove above two lines of code.

Oh, sorry, please ignore this. It will print many lines of below message
if do not disable cmd buffer and event log here.

[    0.455642] AMD-Vi: Completion-Wait loop timed out




More information about the kexec mailing list