== Linus Walleij linusw ==
=== Highlights ===
* Pushed pin control fixes for -rc1 and Torvalds pulled
them in.
* I have a branch for the nVidia Tegra pin control.
* Discussing pin control, pinmux ...
* Upstreaming the PL022 SPI driver, Mark Brown
suggested we move messages queues to the SPI
core. It was easy to to so I hacked a v1 and then
a v2 based on Grant's suggestions.
* Preparing a conference presentation on pin control
for the Embedded Linux Conference. This will be
used as a basis for public explanation and transparency
into the subject as well.
=== Plans ===
* Linaro Connect, Android Builders and ELC.
* Send patches upstream for -rc2.
* dummy pinmuxes akin to dummy regulators, we need
to see if this is a good idea or not.
* Drive generalization of Nomadik GPIO
by using the pinctrl framework.
drivers/gpio/gpio-nomadik.c
* Test the PL08x patches on the Ericsson Research
PB11MPCore and submit platform data for using
pl08x DMA on that platform.
* Look into other Ux500 stuff in need of mainlining...
like
- Ux500 clocks
- the HWMON stuff.
=== Issues ===
* At first I merged the Tegra pin control into my for-next
branch, then had second thoughts and removed it
because the size scares me. The author thinks I'm lame
and claims to lose interest in pin control. Wrote back
in private that I feel bad about this.
* Ux500 mainlining having second priority.
Thanks,
Linus Walleij
== Saugata Das sdas ==
=== Activity Summary ===
* Context ID patch submitted to MMC mailing list for comments
* CMD23 patch submitted for mmci driver
=== Plans ===
* Attend connect
* Integration of context ID, tag and packed command features
=== Issues ===
* None
We'd like to use this function in the android low memory killer driver, so
let's export it.
Also, move next_tgid() to kernel/pid.c, so now it lives with the rest of
pid library functions and does not depend on procfs. Plus, we may now hide
find_ge_pid() from the global namespace.
While at it, also turn next_tgid()'s comments into kerneldoc format.
There should be no functional changes.
Signed-off-by: Anton Vorontsov <anton.vorontsov(a)linaro.org>
---
fs/proc/base.c | 43 -------------------------------------------
include/linux/pid.h | 9 ++++++++-
kernel/pid.c | 41 ++++++++++++++++++++++++++++++++++++++++-
3 files changed, 48 insertions(+), 45 deletions(-)
diff --git a/fs/proc/base.c b/fs/proc/base.c
index 5485a53..84b8625 100644
--- a/fs/proc/base.c
+++ b/fs/proc/base.c
@@ -3324,49 +3324,6 @@ out:
return result;
}
-/*
- * Find the first task with tgid >= tgid
- *
- */
-struct tgid_iter {
- unsigned int tgid;
- struct task_struct *task;
-};
-static struct tgid_iter next_tgid(struct pid_namespace *ns, struct tgid_iter iter)
-{
- struct pid *pid;
-
- if (iter.task)
- put_task_struct(iter.task);
- rcu_read_lock();
-retry:
- iter.task = NULL;
- pid = find_ge_pid(iter.tgid, ns);
- if (pid) {
- iter.tgid = pid_nr_ns(pid, ns);
- iter.task = pid_task(pid, PIDTYPE_PID);
- /* What we to know is if the pid we have find is the
- * pid of a thread_group_leader. Testing for task
- * being a thread_group_leader is the obvious thing
- * todo but there is a window when it fails, due to
- * the pid transfer logic in de_thread.
- *
- * So we perform the straight forward test of seeing
- * if the pid we have found is the pid of a thread
- * group leader, and don't worry if the task we have
- * found doesn't happen to be a thread group leader.
- * As we don't care in the case of readdir.
- */
- if (!iter.task || !has_group_leader_pid(iter.task)) {
- iter.tgid += 1;
- goto retry;
- }
- get_task_struct(iter.task);
- }
- rcu_read_unlock();
- return iter;
-}
-
#define TGID_OFFSET (FIRST_PROCESS_ENTRY + ARRAY_SIZE(proc_base_stuff))
static int proc_pid_fill_cache(struct file *filp, void *dirent, filldir_t filldir,
diff --git a/include/linux/pid.h b/include/linux/pid.h
index b152d44..33e350b 100644
--- a/include/linux/pid.h
+++ b/include/linux/pid.h
@@ -116,7 +116,6 @@ extern struct pid *find_vpid(int nr);
* Lookup a PID in the hash table, and return with it's count elevated.
*/
extern struct pid *find_get_pid(int nr);
-extern struct pid *find_ge_pid(int nr, struct pid_namespace *);
int next_pidmap(struct pid_namespace *pid_ns, unsigned int last);
extern struct pid *alloc_pid(struct pid_namespace *ns);
@@ -199,4 +198,12 @@ pid_t pid_vnr(struct pid *pid);
} while_each_thread(tg___, task); \
task = tg___; \
} while_each_pid_task(pid, type, task)
+
+struct tgid_iter {
+ unsigned int tgid;
+ struct task_struct *task;
+};
+
+struct tgid_iter next_tgid(struct pid_namespace *ns, struct tgid_iter iter);
+
#endif /* _LINUX_PID_H */
diff --git a/kernel/pid.c b/kernel/pid.c
index ce8e00d..34a52a6 100644
--- a/kernel/pid.c
+++ b/kernel/pid.c
@@ -522,7 +522,7 @@ EXPORT_SYMBOL_GPL(task_active_pid_ns);
*
* If there is a pid at nr this function is exactly the same as find_pid_ns.
*/
-struct pid *find_ge_pid(int nr, struct pid_namespace *ns)
+static struct pid *find_ge_pid(int nr, struct pid_namespace *ns)
{
struct pid *pid;
@@ -536,6 +536,45 @@ struct pid *find_ge_pid(int nr, struct pid_namespace *ns)
return pid;
}
+/**
+ * next_tgid() - Find the first task with tgid >= tgid
+ * @ns: pointer to the pid namespace
+ * @iter: iterator
+ */
+struct tgid_iter next_tgid(struct pid_namespace *ns, struct tgid_iter iter)
+{
+ struct pid *pid;
+
+ if (iter.task)
+ put_task_struct(iter.task);
+ rcu_read_lock();
+retry:
+ iter.task = NULL;
+ pid = find_ge_pid(iter.tgid, ns);
+ if (pid) {
+ iter.tgid = pid_nr_ns(pid, ns);
+ iter.task = pid_task(pid, PIDTYPE_PID);
+ /* What we to know is if the pid we have find is the
+ * pid of a thread_group_leader. Testing for task
+ * being a thread_group_leader is the obvious thing
+ * todo but there is a window when it fails, due to
+ * the pid transfer logic in de_thread.
+ *
+ * So we perform the straight forward test of seeing
+ * if the pid we have found is the pid of a thread
+ * group leader, and don't worry if the task we have
+ * found doesn't happen to be a thread group leader.
+ */
+ if (!iter.task || !has_group_leader_pid(iter.task)) {
+ iter.tgid += 1;
+ goto retry;
+ }
+ get_task_struct(iter.task);
+ }
+ rcu_read_unlock();
+ return iter;
+}
+
/*
* The pid hash table is scaled according to the amount of memory in the
* machine. From a minimum of 16 slots up to 4096 slots at one gigabyte or
--
1.7.7
== Deepak Saxena <dsaxena> ==
=== Highlights ===
* Connect session planning
* Released 12.01 kernel (Big thanks to Andrey!)
* 12.01 monthly cycle closeout
* Various conversations on phone, irc, email to discuss kernel process.
=== Plans ===
* Finish preparing for connect
- Finalize any session details
- Schedule meetings
- Put together slides on kernel process
* 1-on-1's, sub-team meetings
=== Travel/Time Off ===
* Connect + ELC 02/04-02/20
(Taking the Train from Portland -> Oakland on 02/03 afternoon.
Taking days between Connect and ELC as semi-time off, will still
be responding to emails but will mostly be exploring around the
Bay area. Taking train back on 12/19 evening, back to work
Monday 12/20 afternoon).
== Highlights ==
* Sent out some patches to make current LMK driver don't grab
tasklist lock.
http://lkml.org/lkml/2012/1/29/114http://lkml.org/lkml/2012/1/29/115http://lkml.org/lkml/2012/1/29/116
* Continued work on adding low memory killer functionality
to the Android ActivityManager and friends;
* Further investigation on interactive cpufreq notifier.
* Prepared some material for the android upstraming meeting;
* Reviewed a bunch of battery fixes for v3.3.
== Plans ==
* Hope to send out a bit reworked (at least it should start using new
notifiers) interactive cpufreq driver mid this week;
* Get a working userspace LMK by the end of this week;
* Fix assorted pesky issues in the current drivers/staging/android/
(sparse and modpost warnings flood because of which I don't see
newly introduced warnings).
--
Anton Vorontsov
Email: cbouatmailru(a)gmail.com
=== Highlights ===
* Re-factored and reworked Android alarm driver so that it can be
included into staging. Sent it out to Arve, Google Android team and
GregKH for comment. Got some good feedback from Arve, and further
reworked some of the patches accordingly. Will hopefully submit to
staging early next week.
* Reviewed Dmitry's usleep_range changes more carefully and provided
feedback.
* Got a little bit of time to spend on refactoring (de-recursing) the
range-tree implementation in preparation of integrating it into the
kernel.
* Handled weekly Android-subteam email meeting
* Spent the weekend & a bit of the week helping with an internal
customer issue.
* Spent some time catching up on community emails and issues I've
flagged but not handled since the new year, including sending out some
debuging patches for RTC issues.
* Sent out almost the last of the clocksource_register_khz/hz cleanups
for review.
* Queued community RTC, clocksource and time cleanups for 3.4 along with
my own rtc/time related fixes. Unfortunately tglx has been offline
recently, so I've not been able to send them for queuing.
* Lots of IBM internal administrative catchup from the new year.
=== Plans ===
* Submit android alarm driver to staging.
* Integration of range-tree idea into kernel space and fadvise work
* Review posix file locking code and determine if range-trees can be
used there.
* Some minor prep for Connect.
=== Issues ===
NA
== Linus Walleij linusw ==
=== Highlights ===
* Reviewed and merged some patches to pin control,
Tony Lindgren is starting to show interest and
submitting good patches.
* Discussing pinmux ...
* Reviewed different patches here and there. Tried
to do some Ux500 upstreaming.
* Preparing a conference presentation on pin control
for the Embedded Linux Conference. This will be
used as a basis for public explanation and transparency
into the subject as well.
* Apart from this occupied by administration (such as
travel arrangements, VISA etc) and internal meetings at
ST-Ericsson due to different things.
=== Plans ===
* Send patches upstream for -rc1 or -rc2.
* Prepare for Linaro Connect, Android Builders and ELC.
* dummy pinmuxes akin to dummy regulators, we need
to see if this is a good idea or not.
* Drive generalization of Nomadik GPIO
by using the pinctrl framework.
drivers/gpio/gpio-nomadik.c
* Test the PL08x patches on the Ericsson Research
PB11MPCore and submit platform data for using
pl08x DMA on that platform.
* Look into other Ux500 stuff in need of mainlining...
like
- Ux500 clocks
- the HWMON stuff.
=== Issues ===
* Tried to run a pin control meeting. Nobody from my
work group turned up. Luckily I had Mounir and Tony
Lindgren there to comfort me.
* Ux500 mainlining having second priority.
Thanks,
Linus Walleij
== Niklas Hernaeus <nhe> ==
=== General activity ===
* Continued DT for MMC
* Tried to allocate time for making plan for regulator DT. Know more next
week
* All administration done for going to Connect.