Thadeu Lima de Souza Cascardo
045c47ca30
blk-throttle: check stats_cpu before reading it from sysfs
...
When reading blkio.throttle.io_serviced in a recently created blkio
cgroup, it's possible to race against the creation of a throttle policy,
which delays the allocation of stats_cpu.
Like other functions in the throttle code, just checking for a NULL
stats_cpu prevents the following oops caused by that race.
[ 1117.285199] Unable to handle kernel paging request for data at address 0x7fb4d0020
[ 1117.285252] Faulting instruction address: 0xc0000000003efa2c
[ 1137.733921] Oops: Kernel access of bad area, sig: 11 [#1 ]
[ 1137.733945] SMP NR_CPUS=2048 NUMA PowerNV
[ 1137.734025] Modules linked in: bridge stp llc kvm_hv kvm binfmt_misc autofs4
[ 1137.734102] CPU: 3 PID: 5302 Comm: blkcgroup Not tainted 3.19.0 #5
[ 1137.734132] task: c000000f1d188b00 ti: c000000f1d210000 task.ti: c000000f1d210000
[ 1137.734167] NIP: c0000000003efa2c LR: c0000000003ef9f0 CTR: c0000000003ef980
[ 1137.734202] REGS: c000000f1d213500 TRAP: 0300 Not tainted (3.19.0)
[ 1137.734230] MSR: 9000000000009032 <SF,HV,EE,ME,IR,DR,RI> CR: 42008884 XER: 20000000
[ 1137.734325] CFAR: 0000000000008458 DAR: 00000007fb4d0020 DSISR: 40000000 SOFTE: 0
GPR00: c0000000003ed3a0 c000000f1d213780 c000000000c59538 0000000000000000
GPR04: 0000000000000800 0000000000000000 0000000000000000 0000000000000000
GPR08: ffffffffffffffff 00000007fb4d0020 00000007fb4d0000 c000000000780808
GPR12: 0000000022000888 c00000000fdc0d80 0000000000000000 0000000000000000
GPR16: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
GPR20: 000001003e120200 c000000f1d5b0cc0 0000000000000200 0000000000000000
GPR24: 0000000000000001 c000000000c269e0 0000000000000020 c000000f1d5b0c80
GPR28: c000000000ca3a08 c000000000ca3dec c000000f1c667e00 c000000f1d213850
[ 1137.734886] NIP [c0000000003efa2c] .tg_prfill_cpu_rwstat+0xac/0x180
[ 1137.734915] LR [c0000000003ef9f0] .tg_prfill_cpu_rwstat+0x70/0x180
[ 1137.734943] Call Trace:
[ 1137.734952] [c000000f1d213780] [d000000005560520] 0xd000000005560520 (unreliable)
[ 1137.734996] [c000000f1d2138a0] [c0000000003ed3a0] .blkcg_print_blkgs+0xe0/0x1a0
[ 1137.735039] [c000000f1d213960] [c0000000003efb50] .tg_print_cpu_rwstat+0x50/0x70
[ 1137.735082] [c000000f1d2139e0] [c000000000104b48] .cgroup_seqfile_show+0x58/0x150
[ 1137.735125] [c000000f1d213a70] [c0000000002749dc] .kernfs_seq_show+0x3c/0x50
[ 1137.735161] [c000000f1d213ae0] [c000000000218630] .seq_read+0xe0/0x510
[ 1137.735197] [c000000f1d213bd0] [c000000000275b04] .kernfs_fop_read+0x164/0x200
[ 1137.735240] [c000000f1d213c80] [c0000000001eb8e0] .__vfs_read+0x30/0x80
[ 1137.735276] [c000000f1d213cf0] [c0000000001eb9c4] .vfs_read+0x94/0x1b0
[ 1137.735312] [c000000f1d213d90] [c0000000001ebb38] .SyS_read+0x58/0x100
[ 1137.735349] [c000000f1d213e30] [c000000000009218] syscall_exit+0x0/0x98
[ 1137.735383] Instruction dump:
[ 1137.735405] 7c6307b4 7f891800 409d00b8 60000000 60420000 3d420004 392a63b0 786a1f24
[ 1137.735471] 7d49502a e93e01c8 7d495214 7d2ad214 <7cead02a> e9090008 e9490010 e9290018
And here is one code that allows to easily reproduce this, although this
has first been found by running docker.
void run(pid_t pid)
{
int n;
int status;
int fd;
char *buffer;
buffer = memalign(BUFFER_ALIGN, BUFFER_SIZE);
n = snprintf(buffer, BUFFER_SIZE, "%d\n", pid);
fd = open(CGPATH "/test/tasks", O_WRONLY);
write(fd, buffer, n);
close(fd);
if (fork() > 0) {
fd = open("/dev/sda", O_RDONLY | O_DIRECT);
read(fd, buffer, 512);
close(fd);
wait(&status);
} else {
fd = open(CGPATH "/test/blkio.throttle.io_serviced", O_RDONLY);
n = read(fd, buffer, BUFFER_SIZE);
close(fd);
}
free(buffer);
exit(0);
}
void test(void)
{
int status;
mkdir(CGPATH "/test", 0666);
if (fork() > 0)
wait(&status);
else
run(getpid());
rmdir(CGPATH "/test");
}
int main(int argc, char **argv)
{
int i;
for (i = 0; i < NR_TESTS; i++)
test();
return 0;
}
Reported-by: Ricardo Marin Matinata <rmm@br.ibm.com >
Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@linux.vnet.ibm.com >
Cc: stable@vger.kernel.org
Signed-off-by: Jens Axboe <axboe@fb.com >
2015-02-20 22:11:58 -08:00
Rafael J. Wysocki
3466b547e3
Merge branches 'pnp', 'pm-cpuidle' and 'pm-cpufreq'
...
* pnp:
PNP: Switch from __check_region() to __request_region()
* pm-cpuidle:
cpuidle: powernv: Avoid endianness conversions while parsing DT
cpuidle: powernv: Read target_residency value of idle states from DT if available
* pm-cpufreq:
cpufreq: s3c: remove last use of resume_clocks callback
cpufreq: s3c: remove incorrect __init annotations
2015-02-21 04:29:16 +01:00
Rafael J. Wysocki
9d0de5a63a
Merge branches 'acpi-ec', 'acpi-soc', 'acpi-video' and 'acpi-resources'
...
* acpi-ec:
ACPI / EC: Remove non-standard log emphasis
* acpi-soc:
ACPI / LPSS: Deassert resets for SPI host controllers on Braswell
ACPI / LPSS: Always disable I2C host controllers
Revert "ACPI / LPSS: Remove non-existing clock control from Intel Lynxpoint I2C"
* acpi-video:
ACPI / video: Disable native backlight on Samsung Series 9 laptops
* acpi-resources:
ACPI / resources: Change pr_info() to pr_debug() for debug information
2015-02-21 04:28:56 +01:00
Linus Torvalds
4fbd0a81a0
Merge tag 'for_linux-3.20-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/jwessel/kgdb
...
Pull kgdb/kdb updates from Jason Wessel:
"KGDB/KDB New:
- KDB: improved searching
- No longer enter debug core on panic if panic timeout is set
KGDB/KDB regressions / cleanups
- fix pdf doc build errors
- prevent junk characters on kdb console from printk levels"
* tag 'for_linux-3.20-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/jwessel/kgdb:
kgdb, docs: Fix <para> pdfdocs build errors
debug: prevent entering debug mode on panic/exception.
kdb: Const qualifier for kdb_getstr's prompt argument
kdb: Provide forward search at more prompt
kdb: Fix a prompt management bug when using | grep
kdb: Remove stack dump when entering kgdb due to NMI
kdb: Avoid printing KERN_ levels to consoles
kdb: Fix off by one error in kdb_cpu()
kdb: fix incorrect counts in KDB summary command output
2015-02-20 15:13:29 -08:00
Niklas Cassel
44923c9cfa
MIPS: sead3: Corrected get_c0_perfcount_int
...
Commit e9de688dac ("irqchip: mips-gic: Support local interrupts")
updated several platforms. This is a copy paste error.
Signed-off-by: Niklas Cassel <niklass@axis.com >
Reviewed-by: Andrew Bresticker <abrestic@chromium.org >
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/9245/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org >
2015-02-20 23:53:09 +01:00
Andreas Ruprecht
8fc5ec7044
MIPS: mm: Remove dead macro definitions
...
In commit c441d4a54c ("MIPS: mm: Only build one microassembler that
is suitable"), the Makefile at arch/mips/mm was rewritten to only
build the "right" microassembler file, depending on whether
CONFIG_CPU_MICROMIPS is set or not.
In the files, however, there are still preprocessor definitions
depending on CONFIG_CPU_MICROMIPS. The #ifdef around them can now
never evaluate to true, so let's remove them altogether.
This inconsistency was found using the undertaker-checkpatch tool.
Signed-off-by: Andreas Ruprecht <rupran@einserver.de >
Reviewed-by: Maciej W. Rozycki <macro@linux-mips.org >
Cc: linux-mips@linux-mips.org
Cc: linux-kernel@vger.kernel.org
Cc: Valentin Rothberg <valentinrothberg@gmail.com >
Cc: Paul Bolle <pebolle@tiscali.nl >
Patchwork: https://patchwork.linux-mips.org/patch/9267/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org >
2015-02-20 23:42:00 +01:00
Linus Torvalds
7bad2227f6
Merge tag 'for-linus-3.20-1' of git://git.code.sf.net/p/openipmi/linux-ipmi
...
Pull IPMI driver updates from Corey Minyard:
"Some minor fixes and cleanups, nothing big.
In for-next for a while and I've done some extensive beating on the
driver since I have it working in qemu and can do creatively cruel
things to it"
* tag 'for-linus-3.20-1' of git://git.code.sf.net/p/openipmi/linux-ipmi:
ipmi: Fix a memory ordering issue
ipmi: Remove uses of return value of seq_printf
ipmi: Use is_visible callback for conditional sysfs entries
ipmi: Free ipmi_recv_msg messages from the linked list on close
ipmi: avoid gcc warning
ipmi: Update timespec usage to timespec64
ipmi: Cleanup DEBUG_TIMING ifdef usage
drivers:char:ipmi: Remove unneeded FIXME comment in the file,ipmi_si_intf.c
char: ipmi: Remove obsolete cleanup for clientdata
ipmi: Remove a FIXME for slab conversion
2015-02-20 14:26:51 -08:00
Dmitry Torokhov
4c971aa783
Merge branch 'next' into for-linus
...
Second round of updates for 3.20.
2015-02-20 11:54:53 -08:00
Roland Dreier
147d1da951
Merge branches 'core', 'cxgb4', 'iser', 'mlx4', 'mlx5', 'ocrdma', 'odp', 'qib' and 'srp' into for-next
2015-02-20 09:04:40 -08:00
Mike Marciniszyn
da12c1f685
IB/qib: Add blank line after declaration
...
Upstream checkpatch now requires this.
Reviewed-by: Dennis Dalessandro <dennis.dalessandro@intel.com >
Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com >
Signed-off-by: Roland Dreier <roland@purestorage.com >
2015-02-20 09:04:12 -08:00
Mike Marciniszyn
a46a2802f7
IB/qib: Fix checkpatch warnings
...
Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com >
Signed-off-by: Roland Dreier <roland@purestorage.com >
2015-02-20 09:04:09 -08:00
Wolfram Sang
0d8fb59924
i2c: ocores: rework clk code to handle NULL cookie
...
For, !HAVE_CLK the clk API returns a NULL cookie. Rework the
initialization code to handle that. If clk_get_rate() delivers 0, we use
the fallback mechanisms. The patch is pretty easy when ignoring white
space issues (git diff -b).
Suggested-by: Russell King <rmk+kernel@arm.linux.org.uk >
Signed-off-by: Wolfram Sang <wsa@the-dreams.de >
Tested-by: Max Filippov <jcmvbkbc@gmail.com >
2015-02-20 18:01:23 +01:00
David Daney
64b139f97c
MIPS: OCTEON: irq: add CIB and other fixes
...
- Use of_irq_init() to initialize interrupt controllers
- Get rid of some unlikely()
- Add CIB to support SATA and other interrupts
- Add support for CIU SUM2 interrupt sources
Signed-off-by: David Daney <david.daney@cavium.com >
Signed-off-by: Leonid Rosenboim <lrosenboim@caviumnetworks.com >
Signed-off-by: Aleksey Makarov <aleksey.makarov@auriga.com >
Signed-off-by: Peter Swain <peter.swain@cavium.com >
Cc: linux-mips@linux-mips.org
Cc: linux-kernel@vger.kernel.org
Cc: Rob Herring <robh+dt@kernel.org >
Cc: Pawel Moll <pawel.moll@arm.com >
Cc: Mark Rutland <mark.rutland@arm.com >
Cc: Ian Campbell <ijc+devicetree@hellion.org.uk >
Cc: Kumar Gala <galak@codeaurora.org >
Cc: devicetree@vger.kernel.org
Patchwork: https://patchwork.linux-mips.org/patch/8947/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org >
2015-02-20 15:33:40 +01:00
David Daney
2e3ecab1d3
MIPS: OCTEON: Don't do acknowledge operations for level triggered irqs.
...
The acknowledge bits don't exist for level triggered irqs, so setting
them causes the simulator to terminate.
Signed-off-by: David Daney <david.daney@cavium.com >
Signed-off-by: Leonid Rosenboim <lrosenboim@caviumnetworks.com >
Signed-off-by: Aleksey Makarov <aleksey.makarov@auriga.com >
Cc: linux-mips@linux-mips.org
Cc: linux-kernel@vger.kernel.org
Patchwork: https://patchwork.linux-mips.org/patch/8946/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org >
2015-02-20 15:33:06 +01:00
Chandrakala Chavva
ac6d9b3a03
MIPS: OCTEON: More OCTEONIII support
...
Read clock rate from the correct CSR. Don't clear COP0_DCACHE for OCTEONIII.
Signed-off-by: Chandrakala Chavva <cchavva@caviumnetworks.com >
Signed-off-by: Aleksey Makarov <aleksey.makarov@auriga.com >
Signed-off-by: David Daney <david.daney@cavium.com >
Cc: linux-mips@linux-mips.org
Cc: linux-kernel@vger.kernel.org
Patchwork: https://patchwork.linux-mips.org/patch/8945/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org >
2015-02-20 15:32:46 +01:00
Chad Reese
920cda3870
MIPS: OCTEON: Remove setting of processor specific CVMCTL icache bits.
...
CN38XX pass 1 required icache prefetching to be turned off. This chip never
reached production and is long dead. Other processor specific icache settings
are done by the bootloader. Remove these bits from the kernel.
Signed-off-by: Chad Reese <kreese@caviumnetworks.com >
Signed-off-by: Aleksey Makarov <aleksey.makarov@auriga.com >
Cc: linux-mips@linux-mips.org
Cc: linux-kernel@vger.kernel.org
Cc: David Daney <david.daney@cavium.com >
Patchwork: https://patchwork.linux-mips.org/patch/8944/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org >
2015-02-20 15:32:22 +01:00
David Daney
726da2f82a
MIPS: OCTEON: Core-15169 Workaround and general CVMSEG cleanup.
...
Signed-off-by: David Daney <david.daney@cavium.com >
Signed-off-by: Aleksey Makarov <aleksey.makarov@auriga.com >
Cc: linux-mips@linux-mips.org
Cc: linux-kernel@vger.kernel.org
Patchwork: https://patchwork.linux-mips.org/patch/8943/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org >
2015-02-20 15:31:59 +01:00
David Daney
debe6a623d
MIPS: OCTEON: Update octeon-model.h code for new SoCs.
...
Add coverage for OCTEON III models.
Signed-off-by: David Daney <david.daney@cavium.com >
Signed-off-by: Aleksey Makarov <aleksey.makarov@auriga.com >
Cc: linux-mips@linux-mips.org
Cc: linux-kernel@vger.kernel.org
Patchwork: https://patchwork.linux-mips.org/patch/8942/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org >
2015-02-20 15:31:43 +01:00
David Daney
e3d0ead59f
MIPS: OCTEON: Implement DCache errata workaround for all CN6XXX
...
Make messages refer to all CN6XXX.
Signed-off-by: David Daney <david.daney@cavium.com >
Signed-off-by: Aleksey Makarov <aleksey.makarov@auriga.com >
Cc: linux-mips@linux-mips.org
Cc: linux-kernel@vger.kernel.org
Patchwork: https://patchwork.linux-mips.org/patch/8941/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org >
2015-02-20 15:31:27 +01:00
David Daney
664f1ae53d
MIPS: OCTEON: Add little-endian support to asm/octeon/octeon.h
...
Also update union octeon_cvmemctl with new OCTEON II fields.
[aleksey.makarov@auriga.com: use __BITFIELD_FIELD]
Signed-off-by: David Daney <david.daney@cavium.com>
Signed-off-by: Aleksey Makarov <aleksey.makarov@auriga.com>
Cc: linux-mips@linux-mips.org
Cc: linux-kernel@vger.kernel.org
Patchwork: https://patchwork.linux-mips.org/patch/8940/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org >
2015-02-20 15:31:07 +01:00
David Daney
664d699af2
MIPS: OCTEON: Implement the core-16057 workaround
...
Disable ICache prefetch for certian Octeon II processors.
Signed-off-by: David Daney <david.daney@cavium.com >
Signed-off-by: Aleksey Makarov <aleksey.makarov@auriga.com >
Cc: linux-mips@linux-mips.org
Cc: linux-kernel@vger.kernel.org
Patchwork: https://patchwork.linux-mips.org/patch/8938/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org >
2015-02-20 15:30:42 +01:00
Aleksey Makarov
69f7cd4724
MIPS: OCTEON: Delete unused COP2 saving code
...
Commit 2c952e06e4 ("MIPS: Move cop2 save/restore to switch_to()")
removes assembler code to store COP2 registers. Commit
a36d8225bc ("MIPS: OCTEON: Enable use of FPU") mistakenly
restores it
Fixes: a36d8225bc ("MIPS: OCTEON: Enable use of FPU")
Signed-off-by: Aleksey Makarov <aleksey.makarov@auriga.com >
Cc: linux-mips@linux-mips.org
Cc: linux-kernel@vger.kernel.org
Cc: David Daney <david.daney@cavium.com >
Patchwork: https://patchwork.linux-mips.org/patch/8937/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org >
2015-02-20 15:30:23 +01:00
Chandrakala Chavva
2d98cae6e3
MIPS: OCTEON: Use correct instruction to read 64-bit COP0 register
...
Use dmfc0/dmtc0 instructions for reading CvmMemCtl COP0 register,
its a 64-bit wide.
Signed-off-by: Chandrakala Chavva <cchavva@caviumnetworks.com >
Signed-off-by: Aleksey Makarov <aleksey.makarov@auriga.com >
Cc: linux-mips@linux-mips.org
Cc: linux-kernel@vger.kernel.org
Cc: David Daney <david.daney@cavium.com >
Patchwork: https://patchwork.linux-mips.org/patch/8936/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org >
2015-02-20 15:29:36 +01:00
David Daney
6b3a287e63
MIPS: OCTEON: Save and restore CP2 SHA3 state
...
Allocate new save space, and then save/restore the registers if
OCTEON III.
Signed-off-by: David Daney <david.daney@cavium.com >
Signed-off-by: Aleksey Makarov <aleksey.makarov@auriga.com >
Cc: linux-mips@linux-mips.org
Cc: linux-kernel@vger.kernel.org
Patchwork: https://patchwork.linux-mips.org/patch/8935/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org >
2015-02-20 15:29:08 +01:00
David Daney
d6e41525e3
MIPS: OCTEON: Fix FP context save.
...
It wasn't being saved on task switch.
Signed-off-by: David Daney <david.daney@cavium.com >
Signed-off-by: Aleksey Makarov <aleksey.makarov@auriga.com >
Cc: linux-mips@linux-mips.org
Cc: linux-kernel@vger.kernel.org
Patchwork: https://patchwork.linux-mips.org/patch/8934/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org >
2015-02-20 15:28:51 +01:00