From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Jan Beulich <JBeulich@suse.com>,
xen-devel <xen-devel@lists.xenproject.org>
Cc: Yang Z Zhang <yang.z.zhang@intel.com>,
Kevin Tian <kevin.tian@intel.com>,
Roger Pau Monne <roger.pau@citrix.com>
Subject: Re: [PATCH] VT-d: print_vtd_entries() should cope with superpages
Date: Fri, 27 Feb 2015 10:41:46 +0000 [thread overview]
Message-ID: <54F049EA.9060904@citrix.com> (raw)
In-Reply-To: <54F04C5602000078000647B4@mail.emea.novell.com>
[-- Attachment #1.1: Type: text/plain, Size: 2337 bytes --]
On 27/02/15 09:52, Jan Beulich wrote:
> Even if VT-d code alone (i.e. when not sharing tables with EPT) still
> doesn't support superpages, this function - invoked upon DMA remapping
> faults - needs to cope with such.
>
> While at it also replace a few more plain numbers with suitable named
> constants.
>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
>
> --- a/xen/drivers/passthrough/vtd/iommu.h
> +++ b/xen/drivers/passthrough/vtd/iommu.h
> @@ -268,18 +268,22 @@ struct dma_pte {
> };
> #define DMA_PTE_READ (1)
> #define DMA_PTE_WRITE (2)
> +#define DMA_PTE_PROT (DMA_PTE_READ | DMA_PTE_WRITE)
> +#define DMA_PTE_SP (1 << 7)
> #define DMA_PTE_SNP (1 << 11)
> #define dma_clear_pte(p) do {(p).val = 0;} while(0)
> #define dma_set_pte_readable(p) do {(p).val |= DMA_PTE_READ;} while(0)
> #define dma_set_pte_writable(p) do {(p).val |= DMA_PTE_WRITE;} while(0)
> -#define dma_set_pte_superpage(p) do {(p).val |= (1 << 7);} while(0)
> +#define dma_set_pte_superpage(p) do {(p).val |= DMA_PTE_SP;} while(0)
> #define dma_set_pte_snp(p) do {(p).val |= DMA_PTE_SNP;} while(0)
> -#define dma_set_pte_prot(p, prot) \
> - do {(p).val = ((p).val & ~3) | ((prot) & 3); } while (0)
> +#define dma_set_pte_prot(p, prot) do { \
> + (p).val = ((p).val & ~DMA_PTE_PROT) | ((prot) & DMA_PTE_PROT); \
> + } while (0)
> #define dma_pte_addr(p) ((p).val & PADDR_MASK & PAGE_MASK_4K)
> #define dma_set_pte_addr(p, addr) do {\
> (p).val |= ((addr) & PAGE_MASK_4K); } while (0)
> -#define dma_pte_present(p) (((p).val & 3) != 0)
> +#define dma_pte_present(p) (((p).val & DMA_PTE_PROT) != 0)
> +#define dma_pte_superpage(p) (((p).val & DMA_PTE_SP) != 0)
>
> /* interrupt remap entry */
> struct iremap_entry {
> --- a/xen/drivers/passthrough/vtd/utils.c
> +++ b/xen/drivers/passthrough/vtd/utils.c
> @@ -179,6 +179,8 @@ void print_vtd_entries(struct iommu *iom
> printk(" l%d[%x] not present\n", level, l_index);
> break;
> }
> + if ( dma_pte_superpage(pte) )
> + break;
> val = dma_pte_addr(pte);
> } while ( --level );
> }
>
>
>
>
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xen.org
> http://lists.xen.org/xen-devel
[-- Attachment #1.2: Type: text/html, Size: 3224 bytes --]
[-- Attachment #2: Type: text/plain, Size: 126 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
next prev parent reply other threads:[~2015-02-27 10:42 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-02-27 9:52 [PATCH] VT-d: print_vtd_entries() should cope with superpages Jan Beulich
2015-02-27 10:03 ` Roger Pau Monné
2015-02-27 10:41 ` Andrew Cooper [this message]
2015-03-09 3:10 ` Tian, Kevin
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=54F049EA.9060904@citrix.com \
--to=andrew.cooper3@citrix.com \
--cc=JBeulich@suse.com \
--cc=kevin.tian@intel.com \
--cc=roger.pau@citrix.com \
--cc=xen-devel@lists.xenproject.org \
--cc=yang.z.zhang@intel.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.