Release linux (4.14.17-1).
-----BEGIN PGP SIGNATURE----- iQKmBAABCgCQFiEERkRAmAjBceBVMd3uBUy48xNDz0QFAlqFl5pfFIAAAAAALgAo aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDQ2 NDQ0MDk4MDhDMTcxRTA1NTMxRERFRTA1NENCOEYzMTM0M0NGNDQSHGNhcm5pbEBk ZWJpYW4ub3JnAAoJEAVMuPMTQ89EQDoP/iuiGnJomZlwYf+UtxmTxZM0B1jutQ2V vg2/JLaocNP/QLJTRKKQnUnEbawuUvGF/vtq5kDV0XcaY3QZSbeQKkpyEpZoI5K3 dJ8WG+EXDd/a2KVoJ/layX2JqtSVsgBOtJJkSSrhWk2tfZkhB1+9BJ54UXoTCT0A pWor5ycO0PUw6crlMsNz62lBwvdwoHgIhKkjpfnXOCTZQi6n6RVFvaT2uLyijZod 0KTuWFnyMLgh1gpKKR/tqGs25ByOQH43TmtrVAYfjqua5P5CvzJaKp3UMHsDPIbN Uw3HB0QQ3iEg8pQJhCkrNk1LT/1Je9xb3rdoKSQ+OitTfyQnhs/eVXs3KzD3DPOc IJZjG/kno8d7bNWW8+ce12MPVVkAop1ZMGushyz1c3149HCtinQcymcWahD4Gyzg YA9w3V7ir+bvJWunKy12845XoXpxhaBVV7CbnXI02exGwbN1gBPfI6nxzf84lVcG Bnwy523jmAjB8h8a9HjmtwqecbnJRf+NkgQAJItniGR06B7XVSLaOnnD0dXLdOMj VADirfbRRU60gqBrjrMxUwMO1ArKowNzQM91pTR+jAa2mS4KzEpMmwmWMAPSTL2n 9ODByDGf6oi9vQxxoMd1gic7cZwyzO3n/SnHSpA5IYDSeurWE1ZF3xWqPBlxIpUp EXiBvAThcuDs =jSDv -----END PGP SIGNATURE----- Merge tag 'debian/4.14.17-1' Release linux (4.14.17-1).
This commit is contained in:
commit
0ec05d8c81
|
@ -185,7 +185,7 @@ linux (4.15~rc5-1~exp1) experimental; urgency=medium
|
|||
|
||||
-- Ben Hutchings <ben@decadent.org.uk> Wed, 27 Dec 2017 02:48:14 +0000
|
||||
|
||||
linux (4.14.15-1) UNRELEASED; urgency=medium
|
||||
linux (4.14.17-1) unstable; urgency=medium
|
||||
|
||||
* New upstream stable update:
|
||||
https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.14.14
|
||||
|
@ -201,7 +201,7 @@ linux (4.14.15-1) UNRELEASED; urgency=medium
|
|||
- [mips*] Fix an FCSR access API regression with NT_PRFPREG and MSA
|
||||
- [mips*] Also verify sizeof `elf_fpreg_t' with PTRACE_SETREGSET
|
||||
- [mips*] Disallow outsized PTRACE_SETREGSET NT_PRFPREG regset accesses
|
||||
- cgroup: fix css_task_iter crash on CSS_TASK_ITER_PROC
|
||||
- cgroup: fix css_task_iter crash on CSS_TASK_ITER_PROC (Closes: #888954)
|
||||
- [x86] kvm: vmx: Scrub hardware GPRs at VM-exit (partial mitigation of
|
||||
CVE-2017-5715, CVE-2017-5753)
|
||||
- [x86] platform: wmi: Call acpi_wmi_init() later
|
||||
|
@ -254,7 +254,8 @@ linux (4.14.15-1) UNRELEASED; urgency=medium
|
|||
- [x86] drm/i915: Whitelist SLICE_COMMON_ECO_CHICKEN1 on Geminilake.
|
||||
- [x86] drm/i915: Move init_clock_gating() back to where it was
|
||||
- [x86] drm/i915: Fix init_clock_gating for resume
|
||||
- bpf: prevent out-of-bounds speculation (partial mitigation of CVE-2017-5753)
|
||||
- bpf: prevent out-of-bounds speculation (partial mitigation of
|
||||
CVE-2017-5753)
|
||||
- bpf, array: fix overflow in max_entries and undefined behavior in
|
||||
index_mask
|
||||
- bpf: arsh is not supported in 32 bit alu thus reject it
|
||||
|
@ -311,7 +312,7 @@ linux (4.14.15-1) UNRELEASED; urgency=medium
|
|||
- [powerpc*] pseries: Query hypervisor for RFI flush settings
|
||||
- [powerpc*] powernv: Check device-tree for RFI flush settings
|
||||
- futex: Avoid violating the 10th rule of futex
|
||||
- futex: Prevent overflow by strengthen input validation
|
||||
- futex: Prevent overflow by strengthen input validation (CVE-2018-6927)
|
||||
- ALSA: seq: Make ioctls race-free (CVE-2018-1000004)
|
||||
- ALSA: pcm: Remove yet superfluous WARN_ON()
|
||||
- ALSA: hda - Apply headphone noise quirk for another Dell XPS 13 variant
|
||||
|
@ -331,7 +332,6 @@ linux (4.14.15-1) UNRELEASED; urgency=medium
|
|||
- [x86] retpoline: Add LFENCE to the retpoline/RSB filling RSB macros
|
||||
- objtool: Improve error message for bad file argument
|
||||
- [x86] cpufeature: Move processor tracing out of scattered features
|
||||
- module: Add retpoline tag to VERMAGIC
|
||||
- [x86] intel_rdt/cqm: Prevent use after free
|
||||
- [x86] mm/pkeys: Fix fill_sig_info_pkey
|
||||
- [x86] idt: Mark IDT tables __initconst
|
||||
|
@ -383,22 +383,252 @@ linux (4.14.15-1) UNRELEASED; urgency=medium
|
|||
- mm, page_vma_mapped: Drop faulty pointer arithmetics in check_pte()
|
||||
- [arm64, armhf] net: mvpp2: do not disable GMAC padding
|
||||
- [mips]: AR7: ensure the port type's FCR value is used
|
||||
https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.14.16
|
||||
- mm, page_alloc: fix potential false positive in __zone_watermark_ok
|
||||
- xfrm: Fix a race in the xdst pcpu cache.
|
||||
- Input: xpad - add support for PDP Xbox One controllers
|
||||
- Input: trackpoint - force 3 buttons if 0 button is reported
|
||||
- Input: trackpoint - only expose supported controls for Elan, ALPS and
|
||||
NXP
|
||||
- Btrfs: fix stale entries in readdir
|
||||
- [s390x] KVM: add proper locking for CMMA migration bitmap
|
||||
- [arm*] net: bpf: avoid 'bx' instruction on non-Thumb capable CPUs
|
||||
- [arm*] net: bpf: fix tail call jumps
|
||||
- [arm*] net: bpf: fix stack alignment
|
||||
- [arm*] net: bpf: move stack documentation
|
||||
- [arm*] net: bpf: correct stack layout documentation
|
||||
- [arm*] net: bpf: fix register saving
|
||||
- [arm*] net: bpf: fix LDX instructions
|
||||
- [arm*] net: bpf: clarify tail_call index
|
||||
- [arm64,armhf] drm/vc4: Fix NULL pointer dereference in
|
||||
vc4_save_hang_state()
|
||||
- net: Allow neigh contructor functions ability to modify the primary_key
|
||||
- ipv4: Make neigh lookup keys for loopback/point-to-point devices be
|
||||
INADDR_ANY
|
||||
- dccp: don't restart ccid2_hc_tx_rto_expire() if sk in closed state
|
||||
- ipv6: Fix getsockopt() for sockets with default IPV6_AUTOFLOWLABEL
|
||||
- ipv6: fix udpv6 sendmsg crash caused by too small MTU
|
||||
- ipv6: ip6_make_skb() needs to clear cork.base.dst
|
||||
- lan78xx: Fix failure in USB Full Speed
|
||||
- net: igmp: fix source address check for IGMPv3 reports
|
||||
- net: qdisc_pkt_len_init() should be more robust
|
||||
- net: tcp: close sock if net namespace is exiting
|
||||
- net/tls: Fix inverted error codes to avoid endless loop
|
||||
- net: vrf: Add support for sends to local broadcast address
|
||||
- pppoe: take ->needed_headroom of lower device into account on xmit
|
||||
- r8169: fix memory corruption on retrieval of hardware statistics.
|
||||
- sctp: do not allow the v4 socket to bind a v4mapped v6 address
|
||||
- sctp: return error if the asoc has been peeled off in
|
||||
sctp_wait_for_sndbuf
|
||||
- tipc: fix a memory leak in tipc_nl_node_get_link()
|
||||
- {net,ib}/mlx5: Don't disable local loopback multicast traffic when
|
||||
needed
|
||||
- net/mlx5: Fix get vector affinity helper function
|
||||
- ppp: unlock all_ppp_mutex before registering device
|
||||
- be2net: restore properly promisc mode after queues reconfiguration
|
||||
- ip6_gre: init dev->mtu and dev->hard_header_len correctly
|
||||
- gso: validate gso_type in GSO handlers
|
||||
- tun: fix a memory leak for tfile->tx_array
|
||||
- flow_dissector: properly cap thoff field
|
||||
- sctp: reinit stream if stream outcnt has been change by sinit in sendmsg
|
||||
- netlink: extack needs to be reset each time through loop
|
||||
- net/mlx5e: Fix fixpoint divide exception in mlx5e_am_stats_compare
|
||||
- nfp: use the correct index for link speed table
|
||||
- netlink: reset extack earlier in netlink_rcv_skb
|
||||
- net/tls: Only attach to sockets in ESTABLISHED state
|
||||
- tls: fix sw_ctx leak
|
||||
- tls: return -EBUSY if crypto_info is already set
|
||||
- tls: reset crypto_info when do_tls_setsockopt_tx fails
|
||||
- net: ipv4: Make "ip route get" match iif lo rules again.
|
||||
- vmxnet3: repair memory leak
|
||||
- perf/x86/amd/power: Do not load AMD power module on !AMD platforms
|
||||
- [x86] microcode/intel: Extend BDW late-loading further with LLC size
|
||||
check
|
||||
- [x86] microcode: Fix again accessing initrd after having been freed
|
||||
- [x86] mm/64: Fix vmapped stack syncing on very-large-memory 4-level
|
||||
systems
|
||||
- hrtimer: Reset hrtimer cpu base proper on CPU hotplug
|
||||
- bpf: introduce BPF_JIT_ALWAYS_ON config
|
||||
- bpf: fix divides by zero
|
||||
- bpf: fix 32-bit divide by zero
|
||||
- bpf: reject stores into ctx via st and xadd
|
||||
- [arm64] bpf: fix stack_depth tracking in combination with tail calls
|
||||
- cpufreq: governor: Ensure sufficiently large sampling intervals
|
||||
- nfsd: auth: Fix gid sorting when rootsquash enabled (CVE-2018-1000028)
|
||||
https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.14.17
|
||||
- futex: Fix OWNER_DEAD fixup
|
||||
- loop: fix concurrent lo_open/lo_release (CVE-2018-5344)
|
||||
- [x86] KVM: Fix CPUID function for word 6 (80000001_ECX)
|
||||
- gpio: Fix kernel stack leak to userspace
|
||||
- ALSA: hda - Reduce the suspend time consumption for ALC256
|
||||
- crypto: ecdh - fix typo in KPP dependency of CRYPTO_ECDH
|
||||
- [x86] crypto: aesni - handle zero length dst buffer
|
||||
- [x86] crypto: aesni - fix typo in generic_gcmaes_decrypt
|
||||
- crypto: gcm - add GCM IV size constant
|
||||
- [x86] crypto: aesni - Use GCM IV size constant
|
||||
- [x86] crypto: aesni - add wrapper for generic gcm(aes)
|
||||
- [x86] crypto: aesni - Fix out-of-bounds access of the data buffer in
|
||||
generic-gcm-aesni
|
||||
- [x86] crypto: aesni - Fix out-of-bounds access of the AAD buffer in
|
||||
generic-gcm-aesni
|
||||
- [arm64] crypto: inside-secure - fix hash when length is a multiple of a
|
||||
block
|
||||
- [arm64] crypto: inside-secure - avoid unmapping DMA memory that was not
|
||||
mapped
|
||||
- crypto: sha3-generic - fixes for alignment and big endian operation
|
||||
- crypto: af_alg - whitelist mask and type
|
||||
- HID: wacom: EKR: ensure devres groups at higher indexes are released
|
||||
- HID: wacom: Fix reporting of touch toggle (WACOM_HID_WD_MUTE_DEVICE)
|
||||
events
|
||||
- igb: Free IRQs when device is hotplugged
|
||||
- ima/policy: fix parsing of fsuuid
|
||||
- scsi: aacraid: Fix udev inquiry race condition
|
||||
- scsi: aacraid: Fix hang in kdump
|
||||
- VFS: Handle lazytime in do_mount()
|
||||
- [arm64,armhf] drm/vc4: Account for interrupts in flight
|
||||
- btrfs: Fix transaction abort during failure in btrfs_rm_dev_item
|
||||
- Btrfs: bail out gracefully rather than BUG_ON
|
||||
- cpupowerutils: bench - Fix cpu online check
|
||||
- cpupower : Fix cpupower working when cpu0 is offline
|
||||
- [x86] KVM: nVMX/nSVM: Don't intercept #UD when running L2
|
||||
- [x86] KVM: emulator: Return to user-mode on L1 CPL=0 emulation failure
|
||||
- [x86] KVM: Don't re-execute instruction when not passing CR2 value
|
||||
- [x86] KVM: Fix operand/address-size during instruction decoding
|
||||
- [x86] KVM: nVMX: Fix mmu context after VMLAUNCH/VMRESUME failure
|
||||
- [x86] KVM: fix em_fxstor() sleeping while in atomic
|
||||
- [x86] KVM: ioapic: Fix level-triggered EOI and IOAPIC reconfigure race
|
||||
- [x86] KVM: ioapic: Clear Remote IRR when entry is switched to
|
||||
edge-triggered
|
||||
- [x86] KVM: ioapic: Preserve read-only values in the redirection table
|
||||
- [x86] KVM: nVMX: Fix vmx_check_nested_events() return value in case an
|
||||
event was reinjected to L2
|
||||
- nvme-fabrics: introduce init command check for a queue that is not alive
|
||||
- nvme-fc: check if queue is ready in queue_rq
|
||||
- nvme-loop: check if queue is ready in queue_rq
|
||||
- nvme-pci: disable APST on Samsung SSD 960 EVO + ASUS PRIME B350M-A
|
||||
- nvme-pci: avoid hmb desc array idx out-of-bound when hmmaxd set.
|
||||
- nvmet-fc: correct ref counting error when deferred rcv used
|
||||
- [s390x] topology: fix compile error in file arch/s390/kernel/smp.c
|
||||
- [s390x] zcrypt: Fix wrong comparison leading to strange load balancing
|
||||
- ACPI / bus: Leave modalias empty for devices which are not present
|
||||
- null_blk: fix dev->badblocks leak
|
||||
- [s390x] fix alloc_pgste check in init_new_context again
|
||||
- rxrpc: The mutex lock returned by rxrpc_accept_call() needs releasing
|
||||
- rxrpc: Provide a different lockdep key for call->user_mutex for kernel
|
||||
calls
|
||||
- rxrpc: Fix service endpoint expiry
|
||||
- bcache: check return value of register_shrinker
|
||||
- drm/amdgpu: Fix SDMA load/unload sequence on HWS disabled mode
|
||||
- [x86] drm/amdkfd: Fix SDMA ring buffer size calculation
|
||||
- [x86] drm/amdkfd: Fix SDMA oversubsription handling
|
||||
- uapi: fix linux/kfd_ioctl.h userspace compilation errors
|
||||
- nvme-rdma: don't complete requests before a send work request has
|
||||
completed
|
||||
- openvswitch: fix the incorrect flow action alloc size
|
||||
- [armhf] drm/rockchip: dw-mipi-dsi: fix possible un-balanced runtime PM
|
||||
enable
|
||||
- mac80211: use QoS NDP for AP probing
|
||||
- mac80211: fix the update of path metric for RANN frame
|
||||
- btrfs: fix deadlock when writing out space cache
|
||||
- sctp: only allow the asoc reset when the asoc outq is empty
|
||||
- sctp: avoid flushing unsent queue when doing asoc reset
|
||||
- sctp: set sender next_tsn for the old result with ctsn_ack_point plus 1
|
||||
- reiserfs: remove unneeded i_version bump
|
||||
- [x86] KVM: Fix softlockup when get the current kvmclock
|
||||
- [x86] KVM: VMX: Fix rflags cache during vCPU reset
|
||||
- Btrfs: fix list_add corruption and soft lockups in fsync
|
||||
- KVM: Let KVM_SET_SIGNAL_MASK work as advertised
|
||||
- xfs: always free inline data before resetting inode fork during ifree
|
||||
- xfs: log recovery should replay deferred ops in order
|
||||
- xen-netfront: remove warning when unloading module
|
||||
- nfsd: CLOSE SHOULD return the invalid special stateid for NFSv4.x (x>0)
|
||||
- nfsd: Ensure we check stateid validity in the seqid operation checks
|
||||
- grace: replace BUG_ON by WARN_ONCE in exit_net hook
|
||||
- nfsd: check for use of the closed special stateid
|
||||
- race of lockd inetaddr notifiers vs nlmsvc_rqst change
|
||||
- lockd: fix "list_add double add" caused by legacy signal interface
|
||||
- quota: propagate error from __dquot_initialize
|
||||
- [arm64,armhf] net: mvpp2: fix the txq_init error path
|
||||
- [arm64] net: phy: marvell10g: fix the PHY id mask
|
||||
- bnxt_en: Fix an error handling path in 'bnxt_get_module_eeprom()'
|
||||
- Btrfs: incremental send, fix wrong unlink path after renaming file
|
||||
- nvme-pci: fix NULL pointer dereference in nvme_free_host_mem()
|
||||
- xfs: fortify xfs_alloc_buftarg error handling
|
||||
- drm/amdgpu: don't try to move pinned BOs
|
||||
- quota: Check for register_shrinker() failure.
|
||||
- SUNRPC: Allow connect to return EHOSTUNREACH
|
||||
- kmemleak: add scheduling point to kmemleak_scan()
|
||||
- [armhf] drm/omap: Fix error handling path in 'omap_dmm_probe()'
|
||||
- [armhf] drm/omap: displays: panel-dpi: add backlight dependency
|
||||
- xfs: ubsan fixes
|
||||
- xfs: Properly retry failed dquot items in case of error during buffer
|
||||
writeback
|
||||
- perf/core: Fix memory leak triggered by perf --namespace
|
||||
- scsi: aacraid: Prevent crash in case of free interrupt during scsi EH
|
||||
path
|
||||
- scsi: ufs: ufshcd: fix potential NULL pointer dereference in
|
||||
ufshcd_config_vreg
|
||||
- iwlwifi: mvm: fix the TX queue hang timeout for MONITOR vif type
|
||||
- iwlwifi: fix access to prph when transport is stopped
|
||||
- [arm*] dts: NSP: Disable AHCI controller for HR NSP boards
|
||||
- [arm*] ARM: dts: NSP: Fix PPI interrupt types
|
||||
- media: usbtv: add a new usbid
|
||||
- [x86] xen: Support early interrupts in xen pv guests
|
||||
- usb: gadget: don't dereference g until after it has been null checked
|
||||
- staging: rtl8188eu: Fix incorrect response to SIOCGIWESSID
|
||||
- [arm64,armhf] drm/vc4: Move IRQ enable to PM path
|
||||
- [x86] KVM: emulate #UD while in guest mode
|
||||
- [x86] staging: lustre: separate a connection destroy from free struct
|
||||
kib_conn
|
||||
- tty: fix data race between tty_init_dev and flush of buf
|
||||
- USB: serial: pl2303: new device id for Chilitag
|
||||
- USB: cdc-acm: Do not log urb submission errors on disconnect
|
||||
- CDC-ACM: apply quirk for card reader
|
||||
- USB: serial: io_edgeport: fix possible sleep-in-atomic
|
||||
- usbip: prevent bind loops on devices attached to vhci_hcd
|
||||
- usbip: list: don't list devices attached to vhci_hcd
|
||||
- USB: serial: simple: add Motorola Tetra driver
|
||||
- usb: f_fs: Prevent gadget unbind if it is already unbound
|
||||
- usb: uas: unconditionally bring back host after reset
|
||||
- usb/gadget: Fix "high bandwidth" check in usb_gadget_ep_match_desc()
|
||||
- [x86] mei: me: allow runtime pm for platform with D0i3
|
||||
- serial: 8250_of: fix return code when probe function fails to get reset
|
||||
- serial: 8250_uniphier: fix error return code in uniphier_uart_probe()
|
||||
- [armhf] serial: imx: Only wakeup via RTSDEN bit if the system has
|
||||
RTS/CTS
|
||||
- [armhf] spi: imx: do not access registers while clocks disabled
|
||||
- iio: adc: stm32: fix scan of multiple channels with DMA
|
||||
- iio: chemical: ccs811: Fix output of IIO_CONCENTRATION channels
|
||||
- test_firmware: fix missing unlock on error in
|
||||
config_num_requests_store()
|
||||
- Input: synaptics-rmi4 - unmask F03 interrupts when port is opened
|
||||
- Input: synaptics-rmi4 - do not delete interrupt memory too early
|
||||
- [x86] efi: Clarify that reset attack mitigation needs appropriate
|
||||
userspace
|
||||
|
||||
[ Salvatore Bonaccorso ]
|
||||
* loop: fix concurrent lo_open/lo_release (CVE-2018-5344)
|
||||
* Revert "module: Add retpoline tag to VERMAGIC"
|
||||
* [rt] Update to 4.14.15-rt11
|
||||
* nfsd: auth: Fix gid sorting when rootsquash enabled (CVE-2018-1000028)
|
||||
* [rt] Update to 4.14.15-rt13
|
||||
* crypto: ecc - Fix NULL pointer deref. on no default_rng (Closes: #886556)
|
||||
* mac80211: Avoid ABI change in 4.14.17
|
||||
* rxrpc: Avoid ABI change in 4.14.17
|
||||
|
||||
[ Ben Hutchings ]
|
||||
* bpf: Avoid ABI change in 4.14.14
|
||||
* usbip: Reduce USBIP_VHCI_HC_PORTS to 15, the maximum allowed for SuperSpeed
|
||||
hubs (Closes: #878866)
|
||||
* [x86] Add versioned build-dependency on gcc-7 for retpoline support
|
||||
* [x86] linux-compiler-gcc-7-x86: Add versioned dependency on gcc-7 for
|
||||
retpoline support
|
||||
* linux-compiler-gcc-7-{arm,s390,x86}: Remove specific (and wrong) compiler
|
||||
version from description (Closes: #883363)
|
||||
* [x86] linux-headers: Depend on updated linux-compiler-gcc-7-x86
|
||||
|
||||
[ Riku Voipio ]
|
||||
* [arm64] build in reset drivers
|
||||
* [arm64] enable COMMON_CLK_HI655X so wifi and bluetooth work on Hikey
|
||||
|
||||
-- Salvatore Bonaccorso <carnil@debian.org> Tue, 16 Jan 2018 20:50:23 +0100
|
||||
-- Salvatore Bonaccorso <carnil@debian.org> Wed, 14 Feb 2018 06:56:06 +0100
|
||||
|
||||
linux (4.14.13-1) unstable; urgency=medium
|
||||
|
||||
|
|
|
@ -15,7 +15,8 @@ install-stem: vmlinuz
|
|||
breaks: xserver-xorg-input-vmmouse (<< 1:13.0.99)
|
||||
|
||||
[relations]
|
||||
headers%gcc-7: linux-compiler-gcc-7-x86
|
||||
gcc-7: gcc-7 (>= 7.2.0-20~) <!stage1 !cross>, gcc-7-x86-64-linux-gnu (>= 7.2.0-20~) <!stage1 cross>
|
||||
headers%gcc-7: linux-compiler-gcc-7-x86 (>= 4.14.17-1~)
|
||||
|
||||
[amd64_description]
|
||||
hardware: 64-bit PCs
|
||||
|
|
|
@ -120,6 +120,7 @@ CONFIG_IPMI_SSIF=m
|
|||
##
|
||||
## file: drivers/clk/Kconfig
|
||||
##
|
||||
CONFIG_COMMON_CLK_HI655X=y
|
||||
CONFIG_COMMON_CLK_RK808=y
|
||||
CONFIG_COMMON_CLK_XGENE=y
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@ ignore-changes:
|
|||
bpf_analyzer
|
||||
cxl_*
|
||||
dax_flush
|
||||
ieee80211_nullfunc_get
|
||||
inet_add_protocol
|
||||
inet_del_protocol
|
||||
iommu_device_*
|
||||
|
@ -39,6 +40,7 @@ ignore-changes:
|
|||
module:fs/nfs/**
|
||||
module:net/ceph/libceph
|
||||
module:net/l2tp/**
|
||||
module:net/rxrpc/rxrpc
|
||||
module:sound/core/seq/**
|
||||
module:sound/firewire/snd-firewire-lib
|
||||
# btree library is only selected by few drivers so not useful OOT
|
||||
|
|
|
@ -20,7 +20,8 @@ install-stem: vmlinuz
|
|||
breaks: xserver-xorg-input-vmmouse (<< 1:13.0.99)
|
||||
|
||||
[relations]
|
||||
headers%gcc-7: linux-compiler-gcc-7-x86
|
||||
gcc-7: gcc-7 (>= 7.2.0-20~) <!stage1 !cross>, gcc-7-i686-linux-gnu (>= 7.2.0-20~) <!stage1 cross>
|
||||
headers%gcc-7: linux-compiler-gcc-7-x86 (>= 4.14.17-1~)
|
||||
|
||||
[686_description]
|
||||
hardware: older PCs
|
||||
|
|
|
@ -17,6 +17,10 @@ properly distinguish and report the zero and negative cases.
|
|||
Fixes: ac5a181d065d ("cpupower: Add cpuidle parts into library")
|
||||
Fixes: 53d1cd6b125f ("cpupowerutils: bench - Fix cpu online check")
|
||||
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
||||
[carnil: Update/Refresh patch for 4.14.17: The issue with the
|
||||
incorrect check has been fixed with upstream commit 53d1cd6b125f.
|
||||
Keep in the patch the distinction and report for the zero and
|
||||
negative cases.]
|
||||
---
|
||||
--- a/tools/power/cpupower/bench/system.c
|
||||
+++ b/tools/power/cpupower/bench/system.c
|
||||
|
|
37
debian/patches/bugfix/all/crypto-ecc-fix-null-pointer-deref.-on-no-default_rng.patch
vendored
Normal file
37
debian/patches/bugfix/all/crypto-ecc-fix-null-pointer-deref.-on-no-default_rng.patch
vendored
Normal file
|
@ -0,0 +1,37 @@
|
|||
From: Pierre <pinaraf@pinaraf.info>
|
||||
Date: Sun, 12 Nov 2017 15:24:32 +0100
|
||||
Subject: crypto: ecc - Fix NULL pointer deref. on no default_rng
|
||||
Origin: https://git.kernel.org/linus/4c0e22c90510308433272d7ba281b1eb4eda8209
|
||||
Bug-Debian: https://bugs.debian.org/886556
|
||||
|
||||
If crypto_get_default_rng returns an error, the
|
||||
function ecc_gen_privkey should return an error.
|
||||
Instead, it currently tries to use the default_rng
|
||||
nevertheless, thus creating a kernel panic with a
|
||||
NULL pointer dereference.
|
||||
Returning the error directly, as was supposedly
|
||||
intended when looking at the code, fixes this.
|
||||
|
||||
Signed-off-by: Pierre Ducroquet <pinaraf@pinaraf.info>
|
||||
Reviewed-by: PrasannaKumar Muralidharan <prasannatsmkumar@gmail.com>
|
||||
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
---
|
||||
crypto/ecc.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/crypto/ecc.c b/crypto/ecc.c
|
||||
index 633a9bcdc574..18f32f2a5e1c 100644
|
||||
--- a/crypto/ecc.c
|
||||
+++ b/crypto/ecc.c
|
||||
@@ -964,7 +964,7 @@ int ecc_gen_privkey(unsigned int curve_id, unsigned int ndigits, u64 *privkey)
|
||||
* DRBG with a security strength of 256.
|
||||
*/
|
||||
if (crypto_get_default_rng())
|
||||
- err = -EFAULT;
|
||||
+ return -EFAULT;
|
||||
|
||||
err = crypto_rng_get_bytes(crypto_default_rng, (u8 *)priv, nbytes);
|
||||
crypto_put_default_rng();
|
||||
--
|
||||
2.11.0
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
Date: Wed, 20 Dec 2017 17:12:50 +0100
|
||||
Subject: [PATCH 01/29] timers: Use static keys for migrate_enable/nohz_active
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
The members migrate_enable and nohz_active in the timer/hrtimer per CPU
|
||||
bases have been introduced to avoid accessing global variables for these
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
From: Tom Zanussi <tom.zanussi@linux.intel.com>
|
||||
Date: Thu, 21 Dec 2017 10:02:23 -0600
|
||||
Date: Mon, 15 Jan 2018 20:51:35 -0600
|
||||
Subject: [PATCH 01/37] tracing: Move hist trigger Documentation to
|
||||
histogram.txt
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
The hist trigger Documentation takes up a large part of events.txt -
|
||||
since it will be getting even larger, move it to a separate file.
|
||||
|
|
|
@ -2,7 +2,7 @@ From: Steven Rostedt <rostedt@goodmis.org>
|
|||
Date: Fri, 22 Sep 2017 14:58:15 -0500
|
||||
Subject: [PATCH 01/42] tracing: Steve's unofficial trace_recursive_lock()
|
||||
patch
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
On Tue, 5 Sep 2017 16:57:52 -0500
|
||||
Tom Zanussi <tom.zanussi@linux.intel.com> wrote:
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
Date: Wed, 20 Dec 2017 17:12:51 +0100
|
||||
Subject: [PATCH 02/29] hrtimer: Correct blantanly wrong comment
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
The protection of a hrtimer which runs its callback against migration to a
|
||||
different CPU has nothing to do with hard interrupt context.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Tom Zanussi <tom.zanussi@linux.intel.com>
|
||||
Date: Thu, 21 Dec 2017 10:02:24 -0600
|
||||
Date: Mon, 15 Jan 2018 20:51:36 -0600
|
||||
Subject: [PATCH 02/37] tracing: Add Documentation for log2 modifier
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
Add a line for the log2 modifier, to keep it aligned with
|
||||
tracing/README.
|
||||
|
|
|
@ -2,7 +2,7 @@ From: "Steven Rostedt (VMware)" <rostedt@goodmis.org>
|
|||
Date: Fri, 22 Sep 2017 14:58:16 -0500
|
||||
Subject: [PATCH 02/42] tracing: Reverse the order of trace_types_lock and
|
||||
event_mutex
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
In order to make future changes where we need to call
|
||||
tracing_set_clock() from within an event command, the order of
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Anna-Maria Gleixner <anna-maria@linutronix.de>
|
||||
Date: Wed, 20 Dec 2017 17:12:52 +0100
|
||||
Subject: [PATCH 03/29] hrtimer: Fix kerneldoc for struct hrtimer_cpu_base
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
The sequence '/**' marks the start of a struct description. Add the
|
||||
missing second asterisk. While at it adapt the ordering of the struct
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Vedang Patel <vedang.patel@intel.com>
|
||||
Date: Thu, 21 Dec 2017 10:02:25 -0600
|
||||
Date: Mon, 15 Jan 2018 20:51:37 -0600
|
||||
Subject: [PATCH 03/37] tracing: Add support to detect and avoid duplicates
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
A duplicate in the tracing_map hash table is when 2 different entries
|
||||
have the same key and, as a result, the key_hash. This is possible due
|
||||
|
|
|
@ -2,7 +2,7 @@ From: Anna-Maria Gleixner <anna-maria@linutronix.de>
|
|||
Date: Wed, 20 Dec 2017 17:12:53 +0100
|
||||
Subject: [PATCH 04/29] hrtimer: Cleanup clock argument in
|
||||
schedule_hrtimeout_range_clock()
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
schedule_hrtimeout_range_clock() uses an integer for the clock id
|
||||
instead of the predefined type "clockid_t". The ID of the clock is
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Vedang Patel <vedang.patel@intel.com>
|
||||
Date: Thu, 21 Dec 2017 10:02:26 -0600
|
||||
Date: Mon, 15 Jan 2018 20:51:38 -0600
|
||||
Subject: [PATCH 04/37] tracing: Remove code which merges duplicates
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
We now have the logic to detect and remove duplicates in the
|
||||
tracing_map hash table. The code which merges duplicates in the
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Tom Zanussi <tom.zanussi@linux.intel.com>
|
||||
Date: Fri, 22 Sep 2017 14:58:18 -0500
|
||||
Subject: [PATCH 04/42] tracing: Remove lookups from tracing_map hitcount
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
Lookups inflate the hitcount, making it essentially useless. Only
|
||||
inserts and updates should really affect the hitcount anyway, so
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Anna-Maria Gleixner <anna-maria@linutronix.de>
|
||||
Date: Wed, 20 Dec 2017 17:12:54 +0100
|
||||
Subject: [PATCH 05/29] hrtimer: Fix hrtimer function description
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
The hrtimer_start[_range_ns]() starts a timer reliable on this CPU only
|
||||
when HRTIMER_MODE_PINNED is set. Furthermore the HRTIMER_MODE_PINNED mode
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
From: Tom Zanussi <tom.zanussi@linux.intel.com>
|
||||
Date: Thu, 21 Dec 2017 10:02:27 -0600
|
||||
Date: Mon, 15 Jan 2018 20:51:39 -0600
|
||||
Subject: [PATCH 05/37] ring-buffer: Add interface for setting absolute time
|
||||
stamps
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
Define a new function, tracing_set_time_stamp_abs(), which can be used
|
||||
to enable or disable the use of absolute timestamps rather than time
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Tom Zanussi <tom.zanussi@linux.intel.com>
|
||||
Date: Fri, 22 Sep 2017 14:58:19 -0500
|
||||
Subject: [PATCH 05/42] tracing: Increase tracing map KEYS_MAX size
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
The current default for the number of subkeys in a compound key is 2,
|
||||
which is too restrictive. Increase it to a more realistic value of 3.
|
||||
|
|
|
@ -2,7 +2,7 @@ From: Anna-Maria Gleixner <anna-maria@linutronix.de>
|
|||
Date: Wed, 20 Dec 2017 17:12:55 +0100
|
||||
Subject: [PATCH 06/29] hrtimer: Ensure POSIX compliance (relative
|
||||
CLOCK_REALTIME hrtimers)
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
POSIX specification defines, that relative CLOCK_REALTIME timers are not
|
||||
affected by clock modifications. Those timers have to use CLOCK_MONOTONIC
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
From: Tom Zanussi <tom.zanussi@linux.intel.com>
|
||||
Date: Thu, 21 Dec 2017 10:02:28 -0600
|
||||
Date: Mon, 15 Jan 2018 20:51:40 -0600
|
||||
Subject: [PATCH 06/37] ring-buffer: Redefine the unimplemented
|
||||
RINGBUF_TYPE_TIME_STAMP
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
RINGBUF_TYPE_TIME_STAMP is defined but not used, and from what I can
|
||||
gather was reserved for something like an absolute timestamp feature
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Tom Zanussi <tom.zanussi@linux.intel.com>
|
||||
Date: Fri, 22 Sep 2017 14:58:20 -0500
|
||||
Subject: [PATCH 06/42] tracing: Make traceprobe parsing code reusable
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
traceprobe_probes_write() and traceprobe_command() actually contain
|
||||
nothing that ties them to kprobes - the code is generically useful for
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Anna-Maria Gleixner <anna-maria@linutronix.de>
|
||||
Date: Wed, 20 Dec 2017 17:12:56 +0100
|
||||
Subject: [PATCH 07/29] hrtimer: Cleanup hrtimer_mode enum
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
It's not obvious that the HRTIMER_MODE variants are bit combinations
|
||||
because all modes are hard coded constants.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Tom Zanussi <tom.zanussi@linux.intel.com>
|
||||
Date: Thu, 21 Dec 2017 10:02:29 -0600
|
||||
Date: Mon, 15 Jan 2018 20:51:41 -0600
|
||||
Subject: [PATCH 07/37] tracing: Add timestamp_mode trace file
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
Add a new option flag indicating whether or not the ring buffer is in
|
||||
'absolute timestamp' mode.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Tom Zanussi <tom.zanussi@linux.intel.com>
|
||||
Date: Fri, 22 Sep 2017 14:58:21 -0500
|
||||
Subject: [PATCH 07/42] tracing: Clean up hist_field_flags enum
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
As we add more flags, specifying explicit integers for the flag values
|
||||
becomes more unwieldy and error-prone - switch them over to left-shift
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Tom Zanussi <tom.zanussi@linux.intel.com>
|
||||
Date: Fri, 22 Sep 2017 14:58:22 -0500
|
||||
Subject: [PATCH 08/42] tracing: Add hist_field_name() accessor
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
In preparation for hist_fields that won't be strictly based on
|
||||
trace_event_fields, add a new hist_field_name() accessor to allow that
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
From: Tom Zanussi <tom.zanussi@linux.intel.com>
|
||||
Date: Thu, 21 Dec 2017 10:02:30 -0600
|
||||
Date: Mon, 15 Jan 2018 20:51:42 -0600
|
||||
Subject: [PATCH 08/37] tracing: Give event triggers access to
|
||||
ring_buffer_event
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
The ring_buffer event can provide a timestamp that may be useful to
|
||||
various triggers - pass it into the handlers for that purpose.
|
||||
|
|
|
@ -2,7 +2,7 @@ From: Anna-Maria Gleixner <anna-maria@linutronix.de>
|
|||
Date: Wed, 20 Dec 2017 17:12:57 +0100
|
||||
Subject: [PATCH 08/29] tracing/hrtimer: Take all clock bases and modes into
|
||||
account
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
So far only CLOCK_MONOTONIC and CLOCK_REALTIME were taken into account as
|
||||
well as HRTIMER_MODE_ABS/REL in hrtimer_init tracepoint. The query for
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
From: Tom Zanussi <tom.zanussi@linux.intel.com>
|
||||
Date: Thu, 21 Dec 2017 10:02:31 -0600
|
||||
Date: Mon, 15 Jan 2018 20:51:43 -0600
|
||||
Subject: [PATCH 09/37] tracing: Add ring buffer event param to hist field
|
||||
functions
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
Some events such as timestamps require access to a ring_buffer_event
|
||||
struct; add a param so that hist field functions can access that.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Tom Zanussi <tom.zanussi@linux.intel.com>
|
||||
Date: Fri, 22 Sep 2017 14:58:23 -0500
|
||||
Subject: [PATCH 09/42] tracing: Reimplement log2
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
log2 as currently implemented applies only to u64 trace_event_field
|
||||
derived fields, and assumes that anything it's applied to is a u64
|
||||
|
|
|
@ -2,7 +2,7 @@ From: Anna-Maria Gleixner <anna-maria@linutronix.de>
|
|||
Date: Wed, 20 Dec 2017 17:12:58 +0100
|
||||
Subject: [PATCH 09/29] tracing/hrtimer: Print hrtimer mode in hrtimer_start
|
||||
tracepoint
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
The hrtimer_start tracepoint lacks the mode information. The mode is
|
||||
important because consecutive starts can switch from ABS to REL or from
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Anna-Maria Gleixner <anna-maria@linutronix.de>
|
||||
Date: Wed, 20 Dec 2017 17:12:59 +0100
|
||||
Subject: [PATCH 10/29] hrtimer: Switch for loop to _ffs() evaluation
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
Looping over all clock bases to find active bits is suboptimal if not all
|
||||
bases are active.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Tom Zanussi <tom.zanussi@linux.intel.com>
|
||||
Date: Thu, 21 Dec 2017 10:02:32 -0600
|
||||
Date: Mon, 15 Jan 2018 20:51:44 -0600
|
||||
Subject: [PATCH 10/37] tracing: Break out hist trigger assignment parsing
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
This will make it easier to add variables, and makes the parsing code
|
||||
cleaner regardless.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Anna-Maria Gleixner <anna-maria@linutronix.de>
|
||||
Date: Wed, 20 Dec 2017 17:13:00 +0100
|
||||
Subject: [PATCH 11/29] hrtimer: Store running timer in hrtimer_clock_base
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
The pointer to the currently running timer is stored in hrtimer_cpu_base
|
||||
before the base lock is dropped and the callback is invoked.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Tom Zanussi <tom.zanussi@linux.intel.com>
|
||||
Date: Thu, 21 Dec 2017 10:02:33 -0600
|
||||
Date: Mon, 15 Jan 2018 20:51:45 -0600
|
||||
Subject: [PATCH 11/37] tracing: Add hist trigger timestamp support
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
Add support for a timestamp event field. This is actually a 'pseudo-'
|
||||
event field in that it behaves like it's part of the event record, but
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Anna-Maria Gleixner <anna-maria@linutronix.de>
|
||||
Date: Wed, 20 Dec 2017 17:13:01 +0100
|
||||
Subject: [PATCH 12/29] hrtimer: Make room in struct hrtimer_cpu_base
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
The upcoming softirq based hrtimers support requires an additional field in
|
||||
the hrtimer_cpu_base struct, which would grow the struct size beyond a
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
From: Tom Zanussi <tom.zanussi@linux.intel.com>
|
||||
Date: Thu, 21 Dec 2017 10:02:34 -0600
|
||||
Date: Mon, 15 Jan 2018 20:51:46 -0600
|
||||
Subject: [PATCH 12/37] tracing: Add per-element variable support to
|
||||
tracing_map
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
In order to allow information to be passed between trace events, add
|
||||
support for per-element variables to tracing_map. This provides a
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Anna-Maria Gleixner <anna-maria@linutronix.de>
|
||||
Date: Wed, 20 Dec 2017 17:13:02 +0100
|
||||
Subject: [PATCH 13/29] hrtimer: Reduce conditional code (hres_active)
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
The hrtimer_cpu_base struct has the CONFIG_HIGH_RES_TIMERS conditional
|
||||
struct member hres_active. All related functions to this member are
|
||||
|
@ -123,15 +123,15 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
* Reprogram the event source with checking both queues for the
|
||||
* next event
|
||||
* Called with interrupts disabled and base->lock held
|
||||
@@ -661,7 +662,6 @@ static void hrtimer_reprogram(struct hrt
|
||||
static inline void hrtimer_init_hres(struct hrtimer_cpu_base *base)
|
||||
@@ -662,7 +663,6 @@ static inline void hrtimer_init_hres(str
|
||||
{
|
||||
base->expires_next = KTIME_MAX;
|
||||
base->hang_detected = 0;
|
||||
- base->hres_active = 0;
|
||||
base->next_timer = NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -720,8 +720,6 @@ void clock_was_set_delayed(void)
|
||||
@@ -722,8 +722,6 @@ void clock_was_set_delayed(void)
|
||||
|
||||
#else
|
||||
|
||||
|
@ -140,9 +140,9 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
static inline int hrtimer_is_hres_enabled(void) { return 0; }
|
||||
static inline void hrtimer_switch_to_hres(void) { }
|
||||
static inline void
|
||||
@@ -1602,6 +1600,7 @@ int hrtimers_prepare_cpu(unsigned int cp
|
||||
}
|
||||
@@ -1605,6 +1603,7 @@ int hrtimers_prepare_cpu(unsigned int cp
|
||||
|
||||
cpu_base->active_bases = 0;
|
||||
cpu_base->cpu = cpu;
|
||||
+ cpu_base->hres_active = 0;
|
||||
hrtimer_init_hres(cpu_base);
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Tom Zanussi <tom.zanussi@linux.intel.com>
|
||||
Date: Thu, 21 Dec 2017 10:02:35 -0600
|
||||
Date: Mon, 15 Jan 2018 20:51:47 -0600
|
||||
Subject: [PATCH 13/37] tracing: Add hist_data member to hist_field
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
Allow hist_data access via hist_field. Some users of hist_fields
|
||||
require or will require more access to the associated hist_data.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Anna-Maria Gleixner <anna-maria@linutronix.de>
|
||||
Date: Wed, 20 Dec 2017 17:13:03 +0100
|
||||
Subject: [PATCH 14/29] hrtimer: Use accesor functions instead of direct access
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
__hrtimer_hres_active() is now available unconditionally. Replace the
|
||||
direct access to hrtimer_cpu_base.hres_active.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Tom Zanussi <tom.zanussi@linux.intel.com>
|
||||
Date: Thu, 21 Dec 2017 10:02:36 -0600
|
||||
Date: Mon, 15 Jan 2018 20:51:48 -0600
|
||||
Subject: [PATCH 14/37] tracing: Add usecs modifier for hist trigger timestamps
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
Appending .usecs onto a common_timestamp field will cause the
|
||||
timestamp value to be in microseconds instead of the default
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Anna-Maria Gleixner <anna-maria@linutronix.de>
|
||||
Date: Wed, 20 Dec 2017 17:13:04 +0100
|
||||
Subject: [PATCH 15/29] hrtimer: Make the remote enqueue check unconditional
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
hrtimer_cpu_base.expires_next is used to cache the next event armed in the
|
||||
timer hardware. The value is used to check whether an hrtimer can be
|
||||
|
@ -95,7 +95,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
}
|
||||
|
||||
static inline
|
||||
@@ -657,14 +652,6 @@ static void hrtimer_reprogram(struct hrt
|
||||
@@ -657,16 +652,6 @@ static void hrtimer_reprogram(struct hrt
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -104,13 +104,15 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
-static inline void hrtimer_init_hres(struct hrtimer_cpu_base *base)
|
||||
-{
|
||||
- base->expires_next = KTIME_MAX;
|
||||
- base->hang_detected = 0;
|
||||
- base->next_timer = NULL;
|
||||
-}
|
||||
-
|
||||
-/*
|
||||
* Retrigger next event is called after clock was set
|
||||
*
|
||||
* Called with interrupts disabled via on_each_cpu()
|
||||
@@ -729,7 +716,6 @@ static inline int hrtimer_reprogram(stru
|
||||
@@ -731,7 +716,6 @@ static inline int hrtimer_reprogram(stru
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
@ -118,8 +120,8 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
static inline void retrigger_next_event(void *arg) { }
|
||||
|
||||
#endif /* CONFIG_HIGH_RES_TIMERS */
|
||||
@@ -1601,7 +1587,7 @@ int hrtimers_prepare_cpu(unsigned int cp
|
||||
|
||||
@@ -1604,7 +1588,7 @@ int hrtimers_prepare_cpu(unsigned int cp
|
||||
cpu_base->active_bases = 0;
|
||||
cpu_base->cpu = cpu;
|
||||
cpu_base->hres_active = 0;
|
||||
- hrtimer_init_hres(cpu_base);
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Tom Zanussi <tom.zanussi@linux.intel.com>
|
||||
Date: Thu, 21 Dec 2017 10:02:37 -0600
|
||||
Date: Mon, 15 Jan 2018 20:51:49 -0600
|
||||
Subject: [PATCH 15/37] tracing: Add variable support to hist triggers
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
Add support for saving the value of a current event's event field by
|
||||
assigning it to a variable that can be read by a subsequent event.
|
||||
|
|
|
@ -2,7 +2,7 @@ From: Anna-Maria Gleixner <anna-maria@linutronix.de>
|
|||
Date: Wed, 20 Dec 2017 17:13:05 +0100
|
||||
Subject: [PATCH 16/29] hrtimer: Make hrtimer_cpu_base.next_timer handling
|
||||
unconditional
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
hrtimer_cpu_base.next_timer stores the pointer to the next expiring timer
|
||||
in a cpu base.
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
From: Tom Zanussi <tom.zanussi@linux.intel.com>
|
||||
Date: Thu, 21 Dec 2017 10:02:38 -0600
|
||||
Date: Mon, 15 Jan 2018 20:51:50 -0600
|
||||
Subject: [PATCH 16/37] tracing: Account for variables in named trigger
|
||||
compatibility
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
Named triggers must also have the same set of variables in order to be
|
||||
considered compatible - update the trigger match test to account for
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Anna-Maria Gleixner <anna-maria@linutronix.de>
|
||||
Date: Wed, 20 Dec 2017 17:13:06 +0100
|
||||
Subject: [PATCH 17/29] hrtimer: Make hrtimer_reprogramm() unconditional
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
hrtimer_reprogram() needs to be available unconditionally for softirq based
|
||||
hrtimers. Move the function and all required struct members out of the
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Tom Zanussi <tom.zanussi@linux.intel.com>
|
||||
Date: Thu, 21 Dec 2017 10:02:39 -0600
|
||||
Date: Mon, 15 Jan 2018 20:51:51 -0600
|
||||
Subject: [PATCH 17/37] tracing: Move get_hist_field_flags()
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
Move get_hist_field_flags() to make it more easily accessible for new
|
||||
code (and keep the move separate from new functionality).
|
||||
|
|
|
@ -2,7 +2,7 @@ From: Anna-Maria Gleixner <anna-maria@linutronix.de>
|
|||
Date: Wed, 20 Dec 2017 17:13:07 +0100
|
||||
Subject: [PATCH 18/29] hrtimer: Make hrtimer_force_reprogramm()
|
||||
unconditionally available
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
hrtimer_force_reprogram() needs to be available unconditionally for softirq
|
||||
based hrtimers. Move the function and all required struct members out of
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Tom Zanussi <tom.zanussi@linux.intel.com>
|
||||
Date: Thu, 21 Dec 2017 10:02:40 -0600
|
||||
Date: Mon, 15 Jan 2018 20:51:52 -0600
|
||||
Subject: [PATCH 18/37] tracing: Add simple expression support to hist triggers
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
Add support for simple addition, subtraction, and unary expressions
|
||||
(-(expr) and expr, where expr = b-a, a+b, a+b+c) to hist triggers, in
|
||||
|
@ -15,10 +15,12 @@ In the process, factor out some common code from key and value
|
|||
parsing.
|
||||
|
||||
Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com>
|
||||
[kbuild test robot fix, add static to parse_atom()]
|
||||
Signed-off-by: Fengguang Wu <fengguang.wu@intel.com>
|
||||
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
---
|
||||
kernel/trace/trace_events_hist.c | 482 +++++++++++++++++++++++++++++++++------
|
||||
1 file changed, 409 insertions(+), 73 deletions(-)
|
||||
kernel/trace/trace_events_hist.c | 487 +++++++++++++++++++++++++++++++++------
|
||||
1 file changed, 413 insertions(+), 74 deletions(-)
|
||||
|
||||
--- a/kernel/trace/trace_events_hist.c
|
||||
+++ b/kernel/trace/trace_events_hist.c
|
||||
|
@ -104,10 +106,24 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
|
||||
if (field_name == NULL)
|
||||
field_name = "";
|
||||
@@ -519,6 +566,95 @@ static const char *get_hist_field_flags(
|
||||
@@ -519,12 +566,104 @@ static const char *get_hist_field_flags(
|
||||
return flags_str;
|
||||
}
|
||||
|
||||
+static void expr_field_str(struct hist_field *field, char *expr)
|
||||
+{
|
||||
+ strcat(expr, hist_field_name(field, 0));
|
||||
+
|
||||
+ if (field->flags) {
|
||||
+ const char *flags_str = get_hist_field_flags(field);
|
||||
+
|
||||
+ if (flags_str) {
|
||||
+ strcat(expr, ".");
|
||||
+ strcat(expr, flags_str);
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+static char *expr_str(struct hist_field *field, unsigned int level)
|
||||
+{
|
||||
+ char *expr;
|
||||
|
@ -119,6 +135,11 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
+ if (!expr)
|
||||
+ return NULL;
|
||||
+
|
||||
+ if (!field->operands[0]) {
|
||||
+ expr_field_str(field, expr);
|
||||
+ return expr;
|
||||
+ }
|
||||
+
|
||||
+ if (field->operator == FIELD_OP_UNARY_MINUS) {
|
||||
+ char *subexpr;
|
||||
+
|
||||
|
@ -136,15 +157,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
+ return expr;
|
||||
+ }
|
||||
+
|
||||
+ strcat(expr, hist_field_name(field->operands[0], 0));
|
||||
+ if (field->operands[0]->flags) {
|
||||
+ const char *flags_str = get_hist_field_flags(field->operands[0]);
|
||||
+
|
||||
+ if (flags_str) {
|
||||
+ strcat(expr, ".");
|
||||
+ strcat(expr, flags_str);
|
||||
+ }
|
||||
+ }
|
||||
+ expr_field_str(field->operands[0], expr);
|
||||
+
|
||||
+ switch (field->operator) {
|
||||
+ case FIELD_OP_MINUS:
|
||||
|
@ -158,15 +171,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
+ return NULL;
|
||||
+ }
|
||||
+
|
||||
+ strcat(expr, hist_field_name(field->operands[1], 0));
|
||||
+ if (field->operands[1]->flags) {
|
||||
+ const char *flags_str = get_hist_field_flags(field->operands[1]);
|
||||
+
|
||||
+ if (flags_str) {
|
||||
+ strcat(expr, ".");
|
||||
+ strcat(expr, flags_str);
|
||||
+ }
|
||||
+ }
|
||||
+ expr_field_str(field->operands[1], expr);
|
||||
+
|
||||
+ return expr;
|
||||
+}
|
||||
|
@ -200,7 +205,14 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
static void destroy_hist_field(struct hist_field *hist_field,
|
||||
unsigned int level)
|
||||
{
|
||||
@@ -534,6 +670,7 @@ static void destroy_hist_field(struct hi
|
||||
unsigned int i;
|
||||
|
||||
- if (level > 2)
|
||||
+ if (level > 3)
|
||||
return;
|
||||
|
||||
if (!hist_field)
|
||||
@@ -534,6 +673,7 @@ static void destroy_hist_field(struct hi
|
||||
destroy_hist_field(hist_field->operands[i], level + 1);
|
||||
|
||||
kfree(hist_field->var.name);
|
||||
|
@ -208,7 +220,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
|
||||
kfree(hist_field);
|
||||
}
|
||||
@@ -554,6 +691,9 @@ static struct hist_field *create_hist_fi
|
||||
@@ -554,6 +694,9 @@ static struct hist_field *create_hist_fi
|
||||
|
||||
hist_field->hist_data = hist_data;
|
||||
|
||||
|
@ -218,7 +230,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
if (flags & HIST_FIELD_FL_HITCOUNT) {
|
||||
hist_field->fn = hist_field_counter;
|
||||
goto out;
|
||||
@@ -626,6 +766,257 @@ static void destroy_hist_fields(struct h
|
||||
@@ -626,6 +769,257 @@ static void destroy_hist_fields(struct h
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -274,9 +286,9 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
+ return field;
|
||||
+}
|
||||
+
|
||||
+struct hist_field *parse_atom(struct hist_trigger_data *hist_data,
|
||||
+ struct trace_event_file *file, char *str,
|
||||
+ unsigned long *flags, char *var_name)
|
||||
+static struct hist_field *parse_atom(struct hist_trigger_data *hist_data,
|
||||
+ struct trace_event_file *file, char *str,
|
||||
+ unsigned long *flags, char *var_name)
|
||||
+{
|
||||
+ struct ftrace_event_field *field = NULL;
|
||||
+ struct hist_field *hist_field = NULL;
|
||||
|
@ -316,7 +328,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
+
|
||||
+ // we support only -(xxx) i.e. explicit parens required
|
||||
+
|
||||
+ if (level > 2) {
|
||||
+ if (level > 3) {
|
||||
+ ret = -EINVAL;
|
||||
+ goto free;
|
||||
+ }
|
||||
|
@ -331,7 +343,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
+ goto free;
|
||||
+ }
|
||||
+
|
||||
+ s = strchr(str, ')');
|
||||
+ s = strrchr(str, ')');
|
||||
+ if (s)
|
||||
+ *s = '\0';
|
||||
+ else {
|
||||
|
@ -339,12 +351,6 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
+ goto free;
|
||||
+ }
|
||||
+
|
||||
+ strsep(&str, "(");
|
||||
+ if (!str) {
|
||||
+ ret = -EINVAL;
|
||||
+ goto free;
|
||||
+ }
|
||||
+
|
||||
+ flags |= HIST_FIELD_FL_EXPR;
|
||||
+ expr = create_hist_field(hist_data, NULL, flags, var_name);
|
||||
+ if (!expr) {
|
||||
|
@ -359,6 +365,8 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
+ goto free;
|
||||
+ }
|
||||
+
|
||||
+ expr->flags |= operand1->flags &
|
||||
+ (HIST_FIELD_FL_TIMESTAMP | HIST_FIELD_FL_TIMESTAMP_USECS);
|
||||
+ expr->fn = hist_field_unary_minus;
|
||||
+ expr->operands[0] = operand1;
|
||||
+ expr->operator = FIELD_OP_UNARY_MINUS;
|
||||
|
@ -393,7 +401,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
+ int field_op, ret = -EINVAL;
|
||||
+ char *sep, *operand1_str;
|
||||
+
|
||||
+ if (level > 2)
|
||||
+ if (level > 3)
|
||||
+ return ERR_PTR(-EINVAL);
|
||||
+
|
||||
+ field_op = contains_operator(str);
|
||||
|
@ -442,6 +450,10 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
+ goto free;
|
||||
+
|
||||
+ flags |= HIST_FIELD_FL_EXPR;
|
||||
+
|
||||
+ flags |= operand1->flags &
|
||||
+ (HIST_FIELD_FL_TIMESTAMP | HIST_FIELD_FL_TIMESTAMP_USECS);
|
||||
+
|
||||
+ expr = create_hist_field(hist_data, NULL, flags, var_name);
|
||||
+ if (!expr) {
|
||||
+ ret = -ENOMEM;
|
||||
|
@ -476,7 +488,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
static int create_hitcount_val(struct hist_trigger_data *hist_data)
|
||||
{
|
||||
hist_data->fields[HITCOUNT_IDX] =
|
||||
@@ -648,37 +1039,17 @@ static int __create_val_field(struct his
|
||||
@@ -648,37 +1042,17 @@ static int __create_val_field(struct his
|
||||
char *var_name, char *field_str,
|
||||
unsigned long flags)
|
||||
{
|
||||
|
@ -520,7 +532,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
++hist_data->n_vals;
|
||||
++hist_data->n_fields;
|
||||
|
||||
@@ -765,8 +1136,8 @@ static int create_key_field(struct hist_
|
||||
@@ -765,8 +1139,8 @@ static int create_key_field(struct hist_
|
||||
struct trace_event_file *file,
|
||||
char *field_str)
|
||||
{
|
||||
|
@ -530,7 +542,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
unsigned long flags = 0;
|
||||
unsigned int key_size;
|
||||
int ret = 0;
|
||||
@@ -781,60 +1152,24 @@ static int create_key_field(struct hist_
|
||||
@@ -781,60 +1155,24 @@ static int create_key_field(struct hist_
|
||||
key_size = sizeof(unsigned long) * HIST_STACKTRACE_DEPTH;
|
||||
hist_field = create_hist_field(hist_data, NULL, flags, NULL);
|
||||
} else {
|
||||
|
@ -600,7 +612,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
if (hist_data->key_size > HIST_KEY_SIZE_MAX) {
|
||||
ret = -EINVAL;
|
||||
goto out;
|
||||
@@ -1419,7 +1754,8 @@ hist_trigger_entry_print(struct seq_file
|
||||
@@ -1419,7 +1757,8 @@ hist_trigger_entry_print(struct seq_file
|
||||
for (i = 1; i < hist_data->n_vals; i++) {
|
||||
field_name = hist_field_name(hist_data->fields[i], 0);
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Anna-Maria Gleixner <anna-maria@linutronix.de>
|
||||
Date: Wed, 20 Dec 2017 17:13:08 +0100
|
||||
Subject: [PATCH 19/29] hrtimer: Unify handling of hrtimer remove
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
When the first hrtimer on the current CPU is removed,
|
||||
hrtimer_force_reprogram() is invoked but only when
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Tom Zanussi <tom.zanussi@linux.intel.com>
|
||||
Date: Thu, 21 Dec 2017 10:02:41 -0600
|
||||
Date: Mon, 15 Jan 2018 20:51:53 -0600
|
||||
Subject: [PATCH 19/37] tracing: Generalize per-element hist trigger data
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
Up until now, hist triggers only needed per-element support for saving
|
||||
'comm' data, which was saved directly as a private data pointer.
|
||||
|
@ -106,7 +106,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
};
|
||||
|
||||
static const char *get_hist_field_flags(struct hist_field *hist_field)
|
||||
@@ -1481,21 +1501,6 @@ static int create_tracing_map_fields(str
|
||||
@@ -1484,21 +1504,6 @@ static int create_tracing_map_fields(str
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -128,7 +128,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
static struct hist_trigger_data *
|
||||
create_hist_data(unsigned int map_bits,
|
||||
struct hist_trigger_attrs *attrs,
|
||||
@@ -1521,8 +1526,7 @@ create_hist_data(unsigned int map_bits,
|
||||
@@ -1524,8 +1529,7 @@ create_hist_data(unsigned int map_bits,
|
||||
if (ret)
|
||||
goto free;
|
||||
|
||||
|
@ -138,7 +138,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
|
||||
hist_data->map = tracing_map_create(map_bits, hist_data->key_size,
|
||||
map_ops, hist_data);
|
||||
@@ -1710,7 +1714,13 @@ hist_trigger_entry_print(struct seq_file
|
||||
@@ -1713,7 +1717,13 @@ hist_trigger_entry_print(struct seq_file
|
||||
seq_printf(m, "%s: [%llx] %-55s", field_name,
|
||||
uval, str);
|
||||
} else if (key_field->flags & HIST_FIELD_FL_EXECNAME) {
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Anna-Maria Gleixner <anna-maria@linutronix.de>
|
||||
Date: Wed, 20 Dec 2017 17:13:09 +0100
|
||||
Subject: [PATCH 20/29] hrtimer: Unify handling of remote enqueue
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
hrtimer_reprogram() is conditionally invoked from hrtimer_start_range_ns()
|
||||
when hrtimer_cpu_base.hres_active is true.
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
From: Tom Zanussi <tom.zanussi@linux.intel.com>
|
||||
Date: Thu, 21 Dec 2017 10:02:42 -0600
|
||||
Date: Mon, 15 Jan 2018 20:51:54 -0600
|
||||
Subject: [PATCH 20/37] tracing: Pass tracing_map_elt to hist_field accessor
|
||||
functions
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
Some accessor functions, such as for variable references, require
|
||||
access to a corrsponding tracing_map_elt.
|
||||
|
@ -182,7 +182,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
{
|
||||
struct hist_trigger_data *hist_data = hist_field->hist_data;
|
||||
struct trace_array *tr = hist_data->event_file->tr;
|
||||
@@ -1567,7 +1590,7 @@ static void hist_trigger_elt_update(stru
|
||||
@@ -1570,7 +1593,7 @@ static void hist_trigger_elt_update(stru
|
||||
|
||||
for_each_hist_val_field(i, hist_data) {
|
||||
hist_field = hist_data->fields[i];
|
||||
|
@ -191,7 +191,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
if (hist_field->flags & HIST_FIELD_FL_VAR) {
|
||||
var_idx = hist_field->var.idx;
|
||||
tracing_map_set_var(elt, var_idx, hist_val);
|
||||
@@ -1579,7 +1602,7 @@ static void hist_trigger_elt_update(stru
|
||||
@@ -1582,7 +1605,7 @@ static void hist_trigger_elt_update(stru
|
||||
for_each_hist_key_field(i, hist_data) {
|
||||
hist_field = hist_data->fields[i];
|
||||
if (hist_field->flags & HIST_FIELD_FL_VAR) {
|
||||
|
@ -200,7 +200,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
var_idx = hist_field->var.idx;
|
||||
tracing_map_set_var(elt, var_idx, hist_val);
|
||||
}
|
||||
@@ -1617,9 +1640,9 @@ static void event_hist_trigger(struct ev
|
||||
@@ -1620,9 +1643,9 @@ static void event_hist_trigger(struct ev
|
||||
bool use_compound_key = (hist_data->n_keys > 1);
|
||||
unsigned long entries[HIST_STACKTRACE_DEPTH];
|
||||
char compound_key[HIST_KEY_SIZE_MAX];
|
||||
|
@ -211,7 +211,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
u64 field_contents;
|
||||
void *key = NULL;
|
||||
unsigned int i;
|
||||
@@ -1640,7 +1663,7 @@ static void event_hist_trigger(struct ev
|
||||
@@ -1643,7 +1666,7 @@ static void event_hist_trigger(struct ev
|
||||
|
||||
key = entries;
|
||||
} else {
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Anna-Maria Gleixner <anna-maria@linutronix.de>
|
||||
Date: Wed, 20 Dec 2017 17:13:10 +0100
|
||||
Subject: [PATCH 21/29] hrtimer: Make remote enqueue decision less restrictive
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
The current decision whether a timer can be queued on a remote CPU checks
|
||||
for timer->expiry <= remote_cpu_base.expires_next.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Tom Zanussi <tom.zanussi@linux.intel.com>
|
||||
Date: Thu, 21 Dec 2017 10:02:43 -0600
|
||||
Date: Mon, 15 Jan 2018 20:51:55 -0600
|
||||
Subject: [PATCH 21/37] tracing: Add hist_field 'type' field
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
Future support for synthetic events requires hist_field 'type'
|
||||
information, so add a field for that.
|
||||
|
@ -25,7 +25,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
struct hist_field *operands[HIST_FIELD_OPERANDS_MAX];
|
||||
struct hist_trigger_data *hist_data;
|
||||
struct hist_var var;
|
||||
@@ -714,6 +715,7 @@ static void destroy_hist_field(struct hi
|
||||
@@ -717,6 +718,7 @@ static void destroy_hist_field(struct hi
|
||||
|
||||
kfree(hist_field->var.name);
|
||||
kfree(hist_field->name);
|
||||
|
@ -33,7 +33,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
|
||||
kfree(hist_field);
|
||||
}
|
||||
@@ -739,6 +741,10 @@ static struct hist_field *create_hist_fi
|
||||
@@ -742,6 +744,10 @@ static struct hist_field *create_hist_fi
|
||||
|
||||
if (flags & HIST_FIELD_FL_HITCOUNT) {
|
||||
hist_field->fn = hist_field_counter;
|
||||
|
@ -44,7 +44,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
goto out;
|
||||
}
|
||||
|
||||
@@ -752,12 +758,18 @@ static struct hist_field *create_hist_fi
|
||||
@@ -755,12 +761,18 @@ static struct hist_field *create_hist_fi
|
||||
hist_field->fn = hist_field_log2;
|
||||
hist_field->operands[0] = create_hist_field(hist_data, field, fl, NULL);
|
||||
hist_field->size = hist_field->operands[0]->size;
|
||||
|
@ -63,7 +63,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
goto out;
|
||||
}
|
||||
|
||||
@@ -767,6 +779,11 @@ static struct hist_field *create_hist_fi
|
||||
@@ -770,6 +782,11 @@ static struct hist_field *create_hist_fi
|
||||
if (is_string_field(field)) {
|
||||
flags |= HIST_FIELD_FL_STRING;
|
||||
|
||||
|
@ -75,7 +75,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
if (field->filter_type == FILTER_STATIC_STRING)
|
||||
hist_field->fn = hist_field_string;
|
||||
else if (field->filter_type == FILTER_DYN_STRING)
|
||||
@@ -774,6 +791,12 @@ static struct hist_field *create_hist_fi
|
||||
@@ -777,6 +794,12 @@ static struct hist_field *create_hist_fi
|
||||
else
|
||||
hist_field->fn = hist_field_pstring;
|
||||
} else {
|
||||
|
@ -88,7 +88,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
hist_field->fn = select_value_fn(field->size,
|
||||
field->is_signed);
|
||||
if (!hist_field->fn) {
|
||||
@@ -950,6 +973,11 @@ static struct hist_field *parse_unary(st
|
||||
@@ -949,6 +972,11 @@ static struct hist_field *parse_unary(st
|
||||
expr->operands[0] = operand1;
|
||||
expr->operator = FIELD_OP_UNARY_MINUS;
|
||||
expr->name = expr_str(expr, 0);
|
||||
|
@ -100,7 +100,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
|
||||
return expr;
|
||||
free:
|
||||
@@ -1039,6 +1067,11 @@ static struct hist_field *parse_expr(str
|
||||
@@ -1042,6 +1070,11 @@ static struct hist_field *parse_expr(str
|
||||
expr->operands[1] = operand2;
|
||||
expr->operator = field_op;
|
||||
expr->name = expr_str(expr, 0);
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Anna-Maria Gleixner <anna-maria@linutronix.de>
|
||||
Date: Wed, 20 Dec 2017 17:13:11 +0100
|
||||
Subject: [PATCH 22/29] hrtimer: Remove base argument from hrtimer_reprogram()
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
hrtimer_reprogram() must have access to the hrtimer_clock_base of the new
|
||||
first expiring timer to access hrtimer_clock_base.offset for adjusting the
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
From: Tom Zanussi <tom.zanussi@linux.intel.com>
|
||||
Date: Thu, 21 Dec 2017 10:02:44 -0600
|
||||
Date: Mon, 15 Jan 2018 20:51:56 -0600
|
||||
Subject: [PATCH 22/37] tracing: Add variable reference handling to hist
|
||||
triggers
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
Add the necessary infrastructure to allow the variables defined on one
|
||||
event to be referenced in another. This allows variables set by a
|
||||
|
@ -27,9 +27,9 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
---
|
||||
kernel/trace/trace.c | 2
|
||||
kernel/trace/trace.h | 3
|
||||
kernel/trace/trace_events_hist.c | 660 +++++++++++++++++++++++++++++++++++-
|
||||
kernel/trace/trace_events_hist.c | 661 +++++++++++++++++++++++++++++++++++-
|
||||
kernel/trace/trace_events_trigger.c | 6
|
||||
4 files changed, 655 insertions(+), 16 deletions(-)
|
||||
4 files changed, 656 insertions(+), 16 deletions(-)
|
||||
|
||||
--- a/kernel/trace/trace.c
|
||||
+++ b/kernel/trace/trace.c
|
||||
|
@ -136,7 +136,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
+ struct hist_field *found = NULL;
|
||||
+ unsigned int i;
|
||||
+
|
||||
+ if (level > 2)
|
||||
+ if (level > 3)
|
||||
+ return found;
|
||||
+
|
||||
+ if (!hist_field)
|
||||
|
@ -234,7 +234,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
+{
|
||||
+ int i;
|
||||
+
|
||||
+ if (level > 2)
|
||||
+ if (level > 3)
|
||||
+ return false;
|
||||
+
|
||||
+ if (!hist_field)
|
||||
|
@ -476,25 +476,17 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
|
||||
if (field_name == NULL)
|
||||
field_name = "";
|
||||
@@ -638,6 +993,8 @@ static char *expr_str(struct hist_field
|
||||
return expr;
|
||||
}
|
||||
@@ -612,6 +967,9 @@ static const char *get_hist_field_flags(
|
||||
|
||||
+ if (field->operands[0]->flags & HIST_FIELD_FL_VAR_REF)
|
||||
static void expr_field_str(struct hist_field *field, char *expr)
|
||||
{
|
||||
+ if (field->flags & HIST_FIELD_FL_VAR_REF)
|
||||
+ strcat(expr, "$");
|
||||
strcat(expr, hist_field_name(field->operands[0], 0));
|
||||
if (field->operands[0]->flags) {
|
||||
const char *flags_str = get_hist_field_flags(field->operands[0]);
|
||||
@@ -660,6 +1017,8 @@ static char *expr_str(struct hist_field
|
||||
return NULL;
|
||||
}
|
||||
+
|
||||
strcat(expr, hist_field_name(field, 0));
|
||||
|
||||
+ if (field->operands[1]->flags & HIST_FIELD_FL_VAR_REF)
|
||||
+ strcat(expr, "$");
|
||||
strcat(expr, hist_field_name(field->operands[1], 0));
|
||||
if (field->operands[1]->flags) {
|
||||
const char *flags_str = get_hist_field_flags(field->operands[1]);
|
||||
@@ -739,6 +1098,11 @@ static struct hist_field *create_hist_fi
|
||||
if (field->flags) {
|
||||
@@ -742,6 +1100,11 @@ static struct hist_field *create_hist_fi
|
||||
if (flags & HIST_FIELD_FL_EXPR)
|
||||
goto out; /* caller will populate */
|
||||
|
||||
|
@ -506,7 +498,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
if (flags & HIST_FIELD_FL_HITCOUNT) {
|
||||
hist_field->fn = hist_field_counter;
|
||||
hist_field->size = sizeof(u64);
|
||||
@@ -832,6 +1196,142 @@ static void destroy_hist_fields(struct h
|
||||
@@ -835,6 +1198,144 @@ static void destroy_hist_fields(struct h
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -520,6 +512,8 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
+ ref_field->var.hist_data = var_field->hist_data;
|
||||
+ ref_field->size = var_field->size;
|
||||
+ ref_field->is_signed = var_field->is_signed;
|
||||
+ ref_field->flags |= var_field->flags &
|
||||
+ (HIST_FIELD_FL_TIMESTAMP | HIST_FIELD_FL_TIMESTAMP_USECS);
|
||||
+
|
||||
+ if (system) {
|
||||
+ ref_field->system = kstrdup(system, GFP_KERNEL);
|
||||
|
@ -649,9 +643,9 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
static struct ftrace_event_field *
|
||||
parse_field(struct hist_trigger_data *hist_data, struct trace_event_file *file,
|
||||
char *field_str, unsigned long *flags)
|
||||
@@ -888,10 +1388,40 @@ struct hist_field *parse_atom(struct his
|
||||
struct trace_event_file *file, char *str,
|
||||
unsigned long *flags, char *var_name)
|
||||
@@ -891,10 +1392,40 @@ static struct hist_field *parse_atom(str
|
||||
struct trace_event_file *file, char *str,
|
||||
unsigned long *flags, char *var_name)
|
||||
{
|
||||
+ char *s, *ref_system = NULL, *ref_event = NULL, *ref_var = str;
|
||||
struct ftrace_event_field *field = NULL;
|
||||
|
@ -690,7 +684,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
field = parse_field(hist_data, file, str, flags);
|
||||
if (IS_ERR(field)) {
|
||||
ret = PTR_ERR(field);
|
||||
@@ -1063,6 +1593,9 @@ static struct hist_field *parse_expr(str
|
||||
@@ -1066,6 +1597,9 @@ static struct hist_field *parse_expr(str
|
||||
goto free;
|
||||
}
|
||||
|
||||
|
@ -700,7 +694,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
expr->operands[0] = operand1;
|
||||
expr->operands[1] = operand2;
|
||||
expr->operator = field_op;
|
||||
@@ -1235,6 +1768,12 @@ static int create_key_field(struct hist_
|
||||
@@ -1238,6 +1772,12 @@ static int create_key_field(struct hist_
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
@ -713,7 +707,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
key_size = hist_field->size;
|
||||
}
|
||||
|
||||
@@ -1573,6 +2112,7 @@ create_hist_data(unsigned int map_bits,
|
||||
@@ -1576,6 +2116,7 @@ create_hist_data(unsigned int map_bits,
|
||||
|
||||
hist_data->attrs = attrs;
|
||||
hist_data->remove = remove;
|
||||
|
@ -721,7 +715,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
|
||||
ret = create_hist_fields(hist_data, file);
|
||||
if (ret)
|
||||
@@ -1595,12 +2135,6 @@ create_hist_data(unsigned int map_bits,
|
||||
@@ -1598,12 +2139,6 @@ create_hist_data(unsigned int map_bits,
|
||||
ret = create_tracing_map_fields(hist_data);
|
||||
if (ret)
|
||||
goto free;
|
||||
|
@ -734,7 +728,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
out:
|
||||
return hist_data;
|
||||
free:
|
||||
@@ -1615,12 +2149,17 @@ create_hist_data(unsigned int map_bits,
|
||||
@@ -1618,12 +2153,17 @@ create_hist_data(unsigned int map_bits,
|
||||
|
||||
static void hist_trigger_elt_update(struct hist_trigger_data *hist_data,
|
||||
struct tracing_map_elt *elt, void *rec,
|
||||
|
@ -753,7 +747,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
for_each_hist_val_field(i, hist_data) {
|
||||
hist_field = hist_data->fields[i];
|
||||
hist_val = hist_field->fn(hist_field, elt, rbe, rec);
|
||||
@@ -1672,6 +2211,7 @@ static void event_hist_trigger(struct ev
|
||||
@@ -1675,6 +2215,7 @@ static void event_hist_trigger(struct ev
|
||||
struct hist_trigger_data *hist_data = data->private_data;
|
||||
bool use_compound_key = (hist_data->n_keys > 1);
|
||||
unsigned long entries[HIST_STACKTRACE_DEPTH];
|
||||
|
@ -761,7 +755,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
char compound_key[HIST_KEY_SIZE_MAX];
|
||||
struct tracing_map_elt *elt = NULL;
|
||||
struct stack_trace stacktrace;
|
||||
@@ -1711,9 +2251,15 @@ static void event_hist_trigger(struct ev
|
||||
@@ -1714,9 +2255,15 @@ static void event_hist_trigger(struct ev
|
||||
if (use_compound_key)
|
||||
key = compound_key;
|
||||
|
||||
|
@ -779,7 +773,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
}
|
||||
|
||||
static void hist_trigger_stacktrace_print(struct seq_file *m,
|
||||
@@ -1930,8 +2476,11 @@ static void hist_field_print(struct seq_
|
||||
@@ -1933,8 +2480,11 @@ static void hist_field_print(struct seq_
|
||||
|
||||
if (hist_field->flags & HIST_FIELD_FL_TIMESTAMP)
|
||||
seq_puts(m, "common_timestamp");
|
||||
|
@ -792,7 +786,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
|
||||
if (hist_field->flags) {
|
||||
const char *flags_str = get_hist_field_flags(hist_field);
|
||||
@@ -2071,7 +2620,11 @@ static void event_hist_trigger_free(stru
|
||||
@@ -2074,7 +2624,11 @@ static void event_hist_trigger_free(stru
|
||||
if (!data->ref) {
|
||||
if (data->name)
|
||||
del_named_trigger(data);
|
||||
|
@ -804,7 +798,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
destroy_hist_data(hist_data);
|
||||
}
|
||||
}
|
||||
@@ -2284,23 +2837,55 @@ static int hist_register_trigger(char *g
|
||||
@@ -2287,23 +2841,55 @@ static int hist_register_trigger(char *g
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
@ -864,7 +858,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
static void hist_unregister_trigger(char *glob, struct event_trigger_ops *ops,
|
||||
struct event_trigger_data *data,
|
||||
struct trace_event_file *file)
|
||||
@@ -2333,11 +2918,30 @@ static void hist_unregister_trigger(char
|
||||
@@ -2336,11 +2922,30 @@ static void hist_unregister_trigger(char
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -895,7 +889,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
list_for_each_entry_safe(test, n, &file->triggers, list) {
|
||||
if (test->cmd_ops->trigger_type == ETT_EVENT_HIST) {
|
||||
hist_data = test->private_data;
|
||||
@@ -2413,6 +3017,11 @@ static int event_hist_trigger_func(struc
|
||||
@@ -2416,6 +3021,11 @@ static int event_hist_trigger_func(struc
|
||||
}
|
||||
|
||||
if (remove) {
|
||||
|
@ -907,7 +901,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
cmd_ops->unreg(glob+1, trigger_ops, trigger_data, file);
|
||||
ret = 0;
|
||||
goto out_free;
|
||||
@@ -2430,14 +3039,33 @@ static int event_hist_trigger_func(struc
|
||||
@@ -2433,14 +3043,33 @@ static int event_hist_trigger_func(struc
|
||||
goto out_free;
|
||||
} else if (ret < 0)
|
||||
goto out_free;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Anna-Maria Gleixner <anna-maria@linutronix.de>
|
||||
Date: Wed, 20 Dec 2017 17:13:12 +0100
|
||||
Subject: [PATCH 23/29] hrtimer: Split hrtimer_start_range_ns()
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
Preparatory patch for softirq based hrtimers to avoid code duplication. No
|
||||
functional change.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Tom Zanussi <tom.zanussi@linux.intel.com>
|
||||
Date: Thu, 21 Dec 2017 10:02:45 -0600
|
||||
Date: Mon, 15 Jan 2018 20:51:57 -0600
|
||||
Subject: [PATCH 23/37] tracing: Add hist trigger action hook
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
Add a hook for executing extra actions whenever a histogram entry is
|
||||
added or updated.
|
||||
|
@ -101,7 +101,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
}
|
||||
}
|
||||
|
||||
@@ -2043,11 +2076,55 @@ static int create_sort_keys(struct hist_
|
||||
@@ -2047,11 +2080,55 @@ static int create_sort_keys(struct hist_
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -157,7 +157,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
kfree(hist_data);
|
||||
}
|
||||
|
||||
@@ -2114,6 +2191,10 @@ create_hist_data(unsigned int map_bits,
|
||||
@@ -2118,6 +2195,10 @@ create_hist_data(unsigned int map_bits,
|
||||
hist_data->remove = remove;
|
||||
hist_data->event_file = file;
|
||||
|
||||
|
@ -168,7 +168,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
ret = create_hist_fields(hist_data, file);
|
||||
if (ret)
|
||||
goto free;
|
||||
@@ -2205,6 +2286,20 @@ static inline void add_to_key(char *comp
|
||||
@@ -2209,6 +2290,20 @@ static inline void add_to_key(char *comp
|
||||
memcpy(compound_key + key_field->offset, key, size);
|
||||
}
|
||||
|
||||
|
@ -189,7 +189,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
static void event_hist_trigger(struct event_trigger_data *data, void *rec,
|
||||
struct ring_buffer_event *rbe)
|
||||
{
|
||||
@@ -2260,6 +2355,9 @@ static void event_hist_trigger(struct ev
|
||||
@@ -2264,6 +2359,9 @@ static void event_hist_trigger(struct ev
|
||||
return;
|
||||
|
||||
hist_trigger_elt_update(hist_data, elt, rec, rbe, var_ref_vals);
|
||||
|
@ -199,7 +199,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
}
|
||||
|
||||
static void hist_trigger_stacktrace_print(struct seq_file *m,
|
||||
@@ -3046,6 +3144,10 @@ static int event_hist_trigger_func(struc
|
||||
@@ -3050,6 +3148,10 @@ static int event_hist_trigger_func(struc
|
||||
if (has_hist_vars(hist_data))
|
||||
save_hist_vars(hist_data);
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Anna-Maria Gleixner <anna-maria@linutronix.de>
|
||||
Date: Wed, 20 Dec 2017 17:13:13 +0100
|
||||
Subject: [PATCH 24/29] hrtimer: Split __hrtimer_get_next_event()
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
Preparatory patch for softirq based hrtimers to avoid code duplication. No
|
||||
functional change.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Tom Zanussi <tom.zanussi@linux.intel.com>
|
||||
Date: Thu, 21 Dec 2017 10:02:46 -0600
|
||||
Date: Mon, 15 Jan 2018 20:51:58 -0600
|
||||
Subject: [PATCH 24/37] tracing: Add support for 'synthetic' events
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
Synthetic events are user-defined events generated from hist trigger
|
||||
variables saved from one or more other events.
|
||||
|
@ -50,8 +50,8 @@ Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com>
|
|||
Signed-off-by: Fengguang Wu <fengguang.wu@intel.com>
|
||||
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
---
|
||||
kernel/trace/trace_events_hist.c | 899 ++++++++++++++++++++++++++++++++++++++-
|
||||
1 file changed, 897 insertions(+), 2 deletions(-)
|
||||
kernel/trace/trace_events_hist.c | 895 ++++++++++++++++++++++++++++++++++++++-
|
||||
1 file changed, 893 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/kernel/trace/trace_events_hist.c
|
||||
+++ b/kernel/trace/trace_events_hist.c
|
||||
|
@ -99,7 +99,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
struct action_data;
|
||||
|
||||
typedef void (*action_fn_t) (struct hist_trigger_data *hist_data,
|
||||
@@ -282,6 +308,794 @@ struct action_data {
|
||||
@@ -282,6 +308,790 @@ struct action_data {
|
||||
unsigned int var_ref_idx;
|
||||
};
|
||||
|
||||
|
@ -785,7 +785,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
+{
|
||||
+ struct list_head release_events;
|
||||
+ struct synth_event *event, *e;
|
||||
+ int ret = 0, err = 0;
|
||||
+ int ret = 0;
|
||||
+
|
||||
+ INIT_LIST_HEAD(&release_events);
|
||||
+
|
||||
|
@ -798,8 +798,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
+ }
|
||||
+ }
|
||||
+
|
||||
+ list_for_each_entry_safe(event, e, &synth_event_list, list)
|
||||
+ list_move(&event->list, &release_events);
|
||||
+ list_splice_init(&event->list, &release_events);
|
||||
+
|
||||
+ mutex_unlock(&synth_event_mutex);
|
||||
+
|
||||
|
@ -810,9 +809,6 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
+ add_or_delete_synth_event(event, !ret);
|
||||
+ }
|
||||
+
|
||||
+ if (err)
|
||||
+ ret = err;
|
||||
+
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
|
@ -894,7 +890,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
static u64 hist_field_timestamp(struct hist_field *hist_field,
|
||||
struct tracing_map_elt *elt,
|
||||
struct ring_buffer_event *rbe,
|
||||
@@ -2961,6 +3775,28 @@ static int hist_trigger_enable(struct ev
|
||||
@@ -2965,6 +3775,28 @@ static int hist_trigger_enable(struct ev
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -923,7 +919,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
static bool hist_trigger_check_refs(struct event_trigger_data *data,
|
||||
struct trace_event_file *file)
|
||||
{
|
||||
@@ -3036,6 +3872,8 @@ static void hist_unreg_all(struct trace_
|
||||
@@ -3040,6 +3872,8 @@ static void hist_unreg_all(struct trace_
|
||||
{
|
||||
struct event_trigger_data *test, *n;
|
||||
struct hist_trigger_data *hist_data;
|
||||
|
@ -932,7 +928,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
|
||||
if (hist_file_check_refs(file))
|
||||
return;
|
||||
@@ -3045,6 +3883,14 @@ static void hist_unreg_all(struct trace_
|
||||
@@ -3049,6 +3883,14 @@ static void hist_unreg_all(struct trace_
|
||||
hist_data = test->private_data;
|
||||
list_del_rcu(&test->list);
|
||||
trace_event_trigger_enable_disable(file, 0);
|
||||
|
@ -947,7 +943,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
update_cond_flag(file);
|
||||
if (hist_data->enable_timestamps)
|
||||
tracing_set_time_stamp_abs(file->tr, false);
|
||||
@@ -3063,6 +3909,8 @@ static int event_hist_trigger_func(struc
|
||||
@@ -3067,6 +3909,8 @@ static int event_hist_trigger_func(struc
|
||||
struct hist_trigger_attrs *attrs;
|
||||
struct event_trigger_ops *trigger_ops;
|
||||
struct hist_trigger_data *hist_data;
|
||||
|
@ -956,7 +952,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
bool remove = false;
|
||||
char *trigger;
|
||||
int ret = 0;
|
||||
@@ -3093,10 +3941,11 @@ static int event_hist_trigger_func(struc
|
||||
@@ -3097,10 +3941,11 @@ static int event_hist_trigger_func(struc
|
||||
|
||||
trigger_ops = cmd_ops->get_trigger_ops(cmd, trigger);
|
||||
|
||||
|
@ -970,7 +966,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
|
||||
trigger_data->count = -1;
|
||||
trigger_data->ops = trigger_ops;
|
||||
@@ -3115,12 +3964,23 @@ static int event_hist_trigger_func(struc
|
||||
@@ -3119,12 +3964,23 @@ static int event_hist_trigger_func(struc
|
||||
}
|
||||
|
||||
if (remove) {
|
||||
|
@ -994,7 +990,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
ret = 0;
|
||||
goto out_free;
|
||||
}
|
||||
@@ -3156,6 +4016,13 @@ static int event_hist_trigger_func(struc
|
||||
@@ -3160,6 +4016,13 @@ static int event_hist_trigger_func(struc
|
||||
if (ret)
|
||||
goto out_unreg;
|
||||
|
||||
|
@ -1008,7 +1004,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
/* Just return zero, not the number of registered triggers */
|
||||
ret = 0;
|
||||
out:
|
||||
@@ -3328,3 +4195,31 @@ static __init void unregister_trigger_hi
|
||||
@@ -3332,3 +4195,31 @@ static __init void unregister_trigger_hi
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Anna-Maria Gleixner <anna-maria@linutronix.de>
|
||||
Date: Wed, 20 Dec 2017 17:13:14 +0100
|
||||
Subject: [PATCH 25/29] hrtimer: Use irqsave/irqrestore around __run_hrtimer()
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
__run_hrtimer() is called with the hrtimer_cpu_base.lock held and
|
||||
interrupts disabled. Before invoking the timer callback the base lock is
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Tom Zanussi <tom.zanussi@linux.intel.com>
|
||||
Date: Thu, 21 Dec 2017 10:02:47 -0600
|
||||
Date: Mon, 15 Jan 2018 20:51:59 -0600
|
||||
Subject: [PATCH 25/37] tracing: Add support for 'field variables'
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
Users should be able to directly specify event fields in hist trigger
|
||||
'actions' rather than being forced to explicitly create a variable for
|
||||
|
@ -76,7 +76,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
};
|
||||
|
||||
struct synth_field {
|
||||
@@ -1431,6 +1447,7 @@ static struct hist_field *find_event_var
|
||||
@@ -1427,6 +1443,7 @@ static struct hist_field *find_event_var
|
||||
struct hist_elt_data {
|
||||
char *comm;
|
||||
u64 *var_ref_vals;
|
||||
|
@ -84,7 +84,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
};
|
||||
|
||||
static u64 hist_field_var_ref(struct hist_field *hist_field,
|
||||
@@ -1735,6 +1752,11 @@ static inline void save_comm(char *comm,
|
||||
@@ -1731,6 +1748,11 @@ static inline void save_comm(char *comm,
|
||||
|
||||
static void hist_elt_data_free(struct hist_elt_data *elt_data)
|
||||
{
|
||||
|
@ -96,7 +96,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
kfree(elt_data->comm);
|
||||
kfree(elt_data);
|
||||
}
|
||||
@@ -1752,7 +1774,7 @@ static int hist_trigger_elt_data_alloc(s
|
||||
@@ -1748,7 +1770,7 @@ static int hist_trigger_elt_data_alloc(s
|
||||
unsigned int size = TASK_COMM_LEN;
|
||||
struct hist_elt_data *elt_data;
|
||||
struct hist_field *key_field;
|
||||
|
@ -105,7 +105,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
|
||||
elt_data = kzalloc(sizeof(*elt_data), GFP_KERNEL);
|
||||
if (!elt_data)
|
||||
@@ -1771,6 +1793,18 @@ static int hist_trigger_elt_data_alloc(s
|
||||
@@ -1767,6 +1789,18 @@ static int hist_trigger_elt_data_alloc(s
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@ From: Anna-Maria Gleixner <anna-maria@linutronix.de>
|
|||
Date: Wed, 20 Dec 2017 17:13:15 +0100
|
||||
Subject: [PATCH 26/29] hrtimer: Add clock bases and hrtimer mode for soft irq
|
||||
context
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
hrtimer callback functions are always executed in hard interrupt
|
||||
context. Users of hrtimer which need their timer function to be executed
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Tom Zanussi <tom.zanussi@linux.intel.com>
|
||||
Date: Thu, 21 Dec 2017 10:02:48 -0600
|
||||
Date: Mon, 15 Jan 2018 20:52:00 -0600
|
||||
Subject: [PATCH 26/37] tracing: Add 'onmatch' hist trigger action support
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
Add an 'onmatch(matching.event).<synthetic_event_name>(param list)'
|
||||
hist trigger action which is invoked with the set of variables or
|
||||
|
@ -99,7 +99,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
static void add_or_delete_synth_event(struct synth_event *event, int delete)
|
||||
{
|
||||
if (delete)
|
||||
@@ -1128,11 +1156,6 @@ static u64 hist_field_timestamp(struct h
|
||||
@@ -1124,11 +1152,6 @@ static u64 hist_field_timestamp(struct h
|
||||
return ts;
|
||||
}
|
||||
|
||||
|
@ -111,7 +111,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
static struct hist_field *
|
||||
check_field_for_var_ref(struct hist_field *hist_field,
|
||||
struct hist_trigger_data *var_data,
|
||||
@@ -1198,6 +1221,14 @@ static struct hist_field *find_var_ref(s
|
||||
@@ -1194,6 +1217,14 @@ static struct hist_field *find_var_ref(s
|
||||
return found;
|
||||
}
|
||||
|
||||
|
@ -126,7 +126,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
return found;
|
||||
}
|
||||
|
||||
@@ -1426,6 +1457,37 @@ static struct hist_field *find_file_var(
|
||||
@@ -1422,6 +1453,37 @@ static struct hist_field *find_file_var(
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -164,7 +164,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
static struct hist_field *find_event_var(struct hist_trigger_data *hist_data,
|
||||
char *system,
|
||||
char *event_name,
|
||||
@@ -1435,6 +1497,14 @@ static struct hist_field *find_event_var
|
||||
@@ -1431,6 +1493,14 @@ static struct hist_field *find_event_var
|
||||
struct hist_field *hist_field = NULL;
|
||||
struct trace_event_file *file;
|
||||
|
||||
|
@ -179,7 +179,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
file = find_var_file(tr, system, event_name, var_name);
|
||||
if (!file)
|
||||
return NULL;
|
||||
@@ -1626,11 +1696,21 @@ static void destroy_hist_trigger_attrs(s
|
||||
@@ -1622,11 +1692,21 @@ static void destroy_hist_trigger_attrs(s
|
||||
|
||||
static int parse_action(char *str, struct hist_trigger_attrs *attrs)
|
||||
{
|
||||
|
|
|
@ -2,7 +2,7 @@ From: Anna-Maria Gleixner <anna-maria@linutronix.de>
|
|||
Date: Wed, 20 Dec 2017 17:13:16 +0100
|
||||
Subject: [PATCH 27/29] hrtimer: Prepare handling of hard and softirq based
|
||||
hrtimers
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
The softirq based hrtimer can utilize most of the existing hrtimers
|
||||
functions, but need to operate on a different data set.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Tom Zanussi <tom.zanussi@linux.intel.com>
|
||||
Date: Thu, 21 Dec 2017 10:02:49 -0600
|
||||
Date: Mon, 15 Jan 2018 20:52:01 -0600
|
||||
Subject: [PATCH 27/37] tracing: Add 'onmax' hist trigger action support
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
Add an 'onmax(var).save(field,...)' hist trigger action which is
|
||||
invoked whenever an event exceeds the current maximum.
|
||||
|
@ -86,7 +86,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
};
|
||||
};
|
||||
|
||||
@@ -1701,7 +1713,8 @@ static int parse_action(char *str, struc
|
||||
@@ -1697,7 +1709,8 @@ static int parse_action(char *str, struc
|
||||
if (attrs->n_actions >= HIST_ACTIONS_MAX)
|
||||
return ret;
|
||||
|
||||
|
@ -96,7 +96,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
attrs->action_str[attrs->n_actions] = kstrdup(str, GFP_KERNEL);
|
||||
if (!attrs->action_str[attrs->n_actions]) {
|
||||
ret = -ENOMEM;
|
||||
@@ -1873,7 +1886,7 @@ static int hist_trigger_elt_data_alloc(s
|
||||
@@ -1869,7 +1882,7 @@ static int hist_trigger_elt_data_alloc(s
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Anna-Maria Gleixner <anna-maria@linutronix.de>
|
||||
Date: Wed, 20 Dec 2017 17:13:17 +0100
|
||||
Subject: [PATCH 28/29] hrtimer: Implement support for softirq based hrtimers
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
hrtimer callbacks are always invoked in hard interrupt context. Several
|
||||
users in tree require soft interrupt context for their callbacks and
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
From: Tom Zanussi <tom.zanussi@linux.intel.com>
|
||||
Date: Thu, 21 Dec 2017 10:02:50 -0600
|
||||
Date: Mon, 15 Jan 2018 20:52:02 -0600
|
||||
Subject: [PATCH 28/37] tracing: Allow whitespace to surround hist trigger
|
||||
filter
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
The existing code only allows for one space before and after the 'if'
|
||||
specifying the filter for a hist trigger. Add code to make that more
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Anna-Maria Gleixner <anna-maria@linutronix.de>
|
||||
Date: Wed, 20 Dec 2017 17:13:18 +0100
|
||||
Subject: [PATCH 29/29] hrtimer: Implement SOFT/HARD clock base selection
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
All prerequisites to handle hrtimers for expiry in either hard or soft
|
||||
interrupt context are in place.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Tom Zanussi <tom.zanussi@linux.intel.com>
|
||||
Date: Thu, 21 Dec 2017 10:02:51 -0600
|
||||
Date: Mon, 15 Jan 2018 20:52:03 -0600
|
||||
Subject: [PATCH 29/37] tracing: Add cpu field for hist triggers
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
A common key to use in a histogram is the cpuid - add a new cpu
|
||||
'synthetic' field named 'cpu' for that purpose.
|
||||
|
@ -47,7 +47,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
};
|
||||
|
||||
struct var_defs {
|
||||
@@ -1168,6 +1169,16 @@ static u64 hist_field_timestamp(struct h
|
||||
@@ -1164,6 +1165,16 @@ static u64 hist_field_timestamp(struct h
|
||||
return ts;
|
||||
}
|
||||
|
||||
|
@ -64,7 +64,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
static struct hist_field *
|
||||
check_field_for_var_ref(struct hist_field *hist_field,
|
||||
struct hist_trigger_data *var_data,
|
||||
@@ -1606,6 +1617,8 @@ static const char *hist_field_name(struc
|
||||
@@ -1602,6 +1613,8 @@ static const char *hist_field_name(struc
|
||||
field_name = hist_field_name(field->operands[0], ++level);
|
||||
else if (field->flags & HIST_FIELD_FL_TIMESTAMP)
|
||||
field_name = "common_timestamp";
|
||||
|
@ -73,7 +73,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
else if (field->flags & HIST_FIELD_FL_EXPR ||
|
||||
field->flags & HIST_FIELD_FL_VAR_REF) {
|
||||
if (field->system) {
|
||||
@@ -2111,6 +2124,15 @@ static struct hist_field *create_hist_fi
|
||||
@@ -2109,6 +2122,15 @@ static struct hist_field *create_hist_fi
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@ From: Thomas Gleixner <tglx@linutronix.de>
|
|||
Date: Thu, 23 Nov 2017 16:39:11 +0100
|
||||
Subject: [PATCH 30/36] can/bcm: Replace hrtimer_tasklet with softirq based
|
||||
hrtimer
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
Switch the timer to HRTIMER_MODE_SOFT, which executed the timer
|
||||
callback in softirq context and remove the hrtimer_tasklet.
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
From: Tom Zanussi <tom.zanussi@linux.intel.com>
|
||||
Date: Thu, 21 Dec 2017 10:02:52 -0600
|
||||
Date: Mon, 15 Jan 2018 20:52:04 -0600
|
||||
Subject: [PATCH 30/37] tracing: Add hist trigger support for variable
|
||||
reference aliases
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
Add support for alias=$somevar where alias can be used as
|
||||
onmatch.xxx($alias).
|
||||
|
@ -24,8 +24,8 @@ uses that in the call instead:
|
|||
Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com>
|
||||
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
---
|
||||
kernel/trace/trace_events_hist.c | 58 ++++++++++++++++++++++++++++++++++++---
|
||||
1 file changed, 55 insertions(+), 3 deletions(-)
|
||||
kernel/trace/trace_events_hist.c | 74 +++++++++++++++++++++++++++++++++++----
|
||||
1 file changed, 67 insertions(+), 7 deletions(-)
|
||||
|
||||
--- a/kernel/trace/trace_events_hist.c
|
||||
+++ b/kernel/trace/trace_events_hist.c
|
||||
|
@ -37,7 +37,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
};
|
||||
|
||||
struct var_defs {
|
||||
@@ -1613,7 +1614,8 @@ static const char *hist_field_name(struc
|
||||
@@ -1609,7 +1610,8 @@ static const char *hist_field_name(struc
|
||||
|
||||
if (field->field)
|
||||
field_name = field->field->name;
|
||||
|
@ -47,7 +47,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
field_name = hist_field_name(field->operands[0], ++level);
|
||||
else if (field->flags & HIST_FIELD_FL_TIMESTAMP)
|
||||
field_name = "common_timestamp";
|
||||
@@ -2082,7 +2084,7 @@ static struct hist_field *create_hist_fi
|
||||
@@ -2080,7 +2082,7 @@ static struct hist_field *create_hist_fi
|
||||
|
||||
hist_field->hist_data = hist_data;
|
||||
|
||||
|
@ -56,7 +56,30 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
goto out; /* caller will populate */
|
||||
|
||||
if (flags & HIST_FIELD_FL_VAR_REF) {
|
||||
@@ -2382,6 +2384,28 @@ parse_field(struct hist_trigger_data *hi
|
||||
@@ -2217,10 +2219,18 @@ static int init_var_ref(struct hist_fiel
|
||||
}
|
||||
}
|
||||
|
||||
- ref_field->name = kstrdup(var_field->var.name, GFP_KERNEL);
|
||||
- if (!ref_field->name) {
|
||||
- err = -ENOMEM;
|
||||
- goto free;
|
||||
+ if (var_field->var.name) {
|
||||
+ ref_field->name = kstrdup(var_field->var.name, GFP_KERNEL);
|
||||
+ if (!ref_field->name) {
|
||||
+ err = -ENOMEM;
|
||||
+ goto free;
|
||||
+ }
|
||||
+ } else if (var_field->name) {
|
||||
+ ref_field->name = kstrdup(var_field->name, GFP_KERNEL);
|
||||
+ if (!ref_field->name) {
|
||||
+ err = -ENOMEM;
|
||||
+ goto free;
|
||||
+ }
|
||||
}
|
||||
|
||||
ref_field->type = kstrdup(var_field->type, GFP_KERNEL);
|
||||
@@ -2382,6 +2392,28 @@ parse_field(struct hist_trigger_data *hi
|
||||
return field;
|
||||
}
|
||||
|
||||
|
@ -82,10 +105,10 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
+ return alias;
|
||||
+}
|
||||
+
|
||||
struct hist_field *parse_atom(struct hist_trigger_data *hist_data,
|
||||
struct trace_event_file *file, char *str,
|
||||
unsigned long *flags, char *var_name)
|
||||
@@ -2415,6 +2439,13 @@ struct hist_field *parse_atom(struct his
|
||||
static struct hist_field *parse_atom(struct hist_trigger_data *hist_data,
|
||||
struct trace_event_file *file, char *str,
|
||||
unsigned long *flags, char *var_name)
|
||||
@@ -2415,6 +2447,13 @@ static struct hist_field *parse_atom(str
|
||||
if (hist_field) {
|
||||
hist_data->var_refs[hist_data->n_var_refs] = hist_field;
|
||||
hist_field->var_ref_idx = hist_data->n_var_refs++;
|
||||
|
@ -99,7 +122,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
return hist_field;
|
||||
}
|
||||
} else
|
||||
@@ -2519,6 +2550,26 @@ static int check_expr_operands(struct hi
|
||||
@@ -2515,6 +2554,26 @@ static int check_expr_operands(struct hi
|
||||
unsigned long operand1_flags = operand1->flags;
|
||||
unsigned long operand2_flags = operand2->flags;
|
||||
|
||||
|
@ -126,7 +149,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
if ((operand1_flags & HIST_FIELD_FL_TIMESTAMP_USECS) !=
|
||||
(operand2_flags & HIST_FIELD_FL_TIMESTAMP_USECS))
|
||||
return -EINVAL;
|
||||
@@ -4648,7 +4699,8 @@ static void hist_field_print(struct seq_
|
||||
@@ -4648,7 +4707,8 @@ static void hist_field_print(struct seq_
|
||||
else if (hist_field->flags & HIST_FIELD_FL_CPU)
|
||||
seq_puts(m, "cpu");
|
||||
else if (field_name) {
|
||||
|
|
|
@ -2,7 +2,7 @@ From: Thomas Gleixner <tglx@linutronix.de>
|
|||
Date: Thu, 23 Nov 2017 16:39:12 +0100
|
||||
Subject: [PATCH 31/36] mac80211_hwsim: Replace hrtimer tasklet with softirq
|
||||
hrtimer
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
Switch the timer to HRTIMER_MODE_SOFT, which executed the timer
|
||||
callback in softirq context and remove the hrtimer_tasklet.
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
From: Tom Zanussi <tom.zanussi@linux.intel.com>
|
||||
Date: Thu, 21 Dec 2017 10:02:53 -0600
|
||||
Date: Mon, 15 Jan 2018 20:52:05 -0600
|
||||
Subject: [PATCH 31/37] tracing: Add 'last error' error facility for hist
|
||||
triggers
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
With the addition of variables and actions, it's become necessary to
|
||||
provide more detailed error information to users about syntax errors.
|
||||
|
@ -27,8 +27,8 @@ Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com>
|
|||
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
---
|
||||
Documentation/trace/histogram.txt | 20 ++++
|
||||
kernel/trace/trace_events_hist.c | 159 ++++++++++++++++++++++++++++++++++----
|
||||
2 files changed, 166 insertions(+), 13 deletions(-)
|
||||
kernel/trace/trace_events_hist.c | 164 ++++++++++++++++++++++++++++++++++----
|
||||
2 files changed, 170 insertions(+), 14 deletions(-)
|
||||
|
||||
--- a/Documentation/trace/histogram.txt
|
||||
+++ b/Documentation/trace/histogram.txt
|
||||
|
@ -127,7 +127,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
static LIST_HEAD(synth_event_list);
|
||||
static DEFINE_MUTEX(synth_event_mutex);
|
||||
|
||||
@@ -1452,8 +1511,10 @@ static struct trace_event_file *find_var
|
||||
@@ -1448,8 +1507,10 @@ static struct trace_event_file *find_var
|
||||
continue;
|
||||
|
||||
if (find_var_field(var_hist_data, var_name)) {
|
||||
|
@ -139,7 +139,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
|
||||
found = file;
|
||||
}
|
||||
@@ -1502,6 +1563,7 @@ find_match_var(struct hist_trigger_data
|
||||
@@ -1498,6 +1559,7 @@ find_match_var(struct hist_trigger_data
|
||||
hist_field = find_file_var(file, var_name);
|
||||
if (hist_field) {
|
||||
if (found) {
|
||||
|
@ -147,7 +147,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
return ERR_PTR(-EINVAL);
|
||||
}
|
||||
|
||||
@@ -1785,6 +1847,7 @@ static int parse_assignment(char *str, s
|
||||
@@ -1781,6 +1843,7 @@ static int parse_assignment(char *str, s
|
||||
char *assignment;
|
||||
|
||||
if (attrs->n_assignments == TRACING_MAP_VARS_MAX) {
|
||||
|
@ -155,7 +155,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
ret = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
@@ -2327,6 +2390,10 @@ static struct hist_field *parse_var_ref(
|
||||
@@ -2335,6 +2398,10 @@ static struct hist_field *parse_var_ref(
|
||||
if (var_field)
|
||||
ref_field = create_var_ref(var_field, system, event_name);
|
||||
|
||||
|
@ -166,7 +166,15 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
return ref_field;
|
||||
}
|
||||
|
||||
@@ -2571,8 +2638,10 @@ static int check_expr_operands(struct hi
|
||||
@@ -2494,6 +2561,7 @@ static struct hist_field *parse_unary(st
|
||||
// we support only -(xxx) i.e. explicit parens required
|
||||
|
||||
if (level > 3) {
|
||||
+ hist_err("Too many subexpressions (3 max): ", str);
|
||||
ret = -EINVAL;
|
||||
goto free;
|
||||
}
|
||||
@@ -2575,8 +2643,10 @@ static int check_expr_operands(struct hi
|
||||
}
|
||||
|
||||
if ((operand1_flags & HIST_FIELD_FL_TIMESTAMP_USECS) !=
|
||||
|
@ -178,7 +186,19 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
|
||||
return 0;
|
||||
}
|
||||
@@ -2818,12 +2887,17 @@ create_field_var_hist(struct hist_trigge
|
||||
@@ -2591,8 +2661,10 @@ static struct hist_field *parse_expr(str
|
||||
int field_op, ret = -EINVAL;
|
||||
char *sep, *operand1_str;
|
||||
|
||||
- if (level > 3)
|
||||
+ if (level > 3) {
|
||||
+ hist_err("Too many subexpressions (3 max): ", str);
|
||||
return ERR_PTR(-EINVAL);
|
||||
+ }
|
||||
|
||||
field_op = contains_operator(str);
|
||||
|
||||
@@ -2826,12 +2898,17 @@ create_field_var_hist(struct hist_trigge
|
||||
char *cmd;
|
||||
int ret;
|
||||
|
||||
|
@ -197,7 +217,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
ret = PTR_ERR(file);
|
||||
return ERR_PTR(ret);
|
||||
}
|
||||
@@ -2835,8 +2909,11 @@ create_field_var_hist(struct hist_trigge
|
||||
@@ -2843,8 +2920,11 @@ create_field_var_hist(struct hist_trigge
|
||||
* yet a registered histogram so we can't use that.
|
||||
*/
|
||||
hist_data = find_compatible_hist(target_hist_data, file);
|
||||
|
@ -210,7 +230,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
|
||||
/* See if a synthetic field variable has already been created */
|
||||
event_var = find_synthetic_field_var(target_hist_data, subsys_name,
|
||||
@@ -2895,6 +2972,8 @@ create_field_var_hist(struct hist_trigge
|
||||
@@ -2903,6 +2983,8 @@ create_field_var_hist(struct hist_trigge
|
||||
kfree(cmd);
|
||||
kfree(var_hist->cmd);
|
||||
kfree(var_hist);
|
||||
|
@ -219,7 +239,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
return ERR_PTR(ret);
|
||||
}
|
||||
|
||||
@@ -2906,6 +2985,8 @@ create_field_var_hist(struct hist_trigge
|
||||
@@ -2914,6 +2996,8 @@ create_field_var_hist(struct hist_trigge
|
||||
if (IS_ERR_OR_NULL(event_var)) {
|
||||
kfree(var_hist->cmd);
|
||||
kfree(var_hist);
|
||||
|
@ -228,7 +248,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
return ERR_PTR(-EINVAL);
|
||||
}
|
||||
|
||||
@@ -3042,18 +3123,21 @@ static struct field_var *create_field_va
|
||||
@@ -3050,18 +3134,21 @@ static struct field_var *create_field_va
|
||||
int ret = 0;
|
||||
|
||||
if (hist_data->n_field_vars >= SYNTH_FIELDS_MAX) {
|
||||
|
@ -250,7 +270,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
kfree(val);
|
||||
ret = PTR_ERR(var);
|
||||
goto err;
|
||||
@@ -3196,13 +3280,17 @@ static int onmax_create(struct hist_trig
|
||||
@@ -3204,13 +3291,17 @@ static int onmax_create(struct hist_trig
|
||||
int ret = 0;
|
||||
|
||||
onmax_var_str = data->onmax.var_str;
|
||||
|
@ -270,7 +290,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
|
||||
flags = HIST_FIELD_FL_VAR_REF;
|
||||
ref_field = create_hist_field(hist_data, NULL, flags, NULL);
|
||||
@@ -3222,6 +3310,7 @@ static int onmax_create(struct hist_trig
|
||||
@@ -3230,6 +3321,7 @@ static int onmax_create(struct hist_trig
|
||||
data->onmax.max_var_ref_idx = var_ref_idx;
|
||||
max_var = create_var(hist_data, file, "max", sizeof(u64), "u64");
|
||||
if (IS_ERR(max_var)) {
|
||||
|
@ -278,7 +298,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
ret = PTR_ERR(max_var);
|
||||
goto out;
|
||||
}
|
||||
@@ -3236,6 +3325,7 @@ static int onmax_create(struct hist_trig
|
||||
@@ -3244,6 +3336,7 @@ static int onmax_create(struct hist_trig
|
||||
|
||||
field_var = create_target_field_var(hist_data, NULL, NULL, param);
|
||||
if (IS_ERR(field_var)) {
|
||||
|
@ -286,7 +306,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
ret = PTR_ERR(field_var);
|
||||
kfree(param);
|
||||
goto out;
|
||||
@@ -3268,6 +3358,7 @@ static int parse_action_params(char *par
|
||||
@@ -3276,6 +3369,7 @@ static int parse_action_params(char *par
|
||||
|
||||
param = strstrip(param);
|
||||
if (strlen(param) < 2) {
|
||||
|
@ -294,7 +314,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
ret = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
@@ -3443,6 +3534,9 @@ onmatch_find_var(struct hist_trigger_dat
|
||||
@@ -3451,6 +3545,9 @@ onmatch_find_var(struct hist_trigger_dat
|
||||
hist_field = find_event_var(hist_data, system, event, var);
|
||||
}
|
||||
|
||||
|
@ -304,7 +324,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
return hist_field;
|
||||
}
|
||||
|
||||
@@ -3510,6 +3604,7 @@ static int onmatch_create(struct hist_tr
|
||||
@@ -3518,6 +3615,7 @@ static int onmatch_create(struct hist_tr
|
||||
mutex_lock(&synth_event_mutex);
|
||||
event = find_synth_event(data->onmatch.synth_event_name);
|
||||
if (!event) {
|
||||
|
@ -312,7 +332,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
mutex_unlock(&synth_event_mutex);
|
||||
return -EINVAL;
|
||||
}
|
||||
@@ -3569,12 +3664,15 @@ static int onmatch_create(struct hist_tr
|
||||
@@ -3577,12 +3675,15 @@ static int onmatch_create(struct hist_tr
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -328,7 +348,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
ret = -EINVAL;
|
||||
goto err;
|
||||
}
|
||||
@@ -3604,15 +3702,22 @@ static struct action_data *onmatch_parse
|
||||
@@ -3612,15 +3713,22 @@ static struct action_data *onmatch_parse
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
match_event = strsep(&str, ")");
|
||||
|
@ -354,7 +374,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
|
||||
data->onmatch.match_event = kstrdup(match_event, GFP_KERNEL);
|
||||
if (!data->onmatch.match_event) {
|
||||
@@ -3627,12 +3732,16 @@ static struct action_data *onmatch_parse
|
||||
@@ -3635,12 +3743,16 @@ static struct action_data *onmatch_parse
|
||||
}
|
||||
|
||||
strsep(&str, ".");
|
||||
|
@ -373,7 +393,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
|
||||
data->onmatch.synth_event_name = kstrdup(synth_event_name, GFP_KERNEL);
|
||||
if (!data->onmatch.synth_event_name) {
|
||||
@@ -3641,8 +3750,10 @@ static struct action_data *onmatch_parse
|
||||
@@ -3649,8 +3761,10 @@ static struct action_data *onmatch_parse
|
||||
}
|
||||
|
||||
params = strsep(&str, ")");
|
||||
|
@ -385,7 +405,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
|
||||
ret = parse_action_params(params, data);
|
||||
if (ret)
|
||||
@@ -3717,7 +3828,9 @@ static int create_var_field(struct hist_
|
||||
@@ -3725,7 +3839,9 @@ static int create_var_field(struct hist_
|
||||
|
||||
if (WARN_ON(val_idx >= TRACING_MAP_VALS_MAX + TRACING_MAP_VARS_MAX))
|
||||
return -EINVAL;
|
||||
|
@ -395,7 +415,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
@@ -3798,6 +3911,7 @@ static int create_key_field(struct hist_
|
||||
@@ -3806,6 +3922,7 @@ static int create_key_field(struct hist_
|
||||
}
|
||||
|
||||
if (hist_field->flags & HIST_FIELD_FL_VAR_REF) {
|
||||
|
@ -403,7 +423,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
destroy_hist_field(hist_field, 0);
|
||||
ret = -EINVAL;
|
||||
goto out;
|
||||
@@ -3911,11 +4025,13 @@ static int parse_var_defs(struct hist_tr
|
||||
@@ -3919,11 +4036,13 @@ static int parse_var_defs(struct hist_tr
|
||||
|
||||
var_name = strsep(&field_str, "=");
|
||||
if (!var_name || !field_str) {
|
||||
|
@ -417,7 +437,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
ret = -EINVAL;
|
||||
goto free;
|
||||
}
|
||||
@@ -4669,6 +4785,11 @@ static int hist_show(struct seq_file *m,
|
||||
@@ -4677,6 +4796,11 @@ static int hist_show(struct seq_file *m,
|
||||
hist_trigger_show(m, data, n++);
|
||||
}
|
||||
|
||||
|
@ -429,7 +449,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
out_unlock:
|
||||
mutex_unlock(&event_mutex);
|
||||
|
||||
@@ -5033,6 +5154,7 @@ static int hist_register_trigger(char *g
|
||||
@@ -5041,6 +5165,7 @@ static int hist_register_trigger(char *g
|
||||
if (named_data) {
|
||||
if (!hist_trigger_match(data, named_data, named_data,
|
||||
true)) {
|
||||
|
@ -437,7 +457,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
ret = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
@@ -5052,13 +5174,16 @@ static int hist_register_trigger(char *g
|
||||
@@ -5060,13 +5185,16 @@ static int hist_register_trigger(char *g
|
||||
test->paused = false;
|
||||
else if (hist_data->attrs->clear)
|
||||
hist_clear(test);
|
||||
|
@ -455,7 +475,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
ret = -ENOENT;
|
||||
goto out;
|
||||
}
|
||||
@@ -5245,6 +5370,11 @@ static int event_hist_trigger_func(struc
|
||||
@@ -5253,6 +5381,11 @@ static int event_hist_trigger_func(struc
|
||||
char *trigger, *p;
|
||||
int ret = 0;
|
||||
|
||||
|
@ -467,7 +487,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
if (!param)
|
||||
return -EINVAL;
|
||||
|
||||
@@ -5383,6 +5513,9 @@ static int event_hist_trigger_func(struc
|
||||
@@ -5391,6 +5524,9 @@ static int event_hist_trigger_func(struc
|
||||
/* Just return zero, not the number of registered triggers */
|
||||
ret = 0;
|
||||
out:
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Tom Zanussi <tom.zanussi@linux.intel.com>
|
||||
Date: Thu, 21 Dec 2017 10:02:54 -0600
|
||||
Date: Mon, 15 Jan 2018 20:52:06 -0600
|
||||
Subject: [PATCH 32/37] tracing: Add inter-event hist trigger Documentation
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
Add background and details on inter-event hist triggers, including
|
||||
hist variables, synthetic events, and actions.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
Date: Thu, 23 Nov 2017 16:39:13 +0100
|
||||
Subject: [PATCH 32/36] xfrm: Replace hrtimer tasklet with softirq hrtimer
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
Switch the timer to HRTIMER_MODE_SOFT, which executed the timer
|
||||
callback in softirq context and remove the hrtimer_tasklet.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
Date: Thu, 23 Nov 2017 16:39:14 +0100
|
||||
Subject: [PATCH 33/36] softirq: Remove tasklet_hrtimer
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
There are no more tasklet_hrtimer users of this interface.
|
||||
Remove it.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Tom Zanussi <tom.zanussi@linux.intel.com>
|
||||
Date: Thu, 21 Dec 2017 10:02:55 -0600
|
||||
Date: Mon, 15 Jan 2018 20:52:07 -0600
|
||||
Subject: [PATCH 33/37] tracing: Make tracing_set_clock() non-static
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
Allow tracing code outside of trace.c to access tracing_set_clock().
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
Date: Thu, 23 Nov 2017 16:39:15 +0100
|
||||
Subject: [PATCH 34/36] ALSA/dummy: Replace tasklet with softirq hrtimer
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
The tasklet is used to defer the execution of snd_pcm_period_elapsed() to
|
||||
the softirq context. Using the HRTIMER_MODE_SOFT mode invokes the timer
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Tom Zanussi <tom.zanussi@linux.intel.com>
|
||||
Date: Thu, 21 Dec 2017 10:02:56 -0600
|
||||
Date: Mon, 15 Jan 2018 20:52:08 -0600
|
||||
Subject: [PATCH 34/37] tracing: Add a clock attribute for hist triggers
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
The default clock if timestamps are used in a histogram is "global".
|
||||
If timestamps aren't used, the clock is irrelevant.
|
||||
|
@ -47,7 +47,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
bool pause;
|
||||
bool cont;
|
||||
bool clear;
|
||||
@@ -1780,6 +1781,7 @@ static void destroy_hist_trigger_attrs(s
|
||||
@@ -1776,6 +1777,7 @@ static void destroy_hist_trigger_attrs(s
|
||||
kfree(attrs->sort_key_str);
|
||||
kfree(attrs->keys_str);
|
||||
kfree(attrs->vals_str);
|
||||
|
@ -55,7 +55,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
kfree(attrs);
|
||||
}
|
||||
|
||||
@@ -1835,6 +1837,19 @@ static int parse_assignment(char *str, s
|
||||
@@ -1831,6 +1833,19 @@ static int parse_assignment(char *str, s
|
||||
ret = -ENOMEM;
|
||||
goto out;
|
||||
}
|
||||
|
@ -75,7 +75,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
} else if (strncmp(str, "size=", strlen("size=")) == 0) {
|
||||
int map_bits = parse_map_size(str);
|
||||
|
||||
@@ -1899,6 +1914,14 @@ static struct hist_trigger_attrs *parse_
|
||||
@@ -1895,6 +1910,14 @@ static struct hist_trigger_attrs *parse_
|
||||
goto free;
|
||||
}
|
||||
|
||||
|
@ -90,7 +90,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
return attrs;
|
||||
free:
|
||||
destroy_hist_trigger_attrs(attrs);
|
||||
@@ -4925,6 +4948,8 @@ static int event_hist_trigger_print(stru
|
||||
@@ -4936,6 +4959,8 @@ static int event_hist_trigger_print(stru
|
||||
seq_puts(m, ".descending");
|
||||
}
|
||||
seq_printf(m, ":size=%u", (1 << hist_data->map->map_bits));
|
||||
|
@ -99,7 +99,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
|
||||
print_actions_spec(m, hist_data);
|
||||
|
||||
@@ -5192,7 +5217,6 @@ static int hist_register_trigger(char *g
|
||||
@@ -5203,7 +5228,6 @@ static int hist_register_trigger(char *g
|
||||
data->paused = true;
|
||||
|
||||
if (named_data) {
|
||||
|
@ -107,7 +107,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
data->private_data = named_data->private_data;
|
||||
set_named_trigger_data(data, named_data);
|
||||
data->ops = &event_hist_trigger_named_ops;
|
||||
@@ -5204,10 +5228,22 @@ static int hist_register_trigger(char *g
|
||||
@@ -5215,10 +5239,22 @@ static int hist_register_trigger(char *g
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
From: Tom Zanussi <tom.zanussi@linux.intel.com>
|
||||
Date: Thu, 21 Dec 2017 10:02:57 -0600
|
||||
Date: Mon, 15 Jan 2018 20:52:09 -0600
|
||||
Subject: [PATCH 35/37] tracing: Increase trace_recursive_lock() limit for
|
||||
synthetic events
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
Synthetic event generation needs to happen while the current event is
|
||||
still in progress, so add 1 to the trace_recursive_lock() recursion
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
Date: Thu, 23 Nov 2017 16:39:16 +0100
|
||||
Subject: [PATCH 35/36] usb/gadget/NCM: Replace tasklet with softirq hrtimer
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
The tx_tasklet tasklet is used in invoke the hrtimer (task_timer) in
|
||||
softirq context. This can be also achieved without the tasklet but
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
Date: Thu, 23 Nov 2017 16:39:17 +0100
|
||||
Subject: [PATCH 36/36] net/mvpp2: Replace tasklet with softirq hrtimer
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
The tx_done_tasklet tasklet is used in invoke the hrtimer
|
||||
(mvpp2_hr_timer_cb) in softirq context. This can be also achieved without
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
From: Tom Zanussi <tom.zanussi@linux.intel.com>
|
||||
Date: Thu, 21 Dec 2017 10:02:58 -0600
|
||||
Date: Mon, 15 Jan 2018 20:52:10 -0600
|
||||
Subject: [PATCH 36/37] tracing: Add inter-event blurb to HIST_TRIGGERS config
|
||||
option
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
So that users know that inter-event tracing is supported as part of
|
||||
the HIST_TRIGGERS option, include text to that effect in the help
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
From: Rajvi Jingar <rajvi.jingar@intel.com>
|
||||
Date: Thu, 21 Dec 2017 10:02:59 -0600
|
||||
Date: Mon, 15 Jan 2018 20:52:11 -0600
|
||||
Subject: [PATCH 37/37] selftests: ftrace: Add inter-event hist triggers
|
||||
testcases
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
This adds inter-event hist triggers testcases which covers following:
|
||||
- create/remove synthetic event
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: "Yadi.hu" <yadi.hu@windriver.com>
|
||||
Date: Wed, 10 Dec 2014 10:32:09 +0800
|
||||
Subject: ARM: enable irq in translation/section permission fault handlers
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
Probably happens on all ARM, with
|
||||
CONFIG_PREEMPT_RT_FULL
|
||||
|
|
|
@ -2,7 +2,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
Date: Thu, 21 Sep 2017 15:35:57 +0200
|
||||
Subject: Bluetooth: avoid recursive locking in
|
||||
hci_send_to_channel()
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
Mart reported a deadlock in -RT in the call path:
|
||||
hci_send_monitor_ctrl_event() -> hci_send_to_channel()
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
Date: Thu, 21 Mar 2013 19:01:05 +0100
|
||||
Subject: printk: Drop the logbuf_lock more often
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
The lock is hold with irgs off. The latency drops 500us+ on my arm bugs
|
||||
with a "full" buffer after executing "dmesg" on the shell.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Josh Cartwright <joshc@ni.com>
|
||||
Date: Thu, 11 Feb 2016 11:54:01 -0600
|
||||
Subject: KVM: arm/arm64: downgrade preempt_disable()d region to migrate_disable()
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
kvm_arch_vcpu_ioctl_run() disables the use of preemption when updating
|
||||
the vgic and timer states to prevent the calling task from migrating to
|
||||
|
|
|
@ -5,7 +5,7 @@ Cc: Anna Schumaker <anna.schumaker@netapp.com>,
|
|||
linux-nfs@vger.kernel.org, linux-kernel@vger.kernel.org,
|
||||
tglx@linutronix.de
|
||||
Subject: NFSv4: replace seqcount_t with a seqlock_t
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
The raw_write_seqcount_begin() in nfs4_reclaim_open_state() bugs me
|
||||
because it maps to preempt_disable() in -RT which I can't have at this
|
||||
|
|
|
@ -2,7 +2,7 @@ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|||
Date: Thu, 21 Sep 2017 14:25:13 +0200
|
||||
Subject: [PATCH] RCU: we need to skip that warning but only on sleeping
|
||||
locks
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
This check is okay for upstream. On RT we trigger this while blocking on
|
||||
sleeping lock. In this case, it is okay to schedule() within a RCU
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
Date: Thu, 23 Nov 2017 17:51:51 +0100
|
||||
Subject: [PATCH] Revert "fs: jbd2: pull your plug when waiting for space"
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
This reverts commit "fs: jbd2: pull your plug when waiting for space".
|
||||
This was a duct-tape fix which shouldn't be needed since commit
|
||||
|
|
|
@ -2,7 +2,7 @@ From: "Steven Rostedt (VMware)" <rostedt@goodmis.org>
|
|||
Date: Wed, 22 Nov 2017 07:31:19 -0500
|
||||
Subject: [PATCH] Revert "memcontrol: Prevent scheduling while atomic in cgroup
|
||||
code"
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
The commit "memcontrol: Prevent scheduling while atomic in cgroup code"
|
||||
fixed this issue:
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Steven Rostedt <rostedt@goodmis.org>
|
||||
Date: Wed, 13 Feb 2013 09:26:05 -0500
|
||||
Subject: acpi/rt: Convert acpi_gbl_hardware lock back to a raw_spinlock_t
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
We hit the following bug with 3.6-rt:
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
Date: Sat, 27 May 2017 19:02:06 +0200
|
||||
Subject: kernel/sched/core: add migrate_disable()
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
---
|
||||
include/linux/preempt.h | 23 ++++++++
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
||||
Date: Wed, 11 Oct 2017 17:43:49 +0200
|
||||
Subject: apparmor: use a locallock instead preempt_disable()
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
get_buffers() disables preemption which acts as a lock for the per-CPU
|
||||
variable. Since we can't disable preemption here on RT, a local_lock is
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
From: Anders Roxell <anders.roxell@linaro.org>
|
||||
Date: Thu, 14 May 2015 17:52:17 +0200
|
||||
Subject: arch/arm64: Add lazy preempt support
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt11.tar.xz
|
||||
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patches-4.14.15-rt13.tar.xz
|
||||
|
||||
arm64 is missing support for PREEMPT_RT. The main feature which is
|
||||
lacking is support for lazy preemption. The arch-specific entry code,
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue