···19192020- clock-frequency : The frequency of the main counter, in Hz. Optional.21212222+- always-on : a boolean property. If present, the timer is powered through an2323+ always-on power domain, therefore it never loses context.2424+2225Example:23262427 timer {
···3333- max-frame-size: See ethernet.txt file in the same directory3434- clocks: If present, the first clock should be the GMAC main clock,3535 further clocks may be specified in derived bindings.3636-- clocks-names: One name for each entry in the clocks property, the3636+- clock-names: One name for each entry in the clocks property, the3737 first one should be "stmmaceth".38383939Examples:
···1313 "ti,tlv320aic3111" - TLV320AIC3111 (stereo speaker amp, MiniDSP)14141515- reg - <int> - I2C slave address1616+- HPVDD-supply, SPRVDD-supply, SPLVDD-supply, AVDD-supply, IOVDD-supply,1717+ DVDD-supply : power supplies for the device as covered in1818+ Documentation/devicetree/bindings/regulator/regulator.txt161917201821Optional properties:···2724 3 or MICBIAS_AVDD - MICBIAS output is connected to AVDD2825 If this node is not mentioned or if the value is unknown, then2926 micbias is set to 2.0V.3030-- HPVDD-supply, SPRVDD-supply, SPLVDD-supply, AVDD-supply, IOVDD-supply,3131- DVDD-supply : power supplies for the device as covered in3232- Documentation/devicetree/bindings/regulator/regulator.txt33273428CODEC output pins:3529 * HPL
+12-1
MAINTAINERS
···34853485F: drivers/extcon/34863486F: Documentation/extcon/3487348734883488+EXYNOS DP DRIVER34893489+M: Jingoo Han <jg1.han@samsung.com>34903490+L: dri-devel@lists.freedesktop.org34913491+S: Maintained34923492+F: drivers/gpu/drm/exynos/exynos_dp*34933493+34883494EXYNOS MIPI DISPLAY DRIVERS34893495M: Inki Dae <inki.dae@samsung.com>34903496M: Donghwa Lee <dh09.lee@samsung.com>···35563550F: include/uapi/scsi/fc/3557355135583552FILE LOCKING (flock() and fcntl()/lockf())35593559-M: Jeff Layton <jlayton@redhat.com>35533553+M: Jeff Layton <jlayton@poochiereds.net>35603554M: J. Bruce Fields <bfields@fieldses.org>35613555L: linux-fsdevel@vger.kernel.org35623556S: Maintained···5114510851155109KERNEL VIRTUAL MACHINE (KVM) FOR ARM51165110M: Christoffer Dall <christoffer.dall@linaro.org>51115111+M: Marc Zyngier <marc.zyngier@arm.com>51125112+L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)51175113L: kvmarm@lists.cs.columbia.edu51185114W: http://systems.cs.columbia.edu/projects/kvm-arm51195115S: Supported51205116F: arch/arm/include/uapi/asm/kvm*51215117F: arch/arm/include/asm/kvm*51225118F: arch/arm/kvm/51195119+F: virt/kvm/arm/51205120+F: include/kvm/arm_*5123512151245122KERNEL VIRTUAL MACHINE FOR ARM64 (KVM/arm64)51235123+M: Christoffer Dall <christoffer.dall@linaro.org>51255124M: Marc Zyngier <marc.zyngier@arm.com>51265125L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)51275126L: kvmarm@lists.cs.columbia.edu
···614614615615resume_kernel_mode:616616617617-#ifdef CONFIG_PREEMPT618618-619619- ; This is a must for preempt_schedule_irq()617617+ ; Disable Interrupts from this point on618618+ ; CONFIG_PREEMPT: This is a must for preempt_schedule_irq()619619+ ; !CONFIG_PREEMPT: To ensure restore_regs is intr safe620620 IRQ_DISABLE r9621621+622622+#ifdef CONFIG_PREEMPT621623622624 ; Can't preempt if preemption disabled623625 GET_CURR_THR_INFO_FROM_SP r10
···2323 select HAVE_KVM_CPU_RELAX_INTERCEPT2424 select KVM_MMIO2525 select KVM_ARM_HOST2626- depends on ARM_VIRT_EXT && ARM_LPAE2626+ depends on ARM_VIRT_EXT && ARM_LPAE && !CPU_BIG_ENDIAN2727 ---help---2828 Support hosting virtualized guest machines. You will also2929 need to select one or more of the processor modules below.
···2222#include <linux/slab.h>2323#include <linux/dma-mapping.h>2424#include <linux/dma-contiguous.h>2525+#include <linux/of.h>2626+#include <linux/platform_device.h>2527#include <linux/vmalloc.h>2628#include <linux/swiotlb.h>2929+#include <linux/amba/bus.h>27302831#include <asm/cacheflush.h>2932···308305};309306EXPORT_SYMBOL(coherent_swiotlb_dma_ops);310307308308+static int dma_bus_notifier(struct notifier_block *nb,309309+ unsigned long event, void *_dev)310310+{311311+ struct device *dev = _dev;312312+313313+ if (event != BUS_NOTIFY_ADD_DEVICE)314314+ return NOTIFY_DONE;315315+316316+ if (of_property_read_bool(dev->of_node, "dma-coherent"))317317+ set_dma_ops(dev, &coherent_swiotlb_dma_ops);318318+319319+ return NOTIFY_OK;320320+}321321+322322+static struct notifier_block platform_bus_nb = {323323+ .notifier_call = dma_bus_notifier,324324+};325325+326326+static struct notifier_block amba_bus_nb = {327327+ .notifier_call = dma_bus_notifier,328328+};329329+311330extern int swiotlb_late_init_with_default_size(size_t default_size);312331313332static int __init swiotlb_late_init(void)314333{315334 size_t swiotlb_size = min(SZ_64M, MAX_ORDER_NR_PAGES << PAGE_SHIFT);316335317317- dma_ops = &coherent_swiotlb_dma_ops;336336+ /*337337+ * These must be registered before of_platform_populate().338338+ */339339+ bus_register_notifier(&platform_bus_type, &platform_bus_nb);340340+ bus_register_notifier(&amba_bustype, &amba_bus_nb);341341+342342+ dma_ops = &noncoherent_swiotlb_dma_ops;318343319344 return swiotlb_late_init_with_default_size(swiotlb_size);320345}321321-subsys_initcall(swiotlb_late_init);346346+arch_initcall(swiotlb_late_init);322347323348#define PREALLOC_DMA_DEBUG_ENTRIES 4096324349
+3
arch/arm64/mm/mmu.c
···374374 if (pmd_none(*pmd))375375 return 0;376376377377+ if (pmd_sect(*pmd))378378+ return pfn_valid(pmd_pfn(*pmd));379379+377380 pte = pte_offset_kernel(pmd, addr);378381 if (pte_none(*pte))379382 return 0;
-37
arch/hexagon/include/asm/barrier.h
···11-/*22- * Memory barrier definitions for the Hexagon architecture33- *44- * Copyright (c) 2010-2011, The Linux Foundation. All rights reserved.55- *66- * This program is free software; you can redistribute it and/or modify77- * it under the terms of the GNU General Public License version 2 and88- * only version 2 as published by the Free Software Foundation.99- *1010- * This program is distributed in the hope that it will be useful,1111- * but WITHOUT ANY WARRANTY; without even the implied warranty of1212- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the1313- * GNU General Public License for more details.1414- *1515- * You should have received a copy of the GNU General Public License1616- * along with this program; if not, write to the Free Software1717- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA1818- * 02110-1301, USA.1919- */2020-2121-#ifndef _ASM_BARRIER_H2222-#define _ASM_BARRIER_H2323-2424-#define rmb() barrier()2525-#define read_barrier_depends() barrier()2626-#define wmb() barrier()2727-#define mb() barrier()2828-#define smp_rmb() barrier()2929-#define smp_read_barrier_depends() barrier()3030-#define smp_wmb() barrier()3131-#define smp_mb() barrier()3232-3333-/* Set a value and use a memory barrier. Used by the scheduler somewhere. */3434-#define set_mb(var, value) \3535- do { var = value; mb(); } while (0)3636-3737-#endif /* _ASM_BARRIER_H */
···139139 * edit the command line passed to vmlinux (by setting /chosen/bootargs).140140 * The buffer is put in it's own section so that tools may locate it easier.141141 */142142-static char cmdline[COMMAND_LINE_SIZE]142142+static char cmdline[BOOT_COMMAND_LINE_SIZE]143143 __attribute__((__section__("__builtin_cmdline")));144144145145static void prep_cmdline(void *chosen)146146{147147 if (cmdline[0] == '\0')148148- getprop(chosen, "bootargs", cmdline, COMMAND_LINE_SIZE-1);148148+ getprop(chosen, "bootargs", cmdline, BOOT_COMMAND_LINE_SIZE-1);149149150150 printf("\n\rLinux/PowerPC load: %s", cmdline);151151 /* If possible, edit the command line */152152 if (console_ops.edit_cmdline)153153- console_ops.edit_cmdline(cmdline, COMMAND_LINE_SIZE);153153+ console_ops.edit_cmdline(cmdline, BOOT_COMMAND_LINE_SIZE);154154 printf("\n\r");155155156156 /* Put the command line back into the devtree for the kernel */···174174 * built-in command line wasn't set by an external tool */175175 if ((loader_info.cmdline_len > 0) && (cmdline[0] == '\0'))176176 memmove(cmdline, loader_info.cmdline,177177- min(loader_info.cmdline_len, COMMAND_LINE_SIZE-1));177177+ min(loader_info.cmdline_len, BOOT_COMMAND_LINE_SIZE-1));178178179179 if (console_ops.open && (console_ops.open() < 0))180180 exit();
+1-1
arch/powerpc/boot/ops.h
···1515#include "types.h"1616#include "string.h"17171818-#define COMMAND_LINE_SIZE 5121818+#define BOOT_COMMAND_LINE_SIZE 20481919#define MAX_PATH_LEN 2562020#define MAX_PROP_LEN 256 /* What should this be? */2121
+2-2
arch/powerpc/boot/ps3.c
···4747 * The buffer is put in it's own section so that tools may locate it easier.4848 */49495050-static char cmdline[COMMAND_LINE_SIZE]5050+static char cmdline[BOOT_COMMAND_LINE_SIZE]5151 __attribute__((__section__("__builtin_cmdline")));52525353static void prep_cmdline(void *chosen)5454{5555 if (cmdline[0] == '\0')5656- getprop(chosen, "bootargs", cmdline, COMMAND_LINE_SIZE-1);5656+ getprop(chosen, "bootargs", cmdline, BOOT_COMMAND_LINE_SIZE-1);5757 else5858 setprop_str(chosen, "bootargs", cmdline);5959
+19-23
arch/powerpc/include/asm/opal.h
···4141 * size except the last one in the list to be as well.4242 */4343struct opal_sg_entry {4444- void *data;4545- long length;4444+ __be64 data;4545+ __be64 length;4646};47474848-/* sg list */4848+/* SG list */4949struct opal_sg_list {5050- unsigned long num_entries;5151- struct opal_sg_list *next;5050+ __be64 length;5151+ __be64 next;5252 struct opal_sg_entry entry[];5353};5454···858858int64_t opal_lpc_read(uint32_t chip_id, enum OpalLPCAddressType addr_type,859859 uint32_t addr, __be32 *data, uint32_t sz);860860861861-int64_t opal_read_elog(uint64_t buffer, size_t size, uint64_t log_id);862862-int64_t opal_get_elog_size(uint64_t *log_id, size_t *size, uint64_t *elog_type);861861+int64_t opal_read_elog(uint64_t buffer, uint64_t size, uint64_t log_id);862862+int64_t opal_get_elog_size(__be64 *log_id, __be64 *size, __be64 *elog_type);863863int64_t opal_write_elog(uint64_t buffer, uint64_t size, uint64_t offset);864864int64_t opal_send_ack_elog(uint64_t log_id);865865void opal_resend_pending_logs(void);···868868int64_t opal_manage_flash(uint8_t op);869869int64_t opal_update_flash(uint64_t blk_list);870870int64_t opal_dump_init(uint8_t dump_type);871871-int64_t opal_dump_info(uint32_t *dump_id, uint32_t *dump_size);872872-int64_t opal_dump_info2(uint32_t *dump_id, uint32_t *dump_size, uint32_t *dump_type);871871+int64_t opal_dump_info(__be32 *dump_id, __be32 *dump_size);872872+int64_t opal_dump_info2(__be32 *dump_id, __be32 *dump_size, __be32 *dump_type);873873int64_t opal_dump_read(uint32_t dump_id, uint64_t buffer);874874int64_t opal_dump_ack(uint32_t dump_id);875875int64_t opal_dump_resend_notification(void);876876877877-int64_t opal_get_msg(uint64_t buffer, size_t size);878878-int64_t opal_check_completion(uint64_t buffer, size_t size, uint64_t token);877877+int64_t opal_get_msg(uint64_t buffer, uint64_t size);878878+int64_t opal_check_completion(uint64_t buffer, uint64_t size, uint64_t token);879879int64_t opal_sync_host_reboot(void);880880int64_t opal_get_param(uint64_t token, uint32_t param_id, uint64_t buffer,881881- size_t length);881881+ uint64_t length);882882int64_t opal_set_param(uint64_t token, uint32_t param_id, uint64_t buffer,883883- size_t length);883883+ uint64_t length);884884int64_t opal_sensor_read(uint32_t sensor_hndl, int token, __be32 *sensor_data);885885886886/* Internal functions */887887-extern int early_init_dt_scan_opal(unsigned long node, const char *uname, int depth, void *data);887887+extern int early_init_dt_scan_opal(unsigned long node, const char *uname,888888+ int depth, void *data);888889extern int early_init_dt_scan_recoverable_ranges(unsigned long node,889890 const char *uname, int depth, void *data);890891···893892extern int opal_put_chars(uint32_t vtermno, const char *buf, int total_len);894893895894extern void hvc_opal_init_early(void);896896-897897-/* Internal functions */898898-extern int early_init_dt_scan_opal(unsigned long node, const char *uname,899899- int depth, void *data);900895901896extern int opal_notifier_register(struct notifier_block *nb);902897extern int opal_notifier_unregister(struct notifier_block *nb);···903906extern void opal_notifier_disable(void);904907extern void opal_notifier_update_evt(uint64_t evt_mask, uint64_t evt_val);905908906906-extern int opal_get_chars(uint32_t vtermno, char *buf, int count);907907-extern int opal_put_chars(uint32_t vtermno, const char *buf, int total_len);908908-909909extern int __opal_async_get_token(void);910910extern int opal_async_get_token_interruptible(void);911911extern int __opal_async_release_token(int token);912912extern int opal_async_release_token(int token);913913extern int opal_async_wait_response(uint64_t token, struct opal_msg *msg);914914extern int opal_get_sensor_data(u32 sensor_hndl, u32 *sensor_data);915915-916916-extern void hvc_opal_init_early(void);917915918916struct rtc_time;919917extern int opal_set_rtc_time(struct rtc_time *tm);···928936extern int opal_resync_timebase(void);929937930938extern void opal_lpc_init(void);939939+940940+struct opal_sg_list *opal_vmalloc_to_sg_list(void *vmalloc_addr,941941+ unsigned long vmalloc_size);942942+void opal_free_sg_list(struct opal_sg_list *sg);931943932944#endif /* __ASSEMBLY__ */933945
···705705 if (rtas_token("ibm,update-flash-64-and-reboot") ==706706 RTAS_UNKNOWN_SERVICE) {707707 pr_info("rtas_flash: no firmware flash support\n");708708- return 1;708708+ return -EINVAL;709709 }710710711711 rtas_validate_flash_data.buf = kzalloc(VALIDATE_BUF_SIZE, GFP_KERNEL);
+17-1
arch/powerpc/kvm/book3s_hv_rmhandlers.S
···242242 */243243 .globl kvm_start_guest244244kvm_start_guest:245245+246246+ /* Set runlatch bit the minute you wake up from nap */247247+ mfspr r1, SPRN_CTRLF248248+ ori r1, r1, 1249249+ mtspr SPRN_CTRLT, r1250250+245251 ld r2,PACATOC(r13)246252247253 li r0,KVM_HWTHREAD_IN_KVM···315309 li r0, KVM_HWTHREAD_IN_NAP316310 stb r0, HSTATE_HWTHREAD_STATE(r13)317311kvm_do_nap:312312+ /* Clear the runlatch bit before napping */313313+ mfspr r2, SPRN_CTRLF314314+ clrrdi r2, r2, 1315315+ mtspr SPRN_CTRLT, r2316316+318317 li r3, LPCR_PECE0319318 mfspr r4, SPRN_LPCR320319 rlwimi r4, r3, 0, LPCR_PECE0 | LPCR_PECE1···2010199920112000 /*20122001 * Take a nap until a decrementer or external or doobell interrupt20132013- * occurs, with PECE1, PECE0 and PECEDP set in LPCR20022002+ * occurs, with PECE1, PECE0 and PECEDP set in LPCR. Also clear the20032003+ * runlatch bit before napping.20142004 */20052005+ mfspr r2, SPRN_CTRLF20062006+ clrrdi r2, r2, 120072007+ mtspr SPRN_CTRLT, r220082008+20152009 li r0,120162010 stb r0,HSTATE_HWTHREAD_REQ(r13)20172011 mfspr r5,SPRN_LPCR
+16-22
arch/powerpc/mm/hash_native_64.c
···8282 va &= ~((1ul << mmu_psize_defs[apsize].shift) - 1);8383 va |= penc << 12;8484 va |= ssize << 8;8585- /* Add AVAL part */8686- if (psize != apsize) {8787- /*8888- * MPSS, 64K base page size and 16MB parge page size8989- * We don't need all the bits, but rest of the bits9090- * must be ignored by the processor.9191- * vpn cover upto 65 bits of va. (0...65) and we need9292- * 58..64 bits of va.9393- */9494- va |= (vpn & 0xfe);9595- }8585+ /*8686+ * AVAL bits:8787+ * We don't need all the bits, but rest of the bits8888+ * must be ignored by the processor.8989+ * vpn cover upto 65 bits of va. (0...65) and we need9090+ * 58..64 bits of va.9191+ */9292+ va |= (vpn & 0xfe); /* AVAL */9693 va |= 1; /* L */9794 asm volatile(ASM_FTR_IFCLR("tlbie %0,1", PPC_TLBIE(%1,%0), %2)9895 : : "r" (va), "r"(0), "i" (CPU_FTR_ARCH_206)···130133 va &= ~((1ul << mmu_psize_defs[apsize].shift) - 1);131134 va |= penc << 12;132135 va |= ssize << 8;133133- /* Add AVAL part */134134- if (psize != apsize) {135135- /*136136- * MPSS, 64K base page size and 16MB parge page size137137- * We don't need all the bits, but rest of the bits138138- * must be ignored by the processor.139139- * vpn cover upto 65 bits of va. (0...65) and we need140140- * 58..64 bits of va.141141- */142142- va |= (vpn & 0xfe);143143- }136136+ /*137137+ * AVAL bits:138138+ * We don't need all the bits, but rest of the bits139139+ * must be ignored by the processor.140140+ * vpn cover upto 65 bits of va. (0...65) and we need141141+ * 58..64 bits of va.142142+ */143143+ va |= (vpn & 0xfe);144144 va |= 1; /* L */145145 asm volatile(".long 0x7c000224 | (%0 << 11) | (1 << 21)"146146 : : "r"(va) : "memory");
+25-12
arch/powerpc/perf/hv-24x7.c
···155155 return copy_len;156156}157157158158-static unsigned long h_get_24x7_catalog_page(char page[static 4096],159159- u32 version, u32 index)158158+static unsigned long h_get_24x7_catalog_page_(unsigned long phys_4096,159159+ unsigned long version,160160+ unsigned long index)160161{161161- WARN_ON(!IS_ALIGNED((unsigned long)page, 4096));162162- return plpar_hcall_norets(H_GET_24X7_CATALOG_PAGE,163163- virt_to_phys(page),162162+ pr_devel("h_get_24x7_catalog_page(0x%lx, %lu, %lu)",163163+ phys_4096,164164 version,165165 index);166166+ WARN_ON(!IS_ALIGNED(phys_4096, 4096));167167+ return plpar_hcall_norets(H_GET_24X7_CATALOG_PAGE,168168+ phys_4096,169169+ version,170170+ index);171171+}172172+173173+static unsigned long h_get_24x7_catalog_page(char page[],174174+ u64 version, u32 index)175175+{176176+ return h_get_24x7_catalog_page_(virt_to_phys(page),177177+ version, index);166178}167179168180static ssize_t catalog_read(struct file *filp, struct kobject *kobj,···185173 ssize_t ret = 0;186174 size_t catalog_len = 0, catalog_page_len = 0, page_count = 0;187175 loff_t page_offset = 0;188188- uint32_t catalog_version_num = 0;176176+ uint64_t catalog_version_num = 0;189177 void *page = kmem_cache_alloc(hv_page_cache, GFP_USER);190178 struct hv_24x7_catalog_page_0 *page_0 = page;191179 if (!page)···197185 goto e_free;198186 }199187200200- catalog_version_num = be32_to_cpu(page_0->version);188188+ catalog_version_num = be64_to_cpu(page_0->version);201189 catalog_page_len = be32_to_cpu(page_0->length);202190 catalog_len = catalog_page_len * 4096;203191···220208 page, 4096, page_offset * 4096);221209e_free:222210 if (hret)223223- pr_err("h_get_24x7_catalog_page(ver=%d, page=%lld) failed: rc=%ld\n",224224- catalog_version_num, page_offset, hret);211211+ pr_err("h_get_24x7_catalog_page(ver=%lld, page=%lld) failed:"212212+ " rc=%ld\n",213213+ catalog_version_num, page_offset, hret);225214 kfree(page);226215227216 pr_devel("catalog_read: offset=%lld(%lld) count=%zu(%zu) catalog_len=%zu(%zu) => %zd\n",···256243static DEVICE_ATTR_RO(_name)257244258245PAGE_0_ATTR(catalog_version, "%lld\n",259259- (unsigned long long)be32_to_cpu(page_0->version));246246+ (unsigned long long)be64_to_cpu(page_0->version));260247PAGE_0_ATTR(catalog_len, "%lld\n",261248 (unsigned long long)be32_to_cpu(page_0->length) * 4096);262249static BIN_ATTR_RO(catalog, 0/* real length varies */);···498485 struct hv_perf_caps caps;499486500487 if (!firmware_has_feature(FW_FEATURE_LPAR)) {501501- pr_info("not a virtualized system, not enabling\n");488488+ pr_debug("not a virtualized system, not enabling\n");502489 return -ENODEV;503490 }504491505492 hret = hv_perf_caps_get(&caps);506493 if (hret) {507507- pr_info("could not obtain capabilities, error 0x%80lx, not enabling\n",494494+ pr_debug("could not obtain capabilities, not enabling, rc=%ld\n",508495 hret);509496 return -ENODEV;510497 }
+3-3
arch/powerpc/perf/hv-gpci.c
···7878 return sprintf(page, "0x%x\n", COUNTER_INFO_VERSION_CURRENT);7979}80808181-DEVICE_ATTR_RO(kernel_version);8181+static DEVICE_ATTR_RO(kernel_version);8282HV_CAPS_ATTR(version, "0x%x\n");8383HV_CAPS_ATTR(ga, "%d\n");8484HV_CAPS_ATTR(expanded, "%d\n");···273273 struct hv_perf_caps caps;274274275275 if (!firmware_has_feature(FW_FEATURE_LPAR)) {276276- pr_info("not a virtualized system, not enabling\n");276276+ pr_debug("not a virtualized system, not enabling\n");277277 return -ENODEV;278278 }279279280280 hret = hv_perf_caps_get(&caps);281281 if (hret) {282282- pr_info("could not obtain capabilities, error 0x%80lx, not enabling\n",282282+ pr_debug("could not obtain capabilities, not enabling, rc=%ld\n",283283 hret);284284 return -ENODEV;285285 }
+11-83
arch/powerpc/platforms/powernv/opal-dump.c
···209209 .default_attrs = dump_default_attrs,210210};211211212212-static void free_dump_sg_list(struct opal_sg_list *list)212212+static int64_t dump_read_info(uint32_t *dump_id, uint32_t *dump_size, uint32_t *dump_type)213213{214214- struct opal_sg_list *sg1;215215- while (list) {216216- sg1 = list->next;217217- kfree(list);218218- list = sg1;219219- }220220- list = NULL;221221-}222222-223223-static struct opal_sg_list *dump_data_to_sglist(struct dump_obj *dump)224224-{225225- struct opal_sg_list *sg1, *list = NULL;226226- void *addr;227227- int64_t size;228228-229229- addr = dump->buffer;230230- size = dump->size;231231-232232- sg1 = kzalloc(PAGE_SIZE, GFP_KERNEL);233233- if (!sg1)234234- goto nomem;235235-236236- list = sg1;237237- sg1->num_entries = 0;238238- while (size > 0) {239239- /* Translate virtual address to physical address */240240- sg1->entry[sg1->num_entries].data =241241- (void *)(vmalloc_to_pfn(addr) << PAGE_SHIFT);242242-243243- if (size > PAGE_SIZE)244244- sg1->entry[sg1->num_entries].length = PAGE_SIZE;245245- else246246- sg1->entry[sg1->num_entries].length = size;247247-248248- sg1->num_entries++;249249- if (sg1->num_entries >= SG_ENTRIES_PER_NODE) {250250- sg1->next = kzalloc(PAGE_SIZE, GFP_KERNEL);251251- if (!sg1->next)252252- goto nomem;253253-254254- sg1 = sg1->next;255255- sg1->num_entries = 0;256256- }257257- addr += PAGE_SIZE;258258- size -= PAGE_SIZE;259259- }260260- return list;261261-262262-nomem:263263- pr_err("%s : Failed to allocate memory\n", __func__);264264- free_dump_sg_list(list);265265- return NULL;266266-}267267-268268-static void sglist_to_phy_addr(struct opal_sg_list *list)269269-{270270- struct opal_sg_list *sg, *next;271271-272272- for (sg = list; sg; sg = next) {273273- next = sg->next;274274- /* Don't translate NULL pointer for last entry */275275- if (sg->next)276276- sg->next = (struct opal_sg_list *)__pa(sg->next);277277- else278278- sg->next = NULL;279279-280280- /* Convert num_entries to length */281281- sg->num_entries =282282- sg->num_entries * sizeof(struct opal_sg_entry) + 16;283283- }284284-}285285-286286-static int64_t dump_read_info(uint32_t *id, uint32_t *size, uint32_t *type)287287-{214214+ __be32 id, size, type;288215 int rc;289289- *type = 0xffffffff;290216291291- rc = opal_dump_info2(id, size, type);217217+ type = cpu_to_be32(0xffffffff);292218219219+ rc = opal_dump_info2(&id, &size, &type);293220 if (rc == OPAL_PARAMETER)294294- rc = opal_dump_info(id, size);221221+ rc = opal_dump_info(&id, &size);222222+223223+ *dump_id = be32_to_cpu(id);224224+ *dump_size = be32_to_cpu(size);225225+ *dump_type = be32_to_cpu(type);295226296227 if (rc)297228 pr_warn("%s: Failed to get dump info (%d)\n",···245314 }246315247316 /* Generate SG list */248248- list = dump_data_to_sglist(dump);317317+ list = opal_vmalloc_to_sg_list(dump->buffer, dump->size);249318 if (!list) {250319 rc = -ENOMEM;251320 goto out;252321 }253253-254254- /* Translate sg list addr to real address */255255- sglist_to_phy_addr(list);256322257323 /* First entry address */258324 addr = __pa(list);···269341 __func__, dump->id);270342271343 /* Free SG list */272272- free_dump_sg_list(list);344344+ opal_free_sg_list(list);273345274346out:275347 return rc;
···162162}163163164164#ifdef CONFIG_KEXEC165165+static void pnv_kexec_wait_secondaries_down(void)166166+{167167+ int my_cpu, i, notified = -1;168168+169169+ my_cpu = get_cpu();170170+171171+ for_each_online_cpu(i) {172172+ uint8_t status;173173+ int64_t rc;174174+175175+ if (i == my_cpu)176176+ continue;177177+178178+ for (;;) {179179+ rc = opal_query_cpu_status(get_hard_smp_processor_id(i),180180+ &status);181181+ if (rc != OPAL_SUCCESS || status != OPAL_THREAD_STARTED)182182+ break;183183+ barrier();184184+ if (i != notified) {185185+ printk(KERN_INFO "kexec: waiting for cpu %d "186186+ "(physical %d) to enter OPAL\n",187187+ i, paca[i].hw_cpu_id);188188+ notified = i;189189+ }190190+ }191191+ }192192+}193193+165194static void pnv_kexec_cpu_down(int crash_shutdown, int secondary)166195{167196 xics_kexec_teardown_cpu(secondary);168197169169- /* Return secondary CPUs to firmware on OPAL v3 */170170- if (firmware_has_feature(FW_FEATURE_OPALv3) && secondary) {198198+ /* On OPAL v3, we return all CPUs to firmware */199199+200200+ if (!firmware_has_feature(FW_FEATURE_OPALv3))201201+ return;202202+203203+ if (secondary) {204204+ /* Return secondary CPUs to firmware on OPAL v3 */171205 mb();172206 get_paca()->kexec_state = KEXEC_STATE_REAL_MODE;173207 mb();174208175209 /* Return the CPU to OPAL */176210 opal_return_cpu();211211+ } else if (crash_shutdown) {212212+ /*213213+ * On crash, we don't wait for secondaries to go214214+ * down as they might be unreachable or hung, so215215+ * instead we just wait a bit and move on.216216+ */217217+ mdelay(1);218218+ } else {219219+ /* Primary waits for the secondaries to have reached OPAL */220220+ pnv_kexec_wait_secondaries_down();177221 }178222}179223#endif /* CONFIG_KEXEC */
+3
arch/powerpc/platforms/powernv/smp.c
···3030#include <asm/cputhreads.h>3131#include <asm/xics.h>3232#include <asm/opal.h>3333+#include <asm/runlatch.h>33343435#include "powernv.h"3536···157156 */158157 mtspr(SPRN_LPCR, mfspr(SPRN_LPCR) & ~(u64)LPCR_PECE1);159158 while (!generic_check_cpu_restart(cpu)) {159159+ ppc64_runlatch_off();160160 power7_nap();161161+ ppc64_runlatch_on();161162 if (!generic_check_cpu_restart(cpu)) {162163 DBG("CPU%d Unexpected exit while offline !\n", cpu);163164 /* We may be getting an IPI, so we re-enable
···100100101101 start_pfn = base >> PAGE_SHIFT;102102103103- if (!pfn_valid(start_pfn)) {104104- memblock_remove(base, memblock_size);105105- return 0;106106- }103103+ lock_device_hotplug();104104+105105+ if (!pfn_valid(start_pfn))106106+ goto out;107107108108 block_sz = memory_block_size_bytes();109109 sections_per_block = block_sz / MIN_MEMORY_BLOCK_SIZE;···114114 base += MIN_MEMORY_BLOCK_SIZE;115115 }116116117117+out:117118 /* Update memory regions for memory remove */118119 memblock_remove(base, memblock_size);120120+ unlock_device_hotplug();119121 return 0;120122}121123
+1-1
arch/powerpc/sysdev/ppc4xx_pci.c
···10581058 return 1;10591059}1060106010611061-static int apm821xx_pciex_init_port_hw(struct ppc4xx_pciex_port *port)10611061+static int __init apm821xx_pciex_init_port_hw(struct ppc4xx_pciex_port *port)10621062{10631063 u32 val;10641064
-1
arch/s390/net/bpf_jit_comp.c
···276276 case BPF_S_LD_W_IND:277277 case BPF_S_LD_H_IND:278278 case BPF_S_LD_B_IND:279279- case BPF_S_LDX_B_MSH:280279 case BPF_S_LD_IMM:281280 case BPF_S_LD_MEM:282281 case BPF_S_MISC_TXA:
+3-1
arch/x86/Makefile
···8383 KBUILD_CFLAGS += -m6484848585 # Don't autogenerate traditional x87, MMX or SSE instructions8686- KBUILD_CFLAGS += -mno-mmx -mno-sse -mno-80387 -mno-fp-ret-in-3878686+ KBUILD_CFLAGS += -mno-mmx -mno-sse8787+ KBUILD_CFLAGS += $(call cc-option,-mno-80387)8888+ KBUILD_CFLAGS += $(call cc-option,-mno-fp-ret-in-387)87898890 # Use -mpreferred-stack-boundary=3 if supported.8991 KBUILD_CFLAGS += $(call cc-option,-mpreferred-stack-boundary=3)
···543543 if (phys_id < 0)544544 return -1;545545546546- if (!rdmsrl_safe(MSR_RAPL_POWER_UNIT, &msr_rapl_power_unit_bits))546546+ /* protect rdmsrl() to handle virtualization */547547+ if (rdmsrl_safe(MSR_RAPL_POWER_UNIT, &msr_rapl_power_unit_bits))547548 return -1;548549549550 pmu = kzalloc_node(sizeof(*pmu), GFP_KERNEL, cpu_to_node(cpu));
+10-1
arch/x86/kernel/vsmp_64.c
···26262727#define TOPOLOGY_REGISTER_OFFSET 0x1028282929+/* Flag below is initialized once during vSMP PCI initialization. */3030+static int irq_routing_comply = 1;3131+2932#if defined CONFIG_PCI && defined CONFIG_PARAVIRT3033/*3134 * Interrupt control on vSMPowered systems:···104101#ifdef CONFIG_SMP105102 if (cap & ctl & BIT(8)) {106103 ctl &= ~BIT(8);104104+105105+ /* Interrupt routing set to ignore */106106+ irq_routing_comply = 0;107107+107108#ifdef CONFIG_PROC_FS108109 /* Don't let users change irq affinity via procfs */109110 no_irq_affinity = 1;···225218{226219 /* need to update phys_pkg_id */227220 apic->phys_pkg_id = apicid_phys_pkg_id;228228- apic->vector_allocation_domain = fill_vector_allocation_domain;221221+222222+ if (!irq_routing_comply)223223+ apic->vector_allocation_domain = fill_vector_allocation_domain;229224}230225231226void __init vsmp_init(void)
+41-12
arch/x86/kvm/vmx.c
···503503 [number##_HIGH] = VMCS12_OFFSET(name)+4504504505505506506-static const unsigned long shadow_read_only_fields[] = {506506+static unsigned long shadow_read_only_fields[] = {507507 /*508508 * We do NOT shadow fields that are modified when L0509509 * traps and emulates any vmx instruction (e.g. VMPTRLD,···526526 GUEST_LINEAR_ADDRESS,527527 GUEST_PHYSICAL_ADDRESS528528};529529-static const int max_shadow_read_only_fields =529529+static int max_shadow_read_only_fields =530530 ARRAY_SIZE(shadow_read_only_fields);531531532532-static const unsigned long shadow_read_write_fields[] = {532532+static unsigned long shadow_read_write_fields[] = {533533 GUEST_RIP,534534 GUEST_RSP,535535 GUEST_CR0,···558558 HOST_FS_SELECTOR,559559 HOST_GS_SELECTOR560560};561561-static const int max_shadow_read_write_fields =561561+static int max_shadow_read_write_fields =562562 ARRAY_SIZE(shadow_read_write_fields);563563564564static const unsigned short vmcs_field_to_offset_table[] = {···30093009 }30103010}3011301130123012+static void init_vmcs_shadow_fields(void)30133013+{30143014+ int i, j;30153015+30163016+ /* No checks for read only fields yet */30173017+30183018+ for (i = j = 0; i < max_shadow_read_write_fields; i++) {30193019+ switch (shadow_read_write_fields[i]) {30203020+ case GUEST_BNDCFGS:30213021+ if (!vmx_mpx_supported())30223022+ continue;30233023+ break;30243024+ default:30253025+ break;30263026+ }30273027+30283028+ if (j < i)30293029+ shadow_read_write_fields[j] =30303030+ shadow_read_write_fields[i];30313031+ j++;30323032+ }30333033+ max_shadow_read_write_fields = j;30343034+30353035+ /* shadowed fields guest access without vmexit */30363036+ for (i = 0; i < max_shadow_read_write_fields; i++) {30373037+ clear_bit(shadow_read_write_fields[i],30383038+ vmx_vmwrite_bitmap);30393039+ clear_bit(shadow_read_write_fields[i],30403040+ vmx_vmread_bitmap);30413041+ }30423042+ for (i = 0; i < max_shadow_read_only_fields; i++)30433043+ clear_bit(shadow_read_only_fields[i],30443044+ vmx_vmread_bitmap);30453045+}30463046+30123047static __init int alloc_kvm_area(void)30133048{30143049 int cpu;···30743039 enable_vpid = 0;30753040 if (!cpu_has_vmx_shadow_vmcs())30763041 enable_shadow_vmcs = 0;30423042+ if (enable_shadow_vmcs)30433043+ init_vmcs_shadow_fields();3077304430783045 if (!cpu_has_vmx_ept() ||30793046 !cpu_has_vmx_ept_4levels()) {···8840880388418804 memset(vmx_vmread_bitmap, 0xff, PAGE_SIZE);88428805 memset(vmx_vmwrite_bitmap, 0xff, PAGE_SIZE);88438843- /* shadowed read/write fields */88448844- for (i = 0; i < max_shadow_read_write_fields; i++) {88458845- clear_bit(shadow_read_write_fields[i], vmx_vmwrite_bitmap);88468846- clear_bit(shadow_read_write_fields[i], vmx_vmread_bitmap);88478847- }88488848- /* shadowed read only fields */88498849- for (i = 0; i < max_shadow_read_only_fields; i++)88508850- clear_bit(shadow_read_only_fields[i], vmx_vmread_bitmap);8851880688528807 /*88538808 * Allow direct access to the PC debug port (it is often used for I/O
+4-3
drivers/acpi/acpi_processor.c
···170170 acpi_status status;171171 int ret;172172173173+ if (pr->apic_id == -1)174174+ return -ENODEV;175175+173176 status = acpi_evaluate_integer(pr->handle, "_STA", NULL, &sta);174177 if (ACPI_FAILURE(status) || !(sta & ACPI_STA_DEVICE_PRESENT))175178 return -ENODEV;···263260 }264261265262 apic_id = acpi_get_apicid(pr->handle, device_declaration, pr->acpi_id);266266- if (apic_id < 0) {263263+ if (apic_id < 0)267264 acpi_handle_debug(pr->handle, "failed to get CPU APIC ID.\n");268268- return -ENODEV;269269- }270265 pr->apic_id = apic_id;271266272267 cpu_index = acpi_map_cpuid(pr->apic_id, pr->acpi_id);
+12-9
drivers/acpi/ec.c
···206206 spin_unlock_irqrestore(&ec->lock, flags);207207}208208209209-static int acpi_ec_sync_query(struct acpi_ec *ec);209209+static int acpi_ec_sync_query(struct acpi_ec *ec, u8 *data);210210211211static int ec_check_sci_sync(struct acpi_ec *ec, u8 state)212212{213213 if (state & ACPI_EC_FLAG_SCI) {214214 if (!test_and_set_bit(EC_FLAGS_QUERY_PENDING, &ec->flags))215215- return acpi_ec_sync_query(ec);215215+ return acpi_ec_sync_query(ec, NULL);216216 }217217 return 0;218218}···443443444444EXPORT_SYMBOL(ec_get_handle);445445446446-static int acpi_ec_query_unlocked(struct acpi_ec *ec, u8 *data);447447-448446/*449449- * Clears stale _Q events that might have accumulated in the EC.447447+ * Process _Q events that might have accumulated in the EC.450448 * Run with locked ec mutex.451449 */452450static void acpi_ec_clear(struct acpi_ec *ec)···453455 u8 value = 0;454456455457 for (i = 0; i < ACPI_EC_CLEAR_MAX; i++) {456456- status = acpi_ec_query_unlocked(ec, &value);458458+ status = acpi_ec_sync_query(ec, &value);457459 if (status || !value)458460 break;459461 }···580582 kfree(handler);581583}582584583583-static int acpi_ec_sync_query(struct acpi_ec *ec)585585+static int acpi_ec_sync_query(struct acpi_ec *ec, u8 *data)584586{585587 u8 value = 0;586588 int status;587589 struct acpi_ec_query_handler *handler, *copy;588588- if ((status = acpi_ec_query_unlocked(ec, &value)))590590+591591+ status = acpi_ec_query_unlocked(ec, &value);592592+ if (data)593593+ *data = value;594594+ if (status)589595 return status;596596+590597 list_for_each_entry(handler, &ec->list, node) {591598 if (value == handler->query_bit) {592599 /* have custom handler for this bit */···615612 if (!ec)616613 return;617614 mutex_lock(&ec->mutex);618618- acpi_ec_sync_query(ec);615615+ acpi_ec_sync_query(ec, NULL);619616 mutex_unlock(&ec->mutex);620617}621618
+17
drivers/base/dd.c
···5252static LIST_HEAD(deferred_probe_pending_list);5353static LIST_HEAD(deferred_probe_active_list);5454static struct workqueue_struct *deferred_wq;5555+static atomic_t deferred_trigger_count = ATOMIC_INIT(0);55565657/**5758 * deferred_probe_work_func() - Retry probing devices in the active list.···136135 * This functions moves all devices from the pending list to the active137136 * list and schedules the deferred probe workqueue to process them. It138137 * should be called anytime a driver is successfully bound to a device.138138+ *139139+ * Note, there is a race condition in multi-threaded probe. In the case where140140+ * more than one device is probing at the same time, it is possible for one141141+ * probe to complete successfully while another is about to defer. If the second142142+ * depends on the first, then it will get put on the pending list after the143143+ * trigger event has already occured and will be stuck there.144144+ *145145+ * The atomic 'deferred_trigger_count' is used to determine if a successful146146+ * trigger has occurred in the midst of probing a driver. If the trigger count147147+ * changes in the midst of a probe, then deferred processing should be triggered148148+ * again.139149 */140150static void driver_deferred_probe_trigger(void)141151{···159147 * into the active list so they can be retried by the workqueue160148 */161149 mutex_lock(&deferred_probe_mutex);150150+ atomic_inc(&deferred_trigger_count);162151 list_splice_tail_init(&deferred_probe_pending_list,163152 &deferred_probe_active_list);164153 mutex_unlock(&deferred_probe_mutex);···278265static int really_probe(struct device *dev, struct device_driver *drv)279266{280267 int ret = 0;268268+ int local_trigger_count = atomic_read(&deferred_trigger_count);281269282270 atomic_inc(&probe_count);283271 pr_debug("bus: '%s': %s: probing driver %s with device %s\n",···324310 /* Driver requested deferred probing */325311 dev_info(dev, "Driver %s requests probe deferral\n", drv->name);326312 driver_deferred_probe_add(dev);313313+ /* Did a trigger occur while probing? Need to re-trigger if yes */314314+ if (local_trigger_count != atomic_read(&deferred_trigger_count))315315+ driver_deferred_probe_trigger();327316 } else if (ret != -ENODEV && ret != -ENXIO) {328317 /* driver matched but the probe failed */329318 printk(KERN_WARNING
···242242 * Sets a new clock ratio.243243 */244244245245-static void longhaul_setstate(struct cpufreq_policy *policy,245245+static int longhaul_setstate(struct cpufreq_policy *policy,246246 unsigned int table_index)247247{248248 unsigned int mults_index;···258258 /* Safety precautions */259259 mult = mults[mults_index & 0x1f];260260 if (mult == -1)261261- return;261261+ return -EINVAL;262262+262263 speed = calc_speed(mult);263264 if ((speed > highest_speed) || (speed < lowest_speed))264264- return;265265+ return -EINVAL;266266+265267 /* Voltage transition before frequency transition? */266268 if (can_scale_voltage && longhaul_index < table_index)267269 dir = 1;268270269271 freqs.old = calc_speed(longhaul_get_cpu_mult());270272 freqs.new = speed;271271-272272- cpufreq_freq_transition_begin(policy, &freqs);273273274274 pr_debug("Setting to FSB:%dMHz Mult:%d.%dx (%s)\n",275275 fsb, mult/10, mult%10, print_speed(speed/1000));···385385 goto retry_loop;386386 }387387 }388388- /* Report true CPU frequency */389389- cpufreq_freq_transition_end(policy, &freqs, 0);390388391391- if (!bm_timeout)389389+ if (!bm_timeout) {392390 printk(KERN_INFO PFX "Warning: Timeout while waiting for "393391 "idle PCI bus.\n");392392+ return -EBUSY;393393+ }394394+395395+ return 0;394396}395397396398/*···633631 unsigned int i;634632 unsigned int dir = 0;635633 u8 vid, current_vid;634634+ int retval = 0;636635637636 if (!can_scale_voltage)638638- longhaul_setstate(policy, table_index);637637+ retval = longhaul_setstate(policy, table_index);639638 else {640639 /* On test system voltage transitions exceeding single641640 * step up or down were turning motherboard off. Both···651648 while (i != table_index) {652649 vid = (longhaul_table[i].driver_data >> 8) & 0x1f;653650 if (vid != current_vid) {654654- longhaul_setstate(policy, i);651651+ retval = longhaul_setstate(policy, i);655652 current_vid = vid;656653 msleep(200);657654 }···660657 else661658 i--;662659 }663663- longhaul_setstate(policy, table_index);660660+ retval = longhaul_setstate(policy, table_index);664661 }662662+665663 longhaul_index = table_index;666666- return 0;664664+ return retval;667665}668666669667···972968973969 for (i = 0; i < numscales; i++) {974970 if (mults[i] == maxmult) {971971+ struct cpufreq_freqs freqs;972972+973973+ freqs.old = policy->cur;974974+ freqs.new = longhaul_table[i].frequency;975975+ freqs.flags = 0;976976+977977+ cpufreq_freq_transition_begin(policy, &freqs);975978 longhaul_setstate(policy, i);979979+ cpufreq_freq_transition_end(policy, &freqs, 0);976980 break;977981 }978982 }
+13-10
drivers/cpufreq/powernow-k6.c
···138138static int powernow_k6_target(struct cpufreq_policy *policy,139139 unsigned int best_i)140140{141141- struct cpufreq_freqs freqs;142141143142 if (clock_ratio[best_i].driver_data > max_multiplier) {144143 printk(KERN_ERR PFX "invalid target frequency\n");145144 return -EINVAL;146145 }147146148148- freqs.old = busfreq * powernow_k6_get_cpu_multiplier();149149- freqs.new = busfreq * clock_ratio[best_i].driver_data;150150-151151- cpufreq_freq_transition_begin(policy, &freqs);152152-153147 powernow_k6_set_cpu_multiplier(best_i);154154-155155- cpufreq_freq_transition_end(policy, &freqs, 0);156148157149 return 0;158150}···219227static int powernow_k6_cpu_exit(struct cpufreq_policy *policy)220228{221229 unsigned int i;222222- for (i = 0; i < 8; i++) {223223- if (i == max_multiplier)230230+231231+ for (i = 0; (clock_ratio[i].frequency != CPUFREQ_TABLE_END); i++) {232232+ if (clock_ratio[i].driver_data == max_multiplier) {233233+ struct cpufreq_freqs freqs;234234+235235+ freqs.old = policy->cur;236236+ freqs.new = clock_ratio[i].frequency;237237+ freqs.flags = 0;238238+239239+ cpufreq_freq_transition_begin(policy, &freqs);224240 powernow_k6_target(policy, i);241241+ cpufreq_freq_transition_end(policy, &freqs, 0);242242+ break;243243+ }225244 }226245 return 0;227246}
-4
drivers/cpufreq/powernow-k7.c
···269269270270 freqs.new = powernow_table[index].frequency;271271272272- cpufreq_freq_transition_begin(policy, &freqs);273273-274272 /* Now do the magic poking into the MSRs. */275273276274 if (have_a0 == 1) /* A0 errata 5 */···287289288290 if (have_a0 == 1)289291 local_irq_enable();290290-291291- cpufreq_freq_transition_end(policy, &freqs, 0);292292293293 return 0;294294}
···50505151 /* Full ppgtt disabled by default for now due to issues. */5252 if (full)5353- return false; /* HAS_PPGTT(dev) */5353+ return HAS_PPGTT(dev) && (i915.enable_ppgtt == 2);5454 else5555 return HAS_ALIASING_PPGTT(dev);5656}
+14-4
drivers/gpu/drm/i915/i915_irq.c
···13621362 spin_lock(&dev_priv->irq_lock);13631363 for (i = 1; i < HPD_NUM_PINS; i++) {1364136413651365- WARN_ONCE(hpd[i] & hotplug_trigger &&13661366- dev_priv->hpd_stats[i].hpd_mark == HPD_DISABLED,13671367- "Received HPD interrupt (0x%08x) on pin %d (0x%08x) although disabled\n",13681368- hotplug_trigger, i, hpd[i]);13651365+ if (hpd[i] & hotplug_trigger &&13661366+ dev_priv->hpd_stats[i].hpd_mark == HPD_DISABLED) {13671367+ /*13681368+ * On GMCH platforms the interrupt mask bits only13691369+ * prevent irq generation, not the setting of the13701370+ * hotplug bits itself. So only WARN about unexpected13711371+ * interrupts on saner platforms.13721372+ */13731373+ WARN_ONCE(INTEL_INFO(dev)->gen >= 5 && !IS_VALLEYVIEW(dev),13741374+ "Received HPD interrupt (0x%08x) on pin %d (0x%08x) although disabled\n",13751375+ hotplug_trigger, i, hpd[i]);13761376+13771377+ continue;13781378+ }1369137913701380 if (!(hpd[i] & hotplug_trigger) ||13711381 dev_priv->hpd_stats[i].hpd_mark != HPD_ENABLED)
···96549654 PIPE_CONF_CHECK_I(pipe_src_w);96559655 PIPE_CONF_CHECK_I(pipe_src_h);9656965696579657- PIPE_CONF_CHECK_I(gmch_pfit.control);96589658- /* pfit ratios are autocomputed by the hw on gen4+ */96599659- if (INTEL_INFO(dev)->gen < 4)96609660- PIPE_CONF_CHECK_I(gmch_pfit.pgm_ratios);96619661- PIPE_CONF_CHECK_I(gmch_pfit.lvds_border_bits);96579657+ /*96589658+ * FIXME: BIOS likes to set up a cloned config with lvds+external96599659+ * screen. Since we don't yet re-compute the pipe config when moving96609660+ * just the lvds port away to another pipe the sw tracking won't match.96619661+ *96629662+ * Proper atomic modesets with recomputed global state will fix this.96639663+ * Until then just don't check gmch state for inherited modes.96649664+ */96659665+ if (!PIPE_CONF_QUIRK(PIPE_CONFIG_QUIRK_INHERITED_MODE)) {96669666+ PIPE_CONF_CHECK_I(gmch_pfit.control);96679667+ /* pfit ratios are autocomputed by the hw on gen4+ */96689668+ if (INTEL_INFO(dev)->gen < 4)96699669+ PIPE_CONF_CHECK_I(gmch_pfit.pgm_ratios);96709670+ PIPE_CONF_CHECK_I(gmch_pfit.lvds_border_bits);96719671+ }96729672+96629673 PIPE_CONF_CHECK_I(pch_pfit.enabled);96639674 if (current_config->pch_pfit.enabled) {96649675 PIPE_CONF_CHECK_I(pch_pfit.pos);···1162611615 list_for_each_entry(crtc, &dev->mode_config.crtc_list,1162711616 base.head) {1162811617 memset(&crtc->config, 0, sizeof(crtc->config));1161811618+1161911619+ crtc->config.quirks |= PIPE_CONFIG_QUIRK_INHERITED_MODE;11629116201163011621 crtc->active = dev_priv->display.get_pipe_config(crtc,1163111622 &crtc->config);
+10-1
drivers/gpu/drm/i915/intel_dp.c
···36193619{36203620 struct drm_connector *connector = &intel_connector->base;36213621 struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp);36223622- struct drm_device *dev = intel_dig_port->base.base.dev;36223622+ struct intel_encoder *intel_encoder = &intel_dig_port->base;36233623+ struct drm_device *dev = intel_encoder->base.dev;36233624 struct drm_i915_private *dev_priv = dev->dev_private;36243625 struct drm_display_mode *fixed_mode = NULL;36253626 bool has_dpcd;···3629362836303629 if (!is_edp(intel_dp))36313630 return true;36313631+36323632+ /* The VDD bit needs a power domain reference, so if the bit is already36333633+ * enabled when we boot, grab this reference. */36343634+ if (edp_have_panel_vdd(intel_dp)) {36353635+ enum intel_display_power_domain power_domain;36363636+ power_domain = intel_display_port_power_domain(intel_encoder);36373637+ intel_display_power_get(dev_priv, power_domain);36383638+ }3632363936333640 /* Cache DPCD and EDID for edp. */36343641 intel_edp_panel_vdd_on(intel_dp);
+2-1
drivers/gpu/drm/i915/intel_drv.h
···236236 * tracked with quirk flags so that fastboot and state checker can act237237 * accordingly.238238 */239239-#define PIPE_CONFIG_QUIRK_MODE_SYNC_FLAGS (1<<0) /* unreliable sync mode.flags */239239+#define PIPE_CONFIG_QUIRK_MODE_SYNC_FLAGS (1<<0) /* unreliable sync mode.flags */240240+#define PIPE_CONFIG_QUIRK_INHERITED_MODE (1<<1) /* mode inherited from firmware */240241 unsigned long quirks;241242242243 /* User requested mode, only valid as a starting point to
+10
drivers/gpu/drm/i915/intel_fbdev.c
···132132133133 mutex_lock(&dev->struct_mutex);134134135135+ if (intel_fb &&136136+ (sizes->fb_width > intel_fb->base.width ||137137+ sizes->fb_height > intel_fb->base.height)) {138138+ DRM_DEBUG_KMS("BIOS fb too small (%dx%d), we require (%dx%d),"139139+ " releasing it\n",140140+ intel_fb->base.width, intel_fb->base.height,141141+ sizes->fb_width, sizes->fb_height);142142+ drm_framebuffer_unreference(&intel_fb->base);143143+ intel_fb = ifbdev->fb = NULL;144144+ }135145 if (!intel_fb || WARN_ON(!intel_fb->obj)) {136146 DRM_DEBUG_KMS("no BIOS fb, allocating a new one\n");137147 ret = intelfb_alloc(helper, sizes);
+5-4
drivers/gpu/drm/i915/intel_hdmi.c
···821821 }822822}823823824824-static int hdmi_portclock_limit(struct intel_hdmi *hdmi)824824+static int hdmi_portclock_limit(struct intel_hdmi *hdmi, bool respect_dvi_limit)825825{826826 struct drm_device *dev = intel_hdmi_to_dev(hdmi);827827828828- if (!hdmi->has_hdmi_sink || IS_G4X(dev))828828+ if ((respect_dvi_limit && !hdmi->has_hdmi_sink) || IS_G4X(dev))829829 return 165000;830830 else if (IS_HASWELL(dev) || INTEL_INFO(dev)->gen >= 8)831831 return 300000;···837837intel_hdmi_mode_valid(struct drm_connector *connector,838838 struct drm_display_mode *mode)839839{840840- if (mode->clock > hdmi_portclock_limit(intel_attached_hdmi(connector)))840840+ if (mode->clock > hdmi_portclock_limit(intel_attached_hdmi(connector),841841+ true))841842 return MODE_CLOCK_HIGH;842843 if (mode->clock < 20000)843844 return MODE_CLOCK_LOW;···880879 struct drm_device *dev = encoder->base.dev;881880 struct drm_display_mode *adjusted_mode = &pipe_config->adjusted_mode;882881 int clock_12bpc = pipe_config->adjusted_mode.crtc_clock * 3 / 2;883883- int portclock_limit = hdmi_portclock_limit(intel_hdmi);882882+ int portclock_limit = hdmi_portclock_limit(intel_hdmi, false);884883 int desired_bpp;885884886885 if (intel_hdmi->color_range_auto) {
+34-20
drivers/gpu/drm/i915/intel_ringbuffer.c
···437437 I915_WRITE(HWS_PGA, addr);438438}439439440440+static bool stop_ring(struct intel_ring_buffer *ring)441441+{442442+ struct drm_i915_private *dev_priv = to_i915(ring->dev);443443+444444+ if (!IS_GEN2(ring->dev)) {445445+ I915_WRITE_MODE(ring, _MASKED_BIT_ENABLE(STOP_RING));446446+ if (wait_for_atomic((I915_READ_MODE(ring) & MODE_IDLE) != 0, 1000)) {447447+ DRM_ERROR("%s :timed out trying to stop ring\n", ring->name);448448+ return false;449449+ }450450+ }451451+452452+ I915_WRITE_CTL(ring, 0);453453+ I915_WRITE_HEAD(ring, 0);454454+ ring->write_tail(ring, 0);455455+456456+ if (!IS_GEN2(ring->dev)) {457457+ (void)I915_READ_CTL(ring);458458+ I915_WRITE_MODE(ring, _MASKED_BIT_DISABLE(STOP_RING));459459+ }460460+461461+ return (I915_READ_HEAD(ring) & HEAD_ADDR) == 0;462462+}463463+440464static int init_ring_common(struct intel_ring_buffer *ring)441465{442466 struct drm_device *dev = ring->dev;443467 struct drm_i915_private *dev_priv = dev->dev_private;444468 struct drm_i915_gem_object *obj = ring->obj;445469 int ret = 0;446446- u32 head;447470448471 gen6_gt_force_wake_get(dev_priv, FORCEWAKE_ALL);449472450450- /* Stop the ring if it's running. */451451- I915_WRITE_CTL(ring, 0);452452- I915_WRITE_HEAD(ring, 0);453453- ring->write_tail(ring, 0);454454- if (wait_for_atomic((I915_READ_MODE(ring) & MODE_IDLE) != 0, 1000))455455- DRM_ERROR("%s :timed out trying to stop ring\n", ring->name);456456-457457- if (I915_NEED_GFX_HWS(dev))458458- intel_ring_setup_status_page(ring);459459- else460460- ring_setup_phys_status_page(ring);461461-462462- head = I915_READ_HEAD(ring) & HEAD_ADDR;463463-464464- /* G45 ring initialization fails to reset head to zero */465465- if (head != 0) {473473+ if (!stop_ring(ring)) {474474+ /* G45 ring initialization often fails to reset head to zero */466475 DRM_DEBUG_KMS("%s head not reset to zero "467476 "ctl %08x head %08x tail %08x start %08x\n",468477 ring->name,···480471 I915_READ_TAIL(ring),481472 I915_READ_START(ring));482473483483- I915_WRITE_HEAD(ring, 0);484484-485485- if (I915_READ_HEAD(ring) & HEAD_ADDR) {474474+ if (!stop_ring(ring)) {486475 DRM_ERROR("failed to set %s head to zero "487476 "ctl %08x head %08x tail %08x start %08x\n",488477 ring->name,···488481 I915_READ_HEAD(ring),489482 I915_READ_TAIL(ring),490483 I915_READ_START(ring));484484+ ret = -EIO;485485+ goto out;491486 }492487 }488488+489489+ if (I915_NEED_GFX_HWS(dev))490490+ intel_ring_setup_status_page(ring);491491+ else492492+ ring_setup_phys_status_page(ring);493493494494 /* Initialize the ring. This must happen _after_ we've cleared the ring495495 * registers with the above sequence (the readback of the HEAD registers
···510510 MDP4_DMA_CURSOR_BLEND_CONFIG_CURSOR_EN);511511 } else {512512 /* disable cursor: */513513- mdp4_write(mdp4_kms, REG_MDP4_DMA_CURSOR_BASE(dma), 0);514514- mdp4_write(mdp4_kms, REG_MDP4_DMA_CURSOR_BLEND_CONFIG(dma),515515- MDP4_DMA_CURSOR_BLEND_CONFIG_FORMAT(CURSOR_ARGB));513513+ mdp4_write(mdp4_kms, REG_MDP4_DMA_CURSOR_BASE(dma),514514+ mdp4_kms->blank_cursor_iova);516515 }517516518517 /* and drop the iova ref + obj rev when done scanning out: */···573574574575 if (old_bo) {575576 /* drop our previous reference: */576576- msm_gem_put_iova(old_bo, mdp4_kms->id);577577- drm_gem_object_unreference_unlocked(old_bo);577577+ drm_flip_work_queue(&mdp4_crtc->unref_cursor_work, old_bo);578578 }579579580580- crtc_flush(crtc);581580 request_pending(crtc, PENDING_CURSOR);582581583582 return 0;
+2-2
drivers/gpu/drm/msm/mdp/mdp4/mdp4_irq.c
···70707171 VERB("status=%08x", status);72727373+ mdp_dispatch_irqs(mdp_kms, status);7474+7375 for (id = 0; id < priv->num_crtcs; id++)7476 if (status & mdp4_crtc_vblank(priv->crtcs[id]))7577 drm_handle_vblank(dev, id);7676-7777- mdp_dispatch_irqs(mdp_kms, status);78787979 return IRQ_HANDLED;8080}
+21
drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.c
···144144static void mdp4_destroy(struct msm_kms *kms)145145{146146 struct mdp4_kms *mdp4_kms = to_mdp4_kms(to_mdp_kms(kms));147147+ if (mdp4_kms->blank_cursor_iova)148148+ msm_gem_put_iova(mdp4_kms->blank_cursor_bo, mdp4_kms->id);149149+ if (mdp4_kms->blank_cursor_bo)150150+ drm_gem_object_unreference(mdp4_kms->blank_cursor_bo);147151 kfree(mdp4_kms);148152}149153···373369 ret = modeset_init(mdp4_kms);374370 if (ret) {375371 dev_err(dev->dev, "modeset_init failed: %d\n", ret);372372+ goto fail;373373+ }374374+375375+ mutex_lock(&dev->struct_mutex);376376+ mdp4_kms->blank_cursor_bo = msm_gem_new(dev, SZ_16K, MSM_BO_WC);377377+ mutex_unlock(&dev->struct_mutex);378378+ if (IS_ERR(mdp4_kms->blank_cursor_bo)) {379379+ ret = PTR_ERR(mdp4_kms->blank_cursor_bo);380380+ dev_err(dev->dev, "could not allocate blank-cursor bo: %d\n", ret);381381+ mdp4_kms->blank_cursor_bo = NULL;382382+ goto fail;383383+ }384384+385385+ ret = msm_gem_get_iova(mdp4_kms->blank_cursor_bo, mdp4_kms->id,386386+ &mdp4_kms->blank_cursor_iova);387387+ if (ret) {388388+ dev_err(dev->dev, "could not pin blank-cursor bo: %d\n", ret);376389 goto fail;377390 }378391
+4
drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.h
···4444 struct clk *lut_clk;45454646 struct mdp_irq error_handler;4747+4848+ /* empty/blank cursor bo to use when cursor is "disabled" */4949+ struct drm_gem_object *blank_cursor_bo;5050+ uint32_t blank_cursor_iova;4751};4852#define to_mdp4_kms(x) container_of(x, struct mdp4_kms, base)4953
+2-2
drivers/gpu/drm/msm/mdp/mdp5/mdp5_irq.c
···71717272 VERB("status=%08x", status);73737474+ mdp_dispatch_irqs(mdp_kms, status);7575+7476 for (id = 0; id < priv->num_crtcs; id++)7577 if (status & mdp5_crtc_vblank(priv->crtcs[id]))7678 drm_handle_vblank(dev, id);7777-7878- mdp_dispatch_irqs(mdp_kms, status);7979}80808181irqreturn_t mdp5_irq(struct msm_kms *kms)
+1-4
drivers/gpu/drm/msm/msm_fbdev.c
···6262 dma_addr_t paddr;6363 int ret, size;64646565- /* only doing ARGB32 since this is what is needed to alpha-blend6666- * with video overlays:6767- */6865 sizes->surface_bpp = 32;6969- sizes->surface_depth = 32;6666+ sizes->surface_depth = 24;70677168 DBG("create fbdev: %dx%d@%d (%dx%d)", sizes->surface_width,7269 sizes->surface_height, sizes->surface_bpp,
···12141214 SVGA3dCmdSurfaceDMA dma;12151215 } *cmd;12161216 int ret;12171217+ SVGA3dCmdSurfaceDMASuffix *suffix;12181218+ uint32_t bo_size;1217121912181220 cmd = container_of(header, struct vmw_dma_cmd, header);12211221+ suffix = (SVGA3dCmdSurfaceDMASuffix *)((unsigned long) &cmd->dma +12221222+ header->size - sizeof(*suffix));12231223+12241224+ /* Make sure device and verifier stays in sync. */12251225+ if (unlikely(suffix->suffixSize != sizeof(*suffix))) {12261226+ DRM_ERROR("Invalid DMA suffix size.\n");12271227+ return -EINVAL;12281228+ }12291229+12191230 ret = vmw_translate_guest_ptr(dev_priv, sw_context,12201231 &cmd->dma.guest.ptr,12211232 &vmw_bo);12221233 if (unlikely(ret != 0))12231234 return ret;12351235+12361236+ /* Make sure DMA doesn't cross BO boundaries. */12371237+ bo_size = vmw_bo->base.num_pages * PAGE_SIZE;12381238+ if (unlikely(cmd->dma.guest.ptr.offset > bo_size)) {12391239+ DRM_ERROR("Invalid DMA offset.\n");12401240+ return -EINVAL;12411241+ }12421242+12431243+ bo_size -= cmd->dma.guest.ptr.offset;12441244+ if (unlikely(suffix->maximumOffset > bo_size))12451245+ suffix->maximumOffset = bo_size;1224124612251247 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_surface,12261248 user_surface_converter, &cmd->dma.host.sid,
+2-2
drivers/hwmon/coretemp.c
···365365 if (cpu_has_tjmax(c))366366 dev_warn(dev, "Unable to read TjMax from CPU %u\n", id);367367 } else {368368- val = (eax >> 16) & 0x7f;368368+ val = (eax >> 16) & 0xff;369369 /*370370 * If the TjMax is not plausible, an assumption371371 * will be used372372 */373373- if (val >= 85) {373373+ if (val) {374374 dev_dbg(dev, "TjMax is %d degrees C\n", val);375375 return val * 1000;376376 }
+3-3
drivers/infiniband/hw/cxgb4/Kconfig
···11config INFINIBAND_CXGB422- tristate "Chelsio T4 RDMA Driver"22+ tristate "Chelsio T4/T5 RDMA Driver"33 depends on CHELSIO_T4 && INET && (IPV6 || IPV6=n)44 select GENERIC_ALLOCATOR55 ---help---66- This is an iWARP/RDMA driver for the Chelsio T4 1GbE and77- 10GbE adapters.66+ This is an iWARP/RDMA driver for the Chelsio T4 and T577+ 1GbE, 10GbE adapters and T5 40GbE adapter.8899 For general information about Chelsio and our products, visit1010 our website at <http://www.chelsio.com>.
+28-11
drivers/infiniband/hw/cxgb4/cm.c
···587587 opt2 |= SACK_EN(1);588588 if (wscale && enable_tcp_window_scaling)589589 opt2 |= WND_SCALE_EN(1);590590+ if (is_t5(ep->com.dev->rdev.lldi.adapter_type)) {591591+ opt2 |= T5_OPT_2_VALID;592592+ opt2 |= V_CONG_CNTRL(CONG_ALG_TAHOE);593593+ }590594 t4_set_arp_err_handler(skb, NULL, act_open_req_arp_failure);591595592596 if (is_t4(ep->com.dev->rdev.lldi.adapter_type)) {···1000996static int abort_connection(struct c4iw_ep *ep, struct sk_buff *skb, gfp_t gfp)1001997{1002998 PDBG("%s ep %p tid %u\n", __func__, ep, ep->hwtid);10031003- state_set(&ep->com, ABORTING);999999+ __state_set(&ep->com, ABORTING);10041000 set_bit(ABORT_CONN, &ep->com.history);10051001 return send_abort(ep, skb, gfp);10061002}···11581154 return credits;11591155}1160115611611161-static void process_mpa_reply(struct c4iw_ep *ep, struct sk_buff *skb)11571157+static int process_mpa_reply(struct c4iw_ep *ep, struct sk_buff *skb)11621158{11631159 struct mpa_message *mpa;11641160 struct mpa_v2_conn_params *mpa_v2_params;···11681164 struct c4iw_qp_attributes attrs;11691165 enum c4iw_qp_attr_mask mask;11701166 int err;11671167+ int disconnect = 0;1171116811721169 PDBG("%s ep %p tid %u\n", __func__, ep, ep->hwtid);11731170···11781173 * will abort the connection.11791174 */11801175 if (stop_ep_timer(ep))11811181- return;11761176+ return 0;1182117711831178 /*11841179 * If we get more than the supported amount of private data···12001195 * if we don't even have the mpa message, then bail.12011196 */12021197 if (ep->mpa_pkt_len < sizeof(*mpa))12031203- return;11981198+ return 0;12041199 mpa = (struct mpa_message *) ep->mpa_pkt;1205120012061201 /* Validate MPA header. */···12401235 * We'll continue process when more data arrives.12411236 */12421237 if (ep->mpa_pkt_len < (sizeof(*mpa) + plen))12431243- return;12381238+ return 0;1244123912451240 if (mpa->flags & MPA_REJECT) {12461241 err = -ECONNREFUSED;···13421337 attrs.layer_etype = LAYER_MPA | DDP_LLP;13431338 attrs.ecode = MPA_NOMATCH_RTR;13441339 attrs.next_state = C4IW_QP_STATE_TERMINATE;13401340+ attrs.send_term = 1;13451341 err = c4iw_modify_qp(ep->com.qp->rhp, ep->com.qp,13461346- C4IW_QP_ATTR_NEXT_STATE, &attrs, 0);13421342+ C4IW_QP_ATTR_NEXT_STATE, &attrs, 1);13471343 err = -ENOMEM;13441344+ disconnect = 1;13481345 goto out;13491346 }13501347···13621355 attrs.layer_etype = LAYER_MPA | DDP_LLP;13631356 attrs.ecode = MPA_INSUFF_IRD;13641357 attrs.next_state = C4IW_QP_STATE_TERMINATE;13581358+ attrs.send_term = 1;13651359 err = c4iw_modify_qp(ep->com.qp->rhp, ep->com.qp,13661366- C4IW_QP_ATTR_NEXT_STATE, &attrs, 0);13601360+ C4IW_QP_ATTR_NEXT_STATE, &attrs, 1);13671361 err = -ENOMEM;13621362+ disconnect = 1;13681363 goto out;13691364 }13701365 goto out;···13751366 send_abort(ep, skb, GFP_KERNEL);13761367out:13771368 connect_reply_upcall(ep, err);13781378- return;13691369+ return disconnect;13791370}1380137113811372static void process_mpa_request(struct c4iw_ep *ep, struct sk_buff *skb)···15331524 unsigned int tid = GET_TID(hdr);15341525 struct tid_info *t = dev->rdev.lldi.tids;15351526 __u8 status = hdr->status;15271527+ int disconnect = 0;1536152815371529 ep = lookup_tid(t, tid);15381530 if (!ep)···15491539 switch (ep->com.state) {15501540 case MPA_REQ_SENT:15511541 ep->rcv_seq += dlen;15521552- process_mpa_reply(ep, skb);15421542+ disconnect = process_mpa_reply(ep, skb);15531543 break;15541544 case MPA_REQ_WAIT:15551545 ep->rcv_seq += dlen;···15651555 ep->com.state, ep->hwtid, status);15661556 attrs.next_state = C4IW_QP_STATE_TERMINATE;15671557 c4iw_modify_qp(ep->com.qp->rhp, ep->com.qp,15681568- C4IW_QP_ATTR_NEXT_STATE, &attrs, 0);15581558+ C4IW_QP_ATTR_NEXT_STATE, &attrs, 1);15591559+ disconnect = 1;15691560 break;15701561 }15711562 default:15721563 break;15731564 }15741565 mutex_unlock(&ep->com.mutex);15661566+ if (disconnect)15671567+ c4iw_ep_disconnect(ep, 0, GFP_KERNEL);15751568 return 0;15761569}15771570···20212008 G_IP_HDR_LEN(hlen);20222009 if (tcph->ece && tcph->cwr)20232010 opt2 |= CCTRL_ECN(1);20112011+ }20122012+ if (is_t5(ep->com.dev->rdev.lldi.adapter_type)) {20132013+ opt2 |= T5_OPT_2_VALID;20142014+ opt2 |= V_CONG_CNTRL(CONG_ALG_TAHOE);20242015 }2025201620262017 rpl = cplhdr(skb);···34993482 __func__, ep, ep->hwtid, ep->com.state);35003483 abort = 0;35013484 }35023502- mutex_unlock(&ep->com.mutex);35033485 if (abort)35043486 abort_connection(ep, NULL, GFP_KERNEL);34873487+ mutex_unlock(&ep->com.mutex);35053488 c4iw_put_ep(&ep->com);35063489}35073490
···232232 struct bio_list deferred_bio_list;233233 struct bio_list retry_on_resume_list;234234 struct rb_root sort_bio_list; /* sorted list of deferred bios */235235+236236+ /*237237+ * Ensures the thin is not destroyed until the worker has finished238238+ * iterating the active_thins list.239239+ */240240+ atomic_t refcount;241241+ struct completion can_destroy;235242};236243237244/*----------------------------------------------------------------*/···14931486 blk_finish_plug(&plug);14941487}1495148814891489+static void thin_get(struct thin_c *tc);14901490+static void thin_put(struct thin_c *tc);14911491+14921492+/*14931493+ * We can't hold rcu_read_lock() around code that can block. So we14941494+ * find a thin with the rcu lock held; bump a refcount; then drop14951495+ * the lock.14961496+ */14971497+static struct thin_c *get_first_thin(struct pool *pool)14981498+{14991499+ struct thin_c *tc = NULL;15001500+15011501+ rcu_read_lock();15021502+ if (!list_empty(&pool->active_thins)) {15031503+ tc = list_entry_rcu(pool->active_thins.next, struct thin_c, list);15041504+ thin_get(tc);15051505+ }15061506+ rcu_read_unlock();15071507+15081508+ return tc;15091509+}15101510+15111511+static struct thin_c *get_next_thin(struct pool *pool, struct thin_c *tc)15121512+{15131513+ struct thin_c *old_tc = tc;15141514+15151515+ rcu_read_lock();15161516+ list_for_each_entry_continue_rcu(tc, &pool->active_thins, list) {15171517+ thin_get(tc);15181518+ thin_put(old_tc);15191519+ rcu_read_unlock();15201520+ return tc;15211521+ }15221522+ thin_put(old_tc);15231523+ rcu_read_unlock();15241524+15251525+ return NULL;15261526+}15271527+14961528static void process_deferred_bios(struct pool *pool)14971529{14981530 unsigned long flags;···15391493 struct bio_list bios;15401494 struct thin_c *tc;1541149515421542- rcu_read_lock();15431543- list_for_each_entry_rcu(tc, &pool->active_thins, list)14961496+ tc = get_first_thin(pool);14971497+ while (tc) {15441498 process_thin_deferred_bios(tc);15451545- rcu_read_unlock();14991499+ tc = get_next_thin(pool, tc);15001500+ }1546150115471502 /*15481503 * If there are any deferred flush bios, we must commit···16251578{16261579 struct noflush_work w;1627158016281628- INIT_WORK(&w.worker, fn);15811581+ INIT_WORK_ONSTACK(&w.worker, fn);16291582 w.tc = tc;16301583 atomic_set(&w.complete, 0);16311584 init_waitqueue_head(&w.wait);···31083061/*----------------------------------------------------------------31093062 * Thin target methods31103063 *--------------------------------------------------------------*/30643064+static void thin_get(struct thin_c *tc)30653065+{30663066+ atomic_inc(&tc->refcount);30673067+}30683068+30693069+static void thin_put(struct thin_c *tc)30703070+{30713071+ if (atomic_dec_and_test(&tc->refcount))30723072+ complete(&tc->can_destroy);30733073+}30743074+31113075static void thin_dtr(struct dm_target *ti)31123076{31133077 struct thin_c *tc = ti->private;31143078 unsigned long flags;30793079+30803080+ thin_put(tc);30813081+ wait_for_completion(&tc->can_destroy);3115308231163083 spin_lock_irqsave(&tc->pool->lock, flags);31173084 list_del_rcu(&tc->list);···31623101 struct thin_c *tc;31633102 struct dm_dev *pool_dev, *origin_dev;31643103 struct mapped_device *pool_md;31043104+ unsigned long flags;3165310531663106 mutex_lock(&dm_thin_pool_table.mutex);31673107···3253319132543192 mutex_unlock(&dm_thin_pool_table.mutex);3255319332563256- spin_lock(&tc->pool->lock);31943194+ atomic_set(&tc->refcount, 1);31953195+ init_completion(&tc->can_destroy);31963196+31973197+ spin_lock_irqsave(&tc->pool->lock, flags);32573198 list_add_tail_rcu(&tc->list, &tc->pool->active_thins);32583258- spin_unlock(&tc->pool->lock);31993199+ spin_unlock_irqrestore(&tc->pool->lock, flags);32593200 /*32603201 * This synchronize_rcu() call is needed here otherwise we risk a32613202 * wake_worker() call finding no bios to process (because the newly
+9-6
drivers/md/dm-verity.c
···330330 return r;331331 }332332 }333333-334333 todo = 1 << v->data_dev_block_bits;335335- while (io->iter.bi_size) {334334+ do {336335 u8 *page;336336+ unsigned len;337337 struct bio_vec bv = bio_iter_iovec(bio, io->iter);338338339339 page = kmap_atomic(bv.bv_page);340340- r = crypto_shash_update(desc, page + bv.bv_offset,341341- bv.bv_len);340340+ len = bv.bv_len;341341+ if (likely(len >= todo))342342+ len = todo;343343+ r = crypto_shash_update(desc, page + bv.bv_offset, len);342344 kunmap_atomic(page);343345344346 if (r < 0) {···348346 return r;349347 }350348351351- bio_advance_iter(bio, &io->iter, bv.bv_len);352352- }349349+ bio_advance_iter(bio, &io->iter, len);350350+ todo -= len;351351+ } while (todo);353352354353 if (!v->version) {355354 r = crypto_shash_update(desc, v->salt, v->salt_size);
+27-1
drivers/of/irq.c
···364364365365 memset(r, 0, sizeof(*r));366366 /*367367- * Get optional "interrupts-names" property to add a name367367+ * Get optional "interrupt-names" property to add a name368368 * to the resource.369369 */370370 of_property_read_string_index(dev, "interrupt-names", index,···378378 return irq;379379}380380EXPORT_SYMBOL_GPL(of_irq_to_resource);381381+382382+/**383383+ * of_irq_get - Decode a node's IRQ and return it as a Linux irq number384384+ * @dev: pointer to device tree node385385+ * @index: zero-based index of the irq386386+ *387387+ * Returns Linux irq number on success, or -EPROBE_DEFER if the irq domain388388+ * is not yet created.389389+ *390390+ */391391+int of_irq_get(struct device_node *dev, int index)392392+{393393+ int rc;394394+ struct of_phandle_args oirq;395395+ struct irq_domain *domain;396396+397397+ rc = of_irq_parse_one(dev, index, &oirq);398398+ if (rc)399399+ return rc;400400+401401+ domain = irq_find_host(oirq.np);402402+ if (!domain)403403+ return -EPROBE_DEFER;404404+405405+ return irq_create_of_mapping(&oirq);406406+}381407382408/**383409 * of_irq_count - Count the number of IRQs a node uses
+3-1
drivers/of/platform.c
···168168 rc = of_address_to_resource(np, i, res);169169 WARN_ON(rc);170170 }171171- WARN_ON(of_irq_to_resource_table(np, res, num_irq) != num_irq);171171+ if (of_irq_to_resource_table(np, res, num_irq) != num_irq)172172+ pr_debug("not all legacy IRQ resources mapped for %s\n",173173+ np->name);172174 }173175174176 dev->dev.of_node = of_node_get(np);
+32
drivers/of/selftest.c
···1010#include <linux/module.h>1111#include <linux/of.h>1212#include <linux/of_irq.h>1313+#include <linux/of_platform.h>1314#include <linux/list.h>1415#include <linux/mutex.h>1516#include <linux/slab.h>···428427 }429428}430429430430+static void __init of_selftest_platform_populate(void)431431+{432432+ int irq;433433+ struct device_node *np;434434+ struct platform_device *pdev;435435+436436+ np = of_find_node_by_path("/testcase-data");437437+ of_platform_populate(np, of_default_bus_match_table, NULL, NULL);438438+439439+ /* Test that a missing irq domain returns -EPROBE_DEFER */440440+ np = of_find_node_by_path("/testcase-data/testcase-device1");441441+ pdev = of_find_device_by_node(np);442442+ if (!pdev)443443+ selftest(0, "device 1 creation failed\n");444444+ irq = platform_get_irq(pdev, 0);445445+ if (irq != -EPROBE_DEFER)446446+ selftest(0, "device deferred probe failed - %d\n", irq);447447+448448+ /* Test that a parsing failure does not return -EPROBE_DEFER */449449+ np = of_find_node_by_path("/testcase-data/testcase-device2");450450+ pdev = of_find_device_by_node(np);451451+ if (!pdev)452452+ selftest(0, "device 2 creation failed\n");453453+ irq = platform_get_irq(pdev, 0);454454+ if (irq >= 0 || irq == -EPROBE_DEFER)455455+ selftest(0, "device parsing error failed - %d\n", irq);456456+457457+ selftest(1, "passed");458458+}459459+431460static int __init of_selftest(void)432461{433462 struct device_node *np;···476445 of_selftest_parse_interrupts();477446 of_selftest_parse_interrupts_extended();478447 of_selftest_match_node();448448+ of_selftest_platform_populate();479449 pr_info("end of selftest - %i passed, %i failed\n",480450 selftest_results.passed, selftest_results.failed);481451 return 0;
···6464};65656666struct as3722_gpio_pin_control {6767- bool enable_gpio_invert;6867 unsigned mode_prop;6968 int io_function;7069};···319320 return mode;320321 }321322322322- if (as_pci->gpio_control[offset].enable_gpio_invert)323323- mode |= AS3722_GPIO_INV;324324-325325- return as3722_write(as3722, AS3722_GPIOn_CONTROL_REG(offset), mode);323323+ return as3722_update_bits(as3722, AS3722_GPIOn_CONTROL_REG(offset),324324+ AS3722_GPIO_MODE_MASK, mode);326325}327326328327static const struct pinmux_ops as3722_pinmux_ops = {···493496{494497 struct as3722_pctrl_info *as_pci = to_as_pci(chip);495498 struct as3722 *as3722 = as_pci->as3722;496496- int en_invert = as_pci->gpio_control[offset].enable_gpio_invert;499499+ int en_invert;497500 u32 val;498501 int ret;502502+503503+ ret = as3722_read(as3722, AS3722_GPIOn_CONTROL_REG(offset), &val);504504+ if (ret < 0) {505505+ dev_err(as_pci->dev,506506+ "GPIO_CONTROL%d_REG read failed: %d\n", offset, ret);507507+ return;508508+ }509509+ en_invert = !!(val & AS3722_GPIO_INV);499510500511 if (value)501512 val = (en_invert) ? 0 : AS3722_GPIOn_SIGNAL(offset);
+13
drivers/pinctrl/pinctrl-single.c
···810810static int pcs_add_pin(struct pcs_device *pcs, unsigned offset,811811 unsigned pin_pos)812812{813813+ struct pcs_soc_data *pcs_soc = &pcs->socdata;813814 struct pinctrl_pin_desc *pin;814815 struct pcs_name *pn;815816 int i;···820819 dev_err(pcs->dev, "too many pins, max %i\n",821820 pcs->desc.npins);822821 return -ENOMEM;822822+ }823823+824824+ if (pcs_soc->irq_enable_mask) {825825+ unsigned val;826826+827827+ val = pcs->read(pcs->base + offset);828828+ if (val & pcs_soc->irq_enable_mask) {829829+ dev_dbg(pcs->dev, "irq enabled at boot for pin at %lx (%x), clearing\n",830830+ (unsigned long)pcs->res->start + offset, val);831831+ val &= ~pcs_soc->irq_enable_mask;832832+ pcs->write(val, pcs->base + offset);833833+ }823834 }824835825836 pin = &pcs->pins.pa[i];
+1-2
drivers/pinctrl/pinctrl-tb10x.c
···629629 */630630 for (i = 0; i < state->pinfuncgrpcnt; i++) {631631 const struct tb10x_pinfuncgrp *pfg = &state->pingroups[i];632632- unsigned int port = pfg->port;633632 unsigned int mode = pfg->mode;634634- int j;633633+ int j, port = pfg->port;635634636635 /*637636 * Skip pin groups which are always mapped and don't need
···8383{8484 struct acpi_device *acpi_dev;8585 acpi_handle handle;8686- struct acpi_buffer buffer;8787- int ret;8686+ int ret = 0;88878988 pnp_dbg(&dev->dev, "set resources\n");9089···9697 if (WARN_ON_ONCE(acpi_dev != dev->data))9798 dev->data = acpi_dev;98999999- ret = pnpacpi_build_resource_template(dev, &buffer);100100- if (ret)101101- return ret;102102- ret = pnpacpi_encode_resources(dev, &buffer);103103- if (ret) {100100+ if (acpi_has_method(handle, METHOD_NAME__SRS)) {101101+ struct acpi_buffer buffer;102102+103103+ ret = pnpacpi_build_resource_template(dev, &buffer);104104+ if (ret)105105+ return ret;106106+107107+ ret = pnpacpi_encode_resources(dev, &buffer);108108+ if (!ret) {109109+ acpi_status status;110110+111111+ status = acpi_set_current_resources(handle, &buffer);112112+ if (ACPI_FAILURE(status))113113+ ret = -EIO;114114+ }104115 kfree(buffer.pointer);105105- return ret;106116 }107107- if (ACPI_FAILURE(acpi_set_current_resources(handle, &buffer)))108108- ret = -EINVAL;109109- else if (acpi_bus_power_manageable(handle))117117+ if (!ret && acpi_bus_power_manageable(handle))110118 ret = acpi_bus_set_power(handle, ACPI_STATE_D0);111111- kfree(buffer.pointer);119119+112120 return ret;113121}114122···123117{124118 struct acpi_device *acpi_dev;125119 acpi_handle handle;126126- int ret;120120+ acpi_status status;127121128122 dev_dbg(&dev->dev, "disable resources\n");129123···134128 }135129136130 /* acpi_unregister_gsi(pnp_irq(dev, 0)); */137137- ret = 0;138131 if (acpi_bus_power_manageable(handle))139132 acpi_bus_set_power(handle, ACPI_STATE_D3_COLD);140140- /* continue even if acpi_bus_set_power() fails */141141- if (ACPI_FAILURE(acpi_evaluate_object(handle, "_DIS", NULL, NULL)))142142- ret = -ENODEV;143143- return ret;133133+134134+ /* continue even if acpi_bus_set_power() fails */135135+ status = acpi_evaluate_object(handle, "_DIS", NULL, NULL);136136+ if (ACPI_FAILURE(status) && status != AE_NOT_FOUND)137137+ return -ENODEV;138138+139139+ return 0;144140}145141146142#ifdef CONFIG_ACPI_SLEEP
+2-2
drivers/pnp/quirks.c
···335335}336336#endif337337338338-#ifdef CONFIG_X86338338+#ifdef CONFIG_PCI339339/* Device IDs of parts that have 32KB MCH space */340340static const unsigned int mch_quirk_devices[] = {341341 0x0154, /* Ivy Bridge */···440440#ifdef CONFIG_AMD_NB441441 {"PNP0c01", quirk_amd_mmconfig_area},442442#endif443443-#ifdef CONFIG_X86443443+#ifdef CONFIG_PCI444444 {"PNP0c02", quirk_intel_mch},445445#endif446446 {""}
+17-5
drivers/s390/cio/chsc.c
···541541542542static void chsc_process_event_information(struct chsc_sei *sei, u64 ntsm)543543{544544- do {544544+ static int ntsm_unsupported;545545+546546+ while (true) {545547 memset(sei, 0, sizeof(*sei));546548 sei->request.length = 0x0010;547549 sei->request.code = 0x000e;548548- sei->ntsm = ntsm;550550+ if (!ntsm_unsupported)551551+ sei->ntsm = ntsm;549552550553 if (chsc(sei))551554 break;552555553556 if (sei->response.code != 0x0001) {554554- CIO_CRW_EVENT(2, "chsc: sei failed (rc=%04x)\n",555555- sei->response.code);557557+ CIO_CRW_EVENT(2, "chsc: sei failed (rc=%04x, ntsm=%llx)\n",558558+ sei->response.code, sei->ntsm);559559+560560+ if (sei->response.code == 3 && sei->ntsm) {561561+ /* Fallback for old firmware. */562562+ ntsm_unsupported = 1;563563+ continue;564564+ }556565 break;557566 }558567···577568 CIO_CRW_EVENT(2, "chsc: unhandled nt: %d\n", sei->nt);578569 break;579570 }580580- } while (sei->u.nt0_area.flags & 0x80);571571+572572+ if (!(sei->u.nt0_area.flags & 0x80))573573+ break;574574+ }581575}582576583577/*
···750750751751 vscsi->affinity_hint_set = true;752752 } else {753753- for (i = 0; i < vscsi->num_queues; i++)753753+ for (i = 0; i < vscsi->num_queues; i++) {754754+ if (!vscsi->req_vqs[i].vq)755755+ continue;756756+754757 virtqueue_set_affinity(vscsi->req_vqs[i].vq, -1);758758+ }755759756760 vscsi->affinity_hint_set = false;757761 }
+34-8
fs/aio.c
···112112113113 struct work_struct free_work;114114115115+ /*116116+ * signals when all in-flight requests are done117117+ */118118+ struct completion *requests_done;119119+115120 struct {116121 /*117122 * This counts the number of available slots in the ringbuffer,···513508{514509 struct kioctx *ctx = container_of(ref, struct kioctx, reqs);515510511511+ /* At this point we know that there are no any in-flight requests */512512+ if (ctx->requests_done)513513+ complete(ctx->requests_done);514514+516515 INIT_WORK(&ctx->free_work, free_ioctx);517516 schedule_work(&ctx->free_work);518517}···727718 * when the processes owning a context have all exited to encourage728719 * the rapid destruction of the kioctx.729720 */730730-static void kill_ioctx(struct mm_struct *mm, struct kioctx *ctx)721721+static void kill_ioctx(struct mm_struct *mm, struct kioctx *ctx,722722+ struct completion *requests_done)731723{732724 if (!atomic_xchg(&ctx->dead, 1)) {733725 struct kioctx_table *table;···757747 if (ctx->mmap_size)758748 vm_munmap(ctx->mmap_base, ctx->mmap_size);759749750750+ ctx->requests_done = requests_done;760751 percpu_ref_kill(&ctx->users);752752+ } else {753753+ if (requests_done)754754+ complete(requests_done);761755 }762756}763757···823809 */824810 ctx->mmap_size = 0;825811826826- kill_ioctx(mm, ctx);812812+ kill_ioctx(mm, ctx, NULL);827813 }828814}829815···11991185 if (!IS_ERR(ioctx)) {12001186 ret = put_user(ioctx->user_id, ctxp);12011187 if (ret)12021202- kill_ioctx(current->mm, ioctx);11881188+ kill_ioctx(current->mm, ioctx, NULL);12031189 percpu_ref_put(&ioctx->users);12041190 }12051191···12171203{12181204 struct kioctx *ioctx = lookup_ioctx(ctx);12191205 if (likely(NULL != ioctx)) {12201220- kill_ioctx(current->mm, ioctx);12061206+ struct completion requests_done =12071207+ COMPLETION_INITIALIZER_ONSTACK(requests_done);12081208+12091209+ /* Pass requests_done to kill_ioctx() where it can be set12101210+ * in a thread-safe way. If we try to set it here then we have12111211+ * a race condition if two io_destroy() called simultaneously.12121212+ */12131213+ kill_ioctx(current->mm, ioctx, &requests_done);12211214 percpu_ref_put(&ioctx->users);12151215+12161216+ /* Wait until all IO for the context are done. Otherwise kernel12171217+ * keep using user-space buffers even if user thinks the context12181218+ * is destroyed.12191219+ */12201220+ wait_for_completion(&requests_done);12211221+12221222 return 0;12231223 }12241224 pr_debug("EINVAL: io_destroy: invalid context id\n");···13271299 &iovec, compat)13281300 : aio_setup_single_vector(req, rw, buf, &nr_segs,13291301 iovec);13301330- if (ret)13311331- return ret;13321332-13331333- ret = rw_verify_area(rw, file, &req->ki_pos, req->ki_nbytes);13021302+ if (!ret)13031303+ ret = rw_verify_area(rw, file, &req->ki_pos, req->ki_nbytes);13341304 if (ret < 0) {13351305 if (iovec != &inline_vec)13361306 kfree(iovec);
···535535extern int ftrace_arch_read_dyn_info(char *buf, int size);536536537537extern int skip_trace(unsigned long ip);538538+extern void ftrace_module_init(struct module *mod);538539539540extern void ftrace_disable_daemon(void);540541extern void ftrace_enable_daemon(void);···545544static inline void ftrace_disable_daemon(void) { }546545static inline void ftrace_enable_daemon(void) { }547546static inline void ftrace_release_mod(struct module *mod) {}547547+static inline void ftrace_module_init(struct module *mod) {}548548static inline __init int register_ftrace_command(struct ftrace_func_command *cmd)549549{550550 return -EINVAL;
+2-2
include/linux/interrupt.h
···210210/**211211 * irq_set_affinity - Set the irq affinity of a given irq212212 * @irq: Interrupt to set affinity213213- * @mask: cpumask213213+ * @cpumask: cpumask214214 *215215 * Fails if cpumask does not contain an online CPU216216 */···223223/**224224 * irq_force_affinity - Force the irq affinity of a given irq225225 * @irq: Interrupt to set affinity226226- * @mask: cpumask226226+ * @cpumask: cpumask227227 *228228 * Same as irq_set_affinity, but without checking the mask against229229 * online cpus.
+2
include/linux/irq.h
···603603 return d ? irqd_get_trigger_type(d) : 0;604604}605605606606+unsigned int arch_dynirq_lower_bound(unsigned int from);607607+606608int __irq_alloc_descs(int irq, unsigned int from, unsigned int cnt, int node,607609 struct module *owner);608610
+5
include/linux/of_irq.h
···44444545#ifdef CONFIG_OF_IRQ4646extern int of_irq_count(struct device_node *dev);4747+extern int of_irq_get(struct device_node *dev, int index);4748#else4849static inline int of_irq_count(struct device_node *dev)5050+{5151+ return 0;5252+}5353+static inline int of_irq_get(struct device_node *dev, int index)4954{5055 return 0;5156}
···234234 goto again;235235 }236236 timer->base = new_base;237237+ } else {238238+ if (cpu != this_cpu && hrtimer_check_target(timer, new_base)) {239239+ cpu = this_cpu;240240+ goto again;241241+ }237242 }238243 return new_base;239244}···573568 return;574569575570 cpu_base->expires_next.tv64 = expires_next.tv64;571571+572572+ /*573573+ * If a hang was detected in the last timer interrupt then we574574+ * leave the hang delay active in the hardware. We want the575575+ * system to make progress. That also prevents the following576576+ * scenario:577577+ * T1 expires 50ms from now578578+ * T2 expires 5s from now579579+ *580580+ * T1 is removed, so this code is called and would reprogram581581+ * the hardware to 5s from now. Any hrtimer_start after that582582+ * will not reprogram the hardware due to hang_detected being583583+ * set. So we'd effectivly block all timers until the T2 event584584+ * fires.585585+ */586586+ if (cpu_base->hang_detected)587587+ return;576588577589 if (cpu_base->expires_next.tv64 != KTIME_MAX)578590 tick_program_event(cpu_base->expires_next, 1);
+7
kernel/irq/irqdesc.c
···363363 if (from > irq)364364 return -EINVAL;365365 from = irq;366366+ } else {367367+ /*368368+ * For interrupts which are freely allocated the369369+ * architecture can force a lower bound to the @from370370+ * argument. x86 uses this to exclude the GSI space.371371+ */372372+ from = arch_dynirq_lower_bound(from);366373 }367374368375 mutex_lock(&sparse_irq_lock);
+3-3
kernel/module.c
···815815 return -EFAULT;816816 name[MODULE_NAME_LEN-1] = '\0';817817818818- if (!(flags & O_NONBLOCK))819819- pr_warn("waiting module removal not supported: please upgrade\n");820820-821818 if (mutex_lock_interruptible(&module_mutex) != 0)822819 return -EINTR;823820···32673270 }3268327132693272 dynamic_debug_setup(info->debug, info->num_debug);32733273+32743274+ /* Ftrace init must be called in the MODULE_STATE_UNFORMED state */32753275+ ftrace_module_init(mod);3270327632713277 /* Finally it's fully formed, ready to start executing. */32723278 err = complete_formation(mod, info);
+5
kernel/softirq.c
···779779{780780 return 0;781781}782782+783783+unsigned int __weak arch_dynirq_lower_bound(unsigned int from)784784+{785785+ return from;786786+}
···23232424 sp = (unsigned long) regs[PERF_REG_X86_SP];25252626- map = map_groups__find(&thread->mg, MAP__FUNCTION, (u64) sp);2626+ map = map_groups__find(&thread->mg, MAP__VARIABLE, (u64) sp);2727 if (!map) {2828 pr_debug("failed to get stack map\n");2929+ free(buf);2930 return -1;3031 }3132
+7-1
tools/perf/arch/x86/tests/regs_load.S
···11-21#include <linux/linkage.h>3243#define AX 0···8990 ret9091ENDPROC(perf_regs_load)9192#endif9393+9494+/*9595+ * We need to provide note.GNU-stack section, saying that we want9696+ * NOT executable stack. Otherwise the final linking will assume that9797+ * the ELF stack should not be restricted at all and set it RWX.9898+ */9999+.section .note.GNU-stack,"",@progbits
+35-11
tools/perf/config/Makefile
···3434 LIBUNWIND_LIBS = -lunwind -lunwind-arm3535endif36363737+# So far there's only x86 libdw unwind support merged in perf.3838+# Disable it on all other architectures in case libdw unwind3939+# support is detected in system. Add supported architectures4040+# to the check.4141+ifneq ($(ARCH),x86)4242+ NO_LIBDW_DWARF_UNWIND := 14343+endif4444+3745ifeq ($(LIBUNWIND_LIBS),)3846 NO_LIBUNWIND := 13947else···116108CFLAGS += -Wall117109CFLAGS += -Wextra118110CFLAGS += -std=gnu99111111+112112+# Enforce a non-executable stack, as we may regress (again) in the future by113113+# adding assembler files missing the .GNU-stack linker note.114114+LDFLAGS += -Wl,-z,noexecstack119115120116EXTLIBS = -lelf -lpthread -lrt -lm -ldl121117···198186 stackprotector-all \199187 timerfd \200188 libunwind-debug-frame \201201- bionic189189+ bionic \190190+ liberty \191191+ liberty-z \192192+ cplus-demangle202193203194# Set FEATURE_CHECK_(C|LD)FLAGS-all for all CORE_FEATURE_TESTS features.204195# If in the future we need per-feature checks/flags for features not···519504endif520505521506ifeq ($(feature-libbfd), 1)522522- EXTLIBS += -lbfd -lz -liberty507507+ EXTLIBS += -lbfd508508+509509+ # call all detections now so we get correct510510+ # status in VF output511511+ $(call feature_check,liberty)512512+ $(call feature_check,liberty-z)513513+ $(call feature_check,cplus-demangle)514514+515515+ ifeq ($(feature-liberty), 1)516516+ EXTLIBS += -liberty517517+ else518518+ ifeq ($(feature-liberty-z), 1)519519+ EXTLIBS += -liberty -lz520520+ endif521521+ endif523522endif524523525524ifdef NO_DEMANGLE···544515 CFLAGS += -DHAVE_CPLUS_DEMANGLE_SUPPORT545516 else546517 ifneq ($(feature-libbfd), 1)547547- $(call feature_check,liberty)548548- ifeq ($(feature-liberty), 1)549549- EXTLIBS += -lbfd -liberty550550- else551551- $(call feature_check,liberty-z)552552- ifeq ($(feature-liberty-z), 1)553553- EXTLIBS += -lbfd -liberty -lz554554- else555555- $(call feature_check,cplus-demangle)518518+ ifneq ($(feature-liberty), 1)519519+ ifneq ($(feature-liberty-z), 1)520520+ # we dont have neither HAVE_CPLUS_DEMANGLE_SUPPORT521521+ # or any of 'bfd iberty z' trinity556522 ifeq ($(feature-cplus-demangle), 1)557523 EXTLIBS += -liberty558524 CFLAGS += -DHAVE_CPLUS_DEMANGLE_SUPPORT
+2
tools/perf/tests/make
···4646make_install_html := install-html4747make_install_info := install-info4848make_install_pdf := install-pdf4949+make_static := LDFLAGS=-static49505051# all the NO_* variable combined5152make_minimal := NO_LIBPERL=1 NO_LIBPYTHON=1 NO_NEWT=1 NO_GTK2=1···8887# run += make_install_info8988# run += make_install_pdf9089run += make_minimal9090+run += make_static91919292ifneq ($(call has,ctags),)9393run += make_tags
+12-4
tools/perf/util/machine.c
···717717}718718719719static int map_groups__set_modules_path_dir(struct map_groups *mg,720720- const char *dir_name)720720+ const char *dir_name, int depth)721721{722722 struct dirent *dent;723723 DIR *dir = opendir(dir_name);···742742 !strcmp(dent->d_name, ".."))743743 continue;744744745745- ret = map_groups__set_modules_path_dir(mg, path);745745+ /* Do not follow top-level source and build symlinks */746746+ if (depth == 0) {747747+ if (!strcmp(dent->d_name, "source") ||748748+ !strcmp(dent->d_name, "build"))749749+ continue;750750+ }751751+752752+ ret = map_groups__set_modules_path_dir(mg, path,753753+ depth + 1);746754 if (ret < 0)747755 goto out;748756 } else {···794786 if (!version)795787 return -1;796788797797- snprintf(modules_path, sizeof(modules_path), "%s/lib/modules/%s/kernel",789789+ snprintf(modules_path, sizeof(modules_path), "%s/lib/modules/%s",798790 machine->root_dir, version);799791 free(version);800792801801- return map_groups__set_modules_path_dir(&machine->kmaps, modules_path);793793+ return map_groups__set_modules_path_dir(&machine->kmaps, modules_path, 0);802794}803795804796static int machine__create_module(void *arg, const char *name, u64 start)
+8-7
virt/kvm/arm/vgic.c
···548548 u32 val;549549 u32 *reg;550550551551- offset >>= 1;552551 reg = vgic_bitmap_get_reg(&vcpu->kvm->arch.vgic.irq_cfg,553553- vcpu->vcpu_id, offset);552552+ vcpu->vcpu_id, offset >> 1);554553555555- if (offset & 2)554554+ if (offset & 4)556555 val = *reg >> 16;557556 else558557 val = *reg & 0xffff;···560561 vgic_reg_access(mmio, &val, offset,561562 ACCESS_READ_VALUE | ACCESS_WRITE_VALUE);562563 if (mmio->is_write) {563563- if (offset < 4) {564564+ if (offset < 8) {564565 *reg = ~0U; /* Force PPIs/SGIs to 1 */565566 return false;566567 }567568568569 val = vgic_cfg_compress(val);569569- if (offset & 2) {570570+ if (offset & 4) {570571 *reg &= 0xffff;571572 *reg |= val << 16;572573 } else {···915916 case 0:916917 if (!target_cpus)917918 return;919919+ break;918920919921 case 1:920922 target_cpus = ((1 << nrcpus) - 1) & ~(1 << vcpu_id) & 0xff;···16671667 if (addr + size < addr)16681668 return -EINVAL;1669166916701670+ *ioaddr = addr;16701671 ret = vgic_ioaddr_overlap(kvm);16711672 if (ret)16721672- return ret;16731673- *ioaddr = addr;16731673+ *ioaddr = VGIC_ADDR_UNDEF;16741674+16741675 return ret;16751676}16761677
+2-1
virt/kvm/assigned-dev.c
···395395 if (dev->entries_nr == 0)396396 return r;397397398398- r = pci_enable_msix(dev->dev, dev->host_msix_entries, dev->entries_nr);398398+ r = pci_enable_msix_exact(dev->dev,399399+ dev->host_msix_entries, dev->entries_nr);399400 if (r)400401 return r;401402