···11831183 functions that can be changed at run time by the11841184 set_graph_notrace file in the debugfs tracing directory.1185118511861186+ ftrace_graph_max_depth=<uint>11871187+ [FTRACE] Used with the function graph tracer. This is11881188+ the max depth it will trace into a function. This value11891189+ can be changed at run time by the max_graph_depth file11901190+ in the tracefs tracing directory. default: 0 (no limit)11911191+11861192 gamecon.map[2|3]=11871193 [HW,JOY] Multisystem joystick and NES/SNES/PSX pad11881194 support via parallel port (up to 5 devices per port)
+1-1
Documentation/trace/kprobetrace.txt
···1212functions). Unlike the Tracepoint based event, this can be added and removed1313dynamically, on the fly.14141515-To enable this feature, build your kernel with CONFIG_KPROBE_EVENT=y.1515+To enable this feature, build your kernel with CONFIG_KPROBE_EVENTS=y.16161717Similar to the events tracer, this doesn't need to be activated via1818current_tracer. Instead of that, add probe points via
+1-1
Documentation/trace/uprobetracer.txt
···77Overview88--------99Uprobe based trace events are similar to kprobe based trace events.1010-To enable this feature, build your kernel with CONFIG_UPROBE_EVENT=y.1010+To enable this feature, build your kernel with CONFIG_UPROBE_EVENTS=y.11111212Similar to the kprobe-event tracer, this doesn't need to be activated via1313current_tracer. Instead of that, add probe points via
···1414 */15151616#include <linux/oprofile.h>1717-#include <linux/sched.h>1717+#include <linux/ptrace.h>1818#include <linux/uaccess.h>19192020/* The first two words of each frame on the stack look like this if we have
···160160#define OV5_PFO_HW_ENCR 0x1120 /* PFO Encryption Accelerator */161161#define OV5_SUB_PROCESSORS 0x1501 /* 1,2,or 4 Sub-Processors supported */162162#define OV5_XIVE_EXPLOIT 0x1701 /* XIVE exploitation supported */163163-#define OV5_MMU_RADIX_300 0x1880 /* ISA v3.00 radix MMU supported */164164-#define OV5_MMU_HASH_300 0x1840 /* ISA v3.00 hash MMU supported */165165-#define OV5_MMU_SEGM_RADIX 0x1820 /* radix mode (no segmentation) */166166-#define OV5_MMU_PROC_TBL 0x1810 /* hcall selects SLB or proc table */167167-#define OV5_MMU_SLB 0x1800 /* always use SLB */168168-#define OV5_MMU_GTSE 0x1808 /* Guest translation shootdown */163163+/* MMU Base Architecture */164164+#define OV5_MMU_SUPPORT 0x18C0 /* MMU Mode Support Mask */165165+#define OV5_MMU_HASH 0x1800 /* Hash MMU Only */166166+#define OV5_MMU_RADIX 0x1840 /* Radix MMU Only */167167+#define OV5_MMU_EITHER 0x1880 /* Hash or Radix Supported */168168+#define OV5_MMU_DYNAMIC 0x18C0 /* Hash or Radix Can Switch Later */169169+#define OV5_NMMU 0x1820 /* Nest MMU Available */170170+/* Hash Table Extensions */171171+#define OV5_HASH_SEG_TBL 0x1980 /* In Memory Segment Tables Available */172172+#define OV5_HASH_GTSE 0x1940 /* Guest Translation Shoot Down Avail */173173+/* Radix Table Extensions */174174+#define OV5_RADIX_GTSE 0x1A40 /* Guest Translation Shoot Down Avail */169175170176/* Option Vector 6: IBM PAPR hints */171177#define OV6_LINUX 0x02 /* Linux is our OS */
+6-4
arch/powerpc/kernel/idle_book3s.S
···276276 */277277 andis. r4,r3,PSSCR_EC_ESL_MASK_SHIFTED278278 clrldi r3,r3,60 /* r3 = Bits[60:63] = Requested Level (RL) */279279- bne 1f279279+ bne .Lhandle_esl_ec_set280280 IDLE_STATE_ENTER_SEQ(PPC_STOP)281281 li r3,0 /* Since we didn't lose state, return 0 */282282 b pnv_wakeup_noloss283283+284284+.Lhandle_esl_ec_set:283285/*284286 * Check if the requested state is a deep idle state.285287 */286286-1: LOAD_REG_ADDRBASE(r5,pnv_first_deep_stop_state)288288+ LOAD_REG_ADDRBASE(r5,pnv_first_deep_stop_state)287289 ld r4,ADDROFF(pnv_first_deep_stop_state)(r5)288290 cmpd r3,r4289289- bge 2f291291+ bge .Lhandle_deep_stop290292 IDLE_STATE_ENTER_SEQ_NORET(PPC_STOP)291291-2:293293+.Lhandle_deep_stop:292294/*293295 * Entering deep idle state.294296 * Clear thread bit in PACA_CORE_IDLE_STATE, save SPRs to
+113-7
arch/powerpc/kernel/prom_init.c
···168168static unsigned long __initdata prom_tce_alloc_end;169169#endif170170171171+static bool __initdata prom_radix_disable;172172+173173+struct platform_support {174174+ bool hash_mmu;175175+ bool radix_mmu;176176+ bool radix_gtse;177177+};178178+171179/* Platforms codes are now obsolete in the kernel. Now only used within this172180 * file and ultimately gone too. Feel free to change them if you need, they173181 * are not shared with anything outside of this file anymore···634626 prom_memory_limit = ALIGN(prom_memory_limit, 0x1000000);635627#endif636628 }629629+630630+ opt = strstr(prom_cmd_line, "disable_radix");631631+ if (opt) {632632+ prom_debug("Radix disabled from cmdline\n");633633+ prom_radix_disable = true;634634+ }637635}638636639637#if defined(CONFIG_PPC_PSERIES) || defined(CONFIG_PPC_POWERNV)···709695 u8 byte22;710696 u8 intarch;711697 u8 mmu;698698+ u8 hash_ext;699699+ u8 radix_ext;712700} __packed;713701714702struct option_vector6 {···866850 .reserved3 = 0,867851 .subprocessors = 1,868852 .intarch = 0,869869- .mmu = OV5_FEAT(OV5_MMU_RADIX_300) | OV5_FEAT(OV5_MMU_HASH_300) |870870- OV5_FEAT(OV5_MMU_PROC_TBL) | OV5_FEAT(OV5_MMU_GTSE),853853+ .mmu = 0,854854+ .hash_ext = 0,855855+ .radix_ext = 0,871856 },872857873858 /* option vector 6: IBM PAPR hints */···10079901008991}1009992993993+static void __init prom_parse_mmu_model(u8 val,994994+ struct platform_support *support)995995+{996996+ switch (val) {997997+ case OV5_FEAT(OV5_MMU_DYNAMIC):998998+ case OV5_FEAT(OV5_MMU_EITHER): /* Either Available */999999+ prom_debug("MMU - either supported\n");10001000+ support->radix_mmu = !prom_radix_disable;10011001+ support->hash_mmu = true;10021002+ break;10031003+ case OV5_FEAT(OV5_MMU_RADIX): /* Only Radix */10041004+ prom_debug("MMU - radix only\n");10051005+ if (prom_radix_disable) {10061006+ /*10071007+ * If we __have__ to do radix, we're better off ignoring10081008+ * the command line rather than not booting.10091009+ */10101010+ prom_printf("WARNING: Ignoring cmdline option disable_radix\n");10111011+ }10121012+ support->radix_mmu = true;10131013+ break;10141014+ case OV5_FEAT(OV5_MMU_HASH):10151015+ prom_debug("MMU - hash only\n");10161016+ support->hash_mmu = true;10171017+ break;10181018+ default:10191019+ prom_debug("Unknown mmu support option: 0x%x\n", val);10201020+ break;10211021+ }10221022+}10231023+10241024+static void __init prom_parse_platform_support(u8 index, u8 val,10251025+ struct platform_support *support)10261026+{10271027+ switch (index) {10281028+ case OV5_INDX(OV5_MMU_SUPPORT): /* MMU Model */10291029+ prom_parse_mmu_model(val & OV5_FEAT(OV5_MMU_SUPPORT), support);10301030+ break;10311031+ case OV5_INDX(OV5_RADIX_GTSE): /* Radix Extensions */10321032+ if (val & OV5_FEAT(OV5_RADIX_GTSE)) {10331033+ prom_debug("Radix - GTSE supported\n");10341034+ support->radix_gtse = true;10351035+ }10361036+ break;10371037+ }10381038+}10391039+10401040+static void __init prom_check_platform_support(void)10411041+{10421042+ struct platform_support supported = {10431043+ .hash_mmu = false,10441044+ .radix_mmu = false,10451045+ .radix_gtse = false10461046+ };10471047+ int prop_len = prom_getproplen(prom.chosen,10481048+ "ibm,arch-vec-5-platform-support");10491049+ if (prop_len > 1) {10501050+ int i;10511051+ u8 vec[prop_len];10521052+ prom_debug("Found ibm,arch-vec-5-platform-support, len: %d\n",10531053+ prop_len);10541054+ prom_getprop(prom.chosen, "ibm,arch-vec-5-platform-support",10551055+ &vec, sizeof(vec));10561056+ for (i = 0; i < prop_len; i += 2) {10571057+ prom_debug("%d: index = 0x%x val = 0x%x\n", i / 210581058+ , vec[i]10591059+ , vec[i + 1]);10601060+ prom_parse_platform_support(vec[i], vec[i + 1],10611061+ &supported);10621062+ }10631063+ }10641064+10651065+ if (supported.radix_mmu && supported.radix_gtse) {10661066+ /* Radix preferred - but we require GTSE for now */10671067+ prom_debug("Asking for radix with GTSE\n");10681068+ ibm_architecture_vec.vec5.mmu = OV5_FEAT(OV5_MMU_RADIX);10691069+ ibm_architecture_vec.vec5.radix_ext = OV5_FEAT(OV5_RADIX_GTSE);10701070+ } else if (supported.hash_mmu) {10711071+ /* Default to hash mmu (if we can) */10721072+ prom_debug("Asking for hash\n");10731073+ ibm_architecture_vec.vec5.mmu = OV5_FEAT(OV5_MMU_HASH);10741074+ } else {10751075+ /* We're probably on a legacy hypervisor */10761076+ prom_debug("Assuming legacy hash support\n");10771077+ }10781078+}1010107910111080static void __init prom_send_capabilities(void)10121081{10131082 ihandle root;10141083 prom_arg_t ret;10151084 u32 cores;10851085+10861086+ /* Check ibm,arch-vec-5-platform-support and fixup vec5 if required */10871087+ prom_check_platform_support();1016108810171089 root = call_prom("open", 1, 1, ADDR("/"));10181090 if (root != 0) {···30992993 */31002994 prom_check_initrd(r3, r4);3101299529962996+ /*29972997+ * Do early parsing of command line29982998+ */29992999+ early_cmdline_parse();30003000+31023001#if defined(CONFIG_PPC_PSERIES) || defined(CONFIG_PPC_POWERNV)31033002 /*31043003 * On pSeries, inform the firmware about our capabilities···31183007 */31193008 if (of_platform != PLATFORM_POWERMAC)31203009 copy_and_flush(0, kbase, 0x100, 0);31213121-31223122- /*31233123- * Do early parsing of command line31243124- */31253125- early_cmdline_parse();3126301031273011 /*31283012 * Initialize memory management within prom_init
···91919292static void icp_opal_set_cpu_priority(unsigned char cppr)9393{9494+ /*9595+ * Here be dragons. The caller has asked to allow only IPI's and not9696+ * external interrupts. But OPAL XIVE doesn't support that. So instead9797+ * of allowing no interrupts allow all. That's still not right, but9898+ * currently the only caller who does this is xics_migrate_irqs_away()9999+ * and it works in that case.100100+ */101101+ if (cppr >= DEFAULT_PRIORITY)102102+ cppr = LOWEST_PRIORITY;103103+94104 xics_set_base_cppr(cppr);95105 opal_int_set_cppr(cppr);96106 iosync();
+14-3
arch/powerpc/sysdev/xics/xics-common.c
···2020#include <linux/of.h>2121#include <linux/slab.h>2222#include <linux/spinlock.h>2323+#include <linux/delay.h>23242425#include <asm/prom.h>2526#include <asm/io.h>···199198 /* Remove ourselves from the global interrupt queue */200199 xics_set_cpu_giq(xics_default_distrib_server, 0);201200202202- /* Allow IPIs again... */203203- icp_ops->set_priority(DEFAULT_PRIORITY);204204-205201 for_each_irq_desc(virq, desc) {206202 struct irq_chip *chip;207203 long server;···253255unlock:254256 raw_spin_unlock_irqrestore(&desc->lock, flags);255257 }258258+259259+ /* Allow "sufficient" time to drop any inflight IRQ's */260260+ mdelay(5);261261+262262+ /*263263+ * Allow IPIs again. This is done at the very end, after migrating all264264+ * interrupts, the expectation is that we'll only get woken up by an IPI265265+ * interrupt beyond this point, but leave externals masked just to be266266+ * safe. If we're using icp-opal this may actually allow all267267+ * interrupts anyway, but that should be OK.268268+ */269269+ icp_ops->set_priority(DEFAULT_PRIORITY);270270+256271}257272#endif /* CONFIG_HOTPLUG_CPU */258273
···176176CONFIG_SKY2=y177177CONFIG_FORCEDETH=y178178CONFIG_8139TOO=y179179+CONFIG_R8169=y179180CONFIG_FDDI=y180181CONFIG_INPUT_POLLDEV=y181182# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
+1-1
arch/x86/events/amd/core.c
···604604 return &amd_f15_PMC20;605605 }606606 case AMD_EVENT_NB:607607- /* moved to perf_event_amd_uncore.c */607607+ /* moved to uncore.c */608608 return &emptyconstraint;609609 default:610610 return &emptyconstraint;
+1-1
arch/x86/events/intel/cstate.c
···11/*22- * perf_event_intel_cstate.c: support cstate residency counters22+ * Support cstate residency counters33 *44 * Copyright (C) 2015, Intel Corp.55 * Author: Kan Liang (kan.liang@intel.com)
+1-1
arch/x86/events/intel/rapl.c
···11/*22- * perf_event_intel_rapl.c: support Intel RAPL energy consumption counters22+ * Support Intel RAPL energy consumption counters33 * Copyright (C) 2013 Google, Inc., Stephane Eranian44 *55 * Intel RAPL interface is specified in the IA-32 Manual Vol3b
···158158 clocksource_register_hz(&hyperv_cs_tsc, NSEC_PER_SEC/100);159159 return;160160 }161161+register_msr_cs:161162#endif162163 /*163164 * For 32 bit guests just use the MSR based mechanism for reading164165 * the partition counter.165166 */166167167167-register_msr_cs:168168 hyperv_cs = &hyperv_cs_msr;169169 if (ms_hyperv.features & HV_X64_MSR_TIME_REF_COUNT_AVAILABLE)170170 clocksource_register_hz(&hyperv_cs_msr, NSEC_PER_SEC/100);
+9-6
arch/x86/include/asm/pkeys.h
···4646static inline4747bool mm_pkey_is_allocated(struct mm_struct *mm, int pkey)4848{4949+ /*5050+ * "Allocated" pkeys are those that have been returned5151+ * from pkey_alloc(). pkey 0 is special, and never5252+ * returned from pkey_alloc().5353+ */5454+ if (pkey <= 0)5555+ return false;5656+ if (pkey >= arch_max_pkey())5757+ return false;4958 return mm_pkey_allocation_map(mm) & (1U << pkey);5059}5160···9182static inline9283int mm_pkey_free(struct mm_struct *mm, int pkey)9384{9494- /*9595- * pkey 0 is special, always allocated and can never9696- * be freed.9797- */9898- if (!pkey)9999- return -EINVAL;10085 if (!mm_pkey_is_allocated(mm, pkey))10186 return -EINVAL;10287
···162162 if (c->x86_power & (1 << 8)) {163163 set_cpu_cap(c, X86_FEATURE_CONSTANT_TSC);164164 set_cpu_cap(c, X86_FEATURE_NONSTOP_TSC);165165- if (check_tsc_unstable())166166- clear_sched_clock_stable();167167- } else {168168- clear_sched_clock_stable();169165 }170166171167 /* Penwell and Cloverview have the TSC which doesn't sleep on S3 */
···6767#endif68686969/* Ensure if the instruction can be boostable */7070-extern int can_boost(kprobe_opcode_t *instruction);7070+extern int can_boost(kprobe_opcode_t *instruction, void *addr);7171/* Recover instruction if given address is probed */7272extern unsigned long recover_probed_instruction(kprobe_opcode_t *buf,7373 unsigned long addr);
+3-3
arch/x86/kernel/kprobes/core.c
···167167 * Returns non-zero if opcode is boostable.168168 * RIP relative instructions are adjusted at copying time in 64 bits mode169169 */170170-int can_boost(kprobe_opcode_t *opcodes)170170+int can_boost(kprobe_opcode_t *opcodes, void *addr)171171{172172 kprobe_opcode_t opcode;173173 kprobe_opcode_t *orig_opcodes = opcodes;174174175175- if (search_exception_tables((unsigned long)opcodes))175175+ if (search_exception_tables((unsigned long)addr))176176 return 0; /* Page fault may occur on this address. */177177178178retry:···417417 * __copy_instruction can modify the displacement of the instruction,418418 * but it doesn't affect boostable check.419419 */420420- if (can_boost(p->ainsn.insn))420420+ if (can_boost(p->ainsn.insn, p->addr))421421 p->ainsn.boostable = 0;422422 else423423 p->ainsn.boostable = -1;
+1-1
arch/x86/kernel/kprobes/opt.c
···178178179179 while (len < RELATIVEJUMP_SIZE) {180180 ret = __copy_instruction(dest + len, src + len);181181- if (!ret || !can_boost(dest + len))181181+ if (!ret || !can_boost(dest + len, src + len))182182 return -EINVAL;183183 len += ret;184184 }
+16
arch/x86/kernel/reboot.c
···223223 DMI_MATCH(DMI_BOARD_NAME, "P4S800"),224224 },225225 },226226+ { /* Handle problems with rebooting on ASUS EeeBook X205TA */227227+ .callback = set_acpi_reboot,228228+ .ident = "ASUS EeeBook X205TA",229229+ .matches = {230230+ DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),231231+ DMI_MATCH(DMI_PRODUCT_NAME, "X205TAW"),232232+ },233233+ },234234+ { /* Handle problems with rebooting on ASUS EeeBook X205TAW */235235+ .callback = set_acpi_reboot,236236+ .ident = "ASUS EeeBook X205TAW",237237+ .matches = {238238+ DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),239239+ DMI_MATCH(DMI_PRODUCT_NAME, "X205TAW"),240240+ },241241+ },226242227243 /* Certec */228244 { /* Handle problems with rebooting on Certec BPC600 */
+23-12
arch/x86/kernel/tsc.c
···327327{328328 return paravirt_sched_clock();329329}330330+331331+static inline bool using_native_sched_clock(void)332332+{333333+ return pv_time_ops.sched_clock == native_sched_clock;334334+}330335#else331336unsigned long long332337sched_clock(void) __attribute__((alias("native_sched_clock")));338338+339339+static inline bool using_native_sched_clock(void) { return true; }333340#endif334341335342int check_tsc_unstable(void)···11191112{11201113 if (tsc_unstable)11211114 return;11151115+11221116 tsc_unstable = 1;11231123- clear_sched_clock_stable();11171117+ if (using_native_sched_clock())11181118+ clear_sched_clock_stable();11241119 disable_sched_clock_irqtime();11251120 pr_info("Marking TSC unstable due to clocksource watchdog\n");11261121}···1144113511451136void mark_tsc_unstable(char *reason)11461137{11471147- if (!tsc_unstable) {11481148- tsc_unstable = 1;11381138+ if (tsc_unstable)11391139+ return;11401140+11411141+ tsc_unstable = 1;11421142+ if (using_native_sched_clock())11491143 clear_sched_clock_stable();11501150- disable_sched_clock_irqtime();11511151- pr_info("Marking TSC unstable due to %s\n", reason);11521152- /* Change only the rating, when not registered */11531153- if (clocksource_tsc.mult)11541154- clocksource_mark_unstable(&clocksource_tsc);11551155- else {11561156- clocksource_tsc.flags |= CLOCK_SOURCE_UNSTABLE;11571157- clocksource_tsc.rating = 0;11581158- }11441144+ disable_sched_clock_irqtime();11451145+ pr_info("Marking TSC unstable due to %s\n", reason);11461146+ /* Change only the rating, when not registered */11471147+ if (clocksource_tsc.mult) {11481148+ clocksource_mark_unstable(&clocksource_tsc);11491149+ } else {11501150+ clocksource_tsc.flags |= CLOCK_SOURCE_UNSTABLE;11511151+ clocksource_tsc.rating = 0;11591152 }11601153}11611154
+9
arch/x86/pci/common.c
···735735 pcibios_disable_irq(dev);736736}737737738738+#ifdef CONFIG_ACPI_HOTPLUG_IOAPIC739739+void pcibios_release_device(struct pci_dev *dev)740740+{741741+ if (atomic_dec_return(&dev->enable_cnt) >= 0)742742+ pcibios_disable_device(dev);743743+744744+}745745+#endif746746+738747int pci_ext_cfg_avail(void)739748{740749 if (raw_pci_ext_ops)
-1
arch/x86/platform/uv/tlb_uv.c
···1847184718481848 ops.write_payload_first(pnode, first);18491849 ops.write_payload_last(pnode, last);18501850- ops.write_g_sw_ack(pnode, 0xffffUL);1851185018521851 /* in effect, all msg_type's are set to MSG_NOOP */18531852 memset(pqp, 0, sizeof(struct bau_pq_entry) * DEST_Q_SIZE);
+6-5
arch/x86/purgatory/purgatory.c
···1111 */12121313#include "sha256.h"1414+#include "purgatory.h"1415#include "../boot/string.h"15161617struct sha_region {···1918 unsigned long len;2019};21202222-unsigned long backup_dest = 0;2323-unsigned long backup_src = 0;2424-unsigned long backup_sz = 0;2121+static unsigned long backup_dest;2222+static unsigned long backup_src;2323+static unsigned long backup_sz;25242626-u8 sha256_digest[SHA256_DIGEST_SIZE] = { 0 };2525+static u8 sha256_digest[SHA256_DIGEST_SIZE] = { 0 };27262827struct sha_region sha_regions[16] = {};2928···4039 return 0;4140}42414343-int verify_sha256_digest(void)4242+static int verify_sha256_digest(void)4443{4544 struct sha_region *ptr, *end;4645 u8 digest[SHA256_DIGEST_SIZE];
···99 * This source code is licensed under the GNU General Public License,1010 * Version 2. See the file COPYING for more details.1111 */1212+#include "purgatory.h"12131314 .text1415 .globl purgatory_start
···4545 size = sizeof(secboot);4646 status = get_efi_var(efi_SecureBoot_name, &efi_variable_guid,4747 NULL, &size, &secboot);4848+ if (status == EFI_NOT_FOUND)4949+ return efi_secureboot_mode_disabled;4850 if (status != EFI_SUCCESS)4951 goto out_efi_err;5052···80788179out_efi_err:8280 pr_efi_err(sys_table_arg, "Could not determine UEFI Secure Boot status.\n");8383- if (status == EFI_NOT_FOUND)8484- return efi_secureboot_mode_disabled;8581 return efi_secureboot_mode_unknown;8682}
+2-1
drivers/irqchip/irq-crossbar.c
···198198199199static int __init crossbar_of_init(struct device_node *node)200200{201201- int i, size, max = 0, reserved = 0, entry;201201+ int i, size, reserved = 0;202202+ u32 max = 0, entry;202203 const __be32 *irqsr;203204 int ret = -ENOMEM;204205
+47
drivers/xen/swiotlb-xen.c
···681681 return 0;682682}683683EXPORT_SYMBOL_GPL(xen_swiotlb_set_dma_mask);684684+685685+/*686686+ * Create userspace mapping for the DMA-coherent memory.687687+ * This function should be called with the pages from the current domain only,688688+ * passing pages mapped from other domains would lead to memory corruption.689689+ */690690+int691691+xen_swiotlb_dma_mmap(struct device *dev, struct vm_area_struct *vma,692692+ void *cpu_addr, dma_addr_t dma_addr, size_t size,693693+ unsigned long attrs)694694+{695695+#if defined(CONFIG_ARM) || defined(CONFIG_ARM64)696696+ if (__generic_dma_ops(dev)->mmap)697697+ return __generic_dma_ops(dev)->mmap(dev, vma, cpu_addr,698698+ dma_addr, size, attrs);699699+#endif700700+ return dma_common_mmap(dev, vma, cpu_addr, dma_addr, size);701701+}702702+EXPORT_SYMBOL_GPL(xen_swiotlb_dma_mmap);703703+704704+/*705705+ * This function should be called with the pages from the current domain only,706706+ * passing pages mapped from other domains would lead to memory corruption.707707+ */708708+int709709+xen_swiotlb_get_sgtable(struct device *dev, struct sg_table *sgt,710710+ void *cpu_addr, dma_addr_t handle, size_t size,711711+ unsigned long attrs)712712+{713713+#if defined(CONFIG_ARM) || defined(CONFIG_ARM64)714714+ if (__generic_dma_ops(dev)->get_sgtable) {715715+#if 0716716+ /*717717+ * This check verifies that the page belongs to the current domain and718718+ * is not one mapped from another domain.719719+ * This check is for debug only, and should not go to production build720720+ */721721+ unsigned long bfn = PHYS_PFN(dma_to_phys(dev, handle));722722+ BUG_ON (!page_is_ram(bfn));723723+#endif724724+ return __generic_dma_ops(dev)->get_sgtable(dev, sgt, cpu_addr,725725+ handle, size, attrs);726726+ }727727+#endif728728+ return dma_common_get_sgtable(dev, sgt, cpu_addr, handle, size);729729+}730730+EXPORT_SYMBOL_GPL(xen_swiotlb_get_sgtable);
···9090struct static_key {9191 atomic_t enabled;9292/*9393+ * Note:9494+ * To make anonymous unions work with old compilers, the static9595+ * initialization of them requires brackets. This creates a dependency9696+ * on the order of the struct with the initializers. If any fields9797+ * are added, STATIC_KEY_INIT_TRUE and STATIC_KEY_INIT_FALSE may need9898+ * to be modified.9999+ *93100 * bit 0 => 1 if key is initially true94101 * 0 if initially false95102 * bit 1 => 1 if points to struct static_key_mod···173166 */174167#define STATIC_KEY_INIT_TRUE \175168 { .enabled = { 1 }, \176176- .entries = (void *)JUMP_TYPE_TRUE }169169+ { .entries = (void *)JUMP_TYPE_TRUE } }177170#define STATIC_KEY_INIT_FALSE \178171 { .enabled = { 0 }, \179179- .entries = (void *)JUMP_TYPE_FALSE }172172+ { .entries = (void *)JUMP_TYPE_FALSE } }180173181174#else /* !HAVE_JUMP_LABEL */182175
···32623262 if (depth) {32633263 hlock = curr->held_locks + depth - 1;32643264 if (hlock->class_idx == class_idx && nest_lock) {32653265- if (hlock->references)32653265+ if (hlock->references) {32663266+ /*32673267+ * Check: unsigned int references:12, overflow.32683268+ */32693269+ if (DEBUG_LOCKS_WARN_ON(hlock->references == (1 << 12)-1))32703270+ return 0;32713271+32663272 hlock->references++;32673267- else32733273+ } else {32683274 hlock->references = 2;32753275+ }3269327632703277 return 1;32713278 }
+3-3
kernel/locking/test-ww_mutex.c
···50505151 if (mtx->flags & TEST_MTX_TRY) {5252 while (!ww_mutex_trylock(&mtx->mutex))5353- cpu_relax();5353+ cond_resched();5454 } else {5555 ww_mutex_lock(&mtx->mutex, NULL);5656 }···8888 ret = -EINVAL;8989 break;9090 }9191- cpu_relax();9191+ cond_resched();9292 } while (time_before(jiffies, timeout));9393 } else {9494 ret = wait_for_completion_timeout(&mtx.done, TIMEOUT);···627627 if (ret)628628 return ret;629629630630- ret = stress(4096, hweight32(STRESS_ALL)*ncpus, 1<<12, STRESS_ALL);630630+ ret = stress(4095, hweight32(STRESS_ALL)*ncpus, 1<<12, STRESS_ALL);631631 if (ret)632632 return ret;633633
+8-3
kernel/sched/core.c
···32873287 struct task_struct *p;3288328832893289 /*32903290- * Optimization: we know that if all tasks are in32913291- * the fair class we can call that function directly:32903290+ * Optimization: we know that if all tasks are in the fair class we can32913291+ * call that function directly, but only if the @prev task wasn't of a32923292+ * higher scheduling class, because otherwise those loose the32933293+ * opportunity to pull in more work from other CPUs.32923294 */32933293- if (likely(rq->nr_running == rq->cfs.h_nr_running)) {32953295+ if (likely((prev->sched_class == &idle_sched_class ||32963296+ prev->sched_class == &fair_sched_class) &&32973297+ rq->nr_running == rq->cfs.h_nr_running)) {32983298+32943299 p = fair_sched_class.pick_next_task(rq, prev, rf);32953300 if (unlikely(p == RETRY_TASK))32963301 goto again;
+1-1
kernel/sched/fair.c
···57995799 * Due to large variance we need a large fuzz factor; hackbench in58005800 * particularly is sensitive here.58015801 */58025802- if ((avg_idle / 512) < avg_cost)58025802+ if (sched_feat(SIS_AVG_CPU) && (avg_idle / 512) < avg_cost)58035803 return -1;5804580458055805 time = local_clock();
+5
kernel/sched/features.h
···5151 */5252SCHED_FEAT(TTWU_QUEUE, true)53535454+/*5555+ * When doing wakeups, attempt to limit superfluous scans of the LLC domain.5656+ */5757+SCHED_FEAT(SIS_AVG_CPU, false)5858+5459#ifdef HAVE_RT_PUSH_IPI5560/*5661 * In order to avoid a thundering herd attack of CPUs that are
···429429430430 If unsure, say N.431431432432-config KPROBE_EVENT432432+config KPROBE_EVENTS433433 depends on KPROBES434434 depends on HAVE_REGS_AND_STACK_ACCESS_API435435 bool "Enable kprobes-based dynamic events"···447447 This option is also required by perf-probe subcommand of perf tools.448448 If you want to use perf tools, this option is strongly recommended.449449450450-config UPROBE_EVENT450450+config UPROBE_EVENTS451451 bool "Enable uprobes-based dynamic events"452452 depends on ARCH_SUPPORTS_UPROBES453453 depends on MMU···466466467467config BPF_EVENTS468468 depends on BPF_SYSCALL469469- depends on (KPROBE_EVENT || UPROBE_EVENT) && PERF_EVENTS469469+ depends on (KPROBE_EVENTS || UPROBE_EVENTS) && PERF_EVENTS470470 bool471471 default y472472 help
···44164416}44174417__setup("ftrace_graph_notrace=", set_graph_notrace_function);4418441844194419+static int __init set_graph_max_depth_function(char *str)44204420+{44214421+ if (!str)44224422+ return 0;44234423+ fgraph_max_depth = simple_strtoul(str, NULL, 0);44244424+ return 1;44254425+}44264426+__setup("ftrace_graph_max_depth=", set_graph_max_depth_function);44274427+44194428static void __init set_ftrace_early_graph(char *buf, int enable)44204429{44214430 int ret;44224431 char *func;44234432 struct ftrace_hash *hash;4424443344254425- if (enable)44264426- hash = ftrace_graph_hash;44274427- else44284428- hash = ftrace_graph_notrace_hash;44344434+ hash = alloc_ftrace_hash(FTRACE_HASH_DEFAULT_BITS);44354435+ if (WARN_ON(!hash))44364436+ return;4429443744304438 while (buf) {44314439 func = strsep(&buf, ",");···44434435 printk(KERN_DEBUG "ftrace: function %s not "44444436 "traceable\n", func);44454437 }44384438+44394439+ if (enable)44404440+ ftrace_graph_hash = hash;44414441+ else44424442+ ftrace_graph_notrace_hash = hash;44464443}44474444#endif /* CONFIG_FUNCTION_GRAPH_TRACER */44484445···55015488 * Normally the mcount trampoline will call the ops->func, but there55025489 * are times that it should not. For example, if the ops does not55035490 * have its own recursion protection, then it should call the55045504- * ftrace_ops_recurs_func() instead.54915491+ * ftrace_ops_assist_func() instead.55055492 *55065493 * Returns the function that the trampoline should call for @ops.55075494 */
+5-5
kernel/trace/trace.c
···43414341 "\t\t\t traces\n"43424342#endif43434343#endif /* CONFIG_STACK_TRACER */43444344-#ifdef CONFIG_KPROBE_EVENT43444344+#ifdef CONFIG_KPROBE_EVENTS43454345 " kprobe_events\t\t- Add/remove/show the kernel dynamic events\n"43464346 "\t\t\t Write into this file to define/undefine new trace events.\n"43474347#endif43484348-#ifdef CONFIG_UPROBE_EVENT43484348+#ifdef CONFIG_UPROBE_EVENTS43494349 " uprobe_events\t\t- Add/remove/show the userspace dynamic events\n"43504350 "\t\t\t Write into this file to define/undefine new trace events.\n"43514351#endif43524352-#if defined(CONFIG_KPROBE_EVENT) || defined(CONFIG_UPROBE_EVENT)43524352+#if defined(CONFIG_KPROBE_EVENTS) || defined(CONFIG_UPROBE_EVENTS)43534353 "\t accepts: event-definitions (one definition per line)\n"43544354 "\t Format: p|r[:[<group>/]<event>] <place> [<args>]\n"43554355 "\t -:[<group>/]<event>\n"43564356-#ifdef CONFIG_KPROBE_EVENT43564356+#ifdef CONFIG_KPROBE_EVENTS43574357 "\t place: [<module>:]<symbol>[+<offset>]|<memaddr>\n"43584358#endif43594359-#ifdef CONFIG_UPROBE_EVENT43594359+#ifdef CONFIG_UPROBE_EVENTS43604360 "\t place: <path>:<offset>\n"43614361#endif43624362 "\t args: <name>=fetcharg[:type]\n"
···3131#error Instruction buffer size too small3232#endif33333434-/* Based on branch_type() from perf_event_intel_lbr.c */3434+/* Based on branch_type() from arch/x86/events/intel/lbr.c */3535static void intel_pt_insn_decoder(struct insn *insn,3636 struct intel_pt_insn *intel_pt_insn)3737{
···3636void benchmark(void);3737void idr_checks(void);3838void ida_checks(void);3939+void ida_thread_tests(void);39404041struct item *4142item_tag_set(struct radix_tree_root *root, unsigned long index, int tag);
+4-2
tools/testing/selftests/powerpc/harness.c
···114114115115 rc = run_test(test_function, name);116116117117- if (rc == MAGIC_SKIP_RETURN_VALUE)117117+ if (rc == MAGIC_SKIP_RETURN_VALUE) {118118 test_skip(name);119119- else119119+ /* so that skipped test is not marked as failed */120120+ rc = 0;121121+ } else120122 test_finish(name, rc);121123122124 return rc;