xen_pt: Present the size of 64 bit BARs correctly
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 <ross.lagerwall@citrix.com> Acked-by: Anthony PERARD <anthony.perard@citrix.com> Signed-off-by: Stefano Stabellini <sstabellini@kernel.org>
This commit is contained in:
parent
70c292afdf
commit
dc9e46a29a
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user