From: Tiejun Chen <tiejun.chen@intel.com>
To: JBeulich@suse.com, ian.jackson@eu.citrix.com,
stefano.stabellini@eu.citrix.com, ian.campbell@citrix.com,
yang.z.zhang@intel.com, kevin.tian@intel.com
Cc: xen-devel@lists.xen.org
Subject: [v4][PATCH 5/9] hvm_info_table: introduce nr_reserved_device_memory_map
Date: Fri, 22 Aug 2014 18:09:42 +0800 [thread overview]
Message-ID: <1408702186-24432-6-git-send-email-tiejun.chen@intel.com> (raw)
In-Reply-To: <1408702186-24432-1-git-send-email-tiejun.chen@intel.com>
libxc can expose how many reserved device memory entries
hvmloader should get. And '0' means that doesn't exist so
we can skip this check.
Signed-off-by: Tiejun Chen <tiejun.chen@intel.com>
---
tools/libxc/xc_hvm_build_x86.c | 12 ++++++++++--
xen/include/public/hvm/hvm_info_table.h | 3 +++
2 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/tools/libxc/xc_hvm_build_x86.c b/tools/libxc/xc_hvm_build_x86.c
index 20e4e0c..093b089 100644
--- a/tools/libxc/xc_hvm_build_x86.c
+++ b/tools/libxc/xc_hvm_build_x86.c
@@ -89,7 +89,8 @@ static int modules_init(struct xc_hvm_build_args *args,
}
static void build_hvm_info(void *hvm_info_page, uint64_t mem_size,
- uint64_t mmio_start, uint64_t mmio_size)
+ uint64_t mmio_start, uint64_t mmio_size,
+ unsigned int num)
{
struct hvm_info_table *hvm_info = (struct hvm_info_table *)
(((unsigned char *)hvm_info_page) + HVM_INFO_OFFSET);
@@ -119,6 +120,9 @@ static void build_hvm_info(void *hvm_info_page, uint64_t mem_size,
hvm_info->high_mem_pgend = highmem_end >> PAGE_SHIFT;
hvm_info->reserved_mem_pgstart = ioreq_server_pfn(0);
+ /* Reserved device memory number. */
+ hvm_info->nr_reserved_device_memory_map = num;
+
/* Finish with the checksum. */
for ( i = 0, sum = 0; i < hvm_info->length; i++ )
sum += ((uint8_t *)hvm_info)[i];
@@ -327,6 +331,7 @@ static int setup_guest(xc_interface *xch,
int claim_enabled = args->claim_enabled;
xen_pfn_t special_array[NR_SPECIAL_PAGES];
xen_pfn_t ioreq_server_array[NR_IOREQ_SERVER_PAGES];
+ unsigned int num_reserved = 0;
if ( nr_pages > target_pages )
pod_mode = XENMEMF_populate_on_demand;
@@ -368,6 +373,9 @@ static int setup_guest(xc_interface *xch,
rc = check_rmrr_overlap(xch, mmio_start, mmio_start);
if ( rc < 0 )
goto error_out;
+ /* Always return entries number. */
+ else
+ num_reserved = rc;
for ( i = 0; i < nr_pages; i++ )
page_array[i] = i;
@@ -538,7 +546,7 @@ static int setup_guest(xc_interface *xch,
xch, dom, PAGE_SIZE, PROT_READ | PROT_WRITE,
HVM_INFO_PFN)) == NULL )
goto error_out;
- build_hvm_info(hvm_info_page, v_end, mmio_start, mmio_size);
+ build_hvm_info(hvm_info_page, v_end, mmio_start, mmio_size, num_reserved);
munmap(hvm_info_page, PAGE_SIZE);
/* Allocate and clear special pages. */
diff --git a/xen/include/public/hvm/hvm_info_table.h b/xen/include/public/hvm/hvm_info_table.h
index 36085fa..52c2b80 100644
--- a/xen/include/public/hvm/hvm_info_table.h
+++ b/xen/include/public/hvm/hvm_info_table.h
@@ -67,6 +67,9 @@ struct hvm_info_table {
/* Bitmap of which CPUs are online at boot time. */
uint8_t vcpu_online[(HVM_MAX_VCPUS + 7)/8];
+
+ /* How many reserved device memory does this domain have? */
+ uint32_t nr_reserved_device_memory_map;
};
#endif /* __XEN_PUBLIC_HVM_HVM_INFO_TABLE_H__ */
--
1.9.1
next prev parent reply other threads:[~2014-08-22 10:09 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-08-22 10:09 [v4][PATCH 0/9] xen: reserve RMRR to avoid conflicting MMIO/RAM Tiejun Chen
2014-08-22 10:09 ` [v4][PATCH 1/9] xen:vtd:rmrr: export acpi_rmrr_units Tiejun Chen
2014-08-22 10:09 ` [v4][PATCH 2/9] xen:x86: define a new hypercall to get RMRR mappings Tiejun Chen
2014-08-22 10:53 ` Andrew Cooper
2014-08-22 11:36 ` Jan Beulich
2014-08-25 11:03 ` Chen, Tiejun
2014-08-25 11:21 ` Chen, Tiejun
2014-08-25 12:07 ` Andrew Cooper
2014-08-26 3:12 ` Chen, Tiejun
2014-08-26 9:25 ` Andrew Cooper
2014-08-22 10:09 ` [v4][PATCH 3/9] tools:libxc: introduce hypercall for xc_reserved_device_memory_map Tiejun Chen
2014-08-22 10:55 ` Andrew Cooper
2014-08-25 11:11 ` Chen, Tiejun
2014-08-25 11:58 ` Andrew Cooper
2014-08-22 10:09 ` [v4][PATCH 4/9] tools:libxc: check if mmio BAR is out of RMRR mappings Tiejun Chen
2014-08-26 20:36 ` Ian Campbell
2014-08-27 1:46 ` Chen, Tiejun
2014-08-27 2:20 ` Ian Campbell
2014-08-27 2:40 ` Chen, Tiejun
2014-08-27 2:47 ` Chen, Tiejun
2014-08-22 10:09 ` Tiejun Chen [this message]
2014-08-26 20:38 ` [v4][PATCH 5/9] hvm_info_table: introduce nr_reserved_device_memory_map Ian Campbell
2014-08-27 1:54 ` Chen, Tiejun
2014-08-27 1:57 ` Chen, Tiejun
2014-08-27 2:21 ` Ian Campbell
2014-08-27 2:28 ` Chen, Tiejun
2014-08-22 10:09 ` [v4][PATCH 6/9] xen:x86:: support xc_reserved_device_memory_map in compat case Tiejun Chen
2014-08-22 10:09 ` [v4][PATCH 7/9] tools:firmware:hvmloader: introduce hypercall for xc_reserved_device_memory_map Tiejun Chen
2014-08-22 10:09 ` [v4][PATCH 8/9] tools:firmware:hvmloader: check to reserve RMRR mappings in e820 Tiejun Chen
2014-08-22 10:09 ` [v4][PATCH 9/9] xen:vtd: make USB RMRR mapping safe Tiejun Chen
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=1408702186-24432-6-git-send-email-tiejun.chen@intel.com \
--to=tiejun.chen@intel.com \
--cc=JBeulich@suse.com \
--cc=ian.campbell@citrix.com \
--cc=ian.jackson@eu.citrix.com \
--cc=kevin.tian@intel.com \
--cc=stefano.stabellini@eu.citrix.com \
--cc=xen-devel@lists.xen.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).