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

From: Baoquan He
Date: Wed Sep 28 2016 - 09:01:53 EST


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