景先生
by pv
企业安全、环境(EHS)系统化实战训练-B单元
2016年07月20-21日苏州、08月20-21日上海、10月22-23日苏州
课程概述:
环境健康安全(EHS)在现代企业的正常运营中起着越来越重要的作用,专业的EHS管理人员在企业管理中承担的角色也日益重要,他们需要掌握全面的EHS知识,丰富的管理经验和沟通协调能力,坚韧的毅力和持之以恒的决心,才能肩负起传播企业文化和EHS理念传播的重任。以下问题都是EHS管理者在日常工作中必须要面对的课题:
?如何建立起系统的、有效的EHS管理体系,尽可能的降低风险,控制环境安全事故的发生?
?如何避免EHS好像你一个人事的尴尬?
?如果做好现场岗位EHS的有效管理?
?如何拓展员工知识,做好EHS培训并改进员工对待环境安全管理的态度?
?如何得到管理层的支持,让管理者能参与到EHS管理中来?
因此,EHS管理者既要提升专业技术知识,更要提高人员管理的软技能,在充分理解每一项工作的意义后,让工作变得卓有成效,让自己的得到更大发展空间。
本次培训既有企业EHS文化、相关法规和理论知识的介绍,又有实际案例的分析与演练,更会系统地介绍先进的EHS体系和跨国公司的管理经验,并结合培训师十几年来多家跨国公司环境健康安全管理的经验,和学员共同分享交流先进的EHS理念和管理技术,开阔学员的视角,提高管理经验,促进企业管理绩效的提高。
课程简介:
培训对象:1.从事EHS工作2年以上的专业人员 2.企业总经理、分管领导等
授课形式:知识讲授、视频分析、案例展示、角色扮演等
课程费用:4800元/人/2天【包含:课程资料费、午餐、茶点、】
联系方式:0512-68700653 (0)18015596327
注明:该课程2天为一个单元,A单元与B单元内容是完全独立的,客户可根据自己需求选择参加A单元或者B单元,或AB单元均参加
课程特色:
实战的管理工具如何事半功倍的提升EHS绩效,在于提高企业各级管理者和员工的参与度。课程中,将着重讲解独家研发的“四巧运用”、“风险系统控制”、“EHS管理体系模型”、“EHS审核技术”等实战型管理工具,指导学员达成此目的。
责任体系构建责任书年年签订,但推诿扯皮现象依然普遍,EHS仍承担较大风险,这样的现象严重阻滞了EHS绩效提升。本课程将从“职责”、“绩效”、“考核”三个维度,让企业高层、管理层、班组长、作业人员及EHS人员各司其职,共同提升EHS绩效。
EHS管理体系构建建立EMS、OHSAS或安标体系,以应付审核为目的的企业普遍存在。如何建立体系既能通过评审,又能让企业EHS工作按要求运行起来,课程中独家研发的“五基”体系构建法,一定能帮到你。
设计EHS人员成长路径企业EHS管理应从“被动管理”、“守法”、“体系构建”、“执行文化培养”、“EHS文化形成”等,循序渐进的向前推进,而EHS管理者也应该在不同阶段扮演不同角色。课程中将指导其在不同阶段的角色定位与履职。
课程收获
风险系统控制掌握基于风险识别、风险控制、作业指导书编制、考核试卷、目视化等系统的控制技巧,提升风险控制的实战能力
EHS体系构建掌握EHS体系构建技巧和EHS法律法规、EHS职责、目标指标等关键工具的使用技巧,提升EHS管理者在企业的影响力,提升工作效率
文化构建掌握EHS文化的构建和EHS宣传、活动开展的软技能,促进EHS文化的逐步形成
高效沟通技巧掌握EHS管理中,不同部门、上下级人员的沟通和问题应对技巧,让更多人主动参与到EHS工作中来
课程大纲:
?主题一:中国EHS管理现状
a)安全生产发展状况与中国安全生产现状
b)职业病防治发病情况与企业职业病管理现状
c)我国地理环境污染状况
d)案例:EHS事故对企业的影响
e)国内企业EHS管理的五大缺陷
f)EHS管理中的费用曲线模型
g)时代呼唤专业EHS管理人员
?主题二:EHS专业人员能力模型
a)EHS专业人员需要改变的问题现状与角色错位
b)案例:忙碌的EHS经理
c)EHS专业人员三大角色
d)做好管理层的参谋
e)案例:项目申请报告的“三有”编写原则
f)担当EHS体系设计师
g)EHS专业人员三角能力模型
h)EHS专业人员基本职业素养
?主题三: EHS管理体系构建
a)EHS管理体系设计
?EHS体系构建模型
?EHS体系的文件架构
?EHS职责和活动矩阵模型
?EHS体系二级文件编写的五个原则
?程序文件编写之流程图绘制技巧
?演练:基于法律法规的程序文件编织
b)EHS法律法规管理
?法律法规在EHS体系中的三大作用
?法律法规管理基本流程
?适用法律法规评价与公司合规性评审
c)EHS责职、目标与绩效系统设计
?研讨:如何避免各部门各门在EHS执行中推诿、扯皮
?EHS KPI体系设计:确定目标,展示绩效
?EHS目标的设计:基于职责,结果与过程两个纬度
?让部门动起来:充分运用EHS目标的沟通技巧
?案例演练:基于部门职责绘制部门绩效管制图
?EHS绩效考核与履责沟通
d)EHS检查的实施
?EHS检查的目标与参与者
?EHS检查的三项准备
?让EHS检查更实效:立体式查检表设计
?EHS检查闭环
?为决策者提供关键依据:柏拉图在EHS检查中的运用
e)EHS应急体系设计
?研讨:小偷入室盗窃,进屋以后最先干什么?
?预案的必要性
?预案架构
?研讨:根据提供信息,进行案例研讨
?预案编写步骤
?事故响应级别
?应急救援设备与物资储备和管理
?如何编制应急预案
?企业需要考虑的常见应急事态
?编制预案的基本原则
f)变更管理的实施要领
g)三同时实施流程与基本要求
?主题四:基于EHS因素的系统控制
a)危险源辨识与风险评估
?岗位操作步骤划分技巧
?危险源认知与危险源辨识技巧
?核心:危险源的特点与危险源的四种方法
?演练:危险源识别与控制
?风险评估基本方法与原则
?风险评估范例:厄姆雷特评价法与矩阵法
?基于“源”因分析制定控制对策
?危险源治理模型
?更新记录的时机与原则
?基于流程实施的环境因素识别
?重要环境因素评估方法
?编制一线员工可参与的环境控制措施
b)EHS因素相关作业指导书编制与现场目视化
?案例:不实用SOP仅仅用于应付审核
?一套足以:将EHS作业指导书融入实际工作
?作业指导书辨识过程中的三大关注因素与五大原则
?目视化的意义
?独家研发:目视化在EHS管理中运用
?案例:EHS现场标识的标准化编制技巧
c)EHS培训与督导体系构建
?岗位培训在EHS管理中的重要性
?如何建立有效的岗位EHS培训
?基于TWI课程体系的岗位EHS培训方法
?颠覆传动模式:行为安全管理(BBS)在EHS管理中的有效运用
?纠正员工行为五步法
?罚款不是处罚的全部:正确认知处罚行为
?主题五:EHS文化构建
a)文化的定义与理解要领
b)案例:文化部的核心职能
c)基于行为习惯培养团队文化
d)案例:长城汽车企业文化形成借鉴
e)常见EHS改善活动
?不仅仅是一种形式:EHS活动的意义
?案例:实效EHS活动的五大展现形式
?小伤害、小事故提报
?合理化建议
f)EHS宣传与活动的开展要领
?EHS宣传的目标
?EHS宣传的常见展现形式
?宣传的八字方针
?主题六:EHS管理者沟通技术
a)不再有隔阂:EHS人员的高效沟通技巧
?沟通的原理:接受与认可
?彼此理解和接受:高效沟通的目的
?EHS管理者的痛:部门的参与度与沟通
?研发:EHS高效沟通的三个要素和八个策略
?让更多人接受:EHS人员的四大沟通对象与沟通策略
b)EHS管理中的问题应对与技巧
?巧用老板:如何让老板关注EHS管理绩效
?巧用报表:EHS KPI设定与运行监测
?巧用案例:EHS管理人员如何运用压力管理
?巧用氛围:如何让全员参与EHS管理
4 years, 6 months
improve keywords ranks within 1 week
by seo.max.pack@gmail.com
All SEO efforts are more successful when they are a part of the
powerful SEO campaign.
With the SEO Max package you can rest assured that your positions
will start getting higher.
If you take your business seriously this is an ideal solution for
you
http://www.mg-dot.cn/detail.php?id=117
Unsubscribe option is available on the footer of our website
4 years, 6 months
[PATCH v5 0/5] Introduce device_add_disk() to kill gendisk.driverfs_dev
by Dan Williams
Changes since v4 [1]:
1/ Continue to populate ->driverfs_dev until the final removal so that
there are no behavior changes in the middle of the series, for example
in printk_all_partitions(). (Bart)
2/ Use more descriptive 'parent' variable name instead of 'dev' in
ubd_kern.c to indicate the parent device (Bart).
3/ Remove Reported-by tags per Bart's request.
[1]: https://lists.01.org/pipermail/linux-nvdimm/2016-June/006031.html
---
Answer the "// FIXME: remove" include/linux/genhd.h. This should be
functionally equivalent to the previous state. These patches received a
build success notification from the kbuild robot.
---
Dan Williams (5):
block: introduce device_add_disk()
mmc: move 'parent' tracking to mmc_blk_data
um: track 'parent' device in a local variable
block: convert to device_add_disk()
block: remove ->driverfs_dev
arch/powerpc/sysdev/axonram.c | 3 +--
arch/um/drivers/ubd_kern.c | 5 +++--
block/genhd.c | 18 +++++++++---------
drivers/block/cciss.c | 3 +--
drivers/block/floppy.c | 3 +--
drivers/block/mtip32xx/mtip32xx.c | 5 ++---
drivers/block/ps3disk.c | 3 +--
drivers/block/ps3vram.c | 3 +--
drivers/block/rsxx/dev.c | 4 +---
drivers/block/skd_main.c | 8 +++-----
drivers/block/sunvdc.c | 3 +--
drivers/block/virtio_blk.c | 3 +--
drivers/block/xen-blkfront.c | 3 +--
drivers/ide/ide-cd.c | 3 +--
drivers/ide/ide-gd.c | 3 +--
drivers/memstick/core/ms_block.c | 3 +--
drivers/memstick/core/mspro_block.c | 3 +--
drivers/mmc/card/block.c | 5 +++--
drivers/mtd/mtd_blkdevs.c | 4 +---
drivers/nvdimm/blk.c | 3 +--
drivers/nvdimm/btt.c | 3 +--
drivers/nvdimm/bus.c | 2 +-
drivers/nvdimm/pmem.c | 3 +--
drivers/nvme/host/core.c | 3 +--
drivers/s390/block/dasd_genhd.c | 3 +--
drivers/s390/block/dcssblk.c | 3 +--
drivers/s390/block/scm_blk.c | 3 +--
drivers/scsi/sd.c | 3 +--
drivers/scsi/sr.c | 3 +--
include/linux/genhd.h | 8 ++++++--
30 files changed, 50 insertions(+), 72 deletions(-)
4 years, 6 months
项目时间管理.
by rwtghup
项目管理实战操作(2天实践型)
2016年07月28-29 上海 11月24-25 上海 12月22-23 苏州
5200 元/两天 丨讲师: 刘毛华
报名联系:0512-68700653 (0)18015596327 | 报名邮箱:maqing68811811(a)188.com (具体报名所需信息,请见邮件最下方)
特别备注:本邮件由系统自动发送,请勿直接回复,如您不希望收到,请转发邮件至:tudingyouxiang(a)126.xn--com,-y59la.
课程宗旨:
今天培训结束,明天开始动手。”——培训就是为了改变理念,把所学到的管理工具运用到平时的工作中去。
“没有图表就是没有管理,没有数字就是没有控制”。
Background / 背景介绍
随着市场竞争的日益加剧,企业只靠维持现状的执行系统越来越不能满足不断变化的市场需求,因而项目管理也越来越受到企业的重视。本课程通过讲师讲解、案例分析、小组讨论、学员练习等授课方式,给你带来全新的思维视角,让深陷项目困扰的你蓦然回首、茅塞顿开。整个课程远离理论上的说教,而是强调如何把项目管理的工具和技巧应用到实际的项目中去,去解决项目管理过程中经常出现的范围不清、质量缺陷、进度拖期等具体问题
课程收益:
对企业而言,我们确保学员在培训完成后,大家能用同一种理念,同一种方法,同一种图解,同一种表格来完成项目:
参训的每一位学员培训后都将培养成具有以下,项目经理必备的三种能力:
→ 确定范围;
→ 在范围内完成任务的可置信度;
→ 分析趋势的能力 ;
Outline / 课程大纲
第一天
一、项目及项目管理(9:00—10:30)
讲师:
l 什么叫项目
l 项目的特点
l 什么叫管理
l 什么叫项目管理
课堂练习
回答参加者问题
学员:
l 做练习题
l 讨论
l 学员提问
10:30—10:45 休息
二、项目及其所处的环境分析(10:45—12:00)
讲师:
l 项目中投资人与项目经理的关系
l 项目经理的职责
l 项目中利害关系人分析
l 项目早期估算的一般工具
l 项目阶段图和资源图的制作方法
学员:
l 讨论
l 提问
12:00—13:00 午餐
三、项目沟通管理(13:00—14:30)
讲师:
l 项目的横向沟通
l 项目中跨部门协调的问题解决方法
l 项目的归属和项目目标SMART分析方法
l 项目管理的发展历史
l 项目工作陈述表的制作方法
学员:
l 提问
l 做跨部门协调表格练习
14:30—14:45休息
课堂作业:(14:45—17:00)
l 完成项目启动阶段的“二图一表”
l 完成案例中的“阶段图”、“资源图”和“工作陈述表”
第二天
四、项目范围管理(WBS 和RAM 的制作方法和规定)(9:00—10:30)
讲师:
l 项目的工作分解结构(WBS)
l WBS的评估方法
l WBS中的注意事项
l 一个完整的WBS系统应该达到什么目的
l 项目的责任矩阵表(RAM)
l 布置课堂作业(学员案例中的WBS和RAM )
学员:
l 提问
l 交流
l 每人做案例模拟的开头3个模块
10:30—10:45 休息
课堂作业:(10:45—12:00)
讲师:完成项目范围阶段的“一图一表”
学员:课堂完成案例中的WBS和RAM
12:00—13:00 午餐
五、项目时间管理(网络图的基本制作方法)(13:00—14:30)
讲师:
l 制作任务与任务之间的逻辑网络图(PDM,ADM,GERT,Network Board)的四种方法
学员:
l 讨论所做的案例
l 发表对项目时间管理的看法
l 根据项目时间管理的规定,各自发表个人的意见
六、项目时间管理(带有CPM网络图的制作方法)
讲师:
课堂练习
l 初级网络图制作
l 高级网络图内容及制作方法
小组练习
学员:
l 课堂练习---初级网络图制作
l 小组练习---以小组形式完成高级网络图等练习
14:30—14:45休息
七、项目时间管理(9大工具及CPM网络图的10大用途)(14:45—16:30)
讲师:
l 带有CPM的网络图的特点及十大功能
l 甘特图的作用
l 做阿尔法案例
l 总结项目时间管理的九大工具
l 解答学员问题
学员:
l 做阿尔法案例练习
l 学员提问
l 掌握项目经理必备的4个工具(WBS,RAM,CPM图,甘特图)
课程结束总结:(16:30—17:00)
讲师:
l 学员问题与答疑
l 项目“五图二表”的总结
l 布置课后作业
学员:
l 学员积极提问
l 收集完成回家作业的基本方法
Registration/预订席位
公 司:
地 区:
姓 名:
职 位:
邮 箱:
手 机:
报名联系:0512-68700653 (0)18015596327
报名邮箱:maqing68811811(a)188.com (以上报名信息请发送至此邮箱即可完成报名,我们会在1-2个工作日内与您联系,如未回复您,可能我们没有收到您的邮件)
如果你不希望收到此邮件,请发送邮件至 unsubscribe(a)yuoas.com 告知我们,谢谢。
4 years, 6 months
[PATCH v2] pmem: add pmem support codes on ARM64
by Kwangwoo Lee
v2)
rewrite functions under the mapping information MEMREMAP_WB.
rewrite the comments for ARM64 in pmem.h
add __clean_dcache_area() to clean data in PoC.
v1)
The PMEM driver on top of NVDIMM(Non-Volatile DIMM) has already been
supported on X86_64 and there exist several ARM64 platforms which support
DIMM type memories.
This patch set enables the PMEM driver on ARM64 (AArch64) architecture
on top of NVDIMM. While developing this patch set, QEMU 2.6.50 with NVDIMM
emulation for ARM64 has also been developed and tested on it.
$ dmesg
[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Linux version 4.6.0-rc2kw-dirty (kwangwoo@VBox15) (gcc version 5.2.1 20151010 (Ubuntu 5.2.1-22ubuntu1) ) #10 SMP Tue Jul 5 11:30:33 KST 2016
[ 0.000000] Boot CPU: AArch64 Processor [411fd070]
[ 0.000000] efi: Getting EFI parameters from FDT:
[ 0.000000] EFI v2.60 by EDK II
[ 0.000000] efi: SMBIOS 3.0=0x58710000 ACPI 2.0=0x589b0000
[ 0.000000] ACPI: Early table checksum verification disabled
[ 0.000000] ACPI: RSDP 0x00000000589B0000 000024 (v02 BOCHS )
[ 0.000000] ACPI: XSDT 0x00000000589A0000 00005C (v01 BOCHS BXPCFACP 00000001 01000013)
[ 0.000000] ACPI: FACP 0x0000000058620000 00010C (v05 BOCHS BXPCFACP 00000001 BXPC 00000001)
[ 0.000000] ACPI: DSDT 0x0000000058630000 00108F (v02 BOCHS BXPCDSDT 00000001 BXPC 00000001)
[ 0.000000] ACPI: APIC 0x0000000058610000 0000A8 (v03 BOCHS BXPCAPIC 00000001 BXPC 00000001)
[ 0.000000] ACPI: GTDT 0x0000000058600000 000060 (v02 BOCHS BXPCGTDT 00000001 BXPC 00000001)
[ 0.000000] ACPI: MCFG 0x00000000585F0000 00003C (v01 BOCHS BXPCMCFG 00000001 BXPC 00000001)
[ 0.000000] ACPI: SPCR 0x00000000585E0000 000050 (v02 BOCHS BXPCSPCR 00000001 BXPC 00000001)
[ 0.000000] ACPI: NFIT 0x00000000585D0000 0000E0 (v01 BOCHS BXPCNFIT 00000001 BXPC 00000001)
[ 0.000000] ACPI: SSDT 0x00000000585C0000 000131 (v01 BOCHS NVDIMM 00000001 BXPC 00000001)
...
[ 5.386743] pmem0: detected capacity change from 0 to 1073741824
...
[ 531.952466] EXT4-fs (pmem0): DAX enabled. Warning: EXPERIMENTAL, use at your own risk
[ 531.961073] EXT4-fs (pmem0): mounted filesystem with ordered data mode. Opts: dax
$ mount
rootfs on / type rootfs (rw,size=206300k,nr_inodes=51575)
...
/dev/pmem0 on /mnt/mem type ext4 (rw,relatime,dax,data=ordered)
$ df -h
Filesystem Size Used Available Use% Mounted on
...
/dev/pmem0 975.9M 1.3M 907.4M 0% /mnt/mem
Signed-off-by: Kwangwoo Lee <kwangwoo.lee(a)sk.com>
---
arch/arm64/Kconfig | 2 +
arch/arm64/include/asm/cacheflush.h | 3 +
arch/arm64/include/asm/pmem.h | 151 ++++++++++++++++++++++++++++++++++++
arch/arm64/mm/cache.S | 18 +++++
4 files changed, 174 insertions(+)
create mode 100644 arch/arm64/include/asm/pmem.h
diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
index 4f43622..ee1d679 100644
--- a/arch/arm64/Kconfig
+++ b/arch/arm64/Kconfig
@@ -15,6 +15,8 @@ config ARM64
select ARCH_WANT_COMPAT_IPC_PARSE_VERSION
select ARCH_WANT_FRAME_POINTERS
select ARCH_HAS_UBSAN_SANITIZE_ALL
+ select ARCH_HAS_PMEM_API
+ select ARCH_HAS_MMIO_FLUSH
select ARM_AMBA
select ARM_ARCH_TIMER
select ARM_GIC
diff --git a/arch/arm64/include/asm/cacheflush.h b/arch/arm64/include/asm/cacheflush.h
index c64268d..fba18e4 100644
--- a/arch/arm64/include/asm/cacheflush.h
+++ b/arch/arm64/include/asm/cacheflush.h
@@ -68,6 +68,7 @@
extern void flush_cache_range(struct vm_area_struct *vma, unsigned long start, unsigned long end);
extern void flush_icache_range(unsigned long start, unsigned long end);
extern void __flush_dcache_area(void *addr, size_t len);
+extern void __clean_dcache_area(void *addr, size_t len);
extern void __clean_dcache_area_pou(void *addr, size_t len);
extern long __flush_cache_user_range(unsigned long start, unsigned long end);
@@ -133,6 +134,8 @@ static inline void __flush_icache_all(void)
*/
#define flush_icache_page(vma,page) do { } while (0)
+#define mmio_flush_range(addr, size) __flush_dcache_area(addr, size)
+
/*
* Not required on AArch64 (PIPT or VIPT non-aliasing D-cache).
*/
diff --git a/arch/arm64/include/asm/pmem.h b/arch/arm64/include/asm/pmem.h
new file mode 100644
index 0000000..7504b2b
--- /dev/null
+++ b/arch/arm64/include/asm/pmem.h
@@ -0,0 +1,151 @@
+/*
+ * Based on arch/x86/include/asm/pmem.h
+ *
+ * Copyright(c) 2016 SK hynix Inc. Kwangwoo Lee <kwangwoo.lee(a)sk.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of version 2 of the GNU General Public License as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ */
+#ifndef __ASM_PMEM_H__
+#define __ASM_PMEM_H__
+
+#ifdef CONFIG_ARCH_HAS_PMEM_API
+#include <linux/uaccess.h>
+#include <asm/cacheflush.h>
+
+/**
+ * arch_memcpy_to_pmem - copy data to persistent memory
+ * @dst: destination buffer for the copy
+ * @src: source buffer for the copy
+ * @n: length of the copy in bytes
+ *
+ * Copy data to persistent memory media. if ARCH_HAS_PMEM_API is defined,
+ * then MEMREMAP_WB is used to memremap() during probe. A subsequent
+ * arch_wmb_pmem() need to guarantee durability.
+ */
+static inline void arch_memcpy_to_pmem(void __pmem *dst, const void *src,
+ size_t n)
+{
+ int unwritten;
+
+ unwritten = __copy_from_user_inatomic((void __force *) dst,
+ (void __user *) src, n);
+ if (WARN(unwritten, "%s: fault copying %p <- %p unwritten: %d\n",
+ __func__, dst, src, unwritten))
+ BUG();
+
+ __flush_dcache_area(dst, n);
+}
+
+static inline int arch_memcpy_from_pmem(void *dst, const void __pmem *src,
+ size_t n)
+{
+ memcpy(dst, (void __force *) src, n);
+ return 0;
+}
+
+/**
+ * arch_wmb_pmem - synchronize writes to persistent memory
+ *
+ * After a series of arch_memcpy_to_pmem() operations this need to be called to
+ * ensure that written data is durable on persistent memory media.
+ */
+static inline void arch_wmb_pmem(void)
+{
+ /*
+ * We've already arranged for pmem writes to avoid the cache in
+ * arch_memcpy_to_pmem()
+ */
+ wmb();
+
+ /*
+ * pcommit_sfence() on X86 has been removed and will be replaced with
+ * a function after ARMv8.2 which will support DC CVAP to ensure
+ * Point-of-Persistency. Until then, mark here with a comment to keep
+ * the point for __clean_dcache_area_pop().
+ */
+}
+
+/**
+ * arch_wb_cache_pmem - write back a cache range
+ * @vaddr: virtual start address
+ * @size: number of bytes to write back
+ *
+ * Write back a cache range. Leave data in cache for performance of next access.
+ * This function requires explicit ordering with an arch_wmb_pmem() call.
+ */
+static inline void arch_wb_cache_pmem(void __pmem *addr, size_t size)
+{
+ /* cache clean PoC */
+ __clean_dcache_area(addr, size);
+}
+
+/**
+ * arch_copy_from_iter_pmem - copy data from an iterator to PMEM
+ * @addr: PMEM destination address
+ * @bytes: number of bytes to copy
+ * @i: iterator with source data
+ *
+ * Copy data from the iterator 'i' to the PMEM buffer starting at 'addr'.
+ * This function requires explicit ordering with an arch_wmb_pmem() call.
+ */
+static inline size_t arch_copy_from_iter_pmem(void __pmem *addr, size_t bytes,
+ struct iov_iter *i)
+{
+ void *vaddr = (void __force *)addr;
+ size_t len;
+
+ /*
+ * ARCH_HAS_NOCACHE_UACCESS is not defined and the default mapping is
+ * MEMREMAP_WB. Instead of using copy_from_iter_nocache(), use cacheable
+ * version and call arch_wb_cache_pmem().
+ */
+ len = copy_from_iter(vaddr, bytes, i);
+
+ arch_wb_cache_pmem(addr, bytes);
+
+ return len;
+}
+
+/**
+ * arch_clear_pmem - zero a PMEM memory range
+ * @addr: virtual start address
+ * @size: number of bytes to zero
+ *
+ * Write zeros into the memory range starting at 'addr' for 'size' bytes.
+ * This function requires explicit ordering with an arch_wmb_pmem() call.
+ */
+static inline void arch_clear_pmem(void __pmem *addr, size_t size)
+{
+ void *vaddr = (void __force *)addr;
+
+ memset(vaddr, 0, size);
+ arch_wb_cache_pmem(addr, size);
+}
+
+/**
+ * arch_invalidate_pmem - invalidate a PMEM memory range
+ * @addr: virtual start address
+ * @size: number of bytes to zero
+ *
+ * After finishing ARS(Address Range Scrubbing), clean and invalidate the
+ * address range.
+ */
+static inline void arch_invalidate_pmem(void __pmem *addr, size_t size)
+{
+ __flush_dcache_area(addr, size);
+}
+
+static inline bool __arch_has_wmb_pmem(void)
+{
+ /* return false until arch_wmb_pmem() guarantee PoP on ARMv8.2. */
+ return false;
+}
+#endif /* CONFIG_ARCH_HAS_PMEM_API */
+#endif /* __ASM_PMEM_H__ */
diff --git a/arch/arm64/mm/cache.S b/arch/arm64/mm/cache.S
index 6df0706..5a350e4 100644
--- a/arch/arm64/mm/cache.S
+++ b/arch/arm64/mm/cache.S
@@ -93,6 +93,24 @@ ENTRY(__flush_dcache_area)
ENDPIPROC(__flush_dcache_area)
/*
+ * __clean_dcache_area(kaddr, size)
+ *
+ * Ensure that any D-cache lines for the interval [kaddr, kaddr+size)
+ * are cleaned to the PoC.
+ *
+ * - kaddr - kernel address
+ * - size - size in question
+ */
+ENTRY(__clean_dcache_area)
+alternative_if_not ARM64_WORKAROUND_CLEAN_CACHE
+ dcache_by_line_op cvac, sy, x0, x1, x2, x3
+alternative_else
+ dcache_by_line_op civac, sy, x0, x1, x2, x3
+alternative_endif
+ ret
+ENDPROC(__clean_dcache_area)
+
+/*
* __clean_dcache_area_pou(kaddr, size)
*
* Ensure that any D-cache lines for the interval [kaddr, kaddr+size)
--
2.5.0
4 years, 6 months
improve keywords ranks within 1 week
by seo.max.pack@gmail.com
All SEO efforts are more successful when they are a part of the
powerful SEO campaign.
With the SEO Max package you can rest assured that your positions
will start getting higher.
If you take your business seriously this is an ideal solution for
you
http://www.mg-dot.cn/detail.php?id=117
Unsubscribe option is available on the footer of our website
4 years, 6 months
[GIT PULL] ->driverfs_dev removal for 4.8
by Williams, Dan J
Hi Jens, please pull from:
git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm for-4.8/block
...to receive:
The removal of ->driverfs_dev in favor of just passing the parent
device in as a parameter to add_disk(). See below, it has received a
"Reviewed-by" from Christoph, Bart, and Johannes.
It is also a pre-requisite for Fam Zheng's work to cleanup gendisk
uevents vs attribute visibility [1]. We would extend device_add_disk()
to take an attribute_group list.
This is based off a branch of block.git/for-4.8/drivers and has
received a positive build success notification from the kbuild robot
across several configs.
[1]: "gendisk: Generate uevent after attribute available"
http://marc.info/?l=linux-virtualization&m=146725201522201&w=2
---
The following changes since commit 1b57e66384e2d21150301e68078526fac5680a16:
drbd: correctly handle failed crypto_alloc_hash (2016-06-13 21:43:08 -0600)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm for-4.8/block
for you to fetch changes up to 52c44d93c26f5a76068c0a8cc83bb8f56f38043d:
block: remove ->driverfs_dev (2016-06-27 12:26:08 -0700)
----------------------------------------------------------------
Dan Williams (5):
block: introduce device_add_disk()
mmc: move 'parent' tracking to mmc_blk_data
um: track 'parent' device in a local variable
block: convert to device_add_disk()
block: remove ->driverfs_dev
arch/powerpc/sysdev/axonram.c | 3 +--
arch/um/drivers/ubd_kern.c | 5 +++--
block/genhd.c | 18 +++++++++---------
drivers/block/cciss.c | 3 +--
drivers/block/floppy.c | 3 +--
drivers/block/mtip32xx/mtip32xx.c | 5 ++---
drivers/block/ps3disk.c | 3 +--
drivers/block/ps3vram.c | 3 +--
drivers/block/rsxx/dev.c | 4 +---
drivers/block/skd_main.c | 8 +++-----
drivers/block/sunvdc.c | 3 +--
drivers/block/virtio_blk.c | 3 +--
drivers/block/xen-blkfront.c | 3 +--
drivers/ide/ide-cd.c | 3 +--
drivers/ide/ide-gd.c | 3 +--
drivers/memstick/core/ms_block.c | 3 +--
drivers/memstick/core/mspro_block.c | 3 +--
drivers/mmc/card/block.c | 5 +++--
drivers/mtd/mtd_blkdevs.c | 4 +---
drivers/nvdimm/blk.c | 3 +--
drivers/nvdimm/btt.c | 3 +--
drivers/nvdimm/bus.c | 2 +-
drivers/nvdimm/pmem.c | 3 +--
drivers/nvme/host/core.c | 3 +--
drivers/s390/block/dasd_genhd.c | 3 +--
drivers/s390/block/dcssblk.c | 3 +--
drivers/s390/block/scm_blk.c | 3 +--
drivers/scsi/sd.c | 3 +--
drivers/scsi/sr.c | 3 +--
include/linux/genhd.h | 8 ++++++--
30 files changed, 50 insertions(+), 72 deletions(-)
commit e63a46bef01ff3064f44dba145833284fb6adeec
Author: Dan Williams <dan.j.williams(a)intel.com>
Date: Wed Jun 15 18:17:27 2016 -0700
block: introduce device_add_disk()
In preparation for removing the ->driverfs_dev member of a gendisk, add
an api that takes the parent device as a parameter to add_disk(). For
now this maintains the status quo of WARN()ing on failure, but not
return a error code.
Reviewed-by: Christoph Hellwig <hch(a)lst.de>
Reviewed-by: Johannes Thumshirn <jthumshirn(a)suse.de>
Reviewed-by: Bart Van Assche <bart.vanassche(a)sandisk.com>
Signed-off-by: Dan Williams <dan.j.williams(a)intel.com>
commit 307d8e6f248558b184a2513593dbbeb08406a4fa
Author: Dan Williams <dan.j.williams(a)intel.com>
Date: Mon Jun 20 10:40:44 2016 -0700
mmc: move 'parent' tracking to mmc_blk_data
In preparation for the removal of 'driverfs_dev' from 'struct gendisk',
carry this data in mmc_blk_data. It is used for registration of parent
disks and partitions.
Cc: Ulf Hansson <ulf.hansson(a)linaro.org>
Cc: Bart Van Assche <bart.vanassche(a)sandisk.com>
Signed-off-by: Dan Williams <dan.j.williams(a)intel.com>
commit d72a57835c92f6d51863b0ad6d7d45e3859e24d4
Author: Dan Williams <dan.j.williams(a)intel.com>
Date: Mon Jun 20 10:44:32 2016 -0700
um: track 'parent' device in a local variable
In preparation for the removal of 'driverfs_dev' from 'struct gendisk'
use a local variable to track the parented vs un-parented case in
ubd_disk_register().
Cc: Jeff Dike <jdike(a)addtoit.com>
Cc: Richard Weinberger <richard(a)nod.at>
Cc: Bart Van Assche <bart.vanassche(a)sandisk.com>
Signed-off-by: Dan Williams <dan.j.williams(a)intel.com>
commit 0d52c756a665adc032c791307bc55e392b0186b3
Author: Dan Williams <dan.j.williams(a)intel.com>
Date: Wed Jun 15 19:44:20 2016 -0700
block: convert to device_add_disk()
For block drivers that specify a parent device, convert them to use
device_add_disk().
This conversion was done with the following semantic patch:
@@
struct gendisk *disk;
expression E;
@@
- disk->driverfs_dev = E;
...
- add_disk(disk);
+ device_add_disk(E, disk);
@@
struct gendisk *disk;
expression E1, E2;
@@
- disk->driverfs_dev = E1;
...
E2 = disk;
...
- add_disk(E2);
+ device_add_disk(E1, E2);
...plus some manual fixups for a few missed conversions.
Cc: Jens Axboe <axboe(a)fb.com>
Cc: Keith Busch <keith.busch(a)intel.com>
Cc: Michael S. Tsirkin <mst(a)redhat.com>
Cc: David Woodhouse <dwmw2(a)infradead.org>
Cc: David S. Miller <davem(a)davemloft.net>
Cc: James Bottomley <James.Bottomley(a)hansenpartnership.com>
Cc: Ross Zwisler <ross.zwisler(a)linux.intel.com>
Cc: Konrad Rzeszutek Wilk <konrad.wilk(a)oracle.com>
Cc: Martin K. Petersen <martin.petersen(a)oracle.com>
Reviewed-by: Christoph Hellwig <hch(a)lst.de>
Reviewed-by: Johannes Thumshirn <jthumshirn(a)suse.de>
Signed-off-by: Dan Williams <dan.j.williams(a)intel.com>
commit 52c44d93c26f5a76068c0a8cc83bb8f56f38043d
Author: Dan Williams <dan.j.williams(a)intel.com>
Date: Wed Jun 15 19:43:07 2016 -0700
block: remove ->driverfs_dev
Now that all drivers that specify a ->driverfs_dev have been converted
to device_add_disk(), the pointer can be removed from struct gendisk.
Cc: Jens Axboe <axboe(a)fb.com>
Cc: Ross Zwisler <ross.zwisler(a)linux.intel.com>
Reviewed-by: Christoph Hellwig <hch(a)lst.de>
Reviewed-by: Johannes Thumshirn <jthumshirn(a)suse.de>
Signed-off-by: Dan Williams <dan.j.williams(a)intel.com>
4 years, 6 months
[PATCH 1/2] libnvdimm: add missing macros
by Eric Engestrom
Signed-off-by: Eric Engestrom <eric.engestrom(a)imgtec.com>
---
This can't compile without these macros… Is this header really used by anyone?
Should it be removed, to avoid bit-rot?
---
include/uapi/linux/ndctl.h | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/include/uapi/linux/ndctl.h b/include/uapi/linux/ndctl.h
index 309915f..50ae5e7 100644
--- a/include/uapi/linux/ndctl.h
+++ b/include/uapi/linux/ndctl.h
@@ -15,6 +15,14 @@
#include <linux/types.h>
+#ifdef __GNUC__
+#define __packed __attribute__((packed))
+#else
+#define __packed
+#endif
+
+#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof(arr)[0])
+
struct nd_cmd_smart {
__u32 status;
__u8 data[128];
--
2.9.0
4 years, 6 months
[PATCH v3 0/4] Support DAX for device-mapper linear devices
by Mike Snitzer
Jens, please pick up the first 2 block patches and I'll get the other
2 DM patches staged for 4.8.
v3:
- fixed "warning: context imbalance in 'dm_blk_direct_access' -
different lock contexts for basic block" due to missing
dm_put_live_table in dm_blk_direct_access's dm_get_live_table error
path
- refactored dm-table.c code to centralize checking if all devices in
a DM table support DAX (removed need for target to set
->dax_supported)
- included Yigal Korman's patch to add 'dax' sysfs attribute
Toshi Kani (3):
block: add QUEUE_FLAG_DAX for devices to advertise their DAX support
dm: add infrastructure for DAX support
dm linear: add DAX support
Yigal Korman (1):
block: expose QUEUE_FLAG_DAX in sysfs
block/blk-sysfs.c | 11 +++++++++++
drivers/block/brd.c | 4 +++-
drivers/md/dm-linear.c | 21 ++++++++++++++++++++-
drivers/md/dm-table.c | 44 ++++++++++++++++++++++++++++++++++++++++++-
drivers/md/dm.c | 38 +++++++++++++++++++++++++++++++++++--
drivers/md/dm.h | 1 +
drivers/nvdimm/pmem.c | 1 +
drivers/s390/block/dcssblk.c | 1 +
fs/block_dev.c | 5 +++--
include/linux/blkdev.h | 2 ++
include/linux/device-mapper.h | 10 ++++++++++
include/uapi/linux/dm-ioctl.h | 4 ++--
12 files changed, 133 insertions(+), 9 deletions(-)
--
2.7.4 (Apple Git-66)
4 years, 6 months