* Re: [patch 3.5-rc3] mm, mempolicy: fix mbind() to do synchronous migration
@ 2012-06-22 1:45 ` Andrew Morton
0 siblings, 0 replies; 20+ messages in thread
From: Andrew Morton @ 2012-06-22 1:45 UTC (permalink / raw)
To: Linus Torvalds
Cc: David Rientjes, Mel Gorman, KOSAKI Motohiro, linux-kernel,
linux-mm, Peter Zijlstra, Ingo Molnar
On Thu, 21 Jun 2012 17:46:52 -0700 Linus Torvalds <torvalds@linux-foundation.org> wrote:
> On Thu, Jun 21, 2012 at 4:46 PM, Andrew Morton
> <akpm@linux-foundation.org> wrote:
> >
> > I can't really do anything with this patch - it's a bug added by
> > Peter's "mm/mpol: Simplify do_mbind()" and added to linux-next via one
> > of Ingo's trees.
> >
> > And I can't cleanly take the patch over as it's all bound up with the
> > other changes for sched/numa balancing.
>
> I took the patch, it looked obviously correct (passing in a boolean
> was clearly crap).
Ah, OK, the bug was actually "retained" by "mm/mpol: Simplify do_mbind()".
I do still ask what the plans are for that patchset..
> I wonder if I should make sparse warn about any casts to/from enums.
> They tend to always be wrong.
I think it would be worth trying, see how much fallout there is. Also
casts from "enum a" to "enum b". We've had a few of those,
unintentionally.
And casts to/from bool, perhaps. To squish the warning we'd do things
like a_bool = !!a_int. That generates extra code, but gcc internally
generates extra code for a_bool = a_int anyway, and a quick test here
indicates that the generated code is identical (testl/setne).
It would be nice to find a way of converting an integer which is known
to be 1 or 0 into a bool without generating any code, but I haven't
found a way of tricking the compiler into doing that. It's all a bit
of a downside to using bool at all.
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [patch 3.5-rc3] mm, mempolicy: fix mbind() to do synchronous migration
2012-06-22 1:45 ` Andrew Morton
@ 2012-06-22 2:22 ` Linus Torvalds
-1 siblings, 0 replies; 20+ messages in thread
From: Linus Torvalds @ 2012-06-22 2:22 UTC (permalink / raw)
To: Andrew Morton
Cc: David Rientjes, Mel Gorman, KOSAKI Motohiro, linux-kernel,
linux-mm, Peter Zijlstra, Ingo Molnar
On Thu, Jun 21, 2012 at 6:45 PM, Andrew Morton
<akpm@linux-foundation.org> wrote:
>
> And casts to/from bool, perhaps. To squish the warning we'd do things
> like a_bool = !!a_int. That generates extra code, but gcc internally
> generates extra code for a_bool = a_int anyway, and a quick test here
> indicates that the generated code is identical (testl/setne).
It *has* to generate extra code. A cast to Bool is very much not at
all like a normal cast. All the traditional C casts just do a pure bit
truncate (or zero/sign extension) keeping the same value.
A cast to bool is totally different. It is exactly the same as "test
against zero" - so it in no way acts like a traditional integer cast
to a one-bit integer.
I'm not 100% sure the use of "bool" is a great idea, and people who
use pointers to bools are crazy mf's (you can break the fundamental
property of bools by assigning random values through the pointer), but
_Bool certainly ahs the _potential_ to be a good thing. The reason I'm
nervous about it is exactly that people get it wrong so easily because
they do *not* act like any other C type (the whole pointer-to-bool
thing being one example of people doing bad things - I personally
would be much happier if _Bool acted more like a one-bit bitfield and
could not have its address taken).
Linus
--
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 [flat|nested] 20+ messages in thread* Re: [patch 3.5-rc3] mm, mempolicy: fix mbind() to do synchronous migration
@ 2012-06-22 2:22 ` Linus Torvalds
0 siblings, 0 replies; 20+ messages in thread
From: Linus Torvalds @ 2012-06-22 2:22 UTC (permalink / raw)
To: Andrew Morton
Cc: David Rientjes, Mel Gorman, KOSAKI Motohiro, linux-kernel,
linux-mm, Peter Zijlstra, Ingo Molnar
On Thu, Jun 21, 2012 at 6:45 PM, Andrew Morton
<akpm@linux-foundation.org> wrote:
>
> And casts to/from bool, perhaps. To squish the warning we'd do things
> like a_bool = !!a_int. That generates extra code, but gcc internally
> generates extra code for a_bool = a_int anyway, and a quick test here
> indicates that the generated code is identical (testl/setne).
It *has* to generate extra code. A cast to Bool is very much not at
all like a normal cast. All the traditional C casts just do a pure bit
truncate (or zero/sign extension) keeping the same value.
A cast to bool is totally different. It is exactly the same as "test
against zero" - so it in no way acts like a traditional integer cast
to a one-bit integer.
I'm not 100% sure the use of "bool" is a great idea, and people who
use pointers to bools are crazy mf's (you can break the fundamental
property of bools by assigning random values through the pointer), but
_Bool certainly ahs the _potential_ to be a good thing. The reason I'm
nervous about it is exactly that people get it wrong so easily because
they do *not* act like any other C type (the whole pointer-to-bool
thing being one example of people doing bad things - I personally
would be much happier if _Bool acted more like a one-bit bitfield and
could not have its address taken).
Linus
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [patch 3.5-rc3] mm, mempolicy: fix mbind() to do synchronous migration
2012-06-22 1:45 ` Andrew Morton
@ 2012-06-22 3:33 ` Linus Torvalds
-1 siblings, 0 replies; 20+ messages in thread
From: Linus Torvalds @ 2012-06-22 3:33 UTC (permalink / raw)
To: Andrew Morton
Cc: David Rientjes, Mel Gorman, KOSAKI Motohiro, linux-kernel,
linux-mm, Peter Zijlstra, Ingo Molnar
On Thu, Jun 21, 2012 at 6:45 PM, Andrew Morton
<akpm@linux-foundation.org> wrote:
>
>> I wonder if I should make sparse warn about any casts to/from enums.
>> They tend to always be wrong.
>
> I think it would be worth trying, see how much fallout there is. Also
> casts from "enum a" to "enum b". We've had a few of those,
> unintentionally.
Ugh. We have this all over. Well, at least in multiple places.
Like <linux/personality.h>, which does things like
PER_LINUX_32BIT = 0x0000 | ADDR_LIMIT_32BIT,
where PER_LINUX_32BIT is one enum, and ADDR_LIMIT_32BIT is a different one.
And things like
WORK_STRUCT_PENDING = 1 << WORK_STRUCT_PENDING_BIT,
in <linux/workqueue.h> is similar.
Sure, my quick warning generator gives lots of extraneous warnings,
and it complains about the above kind of "mixing enum with int"
behavior, but the above is a very real example of casting an enum to
an integer. And we *want* it to happen in the above cases.
I'll see what it looks like if I only warn about casting *to* an enum.
Linus
--
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 [flat|nested] 20+ messages in thread* Re: [patch 3.5-rc3] mm, mempolicy: fix mbind() to do synchronous migration
@ 2012-06-22 3:33 ` Linus Torvalds
0 siblings, 0 replies; 20+ messages in thread
From: Linus Torvalds @ 2012-06-22 3:33 UTC (permalink / raw)
To: Andrew Morton
Cc: David Rientjes, Mel Gorman, KOSAKI Motohiro, linux-kernel,
linux-mm, Peter Zijlstra, Ingo Molnar
On Thu, Jun 21, 2012 at 6:45 PM, Andrew Morton
<akpm@linux-foundation.org> wrote:
>
>> I wonder if I should make sparse warn about any casts to/from enums.
>> They tend to always be wrong.
>
> I think it would be worth trying, see how much fallout there is. Also
> casts from "enum a" to "enum b". We've had a few of those,
> unintentionally.
Ugh. We have this all over. Well, at least in multiple places.
Like <linux/personality.h>, which does things like
PER_LINUX_32BIT = 0x0000 | ADDR_LIMIT_32BIT,
where PER_LINUX_32BIT is one enum, and ADDR_LIMIT_32BIT is a different one.
And things like
WORK_STRUCT_PENDING = 1 << WORK_STRUCT_PENDING_BIT,
in <linux/workqueue.h> is similar.
Sure, my quick warning generator gives lots of extraneous warnings,
and it complains about the above kind of "mixing enum with int"
behavior, but the above is a very real example of casting an enum to
an integer. And we *want* it to happen in the above cases.
I'll see what it looks like if I only warn about casting *to* an enum.
Linus
^ permalink raw reply [flat|nested] 20+ messages in thread* Re: [patch 3.5-rc3] mm, mempolicy: fix mbind() to do synchronous migration
2012-06-22 3:33 ` Linus Torvalds
@ 2012-06-22 3:59 ` Linus Torvalds
-1 siblings, 0 replies; 20+ messages in thread
From: Linus Torvalds @ 2012-06-22 3:59 UTC (permalink / raw)
To: Andrew Morton
Cc: David Rientjes, Mel Gorman, KOSAKI Motohiro, linux-kernel,
linux-mm, Peter Zijlstra, Ingo Molnar
On Thu, Jun 21, 2012 at 8:33 PM, Linus Torvalds
<torvalds@linux-foundation.org> wrote:
>
> I'll see what it looks like if I only warn about casting *to* an enum.
Hmm. That results in much fewer warnings. Not that I'm sure that my
sparse hack is right. But for my normal build (which is pretty
minimal), I get:
drivers/ata/libahci.c:1786:16: warning: casting to an enum type
drivers/ata/libata-sff.c:1662:16: warning: casting to an enum type
drivers/gpu/drm/i915/i915_irq.c:2300:16: warning: casting to an enum type
drivers/gpu/drm/i915/i915_irq.c:2544:16: warning: casting to an enum type
drivers/gpu/drm/i915/i915_irq.c:740:16: warning: casting to an enum type
drivers/gpu/drm/i915/intel_panel.c:319:50: warning: casting to an enum type
drivers/input/mouse/lifebook.c:148:59: warning: casting to an enum type
drivers/input/mouse/lifebook.c:153:80: warning: casting to an enum type
drivers/input/mouse/lifebook.c:156:59: warning: casting to an enum type
drivers/input/mouse/lifebook.c:159:73: warning: casting to an enum type
drivers/input/mouse/synaptics.c:1129:86: warning: casting to an enum type
drivers/input/serio/i8042.c:533:16: warning: casting to an enum type
drivers/input/serio/i8042.c:693:16: warning: casting to an enum type
drivers/net/ethernet/realtek/r8169.c:5860:16: warning: casting to
an enum type
drivers/pci/probe.c:511:26: warning: casting to an enum type
drivers/tty/serial/8250/8250.c:1556:16: warning: casting to an enum type
drivers/usb/host/xhci-ring.c:2419:24: warning: casting to an enum type
fs/sysfs/sysfs.h:114:51: warning: casting to an enum type
include/linux/mm.h:660:47: warning: casting to an enum type
kernel/sched/rt.c:32:21: warning: casting to an enum type
kernel/time/alarmtimer.c:231:16: warning: casting to an enum type
kernel/time/alarmtimer.c:439:16: warning: casting to an enum type
lib/zlib_deflate/deflate.c:1035:13: warning: casting to an enum type
lib/zlib_deflate/deflate.c:1041:13: warning: casting to an enum type
lib/zlib_deflate/deflate.c:1044:5: warning: casting to an enum type
lib/zlib_deflate/deflate.c:1045:30: warning: casting to an enum type
lib/zlib_deflate/deflate.c:1138:21: warning: casting to an enum type
lib/zlib_deflate/deflate.c:1140:5: warning: casting to an enum type
lib/zlib_deflate/deflate.c:1141:30: warning: casting to an enum type
lib/zlib_deflate/deflate.c:1233:25: warning: casting to an enum type
lib/zlib_deflate/deflate.c:1262:5: warning: casting to an enum type
lib/zlib_deflate/deflate.c:1263:30: warning: casting to an enum type
net/ipv4/ipmr.c:449:24: warning: casting to an enum type
net/ipv4/netfilter/nf_defrag_ipv4.c:58:47: warning: casting to an enum type
net/ipv4/netfilter/nf_defrag_ipv4.c:60:48: warning: casting to an enum type
net/ipv6/netfilter/nf_defrag_ipv6_hooks.c:49:48: warning: casting
to an enum type
net/ipv6/netfilter/nf_defrag_ipv6_hooks.c:51:49: warning: casting
to an enum type
sound/pci/intel8x0.c:821:24: warning: casting to an enum type
but the ones I looked at were all ok. Admittedly I only looked at a
few (maybe five), though.
That said, the drivers/pci/probe.c case is actually ugly code. That
"agp_speeds[]" array *could* be an array of the proper enum's, rather
than "unsigned char". I don't know why it isn't (but 'unsigned char'
may be more efficient than a compiler that might make it an 'int').
So the warning *may* be useful. However, to get sparse to give that
warning I had to do some hacks that broke other parts of sparse, so I
don't have a good sparse patch yet. I'll look at it some more
tomorrow.
Linus
--
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 [flat|nested] 20+ messages in thread* Re: [patch 3.5-rc3] mm, mempolicy: fix mbind() to do synchronous migration
@ 2012-06-22 3:59 ` Linus Torvalds
0 siblings, 0 replies; 20+ messages in thread
From: Linus Torvalds @ 2012-06-22 3:59 UTC (permalink / raw)
To: Andrew Morton
Cc: David Rientjes, Mel Gorman, KOSAKI Motohiro, linux-kernel,
linux-mm, Peter Zijlstra, Ingo Molnar
On Thu, Jun 21, 2012 at 8:33 PM, Linus Torvalds
<torvalds@linux-foundation.org> wrote:
>
> I'll see what it looks like if I only warn about casting *to* an enum.
Hmm. That results in much fewer warnings. Not that I'm sure that my
sparse hack is right. But for my normal build (which is pretty
minimal), I get:
drivers/ata/libahci.c:1786:16: warning: casting to an enum type
drivers/ata/libata-sff.c:1662:16: warning: casting to an enum type
drivers/gpu/drm/i915/i915_irq.c:2300:16: warning: casting to an enum type
drivers/gpu/drm/i915/i915_irq.c:2544:16: warning: casting to an enum type
drivers/gpu/drm/i915/i915_irq.c:740:16: warning: casting to an enum type
drivers/gpu/drm/i915/intel_panel.c:319:50: warning: casting to an enum type
drivers/input/mouse/lifebook.c:148:59: warning: casting to an enum type
drivers/input/mouse/lifebook.c:153:80: warning: casting to an enum type
drivers/input/mouse/lifebook.c:156:59: warning: casting to an enum type
drivers/input/mouse/lifebook.c:159:73: warning: casting to an enum type
drivers/input/mouse/synaptics.c:1129:86: warning: casting to an enum type
drivers/input/serio/i8042.c:533:16: warning: casting to an enum type
drivers/input/serio/i8042.c:693:16: warning: casting to an enum type
drivers/net/ethernet/realtek/r8169.c:5860:16: warning: casting to
an enum type
drivers/pci/probe.c:511:26: warning: casting to an enum type
drivers/tty/serial/8250/8250.c:1556:16: warning: casting to an enum type
drivers/usb/host/xhci-ring.c:2419:24: warning: casting to an enum type
fs/sysfs/sysfs.h:114:51: warning: casting to an enum type
include/linux/mm.h:660:47: warning: casting to an enum type
kernel/sched/rt.c:32:21: warning: casting to an enum type
kernel/time/alarmtimer.c:231:16: warning: casting to an enum type
kernel/time/alarmtimer.c:439:16: warning: casting to an enum type
lib/zlib_deflate/deflate.c:1035:13: warning: casting to an enum type
lib/zlib_deflate/deflate.c:1041:13: warning: casting to an enum type
lib/zlib_deflate/deflate.c:1044:5: warning: casting to an enum type
lib/zlib_deflate/deflate.c:1045:30: warning: casting to an enum type
lib/zlib_deflate/deflate.c:1138:21: warning: casting to an enum type
lib/zlib_deflate/deflate.c:1140:5: warning: casting to an enum type
lib/zlib_deflate/deflate.c:1141:30: warning: casting to an enum type
lib/zlib_deflate/deflate.c:1233:25: warning: casting to an enum type
lib/zlib_deflate/deflate.c:1262:5: warning: casting to an enum type
lib/zlib_deflate/deflate.c:1263:30: warning: casting to an enum type
net/ipv4/ipmr.c:449:24: warning: casting to an enum type
net/ipv4/netfilter/nf_defrag_ipv4.c:58:47: warning: casting to an enum type
net/ipv4/netfilter/nf_defrag_ipv4.c:60:48: warning: casting to an enum type
net/ipv6/netfilter/nf_defrag_ipv6_hooks.c:49:48: warning: casting
to an enum type
net/ipv6/netfilter/nf_defrag_ipv6_hooks.c:51:49: warning: casting
to an enum type
sound/pci/intel8x0.c:821:24: warning: casting to an enum type
but the ones I looked at were all ok. Admittedly I only looked at a
few (maybe five), though.
That said, the drivers/pci/probe.c case is actually ugly code. That
"agp_speeds[]" array *could* be an array of the proper enum's, rather
than "unsigned char". I don't know why it isn't (but 'unsigned char'
may be more efficient than a compiler that might make it an 'int').
So the warning *may* be useful. However, to get sparse to give that
warning I had to do some hacks that broke other parts of sparse, so I
don't have a good sparse patch yet. I'll look at it some more
tomorrow.
Linus
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [patch 3.5-rc3] mm, mempolicy: fix mbind() to do synchronous migration
2012-06-22 1:45 ` Andrew Morton
@ 2012-06-22 7:12 ` Ingo Molnar
-1 siblings, 0 replies; 20+ messages in thread
From: Ingo Molnar @ 2012-06-22 7:12 UTC (permalink / raw)
To: Andrew Morton
Cc: Linus Torvalds, David Rientjes, Mel Gorman, KOSAKI Motohiro,
linux-kernel, linux-mm, Peter Zijlstra, Ingo Molnar
* Andrew Morton <akpm@linux-foundation.org> wrote:
> On Thu, 21 Jun 2012 17:46:52 -0700 Linus Torvalds <torvalds@linux-foundation.org> wrote:
>
> > On Thu, Jun 21, 2012 at 4:46 PM, Andrew Morton
> > <akpm@linux-foundation.org> wrote:
> > >
> > > I can't really do anything with this patch - it's a bug
> > > added by Peter's "mm/mpol: Simplify do_mbind()" and added
> > > to linux-next via one of Ingo's trees.
> > >
> > > And I can't cleanly take the patch over as it's all bound
> > > up with the other changes for sched/numa balancing.
> >
> > I took the patch, it looked obviously correct (passing in a
> > boolean was clearly crap).
>
> Ah, OK, the bug was actually "retained" by "mm/mpol: Simplify
> do_mbind()".
>
> I do still ask what the plans are for that patchset..
Somewhat off topic, but the main sched/numa objections were over
the mbind/etc. syscalls and the extra configuration space - we
dropped those bits and just turned it all into an improved NUMA
scheduling feature, as suggested by Peter and me in the original
discussion.
There were no objections to that approach so the reworked NUMA
scheduling/balancing scheme is now in the scheduler tree
(tip:sched/core).
The mbind/etc. syscall changes and all the related cleanups,
speedups and reorganization of the MM code are still in limbo.
I dropped them with the rest of tip:sched/numa as nobody from
the MM side expressed much interest in them and I wanted to keep
things simple and not carry objected-to commits.
We can revive them if there's interest and consensus. I suspect
once we gather experience with the automatic NUMA scheduling
feature we'll see whether it's worth exposing that to user-space
as an ABI - or whether we should go back to random placement and
forget about it all.
Thanks,
Ingo
--
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 [flat|nested] 20+ messages in thread
* Re: [patch 3.5-rc3] mm, mempolicy: fix mbind() to do synchronous migration
@ 2012-06-22 7:12 ` Ingo Molnar
0 siblings, 0 replies; 20+ messages in thread
From: Ingo Molnar @ 2012-06-22 7:12 UTC (permalink / raw)
To: Andrew Morton
Cc: Linus Torvalds, David Rientjes, Mel Gorman, KOSAKI Motohiro,
linux-kernel, linux-mm, Peter Zijlstra, Ingo Molnar
* Andrew Morton <akpm@linux-foundation.org> wrote:
> On Thu, 21 Jun 2012 17:46:52 -0700 Linus Torvalds <torvalds@linux-foundation.org> wrote:
>
> > On Thu, Jun 21, 2012 at 4:46 PM, Andrew Morton
> > <akpm@linux-foundation.org> wrote:
> > >
> > > I can't really do anything with this patch - it's a bug
> > > added by Peter's "mm/mpol: Simplify do_mbind()" and added
> > > to linux-next via one of Ingo's trees.
> > >
> > > And I can't cleanly take the patch over as it's all bound
> > > up with the other changes for sched/numa balancing.
> >
> > I took the patch, it looked obviously correct (passing in a
> > boolean was clearly crap).
>
> Ah, OK, the bug was actually "retained" by "mm/mpol: Simplify
> do_mbind()".
>
> I do still ask what the plans are for that patchset..
Somewhat off topic, but the main sched/numa objections were over
the mbind/etc. syscalls and the extra configuration space - we
dropped those bits and just turned it all into an improved NUMA
scheduling feature, as suggested by Peter and me in the original
discussion.
There were no objections to that approach so the reworked NUMA
scheduling/balancing scheme is now in the scheduler tree
(tip:sched/core).
The mbind/etc. syscall changes and all the related cleanups,
speedups and reorganization of the MM code are still in limbo.
I dropped them with the rest of tip:sched/numa as nobody from
the MM side expressed much interest in them and I wanted to keep
things simple and not carry objected-to commits.
We can revive them if there's interest and consensus. I suspect
once we gather experience with the automatic NUMA scheduling
feature we'll see whether it's worth exposing that to user-space
as an ABI - or whether we should go back to random placement and
forget about it all.
Thanks,
Ingo
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [patch 3.5-rc3] mm, mempolicy: fix mbind() to do synchronous migration
2012-06-22 7:12 ` Ingo Molnar
@ 2012-06-22 7:41 ` Ingo Molnar
-1 siblings, 0 replies; 20+ messages in thread
From: Ingo Molnar @ 2012-06-22 7:41 UTC (permalink / raw)
To: Andrew Morton
Cc: Linus Torvalds, David Rientjes, Mel Gorman, KOSAKI Motohiro,
linux-kernel, linux-mm, Peter Zijlstra, Ingo Molnar
* Ingo Molnar <mingo@kernel.org> wrote:
> > I do still ask what the plans are for that patchset..
>
> Somewhat off topic, but the main sched/numa objections were
> over the mbind/etc. syscalls and the extra configuration space
> - we dropped those bits and just turned it all into an
> improved NUMA scheduling feature, as suggested by Peter and me
> in the original discussion.
>
> There were no objections to that approach so the reworked NUMA
> scheduling/balancing scheme is now in the scheduler tree
> (tip:sched/core).
>
> The mbind/etc. syscall changes and all the related cleanups,
> speedups and reorganization of the MM code are still in limbo.
>
> I dropped them with the rest of tip:sched/numa as nobody from
> the MM side expressed much interest in them and I wanted to
> keep things simple and not carry objected-to commits.
>From your mail it appears that you weren't aware that this was
all queued up (clearly our fault) - so here's a quick status
dump, please let us know what you think and whether we can keep
them.
The ones with mm/ effect that we kept are these, which are
needed for scheduler directed opportunistic/lazy memory
migration between nodes:
e9941dae8708 mm/mpol: Lazy migrate a process/vma
a9ea2f1e496e mm/mpol: Make mempolicy home-node aware
5dca4a911980 mm/mpol: Split and explose some mempolicy functions
f1b39afe3e55 mm/mpol: Introduce vma_put_policy()
9fc52f506a4e mm/mpol: Introduce vma_dup_policy()
6494a5f2cb89 mm/mpol: Simplify do_mbind()
65699050e8aa mm: Handle misplaced anon pages
4783af477d3d mm: Migrate misplaced page
147c5c460202 mm/mpol: Check for misplaced page
84f1e3478238 mm/mpol: Add MPOL_MF_NOOP
68d9661d42bf mm/mpol: Add MPOL_MF_LAZY ...
03ed7b538ca0 mm/mpol: Make MPOL_LOCAL a real policy
e975d6ac08f3 mm/mpol: Remove NUMA_INTERLEAVE_HIT
8c41549ed1b3 mm/mpol: Re-implement check_*_range() using walk_page_range()
2ab41dd59922 mm: Optimize put_mems_allowed() usage
Or with diffstats:
e9941dae8708 mm/mpol: Lazy migrate a process/vma
mm/mempolicy.c | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 84 insertions(+)
a9ea2f1e496e mm/mpol: Make mempolicy home-node aware
mm/mempolicy.c | 29 +++++++++++++++++++++++++++--
1 file changed, 27 insertions(+), 2 deletions(-)
5dca4a911980 mm/mpol: Split and explose some mempolicy functions
mm/mempolicy.c | 111 ++++++++++++++++++++++++++++++++------------------------
1 file changed, 63 insertions(+), 48 deletions(-)
f1b39afe3e55 mm/mpol: Introduce vma_put_policy()
mm/mempolicy.c | 5 +++++
mm/mmap.c | 8 ++++----
2 files changed, 9 insertions(+), 4 deletions(-)
9fc52f506a4e mm/mpol: Introduce vma_dup_policy()
mm/mempolicy.c | 11 +++++++++++
mm/mmap.c | 17 +++++------------
2 files changed, 16 insertions(+), 12 deletions(-)
6494a5f2cb89 mm/mpol: Simplify do_mbind()
mm/mempolicy.c | 73 +++++++++++++++++++++++++++++---------------------------
1 file changed, 38 insertions(+), 35 deletions(-)
65699050e8aa mm: Handle misplaced anon pages
mm/memory.c | 17 +++++++++++++++++
mm/swapfile.c | 13 +++++++++++++
2 files changed, 30 insertions(+)
4783af477d3d mm: Migrate misplaced page
mm/mempolicy.c | 19 +++++++++
mm/migrate.c | 130 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-
2 files changed, 148 insertions(+), 1 deletion(-)
147c5c460202 mm/mpol: Check for misplaced page
mm/mempolicy.c | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 79 insertions(+)
84f1e3478238 mm/mpol: Add MPOL_MF_NOOP
mm/mempolicy.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
68d9661d42bf mm/mpol: Add MPOL_MF_LAZY ...
mm/mempolicy.c | 20 +++++++-----
mm/migrate.c | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--
mm/rmap.c | 6 ++--
3 files changed, 109 insertions(+), 13 deletions(-)
03ed7b538ca0 mm/mpol: Make MPOL_LOCAL a real policy
mm/mempolicy.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
e975d6ac08f3 mm/mpol: Remove NUMA_INTERLEAVE_HIT
mm/mempolicy.c | 68 +++++++++++++++++---------------------------------------
1 file changed, 21 insertions(+), 47 deletions(-)
8c41549ed1b3 mm/mpol: Re-implement check_*_range() using walk_page_range()
mm/mempolicy.c | 141 ++++++++++++++++++--------------------------------------
1 file changed, 45 insertions(+), 96 deletions(-)
2ab41dd59922 mm: Optimize put_mems_allowed() usage
mm/filemap.c | 4 ++--
mm/hugetlb.c | 4 ++--
mm/mempolicy.c | 14 +++++++-------
mm/page_alloc.c | 8 ++++----
mm/slab.c | 4 ++--
mm/slub.c | 16 +++-------------
6 files changed, 20 insertions(+), 30 deletions(-)
These are mostly lazy migration facility enablers. On a second
note, should we internalize MPOL_MF_LAZY as well, to not expose
it to user-space?
Thanks,
Ingo
--
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 [flat|nested] 20+ messages in thread
* Re: [patch 3.5-rc3] mm, mempolicy: fix mbind() to do synchronous migration
@ 2012-06-22 7:41 ` Ingo Molnar
0 siblings, 0 replies; 20+ messages in thread
From: Ingo Molnar @ 2012-06-22 7:41 UTC (permalink / raw)
To: Andrew Morton
Cc: Linus Torvalds, David Rientjes, Mel Gorman, KOSAKI Motohiro,
linux-kernel, linux-mm, Peter Zijlstra, Ingo Molnar
* Ingo Molnar <mingo@kernel.org> wrote:
> > I do still ask what the plans are for that patchset..
>
> Somewhat off topic, but the main sched/numa objections were
> over the mbind/etc. syscalls and the extra configuration space
> - we dropped those bits and just turned it all into an
> improved NUMA scheduling feature, as suggested by Peter and me
> in the original discussion.
>
> There were no objections to that approach so the reworked NUMA
> scheduling/balancing scheme is now in the scheduler tree
> (tip:sched/core).
>
> The mbind/etc. syscall changes and all the related cleanups,
> speedups and reorganization of the MM code are still in limbo.
>
> I dropped them with the rest of tip:sched/numa as nobody from
> the MM side expressed much interest in them and I wanted to
> keep things simple and not carry objected-to commits.
>From your mail it appears that you weren't aware that this was
all queued up (clearly our fault) - so here's a quick status
dump, please let us know what you think and whether we can keep
them.
The ones with mm/ effect that we kept are these, which are
needed for scheduler directed opportunistic/lazy memory
migration between nodes:
e9941dae8708 mm/mpol: Lazy migrate a process/vma
a9ea2f1e496e mm/mpol: Make mempolicy home-node aware
5dca4a911980 mm/mpol: Split and explose some mempolicy functions
f1b39afe3e55 mm/mpol: Introduce vma_put_policy()
9fc52f506a4e mm/mpol: Introduce vma_dup_policy()
6494a5f2cb89 mm/mpol: Simplify do_mbind()
65699050e8aa mm: Handle misplaced anon pages
4783af477d3d mm: Migrate misplaced page
147c5c460202 mm/mpol: Check for misplaced page
84f1e3478238 mm/mpol: Add MPOL_MF_NOOP
68d9661d42bf mm/mpol: Add MPOL_MF_LAZY ...
03ed7b538ca0 mm/mpol: Make MPOL_LOCAL a real policy
e975d6ac08f3 mm/mpol: Remove NUMA_INTERLEAVE_HIT
8c41549ed1b3 mm/mpol: Re-implement check_*_range() using walk_page_range()
2ab41dd59922 mm: Optimize put_mems_allowed() usage
Or with diffstats:
e9941dae8708 mm/mpol: Lazy migrate a process/vma
mm/mempolicy.c | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 84 insertions(+)
a9ea2f1e496e mm/mpol: Make mempolicy home-node aware
mm/mempolicy.c | 29 +++++++++++++++++++++++++++--
1 file changed, 27 insertions(+), 2 deletions(-)
5dca4a911980 mm/mpol: Split and explose some mempolicy functions
mm/mempolicy.c | 111 ++++++++++++++++++++++++++++++++------------------------
1 file changed, 63 insertions(+), 48 deletions(-)
f1b39afe3e55 mm/mpol: Introduce vma_put_policy()
mm/mempolicy.c | 5 +++++
mm/mmap.c | 8 ++++----
2 files changed, 9 insertions(+), 4 deletions(-)
9fc52f506a4e mm/mpol: Introduce vma_dup_policy()
mm/mempolicy.c | 11 +++++++++++
mm/mmap.c | 17 +++++------------
2 files changed, 16 insertions(+), 12 deletions(-)
6494a5f2cb89 mm/mpol: Simplify do_mbind()
mm/mempolicy.c | 73 +++++++++++++++++++++++++++++---------------------------
1 file changed, 38 insertions(+), 35 deletions(-)
65699050e8aa mm: Handle misplaced anon pages
mm/memory.c | 17 +++++++++++++++++
mm/swapfile.c | 13 +++++++++++++
2 files changed, 30 insertions(+)
4783af477d3d mm: Migrate misplaced page
mm/mempolicy.c | 19 +++++++++
mm/migrate.c | 130 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-
2 files changed, 148 insertions(+), 1 deletion(-)
147c5c460202 mm/mpol: Check for misplaced page
mm/mempolicy.c | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 79 insertions(+)
84f1e3478238 mm/mpol: Add MPOL_MF_NOOP
mm/mempolicy.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
68d9661d42bf mm/mpol: Add MPOL_MF_LAZY ...
mm/mempolicy.c | 20 +++++++-----
mm/migrate.c | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--
mm/rmap.c | 6 ++--
3 files changed, 109 insertions(+), 13 deletions(-)
03ed7b538ca0 mm/mpol: Make MPOL_LOCAL a real policy
mm/mempolicy.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
e975d6ac08f3 mm/mpol: Remove NUMA_INTERLEAVE_HIT
mm/mempolicy.c | 68 +++++++++++++++++---------------------------------------
1 file changed, 21 insertions(+), 47 deletions(-)
8c41549ed1b3 mm/mpol: Re-implement check_*_range() using walk_page_range()
mm/mempolicy.c | 141 ++++++++++++++++++--------------------------------------
1 file changed, 45 insertions(+), 96 deletions(-)
2ab41dd59922 mm: Optimize put_mems_allowed() usage
mm/filemap.c | 4 ++--
mm/hugetlb.c | 4 ++--
mm/mempolicy.c | 14 +++++++-------
mm/page_alloc.c | 8 ++++----
mm/slab.c | 4 ++--
mm/slub.c | 16 +++-------------
6 files changed, 20 insertions(+), 30 deletions(-)
These are mostly lazy migration facility enablers. On a second
note, should we internalize MPOL_MF_LAZY as well, to not expose
it to user-space?
Thanks,
Ingo
^ permalink raw reply [flat|nested] 20+ messages in thread