IB/rdmavt: Add device specific info prints

Follow hfi1's example for printing information about the driver and
incorporate into rdmavt. This requires two new functions to be
provided by the driver, one to get_card_name and one to get_pci_dev.

Reviewed-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
Reviewed-by: Ira Weiny <ira.weiny@intel.com>
Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:
Dennis Dalessandro 2016-01-06 10:02:59 -08:00 committed by Doug Ledford
parent aec5778775
commit b534875d5a
3 changed files with 41 additions and 3 deletions

View File

@ -213,9 +213,18 @@ static int rvt_get_port_immutable(struct ib_device *ibdev, u8 port_num,
int rvt_register_device(struct rvt_dev_info *rdi)
{
/* Validate that drivers have provided the right information */
if (!rdi)
return -EINVAL;
if ((!rdi->driver_f.port_callback) ||
(!rdi->driver_f.get_card_name) ||
(!rdi->driver_f.get_pci_dev)) {
return -EINVAL;
}
/* Once we get past here we can use the rvt_pr macros */
/* Dev Ops */
CHECK_DRIVER_OVERRIDE(rdi, query_device);
CHECK_DRIVER_OVERRIDE(rdi, modify_device);
@ -280,9 +289,7 @@ int rvt_register_device(struct rvt_dev_info *rdi)
spin_lock_init(&rdi->n_pds_lock);
rdi->n_pds_allocated = 0;
/* Validate that drivers have provided the right functions */
if (!rdi->driver_f.port_callback)
return -EINVAL;
rvt_pr_info(rdi, "Registration with rdmavt done.\n");
/* We are now good to announce we exist */
return ib_register_device(&rdi->ibdev, rdi->driver_f.port_callback);

View File

@ -49,6 +49,7 @@
*/
#include <rdma/rdma_vt.h>
#include <linux/pci.h>
#include "dma.h"
#include "pd.h"
#include "qp.h"
@ -59,4 +60,31 @@
#include "mmap.h"
#include "cq.h"
#define rvt_pr_info(rdi, fmt, ...) \
__rvt_pr_info(rdi->driver_f.get_pci_dev(rdi), \
rdi->driver_f.get_card_name(rdi), \
fmt, \
##__VA_ARGS__)
#define rvt_pr_warn(rdi, fmt, ...) \
__rvt_pr_warn(rdi->driver_f.get_pci_dev(rdi), \
rdi->driver_f.get_card_name(rdi), \
fmt, \
##__VA_ARGS__)
#define rvt_pr_err(rdi, fmt, ...) \
__rvt_pr_err(rdi->driver_f.get_pci_dev(rdi), \
rdi->driver_f.get_card_name(rdi), \
fmt, \
##__VA_ARGS__)
#define __rvt_pr_info(pdev, name, fmt, ...) \
dev_info(&pdev->dev, "%s: " fmt, name, ##__VA_ARGS__)
#define __rvt_pr_warn(pdev, name, fmt, ...) \
dev_warn(&pdev->dev, "%s: " fmt, name, ##__VA_ARGS__)
#define __rvt_pr_err(pdev, name, fmt, ...) \
dev_err(&pdev->dev, "%s: " fmt, name, ##__VA_ARGS__)
#endif /* DEF_RDMAVT_H */

View File

@ -386,6 +386,7 @@ struct rvt_driver_params {
/*
* Functions that drivers are required to support
*/
struct rvt_dev_info;
struct rvt_driver_provided {
/*
* The work to create port files in /sys/class Infiniband is different
@ -394,6 +395,8 @@ struct rvt_driver_provided {
* this.
*/
int (*port_callback)(struct ib_device *, u8, struct kobject *);
const char * (*get_card_name)(struct rvt_dev_info *rdi);
struct pci_dev * (*get_pci_dev)(struct rvt_dev_info *rdi);
};
/* Protection domain */