[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH] vpci: Add resizable bar support
On Wed, Nov 20, 2024 at 02:30:33AM +0000, Chen, Jiqian wrote: > On 2024/11/19 20:51, Roger Pau Monné wrote: > > On Wed, Nov 13, 2024 at 04:00:27PM +0800, Jiqian Chen wrote: > >> +static void cf_check rebar_ctrl_write(const struct pci_dev *pdev, > >> + unsigned int reg, > >> + uint32_t val, > >> + void *data) > >> +{ > >> + uint32_t ctrl, index; > >> + struct vpci_bar *bars = pdev->vpci->header.bars; > >> + > >> + ctrl = pci_conf_read32(pdev->sbdf, reg); > >> + if ( ctrl == val ) > >> + return; > >> + > >> + ctrl &= ~PCI_REBAR_CTRL_BAR_SIZE; > >> + if ( ctrl != ( val & ~PCI_REBAR_CTRL_BAR_SIZE ) ) > >> + return; > >> + > >> + index = ctrl & PCI_REBAR_CTRL_BAR_IDX; > >> + bars[index].size = (1 << ((val & PCI_REBAR_CTRL_BAR_SIZE) >> > >> + PCI_REBAR_CTRL_BAR_SHIFT)) * > >> + PCI_REBAR_CTRL_BAR_UNIT; > > > > One further comment: you also need to reset addr and guest_addr here > > (possibly by reading them from the BAR register), as the specification > > states that: > How about just set them to 0, since the addr will be re-assigned by system > and the addr of BAR register is also out of date. Seems good, I assume Xen would also get 0 as the BAR register address after having changed the size. Thanks, Roger.
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |