mirror of
https://github.com/fail0verflow/switch-linux.git
synced 2025-05-04 02:34:21 -04:00
blk-mq: don't dump CPU -> hw queue map on driver load
Now that we are out of initial debug/bringup mode, remove the verbose dump of the mapping table. Provide the mapping table in sysfs, under the hardware queue directory, in the cpu_list file. Signed-off-by: Jens Axboe <axboe@fb.com>
This commit is contained in:
parent
5d12f905cc
commit
676141e48a
4 changed files with 43 additions and 10 deletions
|
@ -9,15 +9,6 @@
|
||||||
#include "blk.h"
|
#include "blk.h"
|
||||||
#include "blk-mq.h"
|
#include "blk-mq.h"
|
||||||
|
|
||||||
static void show_map(unsigned int *map, unsigned int nr)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
pr_info("blk-mq: CPU -> queue map\n");
|
|
||||||
for_each_online_cpu(i)
|
|
||||||
pr_info(" CPU%2u -> Queue %u\n", i, map[i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int cpu_to_queue_index(unsigned int nr_cpus, unsigned int nr_queues,
|
static int cpu_to_queue_index(unsigned int nr_cpus, unsigned int nr_queues,
|
||||||
const int cpu)
|
const int cpu)
|
||||||
{
|
{
|
||||||
|
@ -85,7 +76,6 @@ int blk_mq_update_queue_map(unsigned int *map, unsigned int nr_queues)
|
||||||
map[i] = map[first_sibling];
|
map[i] = map[first_sibling];
|
||||||
}
|
}
|
||||||
|
|
||||||
show_map(map, nr_cpus);
|
|
||||||
free_cpumask_var(cpus);
|
free_cpumask_var(cpus);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -244,6 +244,32 @@ static ssize_t blk_mq_hw_sysfs_tags_show(struct blk_mq_hw_ctx *hctx, char *page)
|
||||||
return blk_mq_tag_sysfs_show(hctx->tags, page);
|
return blk_mq_tag_sysfs_show(hctx->tags, page);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static ssize_t blk_mq_hw_sysfs_cpus_show(struct blk_mq_hw_ctx *hctx, char *page)
|
||||||
|
{
|
||||||
|
unsigned int i, queue_num, first = 1;
|
||||||
|
ssize_t ret = 0;
|
||||||
|
|
||||||
|
blk_mq_disable_hotplug();
|
||||||
|
|
||||||
|
for_each_online_cpu(i) {
|
||||||
|
queue_num = hctx->queue->mq_map[i];
|
||||||
|
if (queue_num != hctx->queue_num)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (first)
|
||||||
|
ret += sprintf(ret + page, "%u", i);
|
||||||
|
else
|
||||||
|
ret += sprintf(ret + page, ", %u", i);
|
||||||
|
|
||||||
|
first = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
blk_mq_enable_hotplug();
|
||||||
|
|
||||||
|
ret += sprintf(ret + page, "\n");
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
static struct blk_mq_ctx_sysfs_entry blk_mq_sysfs_dispatched = {
|
static struct blk_mq_ctx_sysfs_entry blk_mq_sysfs_dispatched = {
|
||||||
.attr = {.name = "dispatched", .mode = S_IRUGO },
|
.attr = {.name = "dispatched", .mode = S_IRUGO },
|
||||||
.show = blk_mq_sysfs_dispatched_show,
|
.show = blk_mq_sysfs_dispatched_show,
|
||||||
|
@ -294,6 +320,10 @@ static struct blk_mq_hw_ctx_sysfs_entry blk_mq_hw_sysfs_tags = {
|
||||||
.attr = {.name = "tags", .mode = S_IRUGO },
|
.attr = {.name = "tags", .mode = S_IRUGO },
|
||||||
.show = blk_mq_hw_sysfs_tags_show,
|
.show = blk_mq_hw_sysfs_tags_show,
|
||||||
};
|
};
|
||||||
|
static struct blk_mq_hw_ctx_sysfs_entry blk_mq_hw_sysfs_cpus = {
|
||||||
|
.attr = {.name = "cpu_list", .mode = S_IRUGO },
|
||||||
|
.show = blk_mq_hw_sysfs_cpus_show,
|
||||||
|
};
|
||||||
|
|
||||||
static struct attribute *default_hw_ctx_attrs[] = {
|
static struct attribute *default_hw_ctx_attrs[] = {
|
||||||
&blk_mq_hw_sysfs_queued.attr,
|
&blk_mq_hw_sysfs_queued.attr,
|
||||||
|
@ -302,6 +332,7 @@ static struct attribute *default_hw_ctx_attrs[] = {
|
||||||
&blk_mq_hw_sysfs_pending.attr,
|
&blk_mq_hw_sysfs_pending.attr,
|
||||||
&blk_mq_hw_sysfs_ipi.attr,
|
&blk_mq_hw_sysfs_ipi.attr,
|
||||||
&blk_mq_hw_sysfs_tags.attr,
|
&blk_mq_hw_sysfs_tags.attr,
|
||||||
|
&blk_mq_hw_sysfs_cpus.attr,
|
||||||
NULL,
|
NULL,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1532,6 +1532,16 @@ static int blk_mq_queue_reinit_notify(struct notifier_block *nb,
|
||||||
return NOTIFY_OK;
|
return NOTIFY_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void blk_mq_disable_hotplug(void)
|
||||||
|
{
|
||||||
|
mutex_lock(&all_q_mutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
void blk_mq_enable_hotplug(void)
|
||||||
|
{
|
||||||
|
mutex_unlock(&all_q_mutex);
|
||||||
|
}
|
||||||
|
|
||||||
static int __init blk_mq_init(void)
|
static int __init blk_mq_init(void)
|
||||||
{
|
{
|
||||||
blk_mq_cpu_init();
|
blk_mq_cpu_init();
|
||||||
|
|
|
@ -40,6 +40,8 @@ void blk_mq_init_cpu_notifier(struct blk_mq_cpu_notifier *notifier,
|
||||||
void blk_mq_register_cpu_notifier(struct blk_mq_cpu_notifier *notifier);
|
void blk_mq_register_cpu_notifier(struct blk_mq_cpu_notifier *notifier);
|
||||||
void blk_mq_unregister_cpu_notifier(struct blk_mq_cpu_notifier *notifier);
|
void blk_mq_unregister_cpu_notifier(struct blk_mq_cpu_notifier *notifier);
|
||||||
void blk_mq_cpu_init(void);
|
void blk_mq_cpu_init(void);
|
||||||
|
void blk_mq_enable_hotplug(void);
|
||||||
|
void blk_mq_disable_hotplug(void);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* CPU -> queue mappings
|
* CPU -> queue mappings
|
||||||
|
|
Loading…
Add table
Reference in a new issue