[PATCH 1/2] libnvdimm/altmap: Track namespace boundaries in altmap
by Aneesh Kumar K.V
With PFN_MODE_PMEM namespace, the memmap area is allocated from the device
area. Some architectures map the memmap area with large page size. On
architectures like ppc64, 16MB page for memap mapping can map 262144 pfns.
This maps a namespace size of 16G.
When populating memmap region with 16MB page from the device area,
make sure the allocated space is not used to map resources outside this
namespace. Such usage of device area will prevent a namespace destroy.
Add resource end pnf in altmap and use that to check if the memmap area
allocation can map pfn outside the namespace. On ppc64 in such case we fallback
to allocation from memory.
This fix kernel crash reported below:
[ 132.034989] WARNING: CPU: 13 PID: 13719 at mm/memremap.c:133 devm_memremap_pages_release+0x2d8/0x2e0
[ 133.464754] BUG: Unable to handle kernel data access at 0xc00c00010b204000
[ 133.464760] Faulting instruction address: 0xc00000000007580c
[ 133.464766] Oops: Kernel access of bad area, sig: 11 [#1]
[ 133.464771] LE PAGE_SIZE=64K MMU=Hash SMP NR_CPUS=2048 NUMA pSeries
.....
[ 133.464901] NIP [c00000000007580c] vmemmap_free+0x2ac/0x3d0
[ 133.464906] LR [c0000000000757f8] vmemmap_free+0x298/0x3d0
[ 133.464910] Call Trace:
[ 133.464914] [c000007cbfd0f7b0] [c0000000000757f8] vmemmap_free+0x298/0x3d0 (unreliable)
[ 133.464921] [c000007cbfd0f8d0] [c000000000370a44] section_deactivate+0x1a4/0x240
[ 133.464928] [c000007cbfd0f980] [c000000000386270] __remove_pages+0x3a0/0x590
[ 133.464935] [c000007cbfd0fa50] [c000000000074158] arch_remove_memory+0x88/0x160
[ 133.464942] [c000007cbfd0fae0] [c0000000003be8c0] devm_memremap_pages_release+0x150/0x2e0
[ 133.464949] [c000007cbfd0fb70] [c000000000738ea0] devm_action_release+0x30/0x50
[ 133.464955] [c000007cbfd0fb90] [c00000000073a5a4] release_nodes+0x344/0x400
[ 133.464961] [c000007cbfd0fc40] [c00000000073378c] device_release_driver_internal+0x15c/0x250
[ 133.464968] [c000007cbfd0fc80] [c00000000072fd14] unbind_store+0x104/0x110
[ 133.464973] [c000007cbfd0fcd0] [c00000000072ee24] drv_attr_store+0x44/0x70
[ 133.464981] [c000007cbfd0fcf0] [c0000000004a32bc] sysfs_kf_write+0x6c/0xa0
[ 133.464987] [c000007cbfd0fd10] [c0000000004a1dfc] kernfs_fop_write+0x17c/0x250
[ 133.464993] [c000007cbfd0fd60] [c0000000003c348c] __vfs_write+0x3c/0x70
[ 133.464999] [c000007cbfd0fd80] [c0000000003c75d0] vfs_write+0xd0/0x250
Reported-by: Sachin Sant <sachinp(a)linux.vnet.ibm.com>
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar(a)linux.ibm.com>
---
arch/powerpc/mm/init_64.c | 17 ++++++++++++++++-
drivers/nvdimm/pfn_devs.c | 2 ++
include/linux/memremap.h | 1 +
3 files changed, 19 insertions(+), 1 deletion(-)
diff --git a/arch/powerpc/mm/init_64.c b/arch/powerpc/mm/init_64.c
index a44f6281ca3a..4e08246acd79 100644
--- a/arch/powerpc/mm/init_64.c
+++ b/arch/powerpc/mm/init_64.c
@@ -172,6 +172,21 @@ static __meminit void vmemmap_list_populate(unsigned long phys,
vmemmap_list = vmem_back;
}
+static bool altmap_cross_boundary(struct vmem_altmap *altmap, unsigned long start,
+ unsigned long page_size)
+{
+ unsigned long nr_pfn = page_size / sizeof(struct page);
+ unsigned long start_pfn = page_to_pfn((struct page *)start);
+
+ if ((start_pfn + nr_pfn) > altmap->end_pfn)
+ return true;
+
+ if (start_pfn < altmap->base_pfn)
+ return true;
+
+ return false;
+}
+
int __meminit vmemmap_populate(unsigned long start, unsigned long end, int node,
struct vmem_altmap *altmap)
{
@@ -194,7 +209,7 @@ int __meminit vmemmap_populate(unsigned long start, unsigned long end, int node,
* fail due to alignment issues when using 16MB hugepages, so
* fall back to system memory if the altmap allocation fail.
*/
- if (altmap) {
+ if (altmap && !altmap_cross_boundary(altmap, start, page_size)) {
p = altmap_alloc_block_buf(page_size, altmap);
if (!p)
pr_debug("altmap block allocation failed, falling back to system memory");
diff --git a/drivers/nvdimm/pfn_devs.c b/drivers/nvdimm/pfn_devs.c
index 3e7b11cf1aae..a616d69c8224 100644
--- a/drivers/nvdimm/pfn_devs.c
+++ b/drivers/nvdimm/pfn_devs.c
@@ -618,9 +618,11 @@ static int __nvdimm_setup_pfn(struct nd_pfn *nd_pfn, struct dev_pagemap *pgmap)
struct nd_namespace_common *ndns = nd_pfn->ndns;
struct nd_namespace_io *nsio = to_nd_namespace_io(&ndns->dev);
resource_size_t base = nsio->res.start + start_pad;
+ resource_size_t end = nsio->res.end - end_trunc;
struct vmem_altmap __altmap = {
.base_pfn = init_altmap_base(base),
.reserve = init_altmap_reserve(base),
+ .end_pfn = PHYS_PFN(end),
};
memcpy(res, &nsio->res, sizeof(*res));
diff --git a/include/linux/memremap.h b/include/linux/memremap.h
index f8a5b2a19945..c70996fe48c8 100644
--- a/include/linux/memremap.h
+++ b/include/linux/memremap.h
@@ -17,6 +17,7 @@ struct device;
*/
struct vmem_altmap {
const unsigned long base_pfn;
+ const unsigned long end_pfn;
const unsigned long reserve;
unsigned long free;
unsigned long align;
--
2.21.0
2 years, 11 months
Управление транспортом
by Marfa
Транспортная логистика и оптимизация логистических затрат компании.
Транспортная логистика - это система по организации доставки, а именно по перемещению каких-либо материальных предметов, веществ и пр. из одной точки в другую по оптимальному маршруту. Оптимальным считается маршрут, по которому возможно доставить логистический объект в кратчайшие сроки (или предусмотренные сроки) с минимальными затратами, а также с минимальным вредом для объекта доставки.
Обзор:
Блок 1. Транспортная логистика
Преимущества и недостатки собственного транспорта и внешних перевозчиков
Выбор транспортного средства. Увязка параметров груза и транспорта.
Определение потребности в транспортных средствах
Аутсорсинг в транспорте. экспедиторское обслуживание
Выбор экспедитора или перевозчика
Блок 2. Инвестиции в транспорт. Методики расчета эффективности приобретения транспорта.
Методики оценки: свой автопарк или привлеченный
Выбор модели автомобиля для приобретения
Анализ периода замены автопарка
Методы расчета окупаемости инвестиций в собственный транспорт
Блок 3. Методика расчета транспортных тарифов, особенности ценообразования на различных видах транспорта.
методики ценообразования на транспорте
расчет автотранспортных тарифов
Блок 4. Управленческий учет и контроллинг на транспорте
Транспортные затраты и их учет
Распределение транспортных затрат между грузами
Распределение транспортных затрат по точкам доставки и категориям товара
Распределение затрат на клиентами
Бюджетирование автотранспорта
Блок 5. Управление затратами на транспорт
Расчет себестоимости перевозок
Методы снижения затрат на транспортировку в сети компании
Способы снижения затрат на привлеченный автотранспорт
Блок 6. Транспортное обслуживание участников цепочки поставок
транспортировка товара в дистрибуционной сети
транспортировка товара конечным потребителям.
Блок 7. Маршрутизация
Моделирование транспортных сетей и расчет кратчайших расстояний
Методика управления маршрутами в условиях неопределенности и при большом количестве точек доставки
Средства маршрутизации и контроля ТС на маршруте
Блок 8. Особенности городской доставки.
Организация процесса доставки по городу
Контроль работы автотранспорта
Особенности маршрутизация городской доставки.
Лектор-консультант:
Степченков Ярослав Евгеньевич - практик, эксперт и консультант в сфере логистики и операционного менеджмента, проектный менеджер IPMA (D), бизнес-тренер с многолетним опытом проведения открытых и корпоративных тренингов в области логистики и управления производством (закупочная, складская, транспортная логистика, построение логистической службы компании и дистрибуционной логистики, организация производства и материальных потоков). Имеет богатый опыт преподавания, консалтинга и бизнес-консультирования в Украине, и стран СНГ.
За информацией обращаться> http://logistika.com.ua/training/146/transportnaya-logistika-i-optimizaci...
Менеджмент
Интернет
Недвижимость
Больше не получать.
List-Unsubscribe List-Unsubscribe или пожаловаться на Spam
© 2002-2019 Все права защищены.
2 years, 11 months
找邮箱数据
by 找邮箱数据
缺邮箱?缺客户?缺人脉?
帮你搜索全国各行各业的邮箱数据,
软件全自动化,批量输入关键词搜索
免费测试,下载安装即用
百度云盘下载链接: https://pan.baidu.com/s/1exGR_wwjnmYPOfGnFH23tA
提取码: gqju
详情加我QQ:2124008496
2 years, 11 months
做 采 购必须了解的14大供应市场信息
by 您好:
18146185146
-------- 转发邮件信息 --------
发 件 人:gxiam(a)qby.com
发 送 日 期:2019-9-1710:42:09
收 件 人:linux-nvdimm(a)lists.01.org
2 years, 11 months
[PATCH 00/13] nvdimm: Use more common kernel coding style
by Joe Perches
Rather than have a local coding style, use the typical kernel style.
Joe Perches (13):
nvdimm: Use more typical whitespace
nvdimm: Move logical continuations to previous line
nvdimm: Use octal permissions
nvdimm: Use a more common kernel spacing style
nvdimm: Use "unsigned int" in preference to "unsigned"
nvdimm: Add and remove blank lines
nvdimm: Use typical kernel brace styles
nvdimm: Use typical kernel style indentation
nvdimm: btt.h: Neaten #defines to improve readability
nvdimm: namespace_devs: Move assignment operators
nvdimm: Use more common logic testing styles and bare ; positions
nvdimm: namespace_devs: Change progess typo to progress
nvdimm: Miscellaneous neatening
drivers/nvdimm/badrange.c | 22 +-
drivers/nvdimm/blk.c | 39 ++--
drivers/nvdimm/btt.c | 249 +++++++++++----------
drivers/nvdimm/btt.h | 56 ++---
drivers/nvdimm/btt_devs.c | 68 +++---
drivers/nvdimm/bus.c | 138 ++++++------
drivers/nvdimm/claim.c | 50 ++---
drivers/nvdimm/core.c | 42 ++--
drivers/nvdimm/dax_devs.c | 3 +-
drivers/nvdimm/dimm.c | 3 +-
drivers/nvdimm/dimm_devs.c | 107 ++++-----
drivers/nvdimm/e820.c | 2 +-
drivers/nvdimm/label.c | 213 +++++++++---------
drivers/nvdimm/label.h | 6 +-
drivers/nvdimm/namespace_devs.c | 472 +++++++++++++++++++++-------------------
drivers/nvdimm/nd-core.h | 31 +--
drivers/nvdimm/nd.h | 94 ++++----
drivers/nvdimm/nd_virtio.c | 20 +-
drivers/nvdimm/of_pmem.c | 6 +-
drivers/nvdimm/pfn_devs.c | 136 ++++++------
drivers/nvdimm/pmem.c | 57 ++---
drivers/nvdimm/pmem.h | 2 +-
drivers/nvdimm/region.c | 20 +-
drivers/nvdimm/region_devs.c | 160 +++++++-------
drivers/nvdimm/security.c | 138 ++++++------
drivers/nvdimm/virtio_pmem.c | 10 +-
26 files changed, 1115 insertions(+), 1029 deletions(-)
--
2.15.0
2 years, 11 months
~~ EHS风险识别、评估控制及应急管理
by 您好:
07133714161
-------- 转发邮件信息 --------
发 件 人:krktpfe(a)uibr.com
发 送 日 期:2019-9-125:04:15
收 件 人:linux-nvdimm(a)lists.01.org
2 years, 11 months
Ввод объектов в эксплуатацию
by Nina
Строительная деятельность в Украине 2019- 2020 г.
Новые строительные нормы (ДБН) и их применение в проектировании и строительстве. Новый ДБН Б.2.2 12: 2018 "Планировка и застройка территорий". Изменения в проектировании, экспертизе, эксплуатации. Разрешительная процедура в строительстве.
Повестка дня:
- Изменения в законодательстве по вопросам градостроения. Новые строительные нормы (ДБН) и их применение.
- Определение класса последствий
- Изменения в порядке разработки и утверждения проектной документации
- Экспертиза в строительстве
- Разрешительные документы в строительстве
- Ввод объектов в эксплуатацию
- Заключение об оценке воздействия на окружающую среду: порядок получения.
- Лицензирование в строительстве. Новые формы документов.
- Земельные вопросы в строительстве
- Служба заказчика. Новые изменения. Привлечение лицензированных и сертифицированных исполнителей.
- Авторский и технический надзор в новых условиях
- Контроль и надзор в строительстве. Полномочия ДАБІ. Разрешительные документоы. Порядок получения разрешительных документов для каждой группы объектов.
- Технический паспорт. Проведение технической инвентаризации новые законодательные изменения.
- Самовольное строительство. Проблемные объекты недвижимости и средства их выведения в правовое поле. Последняя судебная практика по принятию объектов в эксплуатацию.
Принять участие > http://sdu.in.ua/training/146/stroitelnaya-deyatelnost-v-ukraine-2019--20...
Менеджмент
Интернет
Недвижимость
Не получать почту.
List-Unsubscribe List-Unsubscribe или пожаловаться на Spam
© 2004-2019 Все права защищены.
2 years, 11 months
[PATCH v5] mm/nvdimm: Fix endian conversion issues
by Aneesh Kumar K.V
nd_label->dpa issue was observed when trying to enable the namespace created
with little-endian kernel on a big-endian kernel. That made me run
`sparse` on the rest of the code and other changes are the result of that.
Fixes: d9b83c756953 ("libnvdimm, btt: rework error clearing")
Fixes: 9dedc73a4658 ("libnvdimm/btt: Fix LBA masking during 'free list' population")
Reviewed-by: Vishal Verma <vishal.l.verma(a)intel.com>
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar(a)linux.ibm.com>
---
Changes from V4:
* Rebase to latest kernel
drivers/nvdimm/btt.c | 8 ++++----
drivers/nvdimm/namespace_devs.c | 7 ++++---
2 files changed, 8 insertions(+), 7 deletions(-)
diff --git a/drivers/nvdimm/btt.c b/drivers/nvdimm/btt.c
index a8d56887ec88..3e9f45aec8d1 100644
--- a/drivers/nvdimm/btt.c
+++ b/drivers/nvdimm/btt.c
@@ -392,9 +392,9 @@ static int btt_flog_write(struct arena_info *arena, u32 lane, u32 sub,
arena->freelist[lane].sub = 1 - arena->freelist[lane].sub;
if (++(arena->freelist[lane].seq) == 4)
arena->freelist[lane].seq = 1;
- if (ent_e_flag(ent->old_map))
+ if (ent_e_flag(le32_to_cpu(ent->old_map)))
arena->freelist[lane].has_err = 1;
- arena->freelist[lane].block = le32_to_cpu(ent_lba(ent->old_map));
+ arena->freelist[lane].block = ent_lba(le32_to_cpu(ent->old_map));
return ret;
}
@@ -560,8 +560,8 @@ static int btt_freelist_init(struct arena_info *arena)
* FIXME: if error clearing fails during init, we want to make
* the BTT read-only
*/
- if (ent_e_flag(log_new.old_map) &&
- !ent_normal(log_new.old_map)) {
+ if (ent_e_flag(le32_to_cpu(log_new.old_map)) &&
+ !ent_normal(le32_to_cpu(log_new.old_map))) {
arena->freelist[i].has_err = 1;
ret = arena_clear_freelist_error(arena, i);
if (ret)
diff --git a/drivers/nvdimm/namespace_devs.c b/drivers/nvdimm/namespace_devs.c
index a9c76df12cb9..f779cb2b0c69 100644
--- a/drivers/nvdimm/namespace_devs.c
+++ b/drivers/nvdimm/namespace_devs.c
@@ -1987,7 +1987,7 @@ static struct device *create_namespace_pmem(struct nd_region *nd_region,
nd_mapping = &nd_region->mapping[i];
label_ent = list_first_entry_or_null(&nd_mapping->labels,
typeof(*label_ent), list);
- label0 = label_ent ? label_ent->label : 0;
+ label0 = label_ent ? label_ent->label : NULL;
if (!label0) {
WARN_ON(1);
@@ -2322,8 +2322,9 @@ static struct device **scan_labels(struct nd_region *nd_region)
continue;
/* skip labels that describe extents outside of the region */
- if (nd_label->dpa < nd_mapping->start || nd_label->dpa > map_end)
- continue;
+ if (__le64_to_cpu(nd_label->dpa) < nd_mapping->start ||
+ __le64_to_cpu(nd_label->dpa) > map_end)
+ continue;
i = add_namespace_resource(nd_region, nd_label, devs, count);
if (i < 0)
--
2.21.0
2 years, 11 months
Бизнес-обучения.
by gp-card.website
Бизнес-мероприятия этой недели
12-13 сентября
Для ассистентов, помощников руководителей: мотивация, организация работы, эффективная коммуникация.
17 сентября
Строительная деятельность в Украине 2019- 2020 г.
23 сентября
ВЭД - контракты в условиях новых торговых осложнений, возможностей и либерализации валютного контроля
24 сентября
"ФОП-контроль" Все о контроле, проверках и рисках при работе с ФЛП
25-26 сентября
Программа для специалистов по закупкам
25-26 сентября
Транспортная логистика и оптимизация логистических затрат компании
27-28 сентября
Управленческий учет. Показатели эффективности. Бюджеты.
Последние обновления на сайте
Менеджмент
Интернет
Недвижимость
Если у Вас возникнут дополнительные вопросы - обращайтесь, мы всегда рады Вам помочь!
--
С уважением,
Фрида Даниловна
Web: ved.org.ua
Сообщение является коммерческим предложением, адресовано на электронный адрес linux-nvdimm(a)lists.01.org.
Чтобы отписаться от рассылки, пройдите по этой ссылке:
List-Unsubscribe from the newsletter оr complain аbоut SPАМ.
2 years, 11 months
[GIT PULL] libnvdimm fix for v5.3-rc8
by Dan Williams
Hi Linus, please pull from:
git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm
tags/libnvdimm-fix-5.3-rc8
...to receive a fix for a regression introduced in v5.3-rc1. The
latest version has shipped in -next with no reported issues.
---
The following changes since commit a55aa89aab90fae7c815b0551b07be37db359d76:
Linux 5.3-rc6 (2019-08-25 12:01:23 -0700)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm
tags/libnvdimm-fix-5.3-rc8
for you to fetch changes up to 274b924088e93593c76fb122d24bc0ef18d0ddf4:
libnvdimm/pfn: Fix namespace creation on misaligned addresses
(2019-08-28 10:33:13 -0700)
----------------------------------------------------------------
libnvdimm fix v5.3-rc8
- Restore support for 1GB alignment namespaces, truncate the end of
misaligned namespaces.
----------------------------------------------------------------
Jeff Moyer (1):
libnvdimm/pfn: Fix namespace creation on misaligned addresses
drivers/nvdimm/pfn_devs.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
2 years, 11 months