};
 
 static void mlx5_ib_event(struct mlx5_core_dev *dev, void *context,
-                         enum mlx5_dev_event event, void *data)
+                         enum mlx5_dev_event event, unsigned long param)
 {
        struct mlx5_ib_dev *ibdev = (struct mlx5_ib_dev *)context;
        struct ib_event ibev;
 
        case MLX5_DEV_EVENT_PORT_UP:
                ibev.event = IB_EVENT_PORT_ACTIVE;
-               port = *(u8 *)data;
+               port = (u8)param;
                break;
 
        case MLX5_DEV_EVENT_PORT_DOWN:
                ibev.event = IB_EVENT_PORT_ERR;
-               port = *(u8 *)data;
+               port = (u8)param;
                break;
 
        case MLX5_DEV_EVENT_PORT_INITIALIZED:
 
        case MLX5_DEV_EVENT_LID_CHANGE:
                ibev.event = IB_EVENT_LID_CHANGE;
-               port = *(u8 *)data;
+               port = (u8)param;
                break;
 
        case MLX5_DEV_EVENT_PKEY_CHANGE:
                ibev.event = IB_EVENT_PKEY_CHANGE;
-               port = *(u8 *)data;
+               port = (u8)param;
                break;
 
        case MLX5_DEV_EVENT_GUID_CHANGE:
                ibev.event = IB_EVENT_GID_CHANGE;
-               port = *(u8 *)data;
+               port = (u8)param;
                break;
 
        case MLX5_DEV_EVENT_CLIENT_REREG:
                ibev.event = IB_EVENT_CLIENT_REREGISTER;
-               port = *(u8 *)data;
+               port = (u8)param;
                break;
        }
 
 
                        case MLX5_PORT_CHANGE_SUBTYPE_CLIENT_REREG:
                        case MLX5_PORT_CHANGE_SUBTYPE_INITIALIZED:
                                if (dev->event)
-                                       dev->event(dev, port_subtype_event(eqe->sub_type), &port);
+                                       dev->event(dev, port_subtype_event(eqe->sub_type),
+                                                  (unsigned long)port);
                                break;
                        default:
                                mlx5_core_warn(dev, "Port event with unrecognized subtype: port %d, sub_type %d\n",
 
 EXPORT_SYMBOL(mlx5_unregister_interface);
 
 static void mlx5_core_event(struct mlx5_core_dev *dev, enum mlx5_dev_event event,
-                           void *data)
+                           unsigned long param)
 {
        struct mlx5_priv *priv = &dev->priv;
        struct mlx5_device_context *dev_ctx;
 
        list_for_each_entry(dev_ctx, &priv->ctx_list, list)
                if (dev_ctx->intf->event)
-                       dev_ctx->intf->event(dev, dev_ctx->context, event, data);
+                       dev_ctx->intf->event(dev, dev_ctx->context, event, param);
 
        spin_unlock_irqrestore(&priv->ctx_lock, flags);
 }
 
        struct mlx5_init_seg __iomem *iseg;
        void                    (*event) (struct mlx5_core_dev *dev,
                                          enum mlx5_dev_event event,
-                                         void *data);
+                                         unsigned long param);
        struct mlx5_priv        priv;
        struct mlx5_profile     *profile;
        atomic_t                num_qps;
        void *                  (*add)(struct mlx5_core_dev *dev);
        void                    (*remove)(struct mlx5_core_dev *dev, void *context);
        void                    (*event)(struct mlx5_core_dev *dev, void *context,
-                                        enum mlx5_dev_event event, void *data);
+                                        enum mlx5_dev_event event, unsigned long param);
        struct list_head        list;
 };