···324324325325``intel_pstate`` exposes several global attributes (files) in ``sysfs`` to326326control its functionality at the system level. They are located in the327327-``/sys/devices/system/cpu/cpufreq/intel_pstate/`` directory and affect all328328-CPUs.327327+``/sys/devices/system/cpu/intel_pstate/`` directory and affect all CPUs.329328330329Some of them are not present if the ``intel_pstate=per_cpu_perf_limits``331330argument is passed to the kernel in the command line.···377378 supplied to the ``CPUFreq`` core and exposed via the policy interface,378379 but it affects the maximum possible value of per-policy P-state limits379380 (see `Interpretation of Policy Attributes`_ below for details).381381+382382+``hwp_dynamic_boost``383383+ This attribute is only present if ``intel_pstate`` works in the384384+ `active mode with the HWP feature enabled <Active Mode With HWP_>`_ in385385+ the processor. If set (equal to 1), it causes the minimum P-state limit386386+ to be increased dynamically for a short time whenever a task previously387387+ waiting on I/O is selected to run on a given logical CPU (the purpose388388+ of this mechanism is to improve performance).389389+390390+ This setting has no effect on logical CPUs whose minimum P-state limit391391+ is directly set to the highest non-turbo P-state or above it.380392381393.. _status_attr:382394
···441441 int (*iterate) (struct file *, struct dir_context *);442442 int (*iterate_shared) (struct file *, struct dir_context *);443443 __poll_t (*poll) (struct file *, struct poll_table_struct *);444444- struct wait_queue_head * (*get_poll_head)(struct file *, __poll_t);445445- __poll_t (*poll_mask) (struct file *, __poll_t);446444 long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long);447445 long (*compat_ioctl) (struct file *, unsigned int, unsigned long);448446 int (*mmap) (struct file *, struct vm_area_struct *);···471473};472474473475locking rules:474474- All except for ->poll_mask may block.476476+ All may block.475477476478->llseek() locking has moved from llseek to the individual llseek477479implementations. If your fs is not using generic_file_llseek, you···502504->setlease operations should call generic_setlease() before or after setting503505the lease within the individual filesystem to record the result of the504506operation505505-506506-->poll_mask can be called with or without the waitqueue lock for the waitqueue507507-returned from ->get_poll_head.508507509508--------------------------- dquot_operations -------------------------------510509prototypes:
-13
Documentation/filesystems/vfs.txt
···857857 ssize_t (*write_iter) (struct kiocb *, struct iov_iter *);858858 int (*iterate) (struct file *, struct dir_context *);859859 __poll_t (*poll) (struct file *, struct poll_table_struct *);860860- struct wait_queue_head * (*get_poll_head)(struct file *, __poll_t);861861- __poll_t (*poll_mask) (struct file *, __poll_t);862860 long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long);863861 long (*compat_ioctl) (struct file *, unsigned int, unsigned long);864862 int (*mmap) (struct file *, struct vm_area_struct *);···900902 poll: called by the VFS when a process wants to check if there is901903 activity on this file and (optionally) go to sleep until there902904 is activity. Called by the select(2) and poll(2) system calls903903-904904- get_poll_head: Returns the struct wait_queue_head that callers can905905- wait on. Callers need to check the returned events using ->poll_mask906906- once woken. Can return NULL to indicate polling is not supported,907907- or any error code using the ERR_PTR convention to indicate that a908908- grave error occured and ->poll_mask shall not be called.909909-910910- poll_mask: return the mask of EPOLL* values describing the file descriptor911911- state. Called either before going to sleep on the waitqueue returned by912912- get_poll_head, or after it has been woken. If ->get_poll_head and913913- ->poll_mask are implemented ->poll does not need to be implement.914905915906 unlocked_ioctl: called by the ioctl(2) system call.916907
+6
Documentation/kbuild/kconfig-language.txt
···430430to use it. It should be placed at the top of the configuration, before any431431other statement.432432433433+'#' Kconfig source file comment:434434+435435+An unquoted '#' character anywhere in a source file line indicates436436+the beginning of a source file comment. The remainder of that line437437+is a comment.438438+433439434440Kconfig hints435441-------------
+57-55
Documentation/networking/e100.rst
···11+==============================================================12Linux* Base Driver for the Intel(R) PRO/100 Family of Adapters23==============================================================34···8786Additional Configurations8887=========================89889090- Configuring the Driver on Different Distributions9191- -------------------------------------------------8989+Configuring the Driver on Different Distributions9090+-------------------------------------------------92919393- Configuring a network driver to load properly when the system is started is9494- distribution dependent. Typically, the configuration process involves adding9595- an alias line to /etc/modprobe.d/*.conf as well as editing other system9696- startup scripts and/or configuration files. Many popular Linux9797- distributions ship with tools to make these changes for you. To learn the9898- proper way to configure a network device for your system, refer to your9999- distribution documentation. If during this process you are asked for the100100- driver or module name, the name for the Linux Base Driver for the Intel101101- PRO/100 Family of Adapters is e100.9292+Configuring a network driver to load properly when the system is started9393+is distribution dependent. Typically, the configuration process involves9494+adding an alias line to /etc/modprobe.d/*.conf as well as editing other9595+system startup scripts and/or configuration files. Many popular Linux9696+distributions ship with tools to make these changes for you. To learn9797+the proper way to configure a network device for your system, refer to9898+your distribution documentation. If during this process you are asked9999+for the driver or module name, the name for the Linux Base Driver for100100+the Intel PRO/100 Family of Adapters is e100.102101103103- As an example, if you install the e100 driver for two PRO/100 adapters104104- (eth0 and eth1), add the following to a configuration file in /etc/modprobe.d/102102+As an example, if you install the e100 driver for two PRO/100 adapters103103+(eth0 and eth1), add the following to a configuration file in104104+/etc/modprobe.d/::105105106106 alias eth0 e100107107 alias eth1 e100108108109109- Viewing Link Messages110110- ---------------------111111- In order to see link messages and other Intel driver information on your112112- console, you must set the dmesg level up to six. This can be done by113113- entering the following on the command line before loading the e100 driver::109109+Viewing Link Messages110110+---------------------111111+112112+In order to see link messages and other Intel driver information on your113113+console, you must set the dmesg level up to six. This can be done by114114+entering the following on the command line before loading the e100115115+driver::114116115117 dmesg -n 6116118117117- If you wish to see all messages issued by the driver, including debug118118- messages, set the dmesg level to eight.119119+If you wish to see all messages issued by the driver, including debug120120+messages, set the dmesg level to eight.119121120120- NOTE: This setting is not saved across reboots.122122+NOTE: This setting is not saved across reboots.121123124124+ethtool125125+-------122126123123- ethtool124124- -------127127+The driver utilizes the ethtool interface for driver configuration and128128+diagnostics, as well as displaying statistical information. The ethtool129129+version 1.6 or later is required for this functionality.125130126126- The driver utilizes the ethtool interface for driver configuration and127127- diagnostics, as well as displaying statistical information. The ethtool128128- version 1.6 or later is required for this functionality.131131+The latest release of ethtool can be found from132132+https://www.kernel.org/pub/software/network/ethtool/129133130130- The latest release of ethtool can be found from131131- https://www.kernel.org/pub/software/network/ethtool/134134+Enabling Wake on LAN* (WoL)135135+---------------------------136136+WoL is provided through the ethtool* utility. For instructions on137137+enabling WoL with ethtool, refer to the ethtool man page. WoL will be138138+enabled on the system during the next shut down or reboot. For this139139+driver version, in order to enable WoL, the e100 driver must be loaded140140+when shutting down or rebooting the system.132141133133- Enabling Wake on LAN* (WoL)134134- ---------------------------135135- WoL is provided through the ethtool* utility. For instructions on enabling136136- WoL with ethtool, refer to the ethtool man page.142142+NAPI143143+----137144138138- WoL will be enabled on the system during the next shut down or reboot. For139139- this driver version, in order to enable WoL, the e100 driver must be140140- loaded when shutting down or rebooting the system.145145+NAPI (Rx polling mode) is supported in the e100 driver.141146142142- NAPI143143- ----147147+See https://wiki.linuxfoundation.org/networking/napi for more148148+information on NAPI.144149145145- NAPI (Rx polling mode) is supported in the e100 driver.150150+Multiple Interfaces on Same Ethernet Broadcast Network151151+------------------------------------------------------146152147147- See https://wiki.linuxfoundation.org/networking/napi for more information148148- on NAPI.153153+Due to the default ARP behavior on Linux, it is not possible to have one154154+system on two IP networks in the same Ethernet broadcast domain155155+(non-partitioned switch) behave as expected. All Ethernet interfaces156156+will respond to IP traffic for any IP address assigned to the system.157157+This results in unbalanced receive traffic.149158150150- Multiple Interfaces on Same Ethernet Broadcast Network151151- ------------------------------------------------------159159+If you have multiple interfaces in a server, either turn on ARP160160+filtering by152161153153- Due to the default ARP behavior on Linux, it is not possible to have154154- one system on two IP networks in the same Ethernet broadcast domain155155- (non-partitioned switch) behave as expected. All Ethernet interfaces156156- will respond to IP traffic for any IP address assigned to the system.157157- This results in unbalanced receive traffic.162162+(1) entering:: echo 1 > /proc/sys/net/ipv4/conf/all/arp_filter163163+ (this only works if your kernel's version is higher than 2.4.5), or158164159159- If you have multiple interfaces in a server, either turn on ARP160160- filtering by161161-162162- (1) entering:: echo 1 > /proc/sys/net/ipv4/conf/all/arp_filter163163- (this only works if your kernel's version is higher than 2.4.5), or164164-165165- (2) installing the interfaces in separate broadcast domains (either166166- in different switches or in a switch partitioned to VLANs).165165+(2) installing the interfaces in separate broadcast domains (either166166+ in different switches or in a switch partitioned to VLANs).167167168168169169Support
+39-37
Documentation/networking/e1000.rst
···11+===========================================================12Linux* Base Driver for Intel(R) Ethernet Network Connection23===========================================================34···355354Additional Configurations356355=========================357356358358- Jumbo Frames359359- ------------360360- Jumbo Frames support is enabled by changing the MTU to a value larger than361361- the default of 1500. Use the ifconfig command to increase the MTU size.362362- For example::357357+Jumbo Frames358358+------------359359+Jumbo Frames support is enabled by changing the MTU to a value larger360360+than the default of 1500. Use the ifconfig command to increase the MTU361361+size. For example::363362364363 ifconfig eth<x> mtu 9000 up365364366366- This setting is not saved across reboots. It can be made permanent if367367- you add::365365+This setting is not saved across reboots. It can be made permanent if366366+you add::368367369368 MTU=9000370369371371- to the file /etc/sysconfig/network-scripts/ifcfg-eth<x>. This example372372- applies to the Red Hat distributions; other distributions may store this373373- setting in a different location.370370+to the file /etc/sysconfig/network-scripts/ifcfg-eth<x>. This example371371+applies to the Red Hat distributions; other distributions may store this372372+setting in a different location.374373375375- Notes:376376- Degradation in throughput performance may be observed in some Jumbo frames377377- environments. If this is observed, increasing the application's socket buffer378378- size and/or increasing the /proc/sys/net/ipv4/tcp_*mem entry values may help.379379- See the specific application manual and /usr/src/linux*/Documentation/380380- networking/ip-sysctl.txt for more details.374374+Notes: Degradation in throughput performance may be observed in some375375+Jumbo frames environments. If this is observed, increasing the376376+application's socket buffer size and/or increasing the377377+/proc/sys/net/ipv4/tcp_*mem entry values may help. See the specific378378+application manual and /usr/src/linux*/Documentation/379379+networking/ip-sysctl.txt for more details.381380382382- - The maximum MTU setting for Jumbo Frames is 16110. This value coincides383383- with the maximum Jumbo Frames size of 16128.381381+- The maximum MTU setting for Jumbo Frames is 16110. This value382382+ coincides with the maximum Jumbo Frames size of 16128.384383385385- - Using Jumbo frames at 10 or 100 Mbps is not supported and may result in386386- poor performance or loss of link.384384+- Using Jumbo frames at 10 or 100 Mbps is not supported and may result385385+ in poor performance or loss of link.387386388388- - Adapters based on the Intel(R) 82542 and 82573V/E controller do not389389- support Jumbo Frames. These correspond to the following product names:390390- Intel(R) PRO/1000 Gigabit Server Adapter391391- Intel(R) PRO/1000 PM Network Connection387387+- Adapters based on the Intel(R) 82542 and 82573V/E controller do not388388+ support Jumbo Frames. These correspond to the following product names:389389+ Intel(R) PRO/1000 Gigabit Server Adapter Intel(R) PRO/1000 PM Network390390+ Connection392391393393- ethtool394394- -------395395- The driver utilizes the ethtool interface for driver configuration and396396- diagnostics, as well as displaying statistical information. The ethtool397397- version 1.6 or later is required for this functionality.392392+ethtool393393+-------394394+The driver utilizes the ethtool interface for driver configuration and395395+diagnostics, as well as displaying statistical information. The ethtool396396+version 1.6 or later is required for this functionality.398397399399- The latest release of ethtool can be found from400400- https://www.kernel.org/pub/software/network/ethtool/398398+The latest release of ethtool can be found from399399+https://www.kernel.org/pub/software/network/ethtool/401400402402- Enabling Wake on LAN* (WoL)403403- ---------------------------404404- WoL is configured through the ethtool* utility.401401+Enabling Wake on LAN* (WoL)402402+---------------------------403403+WoL is configured through the ethtool* utility.405404406406- WoL will be enabled on the system during the next shut down or reboot.407407- For this driver version, in order to enable WoL, the e1000 driver must be408408- loaded when shutting down or rebooting the system.405405+WoL will be enabled on the system during the next shut down or reboot.406406+For this driver version, in order to enable WoL, the e1000 driver must be407407+loaded when shutting down or rebooting the system.408408+409409410410Support411411=======
+1-1
Documentation/networking/strparser.txt
···4848 Temporarily pause a stream parser. Message parsing is suspended4949 and no new messages are delivered to the upper layer.50505151-void strp_pause(struct strparser *strp)5151+void strp_unpause(struct strparser *strp)52525353 Unpause a paused stream parser.5454
+1-1
Documentation/usb/gadget_configfs.txt
···226226where <config name>.<number> specify the configuration and <function> is227227a symlink to a function being removed from the configuration, e.g.:228228229229-$ rm configfs/c.1/ncm.usb0229229+$ rm configs/c.1/ncm.usb0230230231231...232232...
+20-6
MAINTAINERS
···29712971N: bcm586*29722972N: bcm8831229732973N: hr229742974-F: arch/arm64/boot/dts/broadcom/ns2*29742974+N: stingray29752975+F: arch/arm64/boot/dts/broadcom/northstar2/*29762976+F: arch/arm64/boot/dts/broadcom/stingray/*29752977F: drivers/clk/bcm/clk-ns*29782978+F: drivers/clk/bcm/clk-sr*29762979F: drivers/pinctrl/bcm/pinctrl-ns*29802980+F: include/dt-bindings/clock/bcm-sr*2977298129782982BROADCOM KONA GPIO DRIVER29792983M: Ray Jui <rjui@broadcom.com>···56735669F: Documentation/devicetree/bindings/crypto/fsl-sec4.txt5674567056755671FREESCALE DIU FRAMEBUFFER DRIVER56765676-M: Timur Tabi <timur@tabi.org>56725672+M: Timur Tabi <timur@kernel.org>56775673L: linux-fbdev@vger.kernel.org56785674S: Maintained56795675F: drivers/video/fbdev/fsl-diu-fb.*···57735769F: drivers/net/wan/fsl_ucc_hdlc*5774577057755771FREESCALE QUICC ENGINE UCC UART DRIVER57765776-M: Timur Tabi <timur@tabi.org>57725772+M: Timur Tabi <timur@kernel.org>57775773L: linuxppc-dev@lists.ozlabs.org57785774S: Maintained57795775F: drivers/tty/serial/ucc_uart.c···57975793F: include/linux/fs_enet_pd.h5798579457995795FREESCALE SOC SOUND DRIVERS58005800-M: Timur Tabi <timur@tabi.org>57965796+M: Timur Tabi <timur@kernel.org>58015797M: Nicolin Chen <nicoleotsuka@gmail.com>58025798M: Xiubo Li <Xiubo.Lee@gmail.com>58035799R: Fabio Estevam <fabio.estevam@nxp.com>···98869882M: Vivien Didelot <vivien.didelot@savoirfairelinux.com>98879883M: Florian Fainelli <f.fainelli@gmail.com>98889884S: Maintained98859885+F: Documentation/devicetree/bindings/net/dsa/98899886F: net/dsa/98909887F: include/net/dsa.h98919888F: include/linux/dsa/···1148111476S: Obsolete1148211477F: drivers/net/wireless/intersil/prism54/11483114781147911479+PROC FILESYSTEM1148011480+R: Alexey Dobriyan <adobriyan@gmail.com>1148111481+L: linux-kernel@vger.kernel.org1148211482+L: linux-fsdevel@vger.kernel.org1148311483+S: Maintained1148411484+F: fs/proc/1148511485+F: include/linux/proc_fs.h1148611486+F: tools/testing/selftests/proc/1148711487+1148411488PROC SYSCTL1148511489M: "Luis R. Rodriguez" <mcgrof@kernel.org>1148611490M: Kees Cook <keescook@chromium.org>···1182211808F: drivers/cpufreq/qcom-cpufreq-kryo.c11823118091182411810QUALCOMM EMAC GIGABIT ETHERNET DRIVER1182511825-M: Timur Tabi <timur@codeaurora.org>1181111811+M: Timur Tabi <timur@kernel.org>1182611812L: netdev@vger.kernel.org1182711827-S: Supported1181311813+S: Maintained1182811814F: drivers/net/ethernet/qualcomm/emac/11829118151183011816QUALCOMM HEXAGON ARCHITECTURE
···12451245 VESA. If you have PCI, say Y, otherwise N.1246124612471247config PCI_DOMAINS12481248- bool12481248+ bool "Support for multiple PCI domains"12491249 depends on PCI12501250+ help12511251+ Enable PCI domains kernel management. Say Y if your machine12521252+ has a PCI bus hierarchy that requires more than one PCI12531253+ domain (aka segment) to be correctly managed. Say N otherwise.12541254+12551255+ If you don't know what to do here, say N.1250125612511257config PCI_DOMAINS_GENERIC12521258 def_bool PCI_DOMAINS
···11CONFIG_SYSVIPC=y22-CONFIG_FHANDLE=y32CONFIG_NO_HZ=y43CONFIG_HIGH_RES_TIMERS=y54CONFIG_CGROUPS=y···910CONFIG_MODULE_UNLOAD=y1011CONFIG_PARTITION_ADVANCED=y1112CONFIG_CMDLINE_PARTITION=y1212-CONFIG_ARCH_MULTI_V7=y1313-# CONFIG_ARCH_MULTI_V5 is not set1414-# CONFIG_ARCH_MULTI_V4 is not set1513CONFIG_ARCH_VIRT=y1614CONFIG_ARCH_ALPINE=y1715CONFIG_ARCH_ARTPEC=y1816CONFIG_MACH_ARTPEC6=y1919-CONFIG_ARCH_MVEBU=y2020-CONFIG_MACH_ARMADA_370=y2121-CONFIG_MACH_ARMADA_375=y2222-CONFIG_MACH_ARMADA_38X=y2323-CONFIG_MACH_ARMADA_39X=y2424-CONFIG_MACH_ARMADA_XP=y2525-CONFIG_MACH_DOVE=y2617CONFIG_ARCH_AT91=y2718CONFIG_SOC_SAMA5D2=y2819CONFIG_SOC_SAMA5D3=y···2132CONFIG_ARCH_BCM_CYGNUS=y2233CONFIG_ARCH_BCM_HR2=y2334CONFIG_ARCH_BCM_NSP=y2424-CONFIG_ARCH_BCM_21664=y2525-CONFIG_ARCH_BCM_281XX=y2635CONFIG_ARCH_BCM_5301X=y3636+CONFIG_ARCH_BCM_281XX=y3737+CONFIG_ARCH_BCM_21664=y2738CONFIG_ARCH_BCM2835=y2839CONFIG_ARCH_BCM_63XX=y2940CONFIG_ARCH_BRCMSTB=y···3243CONFIG_MACH_BERLIN_BG2CD=y3344CONFIG_MACH_BERLIN_BG2Q=y3445CONFIG_ARCH_DIGICOLOR=y4646+CONFIG_ARCH_EXYNOS=y4747+CONFIG_EXYNOS5420_MCPM=y3548CONFIG_ARCH_HIGHBANK=y3649CONFIG_ARCH_HISI=y3750CONFIG_ARCH_HI3xxx=y3838-CONFIG_ARCH_HIX5HD2=y3951CONFIG_ARCH_HIP01=y4052CONFIG_ARCH_HIP04=y4141-CONFIG_ARCH_KEYSTONE=y4242-CONFIG_ARCH_MESON=y5353+CONFIG_ARCH_HIX5HD2=y4354CONFIG_ARCH_MXC=y4455CONFIG_SOC_IMX50=y4556CONFIG_SOC_IMX51=y···4960CONFIG_SOC_IMX6SX=y5061CONFIG_SOC_IMX6UL=y5162CONFIG_SOC_IMX7D=y5252-CONFIG_SOC_VF610=y5363CONFIG_SOC_LS1021A=y6464+CONFIG_SOC_VF610=y6565+CONFIG_ARCH_KEYSTONE=y6666+CONFIG_ARCH_MEDIATEK=y6767+CONFIG_ARCH_MESON=y6868+CONFIG_ARCH_MVEBU=y6969+CONFIG_MACH_ARMADA_370=y7070+CONFIG_MACH_ARMADA_375=y7171+CONFIG_MACH_ARMADA_38X=y7272+CONFIG_MACH_ARMADA_39X=y7373+CONFIG_MACH_ARMADA_XP=y7474+CONFIG_MACH_DOVE=y5475CONFIG_ARCH_OMAP3=y5576CONFIG_ARCH_OMAP4=y5677CONFIG_SOC_OMAP5=y5778CONFIG_SOC_AM33XX=y5879CONFIG_SOC_AM43XX=y5980CONFIG_SOC_DRA7XX=y8181+CONFIG_ARCH_SIRF=y6082CONFIG_ARCH_QCOM=y6161-CONFIG_ARCH_MEDIATEK=y6283CONFIG_ARCH_MSM8X60=y6384CONFIG_ARCH_MSM8960=y6485CONFIG_ARCH_MSM8974=y6586CONFIG_ARCH_ROCKCHIP=y6666-CONFIG_ARCH_SOCFPGA=y6767-CONFIG_PLAT_SPEAR=y6868-CONFIG_ARCH_SPEAR13XX=y6969-CONFIG_MACH_SPEAR1310=y7070-CONFIG_MACH_SPEAR1340=y7171-CONFIG_ARCH_STI=y7272-CONFIG_ARCH_STM32=y7373-CONFIG_ARCH_EXYNOS=y7474-CONFIG_EXYNOS5420_MCPM=y7587CONFIG_ARCH_RENESAS=y7688CONFIG_ARCH_EMEV2=y7789CONFIG_ARCH_R7S72100=y···8999CONFIG_ARCH_R8A7793=y90100CONFIG_ARCH_R8A7794=y91101CONFIG_ARCH_SH73A0=y102102+CONFIG_ARCH_SOCFPGA=y103103+CONFIG_PLAT_SPEAR=y104104+CONFIG_ARCH_SPEAR13XX=y105105+CONFIG_MACH_SPEAR1310=y106106+CONFIG_MACH_SPEAR1340=y107107+CONFIG_ARCH_STI=y108108+CONFIG_ARCH_STM32=y92109CONFIG_ARCH_SUNXI=y9393-CONFIG_ARCH_SIRF=y94110CONFIG_ARCH_TEGRA=y9595-CONFIG_ARCH_TEGRA_2x_SOC=y9696-CONFIG_ARCH_TEGRA_3x_SOC=y9797-CONFIG_ARCH_TEGRA_114_SOC=y9898-CONFIG_ARCH_TEGRA_124_SOC=y99111CONFIG_ARCH_UNIPHIER=y100112CONFIG_ARCH_U8500=y101101-CONFIG_MACH_HREFV60=y102102-CONFIG_MACH_SNOWBALL=y103113CONFIG_ARCH_VEXPRESS=y104114CONFIG_ARCH_VEXPRESS_TC2_PM=y105115CONFIG_ARCH_WM8850=y106116CONFIG_ARCH_ZYNQ=y107107-CONFIG_TRUSTED_FOUNDATIONS=y108108-CONFIG_PCI=y109109-CONFIG_PCI_HOST_GENERIC=y110110-CONFIG_PCI_DRA7XX=y111111-CONFIG_PCI_DRA7XX_EP=y112112-CONFIG_PCI_KEYSTONE=y113113-CONFIG_PCI_MSI=y117117+CONFIG_PCIEPORTBUS=y114118CONFIG_PCI_MVEBU=y115119CONFIG_PCI_TEGRA=y116120CONFIG_PCI_RCAR_GEN2=y117121CONFIG_PCIE_RCAR=y118118-CONFIG_PCIEPORTBUS=y122122+CONFIG_PCI_DRA7XX_EP=y123123+CONFIG_PCI_KEYSTONE=y119124CONFIG_PCI_ENDPOINT=y120125CONFIG_PCI_ENDPOINT_CONFIGFS=y121126CONFIG_PCI_EPF_TEST=m122127CONFIG_SMP=y123128CONFIG_NR_CPUS=16124124-CONFIG_HIGHPTE=y125125-CONFIG_CMA=y126129CONFIG_SECCOMP=y127130CONFIG_ARM_APPENDED_DTB=y128131CONFIG_ARM_ATAG_DTB_COMPAT=y···128145CONFIG_CPU_FREQ_GOV_USERSPACE=m129146CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m130147CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y148148+CONFIG_CPUFREQ_DT=y131149CONFIG_ARM_IMX6Q_CPUFREQ=y132150CONFIG_QORIQ_CPUFREQ=y133151CONFIG_CPU_IDLE=y134152CONFIG_ARM_CPUIDLE=y135135-CONFIG_NEON=y136136-CONFIG_KERNEL_MODE_NEON=y137153CONFIG_ARM_ZYNQ_CPUIDLE=y138154CONFIG_ARM_EXYNOS_CPUIDLE=y155155+CONFIG_KERNEL_MODE_NEON=y139156CONFIG_NET=y140157CONFIG_PACKET=y141158CONFIG_UNIX=y···153170CONFIG_IPV6_TUNNEL=m154171CONFIG_IPV6_MULTIPLE_TABLES=y155172CONFIG_NET_DSA=m156156-CONFIG_NET_SWITCHDEV=y157173CONFIG_CAN=y158158-CONFIG_CAN_RAW=y159159-CONFIG_CAN_BCM=y160160-CONFIG_CAN_DEV=y161174CONFIG_CAN_AT91=m162175CONFIG_CAN_FLEXCAN=m163163-CONFIG_CAN_RCAR=m164164-CONFIG_CAN_XILINXCAN=y165165-CONFIG_CAN_MCP251X=y166166-CONFIG_NET_DSA_BCM_SF2=m167167-CONFIG_B53=m168168-CONFIG_B53_SPI_DRIVER=m169169-CONFIG_B53_MDIO_DRIVER=m170170-CONFIG_B53_MMAP_DRIVER=m171171-CONFIG_B53_SRAB_DRIVER=m172176CONFIG_CAN_SUN4I=y177177+CONFIG_CAN_XILINXCAN=y178178+CONFIG_CAN_RCAR=m179179+CONFIG_CAN_MCP251X=y173180CONFIG_BT=m174181CONFIG_BT_HCIUART=m175182CONFIG_BT_HCIUART_BCM=y···172199CONFIG_RFKILL_GPIO=y173200CONFIG_DEVTMPFS=y174201CONFIG_DEVTMPFS_MOUNT=y175175-CONFIG_DMA_CMA=y176202CONFIG_CMA_SIZE_MBYTES=64177203CONFIG_OMAP_OCP2SCP=y178204CONFIG_SIMPLE_PM_BUS=y179179-CONFIG_SUNXI_RSB=y180205CONFIG_MTD=y181206CONFIG_MTD_CMDLINE_PARTS=y182207CONFIG_MTD_BLOCK=y···207236CONFIG_EEPROM_AT24=y208237CONFIG_BLK_DEV_SD=y209238CONFIG_BLK_DEV_SR=y210210-CONFIG_SCSI_MULTI_LUN=y211239CONFIG_ATA=y212240CONFIG_SATA_AHCI=y213241CONFIG_SATA_AHCI_PLATFORM=y···221251CONFIG_SATA_RCAR=y222252CONFIG_NETDEVICES=y223253CONFIG_VIRTIO_NET=y224224-CONFIG_HIX5HD2_GMAC=y254254+CONFIG_B53_SPI_DRIVER=m255255+CONFIG_B53_MDIO_DRIVER=m256256+CONFIG_B53_MMAP_DRIVER=m257257+CONFIG_B53_SRAB_DRIVER=m258258+CONFIG_NET_DSA_BCM_SF2=m225259CONFIG_SUN4I_EMAC=y226226-CONFIG_MACB=y227260CONFIG_BCMGENET=m228261CONFIG_BGMAC_BCMA=y229262CONFIG_SYSTEMPORT=m263263+CONFIG_MACB=y230264CONFIG_NET_CALXEDA_XGMAC=y231265CONFIG_GIANFAR=y266266+CONFIG_HIX5HD2_GMAC=y267267+CONFIG_E1000E=y232268CONFIG_IGB=y233269CONFIG_MV643XX_ETH=y234270CONFIG_MVNETA=y···244268CONFIG_SH_ETH=y245269CONFIG_SMSC911X=y246270CONFIG_STMMAC_ETH=y247247-CONFIG_STMMAC_PLATFORM=y248271CONFIG_DWMAC_DWC_QOS_ETH=y249272CONFIG_TI_CPSW=y250273CONFIG_XILINX_EMACLITE=y251274CONFIG_AT803X_PHY=y252252-CONFIG_MARVELL_PHY=y253253-CONFIG_SMSC_PHY=y254275CONFIG_BROADCOM_PHY=y255276CONFIG_ICPLUS_PHY=y256256-CONFIG_REALTEK_PHY=y277277+CONFIG_MARVELL_PHY=y257278CONFIG_MICREL_PHY=y258258-CONFIG_FIXED_PHY=y279279+CONFIG_REALTEK_PHY=y259280CONFIG_ROCKCHIP_PHY=y281281+CONFIG_SMSC_PHY=y260282CONFIG_USB_PEGASUS=y261283CONFIG_USB_RTL8152=m262284CONFIG_USB_LAN78XX=m···262288CONFIG_USB_NET_SMSC75XX=y263289CONFIG_USB_NET_SMSC95XX=y264290CONFIG_BRCMFMAC=m265265-CONFIG_RT2X00=m266266-CONFIG_RT2800USB=m267291CONFIG_MWIFIEX=m268292CONFIG_MWIFIEX_SDIO=m293293+CONFIG_RT2X00=m294294+CONFIG_RT2800USB=m269295CONFIG_INPUT_JOYDEV=y270296CONFIG_INPUT_EVDEV=y271297CONFIG_KEYBOARD_QT1070=m272298CONFIG_KEYBOARD_GPIO=y273299CONFIG_KEYBOARD_TEGRA=y274274-CONFIG_KEYBOARD_SPEAR=y275275-CONFIG_KEYBOARD_ST_KEYSCAN=y276276-CONFIG_KEYBOARD_CROS_EC=m277300CONFIG_KEYBOARD_SAMSUNG=m301301+CONFIG_KEYBOARD_ST_KEYSCAN=y302302+CONFIG_KEYBOARD_SPEAR=y303303+CONFIG_KEYBOARD_CROS_EC=m278304CONFIG_MOUSE_PS2_ELANTECH=y279305CONFIG_MOUSE_CYAPA=m280306CONFIG_MOUSE_ELAN_I2C=y281307CONFIG_INPUT_TOUCHSCREEN=y282308CONFIG_TOUCHSCREEN_ATMEL_MXT=m283309CONFIG_TOUCHSCREEN_MMS114=m310310+CONFIG_TOUCHSCREEN_WM97XX=m284311CONFIG_TOUCHSCREEN_ST1232=m285312CONFIG_TOUCHSCREEN_STMPE=y286313CONFIG_TOUCHSCREEN_SUN4I=y287287-CONFIG_TOUCHSCREEN_WM97XX=m288314CONFIG_INPUT_MISC=y289315CONFIG_INPUT_MAX77693_HAPTIC=m290316CONFIG_INPUT_MAX8997_HAPTIC=m···301327CONFIG_SERIAL_8250_EM=y302328CONFIG_SERIAL_8250_MT6577=y303329CONFIG_SERIAL_8250_UNIPHIER=y330330+CONFIG_SERIAL_OF_PLATFORM=y304331CONFIG_SERIAL_AMBA_PL011=y305332CONFIG_SERIAL_AMBA_PL011_CONSOLE=y306333CONFIG_SERIAL_ATMEL=y307334CONFIG_SERIAL_ATMEL_CONSOLE=y308335CONFIG_SERIAL_ATMEL_TTYAT=y309309-CONFIG_SERIAL_BCM63XX=y310310-CONFIG_SERIAL_BCM63XX_CONSOLE=y311336CONFIG_SERIAL_MESON=y312337CONFIG_SERIAL_MESON_CONSOLE=y313338CONFIG_SERIAL_SAMSUNG=y···318345CONFIG_SERIAL_IMX_CONSOLE=y319346CONFIG_SERIAL_SH_SCI=y320347CONFIG_SERIAL_SH_SCI_NR_UARTS=20321321-CONFIG_SERIAL_SH_SCI_CONSOLE=y322322-CONFIG_SERIAL_SH_SCI_DMA=y323348CONFIG_SERIAL_MSM=y324349CONFIG_SERIAL_MSM_CONSOLE=y325350CONFIG_SERIAL_VT8500=y326351CONFIG_SERIAL_VT8500_CONSOLE=y327327-CONFIG_SERIAL_OF_PLATFORM=y328352CONFIG_SERIAL_OMAP=y329353CONFIG_SERIAL_OMAP_CONSOLE=y354354+CONFIG_SERIAL_BCM63XX=y355355+CONFIG_SERIAL_BCM63XX_CONSOLE=y330356CONFIG_SERIAL_XILINX_PS_UART=y331357CONFIG_SERIAL_XILINX_PS_UART_CONSOLE=y332358CONFIG_SERIAL_FSL_LPUART=y···337365CONFIG_SERIAL_STM32=y338366CONFIG_SERIAL_STM32_CONSOLE=y339367CONFIG_SERIAL_DEV_BUS=y340340-CONFIG_HVC_DRIVER=y341368CONFIG_VIRTIO_CONSOLE=y369369+CONFIG_HW_RANDOM=y370370+CONFIG_HW_RANDOM_ST=y342371CONFIG_I2C_CHARDEV=y343343-CONFIG_I2C_DAVINCI=y344344-CONFIG_I2C_MESON=y345345-CONFIG_I2C_MUX=y346372CONFIG_I2C_ARB_GPIO_CHALLENGE=m347373CONFIG_I2C_MUX_PCA954x=y348374CONFIG_I2C_MUX_PINCTRL=y···348378CONFIG_I2C_AT91=m349379CONFIG_I2C_BCM2835=y350380CONFIG_I2C_CADENCE=y381381+CONFIG_I2C_DAVINCI=y351382CONFIG_I2C_DESIGNWARE_PLATFORM=y352383CONFIG_I2C_DIGICOLOR=m353384CONFIG_I2C_EMEV2=m354385CONFIG_I2C_GPIO=m355355-CONFIG_I2C_EXYNOS5=y356386CONFIG_I2C_IMX=y387387+CONFIG_I2C_MESON=y357388CONFIG_I2C_MV64XXX=y358389CONFIG_I2C_RIIC=y359390CONFIG_I2C_RK3X=y···398427CONFIG_SPMI=y399428CONFIG_PINCTRL_AS3722=y400429CONFIG_PINCTRL_PALMAS=y401401-CONFIG_PINCTRL_BCM2835=y402430CONFIG_PINCTRL_APQ8064=y403431CONFIG_PINCTRL_APQ8084=y404432CONFIG_PINCTRL_IPQ8064=y···407437CONFIG_PINCTRL_MSM8916=y408438CONFIG_PINCTRL_QCOM_SPMI_PMIC=y409439CONFIG_PINCTRL_QCOM_SSBI_PMIC=y410410-CONFIG_GPIO_GENERIC_PLATFORM=y411440CONFIG_GPIO_DAVINCI=y412441CONFIG_GPIO_DWAPB=y413442CONFIG_GPIO_EM=y414443CONFIG_GPIO_RCAR=y444444+CONFIG_GPIO_SYSCON=y415445CONFIG_GPIO_UNIPHIER=y416446CONFIG_GPIO_XILINX=y417447CONFIG_GPIO_ZYNQ=y418448CONFIG_GPIO_PCA953X=y419449CONFIG_GPIO_PCA953X_IRQ=y420450CONFIG_GPIO_PCF857X=y421421-CONFIG_GPIO_TWL4030=y422451CONFIG_GPIO_PALMAS=y423423-CONFIG_GPIO_SYSCON=y424452CONFIG_GPIO_TPS6586X=y425453CONFIG_GPIO_TPS65910=y454454+CONFIG_GPIO_TWL4030=y455455+CONFIG_POWER_AVS=y456456+CONFIG_ROCKCHIP_IODOMAIN=y457457+CONFIG_POWER_RESET_AS3722=y458458+CONFIG_POWER_RESET_GPIO=y459459+CONFIG_POWER_RESET_GPIO_RESTART=y460460+CONFIG_POWER_RESET_ST=y461461+CONFIG_POWER_RESET_KEYSTONE=y462462+CONFIG_POWER_RESET_RMOBILE=y426463CONFIG_BATTERY_ACT8945A=y427464CONFIG_BATTERY_CPCAP=m428465CONFIG_BATTERY_SBS=y466466+CONFIG_AXP20X_POWER=m429467CONFIG_BATTERY_MAX17040=m430468CONFIG_BATTERY_MAX17042=m431469CONFIG_CHARGER_CPCAP=m···442464CONFIG_CHARGER_MAX8997=m443465CONFIG_CHARGER_MAX8998=m444466CONFIG_CHARGER_TPS65090=y445445-CONFIG_AXP20X_POWER=m446446-CONFIG_POWER_RESET_AS3722=y447447-CONFIG_POWER_RESET_GPIO=y448448-CONFIG_POWER_RESET_GPIO_RESTART=y449449-CONFIG_POWER_RESET_KEYSTONE=y450450-CONFIG_POWER_RESET_RMOBILE=y451451-CONFIG_POWER_RESET_ST=y452452-CONFIG_POWER_AVS=y453453-CONFIG_ROCKCHIP_IODOMAIN=y454467CONFIG_SENSORS_IIO_HWMON=y455468CONFIG_SENSORS_LM90=y456469CONFIG_SENSORS_LM95245=y···449480CONFIG_SENSORS_PWM_FAN=m450481CONFIG_SENSORS_INA2XX=m451482CONFIG_CPU_THERMAL=y452452-CONFIG_BCM2835_THERMAL=m453453-CONFIG_BRCMSTB_THERMAL=m454483CONFIG_IMX_THERMAL=y455484CONFIG_ROCKCHIP_THERMAL=y456485CONFIG_RCAR_THERMAL=y457486CONFIG_ARMADA_THERMAL=y458458-CONFIG_DAVINCI_WATCHDOG=m459459-CONFIG_EXYNOS_THERMAL=m487487+CONFIG_BCM2835_THERMAL=m488488+CONFIG_BRCMSTB_THERMAL=m460489CONFIG_ST_THERMAL_MEMMAP=y461490CONFIG_WATCHDOG=y462491CONFIG_DA9063_WATCHDOG=m···462495CONFIG_ARM_SP805_WATCHDOG=y463496CONFIG_AT91SAM9X_WATCHDOG=y464497CONFIG_SAMA5D4_WATCHDOG=y498498+CONFIG_DW_WATCHDOG=y499499+CONFIG_DAVINCI_WATCHDOG=m465500CONFIG_ORION_WATCHDOG=y466501CONFIG_RN5T618_WATCHDOG=y467467-CONFIG_ST_LPC_WATCHDOG=y468502CONFIG_SUNXI_WATCHDOG=y469503CONFIG_IMX2_WDT=y504504+CONFIG_ST_LPC_WATCHDOG=y470505CONFIG_TEGRA_WATCHDOG=m471506CONFIG_MESON_WATCHDOG=y472472-CONFIG_DW_WATCHDOG=y473507CONFIG_DIGICOLOR_WATCHDOG=y474508CONFIG_RENESAS_WDT=m475475-CONFIG_BCM2835_WDT=y476509CONFIG_BCM47XX_WDT=y477477-CONFIG_BCM7038_WDT=m510510+CONFIG_BCM2835_WDT=y478511CONFIG_BCM_KONA_WDT=y512512+CONFIG_BCM7038_WDT=m513513+CONFIG_BCMA_HOST_SOC=y514514+CONFIG_BCMA_DRIVER_GMAC_CMN=y515515+CONFIG_BCMA_DRIVER_GPIO=y479516CONFIG_MFD_ACT8945A=y480517CONFIG_MFD_AS3711=y481518CONFIG_MFD_AS3722=y···487516CONFIG_MFD_ATMEL_HLCDC=m488517CONFIG_MFD_BCM590XX=y489518CONFIG_MFD_AC100=y490490-CONFIG_MFD_AXP20X=y491519CONFIG_MFD_AXP20X_I2C=y492520CONFIG_MFD_AXP20X_RSB=y493521CONFIG_MFD_CROS_EC=m···499529CONFIG_MFD_MAX8907=y500530CONFIG_MFD_MAX8997=y501531CONFIG_MFD_MAX8998=y502502-CONFIG_MFD_RK808=y503532CONFIG_MFD_CPCAP=y504533CONFIG_MFD_PM8XXX=y505534CONFIG_MFD_QCOM_RPM=y506535CONFIG_MFD_SPMI_PMIC=y536536+CONFIG_MFD_RK808=y507537CONFIG_MFD_RN5T618=y508538CONFIG_MFD_SEC_CORE=y509539CONFIG_MFD_STMPE=y···513543CONFIG_MFD_TPS65218=y514544CONFIG_MFD_TPS6586X=y515545CONFIG_MFD_TPS65910=y516516-CONFIG_REGULATOR_ACT8945A=y517517-CONFIG_REGULATOR_AB8500=y518546CONFIG_REGULATOR_ACT8865=y547547+CONFIG_REGULATOR_ACT8945A=y519548CONFIG_REGULATOR_ANATOP=y549549+CONFIG_REGULATOR_AB8500=y520550CONFIG_REGULATOR_AS3711=y521551CONFIG_REGULATOR_AS3722=y522552CONFIG_REGULATOR_AXP20X=y···524554CONFIG_REGULATOR_CPCAP=y525555CONFIG_REGULATOR_DA9210=y526556CONFIG_REGULATOR_FAN53555=y527527-CONFIG_REGULATOR_RK808=y528557CONFIG_REGULATOR_GPIO=y529529-CONFIG_MFD_SYSCON=y530530-CONFIG_POWER_RESET_SYSCON=y531558CONFIG_REGULATOR_LP872X=y532559CONFIG_REGULATOR_MAX14577=m533560CONFIG_REGULATOR_MAX8907=y···538571CONFIG_REGULATOR_PBIAS=y539572CONFIG_REGULATOR_PWM=y540573CONFIG_REGULATOR_QCOM_RPM=y541541-CONFIG_REGULATOR_QCOM_SMD_RPM=y574574+CONFIG_REGULATOR_QCOM_SMD_RPM=m575575+CONFIG_REGULATOR_RK808=y542576CONFIG_REGULATOR_RN5T618=y543577CONFIG_REGULATOR_S2MPS11=y544578CONFIG_REGULATOR_S5M8767=y···560592CONFIG_MEDIA_CONTROLLER=y561593CONFIG_VIDEO_V4L2_SUBDEV_API=y562594CONFIG_MEDIA_USB_SUPPORT=y563563-CONFIG_USB_VIDEO_CLASS=y564564-CONFIG_USB_GSPCA=y595595+CONFIG_USB_VIDEO_CLASS=m565596CONFIG_V4L_PLATFORM_DRIVERS=y566597CONFIG_SOC_CAMERA=m567598CONFIG_SOC_CAMERA_PLATFORM=m568568-CONFIG_VIDEO_RCAR_VIN=m569569-CONFIG_VIDEO_ATMEL_ISI=m570599CONFIG_VIDEO_SAMSUNG_EXYNOS4_IS=m571600CONFIG_VIDEO_S5P_FIMC=m572601CONFIG_VIDEO_S5P_MIPI_CSIS=m573602CONFIG_VIDEO_EXYNOS_FIMC_LITE=m574603CONFIG_VIDEO_EXYNOS4_FIMC_IS=m604604+CONFIG_VIDEO_RCAR_VIN=m605605+CONFIG_VIDEO_ATMEL_ISI=m575606CONFIG_V4L_MEM2MEM_DRIVERS=y576607CONFIG_VIDEO_SAMSUNG_S5P_JPEG=m577608CONFIG_VIDEO_SAMSUNG_S5P_MFC=m···581614CONFIG_VIDEO_RENESAS_JPU=m582615CONFIG_VIDEO_RENESAS_VSP1=m583616CONFIG_V4L_TEST_DRIVERS=y617617+CONFIG_VIDEO_VIVID=m584618CONFIG_CEC_PLATFORM_DRIVERS=y585619CONFIG_VIDEO_SAMSUNG_S5P_CEC=m586620# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set587621CONFIG_VIDEO_ADV7180=m588622CONFIG_VIDEO_ML86V7667=m589623CONFIG_DRM=y590590-CONFIG_DRM_I2C_ADV7511=m591591-CONFIG_DRM_I2C_ADV7511_AUDIO=y592624# CONFIG_DRM_I2C_CH7006 is not set593625# CONFIG_DRM_I2C_SIL164 is not set594594-CONFIG_DRM_DUMB_VGA_DAC=m595595-CONFIG_DRM_NXP_PTN3460=m596596-CONFIG_DRM_PARADE_PS8622=m597626CONFIG_DRM_NOUVEAU=m598627CONFIG_DRM_EXYNOS=m599628CONFIG_DRM_EXYNOS_FIMD=y···608645CONFIG_DRM_SUN4I=m609646CONFIG_DRM_FSL_DCU=m610647CONFIG_DRM_TEGRA=y648648+CONFIG_DRM_PANEL_SIMPLE=y611649CONFIG_DRM_PANEL_SAMSUNG_LD9040=m612650CONFIG_DRM_PANEL_SAMSUNG_S6E63J0X03=m613651CONFIG_DRM_PANEL_SAMSUNG_S6E8AA0=m614614-CONFIG_DRM_PANEL_SIMPLE=y652652+CONFIG_DRM_DUMB_VGA_DAC=m653653+CONFIG_DRM_NXP_PTN3460=m654654+CONFIG_DRM_PARADE_PS8622=m615655CONFIG_DRM_SII9234=m656656+CONFIG_DRM_I2C_ADV7511=m657657+CONFIG_DRM_I2C_ADV7511_AUDIO=y616658CONFIG_DRM_STI=m617617-CONFIG_DRM_VC4=y659659+CONFIG_DRM_VC4=m618660CONFIG_DRM_ETNAVIV=m619661CONFIG_DRM_MXSFB=m620662CONFIG_FB_ARMCLCD=y···627659CONFIG_FB_WM8505=y628660CONFIG_FB_SH_MOBILE_LCDC=y629661CONFIG_FB_SIMPLE=y630630-CONFIG_BACKLIGHT_LCD_SUPPORT=y631631-CONFIG_BACKLIGHT_CLASS_DEVICE=y632662CONFIG_LCD_PLATFORM=m633663CONFIG_BACKLIGHT_PWM=y634664CONFIG_BACKLIGHT_AS3711=y···634668CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y635669CONFIG_SOUND=m636670CONFIG_SND=m637637-CONFIG_SND_DYNAMIC_MINORS=y638671CONFIG_SND_HDA_TEGRA=m639672CONFIG_SND_HDA_INPUT_BEEP=y640673CONFIG_SND_HDA_PATCH_LOADER=y···657692CONFIG_SND_SOC_ODROID=m658693CONFIG_SND_SOC_SH4_FSI=m659694CONFIG_SND_SOC_RCAR=m660660-CONFIG_SND_SIMPLE_SCU_CARD=m695695+CONFIG_SND_SOC_STI=m661696CONFIG_SND_SUN4I_CODEC=m662697CONFIG_SND_SOC_TEGRA=m663698CONFIG_SND_SOC_TEGRA20_I2S=m···668703CONFIG_SND_SOC_TEGRA_WM9712=m669704CONFIG_SND_SOC_TEGRA_TRIMSLICE=m670705CONFIG_SND_SOC_TEGRA_ALC5632=m671671-CONFIG_SND_SOC_CPCAP=m672706CONFIG_SND_SOC_TEGRA_MAX98090=m673707CONFIG_SND_SOC_AK4642=m708708+CONFIG_SND_SOC_CPCAP=m674709CONFIG_SND_SOC_SGTL5000=m675710CONFIG_SND_SOC_SPDIF=m676676-CONFIG_SND_SOC_WM8978=m677677-CONFIG_SND_SOC_STI=m678711CONFIG_SND_SOC_STI_SAS=m679679-CONFIG_SND_SIMPLE_CARD=m712712+CONFIG_SND_SOC_WM8978=m713713+CONFIG_SND_SIMPLE_SCU_CARD=m680714CONFIG_USB=y681715CONFIG_USB_OTG=y682716CONFIG_USB_XHCI_HCD=y683717CONFIG_USB_XHCI_MVEBU=y684684-CONFIG_USB_XHCI_RCAR=m685718CONFIG_USB_XHCI_TEGRA=m686719CONFIG_USB_EHCI_HCD=y687687-CONFIG_USB_EHCI_MSM=m688688-CONFIG_USB_EHCI_EXYNOS=y689689-CONFIG_USB_EHCI_TEGRA=y690720CONFIG_USB_EHCI_HCD_STI=y691691-CONFIG_USB_EHCI_HCD_PLATFORM=y692692-CONFIG_USB_ISP1760=y721721+CONFIG_USB_EHCI_TEGRA=y722722+CONFIG_USB_EHCI_EXYNOS=y693723CONFIG_USB_OHCI_HCD=y694724CONFIG_USB_OHCI_HCD_STI=y695695-CONFIG_USB_OHCI_HCD_PLATFORM=y696725CONFIG_USB_OHCI_EXYNOS=m697726CONFIG_USB_R8A66597_HCD=m698727CONFIG_USB_RENESAS_USBHS=m···705746CONFIG_USB_TUSB_OMAP_DMA=y706747CONFIG_USB_DWC3=y707748CONFIG_USB_DWC2=y708708-CONFIG_USB_HSIC_USB3503=y709749CONFIG_USB_CHIPIDEA=y710750CONFIG_USB_CHIPIDEA_UDC=y711751CONFIG_USB_CHIPIDEA_HOST=y752752+CONFIG_USB_ISP1760=y753753+CONFIG_USB_HSIC_USB3503=y712754CONFIG_AB8500_USB=y713713-CONFIG_KEYSTONE_USB_PHY=y755755+CONFIG_KEYSTONE_USB_PHY=m714756CONFIG_NOP_USB_XCEIV=m715757CONFIG_AM335X_PHY_USB=m716758CONFIG_TWL6030_USB=m717759CONFIG_USB_GPIO_VBUS=y718760CONFIG_USB_ISP1301=y719719-CONFIG_USB_MSM_OTG=m720761CONFIG_USB_MXS_PHY=y721762CONFIG_USB_GADGET=y722763CONFIG_USB_FSL_USB2=y···752793CONFIG_MMC_SDHCI_ESDHC_IMX=y753794CONFIG_MMC_SDHCI_DOVE=y754795CONFIG_MMC_SDHCI_TEGRA=y796796+CONFIG_MMC_SDHCI_S3C=y755797CONFIG_MMC_SDHCI_PXAV3=y756798CONFIG_MMC_SDHCI_SPEAR=y757757-CONFIG_MMC_SDHCI_S3C=y758799CONFIG_MMC_SDHCI_S3C_DMA=y759800CONFIG_MMC_SDHCI_BCM_KONA=y801801+CONFIG_MMC_MESON_MX_SDIO=y760802CONFIG_MMC_SDHCI_ST=y761803CONFIG_MMC_OMAP=y762804CONFIG_MMC_OMAP_HS=y763805CONFIG_MMC_ATMELMCI=y764806CONFIG_MMC_SDHCI_MSM=y765765-CONFIG_MMC_MESON_MX_SDIO=y766807CONFIG_MMC_MVSDIO=y767808CONFIG_MMC_SDHI=y768809CONFIG_MMC_DW=y769769-CONFIG_MMC_DW_PLTFM=y770810CONFIG_MMC_DW_EXYNOS=y771811CONFIG_MMC_DW_ROCKCHIP=y772812CONFIG_MMC_SH_MMCIF=y···805847CONFIG_RTC_DRV_RK808=m806848CONFIG_RTC_DRV_RS5C372=m807849CONFIG_RTC_DRV_BQ32K=m808808-CONFIG_RTC_DRV_PALMAS=y809809-CONFIG_RTC_DRV_ST_LPC=y810850CONFIG_RTC_DRV_TWL4030=y851851+CONFIG_RTC_DRV_PALMAS=y811852CONFIG_RTC_DRV_TPS6586X=y812853CONFIG_RTC_DRV_TPS65910=y813854CONFIG_RTC_DRV_S35390A=m814855CONFIG_RTC_DRV_RX8581=m815856CONFIG_RTC_DRV_EM3027=y857857+CONFIG_RTC_DRV_S5M=m816858CONFIG_RTC_DRV_DA9063=m817859CONFIG_RTC_DRV_EFI=m818860CONFIG_RTC_DRV_DIGICOLOR=m819819-CONFIG_RTC_DRV_S5M=m820861CONFIG_RTC_DRV_S3C=m821862CONFIG_RTC_DRV_PL031=y822863CONFIG_RTC_DRV_AT91RM9200=m823864CONFIG_RTC_DRV_AT91SAM9=m824865CONFIG_RTC_DRV_VT8500=y825825-CONFIG_RTC_DRV_SUN6I=y826866CONFIG_RTC_DRV_SUNXI=y827867CONFIG_RTC_DRV_MV=y828868CONFIG_RTC_DRV_TEGRA=y869869+CONFIG_RTC_DRV_ST_LPC=y829870CONFIG_RTC_DRV_CPCAP=m830871CONFIG_DMADEVICES=y831831-CONFIG_DW_DMAC=y832872CONFIG_AT_HDMAC=y833873CONFIG_AT_XDMAC=y874874+CONFIG_DMA_BCM2835=y875875+CONFIG_DMA_SUN6I=y834876CONFIG_FSL_EDMA=y877877+CONFIG_IMX_DMA=y878878+CONFIG_IMX_SDMA=y835879CONFIG_MV_XOR=y880880+CONFIG_MXS_DMA=y881881+CONFIG_PL330_DMA=y882882+CONFIG_SIRF_DMA=y883883+CONFIG_STE_DMA40=y884884+CONFIG_ST_FDMA=m836885CONFIG_TEGRA20_APB_DMA=y886886+CONFIG_XILINX_DMA=y887887+CONFIG_QCOM_BAM_DMA=y888888+CONFIG_DW_DMAC=y837889CONFIG_SH_DMAE=y838890CONFIG_RCAR_DMAC=y839891CONFIG_RENESAS_USB_DMAC=m840840-CONFIG_STE_DMA40=y841841-CONFIG_SIRF_DMA=y842842-CONFIG_TI_EDMA=y843843-CONFIG_PL330_DMA=y844844-CONFIG_IMX_SDMA=y845845-CONFIG_IMX_DMA=y846846-CONFIG_MXS_DMA=y847847-CONFIG_DMA_BCM2835=y848848-CONFIG_DMA_OMAP=y849849-CONFIG_QCOM_BAM_DMA=y850850-CONFIG_XILINX_DMA=y851851-CONFIG_DMA_SUN6I=y852852-CONFIG_ST_FDMA=m892892+CONFIG_VIRTIO_PCI=y893893+CONFIG_VIRTIO_MMIO=y853894CONFIG_STAGING=y854854-CONFIG_SENSORS_ISL29018=y855855-CONFIG_SENSORS_ISL29028=y856895CONFIG_MFD_NVEC=y857896CONFIG_KEYBOARD_NVEC=y858897CONFIG_SERIO_NVEC_PS2=y859898CONFIG_NVEC_POWER=y860899CONFIG_NVEC_PAZ00=y861861-CONFIG_BCMA=y862862-CONFIG_BCMA_HOST_SOC=y863863-CONFIG_BCMA_DRIVER_GMAC_CMN=y864864-CONFIG_BCMA_DRIVER_GPIO=y865865-CONFIG_QCOM_GSBI=y866866-CONFIG_QCOM_PM=y867867-CONFIG_QCOM_SMEM=y868868-CONFIG_QCOM_SMD_RPM=y869869-CONFIG_QCOM_SMP2P=y870870-CONFIG_QCOM_SMSM=y871871-CONFIG_QCOM_WCNSS_CTRL=m872872-CONFIG_ROCKCHIP_PM_DOMAINS=y873873-CONFIG_COMMON_CLK_QCOM=y874874-CONFIG_QCOM_CLK_RPM=y875875-CONFIG_CHROME_PLATFORMS=y876900CONFIG_STAGING_BOARD=y877877-CONFIG_CROS_EC_CHARDEV=m878901CONFIG_COMMON_CLK_MAX77686=y879902CONFIG_COMMON_CLK_RK808=m880903CONFIG_COMMON_CLK_S2MPS11=m904904+CONFIG_COMMON_CLK_QCOM=y905905+CONFIG_QCOM_CLK_RPM=y881906CONFIG_APQ_MMCC_8084=y882907CONFIG_MSM_GCC_8660=y883908CONFIG_MSM_MMCC_8960=y884909CONFIG_MSM_MMCC_8974=y885885-CONFIG_HWSPINLOCK_QCOM=y910910+CONFIG_BCM2835_MBOX=y886911CONFIG_ROCKCHIP_IOMMU=y887912CONFIG_TEGRA_IOMMU_GART=y888913CONFIG_TEGRA_IOMMU_SMMU=y889914CONFIG_REMOTEPROC=m890915CONFIG_ST_REMOTEPROC=m891916CONFIG_RPMSG_VIRTIO=m917917+CONFIG_RASPBERRYPI_POWER=y918918+CONFIG_QCOM_GSBI=y919919+CONFIG_QCOM_PM=y920920+CONFIG_QCOM_SMD_RPM=m921921+CONFIG_QCOM_WCNSS_CTRL=m922922+CONFIG_ROCKCHIP_PM_DOMAINS=y923923+CONFIG_ARCH_TEGRA_2x_SOC=y924924+CONFIG_ARCH_TEGRA_3x_SOC=y925925+CONFIG_ARCH_TEGRA_114_SOC=y926926+CONFIG_ARCH_TEGRA_124_SOC=y892927CONFIG_PM_DEVFREQ=y893928CONFIG_ARM_TEGRA_DEVFREQ=m894894-CONFIG_MEMORY=y895895-CONFIG_EXTCON=y896929CONFIG_TI_AEMIF=y897930CONFIG_IIO=y898931CONFIG_IIO_SW_TRIGGER=y···896947CONFIG_XILINX_XADC=y897948CONFIG_MPU3050_I2C=y898949CONFIG_CM36651=m950950+CONFIG_SENSORS_ISL29018=y951951+CONFIG_SENSORS_ISL29028=y899952CONFIG_AK8975=y900900-CONFIG_RASPBERRYPI_POWER=y901953CONFIG_IIO_HRTIMER_TRIGGER=y902954CONFIG_PWM=y903955CONFIG_PWM_ATMEL=m904956CONFIG_PWM_ATMEL_HLCDC_PWM=m905957CONFIG_PWM_ATMEL_TCB=m958958+CONFIG_PWM_BCM2835=y959959+CONFIG_PWM_BRCMSTB=m906960CONFIG_PWM_FSL_FTM=m907961CONFIG_PWM_MESON=m908962CONFIG_PWM_RCAR=m909963CONFIG_PWM_RENESAS_TPU=y910964CONFIG_PWM_ROCKCHIP=m911965CONFIG_PWM_SAMSUNG=m966966+CONFIG_PWM_STI=y912967CONFIG_PWM_SUN4I=y913968CONFIG_PWM_TEGRA=y914969CONFIG_PWM_VT8500=y970970+CONFIG_KEYSTONE_IRQ=y971971+CONFIG_PHY_SUN4I_USB=y972972+CONFIG_PHY_SUN9I_USB=y915973CONFIG_PHY_HIX5HD2_SATA=y916916-CONFIG_E1000E=y917917-CONFIG_PWM_STI=y918918-CONFIG_PWM_BCM2835=y919919-CONFIG_PWM_BRCMSTB=m974974+CONFIG_PHY_BERLIN_SATA=y975975+CONFIG_PHY_BERLIN_USB=y976976+CONFIG_PHY_CPCAP_USB=m977977+CONFIG_PHY_QCOM_APQ8064_SATA=m978978+CONFIG_PHY_RCAR_GEN2=m979979+CONFIG_PHY_ROCKCHIP_DP=m980980+CONFIG_PHY_ROCKCHIP_USB=y981981+CONFIG_PHY_SAMSUNG_USB2=m982982+CONFIG_PHY_MIPHY28LP=y983983+CONFIG_PHY_STIH407_USB=y984984+CONFIG_PHY_STM32_USBPHYC=y985985+CONFIG_PHY_TEGRA_XUSB=y920986CONFIG_PHY_DM816X_USB=m921987CONFIG_OMAP_USB2=y922988CONFIG_TI_PIPE3=y923989CONFIG_TWL4030_USB=m924924-CONFIG_PHY_BERLIN_USB=y925925-CONFIG_PHY_CPCAP_USB=m926926-CONFIG_PHY_BERLIN_SATA=y927927-CONFIG_PHY_ROCKCHIP_DP=m928928-CONFIG_PHY_ROCKCHIP_USB=y929929-CONFIG_PHY_QCOM_APQ8064_SATA=m930930-CONFIG_PHY_MIPHY28LP=y931931-CONFIG_PHY_RCAR_GEN2=m932932-CONFIG_PHY_STIH407_USB=y933933-CONFIG_PHY_STM32_USBPHYC=y934934-CONFIG_PHY_SUN4I_USB=y935935-CONFIG_PHY_SUN9I_USB=y936936-CONFIG_PHY_SAMSUNG_USB2=m937937-CONFIG_PHY_TEGRA_XUSB=y938938-CONFIG_PHY_BRCM_SATA=y939939-CONFIG_NVMEM=y940990CONFIG_NVMEM_IMX_OCOTP=y941991CONFIG_NVMEM_SUNXI_SID=y942992CONFIG_NVMEM_VF610_OCOTP=y943943-CONFIG_BCM2835_MBOX=y944993CONFIG_RASPBERRYPI_FIRMWARE=y945945-CONFIG_EFI_VARS=m946946-CONFIG_EFI_CAPSULE_LOADER=m947994CONFIG_BCM47XX_NVRAM=y948995CONFIG_BCM47XX_SPROM=y996996+CONFIG_EFI_VARS=m997997+CONFIG_EFI_CAPSULE_LOADER=m949998CONFIG_EXT4_FS=y950999CONFIG_AUTOFS4_FS=y9511000CONFIG_MSDOS_FS=y···9511004CONFIG_NTFS_FS=y9521005CONFIG_TMPFS_POSIX_ACL=y9531006CONFIG_UBIFS_FS=y954954-CONFIG_TMPFS=y9551007CONFIG_SQUASHFS=y9561008CONFIG_SQUASHFS_LZO=y9571009CONFIG_SQUASHFS_XZ=y···9661020CONFIG_NLS_ISO8859_1=y9671021CONFIG_NLS_UTF8=y9681022CONFIG_PRINTK_TIME=y969969-CONFIG_DEBUG_FS=y9701023CONFIG_MAGIC_SYSRQ=y971971-CONFIG_LOCKUP_DETECTOR=y972972-CONFIG_CPUFREQ_DT=y973973-CONFIG_KEYSTONE_IRQ=y974974-CONFIG_HW_RANDOM=y975975-CONFIG_HW_RANDOM_ST=y9761024CONFIG_CRYPTO_USER=m9771025CONFIG_CRYPTO_USER_API_HASH=m9781026CONFIG_CRYPTO_USER_API_SKCIPHER=m···9751035CONFIG_CRYPTO_DEV_MARVELL_CESA=m9761036CONFIG_CRYPTO_DEV_EXYNOS_RNG=m9771037CONFIG_CRYPTO_DEV_S5P=m10381038+CONFIG_CRYPTO_DEV_ATMEL_AES=m10391039+CONFIG_CRYPTO_DEV_ATMEL_TDES=m10401040+CONFIG_CRYPTO_DEV_ATMEL_SHA=m9781041CONFIG_CRYPTO_DEV_SUN4I_SS=m9791042CONFIG_CRYPTO_DEV_ROCKCHIP=m9801043CONFIG_ARM_CRYPTO=y981981-CONFIG_CRYPTO_SHA1_ARM=m9821044CONFIG_CRYPTO_SHA1_ARM_NEON=m9831045CONFIG_CRYPTO_SHA1_ARM_CE=m9841046CONFIG_CRYPTO_SHA2_ARM_CE=m985985-CONFIG_CRYPTO_SHA256_ARM=m9861047CONFIG_CRYPTO_SHA512_ARM=m9871048CONFIG_CRYPTO_AES_ARM=m9881049CONFIG_CRYPTO_AES_ARM_BS=m9891050CONFIG_CRYPTO_AES_ARM_CE=m990990-CONFIG_CRYPTO_CHACHA20_NEON=m991991-CONFIG_CRYPTO_CRC32_ARM_CE=m992992-CONFIG_CRYPTO_CRCT10DIF_ARM_CE=m9931051CONFIG_CRYPTO_GHASH_ARM_CE=m994994-CONFIG_CRYPTO_DEV_ATMEL_AES=m995995-CONFIG_CRYPTO_DEV_ATMEL_TDES=m996996-CONFIG_CRYPTO_DEV_ATMEL_SHA=m997997-CONFIG_VIDEO_VIVID=m998998-CONFIG_VIRTIO=y999999-CONFIG_VIRTIO_PCI=y10001000-CONFIG_VIRTIO_PCI_LEGACY=y10011001-CONFIG_VIRTIO_MMIO=y10521052+CONFIG_CRYPTO_CRC32_ARM_CE=m10531053+CONFIG_CRYPTO_CHACHA20_NEON=m
+1
arch/arm/mach-bcm/Kconfig
···2020 select GPIOLIB2121 select ARM_AMBA2222 select PINCTRL2323+ select PCI_DOMAINS if PCI2324 help2425 This enables support for systems based on Broadcom IPROC architected SoCs.2526 The IPROC complex contains one or more ARM CPUs along with common
···189189&usb0 {190190 status = "okay";191191};192192+193193+&usb2_phy0 {194194+ /*195195+ * HDMI_5V is also used as supply for the USB VBUS.196196+ */197197+ phy-supply = <&hdmi_5v>;198198+};
···4747CONFIG_ARCH_QCOM=y4848CONFIG_ARCH_ROCKCHIP=y4949CONFIG_ARCH_SEATTLE=y5050+CONFIG_ARCH_SYNQUACER=y5051CONFIG_ARCH_RENESAS=y5152CONFIG_ARCH_R8A7795=y5253CONFIG_ARCH_R8A7796=y···5958CONFIG_ARCH_STRATIX10=y6059CONFIG_ARCH_TEGRA=y6160CONFIG_ARCH_SPRD=y6262-CONFIG_ARCH_SYNQUACER=y6361CONFIG_ARCH_THUNDER=y6462CONFIG_ARCH_THUNDER2=y6563CONFIG_ARCH_UNIPHIER=y···6767CONFIG_ARCH_ZX=y6868CONFIG_ARCH_ZYNQMP=y6969CONFIG_PCI=y7070-CONFIG_HOTPLUG_PCI_PCIE=y7170CONFIG_PCI_IOV=y7271CONFIG_HOTPLUG_PCI=y7372CONFIG_HOTPLUG_PCI_ACPI=y7474-CONFIG_PCI_LAYERSCAPE=y7575-CONFIG_PCI_HISI=y7676-CONFIG_PCIE_QCOM=y7777-CONFIG_PCIE_KIRIN=y7878-CONFIG_PCIE_ARMADA_8K=y7979-CONFIG_PCIE_HISI_STB=y8073CONFIG_PCI_AARDVARK=y8174CONFIG_PCI_TEGRA=y8275CONFIG_PCIE_RCAR=y8383-CONFIG_PCIE_ROCKCHIP=y8484-CONFIG_PCIE_ROCKCHIP_HOST=m8576CONFIG_PCI_HOST_GENERIC=y8677CONFIG_PCI_XGENE=y8778CONFIG_PCI_HOST_THUNDER_PEM=y8879CONFIG_PCI_HOST_THUNDER_ECAM=y8080+CONFIG_PCIE_ROCKCHIP_HOST=m8181+CONFIG_PCI_LAYERSCAPE=y8282+CONFIG_PCI_HISI=y8383+CONFIG_PCIE_QCOM=y8484+CONFIG_PCIE_ARMADA_8K=y8585+CONFIG_PCIE_KIRIN=y8686+CONFIG_PCIE_HISI_STB=y8987CONFIG_ARM64_VA_BITS_48=y9088CONFIG_SCHED_MC=y9189CONFIG_NUMA=y···102104CONFIG_WQ_POWER_EFFICIENT_DEFAULT=y103105CONFIG_ARM_CPUIDLE=y104106CONFIG_CPU_FREQ=y105105-CONFIG_CPU_FREQ_GOV_ATTR_SET=y106106-CONFIG_CPU_FREQ_GOV_COMMON=y107107CONFIG_CPU_FREQ_STAT=y108108CONFIG_CPU_FREQ_GOV_POWERSAVE=m109109CONFIG_CPU_FREQ_GOV_USERSPACE=y···109113CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m110114CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y111115CONFIG_CPUFREQ_DT=y116116+CONFIG_ACPI_CPPC_CPUFREQ=m112117CONFIG_ARM_ARMADA_37XX_CPUFREQ=y113118CONFIG_ARM_BIG_LITTLE_CPUFREQ=y114119CONFIG_ARM_SCPI_CPUFREQ=y115120CONFIG_ARM_TEGRA186_CPUFREQ=y116116-CONFIG_ACPI_CPPC_CPUFREQ=m117121CONFIG_NET=y118122CONFIG_PACKET=y119123CONFIG_UNIX=y···232236CONFIG_SNI_AVE=y233237CONFIG_SNI_NETSEC=y234238CONFIG_STMMAC_ETH=m235235-CONFIG_DWMAC_IPQ806X=m236236-CONFIG_DWMAC_MESON=m237237-CONFIG_DWMAC_ROCKCHIP=m238238-CONFIG_DWMAC_SUNXI=m239239-CONFIG_DWMAC_SUN8I=m240239CONFIG_MDIO_BUS_MUX_MMIOREG=y241240CONFIG_AT803X_PHY=m242241CONFIG_MARVELL_PHY=m···260269CONFIG_WLCORE_SDIO=m261270CONFIG_INPUT_EVDEV=y262271CONFIG_KEYBOARD_ADC=m263263-CONFIG_KEYBOARD_CROS_EC=y264272CONFIG_KEYBOARD_GPIO=y273273+CONFIG_KEYBOARD_CROS_EC=y265274CONFIG_INPUT_TOUCHSCREEN=y266275CONFIG_TOUCHSCREEN_ATMEL_MXT=m267276CONFIG_INPUT_MISC=y···287296CONFIG_SERIAL_SAMSUNG_CONSOLE=y288297CONFIG_SERIAL_TEGRA=y289298CONFIG_SERIAL_SH_SCI=y290290-CONFIG_SERIAL_SH_SCI_NR_UARTS=11291291-CONFIG_SERIAL_SH_SCI_CONSOLE=y292299CONFIG_SERIAL_MSM=y293300CONFIG_SERIAL_MSM_CONSOLE=y294301CONFIG_SERIAL_XILINX_PS_UART=y295302CONFIG_SERIAL_XILINX_PS_UART_CONSOLE=y296303CONFIG_SERIAL_MVEBU_UART=y297304CONFIG_SERIAL_DEV_BUS=y298298-CONFIG_SERIAL_DEV_CTRL_TTYPORT=y299305CONFIG_VIRTIO_CONSOLE=y300300-CONFIG_I2C_HID=m301306CONFIG_I2C_CHARDEV=y302307CONFIG_I2C_MUX=y303308CONFIG_I2C_MUX_PCA954x=y···312325CONFIG_I2C_CROS_EC_TUNNEL=y313326CONFIG_SPI=y314327CONFIG_SPI_ARMADA_3700=y315315-CONFIG_SPI_MESON_SPICC=m316316-CONFIG_SPI_MESON_SPIFC=m317328CONFIG_SPI_BCM2835=m318329CONFIG_SPI_BCM2835AUX=m330330+CONFIG_SPI_MESON_SPICC=m331331+CONFIG_SPI_MESON_SPIFC=m319332CONFIG_SPI_ORION=y320333CONFIG_SPI_PL022=y321321-CONFIG_SPI_QUP=y322334CONFIG_SPI_ROCKCHIP=y335335+CONFIG_SPI_QUP=y323336CONFIG_SPI_S3C64XX=y324337CONFIG_SPI_SPIDEV=m325338CONFIG_SPMI=y326326-CONFIG_PINCTRL_IPQ8074=y327339CONFIG_PINCTRL_SINGLE=y328340CONFIG_PINCTRL_MAX77620=y341341+CONFIG_PINCTRL_IPQ8074=y329342CONFIG_PINCTRL_MSM8916=y330343CONFIG_PINCTRL_MSM8994=y331344CONFIG_PINCTRL_MSM8996=y332332-CONFIG_PINCTRL_MT7622=y333345CONFIG_PINCTRL_QDF2XXX=y334346CONFIG_PINCTRL_QCOM_SPMI_PMIC=y347347+CONFIG_PINCTRL_MT7622=y335348CONFIG_GPIO_DWAPB=y336349CONFIG_GPIO_MB86S7X=y337350CONFIG_GPIO_PL061=y···355368CONFIG_THERMAL_GOV_POWER_ALLOCATOR=y356369CONFIG_CPU_THERMAL=y357370CONFIG_THERMAL_EMULATION=y371371+CONFIG_ROCKCHIP_THERMAL=m372372+CONFIG_RCAR_GEN3_THERMAL=y358373CONFIG_ARMADA_THERMAL=y359374CONFIG_BRCMSTB_THERMAL=m360375CONFIG_EXYNOS_THERMAL=y361361-CONFIG_RCAR_GEN3_THERMAL=y362362-CONFIG_QCOM_TSENS=y363363-CONFIG_ROCKCHIP_THERMAL=m364376CONFIG_TEGRA_BPMP_THERMAL=m377377+CONFIG_QCOM_TSENS=y365378CONFIG_UNIPHIER_THERMAL=y366379CONFIG_WATCHDOG=y367380CONFIG_S3C2410_WATCHDOG=y···382395CONFIG_MFD_SPMI_PMIC=y383396CONFIG_MFD_RK808=y384397CONFIG_MFD_SEC_CORE=y398398+CONFIG_REGULATOR_FIXED_VOLTAGE=y385399CONFIG_REGULATOR_AXP20X=y386400CONFIG_REGULATOR_FAN53555=y387387-CONFIG_REGULATOR_FIXED_VOLTAGE=y388401CONFIG_REGULATOR_GPIO=y389402CONFIG_REGULATOR_HI6421V530=y390403CONFIG_REGULATOR_HI655X=y···394407CONFIG_REGULATOR_QCOM_SPMI=y395408CONFIG_REGULATOR_RK808=y396409CONFIG_REGULATOR_S2MPS11=y410410+CONFIG_RC_CORE=m411411+CONFIG_RC_DECODERS=y412412+CONFIG_RC_DEVICES=y413413+CONFIG_IR_MESON=m397414CONFIG_MEDIA_SUPPORT=m398415CONFIG_MEDIA_CAMERA_SUPPORT=y399416CONFIG_MEDIA_ANALOG_TV_SUPPORT=y400417CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y401418CONFIG_MEDIA_CONTROLLER=y402402-CONFIG_MEDIA_RC_SUPPORT=y403403-CONFIG_RC_CORE=m404404-CONFIG_RC_DEVICES=y405405-CONFIG_RC_DECODERS=y406406-CONFIG_IR_MESON=m407419CONFIG_VIDEO_V4L2_SUBDEV_API=y408420# CONFIG_DVB_NET is not set409421CONFIG_V4L_MEM2MEM_DRIVERS=y···427441CONFIG_ROCKCHIP_DW_MIPI_DSI=y428442CONFIG_ROCKCHIP_INNO_HDMI=y429443CONFIG_DRM_RCAR_DU=m430430-CONFIG_DRM_RCAR_LVDS=y431431-CONFIG_DRM_RCAR_VSP=y444444+CONFIG_DRM_RCAR_LVDS=m432445CONFIG_DRM_TEGRA=m433446CONFIG_DRM_PANEL_SIMPLE=m434447CONFIG_DRM_I2C_ADV7511=m···440455CONFIG_BACKLIGHT_GENERIC=m441456CONFIG_BACKLIGHT_PWM=m442457CONFIG_BACKLIGHT_LP855X=m443443-CONFIG_FRAMEBUFFER_CONSOLE=y444458CONFIG_LOGO=y445459# CONFIG_LOGO_LINUX_MONO is not set446460# CONFIG_LOGO_LINUX_VGA16 is not set···452468CONFIG_SND_SOC_AK4613=m453469CONFIG_SND_SIMPLE_CARD=m454470CONFIG_SND_AUDIO_GRAPH_CARD=m471471+CONFIG_I2C_HID=m455472CONFIG_USB=y456473CONFIG_USB_OTG=y457474CONFIG_USB_XHCI_HCD=y···486501CONFIG_MMC_ARMMMCI=y487502CONFIG_MMC_SDHCI=y488503CONFIG_MMC_SDHCI_ACPI=y489489-CONFIG_MMC_SDHCI_F_SDH30=y490504CONFIG_MMC_SDHCI_PLTFM=y491505CONFIG_MMC_SDHCI_OF_ARASAN=y492506CONFIG_MMC_SDHCI_OF_ESDHC=y493507CONFIG_MMC_SDHCI_CADENCE=y494508CONFIG_MMC_SDHCI_TEGRA=y509509+CONFIG_MMC_SDHCI_F_SDH30=y495510CONFIG_MMC_MESON_GX=y496511CONFIG_MMC_SDHCI_MSM=y497512CONFIG_MMC_SPI=y···509524CONFIG_LEDS_GPIO=y510525CONFIG_LEDS_PWM=y511526CONFIG_LEDS_SYSCON=y527527+CONFIG_LEDS_TRIGGER_DISK=y512528CONFIG_LEDS_TRIGGER_HEARTBEAT=y513529CONFIG_LEDS_TRIGGER_CPU=y514530CONFIG_LEDS_TRIGGER_DEFAULT_ON=y515531CONFIG_LEDS_TRIGGER_PANIC=y516516-CONFIG_LEDS_TRIGGER_DISK=y517532CONFIG_EDAC=y518533CONFIG_EDAC_GHES=y519534CONFIG_RTC_CLASS=y···522537CONFIG_RTC_DRV_S5M=y523538CONFIG_RTC_DRV_DS3232=y524539CONFIG_RTC_DRV_EFI=y540540+CONFIG_RTC_DRV_CROS_EC=y525541CONFIG_RTC_DRV_S3C=y526542CONFIG_RTC_DRV_PL031=y527543CONFIG_RTC_DRV_SUN6I=y528544CONFIG_RTC_DRV_ARMADA38X=y529545CONFIG_RTC_DRV_TEGRA=y530546CONFIG_RTC_DRV_XGENE=y531531-CONFIG_RTC_DRV_CROS_EC=y532547CONFIG_DMADEVICES=y533548CONFIG_DMA_BCM2835=m534549CONFIG_K3_DMA=y···564579CONFIG_ARM_MHU=y565580CONFIG_PLATFORM_MHU=y566581CONFIG_BCM2835_MBOX=y567567-CONFIG_HI6220_MBOX=y568582CONFIG_QCOM_APCS_IPC=y569583CONFIG_ROCKCHIP_IOMMU=y570584CONFIG_TEGRA_IOMMU_SMMU=y···586602CONFIG_EXTCON_USB_GPIO=y587603CONFIG_EXTCON_USBC_CROS_EC=y588604CONFIG_MEMORY=y589589-CONFIG_TEGRA_MC=y590605CONFIG_IIO=y591606CONFIG_EXYNOS_ADC=y592607CONFIG_ROCKCHIP_SARADC=m···601618CONFIG_PWM_ROCKCHIP=y602619CONFIG_PWM_SAMSUNG=y603620CONFIG_PWM_TEGRA=m621621+CONFIG_PHY_XGENE=y622622+CONFIG_PHY_SUN4I_USB=y623623+CONFIG_PHY_HI6220_USB=y604624CONFIG_PHY_HISTB_COMBPHY=y605625CONFIG_PHY_HISI_INNO_USB2=y606606-CONFIG_PHY_RCAR_GEN3_USB2=y607607-CONFIG_PHY_RCAR_GEN3_USB3=m608608-CONFIG_PHY_HI6220_USB=y609609-CONFIG_PHY_QCOM_USB_HS=y610610-CONFIG_PHY_SUN4I_USB=y611626CONFIG_PHY_MVEBU_CP110_COMPHY=y612627CONFIG_PHY_QCOM_QMP=m613613-CONFIG_PHY_ROCKCHIP_INNO_USB2=y628628+CONFIG_PHY_QCOM_USB_HS=y629629+CONFIG_PHY_RCAR_GEN3_USB2=y630630+CONFIG_PHY_RCAR_GEN3_USB3=m614631CONFIG_PHY_ROCKCHIP_EMMC=y632632+CONFIG_PHY_ROCKCHIP_INNO_USB2=y615633CONFIG_PHY_ROCKCHIP_PCIE=m616634CONFIG_PHY_ROCKCHIP_TYPEC=y617617-CONFIG_PHY_XGENE=y618635CONFIG_PHY_TEGRA_XUSB=y619636CONFIG_QCOM_L2_PMU=y620637CONFIG_QCOM_L3_PMU=y621621-CONFIG_MESON_EFUSE=m622638CONFIG_QCOM_QFPROM=y623639CONFIG_ROCKCHIP_EFUSE=y624640CONFIG_UNIPHIER_EFUSE=y641641+CONFIG_MESON_EFUSE=m625642CONFIG_TEE=y626643CONFIG_OPTEE=y627644CONFIG_ARM_SCPI_PROTOCOL=y···630647CONFIG_ACPI=y631648CONFIG_ACPI_APEI=y632649CONFIG_ACPI_APEI_GHES=y633633-CONFIG_ACPI_APEI_PCIEAER=y634650CONFIG_ACPI_APEI_MEMORY_FAILURE=y635651CONFIG_ACPI_APEI_EINJ=y636652CONFIG_EXT2_FS=y···664682CONFIG_DEBUG_FS=y665683CONFIG_MAGIC_SYSRQ=y666684CONFIG_DEBUG_KERNEL=y667667-CONFIG_LOCKUP_DETECTOR=y668685# CONFIG_SCHED_DEBUG is not set669686# CONFIG_DEBUG_PREEMPT is not set670687# CONFIG_FTRACE is not set···672691CONFIG_CRYPTO_ECHAINIV=y673692CONFIG_CRYPTO_ANSI_CPRNG=y674693CONFIG_ARM64_CRYPTO=y675675-CONFIG_CRYPTO_SHA256_ARM64=m676676-CONFIG_CRYPTO_SHA512_ARM64=m677694CONFIG_CRYPTO_SHA1_ARM64_CE=y678695CONFIG_CRYPTO_SHA2_ARM64_CE=y679679-CONFIG_CRYPTO_GHASH_ARM64_CE=y680680-CONFIG_CRYPTO_CRCT10DIF_ARM64_CE=m681681-CONFIG_CRYPTO_CRC32_ARM64_CE=m682682-CONFIG_CRYPTO_AES_ARM64=m683683-CONFIG_CRYPTO_AES_ARM64_CE=m684684-CONFIG_CRYPTO_AES_ARM64_CE_CCM=y685685-CONFIG_CRYPTO_AES_ARM64_CE_BLK=y686686-CONFIG_CRYPTO_AES_ARM64_NEON_BLK=m687687-CONFIG_CRYPTO_CHACHA20_NEON=m688688-CONFIG_CRYPTO_AES_ARM64_BS=m689696CONFIG_CRYPTO_SHA512_ARM64_CE=m690697CONFIG_CRYPTO_SHA3_ARM64=m691698CONFIG_CRYPTO_SM3_ARM64_CE=m699699+CONFIG_CRYPTO_GHASH_ARM64_CE=y700700+CONFIG_CRYPTO_CRCT10DIF_ARM64_CE=m701701+CONFIG_CRYPTO_CRC32_ARM64_CE=m702702+CONFIG_CRYPTO_AES_ARM64_CE_CCM=y703703+CONFIG_CRYPTO_AES_ARM64_CE_BLK=y704704+CONFIG_CRYPTO_CHACHA20_NEON=m705705+CONFIG_CRYPTO_AES_ARM64_BS=m
···224224 * Only if the new pte is valid and kernel, otherwise TLB maintenance225225 * or update_mmu_cache() have the necessary barriers.226226 */227227- if (pte_valid_not_user(pte)) {227227+ if (pte_valid_not_user(pte))228228 dsb(ishst);229229- isb();230230- }231229}232230233231extern void __sync_icache_dcache(pte_t pteval);···432434{433435 WRITE_ONCE(*pmdp, pmd);434436 dsb(ishst);435435- isb();436437}437438438439static inline void pmd_clear(pmd_t *pmdp)···482485{483486 WRITE_ONCE(*pudp, pud);484487 dsb(ishst);485485- isb();486488}487489488490static inline void pud_clear(pud_t *pudp)
+44-7
arch/arm64/kernel/alternative.c
···122122 }123123}124124125125-static void __apply_alternatives(void *alt_region, bool use_linear_alias)125125+/*126126+ * We provide our own, private D-cache cleaning function so that we don't127127+ * accidentally call into the cache.S code, which is patched by us at128128+ * runtime.129129+ */130130+static void clean_dcache_range_nopatch(u64 start, u64 end)131131+{132132+ u64 cur, d_size, ctr_el0;133133+134134+ ctr_el0 = read_sanitised_ftr_reg(SYS_CTR_EL0);135135+ d_size = 4 << cpuid_feature_extract_unsigned_field(ctr_el0,136136+ CTR_DMINLINE_SHIFT);137137+ cur = start & ~(d_size - 1);138138+ do {139139+ /*140140+ * We must clean+invalidate to the PoC in order to avoid141141+ * Cortex-A53 errata 826319, 827319, 824069 and 819472142142+ * (this corresponds to ARM64_WORKAROUND_CLEAN_CACHE)143143+ */144144+ asm volatile("dc civac, %0" : : "r" (cur) : "memory");145145+ } while (cur += d_size, cur < end);146146+}147147+148148+static void __apply_alternatives(void *alt_region, bool is_module)126149{127150 struct alt_instr *alt;128151 struct alt_region *region = alt_region;···168145 pr_info_once("patching kernel code\n");169146170147 origptr = ALT_ORIG_PTR(alt);171171- updptr = use_linear_alias ? lm_alias(origptr) : origptr;148148+ updptr = is_module ? origptr : lm_alias(origptr);172149 nr_inst = alt->orig_len / AARCH64_INSN_SIZE;173150174151 if (alt->cpufeature < ARM64_CB_PATCH)···178155179156 alt_cb(alt, origptr, updptr, nr_inst);180157181181- flush_icache_range((uintptr_t)origptr,182182- (uintptr_t)(origptr + nr_inst));158158+ if (!is_module) {159159+ clean_dcache_range_nopatch((u64)origptr,160160+ (u64)(origptr + nr_inst));161161+ }162162+ }163163+164164+ /*165165+ * The core module code takes care of cache maintenance in166166+ * flush_module_icache().167167+ */168168+ if (!is_module) {169169+ dsb(ish);170170+ __flush_icache_all();171171+ isb();183172 }184173}185174···213178 isb();214179 } else {215180 BUG_ON(alternatives_applied);216216- __apply_alternatives(®ion, true);181181+ __apply_alternatives(®ion, false);217182 /* Barriers provided by the cache flushing */218183 WRITE_ONCE(alternatives_applied, 1);219184 }···227192 stop_machine(__apply_alternatives_multi_stop, NULL, cpu_online_mask);228193}229194230230-void apply_alternatives(void *start, size_t length)195195+#ifdef CONFIG_MODULES196196+void apply_alternatives_module(void *start, size_t length)231197{232198 struct alt_region region = {233199 .begin = start,234200 .end = start + length,235201 };236202237237- __apply_alternatives(®ion, false);203203+ __apply_alternatives(®ion, true);238204}205205+#endif
+2-3
arch/arm64/kernel/module.c
···448448 const char *secstrs = (void *)hdr + sechdrs[hdr->e_shstrndx].sh_offset;449449450450 for (s = sechdrs, se = sechdrs + hdr->e_shnum; s < se; s++) {451451- if (strcmp(".altinstructions", secstrs + s->sh_name) == 0) {452452- apply_alternatives((void *)s->sh_addr, s->sh_size);453453- }451451+ if (strcmp(".altinstructions", secstrs + s->sh_name) == 0)452452+ apply_alternatives_module((void *)s->sh_addr, s->sh_size);454453#ifdef CONFIG_ARM64_MODULE_PLTS455454 if (IS_ENABLED(CONFIG_DYNAMIC_FTRACE) &&456455 !strcmp(".text.ftrace_trampoline", secstrs + s->sh_name))
-7
arch/microblaze/Kconfig.debug
···8899source "lib/Kconfig.debug"10101111-config HEART_BEAT1212- bool "Heart beat function for kernel"1313- default n1414- help1515- This option turns on/off heart beat kernel functionality.1616- First GPIO node is taken.1717-1811endmenu
···11-/*22- * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu>33- * Copyright (C) 2007-2009 PetaLogix44- * Copyright (C) 2006 Atmark Techno, Inc.55- *66- * This file is subject to the terms and conditions of the GNU General Public77- * License. See the file "COPYING" in the main directory of this archive88- * for more details.99- */1010-1111-#include <linux/sched.h>1212-#include <linux/sched/loadavg.h>1313-#include <linux/io.h>1414-1515-#include <asm/setup.h>1616-#include <asm/page.h>1717-#include <asm/prom.h>1818-1919-static unsigned int base_addr;2020-2121-void microblaze_heartbeat(void)2222-{2323- static unsigned int cnt, period, dist;2424-2525- if (base_addr) {2626- if (cnt == 0 || cnt == dist)2727- out_be32(base_addr, 1);2828- else if (cnt == 7 || cnt == dist + 7)2929- out_be32(base_addr, 0);3030-3131- if (++cnt > period) {3232- cnt = 0;3333- /*3434- * The hyperbolic function below modifies the heartbeat3535- * period length in dependency of the current (5min)3636- * load. It goes through the points f(0)=126, f(1)=86,3737- * f(5)=51, f(inf)->30.3838- */3939- period = ((672 << FSHIFT) / (5 * avenrun[0] +4040- (7 << FSHIFT))) + 30;4141- dist = period / 4;4242- }4343- }4444-}4545-4646-void microblaze_setup_heartbeat(void)4747-{4848- struct device_node *gpio = NULL;4949- int *prop;5050- int j;5151- const char * const gpio_list[] = {5252- "xlnx,xps-gpio-1.00.a",5353- NULL5454- };5555-5656- for (j = 0; gpio_list[j] != NULL; j++) {5757- gpio = of_find_compatible_node(NULL, NULL, gpio_list[j]);5858- if (gpio)5959- break;6060- }6161-6262- if (gpio) {6363- base_addr = be32_to_cpup(of_get_property(gpio, "reg", NULL));6464- base_addr = (unsigned long) ioremap(base_addr, PAGE_SIZE);6565- pr_notice("Heartbeat GPIO at 0x%x\n", base_addr);6666-6767- /* GPIO is configured as output */6868- prop = (int *) of_get_property(gpio, "xlnx,is-bidir", NULL);6969- if (prop)7070- out_be32(base_addr + 4, 0);7171- }7272-}
-29
arch/microblaze/kernel/platform.c
···11-/*22- * Copyright 2008 Michal Simek <monstr@monstr.eu>33- *44- * based on virtex.c file55- *66- * Copyright 2007 Secret Lab Technologies Ltd.77- *88- * This file is licensed under the terms of the GNU General Public License99- * version 2. This program is licensed "as is" without any warranty of any1010- * kind, whether express or implied.1111- */1212-1313-#include <linux/init.h>1414-#include <linux/of_platform.h>1515-#include <asm/setup.h>1616-1717-static struct of_device_id xilinx_of_bus_ids[] __initdata = {1818- { .compatible = "simple-bus", },1919- { .compatible = "xlnx,compound", },2020- {}2121-};2222-2323-static int __init microblaze_device_probe(void)2424-{2525- of_platform_bus_probe(NULL, xilinx_of_bus_ids, NULL);2626- of_platform_reset_gpio_probe();2727- return 0;2828-}2929-device_initcall(microblaze_device_probe);
+6-5
arch/microblaze/kernel/reset.c
···1818static int handle; /* reset pin handle */1919static unsigned int reset_val;20202121-void of_platform_reset_gpio_probe(void)2121+static int of_platform_reset_gpio_probe(void)2222{2323 int ret;2424 handle = of_get_named_gpio(of_find_node_by_path("/"),···2727 if (!gpio_is_valid(handle)) {2828 pr_info("Skipping unavailable RESET gpio %d (%s)\n",2929 handle, "reset");3030- return;3030+ return -ENODEV;3131 }32323333 ret = gpio_request(handle, "reset");3434 if (ret < 0) {3535 pr_info("GPIO pin is already allocated\n");3636- return;3636+ return ret;3737 }38383939 /* get current setup value */···51515252 pr_info("RESET: Registered gpio device: %d, current val: %d\n",5353 handle, reset_val);5454- return;5454+ return 0;5555err:5656 gpio_free(handle);5757- return;5757+ return ret;5858}5959+device_initcall(of_platform_reset_gpio_probe);596060616162static void gpio_system_reset(void)
···6565# kernel.6666cflags-y += -mdisable-fpregs67676868-# Without this, "ld -r" results in .text sections that are too big6969-# (> 0x40000) for branches to reach stubs.7070-cflags-y += -ffunction-sections7171-7268# Use long jumps instead of long branches (needed if your linker fails to7369# link a too big vmlinux executable). Not enabled for building modules.7470ifdef CONFIG_MLONGCALLS
-8
arch/parisc/include/asm/signal.h
···2121 unsigned long sig[_NSIG_WORDS];2222} sigset_t;23232424-#ifndef __KERNEL__2525-struct sigaction {2626- __sighandler_t sa_handler;2727- unsigned long sa_flags;2828- sigset_t sa_mask; /* mask last for extensibility */2929-};3030-#endif3131-3224#include <asm/sigcontext.h>33253426#endif /* !__ASSEMBLY */
···285285 * Note that the returned IO or memory base is a physical address286286 */287287288288-#pragma GCC diagnostic push289289-#pragma GCC diagnostic ignored "-Wpragmas"290290-#pragma GCC diagnostic ignored "-Wattribute-alias"291288SYSCALL_DEFINE3(pciconfig_iobase, long, which,292289 unsigned long, bus, unsigned long, devfn)293290{···310313311314 return result;312315}313313-#pragma GCC diagnostic pop
···10511051}1052105210531053/* We assume to be passed big endian arguments */10541054-#pragma GCC diagnostic push10551055-#pragma GCC diagnostic ignored "-Wpragmas"10561056-#pragma GCC diagnostic ignored "-Wattribute-alias"10571054SYSCALL_DEFINE1(rtas, struct rtas_args __user *, uargs)10581055{10591056 struct rtas_args args;···1137114011381141 return 0;11391142}11401140-#pragma GCC diagnostic pop1141114311421144/*11431145 * Call early during boot, before mem init, to retrieve the RTAS
···898898#define pgd_page(pgd) pfn_to_page(pgd_pfn(pgd))899899900900/* to find an entry in a page-table-directory. */901901-static __always_inline p4d_t *p4d_offset(pgd_t *pgd, unsigned long address)901901+static inline p4d_t *p4d_offset(pgd_t *pgd, unsigned long address)902902{903903 if (!pgtable_l5_enabled())904904 return (p4d_t *)pgd;
···12481248{12491249 int i;12501250 u64 end;12511251+ u64 addr = 0;1251125212521253 /*12531254 * The bootstrap memblock region count maximum is 128 entries···12651264 struct e820_entry *entry = &e820_table->entries[i];1266126512671266 end = entry->addr + entry->size;12671267+ if (addr < entry->addr)12681268+ memblock_reserve(addr, entry->addr - addr);12691269+ addr = end;12681270 if (end != (resource_size_t)end)12691271 continue;1270127212731273+ /*12741274+ * all !E820_TYPE_RAM ranges (including gap ranges) are put12751275+ * into memblock.reserved to make sure that struct pages in12761276+ * such regions are not left uninitialized after bootup.12771277+ */12711278 if (entry->type != E820_TYPE_RAM && entry->type != E820_TYPE_RESERVED_KERN)12721272- continue;12731273-12741274- memblock_add(entry->addr, entry->size);12791279+ memblock_reserve(entry->addr, entry->size);12801280+ else12811281+ memblock_add(entry->addr, entry->size);12751282 }1276128312771284 /* Throw away partial pages: */
···1075107510761076#define BLK_MQ_RESOURCE_DELAY 3 /* ms units */1077107710781078+/*10791079+ * Returns true if we did some work AND can potentially do more.10801080+ */10781081bool blk_mq_dispatch_rq_list(struct request_queue *q, struct list_head *list,10791082 bool got_budget)10801083{···12081205 blk_mq_run_hw_queue(hctx, true);12091206 else if (needs_restart && (ret == BLK_STS_RESOURCE))12101207 blk_mq_delay_run_hw_queue(hctx, BLK_MQ_RESOURCE_DELAY);12081208+12091209+ return false;12111210 }12111211+12121212+ /*12131213+ * If the host/device is unable to accept more work, inform the12141214+ * caller of that.12151215+ */12161216+ if (ret == BLK_STS_RESOURCE || ret == BLK_STS_DEV_RESOURCE)12171217+ return false;1212121812131219 return (queued + errors) != 0;12141220}
···249249 return -EINVAL;250250 }251251252252+ if (strcmp(ctx->cert->sig->pkey_algo, "rsa") == 0) {253253+ /* Discard the BIT STRING metadata */254254+ if (vlen < 1 || *(const u8 *)value != 0)255255+ return -EBADMSG;256256+257257+ value++;258258+ vlen--;259259+ }260260+252261 ctx->cert->raw_sig = value;253262 ctx->cert->raw_sig_size = vlen;254263 return 0;
+72
drivers/acpi/osl.c
···4545#include <linux/uaccess.h>4646#include <linux/io-64-nonatomic-lo-hi.h>47474848+#include "acpica/accommon.h"4949+#include "acpica/acnamesp.h"4850#include "internal.h"49515052#define _COMPONENT ACPI_OS_SERVICES···14911489 return acpi_check_resource_conflict(&res);14921490}14931491EXPORT_SYMBOL(acpi_check_region);14921492+14931493+static acpi_status acpi_deactivate_mem_region(acpi_handle handle, u32 level,14941494+ void *_res, void **return_value)14951495+{14961496+ struct acpi_mem_space_context **mem_ctx;14971497+ union acpi_operand_object *handler_obj;14981498+ union acpi_operand_object *region_obj2;14991499+ union acpi_operand_object *region_obj;15001500+ struct resource *res = _res;15011501+ acpi_status status;15021502+15031503+ region_obj = acpi_ns_get_attached_object(handle);15041504+ if (!region_obj)15051505+ return AE_OK;15061506+15071507+ handler_obj = region_obj->region.handler;15081508+ if (!handler_obj)15091509+ return AE_OK;15101510+15111511+ if (region_obj->region.space_id != ACPI_ADR_SPACE_SYSTEM_MEMORY)15121512+ return AE_OK;15131513+15141514+ if (!(region_obj->region.flags & AOPOBJ_SETUP_COMPLETE))15151515+ return AE_OK;15161516+15171517+ region_obj2 = acpi_ns_get_secondary_object(region_obj);15181518+ if (!region_obj2)15191519+ return AE_OK;15201520+15211521+ mem_ctx = (void *)®ion_obj2->extra.region_context;15221522+15231523+ if (!(mem_ctx[0]->address >= res->start &&15241524+ mem_ctx[0]->address < res->end))15251525+ return AE_OK;15261526+15271527+ status = handler_obj->address_space.setup(region_obj,15281528+ ACPI_REGION_DEACTIVATE,15291529+ NULL, (void **)mem_ctx);15301530+ if (ACPI_SUCCESS(status))15311531+ region_obj->region.flags &= ~(AOPOBJ_SETUP_COMPLETE);15321532+15331533+ return status;15341534+}15351535+15361536+/**15371537+ * acpi_release_memory - Release any mappings done to a memory region15381538+ * @handle: Handle to namespace node15391539+ * @res: Memory resource15401540+ * @level: A level that terminates the search15411541+ *15421542+ * Walks through @handle and unmaps all SystemMemory Operation Regions that15431543+ * overlap with @res and that have already been activated (mapped).15441544+ *15451545+ * This is a helper that allows drivers to place special requirements on memory15461546+ * region that may overlap with operation regions, primarily allowing them to15471547+ * safely map the region as non-cached memory.15481548+ *15491549+ * The unmapped Operation Regions will be automatically remapped next time they15501550+ * are called, so the drivers do not need to do anything else.15511551+ */15521552+acpi_status acpi_release_memory(acpi_handle handle, struct resource *res,15531553+ u32 level)15541554+{15551555+ if (!(res->flags & IORESOURCE_MEM))15561556+ return AE_TYPE;15571557+15581558+ return acpi_walk_namespace(ACPI_TYPE_REGION, handle, level,15591559+ acpi_deactivate_mem_region, NULL, res, NULL);15601560+}15611561+EXPORT_SYMBOL_GPL(acpi_release_memory);1494156214951563/*14961564 * Let drivers know whether the resource checks are effective
+3-4
drivers/base/power/domain.c
···24872487 * power domain corresponding to a DT node's "required-opps" property.24882488 *24892489 * @dev: Device for which the performance-state needs to be found.24902490- * @opp_node: DT node where the "required-opps" property is present. This can be24902490+ * @np: DT node where the "required-opps" property is present. This can be24912491 * the device node itself (if it doesn't have an OPP table) or a node24922492 * within the OPP table of a device (if device has an OPP table).24932493- * @state: Pointer to return performance state.24942493 *24952494 * Returns performance state corresponding to the "required-opps" property of24962495 * a DT node. This calls platform specific genpd->opp_to_performance_state()···24982499 * Returns performance state on success and 0 on failure.24992500 */25002501unsigned int of_genpd_opp_to_performance_state(struct device *dev,25012501- struct device_node *opp_node)25022502+ struct device_node *np)25022503{25032504 struct generic_pm_domain *genpd;25042505 struct dev_pm_opp *opp;···2513251425142515 genpd_lock(genpd);2515251625162516- opp = of_dev_pm_opp_find_required_opp(&genpd->dev, opp_node);25172517+ opp = of_dev_pm_opp_find_required_opp(&genpd->dev, np);25172518 if (IS_ERR(opp)) {25182519 dev_err(dev, "Failed to find required OPP: %ld\n",25192520 PTR_ERR(opp));
+2-2
drivers/block/drbd/drbd_req.c
···12441244 _drbd_start_io_acct(device, req);1245124512461246 /* process discards always from our submitter thread */12471247- if ((bio_op(bio) & REQ_OP_WRITE_ZEROES) ||12481248- (bio_op(bio) & REQ_OP_DISCARD))12471247+ if (bio_op(bio) == REQ_OP_WRITE_ZEROES ||12481248+ bio_op(bio) == REQ_OP_DISCARD)12491249 goto queue_for_submitter_thread;1250125012511251 if (rw == WRITE && req->private_bio && req->i.size
+13-16
drivers/char/random.c
···402402/*403403 * Static global variables404404 */405405-static DECLARE_WAIT_QUEUE_HEAD(random_wait);405405+static DECLARE_WAIT_QUEUE_HEAD(random_read_wait);406406+static DECLARE_WAIT_QUEUE_HEAD(random_write_wait);406407static struct fasync_struct *fasync;407408408409static DEFINE_SPINLOCK(random_ready_list_lock);···722721723722 /* should we wake readers? */724723 if (entropy_bits >= random_read_wakeup_bits &&725725- wq_has_sleeper(&random_wait)) {726726- wake_up_interruptible_poll(&random_wait, POLLIN);724724+ wq_has_sleeper(&random_read_wait)) {725725+ wake_up_interruptible(&random_read_wait);727726 kill_fasync(&fasync, SIGIO, POLL_IN);728727 }729728 /* If the input pool is getting full, send some···13971396 trace_debit_entropy(r->name, 8 * ibytes);13981397 if (ibytes &&13991398 (r->entropy_count >> ENTROPY_SHIFT) < random_write_wakeup_bits) {14001400- wake_up_interruptible_poll(&random_wait, POLLOUT);13991399+ wake_up_interruptible(&random_write_wait);14011400 kill_fasync(&fasync, SIGIO, POLL_OUT);14021401 }14031402···18391838 if (nonblock)18401839 return -EAGAIN;1841184018421842- wait_event_interruptible(random_wait,18411841+ wait_event_interruptible(random_read_wait,18431842 ENTROPY_BITS(&input_pool) >=18441843 random_read_wakeup_bits);18451844 if (signal_pending(current))···18761875 return ret;18771876}1878187718791879-static struct wait_queue_head *18801880-random_get_poll_head(struct file *file, __poll_t events)18811881-{18821882- return &random_wait;18831883-}18841884-18851878static __poll_t18861886-random_poll_mask(struct file *file, __poll_t events)18791879+random_poll(struct file *file, poll_table * wait)18871880{18881888- __poll_t mask = 0;18811881+ __poll_t mask;1889188218831883+ poll_wait(file, &random_read_wait, wait);18841884+ poll_wait(file, &random_write_wait, wait);18851885+ mask = 0;18901886 if (ENTROPY_BITS(&input_pool) >= random_read_wakeup_bits)18911887 mask |= EPOLLIN | EPOLLRDNORM;18921888 if (ENTROPY_BITS(&input_pool) < random_write_wakeup_bits)···19901992const struct file_operations random_fops = {19911993 .read = random_read,19921994 .write = random_write,19931993- .get_poll_head = random_get_poll_head,19941994- .poll_mask = random_poll_mask,19951995+ .poll = random_poll,19951996 .unlocked_ioctl = random_ioctl,19961997 .fasync = random_fasync,19971998 .llseek = noop_llseek,···23232326 * We'll be woken up again once below random_write_wakeup_thresh,23242327 * or when the calling thread is about to terminate.23252328 */23262326- wait_event_interruptible(random_wait, kthread_should_stop() ||23292329+ wait_event_interruptible(random_write_wait, kthread_should_stop() ||23272330 ENTROPY_BITS(&input_pool) <= random_write_wakeup_bits);23282331 mix_pool_bytes(poolp, buffer, count);23292332 credit_entropy_bits(poolp, entropy);
+4-4
drivers/cpufreq/qcom-cpufreq-kryo.c
···8787 int ret;88888989 cpu_dev = get_cpu_device(0);9090- if (NULL == cpu_dev)9191- ret = -ENODEV;9090+ if (!cpu_dev)9191+ return -ENODEV;92929393 msm8996_version = qcom_cpufreq_kryo_get_msm_id();9494 if (NUM_OF_MSM8996_VERSIONS == msm8996_version) {···9797 }98989999 np = dev_pm_opp_of_get_opp_desc_node(cpu_dev);100100- if (IS_ERR(np))101101- return PTR_ERR(np);100100+ if (!np)101101+ return -ENOENT;102102103103 ret = of_device_is_compatible(np, "operating-points-v2-kryo-cpu");104104 if (!ret) {
···197197 priv->io_base = regs;198198199199 res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "hhi");200200- if (!res)201201- return -EINVAL;200200+ if (!res) {201201+ ret = -EINVAL;202202+ goto free_drm;203203+ }202204 /* Simply ioremap since it may be a shared register zone */203205 regs = devm_ioremap(dev, res->start, resource_size(res));204206 if (!regs) {···217215 }218216219217 res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "dmc");220220- if (!res)221221- return -EINVAL;218218+ if (!res) {219219+ ret = -EINVAL;220220+ goto free_drm;221221+ }222222 /* Simply ioremap since it may be a shared register zone */223223 regs = devm_ioremap(dev, res->start, resource_size(res));224224 if (!regs) {
+4-4
drivers/i2c/algos/i2c-algo-bit.c
···647647 if (bit_adap->getscl == NULL)648648 adap->quirks = &i2c_bit_quirk_no_clk_stretch;649649650650- /* Bring bus to a known state. Looks like STOP if bus is not free yet */651651- setscl(bit_adap, 1);652652- udelay(bit_adap->udelay);653653- setsda(bit_adap, 1);650650+ /*651651+ * We tried forcing SCL/SDA to an initial state here. But that caused a652652+ * regression, sadly. Check Bugzilla #200045 for details.653653+ */654654655655 ret = add_adapter(adap);656656 if (ret < 0)
+2-2
drivers/i2c/busses/i2c-gpio.c
···279279 * required for an I2C bus.280280 */281281 if (pdata->scl_is_open_drain)282282- gflags = GPIOD_OUT_LOW;282282+ gflags = GPIOD_OUT_HIGH;283283 else284284- gflags = GPIOD_OUT_LOW_OPEN_DRAIN;284284+ gflags = GPIOD_OUT_HIGH_OPEN_DRAIN;285285 priv->scl = i2c_gpio_get_desc(dev, "scl", 1, gflags);286286 if (IS_ERR(priv->scl))287287 return PTR_ERR(priv->scl);
+9-5
drivers/i2c/i2c-core-smbus.c
···465465466466 status = i2c_transfer(adapter, msg, num);467467 if (status < 0)468468- return status;469469- if (status != num)470470- return -EIO;468468+ goto cleanup;469469+ if (status != num) {470470+ status = -EIO;471471+ goto cleanup;472472+ }473473+ status = 0;471474472475 /* Check PEC if last message is a read */473476 if (i && (msg[num-1].flags & I2C_M_RD)) {474477 status = i2c_smbus_check_pec(partial_pec, &msg[num-1]);475478 if (status < 0)476476- return status;479479+ goto cleanup;477480 }478481479482 if (read_write == I2C_SMBUS_READ)···502499 break;503500 }504501502502+cleanup:505503 if (msg[0].flags & I2C_M_DMA_SAFE)506504 kfree(msg[0].buf);507505 if (msg[1].flags & I2C_M_DMA_SAFE)508506 kfree(msg[1].buf);509507510510- return 0;508508+ return status;511509}512510513511/**
+1-1
drivers/iio/accel/mma8452.c
···10531053 if (src < 0)10541054 return IRQ_NONE;1055105510561056- if (!(src & data->chip_info->enabled_events))10561056+ if (!(src & (data->chip_info->enabled_events | MMA8452_INT_DRDY)))10571057 return IRQ_NONE;1058105810591059 if (src & MMA8452_INT_DRDY) {
+2
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
···959959 }960960961961 irq_type = irqd_get_trigger_type(desc);962962+ if (!irq_type)963963+ irq_type = IRQF_TRIGGER_RISING;962964 if (irq_type == IRQF_TRIGGER_RISING)963965 st->irq_mask = INV_MPU6050_ACTIVE_HIGH;964966 else if (irq_type == IRQF_TRIGGER_FALLING)
+2
drivers/iio/light/tsl2772.c
···582582 "%s: failed to get lux\n", __func__);583583 return lux_val;584584 }585585+ if (lux_val == 0)586586+ return -ERANGE;585587586588 ret = (chip->settings.als_cal_target * chip->settings.als_gain_trim) /587589 lux_val;
···131131 * inactive, or if the tool type is changed, a new tracking id is132132 * assigned to the slot. The tool type is only reported if the133133 * corresponding absbit field is set.134134+ *135135+ * Returns true if contact is active.134136 */135135-void input_mt_report_slot_state(struct input_dev *dev,137137+bool input_mt_report_slot_state(struct input_dev *dev,136138 unsigned int tool_type, bool active)137139{138140 struct input_mt *mt = dev->mt;···142140 int id;143141144142 if (!mt)145145- return;143143+ return false;146144147145 slot = &mt->slots[mt->slot];148146 slot->frame = mt->frame;149147150148 if (!active) {151149 input_event(dev, EV_ABS, ABS_MT_TRACKING_ID, -1);152152- return;150150+ return false;153151 }154152155153 id = input_mt_get_value(slot, ABS_MT_TRACKING_ID);156156- if (id < 0 || input_mt_get_value(slot, ABS_MT_TOOL_TYPE) != tool_type)154154+ if (id < 0)157155 id = input_mt_new_trkid(mt);158156159157 input_event(dev, EV_ABS, ABS_MT_TRACKING_ID, id);160158 input_event(dev, EV_ABS, ABS_MT_TOOL_TYPE, tool_type);159159+160160+ return true;161161}162162EXPORT_SYMBOL(input_mt_report_slot_state);163163
···4545static irqreturn_t events_interrupt(int irq, void *dev_id)4646{4747 struct event_dev *edev = dev_id;4848- unsigned type, code, value;4848+ unsigned int type, code, value;49495050 type = __raw_readl(edev->addr + REG_READ);5151 code = __raw_readl(edev->addr + REG_READ);···5757}58585959static void events_import_bits(struct event_dev *edev,6060- unsigned long bits[], unsigned type, size_t count)6060+ unsigned long bits[], unsigned int type, size_t count)6161{6262 void __iomem *addr = edev->addr;6363 int i, j;···9999100100 for (j = 0; j < ARRAY_SIZE(val); j++) {101101 int offset = (i * ARRAY_SIZE(val) + j) * sizeof(u32);102102+102103 val[j] = __raw_readl(edev->addr + REG_DATA + offset);103104 }104105···113112 struct input_dev *input_dev;114113 struct event_dev *edev;115114 struct resource *res;116116- unsigned keymapnamelen;115115+ unsigned int keymapnamelen;117116 void __iomem *addr;118117 int irq;119118 int i;···151150 for (i = 0; i < keymapnamelen; i++)152151 edev->name[i] = __raw_readb(edev->addr + REG_DATA + i);153152154154- pr_debug("events_probe() keymap=%s\n", edev->name);153153+ pr_debug("%s: keymap=%s\n", __func__, edev->name);155154156155 input_dev->name = edev->name;157156 input_dev->id.bustype = BUS_HOST;
+10
drivers/input/misc/Kconfig
···841841 To compile this driver as a module, choose M here: the842842 module will be called rave-sp-pwrbutton.843843844844+config INPUT_SC27XX_VIBRA845845+ tristate "Spreadtrum sc27xx vibrator support"846846+ depends on MFD_SC27XX_PMIC || COMPILE_TEST847847+ select INPUT_FF_MEMLESS848848+ help849849+ This option enables support for Spreadtrum sc27xx vibrator driver.850850+851851+ To compile this driver as a module, choose M here. The module will852852+ be called sc27xx_vibra.853853+844854endif
···192192 else193193 input_report_rel(dev, REL_WHEEL, -wheel);194194195195- input_report_key(dev, BTN_SIDE, BIT(4));196196- input_report_key(dev, BTN_EXTRA, BIT(5));195195+ input_report_key(dev, BTN_SIDE, packet[3] & BIT(4));196196+ input_report_key(dev, BTN_EXTRA, packet[3] & BIT(5));197197 break;198198 }199199 break;···203203 input_report_rel(dev, REL_WHEEL, -(s8) packet[3]);204204205205 /* Extra buttons on Genius NewNet 3D */206206- input_report_key(dev, BTN_SIDE, BIT(6));207207- input_report_key(dev, BTN_EXTRA, BIT(7));206206+ input_report_key(dev, BTN_SIDE, packet[0] & BIT(6));207207+ input_report_key(dev, BTN_EXTRA, packet[0] & BIT(7));208208 break;209209210210 case PSMOUSE_THINKPS:211211 /* Extra button on ThinkingMouse */212212- input_report_key(dev, BTN_EXTRA, BIT(3));212212+ input_report_key(dev, BTN_EXTRA, packet[0] & BIT(3));213213214214 /*215215 * Without this bit of weirdness moving up gives wildly···223223 * Cortron PS2 Trackball reports SIDE button in the224224 * 4th bit of the first byte.225225 */226226- input_report_key(dev, BTN_SIDE, BIT(3));226226+ input_report_key(dev, BTN_SIDE, packet[0] & BIT(3));227227 packet[0] |= BIT(3);228228 break;229229
+1
drivers/input/rmi4/Kconfig
···33#44config RMI4_CORE55 tristate "Synaptics RMI4 bus support"66+ select IRQ_DOMAIN67 help78 Say Y here if you want to support the Synaptics RMI4 bus. This is89 required for all RMI4 device support.
+16-18
drivers/input/rmi4/rmi_2d_sensor.c
···3232 if (obj->type == RMI_2D_OBJECT_NONE)3333 return;34343535- if (axis_align->swap_axes)3636- swap(obj->x, obj->y);3737-3835 if (axis_align->flip_x)3936 obj->x = sensor->max_x - obj->x;40374138 if (axis_align->flip_y)4239 obj->y = sensor->max_y - obj->y;4040+4141+ if (axis_align->swap_axes)4242+ swap(obj->x, obj->y);43434444 /*4545 * Here checking if X offset or y offset are specified is···120120 x = min(RMI_2D_REL_POS_MAX, max(RMI_2D_REL_POS_MIN, (int)x));121121 y = min(RMI_2D_REL_POS_MAX, max(RMI_2D_REL_POS_MIN, (int)y));122122123123- if (axis_align->swap_axes)124124- swap(x, y);125125-126123 if (axis_align->flip_x)127124 x = min(RMI_2D_REL_POS_MAX, -x);128125129126 if (axis_align->flip_y)130127 y = min(RMI_2D_REL_POS_MAX, -y);128128+129129+ if (axis_align->swap_axes)130130+ swap(x, y);131131132132 if (x || y) {133133 input_report_rel(sensor->input, REL_X, x);···141141 struct input_dev *input = sensor->input;142142 int res_x;143143 int res_y;144144+ int max_x, max_y;144145 int input_flags = 0;145146146147 if (sensor->report_abs) {147147- if (sensor->axis_align.swap_axes) {148148- swap(sensor->max_x, sensor->max_y);149149- swap(sensor->axis_align.clip_x_low,150150- sensor->axis_align.clip_y_low);151151- swap(sensor->axis_align.clip_x_high,152152- sensor->axis_align.clip_y_high);153153- }154154-155148 sensor->min_x = sensor->axis_align.clip_x_low;156149 if (sensor->axis_align.clip_x_high)157150 sensor->max_x = min(sensor->max_x,···156163 sensor->axis_align.clip_y_high);157164158165 set_bit(EV_ABS, input->evbit);159159- input_set_abs_params(input, ABS_MT_POSITION_X, 0, sensor->max_x,160160- 0, 0);161161- input_set_abs_params(input, ABS_MT_POSITION_Y, 0, sensor->max_y,162162- 0, 0);166166+167167+ max_x = sensor->max_x;168168+ max_y = sensor->max_y;169169+ if (sensor->axis_align.swap_axes)170170+ swap(max_x, max_y);171171+ input_set_abs_params(input, ABS_MT_POSITION_X, 0, max_x, 0, 0);172172+ input_set_abs_params(input, ABS_MT_POSITION_Y, 0, max_y, 0, 0);163173164174 if (sensor->x_mm && sensor->y_mm) {165175 res_x = (sensor->max_x - sensor->min_x) / sensor->x_mm;166176 res_y = (sensor->max_y - sensor->min_y) / sensor->y_mm;177177+ if (sensor->axis_align.swap_axes)178178+ swap(res_x, res_y);167179168180 input_abs_set_res(input, ABS_X, res_x);169181 input_abs_set_res(input, ABS_Y, res_y);
+49-1
drivers/input/rmi4/rmi_bus.c
···991010#include <linux/kernel.h>1111#include <linux/device.h>1212+#include <linux/irq.h>1313+#include <linux/irqdomain.h>1214#include <linux/list.h>1315#include <linux/pm.h>1416#include <linux/rmi.h>···169167{}170168#endif171169170170+static struct irq_chip rmi_irq_chip = {171171+ .name = "rmi4",172172+};173173+174174+static int rmi_create_function_irq(struct rmi_function *fn,175175+ struct rmi_function_handler *handler)176176+{177177+ struct rmi_driver_data *drvdata = dev_get_drvdata(&fn->rmi_dev->dev);178178+ int i, error;179179+180180+ for (i = 0; i < fn->num_of_irqs; i++) {181181+ set_bit(fn->irq_pos + i, fn->irq_mask);182182+183183+ fn->irq[i] = irq_create_mapping(drvdata->irqdomain,184184+ fn->irq_pos + i);185185+186186+ irq_set_chip_data(fn->irq[i], fn);187187+ irq_set_chip_and_handler(fn->irq[i], &rmi_irq_chip,188188+ handle_simple_irq);189189+ irq_set_nested_thread(fn->irq[i], 1);190190+191191+ error = devm_request_threaded_irq(&fn->dev, fn->irq[i], NULL,192192+ handler->attention, IRQF_ONESHOT,193193+ dev_name(&fn->dev), fn);194194+ if (error) {195195+ dev_err(&fn->dev, "Error %d registering IRQ\n", error);196196+ return error;197197+ }198198+ }199199+200200+ return 0;201201+}202202+172203static int rmi_function_probe(struct device *dev)173204{174205 struct rmi_function *fn = to_rmi_function(dev);···213178214179 if (handler->probe) {215180 error = handler->probe(fn);216216- return error;181181+ if (error)182182+ return error;183183+ }184184+185185+ if (fn->num_of_irqs && handler->attention) {186186+ error = rmi_create_function_irq(fn, handler);187187+ if (error)188188+ return error;217189 }218190219191 return 0;···272230273231void rmi_unregister_function(struct rmi_function *fn)274232{233233+ int i;234234+275235 rmi_dbg(RMI_DEBUG_CORE, &fn->dev, "Unregistering F%02X.\n",276236 fn->fd.function_number);277237278238 device_del(&fn->dev);279239 of_node_put(fn->dev.of_node);280240 put_device(&fn->dev);241241+242242+ for (i = 0; i < fn->num_of_irqs; i++)243243+ irq_dispose_mapping(fn->irq[i]);244244+281245}282246283247/**
+9-1
drivers/input/rmi4/rmi_bus.h
···14141515struct rmi_device;16161717+/*1818+ * The interrupt source count in the function descriptor can represent up to1919+ * 6 interrupt sources in the normal manner.2020+ */2121+#define RMI_FN_MAX_IRQS 62222+1723/**1824 * struct rmi_function - represents the implementation of an RMI41925 * function for a particular device (basically, a driver for that RMI4 function)···3226 * @irq_pos: The position in the irq bitfield this function holds3327 * @irq_mask: For convenience, can be used to mask IRQ bits off during ATTN3428 * interrupt handling.2929+ * @irqs: assigned virq numbers (up to num_of_irqs)3530 *3631 * @node: entry in device's list of functions3732 */···4336 struct list_head node;44374538 unsigned int num_of_irqs;3939+ int irq[RMI_FN_MAX_IRQS];4640 unsigned int irq_pos;4741 unsigned long irq_mask[];4842};···8476 void (*remove)(struct rmi_function *fn);8577 int (*config)(struct rmi_function *fn);8678 int (*reset)(struct rmi_function *fn);8787- int (*attention)(struct rmi_function *fn, unsigned long *irq_bits);7979+ irqreturn_t (*attention)(int irq, void *ctx);8880 int (*suspend)(struct rmi_function *fn);8981 int (*resume)(struct rmi_function *fn);9082};
+20-32
drivers/input/rmi4/rmi_driver.c
···2121#include <linux/pm.h>2222#include <linux/slab.h>2323#include <linux/of.h>2424+#include <linux/irqdomain.h>2425#include <uapi/linux/input.h>2526#include <linux/rmi.h>2627#include "rmi_bus.h"···128127 return 0;129128}130129131131-static void process_one_interrupt(struct rmi_driver_data *data,132132- struct rmi_function *fn)133133-{134134- struct rmi_function_handler *fh;135135-136136- if (!fn || !fn->dev.driver)137137- return;138138-139139- fh = to_rmi_function_handler(fn->dev.driver);140140- if (fh->attention) {141141- bitmap_and(data->fn_irq_bits, data->irq_status, fn->irq_mask,142142- data->irq_count);143143- if (!bitmap_empty(data->fn_irq_bits, data->irq_count))144144- fh->attention(fn, data->fn_irq_bits);145145- }146146-}147147-148130static int rmi_process_interrupt_requests(struct rmi_device *rmi_dev)149131{150132 struct rmi_driver_data *data = dev_get_drvdata(&rmi_dev->dev);151133 struct device *dev = &rmi_dev->dev;152152- struct rmi_function *entry;134134+ int i;153135 int error;154136155137 if (!data)···157173 */158174 mutex_unlock(&data->irq_mutex);159175160160- /*161161- * It would be nice to be able to use irq_chip to handle these162162- * nested IRQs. Unfortunately, most of the current customers for163163- * this driver are using older kernels (3.0.x) that don't support164164- * the features required for that. Once they've shifted to more165165- * recent kernels (say, 3.3 and higher), this should be switched to166166- * use irq_chip.167167- */168168- list_for_each_entry(entry, &data->function_list, node)169169- process_one_interrupt(data, entry);176176+ for_each_set_bit(i, data->irq_status, data->irq_count)177177+ handle_nested_irq(irq_find_mapping(data->irqdomain, i));170178171179 if (data->input)172180 input_sync(data->input);···9771001static int rmi_driver_remove(struct device *dev)9781002{9791003 struct rmi_device *rmi_dev = to_rmi_device(dev);10041004+ struct rmi_driver_data *data = dev_get_drvdata(&rmi_dev->dev);98010059811006 rmi_disable_irq(rmi_dev, false);10071007+10081008+ irq_domain_remove(data->irqdomain);10091009+ data->irqdomain = NULL;98210109831011 rmi_f34_remove_sysfs(rmi_dev);9841012 rmi_free_function_list(rmi_dev);···10151035{10161036 struct rmi_device *rmi_dev = data->rmi_dev;10171037 struct device *dev = &rmi_dev->dev;10181018- int irq_count;10381038+ struct fwnode_handle *fwnode = rmi_dev->xport->dev->fwnode;10391039+ int irq_count = 0;10191040 size_t size;10201041 int retval;10211042···10271046 * being accessed.10281047 */10291048 rmi_dbg(RMI_DEBUG_CORE, dev, "%s: Counting IRQs.\n", __func__);10301030- irq_count = 0;10311049 data->bootloader_mode = false;1032105010331051 retval = rmi_scan_pdt(rmi_dev, &irq_count, rmi_count_irqs);···1037105710381058 if (data->bootloader_mode)10391059 dev_warn(dev, "Device in bootloader mode.\n");10601060+10611061+ /* Allocate and register a linear revmap irq_domain */10621062+ data->irqdomain = irq_domain_create_linear(fwnode, irq_count,10631063+ &irq_domain_simple_ops,10641064+ data);10651065+ if (!data->irqdomain) {10661066+ dev_err(&rmi_dev->dev, "Failed to create IRQ domain\n");10671067+ return -ENOMEM;10681068+ }1040106910411070 data->irq_count = irq_count;10421071 data->num_of_irq_regs = (data->irq_count + 7) / 8;···10691080{10701081 struct rmi_device *rmi_dev = data->rmi_dev;10711082 struct device *dev = &rmi_dev->dev;10721072- int irq_count;10831083+ int irq_count = 0;10731084 int retval;1074108510751075- irq_count = 0;10761086 rmi_dbg(RMI_DEBUG_CORE, dev, "%s: Creating functions.\n", __func__);10771087 retval = rmi_scan_pdt(rmi_dev, &irq_count, rmi_create_function);10781088 if (retval < 0) {
···123123 if (ret)124124 return ret;125125126126- denali->clk_x_rate = clk_get_rate(dt->clk);126126+ /*127127+ * Hardcode the clock rate for the backward compatibility.128128+ * This works for both SOCFPGA and UniPhier.129129+ */130130+ denali->clk_x_rate = 200000000;127131128132 ret = denali_init(denali);129133 if (ret)
···440440441441 for (; page < page_end; page++) {442442 res = chip->ecc.read_oob(mtd, chip, page);443443- if (res)443443+ if (res < 0)444444 return res;445445446446 bad = chip->oob_poi[chip->badblockpos];
+36-12
drivers/mtd/nand/raw/nand_macronix.c
···17171818#include <linux/mtd/rawnand.h>19192020+/*2121+ * Macronix AC series does not support using SET/GET_FEATURES to change2222+ * the timings unlike what is declared in the parameter page. Unflag2323+ * this feature to avoid unnecessary downturns.2424+ */2525+static void macronix_nand_fix_broken_get_timings(struct nand_chip *chip)2626+{2727+ unsigned int i;2828+ static const char * const broken_get_timings[] = {2929+ "MX30LF1G18AC",3030+ "MX30LF1G28AC",3131+ "MX30LF2G18AC",3232+ "MX30LF2G28AC",3333+ "MX30LF4G18AC",3434+ "MX30LF4G28AC",3535+ "MX60LF8G18AC",3636+ };3737+3838+ if (!chip->parameters.supports_set_get_features)3939+ return;4040+4141+ for (i = 0; i < ARRAY_SIZE(broken_get_timings); i++) {4242+ if (!strcmp(broken_get_timings[i], chip->parameters.model))4343+ break;4444+ }4545+4646+ if (i == ARRAY_SIZE(broken_get_timings))4747+ return;4848+4949+ bitmap_clear(chip->parameters.get_feature_list,5050+ ONFI_FEATURE_ADDR_TIMING_MODE, 1);5151+ bitmap_clear(chip->parameters.set_feature_list,5252+ ONFI_FEATURE_ADDR_TIMING_MODE, 1);5353+}5454+2055static int macronix_nand_init(struct nand_chip *chip)2156{2257 if (nand_is_slc(chip))2358 chip->bbt_options |= NAND_BBT_SCAN2NDPAGE;24592525- /*2626- * MX30LF2G18AC chip does not support using SET/GET_FEATURES to change2727- * the timings unlike what is declared in the parameter page. Unflag2828- * this feature to avoid unnecessary downturns.2929- */3030- if (chip->parameters.supports_set_get_features &&3131- !strcmp("MX30LF2G18AC", chip->parameters.model)) {3232- bitmap_clear(chip->parameters.get_feature_list,3333- ONFI_FEATURE_ADDR_TIMING_MODE, 1);3434- bitmap_clear(chip->parameters.set_feature_list,3535- ONFI_FEATURE_ADDR_TIMING_MODE, 1);3636- }6060+ macronix_nand_fix_broken_get_timings(chip);37613862 return 0;3963}
···11config NET_XGENE_V222 tristate "APM X-Gene SoC Ethernet-v2 Driver"33- depends on HAS_DMA43 depends on ARCH_XGENE || COMPILE_TEST54 help65 This is the Ethernet driver for the on-chip ethernet interface
-1
drivers/net/ethernet/apm/xgene/Kconfig
···11config NET_XGENE22 tristate "APM X-Gene SoC Ethernet Driver"33- depends on HAS_DMA43 depends on ARCH_XGENE || COMPILE_TEST54 select PHYLIB65 select MDIO_XGENE
+4-2
drivers/net/ethernet/arc/Kconfig
···2424config ARC_EMAC2525 tristate "ARC EMAC support"2626 select ARC_EMAC_CORE2727- depends on OF_IRQ && OF_NET && HAS_DMA && (ARC || COMPILE_TEST)2727+ depends on OF_IRQ && OF_NET2828+ depends on ARC || COMPILE_TEST2829 ---help---2930 On some legacy ARC (Synopsys) FPGA boards such as ARCAngel4/ML50x3031 non-standard on-chip ethernet device ARC EMAC 10/100 is used.···3433config EMAC_ROCKCHIP3534 tristate "Rockchip EMAC support"3635 select ARC_EMAC_CORE3737- depends on OF_IRQ && OF_NET && REGULATOR && HAS_DMA && (ARCH_ROCKCHIP || COMPILE_TEST)3636+ depends on OF_IRQ && OF_NET && REGULATOR3737+ depends on ARCH_ROCKCHIP || COMPILE_TEST3838 ---help---3939 Support for Rockchip RK3036/RK3066/RK3188 EMAC ethernet controllers.4040 This selects Rockchip SoC glue layer support for the
-2
drivers/net/ethernet/broadcom/Kconfig
···157157config BGMAC_BCMA158158 tristate "Broadcom iProc GBit BCMA support"159159 depends on BCMA && BCMA_HOST_SOC160160- depends on HAS_DMA161160 depends on BCM47XX || ARCH_BCM_5301X || COMPILE_TEST162161 select BGMAC163162 select PHYLIB···169170170171config BGMAC_PLATFORM171172 tristate "Broadcom iProc GBit platform support"172172- depends on HAS_DMA173173 depends on ARCH_BCM_IPROC || COMPILE_TEST174174 depends on OF175175 select BGMAC
+1-4
drivers/net/ethernet/cadence/macb_ptp.c
···170170171171 if (delta > TSU_NSEC_MAX_VAL) {172172 gem_tsu_get_time(&bp->ptp_clock_info, &now);173173- if (sign)174174- now = timespec64_sub(now, then);175175- else176176- now = timespec64_add(now, then);173173+ now = timespec64_add(now, then);177174178175 gem_tsu_set_time(&bp->ptp_clock_info,179176 (const struct timespec64 *)&now);
+1-1
drivers/net/ethernet/calxeda/Kconfig
···11config NET_CALXEDA_XGMAC22 tristate "Calxeda 1G/10G XGMAC Ethernet driver"33- depends on HAS_IOMEM && HAS_DMA33+ depends on HAS_IOMEM44 depends on ARCH_HIGHBANK || COMPILE_TEST55 select CRC3266 help
+1-1
drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
···263263 "Can't %s DCB Priority on port %d, TX Queue %d: err=%d\n",264264 enable ? "set" : "unset", pi->port_id, i, -err);265265 else266266- txq->dcb_prio = value;266266+ txq->dcb_prio = enable ? value : 0;267267 }268268}269269
+1-1
drivers/net/ethernet/hisilicon/Kconfig
···55config NET_VENDOR_HISILICON66 bool "Hisilicon devices"77 default y88- depends on (OF || ACPI) && HAS_DMA88+ depends on OF || ACPI99 depends on ARM || ARM64 || COMPILE_TEST1010 ---help---1111 If you have a network (Ethernet) card belonging to this class, say Y.
+3-5
drivers/net/ethernet/marvell/Kconfig
···18181919config MV643XX_ETH2020 tristate "Marvell Discovery (643XX) and Orion ethernet support"2121- depends on (MV64X60 || PPC32 || PLAT_ORION || COMPILE_TEST) && INET2222- depends on HAS_DMA2121+ depends on MV64X60 || PPC32 || PLAT_ORION || COMPILE_TEST2222+ depends on INET2323 select PHYLIB2424 select MVMDIO2525 ---help---···5858config MVNETA5959 tristate "Marvell Armada 370/38x/XP/37xx network interface support"6060 depends on ARCH_MVEBU || COMPILE_TEST6161- depends on HAS_DMA6261 select MVMDIO6362 select PHYLINK6463 ---help---···8384config MVPP28485 tristate "Marvell Armada 375/7K/8K network interface support"8586 depends on ARCH_MVEBU || COMPILE_TEST8686- depends on HAS_DMA8787 select MVMDIO8888 select PHYLINK8989 ---help---···91939294config PXA168_ETH9395 tristate "Marvell pxa168 ethernet support"9494- depends on HAS_IOMEM && HAS_DMA9696+ depends on HAS_IOMEM9597 depends on CPU_PXA168 || ARCH_BERLIN || COMPILE_TEST9698 select PHYLIB9799 ---help---
···30303131config MLXSW_PCI3232 tristate "PCI bus implementation for Mellanox Technologies Switch ASICs"3333- depends on PCI && HAS_DMA && HAS_IOMEM && MLXSW_CORE3333+ depends on PCI && HAS_IOMEM && MLXSW_CORE3434 default m3535 ---help---3636 This is PCI bus implementation for Mellanox Technologies Switch ASICs.
···6060 bool "PCIE bus interface support for FullMAC driver"6161 depends on BRCMFMAC6262 depends on PCI6363- depends on HAS_DMA6463 select BRCMFMAC_PROTO_MSGBUF6564 select FW_LOADER6665 ---help---
···18101810 err = xen_net_read_mac(dev, info->netdev->dev_addr);18111811 if (err) {18121812 xenbus_dev_fatal(dev, err, "parsing %s/mac", dev->nodename);18131813- goto out;18131813+ goto out_unlocked;18141814 }1815181518161816 rtnl_lock();···19251925 xennet_destroy_queues(info);19261926 out:19271927 rtnl_unlock();19281928+out_unlocked:19281929 device_unregister(&dev->dev);19291930 return err;19301931}···19511950 /* talk_to_netback() sets the correct number of queues */19521951 num_queues = dev->real_num_tx_queues;1953195219541954- rtnl_lock();19551955- netdev_update_features(dev);19561956- rtnl_unlock();19571957-19581953 if (dev->reg_state == NETREG_UNINITIALIZED) {19591954 err = register_netdev(dev);19601955 if (err) {···19591962 return err;19601963 }19611964 }19651965+19661966+ rtnl_lock();19671967+ netdev_update_features(dev);19681968+ rtnl_unlock();1962196919631970 /*19641971 * All public and private state should now be sane. Get
+2-2
drivers/nfc/pn533/usb.c
···7474 struct sk_buff *skb = NULL;75757676 if (!urb->status) {7777- skb = alloc_skb(urb->actual_length, GFP_KERNEL);7777+ skb = alloc_skb(urb->actual_length, GFP_ATOMIC);7878 if (!skb) {7979 nfc_err(&phy->udev->dev, "failed to alloc memory\n");8080 } else {···186186187187 if (dev->protocol_type == PN533_PROTO_REQ_RESP) {188188 /* request for response for sent packet directly */189189- rc = pn533_submit_urb_for_response(phy, GFP_ATOMIC);189189+ rc = pn533_submit_urb_for_response(phy, GFP_KERNEL);190190 if (rc)191191 goto error;192192 } else if (dev->protocol_type == PN533_PROTO_REQ_ACK_RESP) {
···2828obj-$(CONFIG_PCI_ECAM) += ecam.o2929obj-$(CONFIG_XEN_PCIDEV_FRONTEND) += xen-pcifront.o30303131-obj-y += controller/3232-obj-y += switch/3333-3431# Endpoint library must be initialized before its users3532obj-$(CONFIG_PCI_ENDPOINT) += endpoint/3333+3434+obj-y += controller/3535+obj-y += switch/36363737ccflags-$(CONFIG_PCI_DEBUG) := -DDEBUG
-3
drivers/pci/controller/Kconfig
···9696 depends on OF9797 select PCI_HOST_COMMON9898 select IRQ_DOMAIN9999- select PCI_DOMAINS10099 help101100 Say Y here if you want to support a simple generic PCI host102101 controller, such as the one emulated by kvmtool.···137138138139config PCIE_IPROC139140 tristate140140- select PCI_DOMAINS141141 help142142 This enables the iProc PCIe core controller support for Broadcom's143143 iProc family of SoCs. An appropriate bus interface driver needs···174176config PCIE_ALTERA175177 bool "Altera PCIe controller"176178 depends on ARM || NIOS2 || COMPILE_TEST177177- select PCI_DOMAINS178179 help179180 Say Y here if you want to enable PCIe controller support on Altera180181 FPGA.
+9-1
drivers/pci/hotplug/acpi_pcihp.c
···77 * All rights reserved.88 *99 * Send feedback to <kristen.c.accardi@intel.com>1010- *1110 */12111312#include <linux/module.h>···8687 return 0;87888889 /* If _OSC exists, we should not evaluate OSHP */9090+9191+ /*9292+ * If there's no ACPI host bridge (i.e., ACPI support is compiled9393+ * into the kernel but the hardware platform doesn't support ACPI),9494+ * there's nothing to do here.9595+ */8996 host = pci_find_host_bridge(pdev->bus);9097 root = acpi_pci_find_root(ACPI_HANDLE(&host->dev));9898+ if (!root)9999+ return 0;100100+91101 if (root->osc_support_set)92102 goto no_control;93103
+1-1
drivers/perf/xgene_pmu.c
···14631463 case PMU_TYPE_IOB:14641464 return devm_kasprintf(dev, GFP_KERNEL, "iob%d", id);14651465 case PMU_TYPE_IOB_SLOW:14661466- return devm_kasprintf(dev, GFP_KERNEL, "iob-slow%d", id);14661466+ return devm_kasprintf(dev, GFP_KERNEL, "iob_slow%d", id);14671467 case PMU_TYPE_MCB:14681468 return devm_kasprintf(dev, GFP_KERNEL, "mcb%d", id);14691469 case PMU_TYPE_MC:
-2
drivers/scsi/ipr.c
···760760 ioa_cfg->hrrq[i].allow_interrupts = 0;761761 spin_unlock(&ioa_cfg->hrrq[i]._lock);762762 }763763- wmb();764763765764 /* Set interrupt mask to stop all new interrupts */766765 if (ioa_cfg->sis64)···84028403 ioa_cfg->hrrq[i].allow_interrupts = 1;84038404 spin_unlock(&ioa_cfg->hrrq[i]._lock);84048405 }84058405- wmb();84068406 if (ioa_cfg->sis64) {84078407 /* Set the adapter to the correct endian mode. */84088408 writel(IPR_ENDIAN_SWAP_KEY, ioa_cfg->regs.endian_swap_reg);
···55075507 int k = sdebug_add_host;5508550855095509 stop_all_queued();55105510- free_all_queued();55115510 for (; k; k--)55125511 sdebug_remove_adapter();55125512+ free_all_queued();55135513 driver_unregister(&sdebug_driverfs_driver);55145514 bus_unregister(&pseudo_lld_bus);55155515 root_device_unregister(pseudo_primary);
+9-4
drivers/soc/imx/gpcv2.c
···39394040#define GPC_M4_PU_PDN_FLG 0x1bc41414242-4343-#define PGC_MIPI 44444-#define PGC_PCIE 54545-#define PGC_USB_HSIC 84242+/*4343+ * The PGC offset values in Reference Manual4444+ * (Rev. 1, 01/2018 and the older ones) GPC chapter's4545+ * GPC_PGC memory map are incorrect, below offset4646+ * values are from design RTL.4747+ */4848+#define PGC_MIPI 164949+#define PGC_PCIE 175050+#define PGC_USB_HSIC 204651#define GPC_PGC_CTRL(n) (0x800 + (n) * 0x40)4752#define GPC_PGC_SR(n) (GPC_PGC_CTRL(n) + 0xc)4853
+2-1
drivers/soc/qcom/Kconfig
···5566config QCOM_COMMAND_DB77 bool "Qualcomm Command DB"88- depends on (ARCH_QCOM && OF) || COMPILE_TEST88+ depends on ARCH_QCOM || COMPILE_TEST99+ depends on OF_RESERVED_MEM910 help1011 Command DB queries shared memory by key string for shared system1112 resources. Platform drivers that require to set state of a shared
+29-6
drivers/soc/renesas/rcar-sysc.c
···194194195195static bool has_cpg_mstp;196196197197-static void __init rcar_sysc_pd_setup(struct rcar_sysc_pd *pd)197197+static int __init rcar_sysc_pd_setup(struct rcar_sysc_pd *pd)198198{199199 struct generic_pm_domain *genpd = &pd->genpd;200200 const char *name = pd->genpd.name;201201 struct dev_power_governor *gov = &simple_qos_governor;202202+ int error;202203203204 if (pd->flags & PD_CPU) {204205 /*···252251 rcar_sysc_power_up(&pd->ch);253252254253finalize:255255- pm_genpd_init(genpd, gov, false);254254+ error = pm_genpd_init(genpd, gov, false);255255+ if (error)256256+ pr_err("Failed to init PM domain %s: %d\n", name, error);257257+258258+ return error;256259}257260258261static const struct of_device_id rcar_sysc_matches[] __initconst = {···380375 pr_debug("%pOF: syscier = 0x%08x\n", np, syscier);381376 iowrite32(syscier, base + SYSCIER);382377378378+ /*379379+ * First, create all PM domains380380+ */383381 for (i = 0; i < info->num_areas; i++) {384382 const struct rcar_sysc_area *area = &info->areas[i];385383 struct rcar_sysc_pd *pd;···405397 pd->ch.isr_bit = area->isr_bit;406398 pd->flags = area->flags;407399408408- rcar_sysc_pd_setup(pd);409409- if (area->parent >= 0)410410- pm_genpd_add_subdomain(domains->domains[area->parent],411411- &pd->genpd);400400+ error = rcar_sysc_pd_setup(pd);401401+ if (error)402402+ goto out_put;412403413404 domains->domains[area->isr_bit] = &pd->genpd;405405+ }406406+407407+ /*408408+ * Second, link all PM domains to their parents409409+ */410410+ for (i = 0; i < info->num_areas; i++) {411411+ const struct rcar_sysc_area *area = &info->areas[i];412412+413413+ if (!area->name || area->parent < 0)414414+ continue;415415+416416+ error = pm_genpd_add_subdomain(domains->domains[area->parent],417417+ domains->domains[area->isr_bit]);418418+ if (error)419419+ pr_warn("Failed to add PM subdomain %s to parent %u\n",420420+ area->name, area->parent);414421 }415422416423 error = of_genpd_add_provider_onecell(np, &domains->onecell_data);
+1-1
drivers/staging/android/ion/ion_heap.c
···3030 struct page **tmp = pages;31313232 if (!pages)3333- return NULL;3333+ return ERR_PTR(-ENOMEM);34343535 if (buffer->flags & ION_FLAG_CACHED)3636 pgprot = PAGE_KERNEL;
+1-1
drivers/staging/comedi/drivers/quatech_daqp_cs.c
···642642 /* Make sure D/A update mode is direct update */643643 outb(0, dev->iobase + DAQP_AUX_REG);644644645645- for (i = 0; i > insn->n; i++) {645645+ for (i = 0; i < insn->n; i++) {646646 unsigned int val = data[i];647647 int ret;648648
+36-8
drivers/target/target_core_user.c
···656656}657657658658static void gather_data_area(struct tcmu_dev *udev, struct tcmu_cmd *cmd,659659- bool bidi)659659+ bool bidi, uint32_t read_len)660660{661661 struct se_cmd *se_cmd = cmd->se_cmd;662662 int i, dbi;···689689 for_each_sg(data_sg, sg, data_nents, i) {690690 int sg_remaining = sg->length;691691 to = kmap_atomic(sg_page(sg)) + sg->offset;692692- while (sg_remaining > 0) {692692+ while (sg_remaining > 0 && read_len > 0) {693693 if (block_remaining == 0) {694694 if (from)695695 kunmap_atomic(from);···701701 }702702 copy_bytes = min_t(size_t, sg_remaining,703703 block_remaining);704704+ if (read_len < copy_bytes)705705+ copy_bytes = read_len;704706 offset = DATA_BLOCK_SIZE - block_remaining;705707 tcmu_flush_dcache_range(from, copy_bytes);706708 memcpy(to + sg->length - sg_remaining, from + offset,···710708711709 sg_remaining -= copy_bytes;712710 block_remaining -= copy_bytes;711711+ read_len -= copy_bytes;713712 }714713 kunmap_atomic(to - sg->offset);714714+ if (read_len == 0)715715+ break;715716 }716717 if (from)717718 kunmap_atomic(from);···10471042{10481043 struct se_cmd *se_cmd = cmd->se_cmd;10491044 struct tcmu_dev *udev = cmd->tcmu_dev;10451045+ bool read_len_valid = false;10461046+ uint32_t read_len = se_cmd->data_length;1050104710511048 /*10521049 * cmd has been completed already from timeout, just reclaim···10631056 pr_warn("TCMU: Userspace set UNKNOWN_OP flag on se_cmd %p\n",10641057 cmd->se_cmd);10651058 entry->rsp.scsi_status = SAM_STAT_CHECK_CONDITION;10661066- } else if (entry->rsp.scsi_status == SAM_STAT_CHECK_CONDITION) {10591059+ goto done;10601060+ }10611061+10621062+ if (se_cmd->data_direction == DMA_FROM_DEVICE &&10631063+ (entry->hdr.uflags & TCMU_UFLAG_READ_LEN) && entry->rsp.read_len) {10641064+ read_len_valid = true;10651065+ if (entry->rsp.read_len < read_len)10661066+ read_len = entry->rsp.read_len;10671067+ }10681068+10691069+ if (entry->rsp.scsi_status == SAM_STAT_CHECK_CONDITION) {10671070 transport_copy_sense_to_cmd(se_cmd, entry->rsp.sense_buffer);10681068- } else if (se_cmd->se_cmd_flags & SCF_BIDI) {10711071+ if (!read_len_valid )10721072+ goto done;10731073+ else10741074+ se_cmd->se_cmd_flags |= SCF_TREAT_READ_AS_NORMAL;10751075+ }10761076+ if (se_cmd->se_cmd_flags & SCF_BIDI) {10691077 /* Get Data-In buffer before clean up */10701070- gather_data_area(udev, cmd, true);10781078+ gather_data_area(udev, cmd, true, read_len);10711079 } else if (se_cmd->data_direction == DMA_FROM_DEVICE) {10721072- gather_data_area(udev, cmd, false);10801080+ gather_data_area(udev, cmd, false, read_len);10731081 } else if (se_cmd->data_direction == DMA_TO_DEVICE) {10741082 /* TODO: */10751083 } else if (se_cmd->data_direction != DMA_NONE) {···10921070 se_cmd->data_direction);10931071 }1094107210951095- target_complete_cmd(cmd->se_cmd, entry->rsp.scsi_status);10731073+done:10741074+ if (read_len_valid) {10751075+ pr_debug("read_len = %d\n", read_len);10761076+ target_complete_cmd_with_length(cmd->se_cmd,10771077+ entry->rsp.scsi_status, read_len);10781078+ } else10791079+ target_complete_cmd(cmd->se_cmd, entry->rsp.scsi_status);1096108010971081out:10981082 cmd->se_cmd = NULL;···17681740 /* Initialise the mailbox of the ring buffer */17691741 mb = udev->mb_addr;17701742 mb->version = TCMU_MAILBOX_VERSION;17711771- mb->flags = TCMU_MAILBOX_FLAG_CAP_OOOC;17431743+ mb->flags = TCMU_MAILBOX_FLAG_CAP_OOOC | TCMU_MAILBOX_FLAG_CAP_READ_LEN;17721744 mb->cmdr_off = CMDR_OFF;17731745 mb->cmdr_size = udev->cmdr_size;17741746
+32-23
drivers/tty/n_tty.c
···124124 struct mutex output_lock;125125};126126127127+#define MASK(x) ((x) & (N_TTY_BUF_SIZE - 1))128128+127129static inline size_t read_cnt(struct n_tty_data *ldata)128130{129131 return ldata->read_head - ldata->read_tail;···143141144142static inline unsigned char echo_buf(struct n_tty_data *ldata, size_t i)145143{144144+ smp_rmb(); /* Matches smp_wmb() in add_echo_byte(). */146145 return ldata->echo_buf[i & (N_TTY_BUF_SIZE - 1)];147146}148147···319316static void reset_buffer_flags(struct n_tty_data *ldata)320317{321318 ldata->read_head = ldata->canon_head = ldata->read_tail = 0;322322- ldata->echo_head = ldata->echo_tail = ldata->echo_commit = 0;323319 ldata->commit_head = 0;324324- ldata->echo_mark = 0;325320 ldata->line_start = 0;326321327322 ldata->erasing = 0;···618617 old_space = space = tty_write_room(tty);619618620619 tail = ldata->echo_tail;621621- while (ldata->echo_commit != tail) {620620+ while (MASK(ldata->echo_commit) != MASK(tail)) {622621 c = echo_buf(ldata, tail);623622 if (c == ECHO_OP_START) {624623 unsigned char op;625624 int no_space_left = 0;626625626626+ /*627627+ * Since add_echo_byte() is called without holding628628+ * output_lock, we might see only portion of multi-byte629629+ * operation.630630+ */631631+ if (MASK(ldata->echo_commit) == MASK(tail + 1))632632+ goto not_yet_stored;627633 /*628634 * If the buffer byte is the start of a multi-byte629635 * operation, get the next byte, which is either the···642634 unsigned int num_chars, num_bs;643635644636 case ECHO_OP_ERASE_TAB:637637+ if (MASK(ldata->echo_commit) == MASK(tail + 2))638638+ goto not_yet_stored;645639 num_chars = echo_buf(ldata, tail + 2);646640647641 /*···738728 /* If the echo buffer is nearly full (so that the possibility exists739729 * of echo overrun before the next commit), then discard enough740730 * data at the tail to prevent a subsequent overrun */741741- while (ldata->echo_commit - tail >= ECHO_DISCARD_WATERMARK) {731731+ while (ldata->echo_commit > tail &&732732+ ldata->echo_commit - tail >= ECHO_DISCARD_WATERMARK) {742733 if (echo_buf(ldata, tail) == ECHO_OP_START) {743734 if (echo_buf(ldata, tail + 1) == ECHO_OP_ERASE_TAB)744735 tail += 3;···749738 tail++;750739 }751740741741+ not_yet_stored:752742 ldata->echo_tail = tail;753743 return old_space - space;754744}···760748 size_t nr, old, echoed;761749 size_t head;762750751751+ mutex_lock(&ldata->output_lock);763752 head = ldata->echo_head;764753 ldata->echo_mark = head;765754 old = ldata->echo_commit - ldata->echo_tail;···769756 * is over the threshold (and try again each time another770757 * block is accumulated) */771758 nr = head - ldata->echo_tail;772772- if (nr < ECHO_COMMIT_WATERMARK || (nr % ECHO_BLOCK > old % ECHO_BLOCK))759759+ if (nr < ECHO_COMMIT_WATERMARK ||760760+ (nr % ECHO_BLOCK > old % ECHO_BLOCK)) {761761+ mutex_unlock(&ldata->output_lock);773762 return;763763+ }774764775775- mutex_lock(&ldata->output_lock);776765 ldata->echo_commit = head;777766 echoed = __process_echoes(tty);778767 mutex_unlock(&ldata->output_lock);···825810826811static inline void add_echo_byte(unsigned char c, struct n_tty_data *ldata)827812{828828- *echo_buf_addr(ldata, ldata->echo_head++) = c;813813+ *echo_buf_addr(ldata, ldata->echo_head) = c;814814+ smp_wmb(); /* Matches smp_rmb() in echo_buf(). */815815+ ldata->echo_head++;829816}830817831818/**···995978 }996979997980 seen_alnums = 0;998998- while (ldata->read_head != ldata->canon_head) {981981+ while (MASK(ldata->read_head) != MASK(ldata->canon_head)) {999982 head = ldata->read_head;10009831001984 /* erase a single possibly multibyte character */1002985 do {1003986 head--;1004987 c = read_buf(ldata, head);10051005- } while (is_continuation(c, tty) && head != ldata->canon_head);988988+ } while (is_continuation(c, tty) &&989989+ MASK(head) != MASK(ldata->canon_head));10069901007991 /* do not partially erase */1008992 if (is_continuation(c, tty))···10451027 * This info is used to go back the correct10461028 * number of columns.10471029 */10481048- while (tail != ldata->canon_head) {10301030+ while (MASK(tail) != MASK(ldata->canon_head)) {10491031 tail--;10501032 c = read_buf(ldata, tail);10511033 if (c == '\t') {···13201302 finish_erasing(ldata);13211303 echo_char(c, tty);13221304 echo_char_raw('\n', ldata);13231323- while (tail != ldata->read_head) {13051305+ while (MASK(tail) != MASK(ldata->read_head)) {13241306 echo_char(read_buf(ldata, tail), tty);13251307 tail++;13261308 }···18961878 struct n_tty_data *ldata;1897187918981880 /* Currently a malloc failure here can panic */18991899- ldata = vmalloc(sizeof(*ldata));18811881+ ldata = vzalloc(sizeof(*ldata));19001882 if (!ldata)19011901- goto err;18831883+ return -ENOMEM;1902188419031885 ldata->overrun_time = jiffies;19041886 mutex_init(&ldata->atomic_read_lock);19051887 mutex_init(&ldata->output_lock);1906188819071889 tty->disc_data = ldata;19081908- reset_buffer_flags(tty->disc_data);19091909- ldata->column = 0;19101910- ldata->canon_column = 0;19111911- ldata->num_overrun = 0;19121912- ldata->no_room = 0;19131913- ldata->lnext = 0;19141890 tty->closing = 0;19151891 /* indicate buffer work may resume */19161892 clear_bit(TTY_LDISC_HALTED, &tty->flags);19171893 n_tty_set_termios(tty, NULL);19181894 tty_unthrottle(tty);19191919-19201895 return 0;19211921-err:19221922- return -ENOMEM;19231896}1924189719251898static inline int input_available_p(struct tty_struct *tty, int poll)···24202411 tail = ldata->read_tail;24212412 nr = head - tail;24222413 /* Skip EOF-chars.. */24232423- while (head != tail) {24142414+ while (MASK(head) != MASK(tail)) {24242415 if (test_bit(tail & (N_TTY_BUF_SIZE - 1), ldata->read_flags) &&24252416 read_buf(ldata, tail) == __DISABLED_CHAR)24262417 nr--;
···17581758 { USB_DEVICE(0x11ca, 0x0201), /* VeriFone Mx870 Gadget Serial */17591759 .driver_info = SINGLE_RX_URB,17601760 },17611761+ { USB_DEVICE(0x1965, 0x0018), /* Uniden UBC125XLT */17621762+ .driver_info = NO_UNION_NORMAL, /* has no union descriptor */17631763+ },17611764 { USB_DEVICE(0x22b8, 0x7000), /* Motorola Q Phone */17621765 .driver_info = NO_UNION_NORMAL, /* has no union descriptor */17631766 },
+3
drivers/usb/dwc2/core.h
···10041004 * @frame_list_sz: Frame list size10051005 * @desc_gen_cache: Kmem cache for generic descriptors10061006 * @desc_hsisoc_cache: Kmem cache for hs isochronous descriptors10071007+ * @unaligned_cache: Kmem cache for DMA mode to handle non-aligned buf10071008 *10081009 * These are for peripheral mode:10091010 *···11781177 u32 frame_list_sz;11791178 struct kmem_cache *desc_gen_cache;11801179 struct kmem_cache *desc_hsisoc_cache;11801180+ struct kmem_cache *unaligned_cache;11811181+#define DWC2_KMEM_UNALIGNED_BUF_SIZE 10241181118211821183#endif /* CONFIG_USB_DWC2_HOST || CONFIG_USB_DWC2_DUAL_ROLE */11831184
+12-8
drivers/usb/dwc2/gadget.c
···812812 u32 index;813813 u32 maxsize = 0;814814 u32 mask = 0;815815+ u8 pid = 0;815816816817 maxsize = dwc2_gadget_get_desc_params(hs_ep, &mask);817818···841840 ((len << DEV_DMA_NBYTES_SHIFT) & mask));842841843842 if (hs_ep->dir_in) {844844- desc->status |= ((hs_ep->mc << DEV_DMA_ISOC_PID_SHIFT) &843843+ if (len)844844+ pid = DIV_ROUND_UP(len, hs_ep->ep.maxpacket);845845+ else846846+ pid = 1;847847+ desc->status |= ((pid << DEV_DMA_ISOC_PID_SHIFT) &845848 DEV_DMA_ISOC_PID_MASK) |846849 ((len % hs_ep->ep.maxpacket) ?847850 DEV_DMA_SHORT : 0) |···889884 struct dwc2_dma_desc *desc;890885891886 if (list_empty(&hs_ep->queue)) {887887+ hs_ep->target_frame = TARGET_FRAME_INITIAL;892888 dev_dbg(hsotg->dev, "%s: No requests in queue\n", __func__);893889 return;894890 }···27612755 */27622756 tmp = dwc2_hsotg_read_frameno(hsotg);2763275727642764- dwc2_hsotg_complete_request(hsotg, ep, get_ep_head(ep), 0);27652765-27662758 if (using_desc_dma(hsotg)) {27672759 if (ep->target_frame == TARGET_FRAME_INITIAL) {27682760 /* Start first ISO Out */···2821281728222818 tmp = dwc2_hsotg_read_frameno(hsotg);28232819 if (using_desc_dma(hsotg)) {28242824- dwc2_hsotg_complete_request(hsotg, hs_ep,28252825- get_ep_head(hs_ep), 0);28262826-28272820 hs_ep->target_frame = tmp;28282821 dwc2_gadget_incr_frame_num(hs_ep);28292822 dwc2_gadget_start_isoc_ddma(hs_ep);···47404739 }4741474047424741 ret = usb_add_gadget_udc(dev, &hsotg->gadget);47434743- if (ret)47424742+ if (ret) {47434743+ dwc2_hsotg_ep_free_request(&hsotg->eps_out[0]->ep,47444744+ hsotg->ctrl_req);47444745 return ret;47454745-47464746+ }47464747 dwc2_hsotg_dump(hsotg);4747474847484749 return 0;···47584755int dwc2_hsotg_remove(struct dwc2_hsotg *hsotg)47594756{47604757 usb_del_gadget_udc(&hsotg->gadget);47584758+ dwc2_hsotg_ep_free_request(&hsotg->eps_out[0]->ep, hsotg->ctrl_req);4761475947624760 return 0;47634761}
+87-6
drivers/usb/dwc2/hcd.c
···15671567 }1568156815691569 if (hsotg->params.host_dma) {15701570- dwc2_writel((u32)chan->xfer_dma,15711571- hsotg->regs + HCDMA(chan->hc_num));15701570+ dma_addr_t dma_addr;15711571+15721572+ if (chan->align_buf) {15731573+ if (dbg_hc(chan))15741574+ dev_vdbg(hsotg->dev, "align_buf\n");15751575+ dma_addr = chan->align_buf;15761576+ } else {15771577+ dma_addr = chan->xfer_dma;15781578+ }15791579+ dwc2_writel((u32)dma_addr, hsotg->regs + HCDMA(chan->hc_num));15801580+15721581 if (dbg_hc(chan))15731582 dev_vdbg(hsotg->dev, "Wrote %08lx to HCDMA(%d)\n",15741574- (unsigned long)chan->xfer_dma, chan->hc_num);15831583+ (unsigned long)dma_addr, chan->hc_num);15751584 }1576158515771586 /* Start the split */···26342625 }26352626}2636262726282628+static int dwc2_alloc_split_dma_aligned_buf(struct dwc2_hsotg *hsotg,26292629+ struct dwc2_qh *qh,26302630+ struct dwc2_host_chan *chan)26312631+{26322632+ if (!hsotg->unaligned_cache ||26332633+ chan->max_packet > DWC2_KMEM_UNALIGNED_BUF_SIZE)26342634+ return -ENOMEM;26352635+26362636+ if (!qh->dw_align_buf) {26372637+ qh->dw_align_buf = kmem_cache_alloc(hsotg->unaligned_cache,26382638+ GFP_ATOMIC | GFP_DMA);26392639+ if (!qh->dw_align_buf)26402640+ return -ENOMEM;26412641+ }26422642+26432643+ qh->dw_align_buf_dma = dma_map_single(hsotg->dev, qh->dw_align_buf,26442644+ DWC2_KMEM_UNALIGNED_BUF_SIZE,26452645+ DMA_FROM_DEVICE);26462646+26472647+ if (dma_mapping_error(hsotg->dev, qh->dw_align_buf_dma)) {26482648+ dev_err(hsotg->dev, "can't map align_buf\n");26492649+ chan->align_buf = 0;26502650+ return -EINVAL;26512651+ }26522652+26532653+ chan->align_buf = qh->dw_align_buf_dma;26542654+ return 0;26552655+}26562656+26372657#define DWC2_USB_DMA_ALIGN 42638265826392659struct dma_aligned_buffer {···2839280128402802 /* Set the transfer attributes */28412803 dwc2_hc_init_xfer(hsotg, chan, qtd);28042804+28052805+ /* For non-dword aligned buffers */28062806+ if (hsotg->params.host_dma && qh->do_split &&28072807+ chan->ep_is_in && (chan->xfer_dma & 0x3)) {28082808+ dev_vdbg(hsotg->dev, "Non-aligned buffer\n");28092809+ if (dwc2_alloc_split_dma_aligned_buf(hsotg, qh, chan)) {28102810+ dev_err(hsotg->dev,28112811+ "Failed to allocate memory to handle non-aligned buffer\n");28122812+ /* Add channel back to free list */28132813+ chan->align_buf = 0;28142814+ chan->multi_count = 0;28152815+ list_add_tail(&chan->hc_list_entry,28162816+ &hsotg->free_hc_list);28172817+ qtd->in_process = 0;28182818+ qh->channel = NULL;28192819+ return -ENOMEM;28202820+ }28212821+ } else {28222822+ /*28232823+ * We assume that DMA is always aligned in non-split28242824+ * case or split out case. Warn if not.28252825+ */28262826+ WARN_ON_ONCE(hsotg->params.host_dma &&28272827+ (chan->xfer_dma & 0x3));28282828+ chan->align_buf = 0;28292829+ }2842283028432831 if (chan->ep_type == USB_ENDPOINT_XFER_INT ||28442832 chan->ep_type == USB_ENDPOINT_XFER_ISOC)···53105246 }53115247 }5312524852495249+ if (hsotg->params.host_dma) {52505250+ /*52515251+ * Create kmem caches to handle non-aligned buffer52525252+ * in Buffer DMA mode.52535253+ */52545254+ hsotg->unaligned_cache = kmem_cache_create("dwc2-unaligned-dma",52555255+ DWC2_KMEM_UNALIGNED_BUF_SIZE, 4,52565256+ SLAB_CACHE_DMA, NULL);52575257+ if (!hsotg->unaligned_cache)52585258+ dev_err(hsotg->dev,52595259+ "unable to create dwc2 unaligned cache\n");52605260+ }52615261+53135262 hsotg->otg_port = 1;53145263 hsotg->frame_list = NULL;53155264 hsotg->frame_list_dma = 0;···53575280 return 0;5358528153595282error4:53605360- kmem_cache_destroy(hsotg->desc_gen_cache);52835283+ kmem_cache_destroy(hsotg->unaligned_cache);53615284 kmem_cache_destroy(hsotg->desc_hsisoc_cache);52855285+ kmem_cache_destroy(hsotg->desc_gen_cache);53625286error3:53635287 dwc2_hcd_release(hsotg);53645288error2:···54005322 usb_remove_hcd(hcd);54015323 hsotg->priv = NULL;5402532454035403- kmem_cache_destroy(hsotg->desc_gen_cache);53255325+ kmem_cache_destroy(hsotg->unaligned_cache);54045326 kmem_cache_destroy(hsotg->desc_hsisoc_cache);53275327+ kmem_cache_destroy(hsotg->desc_gen_cache);5405532854065329 dwc2_hcd_release(hsotg);54075330 usb_put_hcd(hcd);···55145435 dwc2_writel(hprt0, hsotg->regs + HPRT0);5515543655165437 /* Wait for the HPRT0.PrtSusp register field to be set */55175517- if (dwc2_hsotg_wait_bit_set(hsotg, HPRT0, HPRT0_SUSP, 300))54385438+ if (dwc2_hsotg_wait_bit_set(hsotg, HPRT0, HPRT0_SUSP, 3000))55185439 dev_warn(hsotg->dev, "Suspend wasn't generated\n");5519544055205441 /*···56945615 __func__);56955616 return ret;56965617 }56185618+56195619+ dwc2_hcd_rem_wakeup(hsotg);5697562056985621 hsotg->hibernated = 0;56995622 hsotg->bus_suspended = 0;
+8
drivers/usb/dwc2/hcd.h
···7676 * (micro)frame7777 * @xfer_buf: Pointer to current transfer buffer position7878 * @xfer_dma: DMA address of xfer_buf7979+ * @align_buf: In Buffer DMA mode this will be used if xfer_buf is not8080+ * DWORD aligned7981 * @xfer_len: Total number of bytes to transfer8082 * @xfer_count: Number of bytes transferred so far8183 * @start_pkt_count: Packet count at start of transfer···135133136134 u8 *xfer_buf;137135 dma_addr_t xfer_dma;136136+ dma_addr_t align_buf;138137 u32 xfer_len;139138 u32 xfer_count;140139 u16 start_pkt_count;···305302 * speed. Note that this is in "schedule slice" which306303 * is tightly packed.307304 * @ntd: Actual number of transfer descriptors in a list305305+ * @dw_align_buf: Used instead of original buffer if its physical address306306+ * is not dword-aligned307307+ * @dw_align_buf_dma: DMA address for dw_align_buf308308 * @qtd_list: List of QTDs for this QH309309 * @channel: Host channel currently processing transfers for this QH310310 * @qh_list_entry: Entry for QH in either the periodic or non-periodic···356350 struct dwc2_hs_transfer_time hs_transfers[DWC2_HS_SCHEDULE_UFRAMES];357351 u32 ls_start_schedule_slice;358352 u16 ntd;353353+ u8 *dw_align_buf;354354+ dma_addr_t dw_align_buf_dma;359355 struct list_head qtd_list;360356 struct dwc2_host_chan *channel;361357 struct list_head qh_list_entry;
···383383 /* Get the map and adjust if this is a multi_tt hub */384384 map = qh->dwc_tt->periodic_bitmaps;385385 if (qh->dwc_tt->usb_tt->multi)386386- map += DWC2_ELEMENTS_PER_LS_BITMAP * qh->ttport;386386+ map += DWC2_ELEMENTS_PER_LS_BITMAP * (qh->ttport - 1);387387388388 return map;389389}···1696169616971697 if (qh->desc_list)16981698 dwc2_hcd_qh_free_ddma(hsotg, qh);16991699+ else if (hsotg->unaligned_cache && qh->dw_align_buf)17001700+ kmem_cache_free(hsotg->unaligned_cache, qh->dw_align_buf);17011701+16991702 kfree(qh);17001703}17011704
+13-10
drivers/usb/dwc3/core.c
···12721272 if (!dwc->clks)12731273 return -ENOMEM;1274127412751275- dwc->num_clks = ARRAY_SIZE(dwc3_core_clks);12761275 dwc->dev = dev;1277127612781277 res = platform_get_resource(pdev, IORESOURCE_MEM, 0);···13061307 if (IS_ERR(dwc->reset))13071308 return PTR_ERR(dwc->reset);1308130913091309- ret = clk_bulk_get(dev, dwc->num_clks, dwc->clks);13101310- if (ret == -EPROBE_DEFER)13111311- return ret;13121312- /*13131313- * Clocks are optional, but new DT platforms should support all clocks13141314- * as required by the DT-binding.13151315- */13161316- if (ret)13171317- dwc->num_clks = 0;13101310+ if (dev->of_node) {13111311+ dwc->num_clks = ARRAY_SIZE(dwc3_core_clks);13121312+13131313+ ret = clk_bulk_get(dev, dwc->num_clks, dwc->clks);13141314+ if (ret == -EPROBE_DEFER)13151315+ return ret;13161316+ /*13171317+ * Clocks are optional, but new DT platforms should support all13181318+ * clocks as required by the DT-binding.13191319+ */13201320+ if (ret)13211321+ dwc->num_clks = 0;13221322+ }1318132313191324 ret = reset_control_deassert(dwc->reset);13201325 if (ret)
···886886887887 dev = xhci->devs[slot_id];888888889889- trace_xhci_free_virt_device(dev);890890-891889 xhci->dcbaa->dev_context_ptrs[slot_id] = 0;892890 if (!dev)893891 return;892892+893893+ trace_xhci_free_virt_device(dev);894894895895 if (dev->tt_info)896896 old_active_eps = dev->tt_info->active_eps;
+3-3
drivers/usb/host/xhci-tegra.c
···481481 unsigned long mask;482482 unsigned int port;483483 bool idle, enable;484484- int err;484484+ int err = 0;485485486486 memset(&rsp, 0, sizeof(rsp));487487···12231223 pm_runtime_disable(&pdev->dev);12241224 usb_put_hcd(tegra->hcd);12251225disable_xusbc:12261226- if (!&pdev->dev.pm_domain)12261226+ if (!pdev->dev.pm_domain)12271227 tegra_powergate_power_off(TEGRA_POWERGATE_XUSBC);12281228disable_xusba:12291229- if (!&pdev->dev.pm_domain)12291229+ if (!pdev->dev.pm_domain)12301230 tegra_powergate_power_off(TEGRA_POWERGATE_XUSBA);12311231put_padctl:12321232 tegra_xusb_padctl_put(tegra->padctl);
···908908 spin_unlock_irqrestore(&xhci->lock, flags);909909}910910911911+static bool xhci_pending_portevent(struct xhci_hcd *xhci)912912+{913913+ struct xhci_port **ports;914914+ int port_index;915915+ u32 status;916916+ u32 portsc;917917+918918+ status = readl(&xhci->op_regs->status);919919+ if (status & STS_EINT)920920+ return true;921921+ /*922922+ * Checking STS_EINT is not enough as there is a lag between a change923923+ * bit being set and the Port Status Change Event that it generated924924+ * being written to the Event Ring. See note in xhci 1.1 section 4.19.2.925925+ */926926+927927+ port_index = xhci->usb2_rhub.num_ports;928928+ ports = xhci->usb2_rhub.ports;929929+ while (port_index--) {930930+ portsc = readl(ports[port_index]->addr);931931+ if (portsc & PORT_CHANGE_MASK ||932932+ (portsc & PORT_PLS_MASK) == XDEV_RESUME)933933+ return true;934934+ }935935+ port_index = xhci->usb3_rhub.num_ports;936936+ ports = xhci->usb3_rhub.ports;937937+ while (port_index--) {938938+ portsc = readl(ports[port_index]->addr);939939+ if (portsc & PORT_CHANGE_MASK ||940940+ (portsc & PORT_PLS_MASK) == XDEV_RESUME)941941+ return true;942942+ }943943+ return false;944944+}945945+911946/*912947 * Stop HC (not bus-specific)913948 *···10441009 */10451010int xhci_resume(struct xhci_hcd *xhci, bool hibernated)10461011{10471047- u32 command, temp = 0, status;10121012+ u32 command, temp = 0;10481013 struct usb_hcd *hcd = xhci_to_hcd(xhci);10491014 struct usb_hcd *secondary_hcd;10501015 int retval = 0;···10781043 command = readl(&xhci->op_regs->command);10791044 command |= CMD_CRS;10801045 writel(command, &xhci->op_regs->command);10461046+ /*10471047+ * Some controllers take up to 55+ ms to complete the controller10481048+ * restore so setting the timeout to 100ms. Xhci specification10491049+ * doesn't mention any timeout value.10501050+ */10811051 if (xhci_handshake(&xhci->op_regs->status,10821082- STS_RESTORE, 0, 10 * 1000)) {10521052+ STS_RESTORE, 0, 100 * 1000)) {10831053 xhci_warn(xhci, "WARN: xHC restore state timeout\n");10841054 spin_unlock_irq(&xhci->lock);10851055 return -ETIMEDOUT;···11741134 done:11751135 if (retval == 0) {11761136 /* Resume root hubs only when have pending events. */11771177- status = readl(&xhci->op_regs->status);11781178- if (status & STS_EINT) {11371137+ if (xhci_pending_portevent(xhci)) {11791138 usb_hcd_resume_root_hub(xhci->shared_hcd);11801139 usb_hcd_resume_root_hub(hcd);11811140 }
+4
drivers/usb/host/xhci.h
···382382#define PORT_PLC (1 << 22)383383/* port configure error change - port failed to configure its link partner */384384#define PORT_CEC (1 << 23)385385+#define PORT_CHANGE_MASK (PORT_CSC | PORT_PEC | PORT_WRC | PORT_OCC | \386386+ PORT_RC | PORT_PLC | PORT_CEC)387387+388388+385389/* Cold Attach Status - xHC can set this bit to report device attached during386390 * Sx state. Warm port reset should be perfomed to clear this bit and move port387391 * to connected state.
···350350 }351351352352 if (con->status.change & UCSI_CONSTAT_CONNECT_CHANGE) {353353+ typec_set_pwr_role(con->port, con->status.pwr_dir);354354+355355+ switch (con->status.partner_type) {356356+ case UCSI_CONSTAT_PARTNER_TYPE_UFP:357357+ typec_set_data_role(con->port, TYPEC_HOST);358358+ break;359359+ case UCSI_CONSTAT_PARTNER_TYPE_DFP:360360+ typec_set_data_role(con->port, TYPEC_DEVICE);361361+ break;362362+ default:363363+ break;364364+ }365365+353366 if (con->status.connected)354367 ucsi_register_partner(con);355368 else
+5
drivers/usb/typec/ucsi/ucsi_acpi.c
···7979 return -ENODEV;8080 }81818282+ /* This will make sure we can use ioremap_nocache() */8383+ status = acpi_release_memory(ACPI_HANDLE(&pdev->dev), res, 1);8484+ if (ACPI_FAILURE(status))8585+ return -ENOMEM;8686+8287 /*8388 * NOTE: The memory region for the data structures is used also in an8489 * operation region, which means ACPI has already reserved it. Therefore
···26802680 free_extent_buffer(scratch_leaf);26812681 }2682268226832683- if (done && !ret)26832683+ if (done && !ret) {26842684 ret = 1;26852685+ fs_info->qgroup_rescan_progress.objectid = (u64)-1;26862686+ }26852687 return ret;26862688}26872689···2786278427872785 if (!init_flags) {27882786 /* we're resuming qgroup rescan at mount time */27892789- if (!(fs_info->qgroup_flags & BTRFS_QGROUP_STATUS_FLAG_RESCAN))27872787+ if (!(fs_info->qgroup_flags &27882788+ BTRFS_QGROUP_STATUS_FLAG_RESCAN)) {27902789 btrfs_warn(fs_info,27912790 "qgroup rescan init failed, qgroup is not enabled");27922792- else if (!(fs_info->qgroup_flags & BTRFS_QGROUP_STATUS_FLAG_ON))27912791+ ret = -EINVAL;27922792+ } else if (!(fs_info->qgroup_flags &27932793+ BTRFS_QGROUP_STATUS_FLAG_ON)) {27932794 btrfs_warn(fs_info,27942795 "qgroup rescan init failed, qgroup rescan is not queued");27952795- return -EINVAL;27962796+ ret = -EINVAL;27972797+ }27982798+27992799+ if (ret)28002800+ return ret;27962801 }2797280227982803 mutex_lock(&fs_info->qgroup_rescan_lock);
+1
fs/ceph/inode.c
···11351135 if (IS_ERR(realdn)) {11361136 pr_err("splice_dentry error %ld %p inode %p ino %llx.%llx\n",11371137 PTR_ERR(realdn), dn, in, ceph_vinop(in));11381138+ dput(dn);11381139 dn = realdn; /* note realdn contains the error */11391140 goto out;11401141 } else if (realdn) {
···157157 error = xfs_mod_fdblocks(pag->pag_mount, oldresv, true);158158 resv->ar_reserved = 0;159159 resv->ar_asked = 0;160160+ resv->ar_orig_reserved = 0;160161161162 if (error)162163 trace_xfs_ag_resv_free_error(pag->pag_mount, pag->pag_agno,···190189 struct xfs_mount *mp = pag->pag_mount;191190 struct xfs_ag_resv *resv;192191 int error;193193- xfs_extlen_t reserved;192192+ xfs_extlen_t hidden_space;194193195194 if (used > ask)196195 ask = used;197197- reserved = ask - used;198196199199- error = xfs_mod_fdblocks(mp, -(int64_t)reserved, true);197197+ switch (type) {198198+ case XFS_AG_RESV_RMAPBT:199199+ /*200200+ * Space taken by the rmapbt is not subtracted from fdblocks201201+ * because the rmapbt lives in the free space. Here we must202202+ * subtract the entire reservation from fdblocks so that we203203+ * always have blocks available for rmapbt expansion.204204+ */205205+ hidden_space = ask;206206+ break;207207+ case XFS_AG_RESV_METADATA:208208+ /*209209+ * Space taken by all other metadata btrees are accounted210210+ * on-disk as used space. We therefore only hide the space211211+ * that is reserved but not used by the trees.212212+ */213213+ hidden_space = ask - used;214214+ break;215215+ default:216216+ ASSERT(0);217217+ return -EINVAL;218218+ }219219+ error = xfs_mod_fdblocks(mp, -(int64_t)hidden_space, true);200220 if (error) {201221 trace_xfs_ag_resv_init_error(pag->pag_mount, pag->pag_agno,202222 error, _RET_IP_);···238216239217 resv = xfs_perag_resv(pag, type);240218 resv->ar_asked = ask;241241- resv->ar_reserved = resv->ar_orig_reserved = reserved;219219+ resv->ar_orig_reserved = hidden_space;220220+ resv->ar_reserved = ask - used;242221243222 trace_xfs_ag_resv_init(pag, type, ask);244223 return 0;
+26
fs/xfs/libxfs/xfs_bmap.c
···57805780 return error;57815781}5782578257835783+/* Make sure we won't be right-shifting an extent past the maximum bound. */57845784+int57855785+xfs_bmap_can_insert_extents(57865786+ struct xfs_inode *ip,57875787+ xfs_fileoff_t off,57885788+ xfs_fileoff_t shift)57895789+{57905790+ struct xfs_bmbt_irec got;57915791+ int is_empty;57925792+ int error = 0;57935793+57945794+ ASSERT(xfs_isilocked(ip, XFS_IOLOCK_EXCL));57955795+57965796+ if (XFS_FORCED_SHUTDOWN(ip->i_mount))57975797+ return -EIO;57985798+57995799+ xfs_ilock(ip, XFS_ILOCK_EXCL);58005800+ error = xfs_bmap_last_extent(NULL, ip, XFS_DATA_FORK, &got, &is_empty);58015801+ if (!error && !is_empty && got.br_startoff >= off &&58025802+ ((got.br_startoff + shift) & BMBT_STARTOFF_MASK) < got.br_startoff)58035803+ error = -EINVAL;58045804+ xfs_iunlock(ip, XFS_ILOCK_EXCL);58055805+58065806+ return error;58075807+}58085808+57835809int57845810xfs_bmap_insert_extents(57855811 struct xfs_trans *tp,
···374374 }375375}376376377377+static xfs_failaddr_t378378+xfs_dinode_verify_fork(379379+ struct xfs_dinode *dip,380380+ struct xfs_mount *mp,381381+ int whichfork)382382+{383383+ uint32_t di_nextents = XFS_DFORK_NEXTENTS(dip, whichfork);384384+385385+ switch (XFS_DFORK_FORMAT(dip, whichfork)) {386386+ case XFS_DINODE_FMT_LOCAL:387387+ /*388388+ * no local regular files yet389389+ */390390+ if (whichfork == XFS_DATA_FORK) {391391+ if (S_ISREG(be16_to_cpu(dip->di_mode)))392392+ return __this_address;393393+ if (be64_to_cpu(dip->di_size) >394394+ XFS_DFORK_SIZE(dip, mp, whichfork))395395+ return __this_address;396396+ }397397+ if (di_nextents)398398+ return __this_address;399399+ break;400400+ case XFS_DINODE_FMT_EXTENTS:401401+ if (di_nextents > XFS_DFORK_MAXEXT(dip, mp, whichfork))402402+ return __this_address;403403+ break;404404+ case XFS_DINODE_FMT_BTREE:405405+ if (whichfork == XFS_ATTR_FORK) {406406+ if (di_nextents > MAXAEXTNUM)407407+ return __this_address;408408+ } else if (di_nextents > MAXEXTNUM) {409409+ return __this_address;410410+ }411411+ break;412412+ default:413413+ return __this_address;414414+ }415415+ return NULL;416416+}417417+377418xfs_failaddr_t378419xfs_dinode_verify(379420 struct xfs_mount *mp,···482441 case S_IFREG:483442 case S_IFLNK:484443 case S_IFDIR:485485- switch (dip->di_format) {486486- case XFS_DINODE_FMT_LOCAL:487487- /*488488- * no local regular files yet489489- */490490- if (S_ISREG(mode))491491- return __this_address;492492- if (di_size > XFS_DFORK_DSIZE(dip, mp))493493- return __this_address;494494- if (dip->di_nextents)495495- return __this_address;496496- /* fall through */497497- case XFS_DINODE_FMT_EXTENTS:498498- case XFS_DINODE_FMT_BTREE:499499- break;500500- default:501501- return __this_address;502502- }444444+ fa = xfs_dinode_verify_fork(dip, mp, XFS_DATA_FORK);445445+ if (fa)446446+ return fa;503447 break;504448 case 0:505449 /* Uninitialized inode ok. */···494468 }495469496470 if (XFS_DFORK_Q(dip)) {497497- switch (dip->di_aformat) {498498- case XFS_DINODE_FMT_LOCAL:499499- if (dip->di_anextents)500500- return __this_address;501501- /* fall through */502502- case XFS_DINODE_FMT_EXTENTS:503503- case XFS_DINODE_FMT_BTREE:504504- break;505505- default:506506- return __this_address;507507- }471471+ fa = xfs_dinode_verify_fork(dip, mp, XFS_ATTR_FORK);472472+ if (fa)473473+ return fa;508474 } else {509475 /*510476 * If there is no fork offset, this may be a freshly-made inode
+2-2
fs/xfs/libxfs/xfs_rtbitmap.c
···10291029 if (low_rec->ar_startext >= mp->m_sb.sb_rextents ||10301030 low_rec->ar_startext == high_rec->ar_startext)10311031 return 0;10321032- if (high_rec->ar_startext >= mp->m_sb.sb_rextents)10331033- high_rec->ar_startext = mp->m_sb.sb_rextents - 1;10321032+ if (high_rec->ar_startext > mp->m_sb.sb_rextents)10331033+ high_rec->ar_startext = mp->m_sb.sb_rextents;1034103410351035 /* Iterate the bitmap, looking for discrepancies. */10361036 rtstart = low_rec->ar_startext;
+56-58
fs/xfs/xfs_bmap_util.c
···685685}686686687687/*688688- * dead simple method of punching delalyed allocation blocks from a range in689689- * the inode. Walks a block at a time so will be slow, but is only executed in690690- * rare error cases so the overhead is not critical. This will always punch out691691- * both the start and end blocks, even if the ranges only partially overlap692692- * them, so it is up to the caller to ensure that partial blocks are not693693- * passed in.688688+ * Dead simple method of punching delalyed allocation blocks from a range in689689+ * the inode. This will always punch out both the start and end blocks, even690690+ * if the ranges only partially overlap them, so it is up to the caller to691691+ * ensure that partial blocks are not passed in.694692 */695693int696694xfs_bmap_punch_delalloc_range(···696698 xfs_fileoff_t start_fsb,697699 xfs_fileoff_t length)698700{699699- xfs_fileoff_t remaining = length;701701+ struct xfs_ifork *ifp = &ip->i_df;702702+ xfs_fileoff_t end_fsb = start_fsb + length;703703+ struct xfs_bmbt_irec got, del;704704+ struct xfs_iext_cursor icur;700705 int error = 0;701706702707 ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL));703708704704- do {705705- int done;706706- xfs_bmbt_irec_t imap;707707- int nimaps = 1;708708- xfs_fsblock_t firstblock;709709- struct xfs_defer_ops dfops;710710-711711- /*712712- * Map the range first and check that it is a delalloc extent713713- * before trying to unmap the range. Otherwise we will be714714- * trying to remove a real extent (which requires a715715- * transaction) or a hole, which is probably a bad idea...716716- */717717- error = xfs_bmapi_read(ip, start_fsb, 1, &imap, &nimaps,718718- XFS_BMAPI_ENTIRE);719719-720720- if (error) {721721- /* something screwed, just bail */722722- if (!XFS_FORCED_SHUTDOWN(ip->i_mount)) {723723- xfs_alert(ip->i_mount,724724- "Failed delalloc mapping lookup ino %lld fsb %lld.",725725- ip->i_ino, start_fsb);726726- }727727- break;728728- }729729- if (!nimaps) {730730- /* nothing there */731731- goto next_block;732732- }733733- if (imap.br_startblock != DELAYSTARTBLOCK) {734734- /* been converted, ignore */735735- goto next_block;736736- }737737- WARN_ON(imap.br_blockcount == 0);738738-739739- /*740740- * Note: while we initialise the firstblock/dfops pair, they741741- * should never be used because blocks should never be742742- * allocated or freed for a delalloc extent and hence we need743743- * don't cancel or finish them after the xfs_bunmapi() call.744744- */745745- xfs_defer_init(&dfops, &firstblock);746746- error = xfs_bunmapi(NULL, ip, start_fsb, 1, 0, 1, &firstblock,747747- &dfops, &done);709709+ if (!(ifp->if_flags & XFS_IFEXTENTS)) {710710+ error = xfs_iread_extents(NULL, ip, XFS_DATA_FORK);748711 if (error)749749- break;712712+ return error;713713+ }750714751751- ASSERT(!xfs_defer_has_unfinished_work(&dfops));752752-next_block:753753- start_fsb++;754754- remaining--;755755- } while(remaining > 0);715715+ if (!xfs_iext_lookup_extent_before(ip, ifp, &end_fsb, &icur, &got))716716+ return 0;717717+718718+ while (got.br_startoff + got.br_blockcount > start_fsb) {719719+ del = got;720720+ xfs_trim_extent(&del, start_fsb, length);721721+722722+ /*723723+ * A delete can push the cursor forward. Step back to the724724+ * previous extent on non-delalloc or extents outside the725725+ * target range.726726+ */727727+ if (!del.br_blockcount ||728728+ !isnullstartblock(del.br_startblock)) {729729+ if (!xfs_iext_prev_extent(ifp, &icur, &got))730730+ break;731731+ continue;732732+ }733733+734734+ error = xfs_bmap_del_extent_delay(ip, XFS_DATA_FORK, &icur,735735+ &got, &del);736736+ if (error || !xfs_iext_get_extent(ifp, &icur, &got))737737+ break;738738+ }756739757740 return error;758741}···11871208 return 0;11881209 if (offset + len > XFS_ISIZE(ip))11891210 len = XFS_ISIZE(ip) - offset;11901190- return iomap_zero_range(VFS_I(ip), offset, len, NULL, &xfs_iomap_ops);12111211+ error = iomap_zero_range(VFS_I(ip), offset, len, NULL, &xfs_iomap_ops);12121212+ if (error)12131213+ return error;12141214+12151215+ /*12161216+ * If we zeroed right up to EOF and EOF straddles a page boundary we12171217+ * must make sure that the post-EOF area is also zeroed because the12181218+ * page could be mmap'd and iomap_zero_range doesn't do that for us.12191219+ * Writeback of the eof page will do this, albeit clumsily.12201220+ */12211221+ if (offset + len >= XFS_ISIZE(ip) && ((offset + len) & PAGE_MASK)) {12221222+ error = filemap_write_and_wait_range(VFS_I(ip)->i_mapping,12231223+ (offset + len) & ~PAGE_MASK, LLONG_MAX);12241224+ }12251225+12261226+ return error;11911227}1192122811931229/*···13971403 ASSERT(xfs_isilocked(ip, XFS_MMAPLOCK_EXCL));1398140413991405 trace_xfs_insert_file_space(ip);14061406+14071407+ error = xfs_bmap_can_insert_extents(ip, stop_fsb, shift_fsb);14081408+ if (error)14091409+ return error;1400141014011411 error = xfs_prepare_shift(ip, offset);14021412 if (error)
···387387 do {388388 free = percpu_counter_sum(&mp->m_fdblocks) -389389 mp->m_alloc_set_aside;390390- if (!free)390390+ if (free <= 0)391391 break;392392393393 delta = request - mp->m_resblks;
+21-36
fs/xfs/xfs_inode.c
···32363236 struct xfs_inode *cip;32373237 int nr_found;32383238 int clcount = 0;32393239- int bufwasdelwri;32403239 int i;3241324032423241 pag = xfs_perag_get(mp, XFS_INO_TO_AGNO(mp, ip->i_ino));···33593360 * inode buffer and shut down the filesystem.33603361 */33613362 rcu_read_unlock();33623362- /*33633363- * Clean up the buffer. If it was delwri, just release it --33643364- * brelse can handle it with no problems. If not, shut down the33653365- * filesystem before releasing the buffer.33663366- */33673367- bufwasdelwri = (bp->b_flags & _XBF_DELWRI_Q);33683368- if (bufwasdelwri)33693369- xfs_buf_relse(bp);33703370-33713363 xfs_force_shutdown(mp, SHUTDOWN_CORRUPT_INCORE);3372336433733373- if (!bufwasdelwri) {33743374- /*33753375- * Just like incore_relse: if we have b_iodone functions,33763376- * mark the buffer as an error and call them. Otherwise33773377- * mark it as stale and brelse.33783378- */33793379- if (bp->b_iodone) {33803380- bp->b_flags &= ~XBF_DONE;33813381- xfs_buf_stale(bp);33823382- xfs_buf_ioerror(bp, -EIO);33833383- xfs_buf_ioend(bp);33843384- } else {33853385- xfs_buf_stale(bp);33863386- xfs_buf_relse(bp);33873387- }33883388- }33893389-33903365 /*33913391- * Unlocks the flush lock33663366+ * We'll always have an inode attached to the buffer for completion33673367+ * process by the time we are called from xfs_iflush(). Hence we have33683368+ * always need to do IO completion processing to abort the inodes33693369+ * attached to the buffer. handle them just like the shutdown case in33703370+ * xfs_buf_submit().33923371 */33723372+ ASSERT(bp->b_iodone);33733373+ bp->b_flags &= ~XBF_DONE;33743374+ xfs_buf_stale(bp);33753375+ xfs_buf_ioerror(bp, -EIO);33763376+ xfs_buf_ioend(bp);33773377+33783378+ /* abort the corrupt inode, as it was not attached to the buffer */33933379 xfs_iflush_abort(cip, false);33943380 kmem_free(cilist);33953381 xfs_perag_put(pag);···34703486 xfs_log_force(mp, 0);3471348734723488 /*34733473- * inode clustering:34743474- * see if other inodes can be gathered into this write34893489+ * inode clustering: try to gather other inodes into this write34903490+ *34913491+ * Note: Any error during clustering will result in the filesystem34923492+ * being shut down and completion callbacks run on the cluster buffer.34933493+ * As we have already flushed and attached this inode to the buffer,34943494+ * it has already been aborted and released by xfs_iflush_cluster() and34953495+ * so we have no further error handling to do here.34753496 */34763497 error = xfs_iflush_cluster(ip, bp);34773498 if (error)34783478- goto cluster_corrupt_out;34993499+ return error;3479350034803501 *bpp = bp;34813502 return 0;···34893500 if (bp)34903501 xfs_buf_relse(bp);34913502 xfs_force_shutdown(mp, SHUTDOWN_CORRUPT_INCORE);34923492-cluster_corrupt_out:34933493- error = -EFSCORRUPTED;34943503abort_out:34953495- /*34963496- * Unlocks the flush lock34973497- */35043504+ /* abort the corrupt inode, as it was not attached to the buffer */34983505 xfs_iflush_abort(ip, false);34993506 return error;35003507}
+14-1
fs/xfs/xfs_iomap.c
···963963 unsigned *lockmode)964964{965965 unsigned mode = XFS_ILOCK_SHARED;966966+ bool is_write = flags & (IOMAP_WRITE | IOMAP_ZERO);966967967968 /*968969 * COW writes may allocate delalloc space or convert unwritten COW969970 * extents, so we need to make sure to take the lock exclusively here.970971 */971971- if (xfs_is_reflink_inode(ip) && (flags & (IOMAP_WRITE | IOMAP_ZERO))) {972972+ if (xfs_is_reflink_inode(ip) && is_write) {972973 /*973974 * FIXME: It could still overwrite on unshared extents and not974975 * need allocation.···990989 mode = XFS_ILOCK_EXCL;991990 }992991992992+relock:993993 if (flags & IOMAP_NOWAIT) {994994 if (!xfs_ilock_nowait(ip, mode))995995 return -EAGAIN;996996 } else {997997 xfs_ilock(ip, mode);998998+ }999999+10001000+ /*10011001+ * The reflink iflag could have changed since the earlier unlocked10021002+ * check, so if we got ILOCK_SHARED for a write and but we're now a10031003+ * reflink inode we have to switch to ILOCK_EXCL and relock.10041004+ */10051005+ if (mode == XFS_ILOCK_SHARED && is_write && xfs_is_reflink_inode(ip)) {10061006+ xfs_iunlock(ip, mode);10071007+ mode = XFS_ILOCK_EXCL;10081008+ goto relock;9981009 }999101010001011 *lockmode = mode;
+6-1
fs/xfs/xfs_trans.c
···258258 if (!(flags & XFS_TRANS_NO_WRITECOUNT))259259 sb_start_intwrite(mp->m_super);260260261261- WARN_ON(mp->m_super->s_writers.frozen == SB_FREEZE_COMPLETE);261261+ /*262262+ * Zero-reservation ("empty") transactions can't modify anything, so263263+ * they're allowed to run while we're frozen.264264+ */265265+ WARN_ON(resp->tr_logres > 0 &&266266+ mp->m_super->s_writers.frozen == SB_FREEZE_COMPLETE);262267 atomic_inc(&mp->m_active_trans);263268264269 tp = kmem_zone_zalloc(xfs_trans_zone,
+2-1
include/crypto/if_alg.h
···245245 int offset, size_t size, int flags);246246void af_alg_free_resources(struct af_alg_async_req *areq);247247void af_alg_async_cb(struct crypto_async_request *_req, int err);248248-__poll_t af_alg_poll_mask(struct socket *sock, __poll_t events);248248+__poll_t af_alg_poll(struct file *file, struct socket *sock,249249+ poll_table *wait);249250struct af_alg_async_req *af_alg_alloc_areq(struct sock *sk,250251 unsigned int areqlen);251252int af_alg_get_rsgl(struct sock *sk, struct msghdr *msg, int flags,
···472472struct bpf_binary_header {473473 u16 pages;474474 u16 locked:1;475475- u8 image[];475475+476476+ /* Some arches need word alignment for their instructions */477477+ u8 image[] __aligned(4);476478};477479478480struct bpf_prog {
···10511051 depends on HAVE_LD_DEAD_CODE_DATA_ELIMINATION10521052 depends on EXPERT10531053 help10541054- Select this if the architecture wants to do dead code and10551055- data elimination with the linker by compiling with10561056- -ffunction-sections -fdata-sections, and linking with10571057- --gc-sections.10541054+ Enable this if you want to do dead code and data elimination with10551055+ the linker by compiling with -ffunction-sections -fdata-sections,10561056+ and linking with --gc-sections.1058105710591058 This can reduce on disk and in-memory size of the kernel10601059 code and static data, particularly for small configs and
···260260{261261 int err;262262263263- /*264264- * Make sure crng is ready. Otherwise we get "(ptrval)" instead265265- * of a hashed address when printing '%p' in plain_hash() and266266- * plain_format().267267- */268268- wait_for_random_bytes();269269-270263 err = plain_hash();271264 if (err) {272265 pr_warn("plain 'p' does not appear to be hashed\n");
···316316 int flags, int *addr_len);317317void dccp_shutdown(struct sock *sk, int how);318318int inet_dccp_listen(struct socket *sock, int backlog);319319-__poll_t dccp_poll_mask(struct socket *sock, __poll_t events);319319+__poll_t dccp_poll(struct file *file, struct socket *sock,320320+ poll_table *wait);320321int dccp_v4_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len);321322void dccp_req_err(struct sock *sk, u64 seq);322323
+1-1
net/dccp/ipv4.c
···984984 .accept = inet_accept,985985 .getname = inet_getname,986986 /* FIXME: work on tcp_poll to rename it to inet_csk_poll */987987- .poll_mask = dccp_poll_mask,987987+ .poll = dccp_poll,988988 .ioctl = inet_ioctl,989989 /* FIXME: work on inet_listen to rename it to sock_common_listen */990990 .listen = inet_dccp_listen,
···312312313313EXPORT_SYMBOL_GPL(dccp_disconnect);314314315315-__poll_t dccp_poll_mask(struct socket *sock, __poll_t events)315315+/*316316+ * Wait for a DCCP event.317317+ *318318+ * Note that we don't need to lock the socket, as the upper poll layers319319+ * take care of normal races (between the test and the event) and we don't320320+ * go look at any of the socket buffers directly.321321+ */322322+__poll_t dccp_poll(struct file *file, struct socket *sock,323323+ poll_table *wait)316324{317325 __poll_t mask;318326 struct sock *sk = sock->sk;319327328328+ sock_poll_wait(file, sk_sleep(sk), wait);320329 if (sk->sk_state == DCCP_LISTEN)321330 return inet_csk_listen_poll(sk);322331···367358 return mask;368359}369360370370-EXPORT_SYMBOL_GPL(dccp_poll_mask);361361+EXPORT_SYMBOL_GPL(dccp_poll);371362372363int dccp_ioctl(struct sock *sk, int cmd, unsigned long arg)373364{
···494494}495495496496/*497497- * Socket is not locked. We are protected from async events by poll logic and498498- * correct handling of state changes made by other threads is impossible in499499- * any case.497497+ * Wait for a TCP event.498498+ *499499+ * Note that we don't need to lock the socket, as the upper poll layers500500+ * take care of normal races (between the test and the event) and we don't501501+ * go look at any of the socket buffers directly.500502 */501501-__poll_t tcp_poll_mask(struct socket *sock, __poll_t events)503503+__poll_t tcp_poll(struct file *file, struct socket *sock, poll_table *wait)502504{505505+ __poll_t mask;503506 struct sock *sk = sock->sk;504507 const struct tcp_sock *tp = tcp_sk(sk);505505- __poll_t mask = 0;506508 int state;509509+510510+ sock_poll_wait(file, sk_sleep(sk), wait);507511508512 state = inet_sk_state_load(sk);509513 if (state == TCP_LISTEN)510514 return inet_csk_listen_poll(sk);515515+516516+ /* Socket is not locked. We are protected from async events517517+ * by poll logic and correct handling of state changes518518+ * made by other threads is impossible in any case.519519+ */520520+521521+ mask = 0;511522512523 /*513524 * EPOLLHUP is certainly not done right. But poll() doesn't···600589601590 return mask;602591}603603-EXPORT_SYMBOL(tcp_poll_mask);592592+EXPORT_SYMBOL(tcp_poll);604593605594int tcp_ioctl(struct sock *sk, int cmd, unsigned long arg)606595{
+5-5
net/ipv4/udp.c
···25912591 * udp_poll - wait for a UDP event.25922592 * @file - file struct25932593 * @sock - socket25942594- * @events - events to wait for25942594+ * @wait - poll table25952595 *25962596 * This is same as datagram poll, except for the special case of25972597 * blocking sockets. If application is using a blocking fd···26002600 * but then block when reading it. Add special case code26012601 * to work around these arguably broken applications.26022602 */26032603-__poll_t udp_poll_mask(struct socket *sock, __poll_t events)26032603+__poll_t udp_poll(struct file *file, struct socket *sock, poll_table *wait)26042604{26052605- __poll_t mask = datagram_poll_mask(sock, events);26052605+ __poll_t mask = datagram_poll(file, sock, wait);26062606 struct sock *sk = sock->sk;2607260726082608 if (!skb_queue_empty(&udp_sk(sk)->reader_queue))26092609 mask |= EPOLLIN | EPOLLRDNORM;2610261026112611 /* Check for false positives due to checksum errors */26122612- if ((mask & EPOLLRDNORM) && !(sock->file->f_flags & O_NONBLOCK) &&26122612+ if ((mask & EPOLLRDNORM) && !(file->f_flags & O_NONBLOCK) &&26132613 !(sk->sk_shutdown & RCV_SHUTDOWN) && first_packet_length(sk) == -1)26142614 mask &= ~(EPOLLIN | EPOLLRDNORM);2615261526162616 return mask;2617261726182618}26192619-EXPORT_SYMBOL(udp_poll_mask);26192619+EXPORT_SYMBOL(udp_poll);2620262026212621int udp_abort(struct sock *sk, int err)26222622{
+2-2
net/ipv6/af_inet6.c
···570570 .socketpair = sock_no_socketpair, /* a do nothing */571571 .accept = inet_accept, /* ok */572572 .getname = inet6_getname,573573- .poll_mask = tcp_poll_mask, /* ok */573573+ .poll = tcp_poll, /* ok */574574 .ioctl = inet6_ioctl, /* must change */575575 .listen = inet_listen, /* ok */576576 .shutdown = inet_shutdown, /* ok */···603603 .socketpair = sock_no_socketpair, /* a do nothing */604604 .accept = sock_no_accept, /* a do nothing */605605 .getname = inet6_getname,606606- .poll_mask = udp_poll_mask, /* ok */606606+ .poll = udp_poll, /* ok */607607 .ioctl = inet6_ioctl, /* must change */608608 .listen = sock_no_listen, /* ok */609609 .shutdown = inet_shutdown, /* ok */
+6-3
net/ipv6/mcast.c
···20822082 mld_send_initial_cr(idev);20832083 idev->mc_dad_count--;20842084 if (idev->mc_dad_count)20852085- mld_dad_start_timer(idev, idev->mc_maxdelay);20852085+ mld_dad_start_timer(idev,20862086+ unsolicited_report_interval(idev));20862087 }20872088}20882089···20952094 if (idev->mc_dad_count) {20962095 idev->mc_dad_count--;20972096 if (idev->mc_dad_count)20982098- mld_dad_start_timer(idev, idev->mc_maxdelay);20972097+ mld_dad_start_timer(idev,20982098+ unsolicited_report_interval(idev));20992099 }21002100 in6_dev_put(idev);21012101}···24542452 if (idev->mc_ifc_count) {24552453 idev->mc_ifc_count--;24562454 if (idev->mc_ifc_count)24572457- mld_ifc_start_timer(idev, idev->mc_maxdelay);24552455+ mld_ifc_start_timer(idev,24562456+ unsolicited_report_interval(idev));24582457 }24592458 in6_dev_put(idev);24602459}
+2-2
net/ipv6/raw.c
···13341334}13351335#endif /* CONFIG_PROC_FS */1336133613371337-/* Same as inet6_dgram_ops, sans udp_poll_mask. */13371337+/* Same as inet6_dgram_ops, sans udp_poll. */13381338const struct proto_ops inet6_sockraw_ops = {13391339 .family = PF_INET6,13401340 .owner = THIS_MODULE,···13441344 .socketpair = sock_no_socketpair, /* a do nothing */13451345 .accept = sock_no_accept, /* a do nothing */13461346 .getname = inet6_getname,13471347- .poll_mask = datagram_poll_mask, /* ok */13471347+ .poll = datagram_poll, /* ok */13481348 .ioctl = inet6_ioctl, /* must change */13491349 .listen = sock_no_listen, /* ok */13501350 .shutdown = inet_shutdown, /* ok */
···13851385 if (next_time == 0 || next_time > q->root.cl_cfmin)13861386 next_time = q->root.cl_cfmin;13871387 }13881388- WARN_ON(next_time == 0);13891389- qdisc_watchdog_schedule(&q->watchdog, next_time);13881388+ if (next_time)13891389+ qdisc_watchdog_schedule(&q->watchdog, next_time);13901390}1391139113921392static int
+3-1
net/sctp/chunk.c
···237237 /* Account for a different sized first fragment */238238 if (msg_len >= first_len) {239239 msg->can_delay = 0;240240- SCTP_INC_STATS(sock_net(asoc->base.sk), SCTP_MIB_FRAGUSRMSGS);240240+ if (msg_len > first_len)241241+ SCTP_INC_STATS(sock_net(asoc->base.sk),242242+ SCTP_MIB_FRAGUSRMSGS);241243 } else {242244 /* Which may be the only one... */243245 first_len = msg_len;
···77177717 * here, again, by modeling the current TCP/UDP code. We don't have77187718 * a good way to test with it yet.77197719 */77207720-__poll_t sctp_poll_mask(struct socket *sock, __poll_t events)77207720+__poll_t sctp_poll(struct file *file, struct socket *sock, poll_table *wait)77217721{77227722 struct sock *sk = sock->sk;77237723 struct sctp_sock *sp = sctp_sk(sk);77247724 __poll_t mask;77257725+77267726+ poll_wait(file, sk_sleep(sk), wait);7725772777267728 sock_rps_record_flow(sk);77277729
···117117static int sock_mmap(struct file *file, struct vm_area_struct *vma);118118119119static int sock_close(struct inode *inode, struct file *file);120120-static struct wait_queue_head *sock_get_poll_head(struct file *file,121121- __poll_t events);122122-static __poll_t sock_poll_mask(struct file *file, __poll_t);123123-static __poll_t sock_poll(struct file *file, struct poll_table_struct *wait);120120+static __poll_t sock_poll(struct file *file,121121+ struct poll_table_struct *wait);124122static long sock_ioctl(struct file *file, unsigned int cmd, unsigned long arg);125123#ifdef CONFIG_COMPAT126124static long compat_sock_ioctl(struct file *file,···141143 .llseek = no_llseek,142144 .read_iter = sock_read_iter,143145 .write_iter = sock_write_iter,144144- .get_poll_head = sock_get_poll_head,145145- .poll_mask = sock_poll_mask,146146 .poll = sock_poll,147147 .unlocked_ioctl = sock_ioctl,148148#ifdef CONFIG_COMPAT···11261130}11271131EXPORT_SYMBOL(sock_create_lite);1128113211291129-static struct wait_queue_head *sock_get_poll_head(struct file *file,11301130- __poll_t events)11311131-{11321132- struct socket *sock = file->private_data;11331133-11341134- if (!sock->ops->poll_mask)11351135- return NULL;11361136- sock_poll_busy_loop(sock, events);11371137- return sk_sleep(sock->sk);11381138-}11391139-11401140-static __poll_t sock_poll_mask(struct file *file, __poll_t events)11411141-{11421142- struct socket *sock = file->private_data;11431143-11441144- /*11451145- * We need to be sure we are in sync with the socket flags modification.11461146- *11471147- * This memory barrier is paired in the wq_has_sleeper.11481148- */11491149- smp_mb();11501150-11511151- /* this socket can poll_ll so tell the system call */11521152- return sock->ops->poll_mask(sock, events) |11531153- (sk_can_busy_loop(sock->sk) ? POLL_BUSY_LOOP : 0);11541154-}11551155-11561133/* No kernel lock held - perfect */11571134static __poll_t sock_poll(struct file *file, poll_table *wait)11581135{11591136 struct socket *sock = file->private_data;11601160- __poll_t events = poll_requested_events(wait), mask = 0;11371137+ __poll_t events = poll_requested_events(wait);1161113811621162- if (sock->ops->poll) {11631163- sock_poll_busy_loop(sock, events);11641164- mask = sock->ops->poll(file, sock, wait);11651165- } else if (sock->ops->poll_mask) {11661166- sock_poll_wait(file, sock_get_poll_head(file, events), wait);11671167- mask = sock->ops->poll_mask(sock, events);11681168- }11691169-11701170- return mask | sock_poll_busy_flag(sock);11391139+ sock_poll_busy_loop(sock, events);11401140+ if (!sock->ops->poll)11411141+ return 0;11421142+ return sock->ops->poll(file, sock, wait) | sock_poll_busy_flag(sock);11711143}1172114411731145static int sock_mmap(struct file *file, struct vm_area_struct *vma)
+1-4
net/strparser/strparser.c
···392392/* Lower sock lock held */393393void strp_data_ready(struct strparser *strp)394394{395395- if (unlikely(strp->stopped))395395+ if (unlikely(strp->stopped) || strp->paused)396396 return;397397398398 /* This check is needed to synchronize with do_strp_work.···406406 queue_work(strp_wq, &strp->work);407407 return;408408 }409409-410410- if (strp->paused)411411- return;412409413410 if (strp->need_bytes) {414411 if (strp_peek_len(strp) < strp->need_bytes)
+9-5
net/tipc/socket.c
···692692}693693694694/**695695- * tipc_poll - read pollmask695695+ * tipc_poll - read and possibly block on pollmask696696 * @file: file structure associated with the socket697697 * @sock: socket for which to calculate the poll bits698698+ * @wait: ???698699 *699700 * Returns pollmask value700701 *···709708 * imply that the operation will succeed, merely that it should be performed710709 * and will not block.711710 */712712-static __poll_t tipc_poll_mask(struct socket *sock, __poll_t events)711711+static __poll_t tipc_poll(struct file *file, struct socket *sock,712712+ poll_table *wait)713713{714714 struct sock *sk = sock->sk;715715 struct tipc_sock *tsk = tipc_sk(sk);716716 __poll_t revents = 0;717717+718718+ sock_poll_wait(file, sk_sleep(sk), wait);717719718720 if (sk->sk_shutdown & RCV_SHUTDOWN)719721 revents |= EPOLLRDHUP | EPOLLIN | EPOLLRDNORM;···30373033 .socketpair = tipc_socketpair,30383034 .accept = sock_no_accept,30393035 .getname = tipc_getname,30403040- .poll_mask = tipc_poll_mask,30363036+ .poll = tipc_poll,30413037 .ioctl = tipc_ioctl,30423038 .listen = sock_no_listen,30433039 .shutdown = tipc_shutdown,···30583054 .socketpair = tipc_socketpair,30593055 .accept = tipc_accept,30603056 .getname = tipc_getname,30613061- .poll_mask = tipc_poll_mask,30573057+ .poll = tipc_poll,30623058 .ioctl = tipc_ioctl,30633059 .listen = tipc_listen,30643060 .shutdown = tipc_shutdown,···30793075 .socketpair = tipc_socketpair,30803076 .accept = tipc_accept,30813077 .getname = tipc_getname,30823082- .poll_mask = tipc_poll_mask,30783078+ .poll = tipc_poll,30833079 .ioctl = tipc_ioctl,30843080 .listen = tipc_listen,30853081 .shutdown = tipc_shutdown,
···26062606 "A patch subject line should describe the change not the tool that found it\n" . $herecurr);26072607 }2608260826092609-# Check for old stable address26102610- if ($line =~ /^\s*cc:\s*.*<?\bstable\@kernel\.org\b>?.*$/i) {26112611- ERROR("STABLE_ADDRESS",26122612- "The 'stable' address should be 'stable\@vger.kernel.org'\n" . $herecurr);26132613- }26142614-26152609# Check for unwanted Gerrit info26162610 if ($in_commit_log && $line =~ /^\s*change-id:/i) {26172611 ERROR("GERRIT_CHANGE_ID",
···171171 * config BAZ172172 * int "BAZ Value"173173 * range 1..255174174+ *175175+ * Please, also check zconf.y:print_symbol() when modifying the176176+ * list of property types!174177 */175178enum prop_type {176179 P_UNKNOWN,
+1-1
scripts/kconfig/preprocess.c
···156156 nread--;157157158158 /* remove trailing new lines */159159- while (buf[nread - 1] == '\n')159159+ while (nread > 0 && buf[nread - 1] == '\n')160160 nread--;161161162162 buf[nread] = 0;
+6-2
scripts/kconfig/zconf.y
···3131static struct menu *current_menu, *current_entry;32323333%}3434-%expect 323434+%expect 3135353636%union3737{···337337338338/* if entry */339339340340-if_entry: T_IF expr nl340340+if_entry: T_IF expr T_EOL341341{342342 printd(DEBUG_PARSE, "%s:%d:if\n", zconf_curname(), zconf_lineno());343343 menu_add_entry(NULL);···716716 fputs( " menu ", out);717717 print_quoted_string(out, prop->text);718718 fputc('\n', out);719719+ break;720720+ case P_SYMBOL:721721+ fputs( " symbol ", out);722722+ fprintf(out, "%s\n", prop->sym->name);719723 break;720724 default:721725 fprintf(out, " unknown prop %d!\n", prop->type);
+4-2
security/keys/dh.c
···142142 * The src pointer is defined as Z || other info where Z is the shared secret143143 * from DH and other info is an arbitrary string (see SP800-56A section144144 * 5.8.1.2).145145+ *146146+ * 'dlen' must be a multiple of the digest size.145147 */146148static int kdf_ctr(struct kdf_sdesc *sdesc, const u8 *src, unsigned int slen,147149 u8 *dst, unsigned int dlen, unsigned int zlen)···207205{208206 uint8_t *outbuf = NULL;209207 int ret;210210- size_t outbuf_len = round_up(buflen,211211- crypto_shash_digestsize(sdesc->shash.tfm));208208+ size_t outbuf_len = roundup(buflen,209209+ crypto_shash_digestsize(sdesc->shash.tfm));212210213211 outbuf = kmalloc(outbuf_len, GFP_KERNEL);214212 if (!outbuf) {
+33-45
security/selinux/selinuxfs.c
···441441static ssize_t sel_read_policy(struct file *filp, char __user *buf,442442 size_t count, loff_t *ppos)443443{444444- struct selinux_fs_info *fsi = file_inode(filp)->i_sb->s_fs_info;445444 struct policy_load_memory *plm = filp->private_data;446445 int ret;447447-448448- mutex_lock(&fsi->mutex);449446450447 ret = avc_has_perm(&selinux_state,451448 current_sid(), SECINITSID_SECURITY,452449 SECCLASS_SECURITY, SECURITY__READ_POLICY, NULL);453450 if (ret)454454- goto out;451451+ return ret;455452456456- ret = simple_read_from_buffer(buf, count, ppos, plm->data, plm->len);457457-out:458458- mutex_unlock(&fsi->mutex);459459- return ret;453453+ return simple_read_from_buffer(buf, count, ppos, plm->data, plm->len);460454}461455462456static vm_fault_t sel_mmap_policy_fault(struct vm_fault *vmf)···11821188 ret = -EINVAL;11831189 if (index >= fsi->bool_num || strcmp(name,11841190 fsi->bool_pending_names[index]))11851185- goto out;11911191+ goto out_unlock;1186119211871193 ret = -ENOMEM;11881194 page = (char *)get_zeroed_page(GFP_KERNEL);11891195 if (!page)11901190- goto out;11961196+ goto out_unlock;1191119711921198 cur_enforcing = security_get_bool_value(fsi->state, index);11931199 if (cur_enforcing < 0) {11941200 ret = cur_enforcing;11951195- goto out;12011201+ goto out_unlock;11961202 }11971203 length = scnprintf(page, PAGE_SIZE, "%d %d", cur_enforcing,11981204 fsi->bool_pending_values[index]);11991199- ret = simple_read_from_buffer(buf, count, ppos, page, length);12001200-out:12011205 mutex_unlock(&fsi->mutex);12061206+ ret = simple_read_from_buffer(buf, count, ppos, page, length);12071207+out_free:12021208 free_page((unsigned long)page);12031209 return ret;12101210+12111211+out_unlock:12121212+ mutex_unlock(&fsi->mutex);12131213+ goto out_free;12041214}1205121512061216static ssize_t sel_write_bool(struct file *filep, const char __user *buf,···12161218 int new_value;12171219 unsigned index = file_inode(filep)->i_ino & SEL_INO_MASK;12181220 const char *name = filep->f_path.dentry->d_name.name;12211221+12221222+ if (count >= PAGE_SIZE)12231223+ return -ENOMEM;12241224+12251225+ /* No partial writes. */12261226+ if (*ppos != 0)12271227+ return -EINVAL;12281228+12291229+ page = memdup_user_nul(buf, count);12301230+ if (IS_ERR(page))12311231+ return PTR_ERR(page);1219123212201233 mutex_lock(&fsi->mutex);12211234···12411232 if (index >= fsi->bool_num || strcmp(name,12421233 fsi->bool_pending_names[index]))12431234 goto out;12441244-12451245- length = -ENOMEM;12461246- if (count >= PAGE_SIZE)12471247- goto out;12481248-12491249- /* No partial writes. */12501250- length = -EINVAL;12511251- if (*ppos != 0)12521252- goto out;12531253-12541254- page = memdup_user_nul(buf, count);12551255- if (IS_ERR(page)) {12561256- length = PTR_ERR(page);12571257- page = NULL;12581258- goto out;12591259- }1260123512611236 length = -EINVAL;12621237 if (sscanf(page, "%d", &new_value) != 1)···12731280 ssize_t length;12741281 int new_value;1275128212831283+ if (count >= PAGE_SIZE)12841284+ return -ENOMEM;12851285+12861286+ /* No partial writes. */12871287+ if (*ppos != 0)12881288+ return -EINVAL;12891289+12901290+ page = memdup_user_nul(buf, count);12911291+ if (IS_ERR(page))12921292+ return PTR_ERR(page);12931293+12761294 mutex_lock(&fsi->mutex);1277129512781296 length = avc_has_perm(&selinux_state,···12921288 NULL);12931289 if (length)12941290 goto out;12951295-12961296- length = -ENOMEM;12971297- if (count >= PAGE_SIZE)12981298- goto out;12991299-13001300- /* No partial writes. */13011301- length = -EINVAL;13021302- if (*ppos != 0)13031303- goto out;13041304-13051305- page = memdup_user_nul(buf, count);13061306- if (IS_ERR(page)) {13071307- length = PTR_ERR(page);13081308- page = NULL;13091309- goto out;13101310- }1311129113121292 length = -EINVAL;13131293 if (sscanf(page, "%d", &new_value) != 1)
···258258 unsigned int power_save_node:1; /* advanced PM for each widget */259259 unsigned int auto_runtime_pm:1; /* enable automatic codec runtime pm */260260 unsigned int force_pin_prefix:1; /* Add location prefix */261261+ unsigned int link_down_at_suspend:1; /* link down at runtime suspend */261262#ifdef CONFIG_PM262263 unsigned long power_on_acct;263264 unsigned long power_off_acct;
+23-41
sound/pci/hda/patch_ca0132.c
···991991enum {992992 QUIRK_NONE,993993 QUIRK_ALIENWARE,994994+ QUIRK_ALIENWARE_M17XR4,994995 QUIRK_SBZ,995996 QUIRK_R3DI,996997};···10411040};1042104110431042static const struct snd_pci_quirk ca0132_quirks[] = {10431043+ SND_PCI_QUIRK(0x1028, 0x057b, "Alienware M17x R4", QUIRK_ALIENWARE_M17XR4),10441044 SND_PCI_QUIRK(0x1028, 0x0685, "Alienware 15 2015", QUIRK_ALIENWARE),10451045 SND_PCI_QUIRK(0x1028, 0x0688, "Alienware 17 2015", QUIRK_ALIENWARE),10461046 SND_PCI_QUIRK(0x1028, 0x0708, "Alienware 15 R2 2016", QUIRK_ALIENWARE),···56655663 * I think this has to do with the pin for rear surround being 0x11,56665664 * and the center/lfe being 0x10. Usually the pin order is the opposite.56675665 */56685668-const struct snd_pcm_chmap_elem ca0132_alt_chmaps[] = {56665666+static const struct snd_pcm_chmap_elem ca0132_alt_chmaps[] = {56695667 { .channels = 2,56705668 .map = { SNDRV_CHMAP_FL, SNDRV_CHMAP_FR } },56715669 { .channels = 4,···59685966 info->stream[SNDRV_PCM_STREAM_CAPTURE].nid = spec->adcs[0];5969596759705968 /* With the DSP enabled, desktops don't use this ADC. */59715971- if (spec->use_alt_functions) {59695969+ if (!spec->use_alt_functions) {59725970 info = snd_hda_codec_pcm_new(codec, "CA0132 Analog Mic-In2");59735971 if (!info)59745972 return -ENOMEM;···61326130 * Bit 6: set to select Data2, clear for Data161336131 * Bit 7: set to enable DMic, clear for AMic61346132 */61356135- val = 0x23;61336133+ if (spec->quirk == QUIRK_ALIENWARE_M17XR4)61346134+ val = 0x33;61356135+ else61366136+ val = 0x23;61366137 /* keep a copy of dmic ctl val for enable/disable dmic purpuse */61376138 spec->dmic_ctl = val;61386139 snd_hda_codec_write(codec, spec->input_pins[0], 0,···7228722372297224 snd_hda_sequence_write(codec, spec->base_init_verbs);7230722572317231- if (spec->quirk != QUIRK_NONE)72267226+ if (spec->use_alt_functions)72327227 ca0132_alt_init(codec);7233722872347229 ca0132_download_dsp(codec);···72427237 case QUIRK_R3DI:72437238 r3di_setup_defaults(codec);72447239 break;72457245- case QUIRK_NONE:72467246- case QUIRK_ALIENWARE:72407240+ case QUIRK_SBZ:72417241+ break;72427242+ default:72477243 ca0132_setup_defaults(codec);72487244 ca0132_init_analog_mic2(codec);72497245 ca0132_init_dmic(codec);···73497343static void ca0132_config(struct hda_codec *codec)73507344{73517345 struct ca0132_spec *spec = codec->spec;73527352- struct auto_pin_cfg *cfg = &spec->autocfg;7353734673547347 spec->dacs[0] = 0x2;73557348 spec->dacs[1] = 0x3;···74107405 /* SPDIF I/O */74117406 spec->dig_out = 0x05;74127407 spec->multiout.dig_out_nid = spec->dig_out;74137413- cfg->dig_out_pins[0] = 0x0c;74147414- cfg->dig_outs = 1;74157415- cfg->dig_out_type[0] = HDA_PCM_TYPE_SPDIF;74167408 spec->dig_in = 0x09;74177417- cfg->dig_in_pin = 0x0e;74187418- cfg->dig_in_type = HDA_PCM_TYPE_SPDIF;74197409 break;74207410 case QUIRK_R3DI:74217411 codec_dbg(codec, "%s: QUIRK_R3DI applied.\n", __func__);···74387438 /* SPDIF I/O */74397439 spec->dig_out = 0x05;74407440 spec->multiout.dig_out_nid = spec->dig_out;74417441- cfg->dig_out_pins[0] = 0x0c;74427442- cfg->dig_outs = 1;74437443- cfg->dig_out_type[0] = HDA_PCM_TYPE_SPDIF;74447441 break;74457442 default:74467443 spec->num_outputs = 2;···74607463 /* SPDIF I/O */74617464 spec->dig_out = 0x05;74627465 spec->multiout.dig_out_nid = spec->dig_out;74637463- cfg->dig_out_pins[0] = 0x0c;74647464- cfg->dig_outs = 1;74657465- cfg->dig_out_type[0] = HDA_PCM_TYPE_SPDIF;74667466 spec->dig_in = 0x09;74677467- cfg->dig_in_pin = 0x0e;74687468- cfg->dig_in_type = HDA_PCM_TYPE_SPDIF;74697467 break;74707468 }74717469}···74687476static int ca0132_prepare_verbs(struct hda_codec *codec)74697477{74707478/* Verbs + terminator (an empty element) */74717471-#define NUM_SPEC_VERBS 474797479+#define NUM_SPEC_VERBS 274727480 struct ca0132_spec *spec = codec->spec;7473748174747482 spec->chip_init_verbs = ca0132_init_verbs0;···74807488 if (!spec->spec_init_verbs)74817489 return -ENOMEM;7482749074837483- /* HP jack autodetection */74847484- spec->spec_init_verbs[0].nid = spec->unsol_tag_hp;74857485- spec->spec_init_verbs[0].param = AC_VERB_SET_UNSOLICITED_ENABLE;74867486- spec->spec_init_verbs[0].verb = AC_USRSP_EN | spec->unsol_tag_hp;74877487-74887488- /* MIC1 jack autodetection */74897489- spec->spec_init_verbs[1].nid = spec->unsol_tag_amic1;74907490- spec->spec_init_verbs[1].param = AC_VERB_SET_UNSOLICITED_ENABLE;74917491- spec->spec_init_verbs[1].verb = AC_USRSP_EN | spec->unsol_tag_amic1;74927492-74937491 /* config EAPD */74947494- spec->spec_init_verbs[2].nid = 0x0b;74957495- spec->spec_init_verbs[2].param = 0x78D;74967496- spec->spec_init_verbs[2].verb = 0x00;74927492+ spec->spec_init_verbs[0].nid = 0x0b;74937493+ spec->spec_init_verbs[0].param = 0x78D;74947494+ spec->spec_init_verbs[0].verb = 0x00;7497749574987496 /* Previously commented configuration */74997497 /*75007500- spec->spec_init_verbs[3].nid = 0x0b;75017501- spec->spec_init_verbs[3].param = AC_VERB_SET_EAPD_BTLENABLE;74987498+ spec->spec_init_verbs[2].nid = 0x0b;74997499+ spec->spec_init_verbs[2].param = AC_VERB_SET_EAPD_BTLENABLE;75007500+ spec->spec_init_verbs[2].verb = 0x02;75017501+75027502+ spec->spec_init_verbs[3].nid = 0x10;75037503+ spec->spec_init_verbs[3].param = 0x78D;75027504 spec->spec_init_verbs[3].verb = 0x02;7503750575047506 spec->spec_init_verbs[4].nid = 0x10;75057505- spec->spec_init_verbs[4].param = 0x78D;75077507+ spec->spec_init_verbs[4].param = AC_VERB_SET_EAPD_BTLENABLE;75067508 spec->spec_init_verbs[4].verb = 0x02;75077507-75087508- spec->spec_init_verbs[5].nid = 0x10;75097509- spec->spec_init_verbs[5].param = AC_VERB_SET_EAPD_BTLENABLE;75107510- spec->spec_init_verbs[5].verb = 0x02;75117509 */7512751075137511 /* Terminator: spec->spec_init_verbs[NUM_SPEC_VERBS-1] */
+5
sound/pci/hda/patch_hdmi.c
···3741374137423742 spec->chmap.channels_max = max(spec->chmap.channels_max, 8u);3743374337443744+ /* AMD GPUs have neither EPSS nor CLKSTOP bits, hence preventing37453745+ * the link-down as is. Tell the core to allow it.37463746+ */37473747+ codec->link_down_at_suspend = 1;37483748+37443749 return 0;37453750}37463751
···282282#define X86_FEATURE_AMD_IBPB (13*32+12) /* "" Indirect Branch Prediction Barrier */283283#define X86_FEATURE_AMD_IBRS (13*32+14) /* "" Indirect Branch Restricted Speculation */284284#define X86_FEATURE_AMD_STIBP (13*32+15) /* "" Single Thread Indirect Branch Predictors */285285+#define X86_FEATURE_AMD_SSBD (13*32+24) /* "" Speculative Store Bypass Disable */285286#define X86_FEATURE_VIRT_SSBD (13*32+25) /* Virtualized Speculative Store Bypass Disable */287287+#define X86_FEATURE_AMD_SSB_NO (13*32+26) /* "" Speculative Store Bypass is fixed in hardware. */286288287289/* Thermal and Power Management Leaf, CPUID level 0x00000006 (EAX), word 14 */288290#define X86_FEATURE_DTHERM (14*32+ 0) /* Digital Thermal Sensor */
+7
tools/include/uapi/drm/drm.h
···680680 */681681#define DRM_CLIENT_CAP_ATOMIC 3682682683683+/**684684+ * DRM_CLIENT_CAP_ASPECT_RATIO685685+ *686686+ * If set to 1, the DRM core will provide aspect ratio information in modes.687687+ */688688+#define DRM_CLIENT_CAP_ASPECT_RATIO 4689689+683690/** DRM_IOCTL_SET_CLIENT_CAP ioctl argument type */684691struct drm_set_client_cap {685692 __u64 capability;
+1-1
tools/include/uapi/linux/bpf.h
···26302630 union {26312631 /* inputs to lookup */26322632 __u8 tos; /* AF_INET */26332633- __be32 flowlabel; /* AF_INET6 */26332633+ __be32 flowinfo; /* AF_INET6, flow_label + priority */2634263426352635 /* output: metric of fib result (IPv4/IPv6 only) */26362636 __u32 rt_metric;
···341341330 common pkey_alloc __x64_sys_pkey_alloc342342331 common pkey_free __x64_sys_pkey_free343343332 common statx __x64_sys_statx344344+333 common io_pgetevents __x64_sys_io_pgetevents345345+334 common rseq __x64_sys_rseq344346345347#346348# x32-specific system call numbers start at 512 to avoid cache impact
···217217 }218218219219 /*220220- * All features are received, we can force the220220+ * (feat_id = HEADER_LAST_FEATURE) is the end marker which221221+ * means all features are received, now we can force the221222 * group if needed.222223 */223224 setup_forced_leader(rep, session->evlist);
+27-3
tools/perf/builtin-script.c
···18341834 struct perf_evlist *evlist;18351835 struct perf_evsel *evsel, *pos;18361836 int err;18371837+ static struct perf_evsel_script *es;1837183818381839 err = perf_event__process_attr(tool, event, pevlist);18391840 if (err)···1842184118431842 evlist = *pevlist;18441843 evsel = perf_evlist__last(*pevlist);18441844+18451845+ if (!evsel->priv) {18461846+ if (scr->per_event_dump) {18471847+ evsel->priv = perf_evsel_script__new(evsel,18481848+ scr->session->data);18491849+ } else {18501850+ es = zalloc(sizeof(*es));18511851+ if (!es)18521852+ return -ENOMEM;18531853+ es->fp = stdout;18541854+ evsel->priv = es;18551855+ }18561856+ }1845185718461858 if (evsel->attr.type >= PERF_TYPE_MAX &&18471859 evsel->attr.type != PERF_TYPE_SYNTH)···30443030 return set_maps(script);30453031}3046303230333033+static int process_feature_event(struct perf_tool *tool,30343034+ union perf_event *event,30353035+ struct perf_session *session)30363036+{30373037+ if (event->feat.feat_id < HEADER_LAST_FEATURE)30383038+ return perf_event__process_feature(tool, event, session);30393039+ return 0;30403040+}30413041+30473042#ifdef HAVE_AUXTRACE_SUPPORT30483043static int perf_script__process_auxtrace_info(struct perf_tool *tool,30493044 union perf_event *event,···30973074 .attr = process_attr,30983075 .event_update = perf_event__process_event_update,30993076 .tracing_data = perf_event__process_tracing_data,31003100- .feature = perf_event__process_feature,30773077+ .feature = process_feature_event,31013078 .build_id = perf_event__process_build_id,31023079 .id_index = perf_event__process_id_index,31033080 .auxtrace_info = perf_script__process_auxtrace_info,···31483125 "+field to add and -field to remove."31493126 "Valid types: hw,sw,trace,raw,synth. "31503127 "Fields: comm,tid,pid,time,cpu,event,trace,ip,sym,dso,"31513151- "addr,symoff,period,iregs,uregs,brstack,brstacksym,flags,"31523152- "bpf-output,callindent,insn,insnlen,brstackinsn,synth,phys_addr",31283128+ "addr,symoff,srcline,period,iregs,uregs,brstack,"31293129+ "brstacksym,flags,bpf-output,brstackinsn,brstackoff,"31303130+ "callindent,insn,insnlen,synth,phys_addr,metric,misc",31533131 parse_output_fields),31543132 OPT_BOOLEAN('a', "all-cpus", &system_wide,31553133 "system-wide collection from all CPUs"),
+20-5
tools/perf/tests/parse-events.c
···13091309 return 0;13101310}1311131113121312+static bool test__intel_pt_valid(void)13131313+{13141314+ return !!perf_pmu__find("intel_pt");13151315+}13161316+13121317static int test__intel_pt(struct perf_evlist *evlist)13131318{13141319 struct perf_evsel *evsel = perf_evlist__first(evlist);···13801375 const char *name;13811376 __u32 type;13821377 const int id;13781378+ bool (*valid)(void);13831379 int (*check)(struct perf_evlist *evlist);13841380};13851381···16541648 },16551649 {16561650 .name = "intel_pt//u",16511651+ .valid = test__intel_pt_valid,16571652 .check = test__intel_pt,16581653 .id = 52,16591654 },···1693168616941687static int test_event(struct evlist_test *e)16951688{16891689+ struct parse_events_error err = { .idx = 0, };16961690 struct perf_evlist *evlist;16971691 int ret;16921692+16931693+ if (e->valid && !e->valid()) {16941694+ pr_debug("... SKIP");16951695+ return 0;16961696+ }1698169716991698 evlist = perf_evlist__new();17001699 if (evlist == NULL)17011700 return -ENOMEM;1702170117031703- ret = parse_events(evlist, e->name, NULL);17021702+ ret = parse_events(evlist, e->name, &err);17041703 if (ret) {17051705- pr_debug("failed to parse event '%s', err %d\n",17061706- e->name, ret);17041704+ pr_debug("failed to parse event '%s', err %d, str '%s'\n",17051705+ e->name, ret, err.str);17061706+ parse_events_print_error(&err, e->name);17071707 } else {17081708 ret = e->check(evlist);17091709 }···17281714 for (i = 0; i < cnt; i++) {17291715 struct evlist_test *e = &events[i];1730171617311731- pr_debug("running test %d '%s'\n", e->id, e->name);17171717+ pr_debug("running test %d '%s'", e->id, e->name);17321718 ret1 = test_event(e);17331719 if (ret1)17341720 ret2 = ret1;17211721+ pr_debug("\n");17351722 }1736172317371724 return ret2;···18141799 }1815180018161801 while (!ret && (ent = readdir(dir))) {18171817- struct evlist_test e;18021802+ struct evlist_test e = { .id = 0, };18181803 char name[2 * NAME_MAX + 1 + 12 + 3];1819180418201805 /* Names containing . are special and cannot be used directly */
···146146 raw_svector_ostream ostream(*Buffer);147147148148 legacy::PassManager PM;149149- if (TargetMachine->addPassesToEmitFile(PM, ostream,150150- TargetMachine::CGFT_ObjectFile)) {149149+ bool NotAdded;150150+#if CLANG_VERSION_MAJOR < 7151151+ NotAdded = TargetMachine->addPassesToEmitFile(PM, ostream,152152+ TargetMachine::CGFT_ObjectFile);153153+#else154154+ NotAdded = TargetMachine->addPassesToEmitFile(PM, ostream, nullptr,155155+ TargetMachine::CGFT_ObjectFile);156156+#endif157157+ if (NotAdded) {151158 llvm::errs() << "TargetMachine can't emit a file of this type\n";152159 return std::unique_ptr<llvm::SmallVectorImpl<char>>(nullptr);;153160 }
+10-2
tools/perf/util/header.c
···21292129 int cpu_nr = ff->ph->env.nr_cpus_avail;21302130 u64 size = 0;21312131 struct perf_header *ph = ff->ph;21322132+ bool do_core_id_test = true;2132213321332134 ph->env.cpu = calloc(cpu_nr, sizeof(*ph->env.cpu));21342135 if (!ph->env.cpu)···21842183 return 0;21852184 }2186218521862186+ /* On s390 the socket_id number is not related to the numbers of cpus.21872187+ * The socket_id number might be higher than the numbers of cpus.21882188+ * This depends on the configuration.21892189+ */21902190+ if (ph->env.arch && !strncmp(ph->env.arch, "s390", 4))21912191+ do_core_id_test = false;21922192+21872193 for (i = 0; i < (u32)cpu_nr; i++) {21882194 if (do_read_u32(ff, &nr))21892195 goto free_cpu;···22002192 if (do_read_u32(ff, &nr))22012193 goto free_cpu;2202219422032203- if (nr != (u32)-1 && nr > (u32)cpu_nr) {21952195+ if (do_core_id_test && nr != (u32)-1 && nr > (u32)cpu_nr) {22042196 pr_debug("socket_id number is too big."22052197 "You may need to upgrade the perf tool.\n");22062198 goto free_cpu;···34643456 pr_warning("invalid record type %d in pipe-mode\n", type);34653457 return 0;34663458 }34673467- if (feat == HEADER_RESERVED || feat > HEADER_LAST_FEATURE) {34593459+ if (feat == HEADER_RESERVED || feat >= HEADER_LAST_FEATURE) {34683460 pr_warning("invalid record type %d in pipe-mode\n", type);34693461 return -1;34703462 }
···610610 */611611 for (int i = 0; i < NGREG; i++) {612612 greg_t req = requested_regs[i], res = resulting_regs[i];613613+613614 if (i == REG_TRAPNO || i == REG_IP)614615 continue; /* don't care */615615- if (i == REG_SP) {616616- printf("\tSP: %llx -> %llx\n", (unsigned long long)req,617617- (unsigned long long)res);618616617617+ if (i == REG_SP) {619618 /*620620- * In many circumstances, the high 32 bits of rsp621621- * are zeroed. For example, we could be a real622622- * 32-bit program, or we could hit any of a number623623- * of poorly-documented IRET or segmented ESP624624- * oddities. If this happens, it's okay.619619+ * If we were using a 16-bit stack segment, then620620+ * the kernel is a bit stuck: IRET only restores621621+ * the low 16 bits of ESP/RSP if SS is 16-bit.622622+ * The kernel uses a hack to restore bits 31:16,623623+ * but that hack doesn't help with bits 63:32.624624+ * On Intel CPUs, bits 63:32 end up zeroed, and, on625625+ * AMD CPUs, they leak the high bits of the kernel626626+ * espfix64 stack pointer. There's very little that627627+ * the kernel can do about it.628628+ *629629+ * Similarly, if we are returning to a 32-bit context,630630+ * the CPU will often lose the high 32 bits of RSP.625631 */626626- if (res == (req & 0xFFFFFFFF))627627- continue; /* OK; not expected to work */632632+633633+ if (res == req)634634+ continue;635635+636636+ if (cs_bits != 64 && ((res ^ req) & 0xFFFFFFFF) == 0) {637637+ printf("[NOTE]\tSP: %llx -> %llx\n",638638+ (unsigned long long)req,639639+ (unsigned long long)res);640640+ continue;641641+ }642642+643643+ printf("[FAIL]\tSP mismatch: requested 0x%llx; got 0x%llx\n",644644+ (unsigned long long)requested_regs[i],645645+ (unsigned long long)resulting_regs[i]);646646+ nerrs++;647647+ continue;628648 }629649630650 bool ignore_reg = false;···674654#endif675655676656 /* Sanity check on the kernel */677677- if (i == REG_CX && requested_regs[i] != resulting_regs[i]) {657657+ if (i == REG_CX && req != res) {678658 printf("[FAIL]\tCX (saved SP) mismatch: requested 0x%llx; got 0x%llx\n",679679- (unsigned long long)requested_regs[i],680680- (unsigned long long)resulting_regs[i]);659659+ (unsigned long long)req,660660+ (unsigned long long)res);681661 nerrs++;682662 continue;683663 }684664685685- if (requested_regs[i] != resulting_regs[i] && !ignore_reg) {686686- /*687687- * SP is particularly interesting here. The688688- * usual cause of failures is that we hit the689689- * nasty IRET case of returning to a 16-bit SS,690690- * in which case bits 16:31 of the *kernel*691691- * stack pointer persist in ESP.692692- */665665+ if (req != res && !ignore_reg) {693666 printf("[FAIL]\tReg %d mismatch: requested 0x%llx; got 0x%llx\n",694694- i, (unsigned long long)requested_regs[i],695695- (unsigned long long)resulting_regs[i]);667667+ i, (unsigned long long)req,668668+ (unsigned long long)res);696669 nerrs++;697670 }698671 }