Commit 402c5e15 authored by Jan Beulich's avatar Jan Beulich Committed by Konrad Rzeszutek Wilk

xen/pciback: miscellaneous adjustments

This is a minor bugfix and a set of small cleanups; as it is not clear
whether this needs splitting into pieces (and if so, at what
granularity), it is a single combined patch.
- add a missing return statement to an error path in
  kill_domain_by_device()
- use pci_is_enabled() rather than raw atomic_read()
- remove a bogus attempt to zero-terminate an already zero-terminated
  string
- #define DRV_NAME once uniformly in the shared local header
- make DRIVER_ATTR() variables static
- eliminate a pointless use of list_for_each_entry_safe()
- add MODULE_ALIAS()
- a little bit of constification
- adjust a few messages
- remove stray semicolons from inline function definitions
Signed-off-by: default avatarJan Beulich <jbeulich@suse.com>
[v1: Dropped the resource_size fix, altered the description]
[v2: Fixed cleanpatch.pl comments]
Signed-off-by: default avatarKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
parent 04df3552
...@@ -15,7 +15,6 @@ ...@@ -15,7 +15,6 @@
#include "conf_space.h" #include "conf_space.h"
#include "conf_space_quirks.h" #include "conf_space_quirks.h"
#define DRV_NAME "xen-pciback"
static int permissive; static int permissive;
module_param(permissive, bool, 0644); module_param(permissive, bool, 0644);
......
...@@ -15,7 +15,6 @@ struct pci_bar_info { ...@@ -15,7 +15,6 @@ struct pci_bar_info {
int which; int which;
}; };
#define DRV_NAME "xen-pciback"
#define is_enable_cmd(value) ((value)&(PCI_COMMAND_MEMORY|PCI_COMMAND_IO)) #define is_enable_cmd(value) ((value)&(PCI_COMMAND_MEMORY|PCI_COMMAND_IO))
#define is_master_cmd(value) ((value)&PCI_COMMAND_MASTER) #define is_master_cmd(value) ((value)&PCI_COMMAND_MASTER)
...@@ -25,7 +24,7 @@ static int command_read(struct pci_dev *dev, int offset, u16 *value, void *data) ...@@ -25,7 +24,7 @@ static int command_read(struct pci_dev *dev, int offset, u16 *value, void *data)
int ret; int ret;
ret = xen_pcibk_read_config_word(dev, offset, value, data); ret = xen_pcibk_read_config_word(dev, offset, value, data);
if (!atomic_read(&dev->enable_cnt)) if (!pci_is_enabled(dev))
return ret; return ret;
for (i = 0; i < PCI_ROM_RESOURCE; i++) { for (i = 0; i < PCI_ROM_RESOURCE; i++) {
......
...@@ -12,7 +12,6 @@ ...@@ -12,7 +12,6 @@
#include "conf_space_quirks.h" #include "conf_space_quirks.h"
LIST_HEAD(xen_pcibk_quirks); LIST_HEAD(xen_pcibk_quirks);
#define DRV_NAME "xen-pciback"
static inline const struct pci_device_id * static inline const struct pci_device_id *
match_one_device(const struct pci_device_id *id, const struct pci_dev *dev) match_one_device(const struct pci_device_id *id, const struct pci_dev *dev)
{ {
...@@ -36,7 +35,7 @@ static struct xen_pcibk_config_quirk *xen_pcibk_find_quirk(struct pci_dev *dev) ...@@ -36,7 +35,7 @@ static struct xen_pcibk_config_quirk *xen_pcibk_find_quirk(struct pci_dev *dev)
goto out; goto out;
tmp_quirk = NULL; tmp_quirk = NULL;
printk(KERN_DEBUG DRV_NAME printk(KERN_DEBUG DRV_NAME
":quirk didn't match any device xen_pciback knows about\n"); ": quirk didn't match any device known\n");
out: out:
return tmp_quirk; return tmp_quirk;
} }
......
...@@ -176,7 +176,7 @@ static int __xen_pcibk_get_pcifront_dev(struct pci_dev *pcidev, ...@@ -176,7 +176,7 @@ static int __xen_pcibk_get_pcifront_dev(struct pci_dev *pcidev,
return 1; return 1;
} }
struct xen_pcibk_backend xen_pcibk_passthrough_backend = { const struct xen_pcibk_backend xen_pcibk_passthrough_backend = {
.name = "passthrough", .name = "passthrough",
.init = __xen_pcibk_init_devices, .init = __xen_pcibk_init_devices,
.free = __xen_pcibk_release_devices, .free = __xen_pcibk_release_devices,
......
...@@ -21,8 +21,6 @@ ...@@ -21,8 +21,6 @@
#include "conf_space.h" #include "conf_space.h"
#include "conf_space_quirks.h" #include "conf_space_quirks.h"
#define DRV_NAME "xen-pciback"
static char *pci_devs_to_hide; static char *pci_devs_to_hide;
wait_queue_head_t xen_pcibk_aer_wait_queue; wait_queue_head_t xen_pcibk_aer_wait_queue;
/*Add sem for sync AER handling and xen_pcibk remove/reconfigue ops, /*Add sem for sync AER handling and xen_pcibk remove/reconfigue ops,
...@@ -514,12 +512,14 @@ static void kill_domain_by_device(struct pcistub_device *psdev) ...@@ -514,12 +512,14 @@ static void kill_domain_by_device(struct pcistub_device *psdev)
int err; int err;
char nodename[PCI_NODENAME_MAX]; char nodename[PCI_NODENAME_MAX];
if (!psdev) if (!psdev) {
dev_err(&psdev->dev->dev, dev_err(&psdev->dev->dev,
"device is NULL when do AER recovery/kill_domain\n"); "device is NULL when do AER recovery/kill_domain\n");
return;
}
snprintf(nodename, PCI_NODENAME_MAX, "/local/domain/0/backend/pci/%d/0", snprintf(nodename, PCI_NODENAME_MAX, "/local/domain/0/backend/pci/%d/0",
psdev->pdev->xdev->otherend_id); psdev->pdev->xdev->otherend_id);
nodename[strlen(nodename)] = '\0';
again: again:
err = xenbus_transaction_start(&xbt); err = xenbus_transaction_start(&xbt);
...@@ -605,7 +605,7 @@ static pci_ers_result_t common_process(struct pcistub_device *psdev, ...@@ -605,7 +605,7 @@ static pci_ers_result_t common_process(struct pcistub_device *psdev,
if (test_bit(_XEN_PCIF_active, if (test_bit(_XEN_PCIF_active,
(unsigned long *)&psdev->pdev->sh_info->flags)) { (unsigned long *)&psdev->pdev->sh_info->flags)) {
dev_dbg(&psdev->dev->dev, dev_dbg(&psdev->dev->dev,
"schedule pci_conf service in xen_pcibk\n"); "schedule pci_conf service in " DRV_NAME "\n");
xen_pcibk_test_and_schedule_op(psdev->pdev); xen_pcibk_test_and_schedule_op(psdev->pdev);
} }
...@@ -995,8 +995,7 @@ static ssize_t pcistub_slot_add(struct device_driver *drv, const char *buf, ...@@ -995,8 +995,7 @@ static ssize_t pcistub_slot_add(struct device_driver *drv, const char *buf,
err = count; err = count;
return err; return err;
} }
static DRIVER_ATTR(new_slot, S_IWUSR, NULL, pcistub_slot_add);
DRIVER_ATTR(new_slot, S_IWUSR, NULL, pcistub_slot_add);
static ssize_t pcistub_slot_remove(struct device_driver *drv, const char *buf, static ssize_t pcistub_slot_remove(struct device_driver *drv, const char *buf,
size_t count) size_t count)
...@@ -1015,8 +1014,7 @@ static ssize_t pcistub_slot_remove(struct device_driver *drv, const char *buf, ...@@ -1015,8 +1014,7 @@ static ssize_t pcistub_slot_remove(struct device_driver *drv, const char *buf,
err = count; err = count;
return err; return err;
} }
static DRIVER_ATTR(remove_slot, S_IWUSR, NULL, pcistub_slot_remove);
DRIVER_ATTR(remove_slot, S_IWUSR, NULL, pcistub_slot_remove);
static ssize_t pcistub_slot_show(struct device_driver *drv, char *buf) static ssize_t pcistub_slot_show(struct device_driver *drv, char *buf)
{ {
...@@ -1039,8 +1037,7 @@ static ssize_t pcistub_slot_show(struct device_driver *drv, char *buf) ...@@ -1039,8 +1037,7 @@ static ssize_t pcistub_slot_show(struct device_driver *drv, char *buf)
return count; return count;
} }
static DRIVER_ATTR(slots, S_IRUSR, pcistub_slot_show, NULL);
DRIVER_ATTR(slots, S_IRUSR, pcistub_slot_show, NULL);
static ssize_t pcistub_irq_handler_show(struct device_driver *drv, char *buf) static ssize_t pcistub_irq_handler_show(struct device_driver *drv, char *buf)
{ {
...@@ -1069,8 +1066,7 @@ static ssize_t pcistub_irq_handler_show(struct device_driver *drv, char *buf) ...@@ -1069,8 +1066,7 @@ static ssize_t pcistub_irq_handler_show(struct device_driver *drv, char *buf)
spin_unlock_irqrestore(&pcistub_devices_lock, flags); spin_unlock_irqrestore(&pcistub_devices_lock, flags);
return count; return count;
} }
static DRIVER_ATTR(irq_handlers, S_IRUSR, pcistub_irq_handler_show, NULL);
DRIVER_ATTR(irq_handlers, S_IRUSR, pcistub_irq_handler_show, NULL);
static ssize_t pcistub_irq_handler_switch(struct device_driver *drv, static ssize_t pcistub_irq_handler_switch(struct device_driver *drv,
const char *buf, const char *buf,
...@@ -1106,7 +1102,8 @@ static ssize_t pcistub_irq_handler_switch(struct device_driver *drv, ...@@ -1106,7 +1102,8 @@ static ssize_t pcistub_irq_handler_switch(struct device_driver *drv,
err = count; err = count;
return err; return err;
} }
DRIVER_ATTR(irq_handler_state, S_IWUSR, NULL, pcistub_irq_handler_switch); static DRIVER_ATTR(irq_handler_state, S_IWUSR, NULL,
pcistub_irq_handler_switch);
static ssize_t pcistub_quirk_add(struct device_driver *drv, const char *buf, static ssize_t pcistub_quirk_add(struct device_driver *drv, const char *buf,
size_t count) size_t count)
...@@ -1170,8 +1167,8 @@ static ssize_t pcistub_quirk_show(struct device_driver *drv, char *buf) ...@@ -1170,8 +1167,8 @@ static ssize_t pcistub_quirk_show(struct device_driver *drv, char *buf)
return count; return count;
} }
static DRIVER_ATTR(quirks, S_IRUSR | S_IWUSR, pcistub_quirk_show,
DRIVER_ATTR(quirks, S_IRUSR | S_IWUSR, pcistub_quirk_show, pcistub_quirk_add); pcistub_quirk_add);
static ssize_t permissive_add(struct device_driver *drv, const char *buf, static ssize_t permissive_add(struct device_driver *drv, const char *buf,
size_t count) size_t count)
...@@ -1236,8 +1233,8 @@ static ssize_t permissive_show(struct device_driver *drv, char *buf) ...@@ -1236,8 +1233,8 @@ static ssize_t permissive_show(struct device_driver *drv, char *buf)
spin_unlock_irqrestore(&pcistub_devices_lock, flags); spin_unlock_irqrestore(&pcistub_devices_lock, flags);
return count; return count;
} }
static DRIVER_ATTR(permissive, S_IRUSR | S_IWUSR, permissive_show,
DRIVER_ATTR(permissive, S_IRUSR | S_IWUSR, permissive_show, permissive_add); permissive_add);
static void pcistub_exit(void) static void pcistub_exit(void)
{ {
...@@ -1374,3 +1371,4 @@ module_init(xen_pcibk_init); ...@@ -1374,3 +1371,4 @@ module_init(xen_pcibk_init);
module_exit(xen_pcibk_cleanup); module_exit(xen_pcibk_cleanup);
MODULE_LICENSE("Dual BSD/GPL"); MODULE_LICENSE("Dual BSD/GPL");
MODULE_ALIAS("xen-backend:pci");
...@@ -15,6 +15,8 @@ ...@@ -15,6 +15,8 @@
#include <linux/atomic.h> #include <linux/atomic.h>
#include <xen/interface/io/pciif.h> #include <xen/interface/io/pciif.h>
#define DRV_NAME "xen-pciback"
struct pci_dev_entry { struct pci_dev_entry {
struct list_head list; struct list_head list;
struct pci_dev *dev; struct pci_dev *dev;
...@@ -89,7 +91,7 @@ typedef int (*publish_pci_root_cb) (struct xen_pcibk_device *pdev, ...@@ -89,7 +91,7 @@ typedef int (*publish_pci_root_cb) (struct xen_pcibk_device *pdev,
* passthrough - BDFs are exactly like in the host. * passthrough - BDFs are exactly like in the host.
*/ */
struct xen_pcibk_backend { struct xen_pcibk_backend {
char *name; const char *name;
int (*init)(struct xen_pcibk_device *pdev); int (*init)(struct xen_pcibk_device *pdev);
void (*free)(struct xen_pcibk_device *pdev); void (*free)(struct xen_pcibk_device *pdev);
int (*find)(struct pci_dev *pcidev, struct xen_pcibk_device *pdev, int (*find)(struct pci_dev *pcidev, struct xen_pcibk_device *pdev,
...@@ -104,9 +106,9 @@ struct xen_pcibk_backend { ...@@ -104,9 +106,9 @@ struct xen_pcibk_backend {
unsigned int devfn); unsigned int devfn);
}; };
extern struct xen_pcibk_backend xen_pcibk_vpci_backend; extern const struct xen_pcibk_backend xen_pcibk_vpci_backend;
extern struct xen_pcibk_backend xen_pcibk_passthrough_backend; extern const struct xen_pcibk_backend xen_pcibk_passthrough_backend;
extern struct xen_pcibk_backend *xen_pcibk_backend; extern const struct xen_pcibk_backend *xen_pcibk_backend;
static inline int xen_pcibk_add_pci_dev(struct xen_pcibk_device *pdev, static inline int xen_pcibk_add_pci_dev(struct xen_pcibk_device *pdev,
struct pci_dev *dev, struct pci_dev *dev,
...@@ -116,13 +118,14 @@ static inline int xen_pcibk_add_pci_dev(struct xen_pcibk_device *pdev, ...@@ -116,13 +118,14 @@ static inline int xen_pcibk_add_pci_dev(struct xen_pcibk_device *pdev,
if (xen_pcibk_backend && xen_pcibk_backend->add) if (xen_pcibk_backend && xen_pcibk_backend->add)
return xen_pcibk_backend->add(pdev, dev, devid, publish_cb); return xen_pcibk_backend->add(pdev, dev, devid, publish_cb);
return -1; return -1;
}; }
static inline void xen_pcibk_release_pci_dev(struct xen_pcibk_device *pdev, static inline void xen_pcibk_release_pci_dev(struct xen_pcibk_device *pdev,
struct pci_dev *dev) struct pci_dev *dev)
{ {
if (xen_pcibk_backend && xen_pcibk_backend->free) if (xen_pcibk_backend && xen_pcibk_backend->free)
return xen_pcibk_backend->release(pdev, dev); return xen_pcibk_backend->release(pdev, dev);
}; }
static inline struct pci_dev * static inline struct pci_dev *
xen_pcibk_get_pci_dev(struct xen_pcibk_device *pdev, unsigned int domain, xen_pcibk_get_pci_dev(struct xen_pcibk_device *pdev, unsigned int domain,
...@@ -131,7 +134,8 @@ xen_pcibk_get_pci_dev(struct xen_pcibk_device *pdev, unsigned int domain, ...@@ -131,7 +134,8 @@ xen_pcibk_get_pci_dev(struct xen_pcibk_device *pdev, unsigned int domain,
if (xen_pcibk_backend && xen_pcibk_backend->get) if (xen_pcibk_backend && xen_pcibk_backend->get)
return xen_pcibk_backend->get(pdev, domain, bus, devfn); return xen_pcibk_backend->get(pdev, domain, bus, devfn);
return NULL; return NULL;
}; }
/** /**
* Add for domain0 PCIE-AER handling. Get guest domain/bus/devfn in xen_pcibk * Add for domain0 PCIE-AER handling. Get guest domain/bus/devfn in xen_pcibk
* before sending aer request to pcifront, so that guest could identify * before sending aer request to pcifront, so that guest could identify
...@@ -148,25 +152,29 @@ static inline int xen_pcibk_get_pcifront_dev(struct pci_dev *pcidev, ...@@ -148,25 +152,29 @@ static inline int xen_pcibk_get_pcifront_dev(struct pci_dev *pcidev,
return xen_pcibk_backend->find(pcidev, pdev, domain, bus, return xen_pcibk_backend->find(pcidev, pdev, domain, bus,
devfn); devfn);
return -1; return -1;
}; }
static inline int xen_pcibk_init_devices(struct xen_pcibk_device *pdev) static inline int xen_pcibk_init_devices(struct xen_pcibk_device *pdev)
{ {
if (xen_pcibk_backend && xen_pcibk_backend->init) if (xen_pcibk_backend && xen_pcibk_backend->init)
return xen_pcibk_backend->init(pdev); return xen_pcibk_backend->init(pdev);
return -1; return -1;
}; }
static inline int xen_pcibk_publish_pci_roots(struct xen_pcibk_device *pdev, static inline int xen_pcibk_publish_pci_roots(struct xen_pcibk_device *pdev,
publish_pci_root_cb cb) publish_pci_root_cb cb)
{ {
if (xen_pcibk_backend && xen_pcibk_backend->publish) if (xen_pcibk_backend && xen_pcibk_backend->publish)
return xen_pcibk_backend->publish(pdev, cb); return xen_pcibk_backend->publish(pdev, cb);
return -1; return -1;
}; }
static inline void xen_pcibk_release_devices(struct xen_pcibk_device *pdev) static inline void xen_pcibk_release_devices(struct xen_pcibk_device *pdev)
{ {
if (xen_pcibk_backend && xen_pcibk_backend->free) if (xen_pcibk_backend && xen_pcibk_backend->free)
return xen_pcibk_backend->free(pdev); return xen_pcibk_backend->free(pdev);
}; }
/* Handles events from front-end */ /* Handles events from front-end */
irqreturn_t xen_pcibk_handle_event(int irq, void *dev_id); irqreturn_t xen_pcibk_handle_event(int irq, void *dev_id);
void xen_pcibk_do_op(struct work_struct *data); void xen_pcibk_do_op(struct work_struct *data);
......
...@@ -10,7 +10,6 @@ ...@@ -10,7 +10,6 @@
#include <linux/sched.h> #include <linux/sched.h>
#include "pciback.h" #include "pciback.h"
#define DRV_NAME "xen-pciback"
int verbose_request; int verbose_request;
module_param(verbose_request, int, 0644); module_param(verbose_request, int, 0644);
......
...@@ -12,7 +12,6 @@ ...@@ -12,7 +12,6 @@
#include "pciback.h" #include "pciback.h"
#define PCI_SLOT_MAX 32 #define PCI_SLOT_MAX 32
#define DRV_NAME "xen-pciback"
struct vpci_dev_data { struct vpci_dev_data {
/* Access to dev_list must be protected by lock */ /* Access to dev_list must be protected by lock */
...@@ -150,9 +149,9 @@ static void __xen_pcibk_release_pci_dev(struct xen_pcibk_device *pdev, ...@@ -150,9 +149,9 @@ static void __xen_pcibk_release_pci_dev(struct xen_pcibk_device *pdev,
spin_lock_irqsave(&vpci_dev->lock, flags); spin_lock_irqsave(&vpci_dev->lock, flags);
for (slot = 0; slot < PCI_SLOT_MAX; slot++) { for (slot = 0; slot < PCI_SLOT_MAX; slot++) {
struct pci_dev_entry *e, *tmp; struct pci_dev_entry *e;
list_for_each_entry_safe(e, tmp, &vpci_dev->dev_list[slot],
list) { list_for_each_entry(e, &vpci_dev->dev_list[slot], list) {
if (e->dev == dev) { if (e->dev == dev) {
list_del(&e->list); list_del(&e->list);
found_dev = e->dev; found_dev = e->dev;
...@@ -247,7 +246,7 @@ static int __xen_pcibk_get_pcifront_dev(struct pci_dev *pcidev, ...@@ -247,7 +246,7 @@ static int __xen_pcibk_get_pcifront_dev(struct pci_dev *pcidev,
return found; return found;
} }
struct xen_pcibk_backend xen_pcibk_vpci_backend = { const struct xen_pcibk_backend xen_pcibk_vpci_backend = {
.name = "vpci", .name = "vpci",
.init = __xen_pcibk_init_devices, .init = __xen_pcibk_init_devices,
.free = __xen_pcibk_release_devices, .free = __xen_pcibk_release_devices,
......
...@@ -13,7 +13,6 @@ ...@@ -13,7 +13,6 @@
#include <asm/xen/pci.h> #include <asm/xen/pci.h>
#include "pciback.h" #include "pciback.h"
#define DRV_NAME "xen-pciback"
#define INVALID_EVTCHN_IRQ (-1) #define INVALID_EVTCHN_IRQ (-1)
struct workqueue_struct *xen_pcibk_wq; struct workqueue_struct *xen_pcibk_wq;
...@@ -176,7 +175,7 @@ static int xen_pcibk_attach(struct xen_pcibk_device *pdev) ...@@ -176,7 +175,7 @@ static int xen_pcibk_attach(struct xen_pcibk_device *pdev)
if (magic == NULL || strcmp(magic, XEN_PCI_MAGIC) != 0) { if (magic == NULL || strcmp(magic, XEN_PCI_MAGIC) != 0) {
xenbus_dev_fatal(pdev->xdev, -EFAULT, xenbus_dev_fatal(pdev->xdev, -EFAULT,
"version mismatch (%s/%s) with pcifront - " "version mismatch (%s/%s) with pcifront - "
"halting xen_pcibk", "halting " DRV_NAME,
magic, XEN_PCI_MAGIC); magic, XEN_PCI_MAGIC);
goto out; goto out;
} }
...@@ -724,7 +723,7 @@ static struct xenbus_driver xenbus_xen_pcibk_driver = { ...@@ -724,7 +723,7 @@ static struct xenbus_driver xenbus_xen_pcibk_driver = {
.otherend_changed = xen_pcibk_frontend_changed, .otherend_changed = xen_pcibk_frontend_changed,
}; };
struct xen_pcibk_backend *xen_pcibk_backend; const struct xen_pcibk_backend *__read_mostly xen_pcibk_backend;
int __init xen_pcibk_xenbus_register(void) int __init xen_pcibk_xenbus_register(void)
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment