* [PATCH] sched: dynamically update the root-domain span/online maps
@ 2007-12-18 2:40 Gregory Haskins
2007-12-18 3:35 ` Steven Rostedt
2007-12-18 10:55 ` Ingo Molnar
0 siblings, 2 replies; 8+ messages in thread
From: Gregory Haskins @ 2007-12-18 2:40 UTC (permalink / raw)
To: srostedt; +Cc: mingo, linux-rt-users, linux-kernel, ghaskins
Hi Steven,
I posted a suspend-to-ram fix to sched-devel earlier today:
http://lkml.org/lkml/2007/12/17/445
This fix should also be applied to -rt as I introduced the same regression
there. Here is a version of the fix for 23-rt13. I can submit a version for
24-rc5-rt1 at your request.
Regards,
-Greg
---------------------------------
The baseline code statically builds the span maps when the domain is formed.
Previous attempts at dynamically updating the maps caused a suspend-to-ram
regression, which should now be fixed.
Signed-off-by: Gregory Haskins <ghaskins@novell.com>
CC: Gautham R Shenoy <ego@in.ibm.com>
---
kernel/sched.c | 28 ++++++++++++++++------------
1 files changed, 16 insertions(+), 12 deletions(-)
diff --git a/kernel/sched.c b/kernel/sched.c
index 244c4b5..95b8c99 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -281,8 +281,6 @@ struct rt_rq {
* exclusive cpuset is created, we also create and attach a new root-domain
* object.
*
- * By default the system creates a single root-domain with all cpus as
- * members (mimicking the global state we have today).
*/
struct root_domain {
atomic_t refcount;
@@ -300,6 +298,10 @@ struct root_domain {
#endif
};
+/*
+ * By default the system creates a single root-domain with all cpus as
+ * members (mimicking the global state we have today).
+ */
static struct root_domain def_root_domain;
#endif
@@ -6066,6 +6068,10 @@ static void rq_attach_root(struct rq *rq, struct root_domain *rd)
atomic_inc(&rd->refcount);
rq->rd = rd;
+ cpu_set(rq->cpu, rd->span);
+ if (cpu_isset(rq->cpu, cpu_online_map))
+ cpu_set(rq->cpu, rd->online);
+
for (class = sched_class_highest; class; class = class->next) {
if (class->join_domain)
class->join_domain(rq);
@@ -6074,12 +6080,12 @@ static void rq_attach_root(struct rq *rq, struct root_domain *rd)
spin_unlock_irqrestore(&rq->lock, flags);
}
-static void init_rootdomain(struct root_domain *rd, const cpumask_t *map)
+static void init_rootdomain(struct root_domain *rd)
{
memset(rd, 0, sizeof(*rd));
- rd->span = *map;
- cpus_and(rd->online, rd->span, cpu_online_map);
+ cpus_clear(rd->span);
+ cpus_clear(rd->online);
cpupri_init(&rd->cpupri);
@@ -6087,13 +6093,11 @@ static void init_rootdomain(struct root_domain *rd, const cpumask_t *map)
static void init_defrootdomain(void)
{
- cpumask_t cpus = CPU_MASK_ALL;
-
- init_rootdomain(&def_root_domain, &cpus);
+ init_rootdomain(&def_root_domain);
atomic_set(&def_root_domain.refcount, 1);
}
-static struct root_domain *alloc_rootdomain(const cpumask_t *map)
+static struct root_domain *alloc_rootdomain(void)
{
struct root_domain *rd;
@@ -6101,7 +6105,7 @@ static struct root_domain *alloc_rootdomain(const cpumask_t *map)
if (!rd)
return NULL;
- init_rootdomain(rd, map);
+ init_rootdomain(rd);
return rd;
}
@@ -6523,7 +6527,7 @@ static int build_sched_domains(const cpumask_t *cpu_map)
sched_group_nodes_bycpu[first_cpu(*cpu_map)] = sched_group_nodes;
#endif
- rd = alloc_rootdomain(cpu_map);
+ rd = alloc_rootdomain();
if (!rd) {
printk(KERN_WARNING "Cannot alloc root domain\n");
return -ENOMEM;
@@ -7021,7 +7025,6 @@ void __init sched_init(void)
#ifdef CONFIG_SMP
rq->sd = NULL;
rq->rd = NULL;
- rq_attach_root(rq, &def_root_domain);
rq->active_balance = 0;
rq->next_balance = jiffies;
rq->push_cpu = 0;
@@ -7030,6 +7033,7 @@ void __init sched_init(void)
INIT_LIST_HEAD(&rq->migration_queue);
rq->rt.highest_prio = MAX_RT_PRIO;
rq->rt.overloaded = 0;
+ rq_attach_root(rq, &def_root_domain);
#endif
atomic_set(&rq->nr_iowait, 0);
^ permalink raw reply related [flat|nested] 8+ messages in thread* Re: [PATCH] sched: dynamically update the root-domain span/online maps
2007-12-18 2:40 [PATCH] sched: dynamically update the root-domain span/online maps Gregory Haskins
@ 2007-12-18 3:35 ` Steven Rostedt
2007-12-18 10:55 ` Ingo Molnar
1 sibling, 0 replies; 8+ messages in thread
From: Steven Rostedt @ 2007-12-18 3:35 UTC (permalink / raw)
To: Gregory Haskins; +Cc: mingo, linux-rt-users, linux-kernel, Clark Williams
Gregory Haskins wrote:
> Hi Steven,
> I posted a suspend-to-ram fix to sched-devel earlier today:
>
> http://lkml.org/lkml/2007/12/17/445
>
> This fix should also be applied to -rt as I introduced the same regression
> there. Here is a version of the fix for 23-rt13. I can submit a version for
> 24-rc5-rt1 at your request.
>
Thanks Gregory,
I'll put this into the 2.6.23.11-rt14 queue. I have someone that tells
me that suspend to RAM breaks. I'll have him try the new update and let
me know if it fixes his issue before releasing it. I'll also let
everyone know the results as well.
-- Steve
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] sched: dynamically update the root-domain span/online maps
2007-12-18 2:40 [PATCH] sched: dynamically update the root-domain span/online maps Gregory Haskins
2007-12-18 3:35 ` Steven Rostedt
@ 2007-12-18 10:55 ` Ingo Molnar
2007-12-18 11:39 ` Steven Rostedt
1 sibling, 1 reply; 8+ messages in thread
From: Ingo Molnar @ 2007-12-18 10:55 UTC (permalink / raw)
To: Gregory Haskins; +Cc: srostedt, linux-rt-users, linux-kernel
* Gregory Haskins <ghaskins@novell.com> wrote:
> Hi Steven,
> I posted a suspend-to-ram fix to sched-devel earlier today:
>
> http://lkml.org/lkml/2007/12/17/445
>
> This fix should also be applied to -rt as I introduced the same
> regression there. Here is a version of the fix for 23-rt13. I can
> submit a version for 24-rc5-rt1 at your request.
well since i reverted the original patch, there's no regression. The
question is, do we know whether this new patch works fine wrt. s2ram?
Ingo
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] sched: dynamically update the root-domain span/online maps
2007-12-18 10:55 ` Ingo Molnar
@ 2007-12-18 11:39 ` Steven Rostedt
0 siblings, 0 replies; 8+ messages in thread
From: Steven Rostedt @ 2007-12-18 11:39 UTC (permalink / raw)
To: Ingo Molnar; +Cc: Gregory Haskins, linux-rt-users, linux-kernel
Ingo Molnar wrote:
> well since i reverted the original patch, there's no regression. The
> question is, do we know whether this new patch works fine wrt. s2ram?
>
Hi Ingo,
I included the same patches into 2.6.23.9-rt13 and someone reported s2r
failed for them. I've included Greg's updates into a pre release of
-rt14 and sent that to the reporter. I'm waiting on a response before
releasing -rt14.
Although I did just get a response from Andrew Morton saying that the
updated patch fixed his box.
-- Steve
^ permalink raw reply [flat|nested] 8+ messages in thread
* - revert-sched-update-root-domain-spans-upon-departure.patch removed from -mm tree
@ 2007-12-17 23:39 akpm
2007-12-18 0:55 ` [PATCH] sched: dynamically update the root-domain span/online maps Gregory Haskins
0 siblings, 1 reply; 8+ messages in thread
From: akpm @ 2007-12-17 23:39 UTC (permalink / raw)
To: akpm, ego, ghaskins, mingo, mm-commits
The patch titled
revert "sched: update root-domain spans upon departure"
has been removed from the -mm tree. Its filename was
revert-sched-update-root-domain-spans-upon-departure.patch
This patch was dropped because it was merged into mainline or a subsystem tree
------------------------------------------------------
Subject: revert "sched: update root-domain spans upon departure"
From: Andrew Morton <akpm@linux-foundation.org>
Revert from git-sched:
commit 9e76ad89f4fa93a789326bc0f4548cd2fbca8d8e
Author: Gregory Haskins <ghaskins@novell.com>
Date: Thu Dec 13 21:35:26 2007 +0100
sched: update root-domain spans upon departure
We shouldnt leave cpus enabled in the spans if that RQ has left the domain.
Signed-off-by: Gregory Haskins <ghaskins@novell.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
As it causes my t61p to fail to come back to life after suspend-to-RAM.
Cc: Gautham R Shenoy <ego@in.ibm.com>
Cc: Gregory Haskins <ghaskins@novell.com>
Cc: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
kernel/sched.c | 3 ---
1 file changed, 3 deletions(-)
diff -puN kernel/sched.c~revert-sched-update-root-domain-spans-upon-departure kernel/sched.c
--- a/kernel/sched.c~revert-sched-update-root-domain-spans-upon-departure
+++ a/kernel/sched.c
@@ -5854,9 +5854,6 @@ static void rq_attach_root(struct rq *rq
class->leave_domain(rq);
}
- cpu_clear(rq->cpu, old_rd->span);
- cpu_clear(rq->cpu, old_rd->online);
-
if (atomic_dec_and_test(&old_rd->refcount))
kfree(old_rd);
}
_
Patches currently in -mm which might be from akpm@linux-foundation.org are
origin.patch
revert-hibernation-use-temporary-page-tables-for-kernel-text-mapping-on-x86_64.patch
get_task_comm-return-the-result.patch
clone-prepare-to-recycle-clone_detached-and-clone_stopped.patch
clone-prepare-to-recycle-clone_detached-and-clone_stopped-fix.patch
timerfd-v3-new-timerfd-api-ia64-fix.patch
timerfd-v3-new-timerfd-api-m68k-fix.patch
timerfd-v3-new-timerfd-api-mips-fix.patch
timerfd-v3-new-timerfd-api-arch-fixes.patch
timerfd-v3-new-timerfd-api-powerpc-fix.patch
timerfd-v3-new-timerfd-api-sparc64-fix.patch
git-acpi.patch
acpi-enable-c3-power-state-on-dell-inspiron-8200.patch
small-acpica-extension-to-be-able-to-store-the-name-of.patch
git-alsa.patch
git-alsa-fixup.patch
git-agpgart.patch
working-3d-dri-intel-agpko-resume-for-i815-chip.patch
git-arm.patch
kernel-auditc-warning-fix.patch
git-cpufreq.patch
ppc-chrp-fix-possible-null-pointer-dereference.patch
revert-gregkh-driver-pm-acquire-device-locks-prior-to-suspending.patch
gregkh-driver-kset-convert-to-kobj_sysfs_ops-vs-git-acpi.patch
unbork-gregkh-driver-kset-convert-sys-devices-to-use-kset_create-vioc.patch
git-drm.patch
intel-agp-enable-i915-recognition.patch
git-dvb.patch
git-dvb-one-videobuf_read_start-is-enough.patch
fix-jdelvare-i2c-i2c-constify-client-address-data.patch
git-hid.patch
revert-git-hrt.patch
ia64-slim-down-__clear_bit_unlock.patch
git-ieee1394.patch
git-infiniband.patch
git-kvm.patch
git-libata-all.patch
drivers-ata-libata-ehc-fix-printk-warning.patch
pata_hpt37x-fix-outstanding-bug-reports-on-the-hpt374-and-37x-cable-detect-checkpatch-fixes.patch
libata-xfer_mask-is-unsigned-int-not-unsigned-long.patch
libata-set-proper-ata-udma-mode-for-bf548-according-to-system-clock-checkpatch-fixes.patch
libata-fix-early-use-of-port-printk-checkpatch-fixes.patch
git-md-accel.patch
git-mips-fixup.patch
git-mmc.patch
git-mtd.patch
git-net.patch
git-net-vs-git-lblnet.patch
git-netdev-all.patch
update-smc91x-driver-with-arm-versatile-board-info.patch
backlight-omap1-backlight-driver.patch
git-battery.patch
bluetooth-uninlining.patch
git-nfsd.patch
git-ocfs2-fixup.patch
quirk-enable-msi-mapping-on-ht1000.patch
git-sched.patch
git-sched-fixup.patch
git-sh.patch
git-scsi-misc.patch
git-scsi-rc-fixes.patch
libsas-convert-ata-bridge-to-use-new-eh.patch
git-unionfs.patch
vfs-swap-do_ioctl-and-vfs_ioctl-names-fix.patch
usb-testing-driver-dont-free-a-locked-mutex.patch
9p-util-fix-semaphore-handling.patch
git-watchdog.patch
git-watchdog-fixup.patch
add-support-for-sb1-hardware-watchdog.patch
git-wireless.patch
git-ipwireless_cs.patch
git-x86.patch
git-x86-fixup.patch
pci-dont-load-acpi_php-when-acpi-is-disabled.patch
i386-use-raw_smp_processor_id-in-die.patch
git-cryptodev.patch
git-cryptodev-fixup.patch
git-xtensa.patch
bonding-locking-fix.patch
iwlwifi3945-4965-fix-rate-control-algo-reference-leak.patch
bcm43xx_debugfs-sscanf-fix.patch
pagecache-zeroing-zero_user_segment-zero_user_segments-and-zero_user-fix.patch
pagecache-zeroing-zero_user_segment-zero_user_segments-and-zero_user-fix-2.patch
vmalloc-add-const-to-void-parameters-fix.patch
i386-resolve-dependency-of-asm-i386-pgtableh-on-highmemh-checkpatch-fixes.patch
slub-fix-coding-style-violations-checkpatch-fixes.patch
slub-provide-unique-end-marker-for-each-slab-fix.patch
slub-do-our-own-locking-via-slab_lock-and-slab_unlock-checkpatch-fixes.patch
bufferhead-revert-constructor-removal-checkpatch-fixes.patch
maps4-rework-task_size-macros-mips-fix.patch
maps4-make-page-monitoring-proc-file-optional-fix.patch
mm-page-writeback-highmem_is_dirtyable-option-fix.patch
shmem-factor-out-sbi-free_inodes-manipulations-fix.patch
vmscan-give-referenced-active-and-unmapped-pages-a-second-trip-around-the-lru.patch
vm-dont-run-touch_buffer-during-buffercache-lookups.patch
revert-capabilities-clean-up-file-capability-reading.patch
revert-capabilities-clean-up-file-capability-reading-checkpatch-fixes.patch
add-64-bit-capability-support-to-the-kernel-checkpatch-fixes.patch
add-64-bit-capability-support-to-the-kernel-fix.patch
add-64-bit-capability-support-to-the-kernel-fix-modify-old-libcap-warning-message-checkpatch-fixes.patch
add-64-bit-capability-support-to-the-kernel-fix-modify-old-libcap-warning-message-fix.patch
alpha-atomic_add_return-should-return-int.patch
alpha-fix-warning-by-fixing-flush_tlb_kernel_range.patch
pm-qos-infrastructure-and-interface.patch
pm-qos-infrastructure-and-interface-static-initialization-with-blocking-notifiers.patch
dio-array_size-cleanup-update-checkpatch-fixes.patch
uml-get-rid-of-asmlinkage-checkpatch-fixes.patch
uml-improve-detection-of-host-cmov-checkpatch-fixes.patch
uml-further-bugsc-tidying-checkpatch-fixes.patch
kernel-printkc-concerns-about-the-console-handover.patch
riscom8-fix-smp-brokenness-fix.patch
use-macros-instead-of-task_-flags-checkpatch-fixes.patch
sound-oss-pss-set_io_base-always-returns-success-mark-it-void-checkpatch-fixes.patch
remove-warnings-for-longstanding-conditions-fix.patch
genericizing-iova-fix.patch
parallel-port-convert-port_mutex-to-the-mutex-api-checkpatch-fixes.patch
remove-support-for-un-needed-_extratext-section-checkpatch-fixes.patch
allow-auto-destruction-of-loop-devices-checkpatch-fixes.patch
remove-__attribute_used__-checkpatch-fixes.patch
read_current_time-cleanups.patch
read_current_time-cleanups-build-fix-fix.patch
get-rid-of-nr_open-and-introduce-a-sysctl_nr_open-fix.patch
kallsyms-should-prefer-non-weak-symbols-checkpatch-fixes.patch
deprecate-smbfs-in-favour-of-cifs.patch
quota-improve-inode-list-scanning-in-add_dquot_ref-fix.patch
tty-enable-the-echoing-of-c-in-the-n_tty-discipline-checkpatch-fixes.patch
stopmachine-semaphore-to-mutex-fix.patch
parport-add-support-for-the-quatech-sppxp-100-parallel-port-pci-expresscard-fix.patch
mark-rwsem-functions-as-__sched-for-wchan-profiling-fix.patch
sync_sb_inodes-propagate-errors.patch
add-have_oprofile.patch
ecryptfs-make-show_options-reflect-actual-mount-options-fix.patch
rtc-ds1302-rtc-support-checkpatch-fixes.patch
rtc-add-support-for-the-s-35390a-rtc-chip-fix.patch
mcp23s08-spi-gpio-expander-checkpatch-fixes.patch
fbmon-cleanup-trailing-whitespaces-checkpatch-fixes.patch
logo-move-declarations-of-logos-to-linux_logoh-fix.patch
declare-pnp-option-parsing-functions-as-__init-checkpatch-fixes.patch
isapnp-driver-semaphore-to-mutex-fix.patch
isapnp-driver-semaphore-to-mutex-fix-fix.patch
64-bit-i_version-afs-fixes.patch
ext4-add-block-bitmap-validation.patch
ext4-fix-up-ext4fs_debug-builds.patch
ext4-check-for-the-correct-error-return-from-ext4_ext_get_blocks-fix.patch
kill-filp_open-checkpatch-fixes.patch
rename-open_namei-to-open_pathname-fix.patch
r-o-bind-mounts-elevate-write-count-during-entire-ncp_ioctl-fix.patch
r-o-bind-mounts-elevate-write-count-for-do_utimes.patch
r-o-bind-mounts-elevate-write-count-for-some-ioctls-checkpatch-fixes.patch
r-o-bind-mounts-elevate-write-count-for-some-ioctls-vs-forbid-user-to-change-file-flags-on-quota-files.patch
r-o-bind-mounts-elevate-write-count-opened-files-oops-fix.patch
r-o-bind-mounts-nfs-check-mnt-instead-of-superblock-directly-checkpatch-fixes.patch
r-o-bind-mounts-track-number-of-mount-writer-fix-buggy-loop-checkpatch-fixes.patch
cgroup-simplify-space-stripping-fix.patch
memory-controller-memory-accounting-v7.patch
memory-controller-add-per-container-lru-and-reclaim-v7.patch
memory-controller-oom-handling-v7.patch
memory-controller-add-switch-to-control-what-type-of-pages-to-limit-v7.patch
memcontrol-move-oom-task-exclusion-to-tasklist.patch
memory-cgroup-enhancements-fix-zone-handling-in-try_to_free_mem_cgroup_page-warning-fix.patch
memory-cgroup-enhancements-add-status-accounting-function-for-memory-cgroup-checkpatch-fixes.patch
memory-cgroup-enhancements-add-status-accounting-function-for-memory-cgroup-fix-1.patch
memory-cgroup-enhancements-add-status-accounting-function-for-memory-cgroup-uninlining.patch
memory-cgroup-enhancements-add-status-accounting-function-for-memory-cgroup-fix-2.patch
memory-cgroup-enhancements-add-memorystat-file-checkpatch-fixes.patch
memory-cgroup-enhancements-add-memorystat-file-printk-fix.patch
per-zone-and-reclaim-enhancements-for-memory-controller-take-3-remember-reclaim-priority-in-memory-cgroup-fix.patch
per-zone-and-reclaim-enhancements-for-memory-controller-take-3-remember-reclaim-priority-in-memory-cgroup-fix-2.patch
per-zone-and-reclaim-enhancements-for-memory-controller-take-3-modifies-vmscanc-for-isolate-globa-cgroup-lru-activity-fix.patch
drivers-edac-add-marvell-mv64x60-driver-fix.patch
introduce-flags-for-reserve_bootmem-checkpatch-fixes.patch
iget-stop-affs-from-using-iget-and-read_inode-try-checkpatch-fixes.patch
iget-stop-efs-from-using-iget-and-read_inode-try-checkpatch-fixes.patch
iget-stop-ext2-from-using-iget-and-read_inode-try-checkpatch-fixes.patch
iget-stop-ext3-from-using-iget-and-read_inode-try-checkpatch-fixes.patch
iget-stop-freevxfs-from-using-iget-and-read_inode-checkpatch-fixes.patch
iget-stop-the-minix-filesystem-from-using-iget-and-checkpatch-fixes.patch
iget-stop-procfs-from-using-iget-and-read_inode-checkpatch-fixes.patch
iget-stop-qnx4-from-using-iget-and-read_inode-try-checkpatch-fixes.patch
iget-stop-romfs-from-using-iget-and-read_inode-checkpatch-fixes.patch
iget-stop-the-sysv-filesystem-from-using-iget-and-checkpatch-fixes.patch
iget-stop-ufs-from-using-iget-and-read_inode-try-checkpatch-fixes.patch
iget-stop-hostfs-from-using-iget-and-read_inode-checkpatch-fixes.patch
embed-a-struct-path-into-struct-nameidata-instead-of-nd-dentrymnt-checkpatch-fixes.patch
one-less-parameter-to-__d_path-checkpatch-fixes.patch
d_path-use-struct-path-in-struct-avc_audit_data-checkpatch-fixes.patch
d_path-make-get_dcookie-use-a-struct-path-argument-checkpatch-fixes.patch
use-struct-path-in-struct-svc_export-checkpatch-fixes.patch
cleanup-the-code-managed-with-the-user_ns-option-checkpatch-fixes.patch
cleanup-the-code-managed-with-pid_ns-option-checkpatch-fixes.patch
proc-detect-duplicate-names-on-registration-fix.patch
proc-seqfile-convert-proc_pid_status-to-properly-handle-pid-namespaces-checkpatch-fixes.patch
proc-seqfile-convert-proc_pid_status-to-properly-handle-pid-namespaces-fix.patch
proc-seqfile-convert-proc_pid_status-to-properly-handle-pid-namespaces-fix-2.patch
proc-seqfile-convert-proc_pid_status-to-properly-handle-pid-namespaces-fix-3.patch
intel-iommu-fault_reason_index_cleanuppatch-fix.patch
pid-sys_wait-fixes-v2-checkpatch-fixes.patch
aout-suppress-aout-library-support-if-config_arch_supports_aout-vs-git-x86.patch
aout-suppress-aout-library-support-if-config_arch_supports_aout-vs-sanitize-the-type-of-struct-useru_ar0.patch
aout-remove-unnecessary-inclusions-of-asm-linux-aouth-alpha-fix.patch
mn10300-add-the-mn10300-am33-architecture-to-the-kernel-fix.patch
rewrite-rd-fixes.patch
make-copy_from_user_inatomic-not-zero-the-tail-on-i386-vs-reiser4.patch
reiser4.patch
jens-broke-reiser4patch-added-to-mm-tree.patch
page-owner-tracking-leak-detector.patch
nr_blockdev_pages-in_interrupt-warning.patch
slab-leaks3-default-y.patch
profile-likely-unlikely-macros-fix.patch
put_bh-debug.patch
shrink_slab-handle-bad-shrinkers.patch
getblk-handle-2tb-devices.patch
getblk-handle-2tb-devices-fix.patch
undeprecate-pci_find_device.patch
w1-build-fix.patch
^ permalink raw reply [flat|nested] 8+ messages in thread* [PATCH] sched: dynamically update the root-domain span/online maps
2007-12-17 23:39 - revert-sched-update-root-domain-spans-upon-departure.patch removed from -mm tree akpm
@ 2007-12-18 0:55 ` Gregory Haskins
2007-12-18 10:48 ` Ingo Molnar
0 siblings, 1 reply; 8+ messages in thread
From: Gregory Haskins @ 2007-12-18 0:55 UTC (permalink / raw)
To: mingo; +Cc: Gautham R Shenoy, Andrew Morton, linux-kernel, rostedt
Hi Ingo,
The following patch applies to sched-devel to replace the root-domain patch
that was reverted as noted here:
http://marc.info/?l=linux-mm-commits&m=119793598429477&w=2
I have confirmed that it builds and boots clean, and it passes checkpatch.
However, my test machine seems to be having problems with suspend-to-ram that
are unrelated to this patch that prevent me from verifying the fix entirely.
If Gautham or Andrew could confirm that it resolves their suspend-to-ram
issue, I would be most appreciative.
Regards,
-Greg
--------------------------------------
sched: dynamically update the root-domain span/online maps
The baseline code statically builds the span maps when the domain is formed.
Previous attempts at dynamically updating the maps caused a suspend-to-ram
regression, which should now be fixed.
Signed-off-by: Gregory Haskins <ghaskins@novell.com>
CC: Gautham R Shenoy <ego@in.ibm.com>
---
kernel/sched.c | 31 +++++++++++++++++++------------
1 files changed, 19 insertions(+), 12 deletions(-)
diff --git a/kernel/sched.c b/kernel/sched.c
index dc6fb24..48cfec1 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -359,8 +359,6 @@ struct rt_rq {
* exclusive cpuset is created, we also create and attach a new root-domain
* object.
*
- * By default the system creates a single root-domain with all cpus as
- * members (mimicking the global state we have today).
*/
struct root_domain {
atomic_t refcount;
@@ -375,6 +373,10 @@ struct root_domain {
atomic_t rto_count;
};
+/*
+ * By default the system creates a single root-domain with all cpus as
+ * members (mimicking the global state we have today).
+ */
static struct root_domain def_root_domain;
#endif
@@ -5854,6 +5856,9 @@ static void rq_attach_root(struct rq *rq, struct root_domain *rd)
class->leave_domain(rq);
}
+ cpu_clear(rq->cpu, old_rd->span);
+ cpu_clear(rq->cpu, old_rd->online);
+
if (atomic_dec_and_test(&old_rd->refcount))
kfree(old_rd);
}
@@ -5861,6 +5866,10 @@ static void rq_attach_root(struct rq *rq, struct root_domain *rd)
atomic_inc(&rd->refcount);
rq->rd = rd;
+ cpu_set(rq->cpu, rd->span);
+ if (cpu_isset(rq->cpu, cpu_online_map))
+ cpu_set(rq->cpu, rd->online);
+
for (class = sched_class_highest; class; class = class->next) {
if (class->join_domain)
class->join_domain(rq);
@@ -5869,23 +5878,21 @@ static void rq_attach_root(struct rq *rq, struct root_domain *rd)
spin_unlock_irqrestore(&rq->lock, flags);
}
-static void init_rootdomain(struct root_domain *rd, const cpumask_t *map)
+static void init_rootdomain(struct root_domain *rd)
{
memset(rd, 0, sizeof(*rd));
- rd->span = *map;
- cpus_and(rd->online, rd->span, cpu_online_map);
+ cpus_clear(rd->span);
+ cpus_clear(rd->online);
}
static void init_defrootdomain(void)
{
- cpumask_t cpus = CPU_MASK_ALL;
-
- init_rootdomain(&def_root_domain, &cpus);
+ init_rootdomain(&def_root_domain);
atomic_set(&def_root_domain.refcount, 1);
}
-static struct root_domain *alloc_rootdomain(const cpumask_t *map)
+static struct root_domain *alloc_rootdomain(void)
{
struct root_domain *rd;
@@ -5893,7 +5900,7 @@ static struct root_domain *alloc_rootdomain(const cpumask_t *map)
if (!rd)
return NULL;
- init_rootdomain(rd, map);
+ init_rootdomain(rd);
return rd;
}
@@ -6314,7 +6321,7 @@ static int build_sched_domains(const cpumask_t *cpu_map)
sched_group_nodes_bycpu[first_cpu(*cpu_map)] = sched_group_nodes;
#endif
- rd = alloc_rootdomain(cpu_map);
+ rd = alloc_rootdomain();
if (!rd) {
printk(KERN_WARNING "Cannot alloc root domain\n");
return -ENOMEM;
@@ -6886,7 +6893,6 @@ void __init sched_init(void)
#ifdef CONFIG_SMP
rq->sd = NULL;
rq->rd = NULL;
- rq_attach_root(rq, &def_root_domain);
rq->active_balance = 0;
rq->next_balance = jiffies;
rq->push_cpu = 0;
@@ -6895,6 +6901,7 @@ void __init sched_init(void)
INIT_LIST_HEAD(&rq->migration_queue);
rq->rt.highest_prio = MAX_RT_PRIO;
rq->rt.overloaded = 0;
+ rq_attach_root(rq, &def_root_domain);
#endif
atomic_set(&rq->nr_iowait, 0);
^ permalink raw reply related [flat|nested] 8+ messages in thread* Re: [PATCH] sched: dynamically update the root-domain span/online maps
2007-12-18 0:55 ` [PATCH] sched: dynamically update the root-domain span/online maps Gregory Haskins
@ 2007-12-18 10:48 ` Ingo Molnar
2007-12-18 11:28 ` Andrew Morton
0 siblings, 1 reply; 8+ messages in thread
From: Ingo Molnar @ 2007-12-18 10:48 UTC (permalink / raw)
To: Gregory Haskins; +Cc: Gautham R Shenoy, Andrew Morton, linux-kernel, rostedt
* Gregory Haskins <ghaskins@novell.com> wrote:
> http://marc.info/?l=linux-mm-commits&m=119793598429477&w=2
>
> I have confirmed that it builds and boots clean, and it passes
> checkpatch. However, my test machine seems to be having problems with
> suspend-to-ram that are unrelated to this patch that prevent me from
> verifying the fix entirely. If Gautham or Andrew could confirm that it
> resolves their suspend-to-ram issue, I would be most appreciative.
i'm reluctant to apply it without test results, unless we have a very
clear picture of what happened on Andrew's box and how this updated
patch resolves that problem. (or once Andrew tests your patch and deems
it OK.)
Ingo
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] sched: dynamically update the root-domain span/online maps
2007-12-18 10:48 ` Ingo Molnar
@ 2007-12-18 11:28 ` Andrew Morton
2007-12-18 12:57 ` Ingo Molnar
0 siblings, 1 reply; 8+ messages in thread
From: Andrew Morton @ 2007-12-18 11:28 UTC (permalink / raw)
To: Ingo Molnar; +Cc: Gregory Haskins, Gautham R Shenoy, linux-kernel, rostedt
On Tue, 18 Dec 2007 11:48:00 +0100 Ingo Molnar <mingo@elte.hu> wrote:
>
> * Gregory Haskins <ghaskins@novell.com> wrote:
>
> > http://marc.info/?l=linux-mm-commits&m=119793598429477&w=2
> >
> > I have confirmed that it builds and boots clean, and it passes
> > checkpatch. However, my test machine seems to be having problems with
> > suspend-to-ram that are unrelated to this patch that prevent me from
> > verifying the fix entirely. If Gautham or Andrew could confirm that it
> > resolves their suspend-to-ram issue, I would be most appreciative.
>
> i'm reluctant to apply it without test results, unless we have a very
> clear picture of what happened on Andrew's box and how this updated
> patch resolves that problem. (or once Andrew tests your patch and deems
> it OK.)
>
<wades through a pile of new compile errors>
<tests it>
Seems OK now - resume-from-RAM actually resumes.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] sched: dynamically update the root-domain span/online maps
2007-12-18 11:28 ` Andrew Morton
@ 2007-12-18 12:57 ` Ingo Molnar
0 siblings, 0 replies; 8+ messages in thread
From: Ingo Molnar @ 2007-12-18 12:57 UTC (permalink / raw)
To: Andrew Morton; +Cc: Gregory Haskins, Gautham R Shenoy, linux-kernel, rostedt
* Andrew Morton <akpm@linux-foundation.org> wrote:
> > i'm reluctant to apply it without test results, unless we have a
> > very clear picture of what happened on Andrew's box and how this
> > updated patch resolves that problem. (or once Andrew tests your
> > patch and deems it OK.)
>
> <wades through a pile of new compile errors>
hm, due to any of these patches?
> <tests it>
>
> Seems OK now - resume-from-RAM actually resumes.
cool, thanks! I've added it to sched-devel.git and have updated it.
Ingo
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2007-12-18 12:58 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-12-18 2:40 [PATCH] sched: dynamically update the root-domain span/online maps Gregory Haskins
2007-12-18 3:35 ` Steven Rostedt
2007-12-18 10:55 ` Ingo Molnar
2007-12-18 11:39 ` Steven Rostedt
-- strict thread matches above, loose matches on Subject: below --
2007-12-17 23:39 - revert-sched-update-root-domain-spans-upon-departure.patch removed from -mm tree akpm
2007-12-18 0:55 ` [PATCH] sched: dynamically update the root-domain span/online maps Gregory Haskins
2007-12-18 10:48 ` Ingo Molnar
2007-12-18 11:28 ` Andrew Morton
2007-12-18 12:57 ` Ingo Molnar
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.