mirror of https://gitee.com/openkylin/linux.git
xen-pciback: also support disabling of bus-mastering and memory-write-invalidate
It's not clear to me why only the enabling operation got handled so far. Signed-off-by: Jan Beulich <jbeulich@suse.com> Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> Signed-off-by: David Vrabel <david.vrabel@citrix.com>
This commit is contained in:
parent
85617dc7ee
commit
278edfc078
|
@ -88,9 +88,15 @@ static int command_write(struct pci_dev *dev, int offset, u16 value, void *data)
|
|||
printk(KERN_DEBUG DRV_NAME ": %s: set bus master\n",
|
||||
pci_name(dev));
|
||||
pci_set_master(dev);
|
||||
} else if (dev->is_busmaster && !is_master_cmd(value)) {
|
||||
if (unlikely(verbose_request))
|
||||
printk(KERN_DEBUG DRV_NAME ": %s: clear bus master\n",
|
||||
pci_name(dev));
|
||||
pci_clear_master(dev);
|
||||
}
|
||||
|
||||
if (value & PCI_COMMAND_INVALIDATE) {
|
||||
if (!(cmd->val & PCI_COMMAND_INVALIDATE) &&
|
||||
(value & PCI_COMMAND_INVALIDATE)) {
|
||||
if (unlikely(verbose_request))
|
||||
printk(KERN_DEBUG
|
||||
DRV_NAME ": %s: enable memory-write-invalidate\n",
|
||||
|
@ -101,6 +107,13 @@ static int command_write(struct pci_dev *dev, int offset, u16 value, void *data)
|
|||
pci_name(dev), err);
|
||||
value &= ~PCI_COMMAND_INVALIDATE;
|
||||
}
|
||||
} else if ((cmd->val & PCI_COMMAND_INVALIDATE) &&
|
||||
!(value & PCI_COMMAND_INVALIDATE)) {
|
||||
if (unlikely(verbose_request))
|
||||
printk(KERN_DEBUG
|
||||
DRV_NAME ": %s: disable memory-write-invalidate\n",
|
||||
pci_name(dev));
|
||||
pci_clear_mwi(dev);
|
||||
}
|
||||
|
||||
cmd->val = value;
|
||||
|
|
Loading…
Reference in New Issue