All of lore.kernel.org
 help / color / mirror / Atom feed
From: Joerg Roedel <joro-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>
To: Baoquan He <bhe-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Cc: iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org
Subject: Re: [Patch v2 5/9] iommu/amd: Add function copy_dev_tables
Date: Fri, 27 Nov 2015 12:21:53 +0100	[thread overview]
Message-ID: <20151127112152.GD24300@8bytes.org> (raw)
In-Reply-To: <1446811851-20623-6-git-send-email-bhe-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>

On Fri, Nov 06, 2015 at 08:10:47PM +0800, Baoquan He wrote:
> +static void copy_dev_tables(void)
> +{
> +        u64 entry;
> +        u32 lo, hi;
> +        phys_addr_t old_devtb_phys;
> +        struct dev_table_entry *old_devtb;
> +        struct amd_iommu *iommu;
> +        u16 dom_id;
> +        u32 devid;
> +
> +        for_each_iommu(iommu) {

You don't need to do this for all IOMMUs in the system. Linux uses the
same device table for all IOMMUs, so it is better to just check whether
all IOMMUs in the system are enabled and also point to the same device
table. If any of this is not the case we should just bail out of any
tries to copy over data from the old kernel.

> +		/*
> +		 * This is used to prevent the WARNING in iommu_queue_command_sync()
> +		 * when call flush function
> +		 */
> +		iommu->cmd_buf_size &= ~(CMD_BUFFER_UNINITIALIZED);

This is a hack. You need to add code to re-initialize the command buffer
and the error and ppr logs in the new kernel.

> +
> +                lo = readl(iommu->mmio_base + MMIO_DEV_TABLE_OFFSET);
> +                hi = readl(iommu->mmio_base + MMIO_DEV_TABLE_OFFSET + 4);
> +                entry = (((u64) hi) << 32) + lo;
> +                old_devtb_phys = entry & PAGE_MASK;
> +                old_devtb = ioremap_cache(old_devtb_phys, dev_table_size);

Please use memremap.

> +                for (devid = 0; devid <= amd_iommu_last_bdf; ++devid) {
> +                        amd_iommu_dev_table[devid] = old_devtb[devid];
> +                        dom_id = amd_iommu_dev_table[devid].data[1] & DEV_DOMID_MASK;
> +			if (!dom_id)
> +				continue;

Check the V and IV bits of the here instead of the domid.

  parent reply	other threads:[~2015-11-27 11:21 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-11-06 12:10 [Patch v2 0/9] Fix AMD IOMMU faults in kdump kernel Baoquan He
     [not found] ` <1446811851-20623-1-git-send-email-bhe-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-11-06 12:10   ` [Patch v2 1/9] iommu/amd: Use standard bitmap operation to set bitmap Baoquan He
2015-11-06 12:10   ` [Patch v2 2/9] iommu/amd: Detect pre enabled translation Baoquan He
     [not found]     ` <1446811851-20623-3-git-send-email-bhe-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-11-27 11:03       ` Joerg Roedel
     [not found]         ` <20151127110312.GA24300-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>
2015-11-30 11:18           ` Baoquan He
2015-11-06 12:10   ` [Patch v2 3/9] iommu/amd: make several functions globally seen Baoquan He
     [not found]     ` <1446811851-20623-4-git-send-email-bhe-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-11-27 11:06       ` Joerg Roedel
     [not found]         ` <20151127110609.GB24300-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>
2015-11-30 11:31           ` Baoquan He
2015-11-06 12:10   ` [Patch v2 4/9] iommu/amd: add copy_irq_table function Baoquan He
     [not found]     ` <1446811851-20623-5-git-send-email-bhe-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-11-27 11:13       ` Joerg Roedel
     [not found]         ` <20151127111312.GC24300-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>
2015-11-30 11:49           ` Baoquan He
2015-11-06 12:10   ` [Patch v2 5/9] iommu/amd: Add function copy_dev_tables Baoquan He
     [not found]     ` <1446811851-20623-6-git-send-email-bhe-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-11-27 11:21       ` Joerg Roedel [this message]
     [not found]         ` <20151127112152.GD24300-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>
2015-11-30 11:59           ` Baoquan He
2015-11-06 12:10   ` [Patch v2 6/9] iommu/amd: Add functions copy_command_buffer/copy_event_buffer Baoquan He
     [not found]     ` <1446811851-20623-7-git-send-email-bhe-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-11-27 11:24       ` Joerg Roedel
     [not found]         ` <20151127112446.GE24300-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>
2015-11-30 12:02           ` Baoquan He
2015-11-06 12:10   ` [Patch v2 7/9] iommu/amd: copy old tables and do not update dev tables before driver init Baoquan He
     [not found]     ` <1446811851-20623-8-git-send-email-bhe-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-11-27 11:35       ` Joerg Roedel
     [not found]         ` <20151127113517.GF24300-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>
2015-11-30 12:13           ` Baoquan He
2015-12-13  1:19           ` Baoquan He
     [not found]             ` <20151213011929.GA2490-ejN7fcUYdH/by3iVrkZq2A@public.gmane.org>
2015-12-16 15:51               ` Joerg Roedel
2015-11-06 12:10   ` [Patch v2 8/9] iommu/amd: Do not update the information of domain to devtables before device " Baoquan He
2015-11-06 12:10   ` [Patch v2 9/9] iommu/amd: Clear the iommu pre enabled setting Baoquan He
2015-11-06 12:14   ` [Patch v2 0/9] Fix AMD IOMMU faults in kdump kernel Baoquan He
2015-11-18  6:14   ` Baoquan He
2015-11-27 11:38   ` Joerg Roedel
     [not found]     ` <20151127113816.GG24300-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>
2015-11-30 11:16       ` Baoquan He

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=20151127112152.GD24300@8bytes.org \
    --to=joro-zlv9swrftaidnm+yrofe0a@public.gmane.org \
    --cc=bhe-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
    --cc=iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@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.