mtip32xx.c (754451342fc5954061ede74b0a8485ec4a4c6eaa) mtip32xx.c (5657a819a8d94426c76be04dcedfad0f64cfff00)
1/*
2 * Driver for the Micron P320 SSD
3 * Copyright (C) 2011 Micron Technology, Inc.
4 *
5 * Portions of this code were derived from works subjected to the
6 * following copyright:
7 * Copyright (C) 2009 Integrated Device Technology, Inc.
8 *

--- 2271 unchanged lines hidden (view full) ---

2280 else if (test_bit(MTIP_DDF_WRITE_PROTECT_BIT, &dd->dd_flag))
2281 size += sprintf(buf, "%s", "write_protect\n");
2282 else
2283 size += sprintf(buf, "%s", "online\n");
2284
2285 return size;
2286}
2287
1/*
2 * Driver for the Micron P320 SSD
3 * Copyright (C) 2011 Micron Technology, Inc.
4 *
5 * Portions of this code were derived from works subjected to the
6 * following copyright:
7 * Copyright (C) 2009 Integrated Device Technology, Inc.
8 *

--- 2271 unchanged lines hidden (view full) ---

2280 else if (test_bit(MTIP_DDF_WRITE_PROTECT_BIT, &dd->dd_flag))
2281 size += sprintf(buf, "%s", "write_protect\n");
2282 else
2283 size += sprintf(buf, "%s", "online\n");
2284
2285 return size;
2286}
2287
2288static DEVICE_ATTR(status, S_IRUGO, mtip_hw_show_status, NULL);
2288static DEVICE_ATTR(status, 0444, mtip_hw_show_status, NULL);
2289
2290/* debugsfs entries */
2291
2292static ssize_t show_device_status(struct device_driver *drv, char *buf)
2293{
2294 int size = 0;
2295 struct driver_data *dd, *tmp;
2296 unsigned long flags;

--- 264 unchanged lines hidden (view full) ---

2561 if (IS_ERR_OR_NULL(dd->dfs_node)) {
2562 dev_warn(&dd->pdev->dev,
2563 "Error creating node %s under debugfs\n",
2564 dd->disk->disk_name);
2565 dd->dfs_node = NULL;
2566 return -1;
2567 }
2568
2289
2290/* debugsfs entries */
2291
2292static ssize_t show_device_status(struct device_driver *drv, char *buf)
2293{
2294 int size = 0;
2295 struct driver_data *dd, *tmp;
2296 unsigned long flags;

--- 264 unchanged lines hidden (view full) ---

2561 if (IS_ERR_OR_NULL(dd->dfs_node)) {
2562 dev_warn(&dd->pdev->dev,
2563 "Error creating node %s under debugfs\n",
2564 dd->disk->disk_name);
2565 dd->dfs_node = NULL;
2566 return -1;
2567 }
2568
2569 debugfs_create_file("flags", S_IRUGO, dd->dfs_node, dd,
2570 &mtip_flags_fops);
2571 debugfs_create_file("registers", S_IRUGO, dd->dfs_node, dd,
2572 &mtip_regs_fops);
2569 debugfs_create_file("flags", 0444, dd->dfs_node, dd, &mtip_flags_fops);
2570 debugfs_create_file("registers", 0444, dd->dfs_node, dd,
2571 &mtip_regs_fops);
2573
2574 return 0;
2575}
2576
2577static void mtip_hw_debugfs_exit(struct driver_data *dd)
2578{
2579 if (dd->dfs_node)
2580 debugfs_remove_recursive(dd->dfs_node);

--- 1276 unchanged lines hidden (view full) ---

3857 /* Set device limits. */
3858 blk_queue_flag_set(QUEUE_FLAG_NONROT, dd->queue);
3859 blk_queue_flag_clear(QUEUE_FLAG_ADD_RANDOM, dd->queue);
3860 blk_queue_max_segments(dd->queue, MTIP_MAX_SG);
3861 blk_queue_physical_block_size(dd->queue, 4096);
3862 blk_queue_max_hw_sectors(dd->queue, 0xffff);
3863 blk_queue_max_segment_size(dd->queue, 0x400000);
3864 blk_queue_io_min(dd->queue, 4096);
2572
2573 return 0;
2574}
2575
2576static void mtip_hw_debugfs_exit(struct driver_data *dd)
2577{
2578 if (dd->dfs_node)
2579 debugfs_remove_recursive(dd->dfs_node);

--- 1276 unchanged lines hidden (view full) ---

3856 /* Set device limits. */
3857 blk_queue_flag_set(QUEUE_FLAG_NONROT, dd->queue);
3858 blk_queue_flag_clear(QUEUE_FLAG_ADD_RANDOM, dd->queue);
3859 blk_queue_max_segments(dd->queue, MTIP_MAX_SG);
3860 blk_queue_physical_block_size(dd->queue, 4096);
3861 blk_queue_max_hw_sectors(dd->queue, 0xffff);
3862 blk_queue_max_segment_size(dd->queue, 0x400000);
3863 blk_queue_io_min(dd->queue, 4096);
3865 blk_queue_bounce_limit(dd->queue, dd->pdev->dma_mask);
3866
3867 /* Signal trim support */
3868 if (dd->trim_supp == true) {
3869 blk_queue_flag_set(QUEUE_FLAG_DISCARD, dd->queue);
3870 dd->queue->limits.discard_granularity = 4096;
3871 blk_queue_max_discard_sectors(dd->queue,
3872 MTIP_MAX_TRIM_ENTRY_LEN * MTIP_MAX_TRIM_ENTRIES);
3873 }

--- 394 unchanged lines hidden (view full) ---

4268
4269 memset(dd->workq_name, 0, 32);
4270 snprintf(dd->workq_name, 31, "mtipq%d", dd->instance);
4271
4272 dd->isr_workq = create_workqueue(dd->workq_name);
4273 if (!dd->isr_workq) {
4274 dev_warn(&pdev->dev, "Can't create wq %d\n", dd->instance);
4275 rv = -ENOMEM;
3864
3865 /* Signal trim support */
3866 if (dd->trim_supp == true) {
3867 blk_queue_flag_set(QUEUE_FLAG_DISCARD, dd->queue);
3868 dd->queue->limits.discard_granularity = 4096;
3869 blk_queue_max_discard_sectors(dd->queue,
3870 MTIP_MAX_TRIM_ENTRY_LEN * MTIP_MAX_TRIM_ENTRIES);
3871 }

--- 394 unchanged lines hidden (view full) ---

4266
4267 memset(dd->workq_name, 0, 32);
4268 snprintf(dd->workq_name, 31, "mtipq%d", dd->instance);
4269
4270 dd->isr_workq = create_workqueue(dd->workq_name);
4271 if (!dd->isr_workq) {
4272 dev_warn(&pdev->dev, "Can't create wq %d\n", dd->instance);
4273 rv = -ENOMEM;
4276 goto block_initialize_err;
4274 goto setmask_err;
4277 }
4278
4279 memset(cpu_list, 0, sizeof(cpu_list));
4280
4281 node_mask = cpumask_of_node(dd->numa_node);
4282 if (!cpumask_empty(node_mask)) {
4283 for_each_cpu(cpu, node_mask)
4284 {

--- 324 unchanged lines hidden (view full) ---

4609
4610 dfs_parent = debugfs_create_dir("rssd", NULL);
4611 if (IS_ERR_OR_NULL(dfs_parent)) {
4612 pr_warn("Error creating debugfs parent\n");
4613 dfs_parent = NULL;
4614 }
4615 if (dfs_parent) {
4616 dfs_device_status = debugfs_create_file("device_status",
4275 }
4276
4277 memset(cpu_list, 0, sizeof(cpu_list));
4278
4279 node_mask = cpumask_of_node(dd->numa_node);
4280 if (!cpumask_empty(node_mask)) {
4281 for_each_cpu(cpu, node_mask)
4282 {

--- 324 unchanged lines hidden (view full) ---

4607
4608 dfs_parent = debugfs_create_dir("rssd", NULL);
4609 if (IS_ERR_OR_NULL(dfs_parent)) {
4610 pr_warn("Error creating debugfs parent\n");
4611 dfs_parent = NULL;
4612 }
4613 if (dfs_parent) {
4614 dfs_device_status = debugfs_create_file("device_status",
4617 S_IRUGO, dfs_parent, NULL,
4615 0444, dfs_parent, NULL,
4618 &mtip_device_status_fops);
4619 if (IS_ERR_OR_NULL(dfs_device_status)) {
4620 pr_err("Error creating device_status node\n");
4621 dfs_device_status = NULL;
4622 }
4623 }
4624
4625 /* Register our PCI operations. */

--- 37 unchanged lines hidden ---
4616 &mtip_device_status_fops);
4617 if (IS_ERR_OR_NULL(dfs_device_status)) {
4618 pr_err("Error creating device_status node\n");
4619 dfs_device_status = NULL;
4620 }
4621 }
4622
4623 /* Register our PCI operations. */

--- 37 unchanged lines hidden ---