On Fri, Oct 15, 2021 at 10:40:25AM +0800, menglong8.dong@xxxxxxxxx wrote: > From: Menglong Dong <imagedong@xxxxxxxxxxx> > > While the system is running in KVM, pci config writing for virtio devices > may cost long time (about 1-2ms), as it causes VM-exit. During > __pci_bus_assign_resources(), pci_setup_bridge(), which can write pci > config up to 10 times, can be called many times without any > cond_resched(). So __pci_bus_assign_resources() can cause 25+ms > scheduling latency with !CONFIG_PREEMPT. > > To solve this problem, call cond_resched() after pci config writing. See https://lore.kernel.org/r/20211013190014.GA1909934@bhelgaas for comments about subject line, s/pci/PCI/, line length, etc. > Signed-off-by: Menglong Dong <imagedong@xxxxxxxxxxx> > --- > v2: > - use cond_resched() instead of _cond_resched() > --- > drivers/pci/access.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/pci/access.c b/drivers/pci/access.c > index 46935695cfb9..4c52a50f2c46 100644 > --- a/drivers/pci/access.c > +++ b/drivers/pci/access.c > @@ -57,6 +57,7 @@ int noinline pci_bus_write_config_##size \ > pci_lock_config(flags); \ > res = bus->ops->write(bus, devfn, pos, len, value); \ > pci_unlock_config(flags); \ > + cond_resched(); \ > return res; \ > } > > -- > 2.27.0 >