if (*dev)
strncpy(ifr.ifr_name, dev, IFNAMSIZ);
- err = ioctl(fd, TUNSETIFF, (void *) &ifr);
+ err = ioctl(fd, TUNSETIFF, (void *)&ifr);
if (err < 0) {
mpsslog("%s %s %d TUNSETIFF failed %s\n",
mic->name, __func__, __LINE__, strerror(errno));
{
if (copy->out_len != sum_iovec_len(copy)) {
mpsslog("%s %s %d BUG copy->out_len 0x%x len 0x%x\n",
- mic->name, __func__, __LINE__,
+ mic->name, __func__, __LINE__,
copy->out_len, sum_iovec_len(copy));
assert(copy->out_len == sum_iovec_len(copy));
}
/* Display an iovec */
static void
disp_iovec(struct mic_info *mic, struct mic_copy_desc *copy,
- const char *s, int line)
+ const char *s, int line)
{
int i;
/* Central API which triggers the copies */
static int
mic_virtio_copy(struct mic_info *mic, int fd,
- struct mic_vring *vr, struct mic_copy_desc *copy)
+ struct mic_vring *vr, struct mic_copy_desc *copy)
{
int ret;
vr0->info = vr0->va +
vring_size(MIC_VRING_ENTRIES, MIC_VIRTIO_RING_ALIGN);
vring_init(&vr0->vr,
- MIC_VRING_ENTRIES, vr0->va, MIC_VIRTIO_RING_ALIGN);
+ MIC_VRING_ENTRIES, vr0->va, MIC_VIRTIO_RING_ALIGN);
mpsslog("%s %s vr0 %p vr0->info %p vr_size 0x%x vring 0x%x ",
__func__, mic->name, vr0->va, vr0->info, vr_size,
vring_size(MIC_VRING_ENTRIES, MIC_VIRTIO_RING_ALIGN));
vr1->info = vr1->va + vring_size(MIC_VRING_ENTRIES,
MIC_VIRTIO_RING_ALIGN);
vring_init(&vr1->vr,
- MIC_VRING_ENTRIES, vr1->va, MIC_VIRTIO_RING_ALIGN);
+ MIC_VRING_ENTRIES, vr1->va, MIC_VIRTIO_RING_ALIGN);
mpsslog("%s %s vr1 %p vr1->info %p vr_size 0x%x vring 0x%x ",
__func__, mic->name, vr1->va, vr1->info, vr_size,
vring_size(MIC_VRING_ENTRIES, MIC_VIRTIO_RING_ALIGN));
net_poll[NET_FD_TUN].events = POLLIN;
if (MAP_FAILED == init_vr(mic, mic->mic_net.virtio_net_fd,
- VIRTIO_ID_NET, &tx_vr, &rx_vr,
+ VIRTIO_ID_NET, &tx_vr, &rx_vr,
virtnet_dev_page.dd.num_vq)) {
mpsslog("%s init_vr failed %s\n",
mic->name, strerror(errno));
}
if (!(desc->status & VIRTIO_CONFIG_S_DRIVER_OK))
wait_for_card_driver(mic, mic->mic_net.virtio_net_fd,
- VIRTIO_ID_NET);
+ VIRTIO_ID_NET);
/*
* Check if there is data to be read from TUN and write to
* virtio net fd if there is.
copy.iov, copy.iovcnt);
if (len > 0) {
struct virtio_net_hdr *hdr
- = (struct virtio_net_hdr *) vnet_hdr[0];
+ = (struct virtio_net_hdr *)vnet_hdr[0];
/* Disable checksums on the card since we are on
a reliable PCIe link */
#endif
spin_for_descriptors(mic, &tx_vr);
txrx_prepare(VIRTIO_ID_NET, 1, &tx_vr, ©,
- len);
+ len);
err = mic_virtio_copy(mic,
mic->mic_net.virtio_net_fd, &tx_vr,
le16toh(rx_vr.vr.avail->idx)) {
copy.iov = iov1;
txrx_prepare(VIRTIO_ID_NET, 0, &rx_vr, ©,
- MAX_NET_PKT_SIZE
+ MAX_NET_PKT_SIZE
+ sizeof(struct virtio_net_hdr));
err = mic_virtio_copy(mic,
verify_out_len(mic, ©);
#ifdef DEBUG
disp_iovec(mic, copy, __func__,
- __LINE__);
+ __LINE__);
mpsslog("%s %s %d ",
mic->name, __func__, __LINE__);
mpsslog("read from net 0x%lx\n",
} else {
#ifdef DEBUG
disp_iovec(mic, ©, __func__,
- __LINE__);
+ __LINE__);
mpsslog("%s %s %d ",
mic->name, __func__,
__LINE__);
err = grantpt(pty_fd);
if (err < 0) {
mpsslog("can't grant access: %s %s\n",
- pts_name, strerror(errno));
+ pts_name, strerror(errno));
goto _close_pty;
}
err = unlockpt(pty_fd);
if (err < 0) {
mpsslog("can't unlock a pseudoterminal: %s %s\n",
- pts_name, strerror(errno));
+ pts_name, strerror(errno));
goto _close_pty;
}
console_poll[MONITOR_FD].fd = pty_fd;
console_poll[VIRTIO_CONSOLE_FD].events = POLLIN;
if (MAP_FAILED == init_vr(mic, mic->mic_console.virtio_console_fd,
- VIRTIO_ID_CONSOLE, &tx_vr, &rx_vr,
+ VIRTIO_ID_CONSOLE, &tx_vr, &rx_vr,
virtcons_dev_page.dd.num_vq)) {
mpsslog("%s init_vr failed %s\n",
mic->name, strerror(errno));
}
if (!(desc->status & VIRTIO_CONFIG_S_DRIVER_OK))
wait_for_card_driver(mic,
- mic->mic_console.virtio_console_fd,
+ mic->mic_console.virtio_console_fd,
VIRTIO_ID_CONSOLE);
if (console_poll[MONITOR_FD].revents & POLLIN) {
#endif
spin_for_descriptors(mic, &tx_vr);
txrx_prepare(VIRTIO_ID_CONSOLE, 1, &tx_vr,
- ©, len);
+ ©, len);
err = mic_virtio_copy(mic,
mic->mic_console.virtio_console_fd,
le16toh(rx_vr.vr.avail->idx)) {
copy.iov = iov1;
txrx_prepare(VIRTIO_ID_CONSOLE, 0, &rx_vr,
- ©, PAGE_SIZE);
+ ©, PAGE_SIZE);
err = mic_virtio_copy(mic,
mic->mic_console.virtio_console_fd,
verify_out_len(mic, ©);
#ifdef DEBUG
disp_iovec(mic, copy, __func__,
- __LINE__);
+ __LINE__);
mpsslog("%s %s %d ",
mic->name, __func__, __LINE__);
mpsslog("read from net 0x%lx\n",
} else {
#ifdef DEBUG
disp_iovec(mic, copy, __func__,
- __LINE__);
+ __LINE__);
mpsslog("%s %s %d ",
mic->name, __func__,
__LINE__);
}
add_virtio_device(mic, &virtblk_dev_page.dd);
if (MAP_FAILED == init_vr(mic, mic->mic_virtblk.virtio_block_fd,
- VIRTIO_ID_BLOCK, vring, NULL, virtblk_dev_page.dd.num_vq)) {
+ VIRTIO_ID_BLOCK, vring, NULL,
+ virtblk_dev_page.dd.num_vq)) {
mpsslog("%s init_vr failed %s\n",
mic->name, strerror(errno));
return false;
{
if (le32toh(desc->len) != sizeof(struct virtio_blk_outhdr)) {
mpsslog("%s() %d: length is not sizeof(virtio_blk_outhd)\n",
- __func__, __LINE__);
+ __func__, __LINE__);
return -EIO;
}
if (!(le16toh(desc->flags) & VRING_DESC_F_NEXT)) {
static void *
virtio_block(void *arg)
{
- struct mic_info *mic = (struct mic_info *) arg;
+ struct mic_info *mic = (struct mic_info *)arg;
int ret;
struct pollfd block_poll;
struct mic_vring vring;
status = 0;
fos = mic->mic_virtblk.backend_addr +
(hdr.sector * SECTOR_SIZE);
- buffer_desc_idx = desc_idx =
- next_desc(desc);
+ buffer_desc_idx = next_desc(desc);
+ desc_idx = buffer_desc_idx;
for (desc = &vring.vr.desc[buffer_desc_idx];
desc->flags & VRING_DESC_F_NEXT;
desc_idx = next_desc(desc),
iovec,
piov - iovec);
if (ret < 0 &&
- status != 0)
+ status != 0)
status = ret;
}
/* write status and update used pointer */
char value[4096];
snprintf(pathname, PATH_MAX - 1, "%s/%s/%s",
- MICSYSFSDIR, mic->name, "state");
+ MICSYSFSDIR, mic->name, "state");
fd = open(pathname, O_RDONLY);
if (fd < 0) {
virtio_console, mic);
if (err)
mpsslog("%s virtcons pthread_create failed %s\n",
- mic->name, strerror(err));
+ mic->name, strerror(err));
err = pthread_create(&mic->mic_net.net_thread, NULL,
virtio_net, mic);
if (err)
mpsslog("%s virtnet pthread_create failed %s\n",
- mic->name, strerror(err));
+ mic->name, strerror(err));
err = pthread_create(&mic->mic_virtblk.block_thread, NULL,
virtio_block, mic);
if (err)
mpsslog("%s virtblk pthread_create failed %s\n",
- mic->name, strerror(err));
+ mic->name, strerror(err));
sigemptyset(&act.sa_mask);
err = sigaction(SIGUSR1, &act, NULL);
if (err)
mpsslog("%s sigaction SIGUSR1 failed %s\n",
- mic->name, strerror(errno));
+ mic->name, strerror(errno));
while (1)
sleep(60);
case -1:
snprintf(filename, PATH_MAX, "%s/%s", MICSYSFSDIR, entry);
else
snprintf(filename, PATH_MAX,
- "%s/%s/%s", MICSYSFSDIR, dir, entry);
+ "%s/%s/%s", MICSYSFSDIR, dir, entry);
fd = open(filename, O_RDONLY);
if (fd < 0) {
snprintf(filename, PATH_MAX, "%s/%s", MICSYSFSDIR, entry);
else
snprintf(filename, PATH_MAX, "%s/%s/%s",
- MICSYSFSDIR, dir, entry);
+ MICSYSFSDIR, dir, entry);
oldvalue = readsysfs(dir, entry);
return (struct mic_irq *)cookie;
err:
return ERR_PTR(rc);
-
}
/**
for (i = 0; i < bits; i++) {
if (test_bit(i, vdev->features))
iowrite8(ioread8(&out_features[i / 8]) | (1 << (i % 8)),
- &out_features[i / 8]);
+ &out_features[i / 8]);
}
}
static void mic_del_vq(struct virtqueue *vq, int n)
{
struct mic_vdev *mvdev = to_micvdev(vq->vdev);
- struct vring *vr = (struct vring *) (vq + 1);
+ struct vring *vr = (struct vring *)(vq + 1);
- free_pages((unsigned long) vr->used,
- get_order(mvdev->used_size[n]));
+ free_pages((unsigned long) vr->used, get_order(mvdev->used_size[n]));
vring_del_virtqueue(vq);
mic_card_unmap(mvdev->mdev, mvdev->vr[n]);
mvdev->vr[n] = NULL;
/* Allocate and reassign used ring now */
mvdev->used_size[index] = PAGE_ALIGN(sizeof(__u16) * 3 +
sizeof(struct vring_used_elem) * config.num);
- used = (void *) __get_free_pages(GFP_KERNEL | __GFP_ZERO,
- get_order(mvdev->used_size[index]));
+ used = (void *)__get_free_pages(GFP_KERNEL | __GFP_ZERO,
+ get_order(mvdev->used_size[index]));
if (!used) {
err = -ENOMEM;
dev_err(mic_dev(mvdev), "%s %d err %d\n",
* vring_new_virtqueue() would ensure that
* (&vq->vring == (struct vring *) (&vq->vq + 1));
*/
- vr = (struct vring *) (vq + 1);
+ vr = (struct vring *)(vq + 1);
vr->used = used;
vq->priv = mvdev;
if (dev) {
if (remove)
iowrite8(MIC_VIRTIO_PARAM_DEV_REMOVE,
- &dc->config_change);
+ &dc->config_change);
put_device(dev);
mic_handle_config_change(d, i, mdrv);
ret = mic_remove_device(d, i, mdrv);
/* new device */
dev_dbg(mdrv->dev, "%s %d Adding new virtio device %p\n",
- __func__, __LINE__, d);
+ __func__, __LINE__, d);
if (!remove)
mic_add_device(d, i, mdrv);
}
/* Ensure that the interrupt is ordered w.r.t previous stores. */
wmb();
mic_mmio_write(mw, MIC_X100_SBOX_SDBIC0_DBREQ_BIT,
- MIC_X100_SBOX_BASE_ADDRESS +
- (MIC_X100_SBOX_SDBIC0 + (4 * doorbell)));
+ MIC_X100_SBOX_BASE_ADDRESS +
+ (MIC_X100_SBOX_SDBIC0 + (4 * doorbell)));
}
/**
unsigned long flags;
seq_printf(s, "MIC %-2d |%-10s| %-14s %-10s\n",
- mdev->id, "SMPT entry", "SW DMA addr", "RefCount");
+ mdev->id, "SMPT entry", "SW DMA addr", "RefCount");
seq_puts(s, "====================================================\n");
if (mdev->smpt) {
spin_lock_irqsave(&smpt_info->smpt_lock, flags);
for (i = 0; i < smpt_info->info.num_reg; i++) {
seq_printf(s, "%9s|%-10d| %-#14llx %-10lld\n",
- " ", i, smpt_info->entry[i].dma_addr,
- smpt_info->entry[i].ref_count);
+ " ", i, smpt_info->entry[i].dma_addr,
+ smpt_info->entry[i].ref_count);
}
spin_unlock_irqrestore(&smpt_info->smpt_lock, flags);
}
int i, j;
seq_printf(s, "Bootparam: magic 0x%x\n",
- bootparam->magic);
+ bootparam->magic);
seq_printf(s, "Bootparam: h2c_shutdown_db %d\n",
- bootparam->h2c_shutdown_db);
+ bootparam->h2c_shutdown_db);
seq_printf(s, "Bootparam: h2c_config_db %d\n",
- bootparam->h2c_config_db);
+ bootparam->h2c_config_db);
seq_printf(s, "Bootparam: c2h_shutdown_db %d\n",
- bootparam->c2h_shutdown_db);
+ bootparam->c2h_shutdown_db);
seq_printf(s, "Bootparam: shutdown_status %d\n",
- bootparam->shutdown_status);
+ bootparam->shutdown_status);
seq_printf(s, "Bootparam: shutdown_card %d\n",
- bootparam->shutdown_card);
+ bootparam->shutdown_card);
for (i = sizeof(*bootparam); i < MIC_DP_SIZE;
i += mic_total_desc_size(d)) {
seq_printf(s, "address 0x%llx ", vqconfig->address);
seq_printf(s, "num %d ", vqconfig->num);
seq_printf(s, "used address 0x%llx\n",
- vqconfig->used_address);
+ vqconfig->used_address);
}
- features = (__u32 *) mic_vq_features(d);
+ features = (__u32 *)mic_vq_features(d);
seq_printf(s, "Features: Host 0x%x ", features[0]);
seq_printf(s, "Guest 0x%x\n", features[1]);
seq_printf(s, "Guest Ack %d ", dc->guest_ack);
seq_printf(s, "Host ack %d\n", dc->host_ack);
seq_printf(s, "Used address updated %d ",
- dc->used_address_updated);
+ dc->used_address_updated);
seq_printf(s, "Vdev 0x%llx\n", dc->vdev);
seq_printf(s, "c2h doorbell %d ", dc->c2h_vdev_db);
seq_printf(s, "h2c doorbell %d\n", dc->h2c_vdev_db);
list_for_each_safe(pos, tmp, &mdev->vdev_list) {
mvdev = list_entry(pos, struct mic_vdev, list);
seq_printf(s, "VDEV type %d state %s in %ld out %ld\n",
- mvdev->virtio_id,
- mic_vdevup(mvdev) ? "UP" : "DOWN",
- mvdev->in_bytes,
- mvdev->out_bytes);
+ mvdev->virtio_id,
+ mic_vdevup(mvdev) ? "UP" : "DOWN",
+ mvdev->in_bytes,
+ mvdev->out_bytes);
for (i = 0; i < MIC_MAX_VRINGS; i++) {
struct vring_desc *desc;
struct vring_avail *avail;
continue;
desc = vrh->vring.desc;
seq_printf(s, "vring i %d avail_idx %d",
- i, mvr->vring.info->avail_idx & (num - 1));
+ i, mvr->vring.info->avail_idx & (num - 1));
seq_printf(s, " vring i %d avail_idx %d\n",
- i, mvr->vring.info->avail_idx);
+ i, mvr->vring.info->avail_idx);
seq_printf(s, "vrh i %d weak_barriers %d",
- i, vrh->weak_barriers);
+ i, vrh->weak_barriers);
seq_printf(s, " last_avail_idx %d last_used_idx %d",
- vrh->last_avail_idx, vrh->last_used_idx);
+ vrh->last_avail_idx, vrh->last_used_idx);
seq_printf(s, " completed %d\n", vrh->completed);
for (j = 0; j < num; j++) {
seq_printf(s, "desc[%d] addr 0x%llx len %d",
- j, desc->addr, desc->len);
+ j, desc->addr, desc->len);
seq_printf(s, " flags 0x%x next %d\n",
- desc->flags,
- desc->next);
+ desc->flags, desc->next);
desc++;
}
avail = vrh->vring.avail;
seq_printf(s, "avail flags 0x%x idx %d\n",
- avail->flags, avail->idx & (num - 1));
+ avail->flags, avail->idx & (num - 1));
seq_printf(s, "avail flags 0x%x idx %d\n",
- avail->flags, avail->idx);
+ avail->flags, avail->idx);
for (j = 0; j < num; j++)
seq_printf(s, "avail ring[%d] %d\n",
- j, avail->ring[j]);
+ j, avail->ring[j]);
used = vrh->vring.used;
seq_printf(s, "used flags 0x%x idx %d\n",
- used->flags, used->idx & (num - 1));
+ used->flags, used->idx & (num - 1));
seq_printf(s, "used flags 0x%x idx %d\n",
- used->flags, used->idx);
+ used->flags, used->idx);
for (j = 0; j < num; j++)
seq_printf(s, "used ring[%d] id %d len %d\n",
- j, used->ring[j].id, used->ring[j].len);
+ j, used->ring[j].id,
+ used->ring[j].len);
}
}
mutex_unlock(&mdev->mic_mutex);
reg = mdev->intr_ops->read_msi_to_src_map(mdev, entry);
seq_printf(s, "%s %-10d %s %-10d MXAR[%d]: %08X\n",
- "IRQ:", vector, "Entry:", entry, i, reg);
+ "IRQ:", vector, "Entry:", entry, i, reg);
seq_printf(s, "%-10s", "offset:");
for (j = (MIC_NUM_OFFSETS - 1); j >= 0; j--)
seq_printf(s, "%-10s", "count:");
for (j = (MIC_NUM_OFFSETS - 1); j >= 0; j--)
seq_printf(s, "%4d ",
- (mdev->irq_info.mic_msi_map[i] & BIT(j)) ?
- 1 : 0);
+ (mdev->irq_info.mic_msi_map[i] &
+ BIT(j)) ? 1 : 0);
seq_puts(s, "\n\n");
}
} else {
}
return 0;
-
}
static int mic_msi_irq_info_debug_open(struct inode *inode, struct file *file)
if (!mdev->dbg_dir)
return;
- debugfs_create_file("log_buf", 0444, mdev->dbg_dir,
- mdev, &log_buf_ops);
+ debugfs_create_file("log_buf", 0444, mdev->dbg_dir, mdev, &log_buf_ops);
- debugfs_create_file("smpt", 0444, mdev->dbg_dir,
- mdev, &smpt_file_ops);
+ debugfs_create_file("smpt", 0444, mdev->dbg_dir, mdev, &smpt_file_ops);
- debugfs_create_file("soft_reset", 0444, mdev->dbg_dir,
- mdev, &soft_reset_ops);
+ debugfs_create_file("soft_reset", 0444, mdev->dbg_dir, mdev,
+ &soft_reset_ops);
- debugfs_create_file("post_code", 0444, mdev->dbg_dir,
- mdev, &post_code_ops);
+ debugfs_create_file("post_code", 0444, mdev->dbg_dir, mdev,
+ &post_code_ops);
- debugfs_create_file("dp", 0444, mdev->dbg_dir,
- mdev, &dp_ops);
+ debugfs_create_file("dp", 0444, mdev->dbg_dir, mdev, &dp_ops);
- debugfs_create_file("vdev_info", 0444, mdev->dbg_dir,
- mdev, &vdev_info_ops);
+ debugfs_create_file("vdev_info", 0444, mdev->dbg_dir, mdev,
+ &vdev_info_ops);
- debugfs_create_file("msi_irq_info", 0444, mdev->dbg_dir,
- mdev, &msi_irq_info_ops);
+ debugfs_create_file("msi_irq_info", 0444, mdev->dbg_dir, mdev,
+ &msi_irq_info_ops);
}
/**
poll_wait(f, &mvdev->waitq, wait);
- if (mic_vdev_inited(mvdev))
+ if (mic_vdev_inited(mvdev)) {
mask = POLLERR;
- else if (mvdev->poll_wake) {
+ } else if (mvdev->poll_wake) {
mvdev->poll_wake = 0;
mask = POLLIN | POLLOUT;
}
static inline int
mic_query_offset(struct mic_vdev *mvdev, unsigned long offset,
- unsigned long *size, unsigned long *pa)
+ unsigned long *size, unsigned long *pa)
{
struct mic_device *mdev = mvdev->mdev;
unsigned long start = MIC_DP_SIZE;
/* Return the interrupt offset from the index. Index is 0 based. */
static u16 mic_map_src_to_offset(struct mic_device *mdev,
- int intr_src, enum mic_intr_type type) {
-
+ int intr_src, enum mic_intr_type type)
+{
if (type >= MIC_NUM_INTR_TYPES)
return MIC_NUM_OFFSETS;
if (intr_src >= mdev->intr_info->intr_len[type])
struct mic_intr_cb *intr_cb;
unsigned long flags;
int rc;
- intr_cb = kmalloc(sizeof(struct mic_intr_cb), GFP_KERNEL);
+ intr_cb = kmalloc(sizeof(*intr_cb), GFP_KERNEL);
if (!intr_cb)
return ERR_PTR(-ENOMEM);
if (intr_cb->cb_id == idx) {
list_del(pos);
ida_simple_remove(&mdev->irq_info.cb_ida,
- intr_cb->cb_id);
+ intr_cb->cb_id);
kfree(intr_cb);
spin_unlock_irqrestore(
&mdev->irq_info.mic_intr_lock, flags);
static int mic_setup_msix(struct mic_device *mdev, struct pci_dev *pdev)
{
int rc, i;
+ int entry_size = sizeof(*mdev->irq_info.msix_entries);
- mdev->irq_info.msix_entries = kmalloc(sizeof(struct msix_entry) *
- MIC_MIN_MSIX, GFP_KERNEL);
+ mdev->irq_info.msix_entries = kmalloc_array(MIC_MIN_MSIX,
+ entry_size, GFP_KERNEL);
if (!mdev->irq_info.msix_entries) {
rc = -ENOMEM;
goto err_nomem1;
{
int i;
- mdev->irq_info.cb_list = kmalloc(sizeof(struct list_head) *
- MIC_NUM_OFFSETS, GFP_KERNEL);
+ mdev->irq_info.cb_list = kmalloc_array(MIC_NUM_OFFSETS,
+ sizeof(*mdev->irq_info.cb_list),
+ GFP_KERNEL);
if (!mdev->irq_info.cb_list)
return -ENOMEM;
if (list_empty(&mdev->irq_info.cb_list[i])) {
spin_unlock_irqrestore(&mdev->irq_info.mic_intr_lock,
- flags);
+ flags);
break;
}
intr_cb = list_entry(pos, struct mic_intr_cb, list);
list_del(pos);
ida_simple_remove(&mdev->irq_info.cb_ida,
- intr_cb->cb_id);
+ intr_cb->cb_id);
kfree(intr_cb);
}
spin_unlock_irqrestore(&mdev->irq_info.mic_intr_lock, flags);
offset = mic_map_src_to_offset(mdev, intr_src, type);
if (offset >= MIC_NUM_OFFSETS) {
dev_err(mdev->sdev->parent,
- "Error mapping index %d to a valid source id.\n",
- intr_src);
+ "Error mapping index %d to a valid source id.\n",
+ intr_src);
rc = -EINVAL;
goto err;
}
msix = mic_get_available_vector(mdev);
if (!msix) {
dev_err(mdev->sdev->parent,
- "No MSIx vectors available for use.\n");
+ "No MSIx vectors available for use.\n");
rc = -ENOSPC;
goto err;
}
offset, func, data);
if (IS_ERR(intr_cb)) {
dev_err(mdev->sdev->parent,
- "No available callback entries for use\n");
+ "No available callback entries for use\n");
rc = PTR_ERR(intr_cb);
goto err;
}
if (mdev->irq_info.num_vectors > 1) {
if (entry >= mdev->irq_info.num_vectors) {
dev_warn(mdev->sdev->parent,
- "entry %d should be < num_irq %d\n",
+ "entry %d should be < num_irq %d\n",
entry, mdev->irq_info.num_vectors);
return;
}
for (i = 0; i < mdev->irq_info.num_vectors; i++) {
if (mdev->irq_info.mic_msi_map[i])
dev_warn(&pdev->dev, "irq %d may still be in use.\n",
- mdev->irq_info.msix_entries[i].vector);
+ mdev->irq_info.msix_entries[i].vector);
}
kfree(mdev->irq_info.mic_msi_map);
kfree(mdev->irq_info.msix_entries);
for (i = spt; i < spt + entries; i++,
addr += smpt_info->info.page_size) {
if (!smpt_info->entry[i].ref_count &&
- (smpt_info->entry[i].dma_addr != addr)) {
+ (smpt_info->entry[i].dma_addr != addr)) {
mdev->smpt_ops->set(mdev, addr, i);
smpt_info->entry[i].dma_addr = addr;
}
if (!mic_is_system_addr(mdev, mic_addr)) {
dev_err(mdev->sdev->parent,
- "mic_addr is invalid. mic_addr = 0x%llx\n", mic_addr);
+ "mic_addr is invalid. mic_addr = 0x%llx\n", mic_addr);
return -EINVAL;
}
spt = mic_sys_addr_to_smpt(mdev, mic_addr);
smpt_info->entry[i].ref_count -= ref[i - spt];
if (smpt_info->entry[i].ref_count < 0)
dev_warn(mdev->sdev->parent,
- "ref count for entry %d is negative\n", i);
+ "ref count for entry %d is negative\n", i);
}
spin_unlock_irqrestore(&smpt_info->smpt_lock, flags);
kfree(ref);
"mic_map failed dma_addr 0x%llx size 0x%lx\n",
dma_addr, size);
pci_unmap_single(pdev, dma_addr,
- size, PCI_DMA_BIDIRECTIONAL);
+ size, PCI_DMA_BIDIRECTIONAL);
}
}
return mic_addr;
smpt_info = mdev->smpt;
mdev->smpt_ops->init(mdev);
- smpt_info->entry = kmalloc(sizeof(struct mic_smpt)
- * smpt_info->info.num_reg, GFP_KERNEL);
+ smpt_info->entry = kmalloc_array(smpt_info->info.num_reg,
+ sizeof(*smpt_info->entry), GFP_KERNEL);
if (!smpt_info->entry) {
err = -ENOMEM;
goto free_smpt;
smpt_info->entry[i].ref_count);
if (smpt_info->entry[i].ref_count)
dev_warn(mdev->sdev->parent,
- "ref count for entry %d is not zero\n", i);
+ "ref count for entry %d is not zero\n", i);
}
kfree(smpt_info->entry);
kfree(smpt_info);
static ssize_t
state_store(struct device *dev, struct device_attribute *attr,
- const char *buf, size_t count)
+ const char *buf, size_t count)
{
int rc = 0;
struct mic_device *mdev = dev_get_drvdata(dev->parent);
static DEVICE_ATTR_RW(state);
static ssize_t shutdown_status_show(struct device *dev,
- struct device_attribute *attr, char *buf)
+ struct device_attribute *attr, char *buf)
{
struct mic_device *mdev = dev_get_drvdata(dev->parent);
static ssize_t
cmdline_store(struct device *dev, struct device_attribute *attr,
- const char *buf, size_t count)
+ const char *buf, size_t count)
{
struct mic_device *mdev = dev_get_drvdata(dev->parent);
static ssize_t
firmware_store(struct device *dev, struct device_attribute *attr,
- const char *buf, size_t count)
+ const char *buf, size_t count)
{
struct mic_device *mdev = dev_get_drvdata(dev->parent);
static ssize_t
ramdisk_store(struct device *dev, struct device_attribute *attr,
- const char *buf, size_t count)
+ const char *buf, size_t count)
{
struct mic_device *mdev = dev_get_drvdata(dev->parent);
static ssize_t
bootmode_store(struct device *dev, struct device_attribute *attr,
- const char *buf, size_t count)
+ const char *buf, size_t count)
{
struct mic_device *mdev = dev_get_drvdata(dev->parent);
static ssize_t
log_buf_addr_show(struct device *dev, struct device_attribute *attr,
- char *buf)
+ char *buf)
{
struct mic_device *mdev = dev_get_drvdata(dev->parent);
static ssize_t
log_buf_addr_store(struct device *dev, struct device_attribute *attr,
- const char *buf, size_t count)
+ const char *buf, size_t count)
{
struct mic_device *mdev = dev_get_drvdata(dev->parent);
int ret;
static ssize_t
log_buf_len_show(struct device *dev, struct device_attribute *attr,
- char *buf)
+ char *buf)
{
struct mic_device *mdev = dev_get_drvdata(dev->parent);
static ssize_t
log_buf_len_store(struct device *dev, struct device_attribute *attr,
- const char *buf, size_t count)
+ const char *buf, size_t count)
{
struct mic_device *mdev = dev_get_drvdata(dev->parent);
int ret;
MIC_VRINGH_READ, &out_len);
if (ret) {
dev_err(mic_dev(mvdev), "%s %d err %d\n",
- __func__, __LINE__, ret);
+ __func__, __LINE__, ret);
break;
}
len -= out_len;
!MIC_VRINGH_READ, &out_len);
if (ret) {
dev_err(mic_dev(mvdev), "%s %d err %d\n",
- __func__, __LINE__, ret);
+ __func__, __LINE__, ret);
break;
}
len -= out_len;
* Update the used ring if a descriptor was available and some data was
* copied in/out and the user asked for a used ring update.
*/
- if (*head != USHRT_MAX && copy->out_len &&
- copy->update_used) {
+ if (*head != USHRT_MAX && copy->out_len && copy->update_used) {
u32 total = 0;
/* Determine the total data consumed */
static irqreturn_t mic_virtio_intr_handler(int irq, void *data)
{
-
struct mic_vdev *mvdev = data;
struct mic_device *mdev = mvdev->mdev;
}
if (copy_from_user(mic_vq_configspace(mvdev->dd),
- argp, mvdev->dd->config_len)) {
+ argp, mvdev->dd->config_len)) {
dev_err(mic_dev(mvdev), "%s %d err %d\n",
__func__, __LINE__, -EFAULT);
ret = -EFAULT;
return -EFAULT;
}
- if (mic_aligned_desc_size(&dd) > MIC_MAX_DESC_BLK_SIZE
- || dd.num_vq > MIC_MAX_VRINGS) {
+ if (mic_aligned_desc_size(&dd) > MIC_MAX_DESC_BLK_SIZE ||
+ dd.num_vq > MIC_MAX_VRINGS) {
dev_err(mic_dev(mvdev), "%s %d err %d\n",
__func__, __LINE__, -EINVAL);
return -EINVAL;
{
struct mic_device_ctrl *dc;
- dc = mvdev->dc = (void *)devpage + mic_aligned_desc_size(devpage);
+ dc = (void *)devpage + mic_aligned_desc_size(devpage);
dc->config_change = 0;
dc->guest_ack = 0;
dc->used_address_updated = 0;
dc->c2h_vdev_db = -1;
dc->h2c_vdev_db = -1;
+ mvdev->dc = dc;
}
int mic_virtio_add_device(struct mic_vdev *mvdev,
sizeof(struct _mic_vring_info));
vr->va = (void *)
__get_free_pages(GFP_KERNEL | __GFP_ZERO,
- get_order(vr_size));
+ get_order(vr_size));
if (!vr->va) {
ret = -ENOMEM;
dev_err(mic_dev(mvdev), "%s %d err %d\n",
vqconfig[i].address = mic_map_single(mdev,
vr->va, vr_size);
if (mic_map_error(vqconfig[i].address)) {
- free_pages((unsigned long)vr->va,
- get_order(vr_size));
+ free_pages((unsigned long)vr->va, get_order(vr_size));
ret = -ENOMEM;
dev_err(mic_dev(mvdev), "%s %d err %d\n",
__func__, __LINE__, ret);
}
vqconfig[i].address = cpu_to_le64(vqconfig[i].address);
- vring_init(&vr->vr, num,
- vr->va, MIC_VIRTIO_RING_ALIGN);
+ vring_init(&vr->vr, num, vr->va, MIC_VIRTIO_RING_ALIGN);
ret = vringh_init_kern(&mvr->vrh,
*(u32 *)mic_vq_features(mvdev->dd), num, false,
vr->vr.desc, vr->vr.avail, vr->vr.used);
__func__, __LINE__, i, vr->va, vr->info, vr_size);
}
- snprintf(irqname, sizeof(irqname),
- "mic%dvirtio%d", mdev->id, mvdev->virtio_id);
+ snprintf(irqname, sizeof(irqname), "mic%dvirtio%d", mdev->id,
+ mvdev->virtio_id);
mvdev->virtio_db = mic_next_db(mdev);
mvdev->virtio_cookie = mic_request_irq(mdev, mic_virtio_intr_handler,
irqname, mvdev, mvdev->virtio_db, MIC_INTR_DB);
for (j = 0; j < i; j++) {
struct mic_vringh *mvr = &mvdev->mvr[j];
mic_unmap_single(mdev, le64_to_cpu(vqconfig[j].address),
- mvr->vring.len);
+ mvr->vring.len);
free_pages((unsigned long)mvr->vring.va,
- get_order(mvr->vring.len));
+ get_order(mvr->vring.len));
}
mutex_unlock(&mdev->mic_mutex);
return ret;
vringh_kiov_cleanup(&mvr->riov);
vringh_kiov_cleanup(&mvr->wiov);
mic_unmap_single(mdev, le64_to_cpu(vqconfig[i].address),
- mvr->vring.len);
+ mvr->vring.len);
free_pages((unsigned long)mvr->vring.va,
- get_order(mvr->vring.len));
+ get_order(mvr->vring.len));
}
list_for_each_safe(pos, tmp, &mdev->vdev_list) {
dev_dbg(mdev->sdev->parent, "Writing 0x%x to scratch pad index %d\n",
val, idx);
mic_mmio_write(&mdev->mmio, val,
- MIC_X100_SBOX_BASE_ADDRESS +
- MIC_X100_SBOX_SPAD0 + idx * 4);
+ MIC_X100_SBOX_BASE_ADDRESS +
+ MIC_X100_SBOX_SPAD0 + idx * 4);
}
/**
{
struct mic_mw *mw = &mdev->mmio;
u64 apic_icr_offset = MIC_X100_SBOX_APICICR0 + doorbell * 8;
- u32 apicicr_low = mic_mmio_read(mw,
- MIC_X100_SBOX_BASE_ADDRESS + apic_icr_offset);
+ u32 apicicr_low = mic_mmio_read(mw, MIC_X100_SBOX_BASE_ADDRESS +
+ apic_icr_offset);
/* for MIC we need to make sure we "hit" the send_icr bit (13) */
apicicr_low = (apicicr_low | (1 << 13));
/* Ensure that the interrupt is ordered w.r.t. previous stores. */
wmb();
mic_mmio_write(mw, apicicr_low,
- MIC_X100_SBOX_BASE_ADDRESS + apic_icr_offset);
+ MIC_X100_SBOX_BASE_ADDRESS + apic_icr_offset);
}
/**
/* Ensure that the interrupt is ordered w.r.t. previous stores. */
wmb();
mic_mmio_write(&mdev->mmio, 0,
- MIC_X100_SBOX_BASE_ADDRESS + rdmasr_offset);
+ MIC_X100_SBOX_BASE_ADDRESS + rdmasr_offset);
}
/**
*/
static void mic_x100_hw_intr_init(struct mic_device *mdev)
{
- mdev->intr_info = (struct mic_intr_info *) mic_x100_intr_init;
+ mdev->intr_info = (struct mic_intr_info *)mic_x100_intr_init;
}
/**
*/
static void
mic_x100_program_msi_to_src_map(struct mic_device *mdev,
- int idx, int offset, bool set)
+ int idx, int offset, bool set)
{
unsigned long reg;
struct mic_mw *mw = &mdev->mmio;
apicicr_low = (vector | (1 << 13));
mic_mmio_write(mw, mic_x100_get_apic_id(mdev),
- MIC_X100_SBOX_BASE_ADDRESS + apic_icr_offset + 4);
+ MIC_X100_SBOX_BASE_ADDRESS + apic_icr_offset + 4);
/* Ensure that the interrupt is ordered w.r.t. previous stores. */
wmb();
mic_mmio_write(mw, apicicr_low,
- MIC_X100_SBOX_BASE_ADDRESS + apic_icr_offset);
+ MIC_X100_SBOX_BASE_ADDRESS + apic_icr_offset);
}
/**
len += snprintf(buf, CMDLINE_SIZE - len,
" mem=%dM", boot_mem);
if (mdev->cmdline)
- snprintf(buf + len, CMDLINE_SIZE - len,
- " %s", mdev->cmdline);
+ snprintf(buf + len, CMDLINE_SIZE - len, " %s", mdev->cmdline);
memcpy_toio(cmd_line_va, buf, strlen(buf) + 1);
kfree(buf);
return 0;
* Typically the bootaddr for card OS is 64M
* so copy over the ramdisk @ 128M.
*/
- memcpy_toio(mdev->aper.va + (mdev->bootaddr << 1),
- fw->data, fw->size);
+ memcpy_toio(mdev->aper.va + (mdev->bootaddr << 1), fw->data, fw->size);
iowrite32(cpu_to_le32(mdev->bootaddr << 1), &bp->hdr.ramdisk_image);
iowrite32(cpu_to_le32(fw->size), &bp->hdr.ramdisk_size);
release_firmware(fw);
if (mdev->ramdisk)
rc = mic_x100_load_ramdisk(mdev);
error:
- dev_dbg(mdev->sdev->parent, "%s %d rc %d\n",
- __func__, __LINE__, rc);
+ dev_dbg(mdev->sdev->parent, "%s %d rc %d\n", __func__, __LINE__, rc);
done:
return rc;
}
uint32_t smpt_reg_val = BUILD_SMPT(SNOOP_ON,
dma_addr >> mdev->smpt->info.page_shift);
mic_mmio_write(&mdev->mmio, smpt_reg_val,
- MIC_X100_SBOX_BASE_ADDRESS +
- MIC_X100_SBOX_SMPT00 + (4 * index));
+ MIC_X100_SBOX_BASE_ADDRESS +
+ MIC_X100_SBOX_SMPT00 + (4 * index));
}
/**