summaryrefslogtreecommitdiff
path: root/flowtop.zsh
blob: 878931c934752986f33feef896be08b2a102d5cf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#compdef flowtop
#
# flowtop.zsh -- zsh completion function for flowtop
#
# Copyright (C) 2013 Hideo Hattori <hhatto.jp@gmail.com>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.

typeset -A opt_args

_arguments -s -S \
    "(-4 --ipv4)"{-4,--ipv4}"[Show only IPv4 flows (default)]" \
    "(-6 --ipv6)"{-6,--ipv6}"[Show only IPv6 flows (default)]" \
    "(-T --tcp)"{-T,--tcp}"[Show only TCP flows (default)]" \
    "(-U --udp)"{-U,--udp}"[Show only UDP flows]" \
    "(-D --dccp)"{-D,--dccp}"[Show only DCCP flows]" \
    "(-I --icmp)"{-I,--icmp}"[Show only ICMP/ICMPv6 flows]" \
    "(-S --sctp)"{-S,--sctp}"[Show only SCTP flows]" \
    "(-s --show-src)"{-s,--show-src}"[Also show source, not only dest]" \
    "(-u --update)"{-u,--update}"[Update GeoIP databases]" \
    {-v,--version}"[Print version]:" \
    {-h,--help}"[Print this help]:" \
    "*::args:_gnu_generic"
33e9837d00965016170271d4f87dcf'>597f03f9d133e9837d00965016170271d4f87dcf (diff)
x86/irq: Prevent force migration of irqs which are not in the vector domain
When a CPU is about to be offlined we call fixup_irqs() that resets IRQ affinities related to the CPU in question. The same thing is also done when the system is suspended to S-states like S3 (mem). For each IRQ we try to complete any on-going move regardless whether the IRQ is actually part of x86_vector_domain. For each IRQ descriptor we fetch its chip_data, assume it is of type struct apic_chip_data and manipulate it by clearing old_domain mask etc. For irq_chips that are not part of the x86_vector_domain, like those created by various GPIO drivers, will find their chip_data being changed unexpectly. Below is an example where GPIO chip owned by pinctrl-sunrisepoint.c gets corrupted after resume: # cat /sys/kernel/debug/gpio gpiochip0: GPIOs 360-511, parent: platform/INT344B:00, INT344B:00: gpio-511 ( |sysfs ) in hi # rtcwake -s10 -mmem <10 seconds passes> # cat /sys/kernel/debug/gpio gpiochip0: GPIOs 360-511, parent: platform/INT344B:00, INT344B:00: gpio-511 ( |sysfs ) in ? Note '?' in the output. It means the struct gpio_chip ->get function is NULL whereas before suspend it was there. Fix this by first checking that the IRQ belongs to x86_vector_domain before we try to use the chip_data as struct apic_chip_data. Reported-and-tested-by: Sakari Ailus <sakari.ailus@linux.intel.com> Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com> Cc: stable@vger.kernel.org # 4.4+ Link: http://lkml.kernel.org/r/20161003101708.34795-1-mika.westerberg@linux.intel.com Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat