|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] hvmloader / qemu-xen: Getting rid of resource conflict for OpRegion.
Switch to a new address that can reach to Jean.
On Thu, Dec 20, 2012 at 11:52 AM, G.R. <firemeteor@xxxxxxxxxxxxxxxxxxxxx> wrote:
> This is hvmloader part of the change that gets rid of the resource
> conflict warning in the guest kernel.
> The OpRegion may not always be page aligned.
> As a result one extra page is required to fully accommodate the
> OpRegion in that case.
> Just reserve one more page here.
>
> Signed-off-by: Timothy Guo <firemeteor@xxxxxxxxxxxxxxxxxxxxx>
>
> diff -r 11b4bc743b1f tools/firmware/hvmloader/e820.c
> --- a/tools/firmware/hvmloader/e820.c Mon Dec 17 14:59:11 2012 +0000
> +++ b/tools/firmware/hvmloader/e820.c Thu Dec 20 00:07:40 2012 +0800
> @@ -142,11 +142,11 @@ int build_e820_table(struct e820entry *e
> nr++;
>
> e820[nr].addr = igd_opregion_base;
> - e820[nr].size = 2 * PAGE_SIZE;
> + e820[nr].size = 3 * PAGE_SIZE;
> e820[nr].type = E820_NVS;
> nr++;
>
> - e820[nr].addr = igd_opregion_base + 2 * PAGE_SIZE;
> + e820[nr].addr = igd_opregion_base + 3 * PAGE_SIZE;
> e820[nr].size = (uint32_t)-e820[nr].addr;
> e820[nr].type = E820_RESERVED;
> nr++;
> diff -r 11b4bc743b1f tools/firmware/hvmloader/pci.c
> --- a/tools/firmware/hvmloader/pci.c Mon Dec 17 14:59:11 2012 +0000
> +++ b/tools/firmware/hvmloader/pci.c Thu Dec 20 00:07:40 2012 +0800
> @@ -98,7 +98,7 @@ void pci_setup(void)
> virtual_vga = VGA_pt;
> if ( vendor_id == 0x8086 )
> {
> - igd_opregion_pgbase = mem_hole_alloc(2);
> + igd_opregion_pgbase = mem_hole_alloc(3);
> /*
> * Write the the OpRegion offset to give the opregion
> * address to the device model. The device model will
> trap
>
>
> This is qemu-xen part of the change that gets rid of the resource
> conflict warning in the guest kernel.
> If the host OpRegion is page aligned, two pages will be sufficient.
> Otherwise, we need to map one more page to have it fully accommodated
> -- the guest kernel would map this extra page and complain about
> resource conflict.
>
> Signed-off-by: Timothy Guo <firemeteor@xxxxxxxxxxxxxxxxxxxxx>
>
> diff --git a/hw/pt-graphics.c b/hw/pt-graphics.c
> index c6f8869..3f2b285 100644
> --- a/hw/pt-graphics.c
> +++ b/hw/pt-graphics.c
> @@ -81,6 +81,7 @@ uint32_t igd_read_opregion(struct pt_dev *pci_dev)
> void igd_write_opregion(struct pt_dev *real_dev, uint32_t val)
> {
> uint32_t host_opregion = 0;
> + uint32_t map_size = 2;
> int ret;
>
> if ( igd_guest_opregion )
> @@ -74,11 +93,13 @@ void igd_write_opregion(struct pt_dev *real_dev,
> uint32_t val)
> host_opregion = pt_pci_host_read(real_dev->pci_dev, PCI_INTEL_OPREGION,
> 4);
> igd_guest_opregion = (val & ~0xfff) | (host_opregion & 0xfff);
> PT_LOG("Map OpRegion: %x -> %x\n", host_opregion, igd_guest_opregion);
> + //If the opregion is not page-aligned, map one more page to fit
> the entire region.
> + map_size += (host_opregion & 0xfff) != 0;
>
> ret = xc_domain_memory_mapping(xc_handle, domid,
> igd_guest_opregion >> XC_PAGE_SHIFT,
> host_opregion >> XC_PAGE_SHIFT,
> - 2,
> + map_size,
> DPCI_ADD_MAPPING);
>
> if ( ret != 0 )
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |