[PATCH] pmem: emulating usable memory as persistent memory
by Taeho Hwang
This patch checks whether the specified memory (memmap) is
userable or not. This patch prevents non-existing memory
from being emulated as persistent memory.
If non-existing memory is specified by memmap without
this patch, struct nd_namespace_io and struct pmem_device
will have invalid values.
Signed-off-by: Taeho Hwang <taeho1224(a)gmail.com>
---
arch/x86/kernel/e820.c | 56 +++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 55 insertions(+), 1 deletion(-)
diff --git a/arch/x86/kernel/e820.c b/arch/x86/kernel/e820.c
index 76dd605..ba9115d 100644
--- a/arch/x86/kernel/e820.c
+++ b/arch/x86/kernel/e820.c
@@ -178,9 +178,63 @@ static void __init __e820__range_add(struct e820_table *table, u64 start, u64 si
table->nr_entries++;
}
+static void __init __e820__range_add_pram(struct e820_table *table, u64 start,
+ u64 size)
+{
+ int nr_entries = table->nr_entries;
+ int new_nr_entries = nr_entries;
+ u64 range_start, range_end;
+ u64 end = start + size;
+ bool flag;
+ int i;
+
+ if (nr_entries >= ARRAY_SIZE(table->entries)) {
+ pr_err("too many entries; ignoring [mem %#010llx-%#010llx]\n",
+ start, start + size - 1);
+ return;
+ }
+
+ for (i = 0; i < nr_entries; i++) {
+ if (table->entries[i].type != E820_TYPE_RESERVED_KERN &&
+ table->entries[i].type != E820_TYPE_RAM)
+ continue;
+
+ range_start = table->entries[i].addr;
+ range_end = table->entries[i].addr + table->entries[i].size;
+ flag = false;
+ if (range_start <= start && start < range_end) {
+ table->entries[new_nr_entries].addr = start;
+ if (end <= range_end)
+ table->entries[new_nr_entries].size = size;
+ else
+ table->entries[new_nr_entries].size =
+ range_end - start;
+ flag = true;
+ } else if (range_start < end && end <= range_end) {
+ table->entries[new_nr_entries].addr = range_start;
+ table->entries[new_nr_entries].size = end - range_end;
+ flag = true;
+ } else if (start <= range_start && range_end <= end) {
+ table->entries[new_nr_entries].addr = range_start;
+ table->entries[new_nr_entries].size =
+ range_end - range_start;
+ flag = true;
+ }
+ if (flag) {
+ table->entries[new_nr_entries].type = E820_TYPE_PRAM;
+ if (++new_nr_entries >= ARRAY_SIZE(table->entries))
+ break;
+ }
+ }
+ table->nr_entries = new_nr_entries;
+}
+
void __init e820__range_add(u64 start, u64 size, enum e820_type type)
{
- __e820__range_add(e820_table, start, size, type);
+ if (type == E820_TYPE_PRAM || type == E820_TYPE_PMEM)
+ __e820__range_add_pram(e820_table, start, size);
+ else
+ __e820__range_add(e820_table, start, size, type);
}
static void __init e820_print_type(enum e820_type type)
--
2.7.4
2 years, 9 months
RE: LOAN & INVESTMENT NOW READY. PLEASE READ OUR MAIL.
by BBK LOANS & INVESTMENT CO
Dear Sir/Ma'am
We have set aside $100 Billion US Dollars for our loans
program. BBK LOANS & INVESTMENT CO is now open to all people
looking for a loan. We offer loans grant at an affordable
interest rate of 3% for per annum (1 year). This program is
available to all credible and honest loan seekers who are in
need of a business loan, home mortgages, real estates etc. We
give up to US$100,000,000 (One Hundred Million US Dollars) in
loan grants.
Fill in the blank spaces for full application:
1. Full Name:
2. Address:
3. Occupation:
4. Date of Birth:
5. Man/Woman:
6. Nationality:
7. Country Where You Now Live:
8. Mobile No:
9. Loan Amount:
You can contact us immediately by sending the above mentioned
information to our email here below;
Ms. Elham Ibrahim Hassan
Operations Director
Email: bbkloanscompany(a)aol.com
2 years, 9 months
Периодичность системы вознаграждений
by Nick
Построение системы оплаты по результату KPI-Мотивация.
ДОСАДНО, ЧТО ВАША КОМПАНИЯ НЕ ЗАРАБАТЫВАЕТ
ХОРОШУЮ ПРИБЫЛЬ – ТОЛЬКО ПОТОМУ, ЧТО
ВАШИ СОТРУДНИКИ НЕ ДОСТАТОЧНО МОТИВИРОВАНЫ
и не достаточно эффективны.
Тема, которую мы затрагиваем не из простых. Наша тема: Как ПЛАТИТЬ ТОЛЬКО за РЕЗУЛЬТАТ, как МОТИВИРОВАТЬ, как измерять эффективность работы КАЖДОГО сотрудника.
Что должен знать КАЖДЫЙ руководитель ….о МОТИВАЦИИ своих сотрудников и о том, как повысить ЭФФЕКТИВНОСТЬ их работы?
По статистике, только каждый 5 сотрудник работает эффективно. Что сделать руководителю, чтобы и остальные 80% персонала работали на пике своих возможностей? Если люди постоянно работают не эффективно, то проблема не в людях, Проблема в СИСТЕМЕ. Выстроенная Система позволит Вам повысить эффективность персонала минимально на 20%. Из чего же состоит эта Система, которая позволяет сделать прорыв в эффективности и мотивации людей?
Как выстроить Систему и еще Вы узнаете ….:
1. Как ПОВЫСИТЬ ЭФФЕКТИВНОСТЬ ваших людей не менее, чем на 20% в течении ближайшего квартала;
2. Устанавливать своим сотрудникам и достигать цели;
3. Как измерять эффективность своих сотрудников с помощью KPI,
4. Как выстраивать в компании эффективную систему мотивации и получать максимальную отдачу от каждого сотрудника.
5. Как разрабатывать систему оплаты по результату;
6. Эффективно управлять сотрудниками, повышая их эффективность и вовлеченность, мотивирования на достижение большего;
7. Нематериальному стимулированию, способам признания и вознаграждения;
8. Новые идеи, которые позволят выиграть в условиях конкуренции;
9. Практические навыки, которые сможете сразу же применить в своей работе;
Программа:
Модуль 1. С чего начинается мотивация - цели компании и основные показатели эффективности
С чего начинается мотивация - цели компании и основные показатели эффективности.
- Актуальность проблем "мотивация", "оценка эффективности" и "стимулирование" для организаций
- Как удовлетворенность персонала влияет на рост прибыли
- За какие показатели платят бонусы
- KPI-мотивация должность или человек
Модуль 2. 3D ОЦЕНКА СОТРУДНИКОВ
Кто и что из сотрудников делает? Как это измерить и оценить?
- Какие показатели действительно имеют значение
- Как разработать показатели доходообразующих подразделение
- Как разработать показатели сервисных служб
- Как оценить работу каждого сотрудника:
- Оценка по финансовым KPI топ-менеджеров, линейных менеджеров, рядовых сотрудников
- Оценка результатов по нефинансовым KPI. "Минусы" и "минусы" финансовых показателей
- Оценка результатов рядовых сотрудников
- Количественные, качественные показатели, стандарты работы, проекты
- Количество показателей и приоритеты
- Как различать лучших сотрудников: оценка результативности.
Модуль 3. Расчет дополнительной прибыли и зоны ответственности
Как работа каждого сотрудника влияет на прибыль? Как построить мотивацию, чтобы платить из дополнительно заработанной прибыли, а не увеличивать затраты
- Цели бизнеса и цели работы структурных подразделений. Дерево целей
- Как провести каскад целей до каждого сотрудника от целей бизнеса
- Показатели для каждого уровня организации
- Выделение KPI и определение центров ответственности за показатели компании. Построение матрицы финансовой ответственности
- Построение мотивационных листоов
- Определение значений коэффициентов KPI, построение финансовой модели "Логолекс"
Модуль 4. КАК рассчитать фонд оплаты труда и штат для компании, подразделения
За счет чего платить зарплату и премии? Как рассчитать, кому и сколько платить?
- Какой размер фонда оплаты труда должен быть в компании: 2 основных подхода
- Как утвердить рост фонда оплаты труда. Пример расчет штата и фонда оплаты труда.
- "Спусковой крючок" премиального фонда.
- Пример расчета и определения "спускового крючка". Пример расчета фонда оплаты труда
- Порог и потолок премиального фонда
- Процентомания: плюсы и минусы
- Определение структуры постоянной и переменной части: руководителей и рядовых сотрудников
- Пример возможного определения структуры постоянной и переменной части
- Периодичность системы вознаграждений.
- Пример распределения премиального фонда в зависимости от сезонности продаж
- Связь KPI с бонусами
- Бонусы за достижение коллективных и личных KPI.
- Пример распределения бонуса на коллективный и индивидуальный.
- Выплачивать ли индивидуальный бонус, если компания не достигла нужных целей?
- Оформление документа "мотивационная схема сотрудника"
Модуль 5. Как мотивировать людей на достижение целей
Как стремительно поднимать моральный дух подчиненных и поддерживать производительность, мотивацию при минимальных затратах.
- Как изменить поведение сотрудников.
- Какие факторы определяют, будет ли человек работать над достижением целей и KPI компании?
- Как цели зажигают сотрудников? Как поддерживать огонь в глазах? 3 кита высокой мотивации
- Работа после работы, когда хочется работать круглые сутки. Состояние "потока".
- Как быть с сотрудниками, которые не справляются
- Влейте в работу душу. Нематериальное стимулирование
- Как внедрить систему мотивации в компании
a. Центры ответственности в организации, заинтересованные в разработке и оптимизации системы вознаграждения и показателей оценки эффективности (KPI).
b. Как распределить ответственность и роли. Роль отдела персонала
c. Психологические особенности внедрения системы мотивации в компании
d. Основные ошибки и трудности, как их минимизировать.
Узнать больше> http://investments.in.ua/training/147/postroenie-sistemi-oplati-po-rezult...
Менеджмент
Интернет
Недвижимость
Отказаться от рассылки.
List-Unsubscribe или пожаловаться на Spam
© 2004-2019 Все права защищены.
2 years, 9 months
[PATCH V2] bnvdimm/namsepace: Don't set claim_class on error
by ira.weiny@intel.com
From: Ira Weiny <ira.weiny(a)intel.com>
Don't leave claim_class set to an invalid value if an error occurs in
btt_claim_class().
While we are here change the return type of __holder_class_store() to be
clear about the values it is returning.
This was found via code inspection.
Reviewed-by: Vishal Verma <vishal.l.verma(a)intel.com>
Signed-off-by: Ira Weiny <ira.weiny(a)intel.com>
---
V1->V2
Add space after variable declaration...
drivers/nvdimm/namespace_devs.c | 20 ++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/drivers/nvdimm/namespace_devs.c b/drivers/nvdimm/namespace_devs.c
index 5b22cecefc99..eef885c59f47 100644
--- a/drivers/nvdimm/namespace_devs.c
+++ b/drivers/nvdimm/namespace_devs.c
@@ -1510,16 +1510,20 @@ static ssize_t holder_show(struct device *dev,
}
static DEVICE_ATTR_RO(holder);
-static ssize_t __holder_class_store(struct device *dev, const char *buf)
+static int __holder_class_store(struct device *dev, const char *buf)
{
struct nd_namespace_common *ndns = to_ndns(dev);
if (dev->driver || ndns->claim)
return -EBUSY;
- if (sysfs_streq(buf, "btt"))
- ndns->claim_class = btt_claim_class(dev);
- else if (sysfs_streq(buf, "pfn"))
+ if (sysfs_streq(buf, "btt")) {
+ int rc = btt_claim_class(dev);
+
+ if (rc < NVDIMM_CCLASS_NONE)
+ return rc;
+ ndns->claim_class = rc;
+ } else if (sysfs_streq(buf, "pfn"))
ndns->claim_class = NVDIMM_CCLASS_PFN;
else if (sysfs_streq(buf, "dax"))
ndns->claim_class = NVDIMM_CCLASS_DAX;
@@ -1528,10 +1532,6 @@ static ssize_t __holder_class_store(struct device *dev, const char *buf)
else
return -EINVAL;
- /* btt_claim_class() could've returned an error */
- if ((int)ndns->claim_class < 0)
- return ndns->claim_class;
-
return 0;
}
@@ -1539,7 +1539,7 @@ static ssize_t holder_class_store(struct device *dev,
struct device_attribute *attr, const char *buf, size_t len)
{
struct nd_region *nd_region = to_nd_region(dev->parent);
- ssize_t rc;
+ int rc;
nd_device_lock(dev);
nvdimm_bus_lock(dev);
@@ -1547,7 +1547,7 @@ static ssize_t holder_class_store(struct device *dev,
rc = __holder_class_store(dev, buf);
if (rc >= 0)
rc = nd_namespace_label_update(nd_region, dev);
- dev_dbg(dev, "%s(%zd)\n", rc < 0 ? "fail " : "", rc);
+ dev_dbg(dev, "%s(%d)\n", rc < 0 ? "fail " : "", rc);
nvdimm_bus_unlock(dev);
nd_device_unlock(dev);
--
2.20.1
2 years, 9 months
[PATCH] libnvdimm/namespace: Fix a signedness bug in __holder_class_store()
by Dan Carpenter
The "ndns->claim_class" variable is an enum but in this case GCC will
treat it as an unsigned int so the error handling is never triggered.
Fixes: 14e494542636 ("libnvdimm, btt: BTT updates for UEFI 2.7 format")
Signed-off-by: Dan Carpenter <dan.carpenter(a)oracle.com>
---
drivers/nvdimm/namespace_devs.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/nvdimm/namespace_devs.c b/drivers/nvdimm/namespace_devs.c
index cca0a3ba1d2c..669985527716 100644
--- a/drivers/nvdimm/namespace_devs.c
+++ b/drivers/nvdimm/namespace_devs.c
@@ -1529,7 +1529,7 @@ static ssize_t __holder_class_store(struct device *dev, const char *buf)
return -EINVAL;
/* btt_claim_class() could've returned an error */
- if (ndns->claim_class < 0)
+ if ((int)ndns->claim_class < 0)
return ndns->claim_class;
return 0;
--
2.20.1
2 years, 9 months
回复:流程、方法、工艺、材料、装配、图纸全方位技术提升
by 邱先生
发件人: "邱先生";<mkldiau(a)gvm.org>
发送时间: 2019-9-25/ 22:44:17
收件人: "linux-nvdimm"<linux-nvdimm(a)lists.01.org>
产品结构设计
--流程、方法、工艺、材料、装配、图纸全方位技术提升
培训时间: 2019年10月12-13日深圳 11月15-16日广州 12月13-14日深圳
培训费用: 3800元/人(含资料费、午餐费、专家演讲费、会务费)
培训对象:技术总监、项目经理,结构工程师、机械工程师、质量工程师,工艺和制造工程师
具备基本的机械知识基础并在实际工作中有基本的机械相关工作经验,以及基本的产品生产过程知识
咨询电话: 18890700600(同微信) 赵先生
∵〖课程背景〗
产品结构设计无处不在,好的设计,意味好的质量,低的成本。 由于结构设计涉及的知识面非常广,牵涉到的制作工艺复杂多样。所以一个好的结构工程师的培养和成长不是件容易的事情。同时结构设计统领公司众多部门,从外观设计部门,质量部门,测试部门,制造部门,装配线,甚至采购,销售部门。无不与结构设计部门有非常直接的关联。所以有必要对结构设计知识有一些基本的了解。为此,我们研发该课程去满足各个部门或职位,对结构设计知识的了解与应用。
∵〖课程特色〗
根据客户提供及经典案例,介绍结构设计的具体内容和要求,以及在设计,生产中的实际应用,并提供现场的辅导,包括设计、制造、检测及综合分析等。
∵〖课程语言〗
普通话,辅以英文名词
∵〖课程大纲〗
第一篇 认识产品的结构设计
一、 什么是产品结构设计
二、 产品结构设计的重要性
三、 对产品结构设计师的要求
四、 产品结构设计认识的误区
第二篇 塑料件的设计
一、 塑料材料性能
二、 常见塑料材料选择
三、 壁厚的设计
四、 筋的设计
五、 凸台、螺丝柱的设计
六、 角板的设计
七、 尖角的设计
八、 拔模角度
九、 孔洞的设计
十、 倒扣的设计
十一、 模塑螺纹的设计
十二、 模塑文字
十三、 活动铰链 的设计
十四、 金属镶件
十五、 塑料轴承的设计
十六、 塑料齿轮的设计
十七、 塑料件公差
十八、 塑料模具结构
第三篇 钣金件的设计
一、 冲裁工艺及冲裁模具
二、 弯曲工艺与弯曲模具
三、 拉深工艺与拉深模具
四、 其他成形工艺与模具
五、 复合模与多工位级进模具
六、 常用冲压板材的选择
七、 冲床
八、 结构零件设计指导
九、 尺寸公差
第四篇 压铸件的设计
一、 压铸模具(热室、冷室)
二、 压铸工艺参数
三、 修边模具
四、 压铸零件设计
1、 壁厚
2、 加强筋及圆角
3、 脱模斜度
4、 孔的设计
5、 滑块
6、 螺纹的处理
7、 金属镶件
8、 压铸件的机械加工
9、 模塑文字
10、 砂孔及气密性要求
11、 尺寸与公差
12、 微型压铸件
五、 压铸合金机械性能及压铸性能
(铝合金、锌合金、镁合金、铜合金)
第五篇 面向装配的设计
一、 装配的定义
1、 DFA 面向装配的设计介绍
2、 最好和最差的装配工序
3、 面向装配的设计的目的
二、 设计指南
1、 减少零件数量
2、 减少紧固件的数量和类型
3、 零件标准化
4、 模块化产品设计
5、 设计一个稳定的基座
6、 设计零件容易被抓取
7、 避免零件缠绕
8、 减少零件装配方向
9、 设计导向特征
10、 先定位后固定
11、 避免装配干涉
12、 为辅助工具提供空间
13、 为重要零件设计装配止位特征
14、 防止零件欠约束和过约束
15、 宽松的零件公差要求
16、 防错的设计
17、 装配中的人机工程学
18、 线缆的布局
三、 标准件的装配设计原则
第六篇 金属材料常识及选择
一、 钢铁材料及热处理
二、 有色金属材料及热处理
第七篇 图纸与公差
一、 什么是好的图纸
二、 尺寸与公差
三、 公差规则及原则
四、 基准
五、 几何公差的应用
六、 图纸实例
∵〖讲师介绍〗
李老师
华南理工大学机械设计及理论硕士;
首席塑胶件设计与注塑培训师;
首席GD&T形位公差与尺寸链培训师;
首席产品结构设计培训师;
机械制造及其自动化专业高级工程师
多家国内外知名企业顾问;
培训机构研发技术类课程指定老师;
【背景经历】
在欧美仪器、设备行业及国内家电,电子行业,从事研发、制造工作13年。多年的高级工程师,研发经理职业经历。具有丰富的机械结构与机械传动设计经验,并在海外研发工作多年,熟悉行内的最新动向及技术更新,了解大量的国外产品设计案例。
在培训方面,有丰富的授课经验:多家培训公司定期公开课的指定讲师,获得学员和机构的一致好评;多家大型企业内训指定讲师,定期到企业内部开展培训和辅导,好评96%以上。
可根据客户特定需求来调整课纲,编撰课件。授课内容更贴近客户需求,更好服务客户。
可就现场问题做分析与咨询,辅导客户,完成项目。
【培训特色】
擅长结合客户的产品和案例讲解,激发学员兴趣,达到真正掌握并灵活运用。
培训以讲解和实际产品练习相结合的方式,注重与学员之间的互动。
通过大量欧美机械设计产品优秀案例、生动的语言,将专业知识讲解得让学员想听、易懂,有收获。
工作语言为英语和汉语普通话。
【主讲课程】
《塑胶(料)件的设计与注塑》 2 - 3 天;
《塑胶产品设计》1-2天;
《GD&T形位公差与尺寸链计算》 1 - 2天;
《机械图纸的尺寸公差的合理标注》1-2天
《产品结构设计》2-3天;
《金属材料》2天;
2 years, 9 months
[PATCH] libnvdimm/region: Update is_nvdimm_sync check to handle volatile regions
by Aneesh Kumar K.V
We should consider volatile regions synchronous so that we are resilient to
OS crashes. This is needed when we have hypervisor like KVM exporting a ramdisk
as pmem dimms.
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar(a)linux.ibm.com>
---
drivers/nvdimm/region_devs.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/nvdimm/region_devs.c b/drivers/nvdimm/region_devs.c
index ab91890f2486..ef423ba1a711 100644
--- a/drivers/nvdimm/region_devs.c
+++ b/drivers/nvdimm/region_devs.c
@@ -1168,6 +1168,9 @@ EXPORT_SYMBOL_GPL(nvdimm_has_cache);
bool is_nvdimm_sync(struct nd_region *nd_region)
{
+ if (is_nd_volatile(&nd_region->dev))
+ return true;
+
return is_nd_pmem(&nd_region->dev) &&
!test_bit(ND_REGION_ASYNC, &nd_region->flags);
}
--
2.21.0
2 years, 9 months
[PATCH v2] libnvdimm: prevent nvdimm from requesting key when security is disabled
by Dave Jiang
Current implementation attempts to request keys from the keyring even when
security is not enabled. Change behavior so when security is disabled it
will skip key request.
Error messages seen when no keys are installed and libnvdimm is loaded:
request-key[4598]: Cannot find command to construct key 661489677
request-key[4606]: Cannot find command to construct key 34713726
...
Fixes: 4c6926a23b76 ("acpi/nfit, libnvdimm: Add unlock of nvdimm support for Intel DIMMs")
Cc: stable(a)vger.kernel.org
Signed-off-by: Dave Jiang <dave.jiang(a)intel.com>
---
v2:
- Fix up commit header to add more information and cc stable. (Dan)
drivers/nvdimm/security.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/nvdimm/security.c b/drivers/nvdimm/security.c
index 9e45b207ff01..89b85970912d 100644
--- a/drivers/nvdimm/security.c
+++ b/drivers/nvdimm/security.c
@@ -177,6 +177,10 @@ static int __nvdimm_security_unlock(struct nvdimm *nvdimm)
|| !nvdimm->sec.flags)
return -EIO;
+ /* No need to go further if security is disabled */
+ if (test_bit(NVDIMM_SECURITY_DISABLED, &nvdimm->sec.flags))
+ return 0;
+
if (test_bit(NDD_SECURITY_OVERWRITE, &nvdimm->flags)) {
dev_dbg(dev, "Security operation in progress.\n");
return -EBUSY;
2 years, 9 months
[PATCH] powerpc/book3s64: Export has_transparent_hugepage() related functions.
by Aneesh Kumar K.V
In later patch, we want to use hash_transparent_hugepage() in a kernel module.
Export two related functions.
Acked-by: Michael Ellerman <mpe(a)ellerman.id.au>
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar(a)linux.ibm.com>
---
arch/powerpc/include/asm/book3s/64/radix.h | 8 +++++++-
arch/powerpc/mm/book3s64/hash_pgtable.c | 2 ++
arch/powerpc/mm/book3s64/radix_pgtable.c | 7 -------
3 files changed, 9 insertions(+), 8 deletions(-)
diff --git a/arch/powerpc/include/asm/book3s/64/radix.h b/arch/powerpc/include/asm/book3s/64/radix.h
index 574eca33f893..d97db3ad9aae 100644
--- a/arch/powerpc/include/asm/book3s/64/radix.h
+++ b/arch/powerpc/include/asm/book3s/64/radix.h
@@ -254,7 +254,13 @@ extern void radix__pgtable_trans_huge_deposit(struct mm_struct *mm, pmd_t *pmdp,
extern pgtable_t radix__pgtable_trans_huge_withdraw(struct mm_struct *mm, pmd_t *pmdp);
extern pmd_t radix__pmdp_huge_get_and_clear(struct mm_struct *mm,
unsigned long addr, pmd_t *pmdp);
-extern int radix__has_transparent_hugepage(void);
+static inline int radix__has_transparent_hugepage(void)
+{
+ /* For radix 2M at PMD level means thp */
+ if (mmu_psize_defs[MMU_PAGE_2M].shift == PMD_SHIFT)
+ return 1;
+ return 0;
+}
#endif
extern int __meminit radix__vmemmap_create_mapping(unsigned long start,
diff --git a/arch/powerpc/mm/book3s64/hash_pgtable.c b/arch/powerpc/mm/book3s64/hash_pgtable.c
index d1f390ac9cdb..64733b9cb20a 100644
--- a/arch/powerpc/mm/book3s64/hash_pgtable.c
+++ b/arch/powerpc/mm/book3s64/hash_pgtable.c
@@ -406,6 +406,8 @@ int hash__has_transparent_hugepage(void)
return 1;
}
+EXPORT_SYMBOL_GPL(hash__has_transparent_hugepage);
+
#endif /* CONFIG_TRANSPARENT_HUGEPAGE */
#ifdef CONFIG_STRICT_KERNEL_RWX
diff --git a/arch/powerpc/mm/book3s64/radix_pgtable.c b/arch/powerpc/mm/book3s64/radix_pgtable.c
index 3a1fbf9cb8f8..6ee17d09649c 100644
--- a/arch/powerpc/mm/book3s64/radix_pgtable.c
+++ b/arch/powerpc/mm/book3s64/radix_pgtable.c
@@ -1027,13 +1027,6 @@ pmd_t radix__pmdp_huge_get_and_clear(struct mm_struct *mm,
return old_pmd;
}
-int radix__has_transparent_hugepage(void)
-{
- /* For radix 2M at PMD level means thp */
- if (mmu_psize_defs[MMU_PAGE_2M].shift == PMD_SHIFT)
- return 1;
- return 0;
-}
#endif /* CONFIG_TRANSPARENT_HUGEPAGE */
void radix__ptep_set_access_flags(struct vm_area_struct *vma, pte_t *ptep,
--
2.21.0
2 years, 9 months
Security Alert. Your account was compromissed. Password must be changed.
by linux-nvdimm@lists.01.org
Hello!
As you may have noticed, I sent you an email from your account.
This means that I have full access to your device.
I've been watching you for a few months now.
The fact is that you were infected with malware through an adult site that you visited.
If you are not familiar with this, I will explain.
Trojan Virus gives me full access and control over a computer or other device.
This means that I can see everything on your screen, turn on the camera and microphone, but you do not know about it.
I also have access to all your contacts and all your correspondence.
Why your antivirus did not detect malware?
Answer: My malware uses the driver, I update its signatures every 4 hours so that your antivirus is silent.
I made a video showing how you satisfy yourself in the left half of the screen, and in the right half you see the video that you watched.
With one click of the mouse, I can send this video to all your emails and contacts on social networks.
I can also post access to all your e-mail correspondence and messengers that you use.
If you want to prevent this,
transfer the amount of $712 to my bitcoin address (if you do not know how to do this, write to Google: "Buy Bitcoin").
My bitcoin address (BTC Wallet) is: 1N6dubqFmnyQ2qDWvi32ppVbc3kKMTYcGW
After receiving the payment, I will delete the video and you will never hear me again.
I give you 50 hours (more than 2 days) to pay.
I have a notice reading this letter, and the timer will work when you see this letter.
Filing a complaint somewhere does not make sense because this email cannot be tracked like my bitcoin address.
I do not make any mistakes.
If I find that you have shared this message with someone else, the video will be immediately distributed.
Best regards!
2 years, 9 months