建日是什么意思| 肚脐下四指是什么位置| 屁股长痘痘是什么原因| 福禄寿什么意思| 尿酸高吃什么食物好| 赛博朋克什么意思| 赛脸什么意思| 敏字五行属什么| 莲字五行属什么| 口臭口苦吃什么药最好| 小金人车标是什么车| 什么原因导致性功能减退| 信阳毛尖属于什么茶| 成都有什么特产| 中二病是什么| 浮躁的意思是什么| 蛇怕什么东西| 南非用什么货币| 神经痛什么原因引起的| 什么样的女人性欲强| 为什么天天做梦| 小学什么时候期末考试| 壁细胞主要分泌什么| 缢死是什么意思| BLD医学上是什么意思| 常放屁是什么原因| 柠檬水喝多了有什么坏处| 荨麻疹打什么针| 瑕疵什么意思| 凌晨的凌是什么意思| 甲状腺炎是什么引起的| 跑龙套是什么意思| 西湖醋鱼是什么鱼| 猕猴桃什么时候上市| 世家是什么意思| 小肚子突出是什么原因| 农历七月初五是什么星座| 学字五行属什么| 孩子长个子吃什么有利于长高| 阴囊潮湿是什么原因造成的| jc是什么牌子| 强直性脊柱炎看什么科| 胰腺炎是什么病严重吗| 纳豆是什么味道| 心跳慢吃什么药| 警告处分有什么影响| 手经常抽筋是什么原因| 火靠念什么| 1938年中国发生了什么| 肛门瘙痒是什么病| titus手表属于什么档次| 小孩抽多动症吃什么药最好| 怀孕吃辣对胎儿有什么影响| 手机的英文是什么| 议员在中国相当于什么| 缘起缘灭是什么意思| 小乌龟吃什么| 孕酮低是什么原因| 什么人不适合做业务员| 88年属什么的生肖| 三点是什么时辰| 丝袜是什么材质| 男性更年期吃什么药| 视野是什么意思| 心电图st段改变什么意思| 省政协主席是什么级别| 可以是什么意思| waist是什么意思| 来月经腰疼是什么原因| 性早熟有什么症状| 人越来越瘦是什么原因| George是什么意思| 胃寒湿气重吃什么药效果最好| 纪梵希为什么不娶赫本| 心率不齐是什么原因| btc是什么货币| 14年婚姻是什么婚| 94年是什么命| 小孩睡觉张开嘴巴是什么原因| 肺部结节吃什么药| 土字旁的字与什么有关| 一天老是放屁是什么原因| UFS是什么意思| 腹部b超挂什么科| 什么嫩芽| 月经太多是什么原因| 他达拉非是什么药| 观音菩萨代表什么生肖| 做绝育手术对女人有什么影响| 老打嗝是什么病的前兆| 月经期喝什么茶好| ccd是什么意思| 塞翁失马是什么生肖| 不对劲是什么意思| 爱是什么| 瘢痕是什么意思| 什么的表演| 黄体什么意思| 知趣是什么意思| hibor是什么意思| 周六左眼跳是什么预兆| 最大的淡水湖是什么湖| 年少有为什么意思| 胃窦病变意味着什么| 蟋蟀用什么唱歌| 叶黄素有什么功效| 主胰管不扩张是什么意思| 肺结核挂什么科| hpv检查什么项目| 卡替治疗是什么意思| 肌酐高有什么症状表现| 做梦梦见掉头发是什么意思| 五险一金什么时候开始交| cot等于什么| 纵隔肿瘤是什么病| 肾b超能检查出什么| 金碧辉煌是什么生肖| hedgren是什么品牌| 健脾去湿吃什么药| 开网店卖什么好| blazer是什么意思啊| 清肺吃什么好| 喝酒脸红是什么原因| 血滴子是什么意思| 短阵房速是什么意思| 册那什么意思| 单脱是什么意思| 香米是什么米| 吃什么长个子| eso是什么意思| 起酥油是什么做的| 血压压差小是什么原因| 10月1日什么星座| 西席是什么意思| 牛跟什么生肖相冲| 蓬灰是什么东西| 愚蠢是什么意思| 工作室是干什么的| pcr检测是什么| 什么样的季节| 万马奔腾是什么意思| 双子座和什么座最配对| 1968年什么时候退休| 治标不治本是什么意思| 7月17什么星座| 房性期前收缩是什么意思| 看淡一切对什么都没兴趣| 窦性心律过速吃什么药| ppd是什么意思| 肺火旺吃什么药最有效| 夜里咳嗽是什么原因| 什么是矿物质| 双子座女和什么星座最配| 蒸鱼豉油可以用什么代替| 老打嗝是什么原因| 舌头挂什么科| 7.9是什么星座| 枸杞与菊花一起泡水喝有什么功效| 人乳头瘤病毒16型阳性是什么意思| 哮喘挂什么科| 职业测试你适合什么工作| 滴虫性阴道炎用什么药好| 网球肘用什么药最有效| 贝壳吃什么食物| 什么是庞氏骗局| 脚磨破了涂什么药| 孩子手脚冰凉是什么原因| 小暑节气吃什么| 沧州有什么好玩的地方| 亥时属什么生肖| 月经总推迟是什么原因| 步步生花是什么意思| 破釜沉舟的釜是什么意思| 尿很臭是什么原因| 外围是什么| 肚子咕噜咕噜响是什么原因| 疏离感是什么意思| 发烧看什么科| 什么话是世界通用的| 燕窝是补什么的| 小米不能和什么一起吃| 子宫内膜炎用什么药效果好| 飞五行属什么| 女人梦见龙是什么征兆| 迎春花什么时候开| 二十年是什么婚| 没有淀粉可以用什么代替| 婴儿老是放屁是什么原因| 处女座属于什么星象| 左肺下叶纤维灶是什么意思| 迟缓是什么意思| 多囊是什么意思| 动脉硬化吃什么可以软化血管| 顺子是什么意思| 偶发室性早搏什么意思| 蓝莓吃了有什么好处| 术后改变是什么意思| 嘴咸是什么原因| 县公安局局长是什么级别| 一个火一个宣念什么| 星星为什么会眨眼| 重字五行属什么| 七月四号是什么星座| 尿红色是什么原因| 年岁是什么意思| 秦始皇陵为什么不敢挖| 打喷嚏漏尿是什么原因| 菊花泡水喝有什么功效| 为什么心细的男人危险| 什么油炒菜好吃又健康| 梦见别人给钱是什么意思| 为什么会有鼻炎| 水杉是什么植物| 伟岸一般形容什么人| 什么是精索静脉曲张| 右耳朵耳鸣是什么原因| human是什么意思| 女人的胸长什么样| 梦见好多猫是什么预兆| 山野是什么意思| 自己买什么药可以打胎| 嘴唇上长痘是什么原因| 落地生根是什么生肖| 211什么意思| 白癜风是什么| 出入是什么意思| 脖子后面正中间有痣代表什么| 为什么硬一会就软了| 扎巴依是什么意思| 什么的水| gap什么意思| 左后背疼什么原因| 做爱什么姿势最舒服| 1976年是什么命| 56个民族都有什么族| 什么血型可以生出o型血| 猫咪有泪痕是什么原因| 心脏病吃什么水果最好| 肛瘘是什么原因引起的| 瘦西湖为什么叫瘦西湖| 小孩反复高烧是什么原因| 做酸菜鱼用什么鱼| 女性睾酮低意味着什么| 微醺是什么状态| petct是什么| 莱昂纳多为什么叫小李子| 葡萄糖酸钙锌口服溶液什么时候喝| 水肿吃什么消肿最快| 阳痿早泄挂什么科| npc什么意思| coach什么意思| edt是什么时间| 项链突然断了预示什么| co是什么气体| 牙痛挂什么科| 巧克力是什么材料做的| 不知餍足什么意思| 梦见大象是什么预兆| 为什么来大姨妈会拉肚子| 月经期吃什么水果好| 闰月鞋买什么颜色| 失聪什么意思| 怕吹空调是什么原因| 坐立不安是什么意思| 百度
kgsl: convert some workqueues to use kthreads

adreno_dispatch_work and _kgsl_event_worker are both low-latency
low-runtime functions that are in the critical path of GPU
rendering. Moving them out of workqueues and into a dedicated FIFO
kthread avoids significant jitter.

bug 30342017

Change-Id: I5feb4e829064d422b4b9af2acb449afd1f981899
diff --git a/drivers/gpu/msm/adreno_dispatch.c b/drivers/gpu/msm/adreno_dispatch.c
index 5d3b2b8..67fd2f2 100644
--- a/drivers/gpu/msm/adreno_dispatch.c
+++ b/drivers/gpu/msm/adreno_dispatch.c
@@ -2096,7 +2096,7 @@
 	mutex_unlock(&device->mutex);
 }
 
-static void adreno_dispatcher_work(struct work_struct *work)
+static void adreno_dispatcher_work(struct kthread_work *work)
 {
 	struct adreno_dispatcher *dispatcher =
 		container_of(work, struct adreno_dispatcher, work);
@@ -2156,7 +2156,7 @@
 	struct adreno_device *adreno_dev = ADRENO_DEVICE(device);
 	struct adreno_dispatcher *dispatcher = &adreno_dev->dispatcher;
 
-	kgsl_schedule_work(&dispatcher->work);
+	queue_kthread_work(&kgsl_driver.worker, &dispatcher->work);
 }
 
 /**
@@ -2438,7 +2438,7 @@
 	setup_timer(&dispatcher->fault_timer, adreno_dispatcher_fault_timer,
 		(unsigned long) adreno_dev);
 
-	INIT_WORK(&dispatcher->work, adreno_dispatcher_work);
+	init_kthread_work(&dispatcher->work, adreno_dispatcher_work);
 
 	init_completion(&dispatcher->idle_gate);
 	complete_all(&dispatcher->idle_gate);
diff --git a/drivers/gpu/msm/adreno_dispatch.h b/drivers/gpu/msm/adreno_dispatch.h
index 699c3e4..fee4317 100644
--- a/drivers/gpu/msm/adreno_dispatch.h
+++ b/drivers/gpu/msm/adreno_dispatch.h
@@ -91,7 +91,7 @@
 	atomic_t fault;
 	struct plist_head pending;
 	spinlock_t plist_lock;
-	struct work_struct work;
+	struct kthread_work work;
 	struct kobject kobj;
 	struct completion idle_gate;
 	unsigned int disp_preempt_fair_sched;
diff --git a/drivers/gpu/msm/kgsl.c b/drivers/gpu/msm/kgsl.c
index 92ec8083..25f1f9d 100644
--- a/drivers/gpu/msm/kgsl.c
+++ b/drivers/gpu/msm/kgsl.c
@@ -4037,6 +4037,8 @@
 static int __init kgsl_core_init(void)
 {
 	int result = 0;
+	struct sched_param param = { .sched_priority = 2 };
+
 	/* alloc major and minor device numbers */
 	result = alloc_chrdev_region(&kgsl_driver.major, 0, KGSL_DEVICE_MAX,
 		"kgsl");
@@ -4101,6 +4103,18 @@
 	kgsl_driver.mem_workqueue = alloc_workqueue("kgsl-mementry",
 		WQ_UNBOUND | WQ_MEM_RECLAIM, 0);
 
+	init_kthread_worker(&kgsl_driver.worker);
+
+	kgsl_driver.worker_thread = kthread_run(kthread_worker_fn,
+		&kgsl_driver.worker, "kgsl_worker_thread");
+
+	if (IS_ERR(kgsl_driver.worker_thread)) {
+		pr_err("unable to start kgsl thread\n");
+		goto err;
+	}
+
+	sched_setscheduler(kgsl_driver.worker_thread, SCHED_FIFO, &param);
+
 	kgsl_events_init();
 
 	result = kgsl_cmdbatch_init();
diff --git a/drivers/gpu/msm/kgsl.h b/drivers/gpu/msm/kgsl.h
index 90dc550..8460476 100644
--- a/drivers/gpu/msm/kgsl.h
+++ b/drivers/gpu/msm/kgsl.h
@@ -26,6 +26,7 @@
 #include <linux/mm.h>
 #include <linux/dma-attrs.h>
 #include <linux/uaccess.h>
+#include <linux/kthread.h>
 #include <asm/cacheflush.h>
 
 /* The number of memstore arrays limits the number of contexts allowed.
@@ -132,6 +133,8 @@
 	unsigned int full_cache_threshold;
 	struct workqueue_struct *workqueue;
 	struct workqueue_struct *mem_workqueue;
+	struct kthread_worker worker;
+	struct task_struct *worker_thread;
 };
 
 extern struct kgsl_driver kgsl_driver;
@@ -273,7 +276,7 @@
 	void *priv;
 	struct list_head node;
 	unsigned int created;
-	struct work_struct work;
+	struct kthread_work work;
 	int result;
 	struct kgsl_event_group *group;
 };
diff --git a/drivers/gpu/msm/kgsl_events.c b/drivers/gpu/msm/kgsl_events.c
index 6e8abf3..859511b 100644
--- a/drivers/gpu/msm/kgsl_events.c
+++ b/drivers/gpu/msm/kgsl_events.c
@@ -32,7 +32,7 @@
 {
 	list_del(&event->node);
 	event->result = result;
-	queue_work(device->events_wq, &event->work);
+	queue_kthread_work(&kgsl_driver.worker, &event->work);
 }
 
 /**
@@ -42,7 +42,7 @@
  * Each event callback has its own work struct and is run on a event specific
  * workqeuue.  This is the worker that queues up the event callback function.
  */
-static void _kgsl_event_worker(struct work_struct *work)
+static void _kgsl_event_worker(struct kthread_work *work)
 {
 	struct kgsl_event *event = container_of(work, struct kgsl_event, work);
 	int id = KGSL_CONTEXT_ID(event->context);
@@ -282,7 +282,7 @@
 	event->created = jiffies;
 	event->group = group;
 
-	INIT_WORK(&event->work, _kgsl_event_worker);
+	init_kthread_work(&event->work, _kgsl_event_worker);
 
 	trace_kgsl_register_event(KGSL_CONTEXT_ID(context), timestamp, func);
 
@@ -297,7 +297,7 @@
 
 	if (timestamp_cmp(retired, timestamp) >= 0) {
 		event->result = KGSL_EVENT_RETIRED;
-		queue_work(device->events_wq, &event->work);
+		queue_kthread_work(&kgsl_driver.worker, &event->work);
 		spin_unlock(&group->lock);
 		return 0;
 	}
日什么月什么 手指上的斗和簸箕代表什么意思 巨蟹男和什么座最配对 釜底抽薪是什么意思 牛肉丸子配什么菜好吃
什么是膜性肾病 炖鸡肉放什么调料 6月25日是什么日子 外阴溃烂用什么药 tf口红什么牌子
睑缘炎用什么药 眼睛睁不开是什么原因 口字旁的字和什么有关 细菌性阴道炎吃什么药 丝瓜有什么功效
英纳格手表什么档次 座驾是什么意思 花金龟吃什么 生理期为什么会腰疼 延年益寿的益是什么意思
硬膜囊受压是什么意思hcv8jop9ns5r.cn 发扬什么精神hcv9jop2ns4r.cn 五蕴皆空是什么意思0297y7.com 什么什么泪下hcv7jop6ns3r.cn 人造珍珠是什么材质hcv9jop0ns2r.cn
724是什么意思hcv8jop1ns4r.cn 绞股蓝长什么样子cj623037.com 手臂上长痣代表什么hcv8jop6ns5r.cn 三点水的字和什么有关mmeoe.com 头皮痒掉发严重是什么原因hcv8jop1ns1r.cn
11月7日什么星座bjhyzcsm.com 肌腱炎吃什么药hcv7jop7ns3r.cn honor是什么牌子hcv7jop4ns5r.cn 多发淋巴结是什么意思hcv9jop7ns0r.cn 梦见自己请客吃饭是什么意思hcv9jop5ns9r.cn
麻醉对身体有什么伤害hcv7jop7ns4r.cn 脑白质疏松症是什么病luyiluode.com 乳腺囊肿吃什么药xinjiangjialails.com 怀孕不可以吃什么东西0297y7.com 做b超需要挂什么科hcv8jop7ns9r.cn
百度