From: Wei Wang <wei.wang2@amd.com>
To: "xen-devel@lists.xensource.com" <xen-devel@lists.xensource.com>
Subject: [RFC PATCH 1/3] AMD IOMMU: p2m table changes
Date: Fri, 25 Mar 2011 11:31:54 +0100 [thread overview]
Message-ID: <4D8C6F1A.8090401@amd.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 207 bytes --]
--
Advanced Micro Devices GmbH
Sitz: Dornach, Gemeinde Aschheim,
Landkreis München Registergericht München,
HRB Nr. 43632
WEEE-Reg-Nr: DE 12919551
Geschäftsführer:
Alberto Bozzo, Andrew Bowd
[-- Attachment #2: p2m_1.patch --]
[-- Type: text/plain, Size: 2221 bytes --]
# HG changeset patch
# User Wei Wang <wei.wang2@amd.com>
# Date 1300979908 -3600
# Node ID 6827fd35cf583353a7cb05946cdc5c0f13930f39
# Parent 12f7c7ac7f19e122fa83c16c8c6d9a6700ddc409
AMD IOMMU hardware uses bit 9 - bit 11 to encode lower page levels. Therefore,
p2m type bits has to be shifted from bit 9 to bit 12 in p2m flags. Also, bit 52
to bit 60 cannot be non-zero for iommu pte. So, I have to swap the definition of
p2m_ram_rw with p2m_invalid. This patch is tested OK with both SPT and NPT
guests.
Signed-off-by: Wei Wang <wei.wang2@amd.com>
diff -r 12f7c7ac7f19 -r 6827fd35cf58 xen/arch/x86/mm/p2m.c
--- a/xen/arch/x86/mm/p2m.c Fri Mar 18 17:15:52 2011 +0000
+++ b/xen/arch/x86/mm/p2m.c Thu Mar 24 16:18:28 2011 +0100
@@ -79,7 +79,7 @@
{
unsigned long flags;
#ifdef __x86_64__
- flags = (unsigned long)(t & 0x3fff) << 9;
+ flags = (unsigned long)(t & 0x3fff) << 12;
#else
flags = (t & 0x7UL) << 9;
#endif
@@ -1760,6 +1760,9 @@
p2mt = p2m_flags_to_type(l1e_get_flags(l1e));
ASSERT(l1e_get_pfn(l1e) != INVALID_MFN || !p2m_is_ram(p2mt));
+ if ( l1e.l1 == 0 )
+ p2mt = p2m_invalid;
+
if ( p2m_flags_to_type(l1e_get_flags(l1e))
== p2m_populate_on_demand )
{
diff -r 12f7c7ac7f19 -r 6827fd35cf58 xen/include/asm-x86/p2m.h
--- a/xen/include/asm-x86/p2m.h Fri Mar 18 17:15:52 2011 +0000
+++ b/xen/include/asm-x86/p2m.h Thu Mar 24 16:18:28 2011 +0100
@@ -64,8 +64,8 @@
* 64-bit Xen.
*/
typedef enum {
- p2m_invalid = 0, /* Nothing mapped here */
- p2m_ram_rw = 1, /* Normal read/write guest RAM */
+ p2m_invalid = 1, /* Nothing mapped here */
+ p2m_ram_rw = 0, /* Normal read/write guest RAM */
p2m_ram_logdirty = 2, /* Temporarily read-only for log-dirty */
p2m_ram_ro = 3, /* Read-only; writes are silently dropped */
p2m_mmio_dm = 4, /* Reads and write go to the device model */
@@ -312,7 +312,7 @@
{
/* Type is stored in the "available" bits */
#ifdef __x86_64__
- return (flags >> 9) & 0x3fff;
+ return (flags >> 12) & 0x3fff;
#else
return (flags >> 9) & 0x7;
#endif
[-- Attachment #3: Type: text/plain, Size: 138 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
next reply other threads:[~2011-03-25 10:31 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-03-25 10:31 Wei Wang [this message]
2011-04-04 10:59 ` [RFC PATCH 1/3] AMD IOMMU: p2m table changes Tim Deegan
2011-04-04 12:14 ` Wei Wang2
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=4D8C6F1A.8090401@amd.com \
--to=wei.wang2@amd.com \
--cc=xen-devel@lists.xensource.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.