[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] Allow pciback to be placed into a permissive mode of operation whereby it allows
# HG changeset patch # User kaf24@xxxxxxxxxxxxxxxxxxxx # Node ID 42a1f6ffd0e9567a04175f1899c033f6e1d4d2df # Parent aae274b4c1a739f70abf2dd1f3d7629bc37ccc6c Allow pciback to be placed into a permissive mode of operation whereby it allows PCI config writes to succeed by default. Currently this is the only way to allow control of a device that has device-specific registers in the config space from a driver domain. echo Y >/sys/module/pciback/parameters/permissive Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx> diff -r aae274b4c1a7 -r 42a1f6ffd0e9 linux-2.6-xen-sparse/drivers/xen/pciback/conf_space.c --- a/linux-2.6-xen-sparse/drivers/xen/pciback/conf_space.c Wed Mar 8 14:51:28 2006 +++ b/linux-2.6-xen-sparse/drivers/xen/pciback/conf_space.c Wed Mar 8 16:32:36 2006 @@ -13,6 +13,9 @@ #include <linux/pci.h> #include "pciback.h" #include "conf_space.h" + +static int permissive = 0; +module_param(permissive, bool, 0644); #define DEFINE_PCI_CONFIG(op,size,type) \ int pciback_##op##_config_##size \ @@ -198,7 +201,7 @@ int pciback_config_write(struct pci_dev *dev, int offset, int size, u32 value) { - int err = 0; + int err = 0, handled = 0; struct pciback_dev_data *dev_data = pci_get_drvdata(dev); struct config_field_entry *cfg_entry; struct config_field *field; @@ -233,6 +236,21 @@ field_start - req_start); err = conf_space_write(dev, cfg_entry, offset, tmp_val); + handled = 1; + } + } + + if (!handled && !err && permissive) { + switch (size) { + case 1: + err = pci_write_config_byte(dev, offset, (u8)value); + break; + case 2: + err = pci_write_config_word(dev, offset, (u16)value); + break; + case 4: + err = pci_write_config_dword(dev, offset, (u32)value); + break; } } _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |