v11:
* Rebase on staging
* Patch #6: hvmloader/pci: Try to avoid placing BARs in RMRRs
To find the lowest RMRR the _end_ of which is higher than base;
Refine some code implementations;
* Patch #7: hvmloader/e820: construct guest e820 table
To check/sync memory_map.map[] before copy them into e820 since
ultimately this can make sure hvm_info, memory_map.map[] and e820
are on the same page;
Refine some code implementations;
* Patch #11: tools/libxl: detect and avoid conflicts with RDM
Use GCNEW_ARRAY to replace libxl__malloc();
#define pfn_to_paddrk is missing safety () around x, and
move this into libxl_internal.h;
Rename set_rdm_entries() to add_rdm_entry() and put the
increment at the end so that the assignments are
to ->rdms[d_config->num_rdms];
"Simply make it so that if there are any rdms specified
in the domain config, they are used instead of the
automatically gathered information (from strategy and
devices)." So just return if d_config->rmds is valid;
Shorten some code comments.
v10:
* Patch #6: hvmloader/pci: Try to avoid placing BARs in RMRRs
This is from George' draft patch which implements an acceptable
solution in current cycle. Here I just implemented check_overlap_all() and
some cleanups.
* Patch #7: hvmloader/e820: construct guest e820 table
Instead of correcting e820, I'd like to correct memory_map.map[]
and then copy them into e820 directly. I think this can make sure
hvm_info, memory_map.map[] and e820 are on the same page.
v9:
* Patch #3: xen/passthrough: extend hypercall to support rdm reservation policy
Correct one check condition of XEN_DOMCTL_DEV_RDM_RELAXED
* Patch #5: hvmloader: get guest memory map into memory_map[]
Correct the patch head description:
[RESERVED_MEMORY_DYNAMIC_START, RESERVED_MEMORY_DYNAMIC_END]
-> [RESERVED_MEMORY_DYNAMIC_START, RESERVED_MEMORY_DYNAMIC_END);
Merge two if{} as one if{};
* Patch #6: hvmloader/pci: disable all pci devices conflicting with rdm
A little improvement to code implementation but again, its still argued
about this solution. Myself prefer to take a look at v7 if possible.
* Patch #7: hvmloader/e820: construct guest e820 table
Refine that chunk of codes to check/modify highmem
* Patch #15: xen/vtd: prevent from assign the device with shared rmrr
Correct one indentation issue
v8:
* Patch #3: xen/passthrough: extend hypercall to support rdm reservation policy
Force to pass "0"(strict) when add or move a device in hardware domain,
and improve some associated code comments.
* Patch #5: hvmloader: get guest memory map into memory_map[]
Actually we should check this range started from
RESERVED_MEMORY_DYNAMIC_START, not RESERVED_MEMORY_DYNAMIC_START - 1.
So correct this and sync the patch head description.
* Patch #6: hvmloader/pci: disable all pci devices conflicting
We have a big change to this patch:
Based on current discussion its hard to reshape the original mmio
allocation mechanism but we haven't a good and simple way to in short term.
So instead, we don't bring more complicated to intervene that process but
still check any conflicts to disable all associated devices.
I know this is still argumented but I'd like to discuss this based on this
revision and thanks for your time.
* Patch #7: hvmloader/e820: construct guest e820 table
define low_mem_end as uint32_t;
Correct those two wrong loops, memory_map.nr_map -> nr
when we're trying to revise low/high memory e820 entries;
Improve code comments and the patch head description;
Add one check if highmem is just populated by hvmloader itself
* Patch #11: tools/libxl: detect and avoid conflicts with RDM
Introduce pfn_to_paddr(x) -> ((uint64_t)x << XC_PAGE_SHIFT)
and set_rdm_entries() to factor out current codes.
* Patch #13: libxl: construct e820 map with RDM information for HVM guest
make that core construction function as arch-specific to make sure
we don't break ARM at this point.
* Patch #15: xen/vtd: prevent from assign the device with shared rmrr
Merge two if{} as one if{};
Add to print RMRR range info when stop assign a group device
* Some minimal code style changes
v7:
* Need to rename some parameters:
In the xl rdm config parsing, `reserve=' should be `policy='.
In the xl pci config parsing, `rdm_reserve=' should be `rdm_policy='.
The type `libxl_rdm_reserve_flag' should be `libxl_rdm_policy'.
The field name `reserve' in `libxl_rdm_reserve' should be `policy'.
* Just sync with the fallout of renaming parameters above.
Note I also mask patch #10 Acked by Wei Liu, Ian Jackson and Ian
Campbell. ( If I'm wrong just let me know at this point. ) And
as we discussed I'd further improve something as next step after
this round of review.
v6:
* Inside patch #01, add a comments to the nr_entries field inside
xen_reserved_device_memory_map. Note this is from Jan.
* Inside patch #10, we need rename something to make our policy reasonable
"type" ->