[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2] xen/pass-through: ROM BAR handling adjustments
On Mon, 8 Jun 2015, Jan Beulich wrote: > Expecting the ROM BAR to be written with an all ones value when sizing > the region is wrong - the low bit has another meaning (enable/disable) > and bits 1..10 are reserved. The PCI spec also mandates writing all > ones to just the address portion of the register. > > Use suitable constants also for initializing the ROM BAR register field > description. > > Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> Reviewed-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx> Added to my queue > v2: Convert complex if() into simpler ones. > > --- a/hw/xen/xen_pt.c > +++ b/hw/xen/xen_pt.c > @@ -249,10 +249,18 @@ static void xen_pt_pci_write_config(PCID > > /* check unused BAR register */ > index = xen_pt_bar_offset_to_index(addr); > - if ((index >= 0) && (val > 0 && val < XEN_PT_BAR_ALLF) && > - (s->bases[index].bar_flag == XEN_PT_BAR_FLAG_UNUSED)) { > - XEN_PT_WARN(d, "Guest attempt to set address to unused Base Address " > - "Register. (addr: 0x%02x, len: %d)\n", addr, len); > + if ((index >= 0) && (val != 0)) { > + uint32_t chk = val; > + > + if (index == PCI_ROM_SLOT) > + chk |= (uint32_t)~PCI_ROM_ADDRESS_MASK; > + > + if ((chk != XEN_PT_BAR_ALLF) && > + (s->bases[index].bar_flag == XEN_PT_BAR_FLAG_UNUSED)) { > + XEN_PT_WARN(d, "Guest attempt to set address to unused " > + "Base Address Register. (addr: 0x%02x, len: %d)\n", > + addr, len); > + } > } > > /* find register group entry */ > --- a/hw/xen/xen_pt_config_init.c > +++ b/hw/xen/xen_pt_config_init.c > @@ -729,8 +729,8 @@ static XenPTRegInfo xen_pt_emu_reg_heade > .offset = PCI_ROM_ADDRESS, > .size = 4, > .init_val = 0x00000000, > - .ro_mask = 0x000007FE, > - .emu_mask = 0xFFFFF800, > + .ro_mask = ~PCI_ROM_ADDRESS_MASK & ~PCI_ROM_ADDRESS_ENABLE, > + .emu_mask = (uint32_t)PCI_ROM_ADDRESS_MASK, > .init = xen_pt_bar_reg_init, > .u.dw.read = xen_pt_long_reg_read, > .u.dw.write = xen_pt_exp_rom_bar_reg_write, > > > > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |