···25452545 </orderedlist>25462546 </section>2547254725482548+ <section>25492549+ <title>V4L2 in Linux 3.16</title>25502550+ <orderedlist>25512551+ <listitem>25522552+ <para>Added event V4L2_EVENT_SOURCE_CHANGE.25532553+ </para>25542554+ </listitem>25552555+ </orderedlist>25562556+ </section>25572557+25582558+ <section>25592559+ <title>V4L2 in Linux 3.17</title>25602560+ <orderedlist>25612561+ <listitem>25622562+ <para>Extended &v4l2-pix-format;. Added format flags.25632563+ </para>25642564+ </listitem>25652565+ <listitem>25662566+ <para>Added compound control types and &VIDIOC-QUERY-EXT-CTRL;.25672567+ </para>25682568+ </listitem>25692569+ </orderedlist>25702570+ </section>25712571+25482572 <section id="other">25492573 <title>Relation of V4L2 to other Linux multimedia APIs</title>25502574
+29-6
Documentation/DocBook/media/v4l/func-poll.xml
···2929to accept data for output.</para>30303131 <para>When streaming I/O has been negotiated this function waits3232-until a buffer has been filled or displayed and can be dequeued with3333-the &VIDIOC-DQBUF; ioctl. When buffers are already in the outgoing3434-queue of the driver the function returns immediately.</para>3232+until a buffer has been filled by the capture device and can be dequeued3333+with the &VIDIOC-DQBUF; ioctl. For output devices this function waits3434+until the device is ready to accept a new buffer to be queued up with3535+the &VIDIOC-QBUF; ioctl for display. When buffers are already in the outgoing3636+queue of the driver (capture) or the incoming queue isn't full (display)3737+the function returns immediately.</para>35383639 <para>On success <function>poll()</function> returns the number of3740file descriptors that have been selected (that is, file descriptors···4744flags. When the function timed out it returns a value of zero, on4845failure it returns <returnvalue>-1</returnvalue> and the4946<varname>errno</varname> variable is set appropriately. When the5050-application did not call &VIDIOC-QBUF; or &VIDIOC-STREAMON; yet the4747+application did not call &VIDIOC-STREAMON; the5148<function>poll()</function> function succeeds, but sets the5249<constant>POLLERR</constant> flag in the5353-<structfield>revents</structfield> field.</para>5050+<structfield>revents</structfield> field. When the5151+application has called &VIDIOC-STREAMON; for a capture device but hasn't5252+yet called &VIDIOC-QBUF;, the <function>poll()</function> function5353+succeeds and sets the <constant>POLLERR</constant> flag in the5454+<structfield>revents</structfield> field. For output devices this5555+same situation will cause <function>poll()</function> to succeed5656+as well, but it sets the <constant>POLLOUT</constant> and5757+<constant>POLLWRNORM</constant> flags in the <structfield>revents</structfield>5858+field.</para>5959+6060+ <para>If an event occurred (see &VIDIOC-DQEVENT;) then6161+<constant>POLLPRI</constant> will be set in the <structfield>revents</structfield>6262+field and <function>poll()</function> will return.</para>54635564 <para>When use of the <function>read()</function> function has5665been negotiated and the driver does not capture yet, the···7358may return immediately.</para>74597560 <para>When use of the <function>write()</function> function has7676-been negotiated the <function>poll</function> function just waits6161+been negotiated and the driver does not stream yet, the6262+<function>poll</function> function starts streaming. When that fails6363+it returns a <constant>POLLERR</constant> as above. Otherwise it waits7764until the driver is ready for a non-blocking7865<function>write()</function> call.</para>6666+6767+ <para>If the caller is only interested in events (just6868+<constant>POLLPRI</constant> is set in the <structfield>events</structfield>6969+field), then <function>poll()</function> will <emphasis>not</emphasis>7070+start streaming if the driver does not stream yet. This makes it7171+possible to just poll for events and not for buffers.</para>79728073 <para>All drivers implementing the <function>read()</function> or8174<function>write()</function> function or streaming I/O must also
+6-5
Documentation/DocBook/media/v4l/v4l2.xml
···152152applications. -->153153154154 <revision>155155- <revnumber>3.16</revnumber>156156- <date>2014-05-27</date>157157- <authorinitials>lp</authorinitials>158158- <revremark>Extended &v4l2-pix-format;. Added format flags.155155+ <revnumber>3.17</revnumber>156156+ <date>2014-08-04</date>157157+ <authorinitials>lp, hv</authorinitials>158158+ <revremark>Extended &v4l2-pix-format;. Added format flags. Added compound control types159159+and VIDIOC_QUERY_EXT_CTRL.159160 </revremark>160161 </revision>161162···539538</partinfo>540539541540<title>Video for Linux Two API Specification</title>542542- <subtitle>Revision 3.14</subtitle>541541+ <subtitle>Revision 3.17</subtitle>543542544543 <chapter id="common">545544 &sub-common;
···11-CONFIG_EXPERIMENTAL=y21CONFIG_SYSVIPC=y32CONFIG_POSIX_MQUEUE=y43CONFIG_IKCONFIG=y···56CONFIG_LOG_BUF_SHIFT=2067CONFIG_CGROUPS=y78CONFIG_CPUSETS=y88-CONFIG_SYSFS_DEPRECATED_V2=y99CONFIG_BLK_DEV_INITRD=y1010CONFIG_KALLSYMS_ALL=y1111CONFIG_MODULES=y1212CONFIG_MODULE_UNLOAD=y1313CONFIG_MODVERSIONS=y1414-# CONFIG_BLK_DEV_BSG is not set1414+CONFIG_PARTITION_ADVANCED=y1515+CONFIG_SGI_PARTITION=y1516CONFIG_MCKINLEY=y1617CONFIG_IA64_PAGE_SIZE_64KB=y1718CONFIG_IA64_CYCLONE=y···2829CONFIG_ACPI_FAN=m2930CONFIG_ACPI_DOCK=y3031CONFIG_ACPI_PROCESSOR=m3131-CONFIG_ACPI_CONTAINER=y3232CONFIG_HOTPLUG_PCI=y3333CONFIG_HOTPLUG_PCI_ACPI=y3434+CONFIG_NET=y3435CONFIG_PACKET=y3536CONFIG_UNIX=y3637CONFIG_INET=y3738CONFIG_IP_MULTICAST=y3838-CONFIG_ARPD=y3939CONFIG_SYN_COOKIES=y4040# CONFIG_IPV6 is not set4141CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"···8082CONFIG_FUSION_SAS=y8183CONFIG_NETDEVICES=y8284CONFIG_DUMMY=m8383-CONFIG_NET_ETHERNET=y8585+CONFIG_NETCONSOLE=y8686+CONFIG_TIGON3=y8487CONFIG_NET_TULIP=y8588CONFIG_TULIP=m8686-CONFIG_NET_PCI=y8787-CONFIG_NET_VENDOR_INTEL=y8889CONFIG_E100=m8990CONFIG_E1000=y9091CONFIG_IGB=y9191-CONFIG_TIGON3=y9292-CONFIG_NETCONSOLE=y9392# CONFIG_SERIO_SERPORT is not set9493CONFIG_GAMEPORT=m9594CONFIG_SERIAL_NONSTANDARD=y···146151CONFIG_INFINIBAND=m147152CONFIG_INFINIBAND_MTHCA=m148153CONFIG_INFINIBAND_IPOIB=m154154+CONFIG_INTEL_IOMMU=y149155CONFIG_MSPEC=m150156CONFIG_EXT2_FS=y151157CONFIG_EXT2_FS_XATTR=y···160164CONFIG_REISERFS_FS_POSIX_ACL=y161165CONFIG_REISERFS_FS_SECURITY=y162166CONFIG_XFS_FS=y163163-CONFIG_AUTOFS_FS=m164167CONFIG_AUTOFS4_FS=m165168CONFIG_ISO9660_FS=m166169CONFIG_JOLIET=y···170175CONFIG_TMPFS=y171176CONFIG_HUGETLBFS=y172177CONFIG_NFS_FS=m173173-CONFIG_NFS_V3=y174174-CONFIG_NFS_V4=y178178+CONFIG_NFS_V4=m175179CONFIG_NFSD=m176180CONFIG_NFSD_V4=y177177-CONFIG_SMB_FS=m178178-CONFIG_SMB_NLS_DEFAULT=y179181CONFIG_CIFS=m180180-CONFIG_PARTITION_ADVANCED=y181181-CONFIG_SGI_PARTITION=y182182-CONFIG_EFI_PARTITION=y183182CONFIG_NLS_CODEPAGE_437=y184183CONFIG_NLS_CODEPAGE_737=m185184CONFIG_NLS_CODEPAGE_775=m···214225CONFIG_MAGIC_SYSRQ=y215226CONFIG_DEBUG_KERNEL=y216227CONFIG_DEBUG_MUTEXES=y217217-# CONFIG_RCU_CPU_STALL_DETECTOR is not set218218-CONFIG_SYSCTL_SYSCALL_CHECK=y219219-CONFIG_CRYPTO_ECB=m220228CONFIG_CRYPTO_PCBC=m221229CONFIG_CRYPTO_MD5=y222230# CONFIG_CRYPTO_ANSI_CPRNG is not set223231CONFIG_CRC_T10DIF=y224224-CONFIG_INTEL_IOMMU=y
+6-17
arch/ia64/configs/gensparse_defconfig
···11-CONFIG_EXPERIMENTAL=y21CONFIG_SYSVIPC=y32CONFIG_POSIX_MQUEUE=y43CONFIG_IKCONFIG=y···89CONFIG_MODULES=y910CONFIG_MODULE_UNLOAD=y1011CONFIG_MODVERSIONS=y1212+CONFIG_PARTITION_ADVANCED=y1313+CONFIG_SGI_PARTITION=y1114CONFIG_MCKINLEY=y1215CONFIG_IA64_CYCLONE=y1316CONFIG_SMP=y···2524CONFIG_ACPI_BUTTON=m2625CONFIG_ACPI_FAN=m2726CONFIG_ACPI_PROCESSOR=m2828-CONFIG_ACPI_CONTAINER=m2927CONFIG_HOTPLUG_PCI=y3030-CONFIG_HOTPLUG_PCI_ACPI=m2828+CONFIG_NET=y3129CONFIG_PACKET=y3230CONFIG_UNIX=y3331CONFIG_INET=y3432CONFIG_IP_MULTICAST=y3535-CONFIG_ARPD=y3633CONFIG_SYN_COOKIES=y3734# CONFIG_IPV6 is not set3835CONFIG_BLK_DEV_LOOP=m···7071CONFIG_FUSION_FC=m7172CONFIG_NETDEVICES=y7273CONFIG_DUMMY=m7373-CONFIG_NET_ETHERNET=y7474+CONFIG_NETCONSOLE=y7575+CONFIG_TIGON3=y7476CONFIG_NET_TULIP=y7577CONFIG_TULIP=m7676-CONFIG_NET_PCI=y7777-CONFIG_NET_VENDOR_INTEL=y7878CONFIG_E100=m7979CONFIG_E1000=y8080-CONFIG_TIGON3=y8181-CONFIG_NETCONSOLE=y8280# CONFIG_SERIO_SERPORT is not set8381CONFIG_GAMEPORT=m8482CONFIG_SERIAL_NONSTANDARD=y···142146CONFIG_REISERFS_FS_POSIX_ACL=y143147CONFIG_REISERFS_FS_SECURITY=y144148CONFIG_XFS_FS=y145145-CONFIG_AUTOFS_FS=y146149CONFIG_AUTOFS4_FS=y147150CONFIG_ISO9660_FS=m148151CONFIG_JOLIET=y···152157CONFIG_TMPFS=y153158CONFIG_HUGETLBFS=y154159CONFIG_NFS_FS=m155155-CONFIG_NFS_V3=y156156-CONFIG_NFS_V4=y160160+CONFIG_NFS_V4=m157161CONFIG_NFSD=m158162CONFIG_NFSD_V4=y159159-CONFIG_SMB_FS=m160160-CONFIG_SMB_NLS_DEFAULT=y161163CONFIG_CIFS=m162162-CONFIG_PARTITION_ADVANCED=y163163-CONFIG_SGI_PARTITION=y164164-CONFIG_EFI_PARTITION=y165164CONFIG_NLS_CODEPAGE_437=y166165CONFIG_NLS_CODEPAGE_737=m167166CONFIG_NLS_CODEPAGE_775=m
+2-6
arch/ia64/configs/sim_defconfig
···11-CONFIG_EXPERIMENTAL=y21CONFIG_SYSVIPC=y32CONFIG_IKCONFIG=y43CONFIG_IKCONFIG_PROC=y54CONFIG_LOG_BUF_SHIFT=1666-# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set75CONFIG_MODULES=y86CONFIG_MODULE_UNLOAD=y97CONFIG_MODULE_FORCE_UNLOAD=y108CONFIG_MODVERSIONS=y99+CONFIG_PARTITION_ADVANCED=y1110CONFIG_IA64_HP_SIM=y1211CONFIG_MCKINLEY=y1312CONFIG_IA64_PAGE_SIZE_64KB=y···2627CONFIG_BLK_DEV_RAM=y2728CONFIG_SCSI=y2829CONFIG_BLK_DEV_SD=y2929-CONFIG_SCSI_MULTI_LUN=y3030CONFIG_SCSI_CONSTANTS=y3131CONFIG_SCSI_LOGGING=y3232CONFIG_SCSI_SPI_ATTRS=y···4749CONFIG_NFS_FS=y4850CONFIG_NFSD=y4951CONFIG_NFSD_V3=y5050-CONFIG_PARTITION_ADVANCED=y5151-CONFIG_EFI_PARTITION=y5252+CONFIG_DEBUG_INFO=y5253CONFIG_DEBUG_KERNEL=y5354CONFIG_DEBUG_MUTEXES=y5454-CONFIG_DEBUG_INFO=y
+7-18
arch/ia64/configs/tiger_defconfig
···11-CONFIG_EXPERIMENTAL=y21CONFIG_SYSVIPC=y32CONFIG_POSIX_MQUEUE=y43CONFIG_IKCONFIG=y···1011CONFIG_MODVERSIONS=y1112CONFIG_MODULE_SRCVERSION_ALL=y1213# CONFIG_BLK_DEV_BSG is not set1414+CONFIG_PARTITION_ADVANCED=y1515+CONFIG_SGI_PARTITION=y1316CONFIG_IA64_DIG=y1417CONFIG_MCKINLEY=y1518CONFIG_IA64_PAGE_SIZE_64KB=y···3029CONFIG_ACPI_BUTTON=m3130CONFIG_ACPI_FAN=m3231CONFIG_ACPI_PROCESSOR=m3333-CONFIG_ACPI_CONTAINER=m3432CONFIG_HOTPLUG_PCI=y3535-CONFIG_HOTPLUG_PCI_ACPI=m3333+CONFIG_NET=y3634CONFIG_PACKET=y3735CONFIG_UNIX=y3836CONFIG_INET=y3937CONFIG_IP_MULTICAST=y4040-CONFIG_ARPD=y4138CONFIG_SYN_COOKIES=y4239# CONFIG_IPV6 is not set4340CONFIG_BLK_DEV_LOOP=m···5253CONFIG_CHR_DEV_ST=m5354CONFIG_BLK_DEV_SR=m5455CONFIG_CHR_DEV_SG=m5656+CONFIG_SCSI_FC_ATTRS=y5557CONFIG_SCSI_SYM53C8XX_2=y5658CONFIG_SCSI_QLOGIC_1280=y5759CONFIG_MD=y···7272CONFIG_FUSION_CTL=y7373CONFIG_NETDEVICES=y7474CONFIG_DUMMY=m7575-CONFIG_NET_ETHERNET=y7575+CONFIG_NETCONSOLE=y7676+CONFIG_TIGON3=y7677CONFIG_NET_TULIP=y7778CONFIG_TULIP=m7878-CONFIG_NET_PCI=y7979-CONFIG_NET_VENDOR_INTEL=y8079CONFIG_E100=m8180CONFIG_E1000=y8282-CONFIG_TIGON3=y8383-CONFIG_NETCONSOLE=y8481# CONFIG_SERIO_SERPORT is not set8582CONFIG_GAMEPORT=m8683CONFIG_SERIAL_NONSTANDARD=y···115118CONFIG_REISERFS_FS_POSIX_ACL=y116119CONFIG_REISERFS_FS_SECURITY=y117120CONFIG_XFS_FS=y118118-CONFIG_AUTOFS_FS=y119121CONFIG_AUTOFS4_FS=y120122CONFIG_ISO9660_FS=m121123CONFIG_JOLIET=y···125129CONFIG_TMPFS=y126130CONFIG_HUGETLBFS=y127131CONFIG_NFS_FS=m128128-CONFIG_NFS_V3=y129129-CONFIG_NFS_V4=y132132+CONFIG_NFS_V4=m130133CONFIG_NFSD=m131134CONFIG_NFSD_V4=y132132-CONFIG_SMB_FS=m133133-CONFIG_SMB_NLS_DEFAULT=y134135CONFIG_CIFS=m135135-CONFIG_PARTITION_ADVANCED=y136136-CONFIG_SGI_PARTITION=y137137-CONFIG_EFI_PARTITION=y138136CONFIG_NLS_CODEPAGE_437=y139137CONFIG_NLS_CODEPAGE_737=m140138CONFIG_NLS_CODEPAGE_775=m···170180CONFIG_DEBUG_KERNEL=y171181CONFIG_DEBUG_MUTEXES=y172182CONFIG_IA64_GRANULE_16MB=y173173-CONFIG_CRYPTO_ECB=m174183CONFIG_CRYPTO_PCBC=m175184CONFIG_CRYPTO_MD5=y
+4-10
arch/ia64/configs/zx1_defconfig
···11-CONFIG_EXPERIMENTAL=y21CONFIG_SYSVIPC=y32CONFIG_BSD_PROCESS_ACCT=y43CONFIG_BLK_DEV_INITRD=y54CONFIG_KPROBES=y65CONFIG_MODULES=y66+CONFIG_PARTITION_ADVANCED=y77CONFIG_IA64_HP_ZX1=y88CONFIG_MCKINLEY=y99CONFIG_SMP=y···1818CONFIG_BINFMT_MISC=y1919CONFIG_HOTPLUG_PCI=y2020CONFIG_HOTPLUG_PCI_ACPI=y2121+CONFIG_NET=y2122CONFIG_PACKET=y2223CONFIG_UNIX=y2324CONFIG_INET=y···3837CONFIG_BLK_DEV_SR=y3938CONFIG_BLK_DEV_SR_VENDOR=y4039CONFIG_CHR_DEV_SG=y4141-CONFIG_SCSI_MULTI_LUN=y4240CONFIG_SCSI_CONSTANTS=y4341CONFIG_SCSI_LOGGING=y4242+CONFIG_SCSI_FC_ATTRS=y4443CONFIG_SCSI_SYM53C8XX_2=y4544CONFIG_SCSI_QLOGIC_1280=y4645CONFIG_FUSION=y···4948CONFIG_FUSION_CTL=m5049CONFIG_NETDEVICES=y5150CONFIG_DUMMY=y5252-CONFIG_NET_ETHERNET=y5151+CONFIG_TIGON3=y5352CONFIG_NET_TULIP=y5453CONFIG_TULIP=y5554CONFIG_TULIP_MWI=y5655CONFIG_TULIP_MMIO=y5756CONFIG_TULIP_NAPI=y5857CONFIG_TULIP_NAPI_HW_MITIGATION=y5959-CONFIG_NET_PCI=y6060-CONFIG_NET_VENDOR_INTEL=y6158CONFIG_E100=y6259CONFIG_E1000=y6363-CONFIG_TIGON3=y6460CONFIG_INPUT_JOYDEV=y6561CONFIG_INPUT_EVDEV=y6662# CONFIG_INPUT_KEYBOARD is not set···98100CONFIG_EXT2_FS=y99101CONFIG_EXT2_FS_XATTR=y100102CONFIG_EXT3_FS=y101101-CONFIG_AUTOFS_FS=y102103CONFIG_ISO9660_FS=y103104CONFIG_JOLIET=y104105CONFIG_UDF_FS=y···107110CONFIG_TMPFS=y108111CONFIG_HUGETLBFS=y109112CONFIG_NFS_FS=y110110-CONFIG_NFS_V3=y111113CONFIG_NFS_V4=y112114CONFIG_NFSD=y113115CONFIG_NFSD_V3=y114114-CONFIG_PARTITION_ADVANCED=y115115-CONFIG_EFI_PARTITION=y116116CONFIG_NLS_CODEPAGE_437=y117117CONFIG_NLS_CODEPAGE_737=y118118CONFIG_NLS_CODEPAGE_775=y
+1
arch/mips/configs/gpr_defconfig
···1919# CONFIG_BLK_DEV_BSG is not set2020CONFIG_PCI=y2121CONFIG_BINFMT_MISC=m2222+CONFIG_NET=y2223CONFIG_PACKET=y2324CONFIG_UNIX=y2425CONFIG_INET=y
···48484949# These flags should be implied by an hppa-linux configuration, but they5050# are not in gcc 3.2.5151-cflags-y += -mno-space-regs -mfast-indirect-calls5151+cflags-y += -mno-space-regs5252+5353+# -mfast-indirect-calls is only relevant for 32-bit kernels.5454+ifndef CONFIG_64BIT5555+cflags-y += -mfast-indirect-calls5656+endif52575358# Currently we save and restore fpregs on all kernel entry/interruption paths.5459# If that gets optimized, we might need to disable the use of fpregs in the
+1
arch/parisc/configs/a500_defconfig
···3131CONFIG_I82092=m3232# CONFIG_SUPERIO is not set3333# CONFIG_CHASSIS_LCD_LED is not set3434+CONFIG_NET=y3435CONFIG_PACKET=y3536CONFIG_UNIX=y3637CONFIG_XFRM_USER=m
+1
arch/parisc/configs/c8000_defconfig
···3333# CONFIG_PDC_CHASSIS_WARN is not set3434# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set3535CONFIG_BINFMT_MISC=m3636+CONFIG_NET=y3637CONFIG_PACKET=y3738CONFIG_UNIX=y3839CONFIG_XFRM_USER=m
+2-4
arch/parisc/kernel/ptrace.c
···1717#include <linux/user.h>1818#include <linux/personality.h>1919#include <linux/security.h>2020+#include <linux/seccomp.h>2021#include <linux/compat.h>2122#include <linux/signal.h>2223#include <linux/audit.h>···272271 long ret = 0;273272274273 /* Do the secure computing check first. */275275- if (secure_computing(regs->gr[20])) {276276- /* seccomp failures shouldn't expose any additional code. */277277- return -1;278278- }274274+ secure_computing_strict(regs->gr[20]);279275280276 if (test_thread_flag(TIF_SYSCALL_TRACE) &&281277 tracehook_report_syscall_entry(regs))
···6363# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set6464CONFIG_BINFMT_MISC=m6565CONFIG_HIBERNATION=y6666+CONFIG_NET=y6667CONFIG_PACKET=y6768CONFIG_PACKET_DIAG=m6869CONFIG_UNIX=y
+1
arch/s390/configs/gcov_defconfig
···6161# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set6262CONFIG_BINFMT_MISC=m6363CONFIG_HIBERNATION=y6464+CONFIG_NET=y6465CONFIG_PACKET=y6566CONFIG_PACKET_DIAG=m6667CONFIG_UNIX=y
+1
arch/s390/configs/performance_defconfig
···5959# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set6060CONFIG_BINFMT_MISC=m6161CONFIG_HIBERNATION=y6262+CONFIG_NET=y6263CONFIG_PACKET=y6364CONFIG_PACKET_DIAG=m6465CONFIG_UNIX=y
+1
arch/s390/configs/zfcpdump_defconfig
···2323# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set2424# CONFIG_SECCOMP is not set2525# CONFIG_IUCV is not set2626+CONFIG_NET=y2627CONFIG_ATM=y2728CONFIG_ATM_LANE=y2829CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
···184184 */185185#define emit_alu_K(OPCODE, K) \186186do { \187187- if (K) { \187187+ if (K || OPCODE == AND || OPCODE == MUL) { \188188 unsigned int _insn = OPCODE; \189189 _insn |= RS1(r_A) | RD(r_A); \190190 if (is_simm13(K)) { \
+14-40
arch/x86/boot/compressed/head_32.S
···3030#include <asm/boot.h>3131#include <asm/asm-offsets.h>32323333-/*3434- * Adjust our own GOT3535- *3636- * The relocation base must be in %ebx3737- *3838- * It is safe to call this macro more than once, because in some of the3939- * code paths multiple invocations are inevitable, e.g. via the efi*4040- * entry points.4141- *4242- * Relocation is only performed the first time.4343- */4444-.macro FIXUP_GOT4545- cmpb $1, got_fixed(%ebx)4646- je 2f4747-4848- leal _got(%ebx), %edx4949- leal _egot(%ebx), %ecx5050-1:5151- cmpl %ecx, %edx5252- jae 2f5353- addl %ebx, (%edx)5454- addl $4, %edx5555- jmp 1b5656-2:5757- movb $1, got_fixed(%ebx)5858-.endm5959-6033 __HEAD6134ENTRY(startup_32)6235#ifdef CONFIG_EFI_STUB···5683 add %esi, 88(%eax)5784 pushl %eax58855959- movl %esi, %ebx6060- FIXUP_GOT6161-6286 call make_boot_params6387 cmpl $0, %eax6488 je fail···81111 leal efi32_config(%esi), %eax82112 add %esi, 88(%eax)83113 pushl %eax8484-8585- movl %esi, %ebx8686- FIXUP_GOT8787-881142:89115 call efi_main90116 cmpl $0, %eax···190224 shrl $2, %ecx191225 rep stosl192226193193- FIXUP_GOT227227+/*228228+ * Adjust our own GOT229229+ */230230+ leal _got(%ebx), %edx231231+ leal _egot(%ebx), %ecx232232+1:233233+ cmpl %ecx, %edx234234+ jae 2f235235+ addl %ebx, (%edx)236236+ addl $4, %edx237237+ jmp 1b238238+2:239239+194240/*195241 * Do the decompression, and jump to the new kernel..196242 */···225247 xorl %ebx, %ebx226248 jmp *%eax227249228228- .data229229-/* Have we relocated the GOT? */230230-got_fixed:231231- .byte 0232232-233250#ifdef CONFIG_EFI_STUB251251+ .data234252efi32_config:235253 .fill 11,8,0236254 .long efi_call_phys
+15-41
arch/x86/boot/compressed/head_64.S
···3232#include <asm/processor-flags.h>3333#include <asm/asm-offsets.h>34343535-/*3636- * Adjust our own GOT3737- *3838- * The relocation base must be in %rbx3939- *4040- * It is safe to call this macro more than once, because in some of the4141- * code paths multiple invocations are inevitable, e.g. via the efi*4242- * entry points.4343- *4444- * Relocation is only performed the first time.4545- */4646-.macro FIXUP_GOT4747- cmpb $1, got_fixed(%rip)4848- je 2f4949-5050- leaq _got(%rip), %rdx5151- leaq _egot(%rip), %rcx5252-1:5353- cmpq %rcx, %rdx5454- jae 2f5555- addq %rbx, (%rdx)5656- addq $8, %rdx5757- jmp 1b5858-2:5959- movb $1, got_fixed(%rip)6060-.endm6161-6235 __HEAD6336 .code326437ENTRY(startup_32)···252279 subq $1b, %rbp253280254281 /*255255- * Relocate efi_config->call() and the GOT entries.282282+ * Relocate efi_config->call().256283 */257284 addq %rbp, efi64_config+88(%rip)258258-259259- movq %rbp, %rbx260260- FIXUP_GOT261285262286 movq %rax, %rdi263287 call make_boot_params···271301 subq $1b, %rbp272302273303 /*274274- * Relocate efi_config->call() and the GOT entries.304304+ * Relocate efi_config->call().275305 */276306 movq efi_config(%rip), %rax277307 addq %rbp, 88(%rax)278278-279279- movq %rbp, %rbx280280- FIXUP_GOT2813082:282309 movq efi_config(%rip), %rdi283310 call efi_main···385418 shrq $3, %rcx386419 rep stosq387420388388- FIXUP_GOT389389-421421+/*422422+ * Adjust our own GOT423423+ */424424+ leaq _got(%rip), %rdx425425+ leaq _egot(%rip), %rcx426426+1:427427+ cmpq %rcx, %rdx428428+ jae 2f429429+ addq %rbx, (%rdx)430430+ addq $8, %rdx431431+ jmp 1b432432+2:433433+390434/*391435 * Do the decompression, and jump to the new kernel..392436 */···436458 .quad 0x0080890000000000 /* TS descriptor */437459 .quad 0x0000000000000000 /* TS continued */438460gdt_end:439439-440440-/* Have we relocated the GOT? */441441-got_fixed:442442- .byte 0443461444462#ifdef CONFIG_EFI_STUB445463efi_config:
+2-2
arch/x86/crypto/aesni-intel_glue.c
···481481 crypto_inc(ctrblk, AES_BLOCK_SIZE);482482}483483484484-#ifdef CONFIG_AS_AVX484484+#if 0 /* temporary disabled due to failing crypto tests */485485static void aesni_ctr_enc_avx_tfm(struct crypto_aes_ctx *ctx, u8 *out,486486 const u8 *in, unsigned int len, u8 *iv)487487{···15221522 aesni_gcm_dec_tfm = aesni_gcm_dec;15231523 }15241524 aesni_ctr_enc_tfm = aesni_ctr_enc;15251525-#ifdef CONFIG_AS_AVX15251525+#if 0 /* temporary disabled due to failing crypto tests */15261526 if (cpu_has_avx) {15271527 /* optimize performance of ctr mode encryption transform */15281528 aesni_ctr_enc_tfm = aesni_ctr_enc_avx_tfm;
···119119 spin_unlock_irq(q->queue_lock);120120121121 if (freeze) {122122- percpu_ref_kill(&q->mq_usage_counter);122122+ /*123123+ * XXX: Temporary kludge to work around SCSI blk-mq stall.124124+ * SCSI synchronously creates and destroys many queues125125+ * back-to-back during probe leading to lengthy stalls.126126+ * This will be fixed by keeping ->mq_usage_counter in127127+ * atomic mode until genhd registration, but, for now,128128+ * let's work around using expedited synchronization.129129+ */130130+ __percpu_ref_kill_expedited(&q->mq_usage_counter);131131+123132 blk_mq_run_queues(q, false);124133 }125134 wait_event(q->mq_freeze_wq, percpu_ref_is_zero(&q->mq_usage_counter));···212203 if (tag != BLK_MQ_TAG_FAIL) {213204 rq = data->hctx->tags->rqs[tag];214205215215- rq->cmd_flags = 0;216206 if (blk_mq_tag_busy(data->hctx)) {217207 rq->cmd_flags = REQ_MQ_INFLIGHT;218208 atomic_inc(&data->hctx->nr_active);···266258267259 if (rq->cmd_flags & REQ_MQ_INFLIGHT)268260 atomic_dec(&hctx->nr_active);261261+ rq->cmd_flags = 0;269262270263 clear_bit(REQ_ATOM_STARTED, &rq->atomic_flags);271264 blk_mq_put_tag(hctx, tag, &ctx->last_tag);···402393 blk_add_timer(rq);403394404395 /*396396+ * Ensure that ->deadline is visible before set the started397397+ * flag and clear the completed flag.398398+ */399399+ smp_mb__before_atomic();400400+401401+ /*405402 * Mark us as started and clear complete. Complete might have been406403 * set if requeue raced with timeout, which then marked it as407404 * complete. So be sure to clear complete again when we start···488473 blk_mq_insert_request(rq, false, false, false);489474 }490475491491- blk_mq_run_queues(q, false);476476+ /*477477+ * Use the start variant of queue running here, so that running478478+ * the requeue work will kick stopped queues.479479+ */480480+ blk_mq_start_hw_queues(q);492481}493482494483void blk_mq_add_to_requeue_list(struct request *rq, bool at_head)···976957977958 hctx = q->mq_ops->map_queue(q, ctx->cpu);978959979979- if (rq->cmd_flags & (REQ_FLUSH | REQ_FUA) &&980980- !(rq->cmd_flags & (REQ_FLUSH_SEQ))) {981981- blk_insert_flush(rq);982982- } else {983983- spin_lock(&ctx->lock);984984- __blk_mq_insert_request(hctx, rq, at_head);985985- spin_unlock(&ctx->lock);986986- }960960+ spin_lock(&ctx->lock);961961+ __blk_mq_insert_request(hctx, rq, at_head);962962+ spin_unlock(&ctx->lock);987963988964 if (run_queue)989965 blk_mq_run_hw_queue(hctx, async);···14181404 left -= to_do * rq_size;14191405 for (j = 0; j < to_do; j++) {14201406 tags->rqs[i] = p;14071407+ tags->rqs[i]->atomic_flags = 0;14081408+ tags->rqs[i]->cmd_flags = 0;14211409 if (set->ops->init_request) {14221410 if (set->ops->init_request(set->driver_data,14231411 tags->rqs[i], hctx_idx, i,···19721956 while (--i >= 0)19731957 blk_mq_free_rq_map(set, set->tags[i], i);1974195819751975- set->tags = NULL;19761959 return -ENOMEM;19771960}19781961
···367367{368368 int ret;369369370370+ ret = ccp_present();371371+ if (ret)372372+ return ret;373373+370374 spin_lock_init(&req_queue_lock);371375 INIT_LIST_HEAD(&req_queue.cmds);372376 req_queue.backlog = &req_queue.cmds;
+14
drivers/crypto/ccp/ccp-dev.c
···5555}56565757/**5858+ * ccp_present - check if a CCP device is present5959+ *6060+ * Returns zero if a CCP device is present, -ENODEV otherwise.6161+ */6262+int ccp_present(void)6363+{6464+ if (ccp_get_device())6565+ return 0;6666+6767+ return -ENODEV;6868+}6969+EXPORT_SYMBOL_GPL(ccp_present);7070+7171+/**5872 * ccp_enqueue_cmd - queue an operation for processing by the CCP5973 *6074 * @cmd: ccp_cmd struct to be processed
···10951095 sizeof(state->tuner_i2c_adapter.name));10961096 state->tuner_i2c_adapter.algo = &cx24123_tuner_i2c_algo;10971097 state->tuner_i2c_adapter.algo_data = NULL;10981098+ state->tuner_i2c_adapter.dev.parent = i2c->dev.parent;10981099 i2c_set_adapdata(&state->tuner_i2c_adapter, state);10991100 if (i2c_add_adapter(&state->tuner_i2c_adapter) < 0) {11001101 err("tuner i2c bus could not be initialized\n");
···13421342 struct em28xx *dev = video_drvdata(file);13431343 struct em28xx_v4l2 *v4l2 = dev->v4l2;1344134413451345- if (v4l2->streaming_users > 0)13451345+ if (vb2_is_busy(&v4l2->vb_vidq))13461346 return -EBUSY;1347134713481348 vidioc_try_fmt_vid_cap(file, priv, f);···18831883 return -EINVAL;18841884 }1885188518861886- em28xx_videodbg("open dev=%s type=%s\n",18871887- video_device_node_name(vdev), v4l2_type_names[fh_type]);18861886+ em28xx_videodbg("open dev=%s type=%s users=%d\n",18871887+ video_device_node_name(vdev), v4l2_type_names[fh_type],18881888+ v4l2->users);1888188918891890 if (mutex_lock_interruptible(&dev->lock))18901891 return -ERESTARTSYS;···18981897 return ret;18991898 }1900189919011901- if (v4l2_fh_is_singular_file(filp)) {19021902- em28xx_videodbg("first opened filehandle, initializing device\n");19031903-19001900+ if (v4l2->users == 0) {19041901 em28xx_set_mode(dev, EM28XX_ANALOG_MODE);1905190219061903 if (vdev->vfl_type != VFL_TYPE_RADIO)···19091910 * of some i2c devices19101911 */19111912 em28xx_wake_i2c(dev);19121912- } else {19131913- em28xx_videodbg("further filehandles are already opened\n");19141913 }1915191419161915 if (vdev->vfl_type == VFL_TYPE_RADIO) {···1918192119191922 kref_get(&dev->ref);19201923 kref_get(&v4l2->ref);19241924+ v4l2->users++;1921192519221926 mutex_unlock(&dev->lock);19231927···20252027 struct em28xx_v4l2 *v4l2 = dev->v4l2;20262028 int errCode;2027202920302030+ em28xx_videodbg("users=%d\n", v4l2->users);20312031+20322032+ vb2_fop_release(filp);20282033 mutex_lock(&dev->lock);2029203420302030- if (v4l2_fh_is_singular_file(filp)) {20312031- em28xx_videodbg("last opened filehandle, shutting down device\n");20322032-20352035+ if (v4l2->users == 1) {20332036 /* No sense to try to write to the device */20342037 if (dev->disconnected)20352038 goto exit;···20492050 em28xx_errdev("cannot change alternate number to "20502051 "0 (error=%i)\n", errCode);20512052 }20522052- } else {20532053- em28xx_videodbg("further opened filehandles left\n");20542053 }2055205420562055exit:20572057- vb2_fop_release(filp);20562056+ v4l2->users--;20582057 kref_put(&v4l2->ref, em28xx_free_v4l2);20592058 mutex_unlock(&dev->lock);20602059 kref_put(&dev->ref, em28xx_free_device);
+1
drivers/media/usb/em28xx/em28xx.h
···524524 int sensor_yres;525525 int sensor_xtal;526526527527+ int users; /* user count for exclusive use */527528 int streaming_users; /* number of actively streaming users */528529529530 u32 frequency; /* selected tuner frequency */
+37-11
drivers/media/v4l2-core/videobuf2-core.c
···971971 * to the userspace.972972 */973973 req->count = allocated_buffers;974974+ q->waiting_for_buffers = !V4L2_TYPE_IS_OUTPUT(q->type);974975975976 return 0;976977}···10191018 memset(q->plane_sizes, 0, sizeof(q->plane_sizes));10201019 memset(q->alloc_ctx, 0, sizeof(q->alloc_ctx));10211020 q->memory = create->memory;10211021+ q->waiting_for_buffers = !V4L2_TYPE_IS_OUTPUT(q->type);10221022 }1023102310241024 num_buffers = min(create->count, VIDEO_MAX_FRAME - q->num_buffers);···11321130 */11331131void *vb2_plane_cookie(struct vb2_buffer *vb, unsigned int plane_no)11341132{11351135- if (plane_no > vb->num_planes || !vb->planes[plane_no].mem_priv)11331133+ if (plane_no >= vb->num_planes || !vb->planes[plane_no].mem_priv)11361134 return NULL;1137113511381136 return call_ptr_memop(vb, cookie, vb->planes[plane_no].mem_priv);···11671165 if (WARN_ON(vb->state != VB2_BUF_STATE_ACTIVE))11681166 return;1169116711701170- if (!q->start_streaming_called) {11711171- if (WARN_ON(state != VB2_BUF_STATE_QUEUED))11721172- state = VB2_BUF_STATE_QUEUED;11731173- } else if (WARN_ON(state != VB2_BUF_STATE_DONE &&11741174- state != VB2_BUF_STATE_ERROR)) {11751175- state = VB2_BUF_STATE_ERROR;11761176- }11681168+ if (WARN_ON(state != VB2_BUF_STATE_DONE &&11691169+ state != VB2_BUF_STATE_ERROR &&11701170+ state != VB2_BUF_STATE_QUEUED))11711171+ state = VB2_BUF_STATE_ERROR;1177117211781173#ifdef CONFIG_VIDEO_ADV_DEBUG11791174 /*···17611762 q->start_streaming_called = 0;1762176317631764 dprintk(1, "driver refused to start streaming\n");17651765+ /*17661766+ * If you see this warning, then the driver isn't cleaning up properly17671767+ * after a failed start_streaming(). See the start_streaming()17681768+ * documentation in videobuf2-core.h for more information how buffers17691769+ * should be returned to vb2 in start_streaming().17701770+ */17641771 if (WARN_ON(atomic_read(&q->owned_by_drv_count))) {17651772 unsigned i;17661773···17821777 /* Must be zero now */17831778 WARN_ON(atomic_read(&q->owned_by_drv_count));17841779 }17801780+ /*17811781+ * If done_list is not empty, then start_streaming() didn't call17821782+ * vb2_buffer_done(vb, VB2_BUF_STATE_QUEUED) but STATE_ERROR or17831783+ * STATE_DONE.17841784+ */17851785+ WARN_ON(!list_empty(&q->done_list));17851786 return ret;17861787}17871788···18231812 */18241813 list_add_tail(&vb->queued_entry, &q->queued_list);18251814 q->queued_count++;18151815+ q->waiting_for_buffers = false;18261816 vb->state = VB2_BUF_STATE_QUEUED;18271817 if (V4L2_TYPE_IS_OUTPUT(q->type)) {18281818 /*···21352123 if (q->start_streaming_called)21362124 call_void_qop(q, stop_streaming, q);2137212521262126+ /*21272127+ * If you see this warning, then the driver isn't cleaning up properly21282128+ * in stop_streaming(). See the stop_streaming() documentation in21292129+ * videobuf2-core.h for more information how buffers should be returned21302130+ * to vb2 in stop_streaming().21312131+ */21382132 if (WARN_ON(atomic_read(&q->owned_by_drv_count))) {21392133 for (i = 0; i < q->num_buffers; ++i)21402134 if (q->bufs[i]->state == VB2_BUF_STATE_ACTIVE)···22902272 * their normal dequeued state.22912273 */22922274 __vb2_queue_cancel(q);22752275+ q->waiting_for_buffers = !V4L2_TYPE_IS_OUTPUT(q->type);2293227622942277 dprintk(3, "successful\n");22952278 return 0;···26092590 }2610259126112592 /*26122612- * There is nothing to wait for if no buffer has been queued and the26132613- * queue isn't streaming, or if the error flag is set.25932593+ * There is nothing to wait for if the queue isn't streaming, or if the25942594+ * error flag is set.26142595 */26152615- if ((list_empty(&q->queued_list) && !vb2_is_streaming(q)) || q->error)25962596+ if (!vb2_is_streaming(q) || q->error)25972597+ return res | POLLERR;25982598+ /*25992599+ * For compatibility with vb1: if QBUF hasn't been called yet, then26002600+ * return POLLERR as well. This only affects capture queues, output26012601+ * queues will always initialize waiting_for_buffers to false.26022602+ */26032603+ if (q->waiting_for_buffers)26162604 return res | POLLERR;2617260526182606 /*
+1-1
drivers/media/v4l2-core/videobuf2-dma-sg.c
···113113 goto fail_pages_alloc;114114115115 ret = sg_alloc_table_from_pages(&buf->sg_table, buf->pages,116116- buf->num_pages, 0, size, gfp_flags);116116+ buf->num_pages, 0, size, GFP_KERNEL);117117 if (ret)118118 goto fail_table_alloc;119119
+22-11
drivers/net/ethernet/mellanox/mlx4/mr.c
···298298 MLX4_CMD_TIME_CLASS_B, MLX4_CMD_WRAPPED);299299}300300301301+/* Must protect against concurrent access */301302int mlx4_mr_hw_get_mpt(struct mlx4_dev *dev, struct mlx4_mr *mmr,302303 struct mlx4_mpt_entry ***mpt_entry)303304{···306305 int key = key_to_hw_index(mmr->key) & (dev->caps.num_mpts - 1);307306 struct mlx4_cmd_mailbox *mailbox = NULL;308307309309- /* Make sure that at this point we have single-threaded access only */310310-311308 if (mmr->enabled != MLX4_MPT_EN_HW)312309 return -EINVAL;313310314311 err = mlx4_HW2SW_MPT(dev, NULL, key);315315-316312 if (err) {317313 mlx4_warn(dev, "HW2SW_MPT failed (%d).", err);318314 mlx4_warn(dev, "Most likely the MR has MWs bound to it.\n");···331333 0, MLX4_CMD_QUERY_MPT,332334 MLX4_CMD_TIME_CLASS_B,333335 MLX4_CMD_WRAPPED);334334-335336 if (err)336337 goto free_mailbox;337338···375378 err = mlx4_SW2HW_MPT(dev, mailbox, key);376379 }377380378378- mmr->pd = be32_to_cpu((*mpt_entry)->pd_flags) & MLX4_MPT_PD_MASK;379379- if (!err)381381+ if (!err) {382382+ mmr->pd = be32_to_cpu((*mpt_entry)->pd_flags) & MLX4_MPT_PD_MASK;380383 mmr->enabled = MLX4_MPT_EN_HW;384384+ }381385 return err;382386}383387EXPORT_SYMBOL_GPL(mlx4_mr_hw_write_mpt);···398400int mlx4_mr_hw_change_pd(struct mlx4_dev *dev, struct mlx4_mpt_entry *mpt_entry,399401 u32 pdn)400402{401401- u32 pd_flags = be32_to_cpu(mpt_entry->pd_flags);403403+ u32 pd_flags = be32_to_cpu(mpt_entry->pd_flags) & ~MLX4_MPT_PD_MASK;402404 /* The wrapper function will put the slave's id here */403405 if (mlx4_is_mfunc(dev))404406 pd_flags &= ~MLX4_MPT_PD_VF_MASK;405405- mpt_entry->pd_flags = cpu_to_be32((pd_flags & ~MLX4_MPT_PD_MASK) |407407+408408+ mpt_entry->pd_flags = cpu_to_be32(pd_flags |406409 (pdn & MLX4_MPT_PD_MASK)407410 | MLX4_MPT_PD_FLAG_EN_INV);408411 return 0;···599600{600601 int err;601602602602- mpt_entry->start = cpu_to_be64(mr->iova);603603- mpt_entry->length = cpu_to_be64(mr->size);604604- mpt_entry->entity_size = cpu_to_be32(mr->mtt.page_shift);603603+ mpt_entry->start = cpu_to_be64(iova);604604+ mpt_entry->length = cpu_to_be64(size);605605+ mpt_entry->entity_size = cpu_to_be32(page_shift);605606606607 err = mlx4_mtt_init(dev, npages, page_shift, &mr->mtt);607608 if (err)608609 return err;609610611611+ mpt_entry->pd_flags &= cpu_to_be32(MLX4_MPT_PD_MASK |612612+ MLX4_MPT_PD_FLAG_EN_INV);613613+ mpt_entry->flags &= cpu_to_be32(MLX4_MPT_FLAG_FREE |614614+ MLX4_MPT_FLAG_SW_OWNS);610615 if (mr->mtt.order < 0) {611616 mpt_entry->flags |= cpu_to_be32(MLX4_MPT_FLAG_PHYSICAL);612617 mpt_entry->mtt_addr = 0;···619616 &mr->mtt));620617 if (mr->mtt.page_shift == 0)621618 mpt_entry->mtt_sz = cpu_to_be32(1 << mr->mtt.order);619619+ }620620+ if (mr->mtt.order >= 0 && mr->mtt.page_shift == 0) {621621+ /* fast register MR in free state */622622+ mpt_entry->flags |= cpu_to_be32(MLX4_MPT_FLAG_FREE);623623+ mpt_entry->pd_flags |= cpu_to_be32(MLX4_MPT_PD_FLAG_FAST_REG |624624+ MLX4_MPT_PD_FLAG_RAE);625625+ } else {626626+ mpt_entry->flags |= cpu_to_be32(MLX4_MPT_FLAG_SW_OWNS);622627 }623628 mr->enabled = MLX4_MPT_EN_SW;624629
+7-4
drivers/net/ethernet/mellanox/mlx4/port.c
···103103 int i;104104105105 for (i = 0; i < MLX4_MAX_MAC_NUM; i++) {106106- if ((mac & MLX4_MAC_MASK) ==106106+ if (table->refs[i] &&107107+ (MLX4_MAC_MASK & mac) ==107108 (MLX4_MAC_MASK & be64_to_cpu(table->entries[i])))108109 return i;109110 }···166165167166 mutex_lock(&table->mutex);168167 for (i = 0; i < MLX4_MAX_MAC_NUM; i++) {169169- if (free < 0 && !table->entries[i]) {170170- free = i;168168+ if (!table->refs[i]) {169169+ if (free < 0)170170+ free = i;171171 continue;172172 }173173174174- if (mac == (MLX4_MAC_MASK & be64_to_cpu(table->entries[i]))) {174174+ if ((MLX4_MAC_MASK & mac) ==175175+ (MLX4_MAC_MASK & be64_to_cpu(table->entries[i]))) {175176 /* MAC already registered, increment ref count */176177 err = i;177178 ++table->refs[i];
+1-1
drivers/net/wireless/ath/ath9k/main.c
···505505 * touch anything. Note this can happen early506506 * on if the IRQ is shared.507507 */508508- if (test_bit(ATH_OP_INVALID, &common->op_flags))508508+ if (!ah || test_bit(ATH_OP_INVALID, &common->op_flags))509509 return IRQ_NONE;510510511511 /* shared irq, not for us */
···49274927 struct brcmu_chan ch;49284928 int i;4929492949304930- for (i = 0; i <= total; i++) {49304930+ for (i = 0; i < total; i++) {49314931 ch.chspec = (u16)le32_to_cpu(chlist->element[i]);49324932 cfg->d11inf.decchspec(&ch);49334933
···775775 /* Check if setup is sensible at all */776776 if (!pass &&777777 (primary != bus->number || secondary <= bus->number ||778778- secondary > subordinate || subordinate > bus->busn_res.end)) {778778+ secondary > subordinate)) {779779 dev_info(&dev->dev, "bridge configuration invalid ([bus %02x-%02x]), reconfiguring\n",780780 secondary, subordinate);781781 broken = 1;···838838 goto out;839839 }840840841841- if (max >= bus->busn_res.end) {842842- dev_warn(&dev->dev, "can't allocate child bus %02x from %pR\n",843843- max, &bus->busn_res);844844- goto out;845845- }846846-847841 /* Clear errors */848842 pci_write_config_word(dev, PCI_STATUS, 0xffff);849843850850- /* The bus will already exist if we are rescanning */844844+ /* Prevent assigning a bus number that already exists.845845+ * This can happen when a bridge is hot-plugged, so in846846+ * this case we only re-scan this bus. */851847 child = pci_find_bus(pci_domain_nr(bus), max+1);852848 if (!child) {853849 child = pci_add_new_bus(bus, dev, max+1);854850 if (!child)855851 goto out;856856- pci_bus_insert_busn_res(child, max+1,857857- bus->busn_res.end);852852+ pci_bus_insert_busn_res(child, max+1, 0xff);858853 }859854 max++;860855 buses = (buses & 0xff000000)···908913 /*909914 * Set the subordinate bus number to its real value.910915 */911911- if (max > bus->busn_res.end) {912912- dev_warn(&dev->dev, "max busn %02x is outside %pR\n",913913- max, &bus->busn_res);914914- max = bus->busn_res.end;915915- }916916 pci_bus_update_busn_res_end(child, max);917917 pci_write_config_byte(dev, PCI_SUBORDINATE_BUS, max);918918 }
+12
include/linux/ccp.h
···2727 defined(CONFIG_CRYPTO_DEV_CCP_DD_MODULE)28282929/**3030+ * ccp_present - check if a CCP device is present3131+ *3232+ * Returns zero if a CCP device is present, -ENODEV otherwise.3333+ */3434+int ccp_present(void);3535+3636+/**3037 * ccp_enqueue_cmd - queue an operation for processing by the CCP3138 *3239 * @cmd: ccp_cmd struct to be processed···5952int ccp_enqueue_cmd(struct ccp_cmd *cmd);60536154#else /* CONFIG_CRYPTO_DEV_CCP_DD is not enabled */5555+5656+static inline int ccp_present(void)5757+{5858+ return -ENODEV;5959+}62606361static inline int ccp_enqueue_cmd(struct ccp_cmd *cmd)6462{
+1
include/linux/percpu-refcount.h
···7171void percpu_ref_exit(struct percpu_ref *ref);7272void percpu_ref_kill_and_confirm(struct percpu_ref *ref,7373 percpu_ref_func_t *confirm_kill);7474+void __percpu_ref_kill_expedited(struct percpu_ref *ref);74757576/**7677 * percpu_ref_kill - drop the initial ref
+5-1
include/media/videobuf2-core.h
···295295 * can return an error if hardware fails, in that case all296296 * buffers that have been already given by the @buf_queue297297 * callback are to be returned by the driver by calling298298- * @vb2_buffer_done(VB2_BUF_STATE_DEQUEUED).298298+ * @vb2_buffer_done(VB2_BUF_STATE_QUEUED).299299 * If you need a minimum number of buffers before you can300300 * start streaming, then set @min_buffers_needed in the301301 * vb2_queue structure. If that is non-zero then···380380 * @start_streaming_called: start_streaming() was called successfully and we381381 * started streaming.382382 * @error: a fatal error occurred on the queue383383+ * @waiting_for_buffers: used in poll() to check if vb2 is still waiting for384384+ * buffers. Only set for capture queues if qbuf has not yet been385385+ * called since poll() needs to return POLLERR in that situation.383386 * @fileio: file io emulator internal data, used only if emulator is active384387 * @threadio: thread io internal data, used only if thread is active385388 */···420417 unsigned int streaming:1;421418 unsigned int start_streaming_called:1;422419 unsigned int error:1;420420+ unsigned int waiting_for_buffers:1;423421424422 struct vb2_fileio_data *fileio;425423 struct vb2_threadio_data *threadio;
+1
include/rdma/ib_umem.h
···4747 int writable;4848 int hugetlb;4949 struct work_struct work;5050+ struct pid *pid;5051 struct mm_struct *mm;5152 unsigned long diff;5253 struct sg_table sg_head;
···184184 call_rcu_sched(&ref->rcu, percpu_ref_kill_rcu);185185}186186EXPORT_SYMBOL_GPL(percpu_ref_kill_and_confirm);187187+188188+/*189189+ * XXX: Temporary kludge to work around SCSI blk-mq stall. Used only by190190+ * block/blk-mq.c::blk_mq_freeze_queue(). Will be removed during v3.18191191+ * devel cycle. Do not use anywhere else.192192+ */193193+void __percpu_ref_kill_expedited(struct percpu_ref *ref)194194+{195195+ WARN_ONCE(ref->pcpu_count_ptr & PCPU_REF_DEAD,196196+ "percpu_ref_kill() called more than once on %pf!",197197+ ref->release);198198+199199+ ref->pcpu_count_ptr |= PCPU_REF_DEAD;200200+ synchronize_sched_expedited();201201+ percpu_ref_kill_rcu(&ref->rcu);202202+}