lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20140508173835.GB9838@gmail.com>
Date:	Thu, 8 May 2014 19:38:35 +0200
From:	Ingo Molnar <mingo@...nel.org>
To:	Jason Low <jason.low2@...com>
Cc:	peterz@...radead.org, linux-kernel@...r.kernel.org,
	daniel.lezcano@...aro.org, alex.shi@...aro.org,
	preeti@...ux.vnet.ibm.com, efault@....de,
	vincent.guittot@...aro.org, morten.rasmussen@....com, aswin@...com
Subject: Re: [PATCH 2/2] sched: Fix next_balance logic in rebalance_domains()
 and idle_balance()


* Jason Low <jason.low2@...com> wrote:

> On Mon, 2014-04-28 at 15:45 -0700, Jason Low wrote:
> > Currently, in idle_balance(), we update rq->next_balance when we pull_tasks. 
> > However, it is also important to update this in the !pulled_tasks case too.
> > 
> > When the CPU is "busy" (the CPU isn't idle), rq->next_balance gets computed
> > using sd->busy_factor (so we increase the balance interval when the CPU is
> > busy). However, when the CPU goes idle, rq->next_balance could still be set
> > to a large value that was computed with the sd->busy_factor.
> > 
> > Thus, we need to also update rq->next_balance in idle_balance() in the cases
> > where !pulled_tasks too, so that rq->next_balance gets updated without taking
> > the busy_factor into account when the CPU is about to go idle.
> > 
> > This patch makes rq->next_balance get updated independently of whether or
> > not we pulled_task. Also, we add logic to ensure that we always traverse
> > at least 1 of the sched domains to get a proper next_balance value for
> > updating rq->next_balance.
> > 
> > Additionally, since load_balance() modifies the sd->balance_interval, we
> > need to re-obtain the sched domain's interval after the call to
> > load_balance() in rebalance_domains() before we update rq->next_balance.
> > 
> > This patch adds and uses 2 new helper functions, update_next_balance() and
> > get_sd_balance_interval() to update next_balance and obtain the sched
> > domain's balance_interval. 
> 
> 
> Hi Peter,
> 
> I noticed that patch 1 is in tip, but not this patch 2. I was wondering
> what the current status with this [PATCH 2/2] is at the moment.

It was crashing the bootup with the attached config, it gave the splat 
attached below. (ignore the line duplication, it's a serial logging 
artifact.)

Thanks,

	Ingo

EXT3-fs (sda1): write access will be enabled during recovery
EXT3-fs (sda1): write access will be enabled during recovery
BUG: unable to handle kernel BUG: unable to handle kernel NULL pointer dereferenceNULL pointer dereference at 00000048
 at 00000048
IP:IP: [<7905dbbe>] pick_next_task_fair+0x1ae/0x480
 [<7905dbbe>] pick_next_task_fair+0x1ae/0x480
*pde = 00000000 *pde = 00000000 

Oops: 0000 [#1] Oops: 0000 [#1] SMP SMP 

Modules linked in:Modules linked in:

CPU: 0 PID: 1 Comm: swapper/0 Not tainted 3.15.0-rc4-01965-g80afea9-dirty #234750
CPU: 0 PID: 1 Comm: swapper/0 Not tainted 3.15.0-rc4-01965-g80afea9-dirty #234750
Hardware name: System manufacturer System Product Name/A8N-E, BIOS ASUS A8N-E ACPI BIOS Revision 1008 08/22/2005
Hardware name: System manufacturer System Product Name/A8N-E, BIOS ASUS A8N-E ACPI BIOS Revision 1008 08/22/2005
task: 90848000 ti: 90850000 task.ti: 90850000
task: 90848000 ti: 90850000 task.ti: 90850000
EIP: 0060:[<7905dbbe>] EFLAGS: 00010082 CPU: 0
EIP: 0060:[<7905dbbe>] EFLAGS: 00010082 CPU: 0
EIP is at pick_next_task_fair+0x1ae/0x480
EIP is at pick_next_task_fair+0x1ae/0x480
EAX: 00000001 EBX: 00000000 ECX: 90848484 EDX: 00000000
EAX: 00000001 EBX: 00000000 ECX: 90848484 EDX: 00000000
ESI: 00000000 EDI: 97fdd480 EBP: 90851b20 ESP: 90851adc
ESI: 00000000 EDI: 97fdd480 EBP: 90851b20 ESP: 90851adc
 DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068
 DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068
CR0: 8005003b CR2: 00000048 CR3: 020fb000 CR4: 00000690
CR0: 8005003b CR2: 00000048 CR3: 020fb000 CR4: 00000690
Stack:
Stack:
 00000002 00000002 00000000 00000000 00000000 00000000 7905db8b 7905db8b 90848000 90848000 7a0ee480 7a0ee480 90848000 90848000 79b49f00 79b49f00

 00000000 00000000 790539a2 790539a2 00000001 00000001 ffff30df ffff30df 00000000 00000000 02039687 02039687 97fdd480 97fdd480 00000000 00000000

 9084824c 9084824c 90851b9c 90851b9c 79b3c7b0 79b3c7b0 00468017 00468017 00000000 00000000 02039687 02039687 90848000 90848000 00000000 00000000

Call Trace:
Call Trace:
 [<7905db8b>] ? pick_next_task_fair+0x17b/0x480
 [<7905db8b>] ? pick_next_task_fair+0x17b/0x480
 [<790539a2>] ? dequeue_task+0x22/0x30
 [<790539a2>] ? dequeue_task+0x22/0x30
 [<79b3c7b0>] __schedule+0x210/0x550
 [<79b3c7b0>] __schedule+0x210/0x550
 [<79068c99>] ? mark_held_locks+0x69/0x80
 [<79068c99>] ? mark_held_locks+0x69/0x80
 [<79b400c5>] ? _raw_spin_unlock_irqrestore+0x45/0x50
 [<79b400c5>] ? _raw_spin_unlock_irqrestore+0x45/0x50
 [<79068deb>] ? trace_hardirqs_on+0xb/0x10
 [<79068deb>] ? trace_hardirqs_on+0xb/0x10
 [<790b5210>] ? wait_on_page_read+0x40/0x40
 [<790b5210>] ? wait_on_page_read+0x40/0x40
 [<79b3cdc5>] io_schedule+0x85/0xa0
 [<79b3cdc5>] io_schedule+0x85/0xa0
 [<790b5218>] sleep_on_page+0x8/0x10
 [<790b5218>] sleep_on_page+0x8/0x10
 [<79b3cffc>] __wait_on_bit+0x3c/0x70
 [<79b3cffc>] __wait_on_bit+0x3c/0x70
 [<790b5210>] ? wait_on_page_read+0x40/0x40
 [<790b5210>] ? wait_on_page_read+0x40/0x40
 [<790b5066>] wait_on_page_bit+0x86/0xa0
 [<790b5066>] wait_on_page_bit+0x86/0xa0
 [<79062590>] ? autoremove_wake_function+0x40/0x40
 [<79062590>] ? autoremove_wake_function+0x40/0x40
 [<790b5107>] filemap_fdatawait_range+0x87/0x150
 [<790b5107>] filemap_fdatawait_range+0x87/0x150
 [<790b6103>] filemap_fdatawait+0xc3/0xd0
 [<790b6103>] filemap_fdatawait+0xc3/0xd0
 [<790b6f24>] ? filemap_write_and_wait+0x44/0x80
 [<790b6f24>] ? filemap_write_and_wait+0x44/0x80
 [<790b6f24>] filemap_write_and_wait+0x44/0x80
 [<790b6f24>] filemap_write_and_wait+0x44/0x80
 [<7911edc5>] __sync_blockdev+0x25/0x50
 [<7911edc5>] __sync_blockdev+0x25/0x50
 [<7911edfd>] sync_blockdev+0xd/0x10
 [<7911edfd>] sync_blockdev+0xd/0x10
 [<791bdbf8>] journal_recover+0x168/0x1b0
 [<791bdbf8>] journal_recover+0x168/0x1b0
 [<791c0e87>] journal_load+0x47/0x80
 [<791c0e87>] journal_load+0x47/0x80
 [<79176589>] ext3_fill_super+0xff9/0x1910
 [<79176589>] ext3_fill_super+0xff9/0x1910
 [<790f0001>] ? get_empty_filp+0xb1/0x1c0
 [<790f0001>] ? get_empty_filp+0xb1/0x1c0
 [<79175590>] ? ext3_setup_super+0x220/0x220
 [<79175590>] ? ext3_setup_super+0x220/0x220
 [<790f1459>] mount_bdev+0x139/0x1a0
 [<790f1459>] mount_bdev+0x139/0x1a0
 [<79175590>] ? ext3_setup_super+0x220/0x220
 [<79175590>] ? ext3_setup_super+0x220/0x220
 [<79172fca>] ext3_mount+0x1a/0x20
 [<79172fca>] ext3_mount+0x1a/0x20
 [<79175590>] ? ext3_setup_super+0x220/0x220
 [<79175590>] ? ext3_setup_super+0x220/0x220
 [<790f1ce3>] mount_fs+0x63/0xe0
 [<790f1ce3>] mount_fs+0x63/0xe0
 [<790cd8ea>] ? __alloc_percpu+0xa/0x10
 [<790cd8ea>] ? __alloc_percpu+0xa/0x10
 [<7910a00f>] vfs_kern_mount+0x4f/0x120
 [<7910a00f>] vfs_kern_mount+0x4f/0x120
 [<7910c9cf>] do_mount+0x7cf/0x940
 [<7910c9cf>] do_mount+0x7cf/0x940
 [<790c9a9c>] ? strndup_user+0x2c/0xb0
 [<790c9a9c>] ? strndup_user+0x2c/0xb0
 [<7910cddb>] SyS_mount+0x8b/0xd0
 [<7910cddb>] SyS_mount+0x8b/0xd0
 [<7a070dbc>] mount_block_root+0xe0/0x25d
 [<7a070dbc>] mount_block_root+0xe0/0x25d
 [<7a070f94>] mount_root+0x5b/0x61
 [<7a070f94>] mount_root+0x5b/0x61
 [<7a0710ab>] prepare_namespace+0x111/0x14b
 [<7a0710ab>] prepare_namespace+0x111/0x14b
 [<7a070c08>] kernel_init_freeable+0x17f/0x18c
 [<7a070c08>] kernel_init_freeable+0x17f/0x18c
 [<7a070522>] ? do_early_param+0x7a/0x7a
 [<7a070522>] ? do_early_param+0x7a/0x7a
 [<79b2c13b>] kernel_init+0xb/0xe0
 [<79b2c13b>] kernel_init+0xb/0xe0
 [<79b40801>] ret_from_kernel_thread+0x21/0x30
 [<79b40801>] ret_from_kernel_thread+0x21/0x30
 [<79b2c130>] ? rest_init+0xb0/0xb0
 [<79b2c130>] ? rest_init+0xb0/0xb0
Code:Code: 79 79 c7 c7 44 44 24 24 0c 0c 8b 8b db db 05 05 79 79 c7 c7 44 44 24 24 08 08 00 00 00 00 00 00 00 00 c7 c7 44 44 24 24 04 04 00 00 00 00 00 00 00 00 c7 c7 04 04 24 24 02 02 00 00 00 00 00 00 e8 e8 98 98 d0 d0 00 00 00 00 8b 8b 9f 9f a4 a4 04 04 00 00 00 00 <8b> <8b> 43 43 48 48 e8 e8 1a 1a 9c 9c fd fd ff ff 85 85 c0 c0 75 75 02 02 b0 b0 01 01 8b 8b 15 15 98 98 b9 b9 06 06 7a 7a 39 39

EIP: [<7905dbbe>] EIP: [<7905dbbe>] pick_next_task_fair+0x1ae/0x480pick_next_task_fair+0x1ae/0x480 SS:ESP 0068:90851adc

View attachment "config" of type "text/plain" (110379 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ