[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] xen_pt: Present the size of 64 bit BARs correct
From: |
Anthony PERARD |
Subject: |
Re: [Qemu-devel] [PATCH] xen_pt: Present the size of 64 bit BARs correctly |
Date: |
Thu, 17 May 2018 18:57:34 +0100 |
User-agent: |
Mutt/1.9.5 (2018-04-13) |
On Mon, May 14, 2018 at 10:57:46AM +0100, Ross Lagerwall wrote:
> The full size of the BAR is stored in the lower PCIIORegion.size. The
> upper PCIIORegion.size is 0. Calculate the size of the upper half
> correctly from the lower half otherwise the size read by the guest will
> be incorrect.
>
> Signed-off-by: Ross Lagerwall <address@hidden>
Acked-by: Anthony PERARD <address@hidden>
> ---
> hw/xen/xen_pt_config_init.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/hw/xen/xen_pt_config_init.c b/hw/xen/xen_pt_config_init.c
> index a3ce33e..aee31c6 100644
> --- a/hw/xen/xen_pt_config_init.c
> +++ b/hw/xen/xen_pt_config_init.c
> @@ -504,6 +504,8 @@ static int xen_pt_bar_reg_write(XenPCIPassthroughState
> *s, XenPTReg *cfg_entry,
> bar_ro_mask = XEN_PT_BAR_IO_RO_MASK | (r_size - 1);
> break;
> case XEN_PT_BAR_FLAG_UPPER:
> + assert(index > 0);
> + r_size = d->io_regions[index - 1].size >> 32;
> bar_emu_mask = XEN_PT_BAR_ALLF;
> bar_ro_mask = r_size ? r_size - 1 : 0;
> break;
--
Anthony PERARD