* linux-next: build failure after merge of the akpm-current tree
From: Stephen Rothwell @ 2017-07-10 5:21 UTC (permalink / raw)
To: Andrew Morton, Al Viro
Cc: Linux-Next Mailing List, Linux Kernel Mailing List, Ian Abbott
Hi all,
After merging the akpm-current tree, today's linux-next build (arm
multi_v7_defconfig) failed like this:
In file included from include/uapi/linux/stddef.h:1:0,
from include/linux/stddef.h:4,
from include/uapi/linux/posix_types.h:4,
from include/uapi/linux/types.h:13,
from include/linux/types.h:5,
from include/linux/syscalls.h:71,
from fs/dcache.c:17:
fs/dcache.c: In function 'release_dentry_name_snapshot':
include/linux/compiler.h:542:38: error: call to '__compiletime_assert_305' declared with attribute error: pointer type mismatch in container_of()
_compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
^
include/linux/compiler.h:525:4: note: in definition of macro '__compiletime_assert'
prefix ## suffix(); \
^
include/linux/compiler.h:542:2: note: in expansion of macro '_compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
^
include/linux/build_bug.h:46:37: note: in expansion of macro 'compiletime_assert'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^
include/linux/kernel.h:860:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^
fs/dcache.c:305:7: note: in expansion of macro 'container_of'
p = container_of(name->name, struct external_name, name[0]);
^
Caused by commit
2f23633e9c84 ("kernel.h: handle pointers to arrays better in container_of()")
interacting with commit
49d31c2f389a ("dentry name snapshots")
from the vfs tree.
I applied the following fix patch. I hope it is ok. If so, please
apply to the vfs tree.
--
Cheers,
Stephen Rothwell
From: Stephen Rothwell <sfr@canb.auug.org.au>
Date: Mon, 10 Jul 2017 15:09:12 +1000
Subject: [PATCH] fix type for "dentry name snapshots"
Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
---
include/linux/dcache.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/include/linux/dcache.h b/include/linux/dcache.h
index fcaba2d8638a..aae1cdb76851 100644
--- a/include/linux/dcache.h
+++ b/include/linux/dcache.h
@@ -597,8 +597,8 @@ static inline struct inode *d_real_inode(const struct dentry *dentry)
}
struct name_snapshot {
- const char *name;
- char inline_name[DNAME_INLINE_LEN];
+ const unsigned char *name;
+ unsigned char inline_name[DNAME_INLINE_LEN];
};
void take_dentry_name_snapshot(struct name_snapshot *, struct dentry *);
void release_dentry_name_snapshot(struct name_snapshot *);
--
2.13.2
^ permalink raw reply related
* linux-next: manual merge of the akpm-current tree with the vfs tree
From: Stephen Rothwell @ 2017-07-10 4:41 UTC (permalink / raw)
To: Andrew Morton, Al Viro
Cc: Linux-Next Mailing List, Linux Kernel Mailing List, David Howells,
Naoya Horiguchi
Hi Andrew,
Today's linux-next merge of the akpm-current tree got a conflict in:
fs/hugetlbfs/inode.c
between commit:
4a25220d4e43 ("hugetlbfs: Implement show_options")
from the vfs tree and commit:
25153b1fbd8a ("mm: hwpoison: dissolve in-use hugepage in unrecoverable memory error")
from the akpm-current tree.
I fixed it up (see below) and can carry the fix as necessary. This
is now fixed as far as linux-next is concerned, but any non trivial
conflicts should be mentioned to your upstream maintainer when your tree
is submitted for merging. You may also want to consider cooperating
with the maintainer of the conflicting tree to minimise any particularly
complex conflicts.
--
Cheers,
Stephen Rothwell
diff --cc fs/hugetlbfs/inode.c
index 99b3b9836575,52388611635e..000000000000
--- a/fs/hugetlbfs/inode.c
+++ b/fs/hugetlbfs/inode.c
@@@ -851,46 -851,16 +851,56 @@@ static int hugetlbfs_migrate_page(struc
return MIGRATEPAGE_SUCCESS;
}
+/*
+ * Display the mount options in /proc/mounts.
+ */
+static int hugetlbfs_show_options(struct seq_file *m, struct dentry *root)
+{
+ struct hugetlbfs_sb_info *sbinfo = HUGETLBFS_SB(root->d_sb);
+ struct hugepage_subpool *spool = sbinfo->spool;
+ unsigned long hpage_size = huge_page_size(sbinfo->hstate);
+ unsigned hpage_shift = huge_page_shift(sbinfo->hstate);
+ char mod;
+
+ if (!uid_eq(sbinfo->uid, GLOBAL_ROOT_UID))
+ seq_printf(m, ",uid=%u",
+ from_kuid_munged(&init_user_ns, sbinfo->uid));
+ if (!gid_eq(sbinfo->gid, GLOBAL_ROOT_GID))
+ seq_printf(m, ",gid=%u",
+ from_kgid_munged(&init_user_ns, sbinfo->gid));
+ if (sbinfo->mode != 0755)
+ seq_printf(m, ",mode=%o", sbinfo->mode);
+ if (sbinfo->max_inodes != -1)
+ seq_printf(m, ",nr_inodes=%lu", sbinfo->max_inodes);
+
+ hpage_size /= 1024;
+ mod = 'K';
+ if (hpage_size >= 1024) {
+ hpage_size /= 1024;
+ mod = 'M';
+ }
+ seq_printf(m, ",pagesize=%lu%c", hpage_size, mod);
+ if (spool) {
+ if (spool->max_hpages != -1)
+ seq_printf(m, ",size=%llu",
+ (unsigned long long)spool->max_hpages << hpage_shift);
+ if (spool->min_hpages != -1)
+ seq_printf(m, ",min_size=%llu",
+ (unsigned long long)spool->min_hpages << hpage_shift);
+ }
+ return 0;
+}
+
+ static int hugetlbfs_error_remove_page(struct address_space *mapping,
+ struct page *page)
+ {
+ struct inode *inode = mapping->host;
+
+ remove_huge_page(page);
+ hugetlb_fix_reserve_counts(inode);
+ return 0;
+ }
+
static int hugetlbfs_statfs(struct dentry *dentry, struct kstatfs *buf)
{
struct hugetlbfs_sb_info *sbinfo = HUGETLBFS_SB(dentry->d_sb);
^ permalink raw reply
* linux-next: manual merge of the rtc tree with Linus' tree
From: Stephen Rothwell @ 2017-07-10 3:57 UTC (permalink / raw)
To: Alexandre Belloni
Cc: Linux-Next Mailing List, Linux Kernel Mailing List,
Miroslav Lichvar, John Stultz, Benjamin Gaignard
Hi Alexandre,
Today's linux-next merge of the rtc tree got a conflict in:
tools/testing/selftests/timers/Makefile
between commit:
767392565a3e ("kselftests: timers: Add test for frequency step")
from Linus' tree and commit:
c96396f0780e ("tools: timer: add rtctest_setdate")
from the rtc tree.
I fixed it up (see below) and can carry the fix as necessary. This
is now fixed as far as linux-next is concerned, but any non trivial
conflicts should be mentioned to your upstream maintainer when your tree
is submitted for merging. You may also want to consider cooperating
with the maintainer of the conflicting tree to minimise any particularly
complex conflicts.
--
Cheers,
Stephen Rothwell
diff --cc tools/testing/selftests/timers/Makefile
index 5801bbefbe89,54481f17518a..000000000000
--- a/tools/testing/selftests/timers/Makefile
+++ b/tools/testing/selftests/timers/Makefile
@@@ -8,8 -8,8 +8,8 @@@ TEST_GEN_PROGS = posix_timers nanoslee
inconsistency-check raw_skew threadtest rtctest
TEST_GEN_PROGS_EXTENDED = alarmtimer-suspend valid-adjtimex adjtick change_skew \
- skew_consistency clocksource-switch leap-a-day \
+ skew_consistency clocksource-switch freq-step leap-a-day \
- leapcrash set-tai set-2038 set-tz
+ leapcrash set-tai set-2038 set-tz rtctest_setdate
include ../lib.mk
^ permalink raw reply
* linux-next: please clean up the clockevents tree
From: Stephen Rothwell @ 2017-07-10 3:30 UTC (permalink / raw)
To: Daniel Lezcano; +Cc: Linux-Next Mailing List, Linux Kernel Mailing List
Hi Daniel,
Please clean up the clockevents tree
(git://git.linaro.org/people/daniel.lezcano/linux.git#clockevents/next)
as all its commits have been merged into other tree(s) as different
commits (so all it is doing is adding lots of conflicts :-().
--
Cheers,
Stephen Rothwell
^ permalink raw reply
* linux-next: build failure after merge of the spi tree
From: Stephen Rothwell @ 2017-07-10 3:26 UTC (permalink / raw)
To: Mark Brown; +Cc: Linux-Next Mailing List, Linux Kernel Mailing List, Jiada Wang
Hi Mark,
After merging the spi tree, today's linux-next build (x86_64 allmodconfig)
failed like this:
drivers/spi/spi-imx.c: In function 'spi_imx_setupxfer':
drivers/spi/spi-imx.c:1007:16: error: 'config' undeclared (first use in this function)
mask = (1 << config.bpw) - 1;
^
Caused by commit
a0cc330240c9 ("spi: imx: dynamic burst length adjust for PIO mode")
interacting with commit
d52345b6cf8e ("spi: imx: put struct spi_imx_config members into driver private struct")
from Linus' tree.
I am not sure why this has only shown up now.
Since it is the only thing left in the spi tree, I have just dropped
that tree for today.
--
Cheers,
Stephen Rothwell
^ permalink raw reply
* Re: linux-next: build failure after merge of the vfs tree
From: Al Viro @ 2017-07-10 2:34 UTC (permalink / raw)
To: Stephen Rothwell
Cc: Linux-Next Mailing List, Linux Kernel Mailing List, David Howells,
Jeremy Kerr, Linux PPC Development List
In-Reply-To: <20170710121511.1995914e@canb.auug.org.au>
On Mon, Jul 10, 2017 at 12:15:11PM +1000, Stephen Rothwell wrote:
> Hi Al,
> Caused by commit
>
> 4f9365d9e2e7 ("spufs: Implement show_options")
Obvious incremental follows, will fold and push
diff --git a/arch/powerpc/platforms/cell/spufs/inode.c b/arch/powerpc/platforms/cell/spufs/inode.c
index 27a51a60bc33..e210d69beeee 100644
--- a/arch/powerpc/platforms/cell/spufs/inode.c
+++ b/arch/powerpc/platforms/cell/spufs/inode.c
@@ -608,15 +608,16 @@ static const match_table_t spufs_tokens = {
static int spufs_show_options(struct seq_file *m, struct dentry *root)
{
struct spufs_sb_info *sbi = spufs_get_sb_info(root->d_sb);
+ struct inode *inode = root->d_inode;
- if (!uid_eq(root->i_uid, GLOBAL_ROOT_UID))
+ if (!uid_eq(inode->i_uid, GLOBAL_ROOT_UID))
seq_printf(m, ",uid=%u",
- from_kuid_munged(&init_user_ns, root->i_uid));
- if (!gid_eq(root->i_gid, GLOBAL_ROOT_GID))
+ from_kuid_munged(&init_user_ns, inode->i_uid));
+ if (!gid_eq(inode->i_gid, GLOBAL_ROOT_GID))
seq_printf(m, ",gid=%u",
- from_kgid_munged(&init_user_ns, root->i_gid));
- if (root->i_mode & S_IALLUGO != 0775)
- seq_printf(m, ",mode=%o", root->i_mode);
+ from_kgid_munged(&init_user_ns, inode->i_gid));
+ if (inode->i_mode & S_IALLUGO != 0775)
+ seq_printf(m, ",mode=%o", inode->i_mode);
if (sbi->debug)
seq_puts(m, ",debug");
return 0;
^ permalink raw reply related
* linux-next: build failure after merge of the vfs tree
From: Stephen Rothwell @ 2017-07-10 2:15 UTC (permalink / raw)
To: Al Viro
Cc: Linux-Next Mailing List, Linux Kernel Mailing List, David Howells,
Jeremy Kerr, Linux PPC Development List
Hi Al,
After merging the vfs tree, today's linux-next build (powerpc
ppc64_defconfig) failed like this:
arch/powerpc/platforms/cell/spufs/inode.c: In function 'spufs_show_options':
arch/powerpc/platforms/cell/spufs/inode.c:612:18: error: 'struct dentry' has no member named 'i_uid'
if (!uid_eq(root->i_uid, GLOBAL_ROOT_UID))
^
arch/powerpc/platforms/cell/spufs/inode.c:614:43: error: 'struct dentry' has no member named 'i_uid'
from_kuid_munged(&init_user_ns, root->i_uid));
^
arch/powerpc/platforms/cell/spufs/inode.c:615:18: error: 'struct dentry' has no member named 'i_gid'
if (!gid_eq(root->i_gid, GLOBAL_ROOT_GID))
^
arch/powerpc/platforms/cell/spufs/inode.c:617:43: error: 'struct dentry' has no member named 'i_gid'
from_kgid_munged(&init_user_ns, root->i_gid));
^
arch/powerpc/platforms/cell/spufs/inode.c:618:10: error: 'struct dentry' has no member named 'i_mode'
if (root->i_mode & S_IALLUGO != 0775)
^
arch/powerpc/platforms/cell/spufs/inode.c:619:33: error: 'struct dentry' has no member named 'i_mode'
seq_printf(m, ",mode=%o", root->i_mode);
^
Caused by commit
4f9365d9e2e7 ("spufs: Implement show_options")
A bit hard to revert this, so I added the below patch for now ... please
fix it up.
Also, isn't this a bit late for this merge window?
From: Stephen Rothwell <sfr@canb.auug.org.au>
Date: Mon, 10 Jul 2017 11:05:31 +1000
Subject: [PATCH] disable the spufs show options for now
Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
---
arch/powerpc/platforms/cell/spufs/inode.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/arch/powerpc/platforms/cell/spufs/inode.c b/arch/powerpc/platforms/cell/spufs/inode.c
index 27a51a60bc33..fafbf88326d8 100644
--- a/arch/powerpc/platforms/cell/spufs/inode.c
+++ b/arch/powerpc/platforms/cell/spufs/inode.c
@@ -609,6 +609,7 @@ static int spufs_show_options(struct seq_file *m, struct dentry *root)
{
struct spufs_sb_info *sbi = spufs_get_sb_info(root->d_sb);
+#if 0
if (!uid_eq(root->i_uid, GLOBAL_ROOT_UID))
seq_printf(m, ",uid=%u",
from_kuid_munged(&init_user_ns, root->i_uid));
@@ -617,6 +618,7 @@ static int spufs_show_options(struct seq_file *m, struct dentry *root)
from_kgid_munged(&init_user_ns, root->i_gid));
if (root->i_mode & S_IALLUGO != 0775)
seq_printf(m, ",mode=%o", root->i_mode);
+#endif
if (sbi->debug)
seq_puts(m, ",debug");
return 0;
--
2.13.2
--
Cheers,
Stephen Rothwell
^ permalink raw reply related
* linux-next: manual merge of the unicore32 tree with the kbuild tree
From: Stephen Rothwell @ 2017-07-10 0:18 UTC (permalink / raw)
To: Xuetao Guan, Masahiro Yamada
Cc: Linux-Next Mailing List, Linux Kernel Mailing List
Hi Xuetao,
Today's linux-next merge of the unicore32 tree got a conflict in:
arch/unicore32/include/asm/Kbuild
between commits:
e8c83e6b045c ("unicore32: move generic-y of exported headers to uapi/asm/Kbuild")
from the kbuild tree and commits:
bb3d836a8767 ("unicore32-oldabi: add stat.h support for UNICORE32_OLDABI")
bc27113620ca ("unicore32-oldabi: add oldabi syscall interface")
from the unicore32 tree.
I fixed it up (see below) and can carry the fix as necessary. This
is now fixed as far as linux-next is concerned, but any non trivial
conflicts should be mentioned to your upstream maintainer when your tree
is submitted for merging. You may also want to consider cooperating
with the maintainer of the conflicting tree to minimise any particularly
complex conflicts.
Actually, signal.h and stat.h should be removed from
arch/unicore32/include/uapi/asm/Kbuild as well ...
--
Cheers,
Stephen Rothwell
diff --cc arch/unicore32/include/asm/Kbuild
index fda7e2153086,8578702d4998..000000000000
--- a/arch/unicore32/include/asm/Kbuild
+++ b/arch/unicore32/include/asm/Kbuild
@@@ -20,17 -27,35 +20,16 @@@ generic-y += kprobes.
generic-y += local.h
generic-y += mcs_spinlock.h
generic-y += mm-arch-hooks.h
-generic-y += mman.h
generic-y += module.h
-generic-y += msgbuf.h
-generic-y += param.h
generic-y += parport.h
generic-y += percpu.h
-generic-y += poll.h
-generic-y += posix_types.h
generic-y += preempt.h
-generic-y += resource.h
generic-y += sections.h
generic-y += segment.h
-generic-y += sembuf.h
generic-y += serial.h
-generic-y += setup.h
-generic-y += shmbuf.h
-generic-y += shmparam.h
-generic-y += siginfo.h
generic-y += sizes.h
- generic-y += syscalls.h
-generic-y += socket.h
-generic-y += sockios.h
-generic-y += statfs.h
-generic-y += swab.h
-generic-y += termbits.h
-generic-y += termios.h
generic-y += topology.h
generic-y += trace_clock.h
-generic-y += types.h
-generic-y += ucontext.h
generic-y += unaligned.h
generic-y += user.h
generic-y += vga.h
^ permalink raw reply
* Re: linux-next: build warning after merge of the vfs tree
From: Stephen Rothwell @ 2017-07-09 23:34 UTC (permalink / raw)
To: Al Viro; +Cc: Linux-Next Mailing List, Linux Kernel Mailing List
In-Reply-To: <20170703105347.0ebf12a3@canb.auug.org.au>
Hi Al,
On Mon, 3 Jul 2017 10:53:47 +1000 Stephen Rothwell <sfr@canb.auug.org.au> wrote:
>
> After merging the vfs tree, today's linux-next build (x86_64 allmodconfig)
> produced this warning:
>
> drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c: In function 'kiblnd_send':
> drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:1643:2: warning: ignoring return value of 'copy_from_iter', declared with attribute warn_unused_result [-Wunused-result]
> copy_from_iter(&ibmsg->ibm_u.immediate.ibim_payload, IBLND_MSG_SIZE,
> ^
> drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c: In function 'kiblnd_recv':
> drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:1744:3: warning: ignoring return value of 'copy_to_iter', declared with attribute warn_unused_result [-Wunused-result]
> copy_to_iter(&rxmsg->ibm_u.immediate.ibim_payload,
> ^
>
> Introduced by commit
>
> aa28de275a24 ("iov_iter/hardening: move object size checks to inlined part")
These are now in Linus' tree ...
--
Cheers,
Stephen Rothwell
^ permalink raw reply
* Re: [PATCH v1] i2c: Provide a stub for i2c_detect_slave_mode()
From: Wolfram Sang @ 2017-07-08 19:55 UTC (permalink / raw)
To: Andy Shevchenko; +Cc: linux-i2c, Luis.Oliveira, linux-next, Jarkko Nikula
In-Reply-To: <20170706172617.39817-1-andriy.shevchenko@linux.intel.com>
[-- Attachment #1: Type: text/plain, Size: 915 bytes --]
On Thu, Jul 06, 2017 at 08:26:17PM +0300, Andy Shevchenko wrote:
> Drivers would like to call i2c_detect_slave_mode() even if !I2C_SLAVE.
> Give them what they want to,
>
> Otherwise kernel will not compile:
> drivers/i2c/busses/i2c-designware-platdrv.c: In function ‘dw_i2c_plat_probe’:
> drivers/i2c/busses/i2c-designware-platdrv.c:331:6: error: implicit declaration of function ‘i2c_detect_slave_mode’ [-Werror=implicit-function-declaration]
> if (i2c_detect_slave_mode(&pdev->dev))
> ^~~~~~~~~~~~~~~~~~~~~
> cc1: some warnings being treated as errors
>
> Fixes: 6e38cf3b4421 ("i2c: designware: Let slave adapter support be optional")
> Reported-by: Abdul Haleem <abdhalee@linux.vnet.ibm.com>
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
I'll apply it and push out. Buildbot found this issue as well and should
give me a success report...
Thanks!
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply
* Re: [PATCH v2 1/2] drivers: dma-coherent: Fix dev->cma_area vs dev->dma_mem breakage
From: Robin Murphy @ 2017-07-07 17:55 UTC (permalink / raw)
To: Vladimir Murzin, Christoph Hellwig, Vitaly Kuzmichev
Cc: gregkh, m.szyprowski, linux-kernel, linux-next, George G. Davis
In-Reply-To: <451e9f50-3e47-1554-ae62-be5244cc1869@arm.com>
On 07/07/17 17:44, Vladimir Murzin wrote:
> On 07/07/17 17:06, Robin Murphy wrote:
>> On 07/07/17 16:40, Vladimir Murzin wrote:
>>> Christoph,
>>>
>>> On 07/07/17 15:27, Christoph Hellwig wrote:
>>>> Vladimir,
>>>>
>>>> this is why I really didn't like overloading the current
>>>> dma coherent infrastructure with the global pool.
>>>>
>>>> And this new patch seems like piling hacks over hacks. I think we
>>>> should go back and make sure allocations from the global coherent
>>>> pool are done by the dma ops implementation, and not before calling
>>>> into them - preferably still reusing the common code for it.
>>>>
>>>> Vladimir or Vitaly - can you look into that?
>>>>
>>>
>>> It is really sad that Vitaly and George did not join to discussions earlier,
>>> so we could avoid being in situation like this.
>>>
>>> Likely I'm missing something, but what should happen if device relies on
>>> dma_contiguous_default_area?
>>>
>>> Originally, intention behind dma-default was to simplify things, so instead of
>>>
>>> reserved-memory {
>>> #address-cells = <1>;
>>> #size-cells = <1>;
>>> ranges;
>>>
>>> coherent_dma: linux,dma {
>>> compatible = "shared-dma-pool";
>>> no-map;
>>> reg = <0x78000000 0x800000>;
>>> };
>>> };
>>>
>>>
>>> dev0: dev@12300000 {
>>> memory-region = <&coherent_dma>;
>>> /* ... */
>>> };
>>>
>>> dev1: dev@12500000 {
>>> memory-region = <&coherent_dma>;
>>> /* ... */
>>> };
>>>
>>> dev2: dev@12600000 {
>>> memory-region = <&coherent_dma>;
>>> /* ... */
>>> };
>>>
>>> in device tree we could simply have
>>>
>>> reserved-memory {
>>> #address-cells = <1>;
>>> #size-cells = <1>;
>>> ranges;
>>>
>>> coherent_dma: linux,dma {
>>> compatible = "shared-dma-pool";
>>> no-map;
>>> reg = <0x78000000 0x800000>;
>>> linux,dma-default;
>>> };
>>> };
>>>
>>> and that just work in my (NOMMU) case because there is no CMA there...
>>>
>>> However, given that dma-default is being overloaded and there are no device
>>> tree users merged yet, I would not object stepping back, reverting "drivers:
>>> dma-coherent: Introduce default DMA pool" and cooperatively rethinking
>>> design/implementation, so every party gets happy.
>>
>> I don't think we need to go that far, I reckon it would be clear enough
>> to just split the per-device vs. global pool interfaces, something like
>> I've sketched out below (such that the ops->alloc implementation calls
>> dma_alloc_from_global_coherent() if dma_alloc_from_contiguous() fails).
>
> Would not we need also release and mmap variants?
Sure, that was just bashed out in 2 minutes and diffed into an email on
the assumption that code would help illustrate the general idea I had in
mind more clearly than prose alone. I'm certain it won't even compile
as-is ;)
Robin.
^ permalink raw reply
* Re: [PATCH v2 1/2] drivers: dma-coherent: Fix dev->cma_area vs dev->dma_mem breakage
From: Vladimir Murzin @ 2017-07-07 16:44 UTC (permalink / raw)
To: Robin Murphy, Christoph Hellwig, Vitaly Kuzmichev
Cc: gregkh, m.szyprowski, linux-kernel, linux-next, George G. Davis
In-Reply-To: <6f26f0d9-506a-76bf-1410-19b00162c4a1@arm.com>
On 07/07/17 17:06, Robin Murphy wrote:
> On 07/07/17 16:40, Vladimir Murzin wrote:
>> Christoph,
>>
>> On 07/07/17 15:27, Christoph Hellwig wrote:
>>> Vladimir,
>>>
>>> this is why I really didn't like overloading the current
>>> dma coherent infrastructure with the global pool.
>>>
>>> And this new patch seems like piling hacks over hacks. I think we
>>> should go back and make sure allocations from the global coherent
>>> pool are done by the dma ops implementation, and not before calling
>>> into them - preferably still reusing the common code for it.
>>>
>>> Vladimir or Vitaly - can you look into that?
>>>
>>
>> It is really sad that Vitaly and George did not join to discussions earlier,
>> so we could avoid being in situation like this.
>>
>> Likely I'm missing something, but what should happen if device relies on
>> dma_contiguous_default_area?
>>
>> Originally, intention behind dma-default was to simplify things, so instead of
>>
>> reserved-memory {
>> #address-cells = <1>;
>> #size-cells = <1>;
>> ranges;
>>
>> coherent_dma: linux,dma {
>> compatible = "shared-dma-pool";
>> no-map;
>> reg = <0x78000000 0x800000>;
>> };
>> };
>>
>>
>> dev0: dev@12300000 {
>> memory-region = <&coherent_dma>;
>> /* ... */
>> };
>>
>> dev1: dev@12500000 {
>> memory-region = <&coherent_dma>;
>> /* ... */
>> };
>>
>> dev2: dev@12600000 {
>> memory-region = <&coherent_dma>;
>> /* ... */
>> };
>>
>> in device tree we could simply have
>>
>> reserved-memory {
>> #address-cells = <1>;
>> #size-cells = <1>;
>> ranges;
>>
>> coherent_dma: linux,dma {
>> compatible = "shared-dma-pool";
>> no-map;
>> reg = <0x78000000 0x800000>;
>> linux,dma-default;
>> };
>> };
>>
>> and that just work in my (NOMMU) case because there is no CMA there...
>>
>> However, given that dma-default is being overloaded and there are no device
>> tree users merged yet, I would not object stepping back, reverting "drivers:
>> dma-coherent: Introduce default DMA pool" and cooperatively rethinking
>> design/implementation, so every party gets happy.
>
> I don't think we need to go that far, I reckon it would be clear enough
> to just split the per-device vs. global pool interfaces, something like
> I've sketched out below (such that the ops->alloc implementation calls
> dma_alloc_from_global_coherent() if dma_alloc_from_contiguous() fails).
Would not we need also release and mmap variants?
>
> If anyone wants to take that and run with it, feel free.
>
> Robin.
>
> ----->8-----
> diff --git a/drivers/base/dma-coherent.c b/drivers/base/dma-coherent.c
> index 640a7e63c453..e6393c6d8359 100644
> --- a/drivers/base/dma-coherent.c
> +++ b/drivers/base/dma-coherent.c
> @@ -143,6 +143,44 @@ void *dma_mark_declared_memory_occupied(struct
> device *dev,
> }
> EXPORT_SYMBOL(dma_mark_declared_memory_occupied);
>
> +static void *__dma_alloc_from_coherent(struct dma_coherent_mem *mem,
> ssize_t size,
> + dma_addr_t *dma_handle)
> +{
> + int order = get_order(size);
> + unsigned long flags;
> + int pageno;
> + int dma_memory_map;
> + void *ret;
> +
> + spin_lock_irqsave(&mem->spinlock, flags);
> +
> + if (unlikely(size > (mem->size << PAGE_SHIFT)))
> + goto err;
> +
> + pageno = bitmap_find_free_region(mem->bitmap, mem->size, order);
> + if (unlikely(pageno < 0))
> + goto err;
> +
> + /*
> + * Memory was found in the coherent area.
> + */
> + *dma_handle = mem->device_base + (pageno << PAGE_SHIFT);
> + ret = mem->virt_base + (pageno << PAGE_SHIFT);
> + dma_memory_map = (mem->flags & DMA_MEMORY_MAP);
> + spin_unlock_irqrestore(&mem->spinlock, flags);
> + if (dma_memory_map)
> + memset(ret, 0, size);
> + else
> + memset_io(ret, 0, size);
> +
> + return ret;
> +
> +err:
> + spin_unlock_irqrestore(&mem->spinlock, flags);
> + return NULL;
> +}
> +EXPORT_SYMBOL(dma_alloc_from_coherent);
We already export dma_alloc_from_coherent
> +
> /**
> * dma_alloc_from_coherent() - try to allocate memory from the
> per-device coherent area
> *
> @@ -162,10 +200,6 @@ int dma_alloc_from_coherent(struct device *dev,
> ssize_t size,
> dma_addr_t *dma_handle, void **ret)
> {
> struct dma_coherent_mem *mem;
> - int order = get_order(size);
> - unsigned long flags;
> - int pageno;
> - int dma_memory_map;
>
> if (!dev)
> return 0;
> @@ -173,32 +207,10 @@ int dma_alloc_from_coherent(struct device *dev,
> ssize_t size,
> if (!mem)
> return 0;
>
> - *ret = NULL;
> - spin_lock_irqsave(&mem->spinlock, flags);
> + *ret = __dma_alloc_from_coherent(mem, size, dma_handle);
> + if (*ret)
> + return 1;
>
> - if (unlikely(size > (mem->size << PAGE_SHIFT)))
> - goto err;
> -
> - pageno = bitmap_find_free_region(mem->bitmap, mem->size, order);
> - if (unlikely(pageno < 0))
> - goto err;
> -
> - /*
> - * Memory was found in the per-device area.
> - */
> - *dma_handle = mem->device_base + (pageno << PAGE_SHIFT);
> - *ret = mem->virt_base + (pageno << PAGE_SHIFT);
> - dma_memory_map = (mem->flags & DMA_MEMORY_MAP);
> - spin_unlock_irqrestore(&mem->spinlock, flags);
> - if (dma_memory_map)
> - memset(*ret, 0, size);
> - else
> - memset_io(*ret, 0, size);
> -
> - return 1;
> -
> -err:
> - spin_unlock_irqrestore(&mem->spinlock, flags);
> /*
> * In the case where the allocation can not be satisfied from the
> * per-device area, try to fall back to generic memory if the
> @@ -208,6 +220,15 @@ int dma_alloc_from_coherent(struct device *dev,
> ssize_t size,
> }
> EXPORT_SYMBOL(dma_alloc_from_coherent);
>
> +void *dma_alloc_from_global_coherent(ssize_t size, dma_addr_t *dma_handle)
> +{
> + if (!dma_coherent_default_memory)
> + return NULL;
> +
> + return __dma_alloc_from_coherent(dma_coherent_default_memory, size,
> + handle);
^^^^^^
dma_handle
> +}
> +
EXPORT_SYMBOL(dma_release_from_coherent); ?
> /**
> * dma_release_from_coherent() - try to free the memory allocated from
> per-device coherent memory pool
> * @dev: device from which the memory was allocated
>
Cheers
Vladimir
^ permalink raw reply
* Re: Today's linux-next build fail on powerpc
From: Andy Shevchenko @ 2017-07-07 16:36 UTC (permalink / raw)
To: Abdul Haleem
Cc: Luis Oliveira, linuxppc-dev, linux-kernel, linux-next,
Stephen Rothwell, Wolfram Sang, linux-i2c
In-Reply-To: <1499320823.19784.17.camel@abdul.in.ibm.com>
On Thu, Jul 6, 2017 at 9:00 AM, Abdul Haleem
<abdhalee@linux.vnet.ibm.com> wrote:
> Hi Luis,
>
> next-20170705 fails to build on powerpc with below errors.
Hi,
I had sent a fix yesterday. Had you chance to test it?
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply
* Re: [PATCH v2 1/2] drivers: dma-coherent: Fix dev->cma_area vs dev->dma_mem breakage
From: Robin Murphy @ 2017-07-07 16:06 UTC (permalink / raw)
To: Vladimir Murzin, Christoph Hellwig, Vitaly Kuzmichev
Cc: gregkh, m.szyprowski, linux-kernel, linux-next, George G. Davis
In-Reply-To: <c9677667-e4c1-1384-04e4-e06a962feed9@arm.com>
On 07/07/17 16:40, Vladimir Murzin wrote:
> Christoph,
>
> On 07/07/17 15:27, Christoph Hellwig wrote:
>> Vladimir,
>>
>> this is why I really didn't like overloading the current
>> dma coherent infrastructure with the global pool.
>>
>> And this new patch seems like piling hacks over hacks. I think we
>> should go back and make sure allocations from the global coherent
>> pool are done by the dma ops implementation, and not before calling
>> into them - preferably still reusing the common code for it.
>>
>> Vladimir or Vitaly - can you look into that?
>>
>
> It is really sad that Vitaly and George did not join to discussions earlier,
> so we could avoid being in situation like this.
>
> Likely I'm missing something, but what should happen if device relies on
> dma_contiguous_default_area?
>
> Originally, intention behind dma-default was to simplify things, so instead of
>
> reserved-memory {
> #address-cells = <1>;
> #size-cells = <1>;
> ranges;
>
> coherent_dma: linux,dma {
> compatible = "shared-dma-pool";
> no-map;
> reg = <0x78000000 0x800000>;
> };
> };
>
>
> dev0: dev@12300000 {
> memory-region = <&coherent_dma>;
> /* ... */
> };
>
> dev1: dev@12500000 {
> memory-region = <&coherent_dma>;
> /* ... */
> };
>
> dev2: dev@12600000 {
> memory-region = <&coherent_dma>;
> /* ... */
> };
>
> in device tree we could simply have
>
> reserved-memory {
> #address-cells = <1>;
> #size-cells = <1>;
> ranges;
>
> coherent_dma: linux,dma {
> compatible = "shared-dma-pool";
> no-map;
> reg = <0x78000000 0x800000>;
> linux,dma-default;
> };
> };
>
> and that just work in my (NOMMU) case because there is no CMA there...
>
> However, given that dma-default is being overloaded and there are no device
> tree users merged yet, I would not object stepping back, reverting "drivers:
> dma-coherent: Introduce default DMA pool" and cooperatively rethinking
> design/implementation, so every party gets happy.
I don't think we need to go that far, I reckon it would be clear enough
to just split the per-device vs. global pool interfaces, something like
I've sketched out below (such that the ops->alloc implementation calls
dma_alloc_from_global_coherent() if dma_alloc_from_contiguous() fails).
If anyone wants to take that and run with it, feel free.
Robin.
----->8-----
diff --git a/drivers/base/dma-coherent.c b/drivers/base/dma-coherent.c
index 640a7e63c453..e6393c6d8359 100644
--- a/drivers/base/dma-coherent.c
+++ b/drivers/base/dma-coherent.c
@@ -143,6 +143,44 @@ void *dma_mark_declared_memory_occupied(struct
device *dev,
}
EXPORT_SYMBOL(dma_mark_declared_memory_occupied);
+static void *__dma_alloc_from_coherent(struct dma_coherent_mem *mem,
ssize_t size,
+ dma_addr_t *dma_handle)
+{
+ int order = get_order(size);
+ unsigned long flags;
+ int pageno;
+ int dma_memory_map;
+ void *ret;
+
+ spin_lock_irqsave(&mem->spinlock, flags);
+
+ if (unlikely(size > (mem->size << PAGE_SHIFT)))
+ goto err;
+
+ pageno = bitmap_find_free_region(mem->bitmap, mem->size, order);
+ if (unlikely(pageno < 0))
+ goto err;
+
+ /*
+ * Memory was found in the coherent area.
+ */
+ *dma_handle = mem->device_base + (pageno << PAGE_SHIFT);
+ ret = mem->virt_base + (pageno << PAGE_SHIFT);
+ dma_memory_map = (mem->flags & DMA_MEMORY_MAP);
+ spin_unlock_irqrestore(&mem->spinlock, flags);
+ if (dma_memory_map)
+ memset(ret, 0, size);
+ else
+ memset_io(ret, 0, size);
+
+ return ret;
+
+err:
+ spin_unlock_irqrestore(&mem->spinlock, flags);
+ return NULL;
+}
+EXPORT_SYMBOL(dma_alloc_from_coherent);
+
/**
* dma_alloc_from_coherent() - try to allocate memory from the
per-device coherent area
*
@@ -162,10 +200,6 @@ int dma_alloc_from_coherent(struct device *dev,
ssize_t size,
dma_addr_t *dma_handle, void **ret)
{
struct dma_coherent_mem *mem;
- int order = get_order(size);
- unsigned long flags;
- int pageno;
- int dma_memory_map;
if (!dev)
return 0;
@@ -173,32 +207,10 @@ int dma_alloc_from_coherent(struct device *dev,
ssize_t size,
if (!mem)
return 0;
- *ret = NULL;
- spin_lock_irqsave(&mem->spinlock, flags);
+ *ret = __dma_alloc_from_coherent(mem, size, dma_handle);
+ if (*ret)
+ return 1;
- if (unlikely(size > (mem->size << PAGE_SHIFT)))
- goto err;
-
- pageno = bitmap_find_free_region(mem->bitmap, mem->size, order);
- if (unlikely(pageno < 0))
- goto err;
-
- /*
- * Memory was found in the per-device area.
- */
- *dma_handle = mem->device_base + (pageno << PAGE_SHIFT);
- *ret = mem->virt_base + (pageno << PAGE_SHIFT);
- dma_memory_map = (mem->flags & DMA_MEMORY_MAP);
- spin_unlock_irqrestore(&mem->spinlock, flags);
- if (dma_memory_map)
- memset(*ret, 0, size);
- else
- memset_io(*ret, 0, size);
-
- return 1;
-
-err:
- spin_unlock_irqrestore(&mem->spinlock, flags);
/*
* In the case where the allocation can not be satisfied from the
* per-device area, try to fall back to generic memory if the
@@ -208,6 +220,15 @@ int dma_alloc_from_coherent(struct device *dev,
ssize_t size,
}
EXPORT_SYMBOL(dma_alloc_from_coherent);
+void *dma_alloc_from_global_coherent(ssize_t size, dma_addr_t *dma_handle)
+{
+ if (!dma_coherent_default_memory)
+ return NULL;
+
+ return __dma_alloc_from_coherent(dma_coherent_default_memory, size,
+ handle);
+}
+
/**
* dma_release_from_coherent() - try to free the memory allocated from
per-device coherent memory pool
* @dev: device from which the memory was allocated
^ permalink raw reply related
* Re: [PATCH v2 1/2] drivers: dma-coherent: Fix dev->cma_area vs dev->dma_mem breakage
From: Vladimir Murzin @ 2017-07-07 15:40 UTC (permalink / raw)
To: Christoph Hellwig, Vitaly Kuzmichev
Cc: gregkh, m.szyprowski, robin.murphy, linux-kernel, linux-next,
George G. Davis
In-Reply-To: <20170707142746.GB10818@lst.de>
Christoph,
On 07/07/17 15:27, Christoph Hellwig wrote:
> Vladimir,
>
> this is why I really didn't like overloading the current
> dma coherent infrastructure with the global pool.
>
> And this new patch seems like piling hacks over hacks. I think we
> should go back and make sure allocations from the global coherent
> pool are done by the dma ops implementation, and not before calling
> into them - preferably still reusing the common code for it.
>
> Vladimir or Vitaly - can you look into that?
>
It is really sad that Vitaly and George did not join to discussions earlier,
so we could avoid being in situation like this.
Likely I'm missing something, but what should happen if device relies on
dma_contiguous_default_area?
Originally, intention behind dma-default was to simplify things, so instead of
reserved-memory {
#address-cells = <1>;
#size-cells = <1>;
ranges;
coherent_dma: linux,dma {
compatible = "shared-dma-pool";
no-map;
reg = <0x78000000 0x800000>;
};
};
dev0: dev@12300000 {
memory-region = <&coherent_dma>;
/* ... */
};
dev1: dev@12500000 {
memory-region = <&coherent_dma>;
/* ... */
};
dev2: dev@12600000 {
memory-region = <&coherent_dma>;
/* ... */
};
in device tree we could simply have
reserved-memory {
#address-cells = <1>;
#size-cells = <1>;
ranges;
coherent_dma: linux,dma {
compatible = "shared-dma-pool";
no-map;
reg = <0x78000000 0x800000>;
linux,dma-default;
};
};
and that just work in my (NOMMU) case because there is no CMA there...
However, given that dma-default is being overloaded and there are no device
tree users merged yet, I would not object stepping back, reverting "drivers:
dma-coherent: Introduce default DMA pool" and cooperatively rethinking
design/implementation, so every party gets happy.
The rest of my original patch set should be enough to keep NOMMU working.
Cheers
Vladimir
^ permalink raw reply
* Re: [PATCH v2 2/2] drivers: dma-coherent: show per-device DMA region utilization via procfs
From: Christoph Hellwig @ 2017-07-07 14:28 UTC (permalink / raw)
To: Vitaly Kuzmichev
Cc: gregkh, hch, m.szyprowski, robin.murphy, linux-kernel, linux-next,
George G. Davis
In-Reply-To: <1499433797-16516-1-git-send-email-vitaly_kuzmichev@mentor.com>
This should at least go into debugfs. I'd also prefer it it was a
separate file instead of the ifdefs.
^ permalink raw reply
* Re: [PATCH v2 1/2] drivers: dma-coherent: Fix dev->cma_area vs dev->dma_mem breakage
From: Christoph Hellwig @ 2017-07-07 14:27 UTC (permalink / raw)
To: Vitaly Kuzmichev
Cc: gregkh, hch, m.szyprowski, robin.murphy, linux-kernel, linux-next,
George G. Davis, Vladimir Murzin
In-Reply-To: <1499433779-16437-1-git-send-email-vitaly_kuzmichev@mentor.com>
Vladimir,
this is why I really didn't like overloading the current
dma coherent infrastructure with the global pool.
And this new patch seems like piling hacks over hacks. I think we
should go back and make sure allocations from the global coherent
pool are done by the dma ops implementation, and not before calling
into them - preferably still reusing the common code for it.
Vladimir or Vitaly - can you look into that?
^ permalink raw reply
* Re: [PATCH v2 0/2] Additions to default DMA coherent pool
From: Stephen Rothwell @ 2017-07-07 13:55 UTC (permalink / raw)
To: Vitaly Kuzmichev
Cc: gregkh, hch, m.szyprowski, robin.murphy, linux-kernel, linux-next
In-Reply-To: <1499433759-16397-1-git-send-email-vitaly_kuzmichev@mentor.com>
Hi Vitaly,
On Fri, 7 Jul 2017 16:22:39 +0300 Vitaly Kuzmichev <vitaly_kuzmichev@mentor.com> wrote:
>
> v2:
> Since linux-next now includes Vladimir Murzin's version of default DMA
> coherent pool [1] our version is not required now and even causes merge
> conflict. The difference between two versions is not really significant
> except one serious problem with CONFIG_DMA_CMA. Please see patch v2 1/2
> for details.
> So that I have rebased our work on linux-next/master branch, and sending
> this patchset with necessary additions for default DMA pool feature.
>
> Patch v2 2/2 adds 'dmainfo' to ProcFS to show available DMA regions.
>
> [1] https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=93228b44c33a572cb36cec2dbed42e9bdbc88d79
This is now also in Linus' tree. You should rebase your work on that
commit (or just Linus' tree), not linux-next.
--
Cheers,
Stephen Rothwell
^ permalink raw reply
* [PATCH v2 2/2] drivers: dma-coherent: show per-device DMA region utilization via procfs
From: Vitaly Kuzmichev @ 2017-07-07 13:23 UTC (permalink / raw)
To: gregkh
Cc: hch, m.szyprowski, robin.murphy, linux-kernel, linux-next,
George G. Davis
In-Reply-To: <1499433759-16397-1-git-send-email-vitaly_kuzmichev@mentor.com>
From: "George G. Davis" <george_davis@mentor.com>
Add hooks to allow displaying per-device DMA region utilization via
/proc/dmainfo similar to how free blocks are displayed in
/proc/pagetypeinfo.
This also adds /proc/dmainfo reporting for regions defined via
dma_declare_coherent_memory().
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Marek Szyprowski <m.szyprowski@samsung.com>
Cc: Robin Murphy <robin.murphy@arm.com>
Signed-off-by: George G. Davis <george_davis@mentor.com>
Signed-off-by: Mark Craske <Mark_Craske@mentor.com>
Signed-off-by: Vitaly Kuzmichev <vitaly_kuzmichev@mentor.com>
---
drivers/base/dma-coherent.c | 224 ++++++++++++++++++++++++++++++++++++++++++--
1 file changed, 215 insertions(+), 9 deletions(-)
diff --git a/drivers/base/dma-coherent.c b/drivers/base/dma-coherent.c
index acfe140..2692e6d 100644
--- a/drivers/base/dma-coherent.c
+++ b/drivers/base/dma-coherent.c
@@ -8,6 +8,12 @@
#include <linux/module.h>
#include <linux/dma-mapping.h>
+#ifdef CONFIG_PROC_FS
+#include <linux/fs.h>
+#include <linux/proc_fs.h>
+#include <linux/seq_file.h>
+#endif
+
struct dma_coherent_mem {
void *virt_base;
dma_addr_t device_base;
@@ -17,8 +23,57 @@ struct dma_coherent_mem {
unsigned long *bitmap;
spinlock_t spinlock;
bool use_dev_dma_pfn_offset;
+ int used;
+ int highwatermark;
+ int errs;
};
+#ifdef CONFIG_PROC_FS
+struct dmacoherent_region {
+ struct list_head list;
+ struct device *dev;
+};
+
+static LIST_HEAD(dmacoherent_region_list);
+static DEFINE_MUTEX(dmacoherent_region_list_lock);
+
+static int dmacoherent_region_add(struct device *dev)
+{
+ struct dmacoherent_region *rp;
+
+ rp = kzalloc(sizeof(*rp), GFP_KERNEL);
+ if (!rp)
+ return -ENOMEM;
+
+ rp->dev = dev;
+
+ mutex_lock(&dmacoherent_region_list_lock);
+ list_add(&rp->list, &dmacoherent_region_list);
+ mutex_unlock(&dmacoherent_region_list_lock);
+ dev_info(dev, "Registered DMA-coherent pool with /proc/dmainfo accounting\n");
+
+ return 0;
+}
+
+static void dmacoherent_region_del(struct device *dev)
+{
+ struct dmacoherent_region *rp;
+
+ mutex_lock(&dmacoherent_region_list_lock);
+ list_for_each_entry(rp, &dmacoherent_region_list, list) {
+ if (rp->dev == dev) {
+ list_del(&rp->list);
+ kfree(rp);
+ break;
+ }
+ }
+ mutex_unlock(&dmacoherent_region_list_lock);
+}
+#else
+static int dmacoherent_region_add(struct device *dev) { return 0; }
+static void dmacoherent_region_del(struct device *dev) { return; }
+#endif
+
static struct dma_coherent_mem *dma_coherent_default_memory __ro_after_init;
static inline struct dma_coherent_mem *dev_get_coherent_memory(struct device *dev)
@@ -122,14 +177,22 @@ int dma_declare_coherent_memory(struct device *dev, phys_addr_t phys_addr,
dma_addr_t device_addr, size_t size, int flags)
{
struct dma_coherent_mem *mem;
+ int ret;
if (!dma_init_coherent_memory(phys_addr, device_addr, size, flags,
&mem))
return 0;
- if (dma_assign_coherent_memory(dev, mem) == 0)
- return flags & DMA_MEMORY_MAP ? DMA_MEMORY_MAP : DMA_MEMORY_IO;
+ if (dma_assign_coherent_memory(dev, mem) != 0)
+ goto errout;
+
+ ret = (flags & DMA_MEMORY_MAP ? DMA_MEMORY_MAP : DMA_MEMORY_IO);
+ if (dmacoherent_region_add(dev) == 0)
+ return ret;
+
+ dev->dma_mem = NULL;
+errout:
dma_release_coherent_memory(mem);
return 0;
}
@@ -141,6 +204,8 @@ void dma_release_declared_memory(struct device *dev)
if (!mem)
return;
+
+ dmacoherent_region_del(dev);
dma_release_coherent_memory(mem);
dev->dma_mem = NULL;
}
@@ -152,19 +217,25 @@ void *dma_mark_declared_memory_occupied(struct device *dev,
struct dma_coherent_mem *mem = dev->dma_mem;
unsigned long flags;
int pos, err;
-
- size += device_addr & ~PAGE_MASK;
+ int order;
if (!mem)
return ERR_PTR(-EINVAL);
- spin_lock_irqsave(&mem->spinlock, flags);
+ size += device_addr & ~PAGE_MASK;
+ order = get_order(size);
pos = PFN_DOWN(device_addr - dma_get_device_base(dev, mem));
- err = bitmap_allocate_region(mem->bitmap, pos, get_order(size));
- spin_unlock_irqrestore(&mem->spinlock, flags);
- if (err != 0)
+ spin_lock_irqsave(&mem->spinlock, flags);
+ err = bitmap_allocate_region(mem->bitmap, pos, order);
+ if (err != 0) {
+ spin_unlock_irqrestore(&mem->spinlock, flags);
return ERR_PTR(err);
+ }
+ mem->used += 1 << order;
+ if (mem->highwatermark < mem->used)
+ mem->highwatermark = mem->used;
+ spin_unlock_irqrestore(&mem->spinlock, flags);
return mem->virt_base + (pos << PAGE_SHIFT);
}
EXPORT_SYMBOL(dma_mark_declared_memory_occupied);
@@ -206,6 +277,10 @@ int dma_alloc_from_coherent(struct device *dev, ssize_t size,
if (unlikely(pageno < 0))
goto err;
+ mem->used += 1 << order;
+ if (mem->highwatermark < mem->used)
+ mem->highwatermark = mem->used;
+
/*
* Memory was found in the per-device area.
*/
@@ -221,6 +296,7 @@ int dma_alloc_from_coherent(struct device *dev, ssize_t size,
return 1;
err:
+ mem->errs++;
spin_unlock_irqrestore(&mem->spinlock, flags);
/*
* In the case where the allocation can not be satisfied from the
@@ -255,6 +331,7 @@ int dma_release_from_coherent(struct device *dev, int order, void *vaddr)
spin_lock_irqsave(&mem->spinlock, flags);
bitmap_release_region(mem->bitmap, page, order);
+ mem->used -= 1 << order;
spin_unlock_irqrestore(&mem->spinlock, flags);
return 1;
}
@@ -326,6 +403,10 @@ static int rmem_dma_device_init(struct reserved_mem *rmem, struct device *dev)
}
mem->use_dev_dma_pfn_offset = true;
rmem->priv = mem;
+
+ if (dmacoherent_region_add(dev))
+ return -ENOMEM;
+
dma_assign_coherent_memory(dev, mem);
return 0;
}
@@ -333,8 +414,10 @@ static int rmem_dma_device_init(struct reserved_mem *rmem, struct device *dev)
static void rmem_dma_device_release(struct reserved_mem *rmem,
struct device *dev)
{
- if (dev)
+ if (dev) {
+ dmacoherent_region_del(dev);
dev->dma_mem = NULL;
+ }
}
static const struct reserved_mem_ops rmem_dma_ops = {
@@ -396,3 +479,126 @@ static int __init dma_init_reserved_memory(void)
RESERVEDMEM_OF_DECLARE(dma, "shared-dma-pool", rmem_dma_setup);
#endif
+
+#ifdef CONFIG_PROC_FS
+
+static int dmainfo_proc_show_dma_mem(struct seq_file *m, void *v,
+ struct device *dev)
+{
+ struct dma_coherent_mem *mem = dev_get_coherent_memory(dev);
+ int offset;
+ int start;
+ int end;
+ int pages;
+ int order;
+ int free = 0;
+ int blocks[MAX_ORDER];
+
+ memset(blocks, 0, sizeof(blocks));
+
+ spin_lock(&mem->spinlock);
+
+ for (offset = 0; offset < mem->size; offset = end) {
+ start = find_next_zero_bit(mem->bitmap, mem->size, offset);
+ if (start >= mem->size)
+ break;
+ end = find_next_bit(mem->bitmap, mem->size, start + 1);
+ pages = end - start;
+
+ /* Align start: */
+ for (order = 0; order < MAX_ORDER; order += 1) {
+ if (start >= end)
+ break;
+ if (pages < (1 << order))
+ break;
+ if (start & (1 << order)) {
+ blocks[order] += 1;
+ start += 1 << order;
+ pages -= 1 << order;
+ free += 1 << order;
+ }
+ }
+
+ if (start >= end)
+ continue;
+
+ /* Align middle and end: */
+ order = MAX_ORDER - 1;
+ while (order >= 0) {
+ if (start >= end)
+ break;
+ if (pages >= (1 << order)) {
+ blocks[order] += 1;
+ start += 1 << order;
+ pages -= 1 << order;
+ free += 1 << order;
+ } else {
+ order -= 1;
+ }
+ }
+ }
+
+ seq_printf(m, "%-30s", dev_name(dev));
+
+ for (order = 0; order < MAX_ORDER; order += 1)
+ seq_printf(m, " %6d", blocks[order]);
+
+ seq_printf(m, " %6d %6d %6d %6d %6d\n",
+ mem->size,
+ mem->used,
+ free,
+ mem->highwatermark,
+ mem->errs);
+
+ spin_unlock(&mem->spinlock);
+
+ return 0;
+}
+
+static int dmainfo_proc_show(struct seq_file *m, void *v)
+{
+ struct dmacoherent_region *rp;
+ int order;
+
+ seq_puts(m, "DMA-coherent region information:\n");
+ seq_printf(m, "%-30s", "Free block count at order");
+
+ for (order = 0; order < MAX_ORDER; ++order)
+ seq_printf(m, " %6d", order);
+
+ seq_printf(m, " %6s %6s %6s %6s %6s\n",
+ "Size",
+ "Used",
+ "Free",
+ "High",
+ "Errs");
+
+ mutex_lock(&dmacoherent_region_list_lock);
+ list_for_each_entry(rp, &dmacoherent_region_list, list) {
+ dmainfo_proc_show_dma_mem(m, v, rp->dev);
+ }
+ mutex_unlock(&dmacoherent_region_list_lock);
+
+ return 0;
+}
+
+static int dmainfo_proc_open(struct inode *inode, struct file *file)
+{
+ return single_open(file, dmainfo_proc_show, NULL);
+}
+
+static const struct file_operations dmainfo_proc_fops = {
+ .open = dmainfo_proc_open,
+ .read = seq_read,
+ .llseek = seq_lseek,
+ .release = single_release,
+};
+
+static int __init proc_dmainfo_init(void)
+{
+ proc_create("dmainfo", 0, NULL, &dmainfo_proc_fops);
+ return 0;
+}
+module_init(proc_dmainfo_init);
+
+#endif
--
1.9.1
^ permalink raw reply related
* [PATCH v2 1/2] drivers: dma-coherent: Fix dev->cma_area vs dev->dma_mem breakage
From: Vitaly Kuzmichev @ 2017-07-07 13:22 UTC (permalink / raw)
To: gregkh
Cc: hch, m.szyprowski, robin.murphy, linux-kernel, linux-next,
George G. Davis
In-Reply-To: <1499433759-16397-1-git-send-email-vitaly_kuzmichev@mentor.com>
From: "George G. Davis" <george_davis@mentor.com>
When a "linux,dma-default" DMA coherent region is defined, the
dma_coherent_default_memory pointer is returned by function
dev_get_coherent_memory() for any struct device *dev which has not
explicitly assigned a dev->dma_mem memory region, i.e. dev->dma_mem is
the NULL pointer. Unfortunately this overlooks the fact that for the
CONFIG_DMA_CMA case, it is also possible that a device may have assigned
a CMA memory region via the dev->cma_area pointer in which case,
the "linux,dma-default" DMA coherent region should not be used.
Since the current code did not consider this case, dev->cma_area regions
are not used when a "linux,dma-default" DMA coherent region is defined.
Instead, memory is allocated from the "linux,dma-default" DMA coherent
region. This omission could lead to DMA memory allocation failures for
devices such as the "viv,galcore" which require a large contiguous
address space which cannot be supplied by the "linux,dma-default" region
IFF it has been reconfigured to use a CMA memory region. Similar DMA
allocation failures are likely to occur for other devices which require
large memory regions and/or overall allocation requests exceed the size
of the "linux,dma-default" DMA coherent region size.
Fix this by updating the dev_get_coherent_memory() function to return
the NULL pointer if a dev->cma_area region is assigned to a device.
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Marek Szyprowski <m.szyprowski@samsung.com>
Cc: Robin Murphy <robin.murphy@arm.com>
Signed-off-by: George G. Davis <george_davis@mentor.com>
Signed-off-by: Vitaly Kuzmichev <vitaly_kuzmichev@mentor.com>
---
drivers/base/dma-coherent.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/base/dma-coherent.c b/drivers/base/dma-coherent.c
index 2ae24c2..acfe140 100644
--- a/drivers/base/dma-coherent.c
+++ b/drivers/base/dma-coherent.c
@@ -25,6 +25,10 @@ static inline struct dma_coherent_mem *dev_get_coherent_memory(struct device *de
{
if (dev && dev->dma_mem)
return dev->dma_mem;
+#ifdef CONFIG_DMA_CMA
+ if (dev && dev->cma_area)
+ return NULL;
+#endif
return dma_coherent_default_memory;
}
--
1.9.1
^ permalink raw reply related
* [PATCH v2 0/2] Additions to default DMA coherent pool
From: Vitaly Kuzmichev @ 2017-07-07 13:22 UTC (permalink / raw)
To: gregkh; +Cc: hch, m.szyprowski, robin.murphy, linux-kernel, linux-next
In-Reply-To: <1499093475-29859-1-git-send-email-vitaly_kuzmichev@mentor.com>
v2:
Since linux-next now includes Vladimir Murzin's version of default DMA
coherent pool [1] our version is not required now and even causes merge
conflict. The difference between two versions is not really significant
except one serious problem with CONFIG_DMA_CMA. Please see patch v2 1/2
for details.
So that I have rebased our work on linux-next/master branch, and sending
this patchset with necessary additions for default DMA pool feature.
Patch v2 2/2 adds 'dmainfo' to ProcFS to show available DMA regions.
[1] https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=93228b44c33a572cb36cec2dbed42e9bdbc88d79
George G. Davis (2):
drivers: dma-coherent: Fix dev->cma_area vs dev->dma_mem breakage
drivers: dma-coherent: show per-device DMA region utilization via
procfs
drivers/base/dma-coherent.c | 228 ++++++++++++++++++++++++++++++++++++++++++--
1 file changed, 219 insertions(+), 9 deletions(-)
--
1.9.1
^ permalink raw reply
* mmotm git tree since-4.12 branch created (was: mmotm 2017-07-06-16-18 uploaded)
From: Michal Hocko @ 2017-07-07 12:36 UTC (permalink / raw)
To: akpm
Cc: mm-commits, linux-kernel, linux-mm, linux-fsdevel, linux-next,
sfr, broonie
In-Reply-To: <595ec598.V53/yhRxyLwVdGL8%akpm@linux-foundation.org>
I have just created since-4.12 branch in mm git tree
(http://git.kernel.org/?p=linux/kernel/git/mhocko/mm.git;a=summary). It
is based on v4.12 tag in Linus tree and mmotm-2017-07-06-16-18.
As usual mmotm trees are tagged with signed tag
(finger print BB43 1E25 7FB8 660F F2F1 D22D 48E2 09A2 B310 E347)
I have pulled tip/smp/hotplug and tip/x86-mm-for-linus for dependencies.
I had to revert "x86: fix fortified memcpy" because it fails to compile
on x86 32b.
The shortlog says:
Alexander Levin (1):
perf/core: Don't release cred_guard_mutex if not taken
Andrea Arcangeli (5):
ksm: introduce ksm_max_page_sharing per page deduplication limit
ksm: fix use after free with merge_across_nodes = 0
ksm: cleanup stable_node chain collapse case
ksm: swap the two output parameters of chain/chain_prune
ksm: optimize refile of stable_node_dup at the head of the chain
Andrew Morton (12):
swap-add-block-io-poll-in-swapin-path-checkpatch-fixes
mm-vmscan-avoid-thrashing-anon-lru-when-free-file-is-low-fix
mm-hwpoison-dissolve-in-use-hugepage-in-unrecoverable-memory-error-fix
mm-hugetlb-warn-the-user-when-issues-arise-on-boot-due-to-hugepages-fix
mm-improve-readability-of-transparent_hugepage_enabled-fix
mm-improve-readability-of-transparent_hugepage_enabled-fix-fix
hugetlb-memory_hotplug-prefer-to-use-reserved-pages-for-migration-fix
mm-page_allocc-eliminate-unsigned-confusion-in-__rmqueue_fallback-fix
mm-memory_hotplug-just-build-zonelist-for-new-added-node-fix
mm-memory_hotplug-just-build-zonelist-for-new-added-node-fix-fix
mm-zsmalloc-simplify-zs_max_alloc_size-handling-fix
powerpc-64s-implement-arch-specific-hardlockup-watchdog-checkpatch-fixes
Andrey Ryabinin (4):
mm/kasan: get rid of speculative shadow checks
x86/kasan: don't allocate extra shadow memory
arm64/kasan: don't allocate extra shadow memory
mm/kasan: add support for memory hotplug
Andrey Vostrikov (1):
lib/crc-ccitt: add CCITT-FALSE CRC16 variant
Andy Lutomirski (17):
x86/mm: Reimplement flush_tlb_page() using flush_tlb_mm_range()
x86/mm: Reduce indentation in flush_tlb_func()
mm, x86/mm: Make the batched unmap TLB flush API more generic
x86/mm: Pass flush_tlb_info to flush_tlb_others() etc
x86/mm: Change the leave_mm() condition for local TLB flushes
x86/mm: Refactor flush_tlb_mm_range() to merge local and remote cases
x86/mm: Use new merged flush logic in arch_tlbbatch_flush()
x86/mm: Remove the UP asm/tlbflush.h code, always use the (formerly) SMP code
x86/mm: Rework lazy TLB to track the actual loaded mm
x86/mm: Be more consistent wrt PAGE_SHIFT vs PAGE_SIZE in tlb flush code
x86/mm, KVM: Teach KVM's VMX code that CR3 isn't a constant
mm/vmstat: Make NR_TLB_REMOTE_FLUSH_RECEIVED available even on UP
x86/mm: Split read_cr3() into read_cr3_pa() and __read_cr3()
x86/ldt: Simplify the LDT switching logic
x86/mm: Remove reset_lazy_tlbstate()
x86/mm: Don't reenter flush_tlb_func_common()
x86/mm: Delete a big outdated comment about TLB flushing
Andy Shevchenko (1):
zram: use __sysfs_match_string() helper
Aneesh Kumar K.V (10):
mm/hugetlb/migration: use set_huge_pte_at instead of set_pte_at
mm/follow_page_mask: split follow_page_mask to smaller functions.
mm/hugetlb: export hugetlb_entry_migration helper
mm/hugetlb: move default definition of hugepd_t earlier in the header
mm/follow_page_mask: add support for hugepage directory entry
powerpc/hugetlb: add follow_huge_pd implementation for ppc64
powerpc/mm/hugetlb: remove follow_huge_addr for powerpc
powerpc/hugetlb: enable hugetlb migration for ppc64
mm/hugetlb: clean up ARCH_HAS_GIGANTIC_PAGE
powerpc/mm/hugetlb: add support for 1G huge pages
Anshuman Khandual (5):
mm/vmstat.c: standardize file operations variable names
mm/madvise: enable (soft|hard) offline of HugeTLB pages at PGD level
mm/follow_page_mask: add support for hugetlb pgd entries
mm: hugetlb: soft-offline: dissolve source hugepage after successful migration
mm/cma.c: warn if the CMA area could not be activated
Arnd Bergmann (4):
cpu/hotplug: Remove unused check_for_tasks() function
mm: hugetlb: replace some macros with inline functions
kernel/watchdog: hide unused function
x86: fix fortified memcpy
Arvind Yadav (3):
cpu/hotplug: Constify attribute_group structures
ocfs2: constify attribute_group structures
zram: constify attribute_group structures.
Borislav Petkov (1):
x86/ldt: Rename ldt_struct::size to ::nr_entries
Canjiang Lu (1):
mm/slab.c: replace open-coded round-up code with ALIGN
Catalin Marinas (3):
mm: kmemleak: slightly reduce the size of some structures on 64-bit architectures
mm: kmemleak: factor object reference updating out of scan_block()
mm: kmemleak: treat vm_struct as alternative reference to vmalloc'ed objects
Colin Ian King (2):
scripts/spelling.txt: add a bunch more spelling mistakes
kasan: make get_wild_bug_type() static
Dan Carpenter (1):
mm/vmpressure.c: free the same pointer we allocated
Dan Williams (2):
mm: improve readability of transparent_hugepage_enabled()
mm: always enable thp for dax mappings
Daniel Axtens (2):
powerpc: don't fortify prom_init
powerpc: make feature-fixup tests fortify-safe
Daniel Micay (2):
mm/mmap.c: mark protection_map as __ro_after_init
include/linux/string.h: add the option of fortified string.h functions
Dave Hansen (1):
mm, sparsemem: break out of loops early
David Rientjes (3):
mm, vmscan: avoid thrashing anon lru when free + file is low
mm, vmpressure: pass-through notification support
mm, hugetlb: schedule when potentially allocating many hugepages
Dou Liyang (1):
mm: drop useless local parameters of __register_one_node()
Doug Berger (1):
cma: fix calculation of aligned offset
Eric Biggers (1):
fs/buffer.c: make bh_lru_install() more efficient
Fabian Frederick (1):
ocfs2: use magic.h
Gang He (1):
ocfs2: fix a static checker warning
Gustavo A. R. Silva (1):
mm/memory_hotplug.c: add NULL check to avoid potential NULL pointer dereference
Huang Ying (4):
mm, THP, swap: delay splitting THP during swap out
mm, THP, swap: check whether THP can be split firstly
mm, THP, swap: enable THP swap optimization only if has compound map
mm/swapfile.c: sort swap entries before free
Ingo Molnar (3):
Merge tag 'v4.12-rc4' into x86/mm, to pick up fixes
Merge branch 'sched/urgent' into x86/mm, to pick up dependent fix
Merge branch 'linus' into x86/mm, to pick up fixes
Jan Kara (1):
mm/truncate.c: fix THP handling in invalidate_mapping_pages()
Jerome Marchand (1):
mm/zsmalloc: simplify zs_max_alloc_size handling
Joe Perches (18):
checkpatch: improve the STORAGE_CLASS test
ARM: KVM: move asmlinkage before type
ARM: HP Jornada 7XX: move inline before return type
CRIS: gpio: move inline before return type
FRV: tlbflush: move asmlinkage before return type
ia64: move inline before return type
ia64: sn: pci: move inline before type
m68k: coldfire: move inline before return type
MIPS: SMP: move asmlinkage before return type
sh: move inline before return type
x86/efi: move asmlinkage before return type
drivers: s390: move static and inline before return type
drivers: tty: serial: move inline before return type
USB: serial: safe_serial: move __inline__ before return type
video: fbdev: intelfb: move inline before return type
video: fbdev: omap: move inline before return type
ARM: samsung: usb-ohci: move inline before return type
ALSA: opl4: move inline before return type
Johannes Weiner (5):
mm: vmstat: move slab statistics from zone to node counters
mm: memcontrol: use the node-native slab memory counters
mm: memcontrol: use generic mod_memcg_page_state for kmem pages
mm: memcontrol: per-lruvec stats infrastructure
mm: memcontrol: account slab stats per lruvec
John Hubbard (1):
mm/memory_hotplug.c: remove unused local zone_type from __remove_zone()
Joonsoo Kim (2):
mm/kasan/kasan_init.c: use kasan_zero_pud for p4d table
mm/kasan/kasan.c: rename XXX_is_zero to XXX_is_nonzero
Kees Cook (6):
mm: allow slab_nomerge to be set at build time
efi: avoid fortify checks in EFI stub
kexec_file: adjust declaration of kexec_purgatory
IB/rxe: do not copy extra stack memory to skb
fortify: avoid panic() in favor of BUG()
sh: mark end of BUG() implementation as unreachable
Kirill A. Shutemov (16):
x86/mm/gup: Switch GUP to the generic get_user_page_fast() implementation
x86/asm: Fix comment in return_from_SYSCALL_64()
x86/boot/efi: Cleanup initialization of GDT entries
x86/boot/efi: Fix __KERNEL_CS definition of GDT entry on 64-bit configurations
x86/boot/efi: Define __KERNEL32_CS GDT on 64-bit configurations
x86/boot/compressed: Enable 5-level paging during decompression stage
x86/boot/64: Rewrite startup_64() in C
x86/boot/64: Rename init_level4_pgt and early_level4_pgt
x86/boot/64: Add support of additional page table level during early boot
x86/mm: Add sync_global_pgds() for configuration with 5-level paging
x86/mm: Make kernel_physical_mapping_init() support 5-level paging
x86/mm: Add support for 5-level paging for KASLR
x86/boot/64: Put __startup_64() into .head.text
x86/ftrace: Exclude functions in head64.c from function-tracing
x86/KASLR: Fix detection 32/64 bit bootloaders for 5-level paging
thp, mm: fix crash due race in MADV_FREE handling
Konstantin Khlebnikov (1):
mm/oom_kill: count global and memory cgroup oom kills
Krzysztof Opasiak (1):
mm: use dedicated helper to access rlimit value
Laurent Dufour (1):
mm: skip HWPoisoned pages when onlining pages
Liam R. Howlett (1):
mm/hugetlb.c: warn the user when issues arise on boot due to hugepages
Logan Gunthorpe (1):
tile: provide default ioremap declaration
Marcin Nowakowski (1):
kernel/extable.c: mark core_kernel_text notrace
Markus Elfring (3):
mm/zswap.c: delete an error message for a failed memory allocation in zswap_pool_create()
mm/zswap.c: improve a size determination in zswap_frontswap_init()
mm/zswap.c: delete an error message for a failed memory allocation in zswap_dstmem_prepare()
Matthew Wilcox (1):
mm/hugetlb.c: replace memfmt with string_get_size
Matthias Kaehlcke (1):
mm/page_alloc.c: mark bad_range() and meminit_pfn_in_nid() as __maybe_unused
Michael Ellerman (4):
provide linux/set_memory.h
kernel/power/snapshot.c: use linux/set_memory.h
kernel/module.c: use linux/set_memory.h
include/linux/filter.h: use linux/set_memory.h
Michal Hocko (47):
x86/mmap, ASLR: Do not treat unlimited-stack tasks as legacy mmap
fs/file.c: replace alloc_fdmem() with kvmalloc() alternative
mm: remove return value from init_currently_empty_zone
mm, memory_hotplug: use node instead of zone in can_online_high_movable
mm: drop page_initialized check from get_nid_for_pfn
mm, memory_hotplug: get rid of is_zone_device_section
mm, memory_hotplug: split up register_one_node()
mm, memory_hotplug: consider offline memblocks removable
mm: consider zone which is not fully populated to have holes
mm, compaction: skip over holes in __reset_isolation_suitable
mm: __first_valid_page skip over offline pages
mm, vmstat: skip reporting offline pages in pagetypeinfo
mm, memory_hotplug: do not associate hotadded memory to zones until online
mm, memory_hotplug: fix MMOP_ONLINE_KEEP behavior
mm, memory_hotplug: do not assume ZONE_NORMAL is default kernel zone
mm, memory_hotplug: replace for_device by want_memblock in arch_add_memory
mm, memory_hotplug: fix the section mismatch warning
mm, memory_hotplug: remove unused cruft after memory hotplug rework
mm, memory_hotplug: drop artificial restriction on online/offline
mm, memory_hotplug: drop CONFIG_MOVABLE_NODE
mm, memory_hotplug: move movable_node to the hotplug proper
mm: make PR_SET_THP_DISABLE immediately active
mm, memory_hotplug: support movable_node for hotpluggable nodes
mm, memory_hotplug: simplify empty node mask handling in new_node_page
hugetlb, memory_hotplug: prefer to use reserved pages for migration
mm: unify new_node_page and alloc_migrate_target
mm, memcg: fix potential undefined behavior in mem_cgroup_event_ratelimit()
mm, hugetlb: unclutter hugetlb allocation layers
hugetlb: add support for preferred node to alloc_huge_page_nodemask
mm, hugetlb, soft_offline: use new_page_nodemask for soft offline migration
mm: document highmem_is_dirtyable sysctl
mm/mmap.c: do not blow on PROT_NONE MAP_FIXED holes in the stack
mm: disallow early_pfn_to_nid on configurations which do not implement it
net/netfilter/x_tables.c: use kvmalloc() in xt_alloc_table_info()
MIPS: do not use __GFP_REPEAT for order-0 request
mm, tree wide: replace __GFP_REPEAT by __GFP_RETRY_MAYFAIL with more useful semantic
mm-tree-wide-replace-__gfp_repeat-by-__gfp_retry_mayfail-with-more-useful-semantic-fix
mm-tree-wide-replace-__gfp_repeat-by-__gfp_retry_mayfail-with-more-useful-semantic-fix-3
xfs: map KM_MAYFAIL to __GFP_RETRY_MAYFAIL
mm: kvmalloc support __GFP_RETRY_MAYFAIL for all sizes
drm/i915: use __GFP_RETRY_MAYFAIL
mm, migration: do not trigger OOM killer when migrating memory
Merge remote-tracking branch 'tip/smp/hotplug' into mmotm-4.12
Merge remote-tracking branch 'tip/x86-mm-for-linus' into mmotm-4.12
Revert "x86: fix fortified memcpy"
Revert "fortify: avoid panic() in favor of BUG()"
Revert "include/linux/string.h: add the option of fortified string.h functions"
Mike Rapoport (3):
kernel/exit.c: don't include unused userfaultfd_k.h
fs/userfaultfd.c: drop dead code
userfaultfd: non-cooperative: add madvise() event for MADV_FREE request
Minchan Kim (3):
zram: count same page write as page_stored
mm, THP, swap: unify swap slot free functions to put_swap_page
mm, THP, swap: move anonymous THP split logic to vmscan
Naoya Horiguchi (9):
mm: drop NULL return check of pte_offset_map_lock()
mm: hugetlb: prevent reuse of hwpoisoned free hugepages
mm: hugetlb: return immediately for hugetlb page in __delete_from_page_cache()
mm: hwpoison: change PageHWPoison behavior on hugetlb pages
mm: soft-offline: dissolve free hugepage if soft-offlined
mm: hwpoison: introduce memory_failure_hugetlb()
mm: hwpoison: dissolve in-use hugepage in unrecoverable memory error
mm: hugetlb: delete dequeue_hwpoisoned_huge_page()
mm: hwpoison: introduce idenfity_page_state
Nicholas Piggin (9):
kernel/watchdog: remove unused declaration
kernel/watchdog: introduce arch_touch_nmi_watchdog()
kernel/watchdog: split up config options
watchdog-split-up-config-options-fix
kernel/watchdog: provide watchdog_nmi_reconfigure() for arch watchdogs
watchdog-provide-watchdog_reconfigure-for-arch-watchdogs-fix
powerpc/64s: implement arch-specific hardlockup watchdog
powerpc/64s: watchdog honor watchdog disable at boot/hotplug
powerpc/64s: watchdog false positive warning at CPU unplug
Nick Desaulniers (2):
mm/vmscan.c: fix unsequenced modification and access warning
mm/zsmalloc.c: fix -Wunneeded-internal-declaration warning
Nikolay Borisov (2):
include/linux/mmzone.h: remove ancient/ambiguous comment
include/linux/backing-dev.h: simplify wb_stat_sum
Oleg Nesterov (1):
mm/mmap.c: expand_downwards: don't require the gap if !vm_prev
Pavel Tatashin (4):
mm: zero hash tables in allocator
mm: update callers to use HASH_ZERO flag
mm: adaptive hash table scaling
sparc64: NG4 memset 32 bits overflow
Punit Agrawal (5):
mm, gup: ensure real head page is ref-counted when using hugepages
mm/hugetlb: add size parameter to huge_pte_offset()
mm/hugetlb: allow architectures to override huge_pte_clear()
mm/hugetlb: introduce set_huge_swap_pte_at() helper
mm: rmap: use correct helper when poisoning hugepages
Rasmus Villemoes (1):
mm/page_alloc.c: eliminate unsigned confusion in __rmqueue_fallback
Rik van Riel (8):
random,stackprotect: introduce get_random_canary function
fork,random: use get_random_canary() to set tsk->stack_canary
x86: ascii armor the x86_64 boot init stack canary
arm64: ascii armor the arm64 boot init stack canary
sh64: ascii armor the sh64 boot init stack canary
x86/mmap: properly account for stack randomization in mmap_base
arm64/mmap: properly account for stack randomization in mmap_base
powerpc,mmap: properly account for stack randomization in mmap_base
Rob Landley (2):
scripts/gen_initramfs_list.sh: teach INITRAMFS_ROOT_UID and INITRAMFS_ROOT_GID that -1 means "current user".
ramfs: clarify help text that compression applies to ramfs as well as legacy ramdisk.
Roman Gushchin (2):
mm: per-cgroup memory reclaim stats
mm/oom_kill.c: add tracepoints for oom reaper-related events
SF Markus Elfring (1):
drivers/sh/intc/virq.c: delete an error message for a failed memory allocation in add_virq_to_pirq()
Sahitya Tummala (2):
mm/list_lru.c: fix list_lru_count_node() to be race free
fs/dcache.c: fix spin lockup issue on nlru->lock
Sean Christopherson (1):
mm/memcontrol: exclude @root from checks in mem_cgroup_low
Sebastian Andrzej Siewior (15):
cpu/hotplug: Provide cpuhp_setup/remove_state[_nocalls]_cpuslocked()
stop_machine: Provide stop_machine_cpuslocked()
padata: Avoid nested calls to cpus_read_lock() in pcrypt_init_padata()
x86/mtrr: Remove get_online_cpus() from mtrr_save_state()
cpufreq: Use cpuhp_setup_state_nocalls_cpuslocked()
KVM/PPC/Book3S HV: Use cpuhp_setup_state_nocalls_cpuslocked()
hwtracing/coresight-etm3x: Use cpuhp_setup_state_nocalls_cpuslocked()
hwtracing/coresight-etm4x: Use cpuhp_setup_state_nocalls_cpuslocked()
perf/x86/intel/cqm: Use cpuhp_setup_state_cpuslocked()
ARM/hw_breakpoint: Use cpuhp_setup_state_cpuslocked()
s390/kernel: Use stop_machine_cpuslocked()
powerpc/powernv: Use stop_machine_cpuslocked()
cpu/hotplug: Use stop_machine_cpuslocked() in takedown_cpu()
perf/x86/intel: Drop get_online_cpus() in intel_snb_check_microcode()
mm/swap_slots.c: don't disable preemption while taking the per-CPU cache
Shaohua Li (1):
swap: add block io poll in swapin path
Steve Capper (2):
arm64: hugetlb: refactor find_num_contig()
arm64: hugetlb: remove spurious calls to huge_ptep_offset()
Steven Rostedt (VMware) (1):
oom, trace: remove ENUM evaluation of COMPACTION_FEEDBACK
Thiago Jung Bauermann (1):
powerpc: Only obtain cpu_hotplug_lock if called by rtasd
Thomas Gleixner (20):
cpu/hotplug: Provide cpus_read|write_[un]lock()
cpu/hotplug: Provide lockdep_assert_cpus_held()
cpu/hotplug: Add __cpuhp_state_add_instance_cpuslocked()
padata: Make padata_alloc() static
x86/perf: Drop EXPORT of perf_check_microcode
PCI: Use cpu_hotplug_disable() instead of get_online_cpus()
PCI: Replace the racy recursion prevention
ACPI/processor: Use cpu_hotplug_disable() instead of get_online_cpus()
perf/tracing/cpuhotplug: Fix locking order
jump_label: Reorder hotplug lock and jump_label_lock
kprobes: Cure hotplug lock ordering issues
arm64: Prevent cpu hotplug rwsem recursion
arm: Prevent hotplug rwsem recursion
s390: Prevent hotplug rwsem recursion
cpu/hotplug: Convert hotplug locking to percpu rwsem
sched: Provide is_percpu_thread() helper
acpi/processor: Prevent cpu hotplug deadlock
cpuhotplug: Link lock stacks for hotplug callbacks
mm: swap: provide lru_add_drain_all_cpuslocked()
mm/memory-hotplug: switch locking to a percpu rwsem
Tobias Klauser (3):
mn10300: remove wrapper header for asm/device.h
mn10300: use generic fb.h
xtensa: use generic fb.h
Tony Lindgren (1):
ARM/hw_breakpoint: Fix possible recursive locking for arch_hw_breakpoint_init
Vasily Averin (1):
fs/proc/task_mmu.c: remove obsolete comment in show_map_vma()
Vinayak Menon (2):
mm: avoid taking zone lock in pagetypeinfo_showmixed()
mm: vmscan: do not pass reclaimed slab to vmpressure
Vlastimil Babka (7):
mm, page_alloc: fix more premature OOM due to race with cpuset update
mm, mempolicy: stop adjusting current->il_next in mpol_rebind_nodemask()
mm, page_alloc: pass preferred nid instead of zonelist to allocator
mm, mempolicy: simplify rebinding mempolicies when updating cpusets
mm, cpuset: always use seqlock when changing task's nodemask
mm, mempolicy: don't check cpuset seqlock where it doesn't matter
mm, page_alloc: fallback to smallest page when not stealing whole pageblock
Wei Yang (8):
mm/slub.c: remove a redundant assignment in ___slab_alloc()
mm/slub: reset cpu_slab's pointer in deactivate_slab()
mm/slub.c: pack red_left_pad with another int to save a word
mm/slub.c: wrap cpu_slab->partial in CONFIG_SLUB_CPU_PARTIAL
mm/slub.c: wrap kmem_cache->cpu_partial in config CONFIG_SLUB_CPU_PARTIAL
mm/nobootmem.c: return 0 when start_pfn equals end_pfn
mm/memory_hotplug: just build zonelist for newly added node
mm/page_alloc: return 0 in case this node has no page within the zone
Will Deacon (3):
mm, gup: remove broken VM_BUG_ON_PAGE compound check for hugepages
include/linux/page_ref.h: ensure page_ref_unfreeze is ordered against prior accesses
mm/migrate.c: stabilise page count when migrating transparent hugepages
Yevgen Pronenko (1):
mm/memory.c: convert to DEFINE_DEBUGFS_ATTRIBUTE
Yisheng Xie (1):
vmalloc: show lazy-purged vma info in vmallocinfo
piaojun (1):
ocfs2: free 'dummy_sc' in sc_fop_release() to prevent memory leak
zhenwei.pi (1):
mm/balloon_compaction.c: enqueue zero page to balloon device
zhong jiang (2):
mm/page_owner: align with pageblock_nr pages
mm/vmstat.c: walk the zone in pageblock_nr_pages steps
--
Michal Hocko
SUSE Labs
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply
* Re: [linux-next] cpus stalls detected few hours after booting next kernel
From: Abdul Haleem @ 2017-07-07 11:06 UTC (permalink / raw)
To: Nicholas Piggin
Cc: sachinp, Stephen Rothwell, Paul McKenney, linux-kernel,
linux-next, paulus, paulmck, linuxppc-dev
In-Reply-To: <20170630172802.6d4ddca2@roar.ozlabs.ibm.com>
On Fri, 2017-06-30 at 17:28 +1000, Nicholas Piggin wrote:
> On Fri, 30 Jun 2017 10:52:18 +0530
> Abdul Haleem <abdhalee@linux.vnet.ibm.com> wrote:
>
> > On Fri, 2017-06-30 at 00:45 +1000, Nicholas Piggin wrote:
> > > On Thu, 29 Jun 2017 20:23:05 +1000
> > > Nicholas Piggin <npiggin@gmail.com> wrote:
> > >
> > > > On Thu, 29 Jun 2017 19:36:14 +1000
> > > > Nicholas Piggin <npiggin@gmail.com> wrote:
> > >
> > > > > I don't *think* the replay-wakeup-interrupt patch is directly involved, but
> > > > > it's likely to be one of the idle patches.
> > >
> > > Okay this turned out to be misconfigured sleep states I added for the
> > > simulator, sorry for the false alarm.
> > >
> > > > Although you have this in the backtrace. I wonder if that's a stuck
> > > > lock in rcu_process_callbacks?
> > >
> > > So this spinlock becomes top of the list of suspects. Can you try
> > > enabling lockdep and try to reproduce it?
> >
> > Yes, recreated again with CONFIG_LOCKDEP=y & CONFIG_DEBUG_LOCKDEP=y set.
> > I do not see any difference in trace messages with and without LOCKDEP
> > enabled.
> >
> > Please find the attached log file.
>
> Can you get an rcu_invoke_callback event trace that Paul suggested?
Yes, I was able to collect the perf data for rcu_invoke_callback event
on recent next kernel (4.12.0-next-20170705). the issue is rare to hit.
After booting the next kernel, I started this command 'perf record -e
rcu:rcu_invoke_callback -a -g -- cat' and waited for 30 minutes.
five minutes after seeing the stalls messages, I did CTRL-C to end the
perf command.
@Nicholas : the perf.data report is too huge to attach here, shall I
ping you the internal location of file on slack/mail ? Also the machine
is in the same state if you want to use it ?
>
> Does this bug show up with just the powerpc next branch?
>
> Thanks,
> Nick
>
--
Regard's
Abdul Haleem
IBM Linux Technology Centre
^ permalink raw reply
* next-20170707 build: 1 failures 4 warnings (next-20170707)
From: Build bot for Mark Brown @ 2017-07-07 7:55 UTC (permalink / raw)
To: kernel-build-reports, linaro-kernel, linux-next
Tree/Branch: next-20170707
Git describe: next-20170707
Commit: e29b3671c4 Add linux-next specific files for 20170707
Build Time: 0 min 39 sec
Passed: 6 / 7 ( 85.71 %)
Failed: 1 / 7 ( 14.29 %)
Errors: 1
Warnings: 4
Section Mismatches: 0
Failed defconfigs:
arm-allmodconfig
Errors:
arm-allmodconfig
ERROR: "__aeabi_uldivmod" [drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.ko] undefined!
-------------------------------------------------------------------------------
defconfigs with issues (other than build errors):
4 warnings 0 mismatches : arm-allmodconfig
-------------------------------------------------------------------------------
Errors summary: 1
1 ERROR: "__aeabi_uldivmod" [drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.ko] undefined!
Warnings Summary: 4
1 <command-line>:0:16: warning: format '%ld' expects argument of type 'long int', but argument 3 has type 'u32 {aka unsigned int}' [-Wformat=]
1 ../drivers/staging/media/imx/imx-media-of.c:216:4: warning: 'remote_np' may be used uninitialized in this function [-Wmaybe-uninitialized]
1 ../drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:1744:3: warning: ignoring return value of 'copy_to_iter', declared with attribute warn_unused_result [-Wunused-result]
1 ../drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:1643:2: warning: ignoring return value of 'copy_from_iter', declared with attribute warn_unused_result [-Wunused-result]
===============================================================================
Detailed per-defconfig build reports below:
-------------------------------------------------------------------------------
arm-allmodconfig : FAIL, 1 errors, 4 warnings, 0 section mismatches
Errors:
ERROR: "__aeabi_uldivmod" [drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.ko] undefined!
Warnings:
<command-line>:0:16: warning: format '%ld' expects argument of type 'long int', but argument 3 has type 'u32 {aka unsigned int}' [-Wformat=]
../drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:1643:2: warning: ignoring return value of 'copy_from_iter', declared with attribute warn_unused_result [-Wunused-result]
../drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:1744:3: warning: ignoring return value of 'copy_to_iter', declared with attribute warn_unused_result [-Wunused-result]
../drivers/staging/media/imx/imx-media-of.c:216:4: warning: 'remote_np' may be used uninitialized in this function [-Wmaybe-uninitialized]
-------------------------------------------------------------------------------
Passed with no errors, warnings or mismatches:
arm-multi_v5_defconfig
arm-multi_v7_defconfig
x86_64-defconfig
arm-allnoconfig
x86_64-allnoconfig
arm-multi_v4t_defconfig
close failed in file object destructor:
sys.excepthook is missing
lost sys.stderr
^ permalink raw reply
* linux-next: Tree for Jul 7
From: Stephen Rothwell @ 2017-07-07 4:57 UTC (permalink / raw)
To: Linux-Next Mailing List; +Cc: Linux Kernel Mailing List
Hi all,
Please do not add any v4.14 material to you linux-next included branches
until after v4.13-rc1 has been released.
Changes since 20170706:
The f2fs tree gained a conflict against Linus' tree.
The akpm tree lost a patch that turned up elsewhere.
Non-merge commits (relative to Linus' tree): 4006
3387 files changed, 456543 insertions(+), 62457 deletions(-)
----------------------------------------------------------------------------
I have created today's linux-next tree at
git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
(patches at http://www.kernel.org/pub/linux/kernel/next/ ). If you
are tracking the linux-next tree using git, you should not use "git pull"
to do so as that will try to merge the new linux-next release with the
old one. You should use "git fetch" and checkout or reset to the new
master.
You can see which trees have been included by looking in the Next/Trees
file in the source. There are also quilt-import.log and merge.log
files in the Next directory. Between each merge, the tree was built
with a ppc64_defconfig for powerpc and an allmodconfig (with
CONFIG_BUILD_DOCSRC=n) for x86_64, a multi_v7_defconfig for arm and a
native build of tools/perf. After the final fixups (if any), I do an
x86_64 modules_install followed by builds for x86_64 allnoconfig,
powerpc allnoconfig (32 and 64 bit), ppc44x_defconfig, allyesconfig
and pseries_le_defconfig and i386, sparc and sparc64 defconfig. And
finally, a simple boot test of the powerpc pseries_le_defconfig kernel
in qemu.
Below is a summary of the state of the merge.
I am currently merging 266 trees (counting Linus' and 41 trees of bug
fix patches pending for the current merge release).
Stats about the size of the tree over time can be seen at
http://neuling.org/linux-next-size.html .
Status of my local build tests will be at
http://kisskb.ellerman.id.au/linux-next . If maintainers want to give
advice about cross compilers/configs that work, we are always open to add
more builds.
Thanks to Randy Dunlap for doing many randconfig builds. And to Paul
Gortmaker for triage and bug fixes.
--
Cheers,
Stephen Rothwell
$ git checkout master
$ git reset --hard stable
Merging origin/master (90311148415a Merge tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi)
Merging fixes/master (b4b8cbf679c4 Cavium CNN55XX: fix broken default Kconfig entry)
Merging kbuild-current/fixes (ad8181060788 kconfig: fix sparse warnings in nconfig)
Merging arc-current/for-curr (c0bc126f97fb Linux 4.12-rc7)
Merging arm-current/fixes (9e25ebfe56ec ARM: 8685/1: ensure memblock-limit is pmd-aligned)
Merging m68k-current/for-linus (204a2be30a7a m68k: Remove ptrace_signal_deliver)
Merging metag-fixes/fixes (b884a190afce metag/usercopy: Add missing fixups)
Merging powerpc-fixes/fixes (d6bd8194e286 powerpc/32: Avoid miscompilation w/GCC 4.6.3 - don't inline copy_to/from_user())
Merging sparc/master (dbd2667a4fb9 sparc64: Fix gup_huge_pmd)
Merging fscrypt-current/for-stable (42d97eb0ade3 fscrypt: fix renaming and linking special files)
Merging net/master (f630c38ef0d7 vrf: fix bug_on triggered by rx when destroying a vrf)
Merging ipsec/master (ca3a1b856636 esp6_offload: Fix IP6CB(skb)->nhoff for ESP GRO)
Merging netfilter/master (c644bd79c0a7 Merge git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf)
Merging ipvs/master (3c5ab3f395d6 ipvs: SNAT packet replies only for NATed connections)
Merging wireless-drivers/master (35abcd4f9f30 brcmfmac: fix uninitialized warning in brcmf_usb_probe_phase2())
Merging mac80211/master (4b153ca989a9 Merge tag 'mac80211-for-davem-2017-06-16' of git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211)
Merging sound-current/for-linus (6ede2b7df92f ALSA: opl4: Move inline before return type)
Merging pci-current/for-linus (98dbf5af4fdd PCI: endpoint: Select CRC32 to fix test build error)
Merging driver-core.current/driver-core-linus (650fc870a2ef Merge tag 'docs-4.13' of git://git.lwn.net/linux)
Merging tty.current/tty-linus (650fc870a2ef Merge tag 'docs-4.13' of git://git.lwn.net/linux)
Merging usb.current/usb-linus (dec08194ffec xhci: Limit USB2 port wake support for AMD Promontory hosts)
Merging usb-gadget-fixes/fixes (f50b878fed33 USB: gadget: fix GPF in gadgetfs)
Merging usb-serial-fixes/usb-linus (996fab55d864 USB: serial: qcserial: new Sierra Wireless EM7305 device ID)
Merging usb-chipidea-fixes/ci-for-usb-stable (cbb22ebcfb99 usb: chipidea: core: check before accessing ci_role in ci_role_show)
Merging phy/fixes (9605bc46433d phy: qualcomm: phy-qcom-qmp: fix application of sizeof to pointer)
Merging staging.current/staging-linus (650fc870a2ef Merge tag 'docs-4.13' of git://git.lwn.net/linux)
Merging char-misc.current/char-misc-linus (650fc870a2ef Merge tag 'docs-4.13' of git://git.lwn.net/linux)
Merging input-current/for-linus (ede2e7cdc58e Merge branch 'next' into for-linus)
Merging crypto-current/master (b82ce24426a4 crypto: sha1-ssse3 - Disable avx2)
Merging ide/master (acfead32f3f9 ide: don't call memcpy with the same source and destination)
Merging vfio-fixes/for-linus (39da7c509acf Linux 4.11-rc6)
Merging kselftest-fixes/fixes (2ea659a9ef48 Linux 4.12-rc1)
Merging backlight-fixes/for-backlight-fixes (68feaca0b13e backlight: pwm: Handle EPROBE_DEFER while requesting the PWM)
Merging ftrace-fixes/for-next-urgent (6224beb12e19 tracing: Have branch tracer use recursive field of task struct)
Merging nand-fixes/nand/fixes (d4ed3b9015b5 mtd: nand: make nand_ooblayout_lp_hamming_ops static)
Merging spi-nor-fixes/spi-nor/fixes (2ea659a9ef48 Linux 4.12-rc1)
Merging mfd-fixes/for-mfd-fixes (9e69672e90cc dt-bindings: mfd: Update STM32 timers clock names)
Merging v4l-dvb-fixes/fixes (2a2599c66368 [media] media: entity: Catch unbalanced media_pipeline_stop calls)
Merging reset-fixes/reset/fixes (4497a224f759 reset: hi6220: Set module license so that it can be loaded)
Merging drm-intel-fixes/for-linux-next-fixes (611cdf3695a3 drm/i915: Disable EXEC_OBJECT_ASYNC when doing relocations)
Merging drm-misc-fixes/for-linux-next-fixes (e94ac3510b6a drm: Fix GETCONNECTOR regression)
Merging kbuild/for-next (6d4f39f66570 Merge branches 'kbuild' and 'misc' into for-next)
CONFLICT (modify/delete): scripts/kernel-doc-xml-ref deleted in HEAD and modified in kbuild/for-next. Version kbuild/for-next of scripts/kernel-doc-xml-ref left in tree.
CONFLICT (content): Merge conflict in arch/arm/include/uapi/asm/Kbuild
$ git rm -f scripts/kernel-doc-xml-ref
Merging uuid/for-next (b86a496a4206 ACPI: hns_dsaf_acpi_dsm_guid can be static)
Merging dma-mapping/for-next (1655cf8829d8 ARM: dma-mapping: Remove traces of NOMMU code)
Merging asm-generic/master (a351e9b9fc24 Linux 4.11)
Merging arc/for-next (6f8119230ed0 ARC: set boot print log level to PR_INFO)
Merging arm/for-next (fc256ee00f0c Merge branches 'fixes' and 'misc' into for-next)
Merging arm-perf/for-next/perf (c0f7f7acdecd perf: xgene: Add support for SoC PMU version 3)
Merging arm-soc/for-next (ebc5ff9e87f6 Merge branch 'next/dt64' into for-next)
Merging actions/for-next (8ba75fbb148a Merge branch 'v4.13/arm+sps' into next)
Merging alpine/alpine/for-next (a1144b2b1ec4 ARM: dts: alpine: add valid clock-frequency values)
Merging amlogic/for-next (f99503e956ae Merge branch 'v4.13/defconfig' into tmp/aml-rebuild)
Merging aspeed/for-next (4944e5dbb215 Merge branches 'dt-for-v4.12' and 'defconfig-for-v4.12' into for-next)
Merging at91/at91-next (19964541c231 Merge tag 'armsoc-arm64' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc)
Merging bcm2835/for-next (652fb0c6435c Merge branch anholt/bcm2835-defconfig-next into for-next)
Merging berlin/berlin/for-next (5153351425c9 Merge branch 'berlin/dt' into berlin/for-next)
Merging cortex-m/for-next (f719a0d6a854 ARM: efm32: switch to vendor,device compatible strings)
Merging imx-mxs/for-next (bf6e15ed7f86 Merge branch 'zte/dt64' into for-next)
Merging keystone/next (b45371147f9d Merge branch 'for_4.13/keystone_dts' into next)
Merging mvebu/for-next (cf79eb3aab84 Merge branch 'mvebu/dt64' into mvebu/for-next)
Merging omap/for-next (05f2a5417cf1 Merge branch 'omap-for-v4.13/mmc-regulator' into for-next)
Merging omap-pending/for-next (c20c8f750d9f ARM: OMAP2+: hwmod: fix _idle() hwmod state sanity check sequence)
Merging reset/reset/next (dfeac250c429 reset: zx2967: constify zx2967_reset_ops.)
Merging qcom/for-next (9c60544280d4 Merge tag 'qcom-drivers-for-4.13' into all-for-4.13-revised)
Merging realtek/for-next (007e6304223c Merge branch 'v4.13/dt64' into next)
Merging renesas/next (d75d45bfffd5 Merge branch 'fixes-for-v4.13' into next)
Merging rockchip/for-next (dd3f24b9ff88 Merge branch 'v4.13-clk/next' into for-next)
Merging rpi/for-rpi-next (bc0195aad0da Linux 4.2-rc2)
Merging samsung/for-next (2ea659a9ef48 Linux 4.12-rc1)
Merging samsung-krzk/for-next (005537e095a6 Merge branch 'fixes' into for-next)
Merging sunxi/sunxi/for-next (efb85d294c2a Merge branches 'sunxi/h3-for-4.13', 'sunxi/dt-for-4.13' and 'sunxi/dt64-for-4.13' into sunxi/for-next)
Merging tegra/for-next (07bb9460b188 Merge branch for-4.13/arm64/dt into for-next)
Merging arm64/for-next/core (425e1ed73e65 arm64: fix endianness annotation for 'struct jit_ctx' and friends)
Merging clk/clk-next (3cf50f6b13a2 Merge branch 'binding-doc-cp110-ap806' of git://git.infradead.org/linux-mvebu into clk-next)
CONFLICT (content): Merge conflict in MAINTAINERS
Merging c6x/for-linux-next (91ebcd1b97ae MAINTAINERS: update email address for C6x maintainer)
Merging cris/for-next (8f50f2a1b46a cris: No need to append -O2 and $(LINUXINCLUDE))
Merging h8300/h8300-next (58c57526711f h8300: Add missing include file to asm/io.h)
Merging hexagon/linux-next (02cc2ccfe771 Revert "Hexagon: fix signal.c compile error")
Merging ia64/next (fbb0e4da96f4 ia64: salinfo: use a waitqueue instead a sema down/up combo)
Merging m68k/for-next (204a2be30a7a m68k: Remove ptrace_signal_deliver)
Merging m68knommu/for-next (354b6382847d m68k: defconfig: Cleanup from old Kconfig options)
Merging metag/for-next (e3cd7f013bac metag/mm: Drop pointless increment)
Merging microblaze/next (14ef905bb2ee microblaze: Fix MSR flags when returning from exception)
Merging mips/mips-for-linux-next (9cc7e560b8f2 MIPS: Traced negative syscalls should return -ENOSYS)
Merging nios2/for-next (e118c3fec9c0 nios2: remove custom early console implementation)
Merging openrisc/for-next (9d15eb228b10 openrisc: defconfig: Cleanup from old Kconfig options)
Merging parisc-hd/for-next (227145eb38fb parisc: ->mapping_error)
Merging powerpc/next (1e0fc9d1eb2b powerpc/Kconfig: Enable STRICT_KERNEL_RWX for some configs)
Merging fsl/next (61baf1555512 powerpc/64e: Don't place the stack beyond TASK_SIZE)
Merging mpc5xxx/next (39e69f55f857 powerpc: Introduce the use of the managed version of kzalloc)
Merging s390/features (0c6b2975a9a7 Update my email address)
Merging sparc-next/master (0cd52df8a782 sparc: kernel: pmc: make of_device_ids const.)
Merging sh/for-next (6e2fbfdd585f sh: fix futex FUTEX_OP_SET op on userspace addresses)
Merging tile/master (0af0bc38175d mm, tile: drop arch_{add,remove}_memory)
Merging uml/linux-next (1bcbfbfdeb00 um: add dummy ioremap and iounmap functions)
Merging unicore32/unicore32 (bc27113620ca unicore32-oldabi: add oldabi syscall interface)
CONFLICT (content): Merge conflict in arch/unicore32/include/asm/Kbuild
Merging xtensa/xtensa-for-next (bdf3b55fde37 Merge branch 'xtensa-fixes' into xtensa-for-next)
Merging fscrypt/master (c250b7dd8e73 fscrypt: make ->dummy_context() return bool)
Merging befs/for-next (0bbabf98dd76 befs: make export work with cold dcache)
Merging btrfs/next (8b8b08cbfb90 Btrfs: fix delalloc accounting after copy_from_user faults)
Merging btrfs-kdave/for-next (848c23b78faf btrfs: Remove false alert when fiemap range is smaller than on-disk extent)
Merging ceph/master (fd9c2ce9b11e libceph: advertise support for NEW_OSDOP_ENCODING and SERVER_LUMINOUS)
Merging cifs/for-next (966681c9f029 CIFS: fix circular locking dependency)
Merging configfs/for-next (19e72d3abb63 configfs: Introduce config_item_get_unless_zero())
Merging ecryptfs/next (be280b25c328 ecryptfs: remove private bin2hex implementation)
Merging ext3/for_next (08db141b5313 reiserfs: fix race in prealloc discard)
Merging ext4/dev (2bcc687d6986 ext4: fix spelling mistake: "prellocated" -> "preallocated")
Merging f2fs/dev (34abcd6c3435 f2fs: relax migratepage for atomic written page)
CONFLICT (content): Merge conflict in fs/f2fs/f2fs.h
Merging freevxfs/for-next (bf1bb4b460c8 freevxfs: update Kconfig information)
Merging fscache/fscache (d52bd54db8be Merge branch 'akpm' (patches from Andrew))
Merging fuse/for-next (68227c03cba8 fuse: initialize the flock flag in fuse_file on allocation)
Merging jfs/jfs-next (684666e51585 jfs: atomically read inode size)
Merging nfs/linux-next (6f7da290413b Linux 4.12)
Merging nfsd/nfsd-next (bb2a8b0cd116 nfsd4: const-ify nfsd4_ops)
Merging orangefs/for-next (2f713b5c7d2a orangefs: count directory pieces correctly)
Merging overlayfs/overlayfs-next (f4439de11828 ovl: mark parent impure and restore timestamp on ovl_link_up())
Merging v9fs/for-next (a333e4bf2556 fs/9p: use fscache mutex rather than spinlock)
Merging ubifs/linux-next (af65936a7a5b ubifs: don't bother checking for encryption key in ->mmap())
Merging xfs/for-next (2192b0baea39 xfs: fix contiguous dquot chunk iteration livelock)
Merging file-locks/linux-next (d997cba55291 btrfs: minimal conversion to errseq_t writeback error reporting on fsync)
CONFLICT (content): Merge conflict in mm/filemap.c
CONFLICT (content): Merge conflict in include/linux/fs.h
Merging vfs/for-next (d5ba0217a23a Merge branches 'work.uaccess' and 'work.misc' into for-next)
Merging vfs-jk/vfs (030b533c4fd4 fs: Avoid premature clearing of capabilities)
Merging vfs-miklos/next (0eb8af4916a5 vfs: use helper for calling f_op->fsync())
Merging printk/for-next (f4e981cba2de printk: add __printf attributes to internal functions)
Merging pci/next (7542a046bfdd Merge branch 'pci/host-xilinx' into next)
CONFLICT (content): Merge conflict in kernel/irq/affinity.c
CONFLICT (content): Merge conflict in drivers/nvme/host/pci.c
CONFLICT (content): Merge conflict in drivers/net/wireless/marvell/mwifiex/pcie.c
CONFLICT (content): Merge conflict in drivers/gpu/drm/radeon/radeon_device.c
Merging pstore/for-next/pstore (0752e4028c00 powerpc/nvram: use memdup_user)
Merging hid/for-next (8b454744e88d Merge branch 'for-4.13/ish' into for-next)
Merging i2c/i2c/for-next (e40662276983 Merge branch 'i2c/for-4.13' into i2c/for-next)
Merging jdelvare-hwmon/master (08d27eb20666 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs)
Merging dmi/master (8efa050f19fe firmware: dmi_scan: Check DMI structure length)
Merging hwmon-staging/hwmon-next (44b413661b57 hwmon: (aspeed-pwm-tacho) Poll with short sleeps.)
Merging jc_docs/docs-next (ecebcd4da6cd docs: Do not include from kernel/rcu/srcu.c)
Merging v4l-dvb/master (2748e76ddb29 media: staging: cxd2099: Activate cxd2099 buffer mode)
Merging v4l-dvb-next/master (d9c4615854ec [media] dvb uapi docs: enums are passed by value, not reference)
CONFLICT (content): Merge conflict in Documentation/media/uapi/dvb/fe-set-voltage.rst
CONFLICT (content): Merge conflict in Documentation/media/uapi/dvb/fe-set-tone.rst
CONFLICT (content): Merge conflict in Documentation/media/uapi/dvb/fe-diseqc-send-burst.rst
Merging fbdev/fbdev-for-next (360772f26407 video: fbdev: matrox: the list iterator can't be NULL)
Merging pm/linux-next (9f11765f6370 Merge branches 'pm-domains', 'pm-sleep' and 'pm-cpufreq' into linux-next)
Merging idle/next (306899f94804 x86 tsc: Add the Intel Denverton Processor to native_calibrate_tsc())
Merging thermal/next (5d72ed35678a Merge branches 'thermal-core', 'thermal-intel' and 'thermal-soc' into next)
Merging thermal-soc/next (aa647852c32a Merge branch 'work-linus' into work-next)
Merging ieee1394/for-next (72f3c27aa646 firewire: net: max MTU off by one)
Merging dlm/next (591c3beb86c4 dlm: Delete an unnecessary variable initialisation in dlm_ls_start())
Merging swiotlb/linux-next (69369f52d28a swiotlb-xen: implement xen_swiotlb_get_sgtable callback)
Merging net-next/master (9b51f04424e1 Merge branch 'parisc-4.13-2' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux)
Merging ipsec-next/master (8bafd73093f2 xfrm: add UDP encapsulation port in migrate message)
Merging netfilter-next/master (04ba724b659c netfilter: nfnetlink: extended ACK reporting)
Merging nfc-next/master (bd751808f9ff NFC: trf7970a: Correct register settings for 27MHz clock)
Merging ipvs-next/master (fb90e8dedb46 ipvs: change comparison on sync_refresh_period)
Merging wireless-drivers-next/master (17d9aa66b08d Merge tag 'iwlwifi-next-for-kalle-2017-06-30' of git://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-next)
Merging bluetooth/master (4b556ea72a8a Bluetooth: btqca: Fixed a coding style error)
Merging mac80211-next/master (3dc02251f43f Merge branch 'skb-accessor-cleanups')
Merging rdma/for-next (bc5214ee2922 IB/hfi1: Handle missing magic values in config file)
Merging gfs2/for-next (9b51f04424e1 Merge branch 'parisc-4.13-2' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux)
Merging mtd/master (05e97a9eda72 Merge tag 'nand/fixes-for-4.12-rc3' of git://git.infradead.org/linux-mtd into MTD)
Merging l2-mtd/master (c169e3d3c049 mtd: partitions: fixup some allocate_partition() whitespace)
Merging nand/nand/next (81667e9c8ad8 mtd: nand: mtk: release lock on error path)
Merging spi-nor/spi-nor/next (1a18915b4971 mtd: spi-nor: parse Serial Flash Discoverable Parameters (SFDP) tables)
Merging crypto/master (bcf741cb7792 crypto: testmgr - Reenable sha1/aes in FIPS mode)
Merging drm/drm-next (00fc2c26bc46 drm: Remove unused drm_file parameter to drm_syncobj_replace_fence())
CONFLICT (content): Merge conflict in drivers/gpu/drm/i915/i915_gem_execbuffer.c
CONFLICT (content): Merge conflict in drivers/gpu/drm/drm_internal.h
Merging drm-panel/drm/panel/for-next (e4bac408b084 drm/panel: simple: Add support for Winstar WF35LTIACD)
Merging drm-intel/for-linux-next (04941829b004 drm/i915: Hold RPM wakelock while initializing OA buffer)
Merging drm-tegra/drm/tegra/for-next (43240bbd871e gpu: host1x: At first try a non-blocking allocation for the gather copy)
Merging drm-misc/for-linux-next (4086d90cffb8 drm/atomic: Add missing drm_atomic_state_clear to atomic_remove_fb)
Merging drm-exynos/exynos-drm/for-next (7d1e04231461 Merge tag 'usercopy-v4.8-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux)
Merging drm-msm/msm-next (4a630fadbb29 drm/msm: Fix potential buffer overflow issue)
Merging hdlcd/for-upstream/hdlcd (fee4964f0a6c drm/arm: hdlcd: remove unused variables)
Merging mali-dp/for-upstream/mali-dp (e40eda3dda1e drm/arm: mali-dp: Use CMA helper for plane buffer address calculation)
Merging sunxi-drm/sunxi-drm/for-next (110d33dd428e drm/sun4i: Add compatible for the A10s pipeline)
Merging imx-drm/imx-drm/next (994fc62e1d04 drm/imx: lock scanout transfers for consecutive bursts)
Merging etnaviv/etnaviv/next (8cc47b3ea082 drm/etnaviv: populate GEM objects on cpu_prep)
Merging kconfig/for-next (5bcba792bb30 localmodconfig: Fix whitespace repeat count after "tristate")
Merging regmap/for-next (2a40f9421cb7 Merge remote-tracking branches 'regmap/topic/1wire', 'regmap/topic/irq' and 'regmap/topic/lzo' into regmap-next)
Merging sound/for-next (6ede2b7df92f ALSA: opl4: Move inline before return type)
Merging sound-asoc/for-next (b821d298f886 Merge remote-tracking branch 'asoc/topic/inte' into asoc-next)
Merging modules/modules-next (96b5b19459b3 module: make the modinfo name const)
Merging input/next (65938133784a MAINTAINERS: update input subsystem patterns)
Merging block/for-next (02d1b34a3cb3 Merge branch 'for-4.13/block' into for-next)
Merging lightnvm/for-next (1c6286f26301 lightnvm: fix some error code in pblk-init.c)
Merging device-mapper/for-next (4d49f1b4a1fc dm raid: stop using BUG() in __rdev_sectors())
Merging pcmcia/master (e8e68fd86d22 pcmcia: do not break rsrc_nonstatic when handling anonymous cards)
Merging mmc/next (e47c0b96678c mmc: dw_mmc: remove the unnecessary slot variable)
Merging kgdb/kgdb-next (7a6653fca500 kdb: Fix handling of kallsyms_symbol_next() return value)
Merging md/for-next (7184ef8bab0c MD: fix sleep in atomic)
Applying: md: fix up for "blk: replace bioset_create_nobvec() with a flags arg to bioset_create()"
Merging mfd/for-mfd-next (d1f99b97478e mfd: madera: Add register definitions for Cirrus Logic Madera codecs)
Merging backlight/for-backlight-next (056d6ff470a8 video: adp8870: move header file out of I2C realm)
Merging battery/for-next (7bb5a650f347 power: supply: twl4030-charger: add deferred probing for phy and iio)
Merging omap_dss2/for-next (c456a2f30de5 video: smscufx: remove unused variable)
Merging regulator/for-next (e52c01d5bcfd Merge remote-tracking branches 'regulator/topic/settle', 'regulator/topic/tps65910' and 'regulator/topic/tps65917' into regulator-next)
Merging security/next (c4758fa59285 apparmor: put back designators in struct initialisers)
Merging integrity/next (fc26bd50539b IMA: update IMA policy documentation to include pcr= option)
Merging keys/keys-next (3088c2ad40cf Merge remote-tracking branch 'origin/keys-fixes' into keys-next)
CONFLICT (content): Merge conflict in security/keys/dh.c
Merging selinux/next (6a3911837da0 selinux: enable genfscon labeling for tracefs)
Merging tpmdd/next (65bbcc19ab70 tpm: do not suspend/resume if power stays on)
Merging watchdog/master (c013b65ad8a1 watchdog: introduce watchdog_worker_should_ping helper)
Merging iommu/next (6a7086431fa1 Merge branches 'iommu/fixes', 'arm/rockchip', 'arm/renesas', 'arm/smmu', 'arm/core', 'x86/vt-d', 'x86/amd', 's390' and 'core' into next)
Merging dwmw2-iommu/master (910170442944 iommu/vt-d: Fix PASID table allocation)
Merging vfio/next (5d6dee80a1e9 vfio: New external user group/file match)
Merging trivial/for-next (6fbc8798d946 tty: fix comment for __tty_alloc_driver())
Merging audit/next (15318a9f8015 audit: Reduce overhead using a coarse clock)
Merging devicetree/for-next (a4485b545e2f Merge branch 'dt/property-move' into dt/next)
CONFLICT (content): Merge conflict in Documentation/devicetree/bindings/net/ethernet.txt
Merging mailbox/mailbox-for-next (25bfee16d5a3 mailbox: Introduce Qualcomm APCS IPC driver)
Merging spi/for-next (082f6968bb20 Merge remote-tracking branches 'spi/topic/spidev', 'spi/topic/st-ssc4' and 'spi/topic/stm32' into spi-next)
Merging tip/auto-latest (4422d80ed7d4 Merge branch 'ras-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip)
Merging clockevents/clockevents/next (d9569035d594 clocksource: Add an alias macro CLOCKSOURCE_OF_DECLARE)
CONFLICT (content): Merge conflict in include/asm-generic/vmlinux.lds.h
CONFLICT (content): Merge conflict in drivers/clocksource/timer-fttmr010.c
CONFLICT (content): Merge conflict in drivers/clocksource/Makefile
CONFLICT (content): Merge conflict in drivers/clocksource/Kconfig
CONFLICT (content): Merge conflict in arch/arm/mach-moxart/Kconfig
Merging edac/linux_next (345fb0a9a634 Merge tag 'edac_for_4.11' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp)
Merging edac-amd/for-next (164c29244d4b EDAC, pnd2: Fix Apollo Lake DIMM detection)
Merging irqchip/irqchip/for-next (c1ae3cfa0e89 Linux 4.11-rc1)
Merging ftrace/for-next (69d71879d2cf ftrace: Test for NULL iter->tr in regex for stack_trace_filter changes)
Merging rcu/rcu/next (6d48152eafde rcu: Remove RCU CPU stall warnings from Tiny RCU)
Merging kvm/linux-next (1372324b328c Update my email address)
CONFLICT (content): Merge conflict in arch/s390/kvm/gaccess.c
CONFLICT (content): Merge conflict in Documentation/arm64/silicon-errata.txt
Merging kvm-arm/next (d38338e396ee arm64: Remove a redundancy in sysreg.h)
Merging kvm-mips/next (dc44abd6aad2 KVM: MIPS/Emulate: Properly implement TLBR for T&E)
Merging kvm-ppc/kvm-ppc-next (8b24e69fc47e KVM: PPC: Book3S HV: Close race with testing for signals on guest entry)
Merging kvms390/next (d52cd2076eb2 KVM: s390: Inject machine check into the nested guest)
Merging xen-tip/linux-next (c54590cac51d x86/xen: allow userspace access during hypercalls)
CONFLICT (content): Merge conflict in drivers/xen/events/events_base.c
Merging percpu/for-next (e3efe3db932b percpu: fix static checker warnings in pcpu_destroy_chunk)
Merging workqueues/for-next (bacb71fc9187 Merge branch 'for-4.12' into for-next)
Merging drivers-x86/for-next (d791db9a57ab platform/x86: sony-laptop: constify attribute_group and input index array)
Merging chrome-platform/for-next (5d6a312e8f99 platform/chrome: cros_ec_lightbar - hide unused PM functions)
Merging hsi/for-next (67ddd75771b6 HSI: core: Use kcalloc() in two functions)
Merging leds/for-next (4d1707c1c690 leds: lp55xx: make various arrays static const)
Merging ipmi/for-next (4495ec6d770e ipmi:ssif: Add missing unlock in error branch)
Merging driver-core/driver-core-next (650fc870a2ef Merge tag 'docs-4.13' of git://git.lwn.net/linux)
Merging usb/usb-next (650fc870a2ef Merge tag 'docs-4.13' of git://git.lwn.net/linux)
Merging usb-gadget/next (0591bc236015 usb: gadget: add f_uac1 variant based on a new u_audio api)
Merging usb-serial/usb-next (c22ac6d29f18 USB: serial: propagate late probe errors)
Merging usb-chipidea-next/ci-for-usb-next (c4a0bbbdb7f6 usb: chipidea: properly handle host or gadget initialization failure)
Merging phy-next/next (af850e14a7ae phy: bcm-ns-usb3: add MDIO driver using proper bus layer)
Merging tty/tty-next (650fc870a2ef Merge tag 'docs-4.13' of git://git.lwn.net/linux)
Merging char-misc/char-misc-next (650fc870a2ef Merge tag 'docs-4.13' of git://git.lwn.net/linux)
Merging extcon/extcon-next (1f4be24786b8 extcon: int3496: Switch to devm_acpi_dev_add_driver_gpios())
Merging staging/staging-next (650fc870a2ef Merge tag 'docs-4.13' of git://git.lwn.net/linux)
Merging mux/for-next (a351e9b9fc24 Linux 4.11)
Merging slave-dma/next (f6a28cf9aff9 Merge branch 'fixes' into next)
Merging cgroup/for-next (5136f6365ce3 cgroup: implement "nsdelegate" mount option)
Merging scsi/for-next (48d9c49d7106 Merge branch 'misc' into for-next)
Merging scsi-mkp/for-next (c345c6ca1382 qla2xxx: Fix NVMe entry_type for iocb packet on BE system)
Merging target-updates/for-next (1e1ddaf2de5a tcmu: Fix flushing cmd entry dcache page)
CONFLICT (content): Merge conflict in drivers/scsi/qla2xxx/tcm_qla2xxx.c
CONFLICT (content): Merge conflict in drivers/scsi/qla2xxx/qla_target.c
Merging target-merge/for-next-merge (2994a7518317 cxgb4: update Kconfig and Makefile)
Merging target-bva/for-next (2ea659a9ef48 Linux 4.12-rc1)
Merging libata/for-next (af62e4938e3c Merge branch 'for-4.13' into for-next)
Merging binfmt_misc/for-next (4af75df6a410 binfmt_misc: add F option description to documentation)
Merging vhost/linux-next (e41b1355508d virtio_balloon: disable VIOMMU support)
Merging rpmsg/for-next (9ef2b6cc595a Merge branches 'hwspinlock-next', 'rpmsg-next' and 'rproc-next' into for-next)
Merging gpio/for-next (8d2c6297aec9 Merge branch 'devel' into for-next)
Merging pinctrl/for-next (ece5946c2eed Merge branch 'devel' into for-next)
Merging pinctrl-samsung/for-next (a453f3693f2a pinctrl: samsung: Explicitly cast pointer returned by of_iomap() to iomem)
Merging pwm/for-next (5ec8c48a6235 Merge branch 'for-4.13/drivers' into for-next)
Merging dma-buf/for-next (194cad44c4e1 dma-buf/sync_file: improve Kconfig description for Sync Files)
CONFLICT (content): Merge conflict in drivers/dma-buf/Kconfig
Merging userns/for-next (296990deb389 mnt: Make propagate_umount less slow for overlapping mount propagation trees)
Merging ktest/for-next (f7c6401ff84a ktest: Make sure wait_for_input does honor the timeout)
Merging random/dev (e2682130931f random: suppress spammy warnings about unseeded randomness)
Merging aio/master (b562e44f507e Linux 4.5)
Merging kselftest/next (e67f85fb96ca selftests: membarrier: use ksft_* var arg msg api)
CONFLICT (content): Merge conflict in MAINTAINERS
CONFLICT (content): Merge conflict in Documentation/dev-tools/index.rst
Merging y2038/y2038 (69973b830859 Linux 4.9)
Merging luto-misc/next (2dcd0af568b0 Linux 4.6)
Merging borntraeger/linux-next (e76d21c40bd6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net)
Merging livepatching/for-next (26d8d1e9bb48 Merge branch 'for-4.12/upstream-fixes' into for-next)
Merging coresight/next (9e4de0683f68 coresight: etm3x: Set synchronisation frequencty to TRM default)
Merging rtc/rtc-next (9a6757eadc14 rtc: stm32: add STM32H7 RTC support)
Merging hwspinlock/for-next (bd5717a4632c hwspinlock: qcom: Correct msb in regmap_field)
Merging nvdimm/libnvdimm-for-next (9d92573fff3e Merge branch 'for-4.13/dax' into libnvdimm-for-next)
CONFLICT (content): Merge conflict in lib/iov_iter.c
CONFLICT (content): Merge conflict in include/linux/uio.h
Merging dax-misc/dax-misc (4d9a2c874667 dax: Remove i_mmap_lock protection)
Merging idr/idr-4.11 (f0f3f2d0a3e0 radix tree test suite: Specify -m32 in LDFLAGS too)
Merging kspp/for-next/kspp (cb00e6b58abb Merge branch 'for-next/gcc-plugin/randstruct' into for-next/kspp)
CONFLICT (content): Merge conflict in include/linux/fs.h
Merging akpm-current/current (334961e202e0 ipc/util.h: update documentation for ipc_getref() and ipc_putref())
CONFLICT (content): Merge conflict in include/linux/sem.h
CONFLICT (content): Merge conflict in include/linux/ipc.h
$ git checkout -b akpm remotes/origin/akpm/master
Applying: net/netfilter/x_tables.c: use kvmalloc() in xt_alloc_table_info()
Applying: kernel/watchdog: remove unused declaration
Applying: kernel/watchdog: introduce arch_touch_nmi_watchdog()
Applying: kernel/watchdog: split up config options
Applying: watchdog-split-up-config-options-fix
Applying: kernel/watchdog: provide watchdog_nmi_reconfigure() for arch watchdogs
Applying: watchdog-provide-watchdog_reconfigure-for-arch-watchdogs-fix
Applying: kernel/watchdog: hide unused function
Applying: powerpc/64s: implement arch-specific hardlockup watchdog
Applying: powerpc/64s: watchdog honor watchdog disable at boot/hotplug
Applying: powerpc/64s: watchdog false positive warning at CPU unplug
Applying: powerpc-64s-implement-arch-specific-hardlockup-watchdog-checkpatch-fixes
Applying: efi: avoid fortify checks in EFI stub
Applying: kexec_file: adjust declaration of kexec_purgatory
Applying: IB/rxe: do not copy extra stack memory to skb
Applying: powerpc: don't fortify prom_init
Applying: powerpc: make feature-fixup tests fortify-safe
Applying: include/linux/string.h: add the option of fortified string.h functions
Applying: x86: fix fortified memcpy
Applying: fortify: avoid panic() in favor of BUG()
Applying: sh: mark end of BUG() implementation as unreachable
Applying: random,stackprotect: introduce get_random_canary function
Applying: fork,random: use get_random_canary() to set tsk->stack_canary
Applying: x86: ascii armor the x86_64 boot init stack canary
Applying: arm64: ascii armor the arm64 boot init stack canary
Applying: sh64: ascii armor the sh64 boot init stack canary
Applying: x86/mmap: properly account for stack randomization in mmap_base
Applying: arm64/mmap: properly account for stack randomization in mmap_base
Applying: powerpc,mmap: properly account for stack randomization in mmap_base
Applying: MIPS: do not use __GFP_REPEAT for order-0 request
Applying: mm, tree wide: replace __GFP_REPEAT by __GFP_RETRY_MAYFAIL with more useful semantic
Applying: mm-tree-wide-replace-__gfp_repeat-by-__gfp_retry_mayfail-with-more-useful-semantic-fix
Applying: mm-tree-wide-replace-__gfp_repeat-by-__gfp_retry_mayfail-with-more-useful-semantic-fix
Applying: mm-tree-wide-replace-__gfp_repeat-by-__gfp_retry_mayfail-with-more-useful-semantic-fix-3
Applying: xfs: map KM_MAYFAIL to __GFP_RETRY_MAYFAIL
Applying: mm: kvmalloc support __GFP_RETRY_MAYFAIL for all sizes
Applying: drm/i915: use __GFP_RETRY_MAYFAIL
Applying: mm, migration: do not trigger OOM killer when migrating memory
Applying: checkpatch: improve the STORAGE_CLASS test
Applying: ARM: KVM: move asmlinkage before type
Applying: ARM: HP Jornada 7XX: move inline before return type
Applying: CRIS: gpio: move inline before return type
Applying: FRV: tlbflush: move asmlinkage before return type
Applying: ia64: move inline before return type
Applying: ia64: sn: pci: move inline before type
Applying: m68k: coldfire: move inline before return type
Applying: MIPS: SMP: move asmlinkage before return type
Applying: sh: move inline before return type
Applying: x86/efi: move asmlinkage before return type
Applying: drivers: s390: move static and inline before return type
Applying: drivers: tty: serial: move inline before return type
Applying: USB: serial: safe_serial: move __inline__ before return type
Applying: video: fbdev: intelfb: move inline before return type
Applying: video: fbdev: omap: move inline before return type
Applying: ARM: samsung: usb-ohci: move inline before return type
Applying: sparc64: NG4 memset 32 bits overflow
Applying: xtensa: use generic fb.h
Applying: MAINTAINERS: give kmod some maintainer love
Applying: kmod: add test driver to stress test the module loader
Applying: kmod: add dependencies for test module
Applying: kmod: throttle kmod thread limit
Applying: writeback: rework wb_[dec|inc]_stat family of functions
Applying: lib/crc-ccitt: add CCITT-FALSE CRC16 variant
Merging akpm/master (feef96877eda lib/crc-ccitt: add CCITT-FALSE CRC16 variant)
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox