| .. | .. |
|---|
| 6 | 6 | */ |
|---|
| 7 | 7 | |
|---|
| 8 | 8 | #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt |
|---|
| 9 | +#define dev_fmt pr_fmt |
|---|
| 9 | 10 | |
|---|
| 10 | 11 | #include <linux/kernel.h> |
|---|
| 11 | 12 | #include <linux/pci.h> |
|---|
| .. | .. |
|---|
| 67 | 68 | |
|---|
| 68 | 69 | dev_data = pci_get_drvdata(dev); |
|---|
| 69 | 70 | if (!pci_is_enabled(dev) && is_enable_cmd(value)) { |
|---|
| 70 | | - if (unlikely(verbose_request)) |
|---|
| 71 | | - printk(KERN_DEBUG DRV_NAME ": %s: enable\n", |
|---|
| 72 | | - pci_name(dev)); |
|---|
| 71 | + dev_dbg(&dev->dev, "enable\n"); |
|---|
| 73 | 72 | err = pci_enable_device(dev); |
|---|
| 74 | 73 | if (err) |
|---|
| 75 | 74 | return err; |
|---|
| 76 | 75 | if (dev_data) |
|---|
| 77 | 76 | dev_data->enable_intx = 1; |
|---|
| 78 | 77 | } else if (pci_is_enabled(dev) && !is_enable_cmd(value)) { |
|---|
| 79 | | - if (unlikely(verbose_request)) |
|---|
| 80 | | - printk(KERN_DEBUG DRV_NAME ": %s: disable\n", |
|---|
| 81 | | - pci_name(dev)); |
|---|
| 78 | + dev_dbg(&dev->dev, "disable\n"); |
|---|
| 82 | 79 | pci_disable_device(dev); |
|---|
| 83 | 80 | if (dev_data) |
|---|
| 84 | 81 | dev_data->enable_intx = 0; |
|---|
| 85 | 82 | } |
|---|
| 86 | 83 | |
|---|
| 87 | 84 | if (!dev->is_busmaster && is_master_cmd(value)) { |
|---|
| 88 | | - if (unlikely(verbose_request)) |
|---|
| 89 | | - printk(KERN_DEBUG DRV_NAME ": %s: set bus master\n", |
|---|
| 90 | | - pci_name(dev)); |
|---|
| 85 | + dev_dbg(&dev->dev, "set bus master\n"); |
|---|
| 91 | 86 | pci_set_master(dev); |
|---|
| 92 | 87 | } else if (dev->is_busmaster && !is_master_cmd(value)) { |
|---|
| 93 | | - if (unlikely(verbose_request)) |
|---|
| 94 | | - printk(KERN_DEBUG DRV_NAME ": %s: clear bus master\n", |
|---|
| 95 | | - pci_name(dev)); |
|---|
| 88 | + dev_dbg(&dev->dev, "clear bus master\n"); |
|---|
| 96 | 89 | pci_clear_master(dev); |
|---|
| 97 | 90 | } |
|---|
| 98 | 91 | |
|---|
| 99 | 92 | if (!(cmd->val & PCI_COMMAND_INVALIDATE) && |
|---|
| 100 | 93 | (value & PCI_COMMAND_INVALIDATE)) { |
|---|
| 101 | | - if (unlikely(verbose_request)) |
|---|
| 102 | | - printk(KERN_DEBUG |
|---|
| 103 | | - DRV_NAME ": %s: enable memory-write-invalidate\n", |
|---|
| 104 | | - pci_name(dev)); |
|---|
| 94 | + dev_dbg(&dev->dev, "enable memory-write-invalidate\n"); |
|---|
| 105 | 95 | err = pci_set_mwi(dev); |
|---|
| 106 | 96 | if (err) { |
|---|
| 107 | | - pr_warn("%s: cannot enable memory-write-invalidate (%d)\n", |
|---|
| 108 | | - pci_name(dev), err); |
|---|
| 97 | + dev_warn(&dev->dev, "cannot enable memory-write-invalidate (%d)\n", |
|---|
| 98 | + err); |
|---|
| 109 | 99 | value &= ~PCI_COMMAND_INVALIDATE; |
|---|
| 110 | 100 | } |
|---|
| 111 | 101 | } else if ((cmd->val & PCI_COMMAND_INVALIDATE) && |
|---|
| 112 | 102 | !(value & PCI_COMMAND_INVALIDATE)) { |
|---|
| 113 | | - if (unlikely(verbose_request)) |
|---|
| 114 | | - printk(KERN_DEBUG |
|---|
| 115 | | - DRV_NAME ": %s: disable memory-write-invalidate\n", |
|---|
| 116 | | - pci_name(dev)); |
|---|
| 103 | + dev_dbg(&dev->dev, "disable memory-write-invalidate\n"); |
|---|
| 117 | 104 | pci_clear_mwi(dev); |
|---|
| 105 | + } |
|---|
| 106 | + |
|---|
| 107 | + if (dev_data && dev_data->allow_interrupt_control) { |
|---|
| 108 | + if ((cmd->val ^ value) & PCI_COMMAND_INTX_DISABLE) { |
|---|
| 109 | + if (value & PCI_COMMAND_INTX_DISABLE) { |
|---|
| 110 | + pci_intx(dev, 0); |
|---|
| 111 | + } else { |
|---|
| 112 | + /* Do not allow enabling INTx together with MSI or MSI-X. */ |
|---|
| 113 | + switch (xen_pcibk_get_interrupt_type(dev)) { |
|---|
| 114 | + case INTERRUPT_TYPE_NONE: |
|---|
| 115 | + pci_intx(dev, 1); |
|---|
| 116 | + break; |
|---|
| 117 | + case INTERRUPT_TYPE_INTX: |
|---|
| 118 | + break; |
|---|
| 119 | + default: |
|---|
| 120 | + return PCIBIOS_SET_FAILED; |
|---|
| 121 | + } |
|---|
| 122 | + } |
|---|
| 123 | + } |
|---|
| 118 | 124 | } |
|---|
| 119 | 125 | |
|---|
| 120 | 126 | cmd->val = value; |
|---|
| .. | .. |
|---|
| 138 | 144 | struct pci_bar_info *bar = data; |
|---|
| 139 | 145 | |
|---|
| 140 | 146 | if (unlikely(!bar)) { |
|---|
| 141 | | - pr_warn(DRV_NAME ": driver data not found for %s\n", |
|---|
| 142 | | - pci_name(dev)); |
|---|
| 147 | + dev_warn(&dev->dev, "driver data not found\n"); |
|---|
| 143 | 148 | return XEN_PCI_ERR_op_failed; |
|---|
| 144 | 149 | } |
|---|
| 145 | 150 | |
|---|
| .. | .. |
|---|
| 175 | 180 | u32 mask; |
|---|
| 176 | 181 | |
|---|
| 177 | 182 | if (unlikely(!bar)) { |
|---|
| 178 | | - pr_warn(DRV_NAME ": driver data not found for %s\n", |
|---|
| 179 | | - pci_name(dev)); |
|---|
| 183 | + dev_warn(&dev->dev, "driver data not found\n"); |
|---|
| 180 | 184 | return XEN_PCI_ERR_op_failed; |
|---|
| 181 | 185 | } |
|---|
| 182 | 186 | |
|---|
| .. | .. |
|---|
| 209 | 213 | struct pci_bar_info *bar = data; |
|---|
| 210 | 214 | |
|---|
| 211 | 215 | if (unlikely(!bar)) { |
|---|
| 212 | | - pr_warn(DRV_NAME ": driver data not found for %s\n", |
|---|
| 213 | | - pci_name(dev)); |
|---|
| 216 | + dev_warn(&dev->dev, "driver data not found\n"); |
|---|
| 214 | 217 | return XEN_PCI_ERR_op_failed; |
|---|
| 215 | 218 | } |
|---|
| 216 | 219 | |
|---|
| .. | .. |
|---|
| 414 | 417 | |
|---|
| 415 | 418 | default: |
|---|
| 416 | 419 | err = -EINVAL; |
|---|
| 417 | | - pr_err("%s: Unsupported header type %d!\n", |
|---|
| 418 | | - pci_name(dev), dev->hdr_type); |
|---|
| 420 | + dev_err(&dev->dev, "Unsupported header type %d!\n", |
|---|
| 421 | + dev->hdr_type); |
|---|
| 419 | 422 | break; |
|---|
| 420 | 423 | } |
|---|
| 421 | 424 | |
|---|