···17251725 kernel and module base offset ASLR (Address Space17261726 Layout Randomization).1727172717281728+ kasan_multi_shot17291729+ [KNL] Enforce KASAN (Kernel Address Sanitizer) to print17301730+ report on every invalid memory access. Without this17311731+ parameter KASAN will print report only for the first17321732+ invalid access.17331733+17281734 keepinitrd [HW,ARM]1729173517301736 kernelcore= [KNL,X86,IA-64,PPC]
···1212- reg : Offset and length of the register set for the module1313- interrupts : the interrupt number for the RNG module.1414 Used for "ti,omap4-rng" and "inside-secure,safexcel-eip76"1515-- clocks: the trng clock source1515+- clocks: the trng clock source. Only mandatory for the1616+ "inside-secure,safexcel-eip76" compatible.16171718Example:1819/* AM335x */
+63
Documentation/virtual/kvm/api.txt
···33773377 __u32 pad;33783378};3379337933803380+4.104 KVM_X86_GET_MCE_CAP_SUPPORTED33813381+33823382+Capability: KVM_CAP_MCE33833383+Architectures: x8633843384+Type: system ioctl33853385+Parameters: u64 mce_cap (out)33863386+Returns: 0 on success, -1 on error33873387+33883388+Returns supported MCE capabilities. The u64 mce_cap parameter33893389+has the same format as the MSR_IA32_MCG_CAP register. Supported33903390+capabilities will have the corresponding bits set.33913391+33923392+4.105 KVM_X86_SETUP_MCE33933393+33943394+Capability: KVM_CAP_MCE33953395+Architectures: x8633963396+Type: vcpu ioctl33973397+Parameters: u64 mcg_cap (in)33983398+Returns: 0 on success,33993399+ -EFAULT if u64 mcg_cap cannot be read,34003400+ -EINVAL if the requested number of banks is invalid,34013401+ -EINVAL if requested MCE capability is not supported.34023402+34033403+Initializes MCE support for use. The u64 mcg_cap parameter34043404+has the same format as the MSR_IA32_MCG_CAP register and34053405+specifies which capabilities should be enabled. The maximum34063406+supported number of error-reporting banks can be retrieved when34073407+checking for KVM_CAP_MCE. The supported capabilities can be34083408+retrieved with KVM_X86_GET_MCE_CAP_SUPPORTED.34093409+34103410+4.106 KVM_X86_SET_MCE34113411+34123412+Capability: KVM_CAP_MCE34133413+Architectures: x8634143414+Type: vcpu ioctl34153415+Parameters: struct kvm_x86_mce (in)34163416+Returns: 0 on success,34173417+ -EFAULT if struct kvm_x86_mce cannot be read,34183418+ -EINVAL if the bank number is invalid,34193419+ -EINVAL if VAL bit is not set in status field.34203420+34213421+Inject a machine check error (MCE) into the guest. The input34223422+parameter is:34233423+34243424+struct kvm_x86_mce {34253425+ __u64 status;34263426+ __u64 addr;34273427+ __u64 misc;34283428+ __u64 mcg_status;34293429+ __u8 bank;34303430+ __u8 pad1[7];34313431+ __u64 pad2[3];34323432+};34333433+34343434+If the MCE being reported is an uncorrected error, KVM will34353435+inject it as an MCE exception into the guest. If the guest34363436+MCG_STATUS register reports that an MCE is in progress, KVM34373437+causes an KVM_EXIT_SHUTDOWN vmexit.34383438+34393439+Otherwise, if the MCE is a corrected error, KVM will just34403440+store it in the corresponding bank (provided this bank is34413441+not holding a previously reported uncorrected error).34423442+338034435. The kvm_run structure33813444------------------------33823445
···100100;################### Non TLB Exception Handling #############################101101102102ENTRY(EV_SWI)103103- flag 1103103+ ; TODO: implement this104104+ EXCEPTION_PROLOGUE105105+ b ret_from_exception104106END(EV_SWI)105107106108ENTRY(EV_DivZero)107107- flag 1109109+ ; TODO: implement this110110+ EXCEPTION_PROLOGUE111111+ b ret_from_exception108112END(EV_DivZero)109113110114ENTRY(EV_DCError)111111- flag 1115115+ ; TODO: implement this116116+ EXCEPTION_PROLOGUE117117+ b ret_from_exception112118END(EV_DCError)113119114120; ---------------------------------------------
···633633634634 write_aux_reg(ARC_REG_SLC_INVALIDATE, 1);635635636636+ /* Make sure "busy" bit reports correct stataus, see STAR 9001165532 */637637+ read_aux_reg(r);638638+636639 /* Important to wait for flush to complete */637640 while (read_aux_reg(r) & SLC_CTRL_BUSY);638641}
···7070 0, sizeof(*regs));7171}72727373-static int gpr_set(struct task_struct *target,7474- const struct user_regset *regset,7575- unsigned int pos, unsigned int count,7676- const void *kbuf, const void __user *ubuf)7777-{7878- int ret;7979- struct pt_regs *regs = task_pt_regs(target);8080-8181- /* Don't copyin TSR or CSR */8282- ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf,8383- ®s,8484- 0, PT_TSR * sizeof(long));8585- if (ret)8686- return ret;8787-8888- ret = user_regset_copyin_ignore(&pos, &count, &kbuf, &ubuf,8989- PT_TSR * sizeof(long),9090- (PT_TSR + 1) * sizeof(long));9191- if (ret)9292- return ret;9393-9494- ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf,9595- ®s,9696- (PT_TSR + 1) * sizeof(long),9797- PT_CSR * sizeof(long));9898- if (ret)9999- return ret;100100-101101- ret = user_regset_copyin_ignore(&pos, &count, &kbuf, &ubuf,102102- PT_CSR * sizeof(long),103103- (PT_CSR + 1) * sizeof(long));104104- if (ret)105105- return ret;106106-107107- ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf,108108- ®s,109109- (PT_CSR + 1) * sizeof(long), -1);110110- return ret;111111-}112112-11373enum c6x_regset {11474 REGSET_GPR,11575};···81121 .size = sizeof(u32),82122 .align = sizeof(u32),83123 .get = gpr_get,8484- .set = gpr_set85124 },86125};87126
+5-3
arch/h8300/kernel/ptrace.c
···9595 long *reg = (long *)®s;96969797 /* build user regs in buffer */9898- for (r = 0; r < ARRAY_SIZE(register_offset); r++)9898+ BUILD_BUG_ON(sizeof(regs) % sizeof(long) != 0);9999+ for (r = 0; r < sizeof(regs) / sizeof(long); r++)99100 *reg++ = h8300_get_reg(target, r);100101101102 return user_regset_copyout(&pos, &count, &kbuf, &ubuf,···114113 long *reg;115114116115 /* build user regs in buffer */117117- for (reg = (long *)®s, r = 0; r < ARRAY_SIZE(register_offset); r++)116116+ BUILD_BUG_ON(sizeof(regs) % sizeof(long) != 0);117117+ for (reg = (long *)®s, r = 0; r < sizeof(regs) / sizeof(long); r++)118118 *reg++ = h8300_get_reg(target, r);119119120120 ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf,···124122 return ret;125123126124 /* write back to pt_regs */127127- for (reg = (long *)®s, r = 0; r < ARRAY_SIZE(register_offset); r++)125125+ for (reg = (long *)®s, r = 0; r < sizeof(regs) / sizeof(long); r++)128126 h8300_put_reg(target, r, *reg++);129127 return 0;130128}
+13-1
arch/m68k/configs/amiga_defconfig
···2525# CONFIG_EFI_PARTITION is not set2626CONFIG_SYSV68_PARTITION=y2727CONFIG_IOSCHED_DEADLINE=m2828+CONFIG_MQ_IOSCHED_DEADLINE=m2829CONFIG_KEXEC=y2930CONFIG_BOOTINFO_PROC=y3031CONFIG_M68020=y···6160CONFIG_NET_FOU_IP_TUNNELS=y6261CONFIG_INET_AH=m6362CONFIG_INET_ESP=m6363+CONFIG_INET_ESP_OFFLOAD=m6464CONFIG_INET_IPCOMP=m6565CONFIG_INET_XFRM_MODE_TRANSPORT=m6666CONFIG_INET_XFRM_MODE_TUNNEL=m···7371CONFIG_IPV6_ROUTER_PREF=y7472CONFIG_INET6_AH=m7573CONFIG_INET6_ESP=m7474+CONFIG_INET6_ESP_OFFLOAD=m7675CONFIG_INET6_IPCOMP=m7776CONFIG_IPV6_ILA=m7877CONFIG_IPV6_VTI=m···104101CONFIG_NFT_CT=m105102CONFIG_NFT_SET_RBTREE=m106103CONFIG_NFT_SET_HASH=m104104+CONFIG_NFT_SET_BITMAP=m107105CONFIG_NFT_COUNTER=m108106CONFIG_NFT_LOG=m109107CONFIG_NFT_LIMIT=m···302298CONFIG_NET_L3_MASTER_DEV=y303299CONFIG_AF_KCM=m304300# CONFIG_WIRELESS is not set301301+CONFIG_PSAMPLE=m302302+CONFIG_NET_IFE=m305303CONFIG_NET_DEVLINK=m306304# CONFIG_UEVENT_HELPER is not set307305CONFIG_DEVTMPFS=y···377371CONFIG_MACVLAN=m378372CONFIG_MACVTAP=m379373CONFIG_IPVLAN=m374374+CONFIG_IPVTAP=m380375CONFIG_VXLAN=m381376CONFIG_GENEVE=m382377CONFIG_GTP=m···390383# CONFIG_NET_VENDOR_AMAZON is not set391384CONFIG_A2065=y392385CONFIG_ARIADNE=y386386+# CONFIG_NET_VENDOR_AQUANTIA is not set393387# CONFIG_NET_VENDOR_ARC is not set394388# CONFIG_NET_CADENCE is not set395389# CONFIG_NET_VENDOR_BROADCOM is not set···412404# CONFIG_NET_VENDOR_SOLARFLARE is not set413405# CONFIG_NET_VENDOR_SMSC is not set414406# CONFIG_NET_VENDOR_STMICRO is not set415415-# CONFIG_NET_VENDOR_SYNOPSYS is not set416407# CONFIG_NET_VENDOR_VIA is not set417408# CONFIG_NET_VENDOR_WIZNET is not set418409CONFIG_PPP=m···571564CONFIG_DLM=m572565# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set573566CONFIG_MAGIC_SYSRQ=y567567+CONFIG_WW_MUTEX_SELFTEST=m568568+CONFIG_ATOMIC64_SELFTEST=m574569CONFIG_ASYNC_RAID6_TEST=m575570CONFIG_TEST_HEXDUMP=m576571CONFIG_TEST_STRING_HELPERS=m···603594CONFIG_CRYPTO_LRW=m604595CONFIG_CRYPTO_PCBC=m605596CONFIG_CRYPTO_KEYWRAP=m597597+CONFIG_CRYPTO_CMAC=m606598CONFIG_CRYPTO_XCBC=m607599CONFIG_CRYPTO_VMAC=m608600CONFIG_CRYPTO_MICHAEL_MIC=m···615605CONFIG_CRYPTO_SHA3=m616606CONFIG_CRYPTO_TGR192=m617607CONFIG_CRYPTO_WP512=m608608+CONFIG_CRYPTO_AES_TI=m618609CONFIG_CRYPTO_ANUBIS=m619610CONFIG_CRYPTO_BLOWFISH=m620611CONFIG_CRYPTO_CAMELLIA=m···640629CONFIG_CRYPTO_USER_API_RNG=m641630CONFIG_CRYPTO_USER_API_AEAD=m642631# CONFIG_CRYPTO_HW is not set632632+CONFIG_CRC32_SELFTEST=m643633CONFIG_XZ_DEC_TEST=m
+13-1
arch/m68k/configs/apollo_defconfig
···2626# CONFIG_EFI_PARTITION is not set2727CONFIG_SYSV68_PARTITION=y2828CONFIG_IOSCHED_DEADLINE=m2929+CONFIG_MQ_IOSCHED_DEADLINE=m2930CONFIG_KEXEC=y3031CONFIG_BOOTINFO_PROC=y3132CONFIG_M68020=y···5958CONFIG_NET_FOU_IP_TUNNELS=y6059CONFIG_INET_AH=m6160CONFIG_INET_ESP=m6161+CONFIG_INET_ESP_OFFLOAD=m6262CONFIG_INET_IPCOMP=m6363CONFIG_INET_XFRM_MODE_TRANSPORT=m6464CONFIG_INET_XFRM_MODE_TUNNEL=m···7169CONFIG_IPV6_ROUTER_PREF=y7270CONFIG_INET6_AH=m7371CONFIG_INET6_ESP=m7272+CONFIG_INET6_ESP_OFFLOAD=m7473CONFIG_INET6_IPCOMP=m7574CONFIG_IPV6_ILA=m7675CONFIG_IPV6_VTI=m···10299CONFIG_NFT_CT=m103100CONFIG_NFT_SET_RBTREE=m104101CONFIG_NFT_SET_HASH=m102102+CONFIG_NFT_SET_BITMAP=m105103CONFIG_NFT_COUNTER=m106104CONFIG_NFT_LOG=m107105CONFIG_NFT_LIMIT=m···300296CONFIG_NET_L3_MASTER_DEV=y301297CONFIG_AF_KCM=m302298# CONFIG_WIRELESS is not set299299+CONFIG_PSAMPLE=m300300+CONFIG_NET_IFE=m303301CONFIG_NET_DEVLINK=m304302# CONFIG_UEVENT_HELPER is not set305303CONFIG_DEVTMPFS=y···359353CONFIG_MACVLAN=m360354CONFIG_MACVTAP=m361355CONFIG_IPVLAN=m356356+CONFIG_IPVTAP=m362357CONFIG_VXLAN=m363358CONFIG_GENEVE=m364359CONFIG_GTP=m···369362CONFIG_VETH=m370363# CONFIG_NET_VENDOR_ALACRITECH is not set371364# CONFIG_NET_VENDOR_AMAZON is not set365365+# CONFIG_NET_VENDOR_AQUANTIA is not set372366# CONFIG_NET_VENDOR_ARC is not set373367# CONFIG_NET_CADENCE is not set374368# CONFIG_NET_VENDOR_BROADCOM is not set···386378# CONFIG_NET_VENDOR_SEEQ is not set387379# CONFIG_NET_VENDOR_SOLARFLARE is not set388380# CONFIG_NET_VENDOR_STMICRO is not set389389-# CONFIG_NET_VENDOR_SYNOPSYS is not set390381# CONFIG_NET_VENDOR_VIA is not set391382# CONFIG_NET_VENDOR_WIZNET is not set392383CONFIG_PPP=m···530523CONFIG_DLM=m531524# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set532525CONFIG_MAGIC_SYSRQ=y526526+CONFIG_WW_MUTEX_SELFTEST=m527527+CONFIG_ATOMIC64_SELFTEST=m533528CONFIG_ASYNC_RAID6_TEST=m534529CONFIG_TEST_HEXDUMP=m535530CONFIG_TEST_STRING_HELPERS=m···562553CONFIG_CRYPTO_LRW=m563554CONFIG_CRYPTO_PCBC=m564555CONFIG_CRYPTO_KEYWRAP=m556556+CONFIG_CRYPTO_CMAC=m565557CONFIG_CRYPTO_XCBC=m566558CONFIG_CRYPTO_VMAC=m567559CONFIG_CRYPTO_MICHAEL_MIC=m···574564CONFIG_CRYPTO_SHA3=m575565CONFIG_CRYPTO_TGR192=m576566CONFIG_CRYPTO_WP512=m567567+CONFIG_CRYPTO_AES_TI=m577568CONFIG_CRYPTO_ANUBIS=m578569CONFIG_CRYPTO_BLOWFISH=m579570CONFIG_CRYPTO_CAMELLIA=m···599588CONFIG_CRYPTO_USER_API_RNG=m600589CONFIG_CRYPTO_USER_API_AEAD=m601590# CONFIG_CRYPTO_HW is not set591591+CONFIG_CRC32_SELFTEST=m602592CONFIG_XZ_DEC_TEST=m
+13-1
arch/m68k/configs/atari_defconfig
···2525# CONFIG_EFI_PARTITION is not set2626CONFIG_SYSV68_PARTITION=y2727CONFIG_IOSCHED_DEADLINE=m2828+CONFIG_MQ_IOSCHED_DEADLINE=m2829CONFIG_KEXEC=y2930CONFIG_BOOTINFO_PROC=y3031CONFIG_M68020=y···5958CONFIG_NET_FOU_IP_TUNNELS=y6059CONFIG_INET_AH=m6160CONFIG_INET_ESP=m6161+CONFIG_INET_ESP_OFFLOAD=m6262CONFIG_INET_IPCOMP=m6363CONFIG_INET_XFRM_MODE_TRANSPORT=m6464CONFIG_INET_XFRM_MODE_TUNNEL=m···7169CONFIG_IPV6_ROUTER_PREF=y7270CONFIG_INET6_AH=m7371CONFIG_INET6_ESP=m7272+CONFIG_INET6_ESP_OFFLOAD=m7473CONFIG_INET6_IPCOMP=m7574CONFIG_IPV6_ILA=m7675CONFIG_IPV6_VTI=m···10299CONFIG_NFT_CT=m103100CONFIG_NFT_SET_RBTREE=m104101CONFIG_NFT_SET_HASH=m102102+CONFIG_NFT_SET_BITMAP=m105103CONFIG_NFT_COUNTER=m106104CONFIG_NFT_LOG=m107105CONFIG_NFT_LIMIT=m···300296CONFIG_NET_L3_MASTER_DEV=y301297CONFIG_AF_KCM=m302298# CONFIG_WIRELESS is not set299299+CONFIG_PSAMPLE=m300300+CONFIG_NET_IFE=m303301CONFIG_NET_DEVLINK=m304302# CONFIG_UEVENT_HELPER is not set305303CONFIG_DEVTMPFS=y···368362CONFIG_MACVLAN=m369363CONFIG_MACVTAP=m370364CONFIG_IPVLAN=m365365+CONFIG_IPVTAP=m371366CONFIG_VXLAN=m372367CONFIG_GENEVE=m373368CONFIG_GTP=m···379372# CONFIG_NET_VENDOR_ALACRITECH is not set380373# CONFIG_NET_VENDOR_AMAZON is not set381374CONFIG_ATARILANCE=y375375+# CONFIG_NET_VENDOR_AQUANTIA is not set382376# CONFIG_NET_VENDOR_ARC is not set383377# CONFIG_NET_CADENCE is not set384378# CONFIG_NET_VENDOR_BROADCOM is not set···397389# CONFIG_NET_VENDOR_SOLARFLARE is not set398390CONFIG_SMC91X=y399391# CONFIG_NET_VENDOR_STMICRO is not set400400-# CONFIG_NET_VENDOR_SYNOPSYS is not set401392# CONFIG_NET_VENDOR_VIA is not set402393# CONFIG_NET_VENDOR_WIZNET is not set403394CONFIG_PPP=m···551544CONFIG_DLM=m552545# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set553546CONFIG_MAGIC_SYSRQ=y547547+CONFIG_WW_MUTEX_SELFTEST=m548548+CONFIG_ATOMIC64_SELFTEST=m554549CONFIG_ASYNC_RAID6_TEST=m555550CONFIG_TEST_HEXDUMP=m556551CONFIG_TEST_STRING_HELPERS=m···583574CONFIG_CRYPTO_LRW=m584575CONFIG_CRYPTO_PCBC=m585576CONFIG_CRYPTO_KEYWRAP=m577577+CONFIG_CRYPTO_CMAC=m586578CONFIG_CRYPTO_XCBC=m587579CONFIG_CRYPTO_VMAC=m588580CONFIG_CRYPTO_MICHAEL_MIC=m···595585CONFIG_CRYPTO_SHA3=m596586CONFIG_CRYPTO_TGR192=m597587CONFIG_CRYPTO_WP512=m588588+CONFIG_CRYPTO_AES_TI=m598589CONFIG_CRYPTO_ANUBIS=m599590CONFIG_CRYPTO_BLOWFISH=m600591CONFIG_CRYPTO_CAMELLIA=m···620609CONFIG_CRYPTO_USER_API_RNG=m621610CONFIG_CRYPTO_USER_API_AEAD=m622611# CONFIG_CRYPTO_HW is not set612612+CONFIG_CRC32_SELFTEST=m623613CONFIG_XZ_DEC_TEST=m
+13-1
arch/m68k/configs/bvme6000_defconfig
···2525CONFIG_SUN_PARTITION=y2626# CONFIG_EFI_PARTITION is not set2727CONFIG_IOSCHED_DEADLINE=m2828+CONFIG_MQ_IOSCHED_DEADLINE=m2829CONFIG_KEXEC=y2930CONFIG_BOOTINFO_PROC=y3031CONFIG_M68040=y···5756CONFIG_NET_FOU_IP_TUNNELS=y5857CONFIG_INET_AH=m5958CONFIG_INET_ESP=m5959+CONFIG_INET_ESP_OFFLOAD=m6060CONFIG_INET_IPCOMP=m6161CONFIG_INET_XFRM_MODE_TRANSPORT=m6262CONFIG_INET_XFRM_MODE_TUNNEL=m···6967CONFIG_IPV6_ROUTER_PREF=y7068CONFIG_INET6_AH=m7169CONFIG_INET6_ESP=m7070+CONFIG_INET6_ESP_OFFLOAD=m7271CONFIG_INET6_IPCOMP=m7372CONFIG_IPV6_ILA=m7473CONFIG_IPV6_VTI=m···10097CONFIG_NFT_CT=m10198CONFIG_NFT_SET_RBTREE=m10299CONFIG_NFT_SET_HASH=m100100+CONFIG_NFT_SET_BITMAP=m103101CONFIG_NFT_COUNTER=m104102CONFIG_NFT_LOG=m105103CONFIG_NFT_LIMIT=m···298294CONFIG_NET_L3_MASTER_DEV=y299295CONFIG_AF_KCM=m300296# CONFIG_WIRELESS is not set297297+CONFIG_PSAMPLE=m298298+CONFIG_NET_IFE=m301299CONFIG_NET_DEVLINK=m302300# CONFIG_UEVENT_HELPER is not set303301CONFIG_DEVTMPFS=y···358352CONFIG_MACVLAN=m359353CONFIG_MACVTAP=m360354CONFIG_IPVLAN=m355355+CONFIG_IPVTAP=m361356CONFIG_VXLAN=m362357CONFIG_GENEVE=m363358CONFIG_GTP=m···368361CONFIG_VETH=m369362# CONFIG_NET_VENDOR_ALACRITECH is not set370363# CONFIG_NET_VENDOR_AMAZON is not set364364+# CONFIG_NET_VENDOR_AQUANTIA is not set371365# CONFIG_NET_VENDOR_ARC is not set372366# CONFIG_NET_CADENCE is not set373367# CONFIG_NET_VENDOR_BROADCOM is not set···385377# CONFIG_NET_VENDOR_SEEQ is not set386378# CONFIG_NET_VENDOR_SOLARFLARE is not set387379# CONFIG_NET_VENDOR_STMICRO is not set388388-# CONFIG_NET_VENDOR_SYNOPSYS is not set389380# CONFIG_NET_VENDOR_VIA is not set390381# CONFIG_NET_VENDOR_WIZNET is not set391382CONFIG_PPP=m···522515CONFIG_DLM=m523516# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set524517CONFIG_MAGIC_SYSRQ=y518518+CONFIG_WW_MUTEX_SELFTEST=m519519+CONFIG_ATOMIC64_SELFTEST=m525520CONFIG_ASYNC_RAID6_TEST=m526521CONFIG_TEST_HEXDUMP=m527522CONFIG_TEST_STRING_HELPERS=m···554545CONFIG_CRYPTO_LRW=m555546CONFIG_CRYPTO_PCBC=m556547CONFIG_CRYPTO_KEYWRAP=m548548+CONFIG_CRYPTO_CMAC=m557549CONFIG_CRYPTO_XCBC=m558550CONFIG_CRYPTO_VMAC=m559551CONFIG_CRYPTO_MICHAEL_MIC=m···566556CONFIG_CRYPTO_SHA3=m567557CONFIG_CRYPTO_TGR192=m568558CONFIG_CRYPTO_WP512=m559559+CONFIG_CRYPTO_AES_TI=m569560CONFIG_CRYPTO_ANUBIS=m570561CONFIG_CRYPTO_BLOWFISH=m571562CONFIG_CRYPTO_CAMELLIA=m···591580CONFIG_CRYPTO_USER_API_RNG=m592581CONFIG_CRYPTO_USER_API_AEAD=m593582# CONFIG_CRYPTO_HW is not set583583+CONFIG_CRC32_SELFTEST=m594584CONFIG_XZ_DEC_TEST=m
+13-1
arch/m68k/configs/hp300_defconfig
···2626# CONFIG_EFI_PARTITION is not set2727CONFIG_SYSV68_PARTITION=y2828CONFIG_IOSCHED_DEADLINE=m2929+CONFIG_MQ_IOSCHED_DEADLINE=m2930CONFIG_KEXEC=y3031CONFIG_BOOTINFO_PROC=y3132CONFIG_M68020=y···5958CONFIG_NET_FOU_IP_TUNNELS=y6059CONFIG_INET_AH=m6160CONFIG_INET_ESP=m6161+CONFIG_INET_ESP_OFFLOAD=m6262CONFIG_INET_IPCOMP=m6363CONFIG_INET_XFRM_MODE_TRANSPORT=m6464CONFIG_INET_XFRM_MODE_TUNNEL=m···7169CONFIG_IPV6_ROUTER_PREF=y7270CONFIG_INET6_AH=m7371CONFIG_INET6_ESP=m7272+CONFIG_INET6_ESP_OFFLOAD=m7473CONFIG_INET6_IPCOMP=m7574CONFIG_IPV6_ILA=m7675CONFIG_IPV6_VTI=m···10299CONFIG_NFT_CT=m103100CONFIG_NFT_SET_RBTREE=m104101CONFIG_NFT_SET_HASH=m102102+CONFIG_NFT_SET_BITMAP=m105103CONFIG_NFT_COUNTER=m106104CONFIG_NFT_LOG=m107105CONFIG_NFT_LIMIT=m···300296CONFIG_NET_L3_MASTER_DEV=y301297CONFIG_AF_KCM=m302298# CONFIG_WIRELESS is not set299299+CONFIG_PSAMPLE=m300300+CONFIG_NET_IFE=m303301CONFIG_NET_DEVLINK=m304302# CONFIG_UEVENT_HELPER is not set305303CONFIG_DEVTMPFS=y···359353CONFIG_MACVLAN=m360354CONFIG_MACVTAP=m361355CONFIG_IPVLAN=m356356+CONFIG_IPVTAP=m362357CONFIG_VXLAN=m363358CONFIG_GENEVE=m364359CONFIG_GTP=m···370363# CONFIG_NET_VENDOR_ALACRITECH is not set371364# CONFIG_NET_VENDOR_AMAZON is not set372365CONFIG_HPLANCE=y366366+# CONFIG_NET_VENDOR_AQUANTIA is not set373367# CONFIG_NET_VENDOR_ARC is not set374368# CONFIG_NET_CADENCE is not set375369# CONFIG_NET_VENDOR_BROADCOM is not set···387379# CONFIG_NET_VENDOR_SEEQ is not set388380# CONFIG_NET_VENDOR_SOLARFLARE is not set389381# CONFIG_NET_VENDOR_STMICRO is not set390390-# CONFIG_NET_VENDOR_SYNOPSYS is not set391382# CONFIG_NET_VENDOR_VIA is not set392383# CONFIG_NET_VENDOR_WIZNET is not set393384CONFIG_PPP=m···532525CONFIG_DLM=m533526# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set534527CONFIG_MAGIC_SYSRQ=y528528+CONFIG_WW_MUTEX_SELFTEST=m529529+CONFIG_ATOMIC64_SELFTEST=m535530CONFIG_ASYNC_RAID6_TEST=m536531CONFIG_TEST_HEXDUMP=m537532CONFIG_TEST_STRING_HELPERS=m···564555CONFIG_CRYPTO_LRW=m565556CONFIG_CRYPTO_PCBC=m566557CONFIG_CRYPTO_KEYWRAP=m558558+CONFIG_CRYPTO_CMAC=m567559CONFIG_CRYPTO_XCBC=m568560CONFIG_CRYPTO_VMAC=m569561CONFIG_CRYPTO_MICHAEL_MIC=m···576566CONFIG_CRYPTO_SHA3=m577567CONFIG_CRYPTO_TGR192=m578568CONFIG_CRYPTO_WP512=m569569+CONFIG_CRYPTO_AES_TI=m579570CONFIG_CRYPTO_ANUBIS=m580571CONFIG_CRYPTO_BLOWFISH=m581572CONFIG_CRYPTO_CAMELLIA=m···601590CONFIG_CRYPTO_USER_API_RNG=m602591CONFIG_CRYPTO_USER_API_AEAD=m603592# CONFIG_CRYPTO_HW is not set593593+CONFIG_CRC32_SELFTEST=m604594CONFIG_XZ_DEC_TEST=m
+13-1
arch/m68k/configs/mac_defconfig
···2525# CONFIG_EFI_PARTITION is not set2626CONFIG_SYSV68_PARTITION=y2727CONFIG_IOSCHED_DEADLINE=m2828+CONFIG_MQ_IOSCHED_DEADLINE=m2829CONFIG_KEXEC=y2930CONFIG_BOOTINFO_PROC=y3031CONFIG_M68020=y···5857CONFIG_NET_FOU_IP_TUNNELS=y5958CONFIG_INET_AH=m6059CONFIG_INET_ESP=m6060+CONFIG_INET_ESP_OFFLOAD=m6161CONFIG_INET_IPCOMP=m6262CONFIG_INET_XFRM_MODE_TRANSPORT=m6363CONFIG_INET_XFRM_MODE_TUNNEL=m···7068CONFIG_IPV6_ROUTER_PREF=y7169CONFIG_INET6_AH=m7270CONFIG_INET6_ESP=m7171+CONFIG_INET6_ESP_OFFLOAD=m7372CONFIG_INET6_IPCOMP=m7473CONFIG_IPV6_ILA=m7574CONFIG_IPV6_VTI=m···10198CONFIG_NFT_CT=m10299CONFIG_NFT_SET_RBTREE=m103100CONFIG_NFT_SET_HASH=m101101+CONFIG_NFT_SET_BITMAP=m104102CONFIG_NFT_COUNTER=m105103CONFIG_NFT_LOG=m106104CONFIG_NFT_LIMIT=m···302298CONFIG_NET_L3_MASTER_DEV=y303299CONFIG_AF_KCM=m304300# CONFIG_WIRELESS is not set301301+CONFIG_PSAMPLE=m302302+CONFIG_NET_IFE=m305303CONFIG_NET_DEVLINK=m306304# CONFIG_UEVENT_HELPER is not set307305CONFIG_DEVTMPFS=y···375369CONFIG_MACVLAN=m376370CONFIG_MACVTAP=m377371CONFIG_IPVLAN=m372372+CONFIG_IPVTAP=m378373CONFIG_VXLAN=m379374CONFIG_GENEVE=m380375CONFIG_GTP=m···386379# CONFIG_NET_VENDOR_ALACRITECH is not set387380# CONFIG_NET_VENDOR_AMAZON is not set388381CONFIG_MACMACE=y382382+# CONFIG_NET_VENDOR_AQUANTIA is not set389383# CONFIG_NET_VENDOR_ARC is not set390384# CONFIG_NET_CADENCE is not set391385# CONFIG_NET_VENDOR_BROADCOM is not set···406398# CONFIG_NET_VENDOR_SOLARFLARE is not set407399# CONFIG_NET_VENDOR_SMSC is not set408400# CONFIG_NET_VENDOR_STMICRO is not set409409-# CONFIG_NET_VENDOR_SYNOPSYS is not set410401# CONFIG_NET_VENDOR_VIA is not set411402# CONFIG_NET_VENDOR_WIZNET is not set412403CONFIG_PPP=m···554547CONFIG_DLM=m555548# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set556549CONFIG_MAGIC_SYSRQ=y550550+CONFIG_WW_MUTEX_SELFTEST=m551551+CONFIG_ATOMIC64_SELFTEST=m557552CONFIG_ASYNC_RAID6_TEST=m558553CONFIG_TEST_HEXDUMP=m559554CONFIG_TEST_STRING_HELPERS=m···586577CONFIG_CRYPTO_LRW=m587578CONFIG_CRYPTO_PCBC=m588579CONFIG_CRYPTO_KEYWRAP=m580580+CONFIG_CRYPTO_CMAC=m589581CONFIG_CRYPTO_XCBC=m590582CONFIG_CRYPTO_VMAC=m591583CONFIG_CRYPTO_MICHAEL_MIC=m···598588CONFIG_CRYPTO_SHA3=m599589CONFIG_CRYPTO_TGR192=m600590CONFIG_CRYPTO_WP512=m591591+CONFIG_CRYPTO_AES_TI=m601592CONFIG_CRYPTO_ANUBIS=m602593CONFIG_CRYPTO_BLOWFISH=m603594CONFIG_CRYPTO_CAMELLIA=m···623612CONFIG_CRYPTO_USER_API_RNG=m624613CONFIG_CRYPTO_USER_API_AEAD=m625614# CONFIG_CRYPTO_HW is not set615615+CONFIG_CRC32_SELFTEST=m626616CONFIG_XZ_DEC_TEST=m
+13-1
arch/m68k/configs/multi_defconfig
···2121CONFIG_UNIXWARE_DISKLABEL=y2222# CONFIG_EFI_PARTITION is not set2323CONFIG_IOSCHED_DEADLINE=m2424+CONFIG_MQ_IOSCHED_DEADLINE=m2425CONFIG_KEXEC=y2526CONFIG_BOOTINFO_PROC=y2627CONFIG_M68020=y···6867CONFIG_NET_FOU_IP_TUNNELS=y6968CONFIG_INET_AH=m7069CONFIG_INET_ESP=m7070+CONFIG_INET_ESP_OFFLOAD=m7171CONFIG_INET_IPCOMP=m7272CONFIG_INET_XFRM_MODE_TRANSPORT=m7373CONFIG_INET_XFRM_MODE_TUNNEL=m···8078CONFIG_IPV6_ROUTER_PREF=y8179CONFIG_INET6_AH=m8280CONFIG_INET6_ESP=m8181+CONFIG_INET6_ESP_OFFLOAD=m8382CONFIG_INET6_IPCOMP=m8483CONFIG_IPV6_ILA=m8584CONFIG_IPV6_VTI=m···111108CONFIG_NFT_CT=m112109CONFIG_NFT_SET_RBTREE=m113110CONFIG_NFT_SET_HASH=m111111+CONFIG_NFT_SET_BITMAP=m114112CONFIG_NFT_COUNTER=m115113CONFIG_NFT_LOG=m116114CONFIG_NFT_LIMIT=m···312308CONFIG_NET_L3_MASTER_DEV=y313309CONFIG_AF_KCM=m314310# CONFIG_WIRELESS is not set311311+CONFIG_PSAMPLE=m312312+CONFIG_NET_IFE=m315313CONFIG_NET_DEVLINK=m316314# CONFIG_UEVENT_HELPER is not set317315CONFIG_DEVTMPFS=y···408402CONFIG_MACVLAN=m409403CONFIG_MACVTAP=m410404CONFIG_IPVLAN=m405405+CONFIG_IPVTAP=m411406CONFIG_VXLAN=m412407CONFIG_GENEVE=m413408CONFIG_GTP=m···426419CONFIG_MVME147_NET=y427420CONFIG_SUN3LANCE=y428421CONFIG_MACMACE=y422422+# CONFIG_NET_VENDOR_AQUANTIA is not set429423# CONFIG_NET_VENDOR_ARC is not set430424# CONFIG_NET_CADENCE is not set431425# CONFIG_NET_VENDOR_BROADCOM is not set···452444# CONFIG_NET_VENDOR_SOLARFLARE is not set453445CONFIG_SMC91X=y454446# CONFIG_NET_VENDOR_STMICRO is not set455455-# CONFIG_NET_VENDOR_SYNOPSYS is not set456447# CONFIG_NET_VENDOR_VIA is not set457448# CONFIG_NET_VENDOR_WIZNET is not set458449CONFIG_PLIP=m···634627CONFIG_DLM=m635628# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set636629CONFIG_MAGIC_SYSRQ=y630630+CONFIG_WW_MUTEX_SELFTEST=m631631+CONFIG_ATOMIC64_SELFTEST=m637632CONFIG_ASYNC_RAID6_TEST=m638633CONFIG_TEST_HEXDUMP=m639634CONFIG_TEST_STRING_HELPERS=m···666657CONFIG_CRYPTO_LRW=m667658CONFIG_CRYPTO_PCBC=m668659CONFIG_CRYPTO_KEYWRAP=m660660+CONFIG_CRYPTO_CMAC=m669661CONFIG_CRYPTO_XCBC=m670662CONFIG_CRYPTO_VMAC=m671663CONFIG_CRYPTO_MICHAEL_MIC=m···678668CONFIG_CRYPTO_SHA3=m679669CONFIG_CRYPTO_TGR192=m680670CONFIG_CRYPTO_WP512=m671671+CONFIG_CRYPTO_AES_TI=m681672CONFIG_CRYPTO_ANUBIS=m682673CONFIG_CRYPTO_BLOWFISH=m683674CONFIG_CRYPTO_CAMELLIA=m···703692CONFIG_CRYPTO_USER_API_RNG=m704693CONFIG_CRYPTO_USER_API_AEAD=m705694# CONFIG_CRYPTO_HW is not set695695+CONFIG_CRC32_SELFTEST=m706696CONFIG_XZ_DEC_TEST=m
+13-1
arch/m68k/configs/mvme147_defconfig
···2525CONFIG_SUN_PARTITION=y2626# CONFIG_EFI_PARTITION is not set2727CONFIG_IOSCHED_DEADLINE=m2828+CONFIG_MQ_IOSCHED_DEADLINE=m2829CONFIG_KEXEC=y2930CONFIG_BOOTINFO_PROC=y3031CONFIG_M68030=y···5655CONFIG_NET_FOU_IP_TUNNELS=y5756CONFIG_INET_AH=m5857CONFIG_INET_ESP=m5858+CONFIG_INET_ESP_OFFLOAD=m5959CONFIG_INET_IPCOMP=m6060CONFIG_INET_XFRM_MODE_TRANSPORT=m6161CONFIG_INET_XFRM_MODE_TUNNEL=m···6866CONFIG_IPV6_ROUTER_PREF=y6967CONFIG_INET6_AH=m7068CONFIG_INET6_ESP=m6969+CONFIG_INET6_ESP_OFFLOAD=m7170CONFIG_INET6_IPCOMP=m7271CONFIG_IPV6_ILA=m7372CONFIG_IPV6_VTI=m···9996CONFIG_NFT_CT=m10097CONFIG_NFT_SET_RBTREE=m10198CONFIG_NFT_SET_HASH=m9999+CONFIG_NFT_SET_BITMAP=m102100CONFIG_NFT_COUNTER=m103101CONFIG_NFT_LOG=m104102CONFIG_NFT_LIMIT=m···297293CONFIG_NET_L3_MASTER_DEV=y298294CONFIG_AF_KCM=m299295# CONFIG_WIRELESS is not set296296+CONFIG_PSAMPLE=m297297+CONFIG_NET_IFE=m300298CONFIG_NET_DEVLINK=m301299# CONFIG_UEVENT_HELPER is not set302300CONFIG_DEVTMPFS=y···357351CONFIG_MACVLAN=m358352CONFIG_MACVTAP=m359353CONFIG_IPVLAN=m354354+CONFIG_IPVTAP=m360355CONFIG_VXLAN=m361356CONFIG_GENEVE=m362357CONFIG_GTP=m···368361# CONFIG_NET_VENDOR_ALACRITECH is not set369362# CONFIG_NET_VENDOR_AMAZON is not set370363CONFIG_MVME147_NET=y364364+# CONFIG_NET_VENDOR_AQUANTIA is not set371365# CONFIG_NET_VENDOR_ARC is not set372366# CONFIG_NET_CADENCE is not set373367# CONFIG_NET_VENDOR_BROADCOM is not set···385377# CONFIG_NET_VENDOR_SEEQ is not set386378# CONFIG_NET_VENDOR_SOLARFLARE is not set387379# CONFIG_NET_VENDOR_STMICRO is not set388388-# CONFIG_NET_VENDOR_SYNOPSYS is not set389380# CONFIG_NET_VENDOR_VIA is not set390381# CONFIG_NET_VENDOR_WIZNET is not set391382CONFIG_PPP=m···522515CONFIG_DLM=m523516# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set524517CONFIG_MAGIC_SYSRQ=y518518+CONFIG_WW_MUTEX_SELFTEST=m519519+CONFIG_ATOMIC64_SELFTEST=m525520CONFIG_ASYNC_RAID6_TEST=m526521CONFIG_TEST_HEXDUMP=m527522CONFIG_TEST_STRING_HELPERS=m···554545CONFIG_CRYPTO_LRW=m555546CONFIG_CRYPTO_PCBC=m556547CONFIG_CRYPTO_KEYWRAP=m548548+CONFIG_CRYPTO_CMAC=m557549CONFIG_CRYPTO_XCBC=m558550CONFIG_CRYPTO_VMAC=m559551CONFIG_CRYPTO_MICHAEL_MIC=m···566556CONFIG_CRYPTO_SHA3=m567557CONFIG_CRYPTO_TGR192=m568558CONFIG_CRYPTO_WP512=m559559+CONFIG_CRYPTO_AES_TI=m569560CONFIG_CRYPTO_ANUBIS=m570561CONFIG_CRYPTO_BLOWFISH=m571562CONFIG_CRYPTO_CAMELLIA=m···591580CONFIG_CRYPTO_USER_API_RNG=m592581CONFIG_CRYPTO_USER_API_AEAD=m593582# CONFIG_CRYPTO_HW is not set583583+CONFIG_CRC32_SELFTEST=m594584CONFIG_XZ_DEC_TEST=m
+13-1
arch/m68k/configs/mvme16x_defconfig
···2525CONFIG_SUN_PARTITION=y2626# CONFIG_EFI_PARTITION is not set2727CONFIG_IOSCHED_DEADLINE=m2828+CONFIG_MQ_IOSCHED_DEADLINE=m2829CONFIG_KEXEC=y2930CONFIG_BOOTINFO_PROC=y3031CONFIG_M68040=y···5756CONFIG_NET_FOU_IP_TUNNELS=y5857CONFIG_INET_AH=m5958CONFIG_INET_ESP=m5959+CONFIG_INET_ESP_OFFLOAD=m6060CONFIG_INET_IPCOMP=m6161CONFIG_INET_XFRM_MODE_TRANSPORT=m6262CONFIG_INET_XFRM_MODE_TUNNEL=m···6967CONFIG_IPV6_ROUTER_PREF=y7068CONFIG_INET6_AH=m7169CONFIG_INET6_ESP=m7070+CONFIG_INET6_ESP_OFFLOAD=m7271CONFIG_INET6_IPCOMP=m7372CONFIG_IPV6_ILA=m7473CONFIG_IPV6_VTI=m···10097CONFIG_NFT_CT=m10198CONFIG_NFT_SET_RBTREE=m10299CONFIG_NFT_SET_HASH=m100100+CONFIG_NFT_SET_BITMAP=m103101CONFIG_NFT_COUNTER=m104102CONFIG_NFT_LOG=m105103CONFIG_NFT_LIMIT=m···298294CONFIG_NET_L3_MASTER_DEV=y299295CONFIG_AF_KCM=m300296# CONFIG_WIRELESS is not set297297+CONFIG_PSAMPLE=m298298+CONFIG_NET_IFE=m301299CONFIG_NET_DEVLINK=m302300# CONFIG_UEVENT_HELPER is not set303301CONFIG_DEVTMPFS=y···358352CONFIG_MACVLAN=m359353CONFIG_MACVTAP=m360354CONFIG_IPVLAN=m355355+CONFIG_IPVTAP=m361356CONFIG_VXLAN=m362357CONFIG_GENEVE=m363358CONFIG_GTP=m···368361CONFIG_VETH=m369362# CONFIG_NET_VENDOR_ALACRITECH is not set370363# CONFIG_NET_VENDOR_AMAZON is not set364364+# CONFIG_NET_VENDOR_AQUANTIA is not set371365# CONFIG_NET_VENDOR_ARC is not set372366# CONFIG_NET_CADENCE is not set373367# CONFIG_NET_VENDOR_BROADCOM is not set···385377# CONFIG_NET_VENDOR_SEEQ is not set386378# CONFIG_NET_VENDOR_SOLARFLARE is not set387379# CONFIG_NET_VENDOR_STMICRO is not set388388-# CONFIG_NET_VENDOR_SYNOPSYS is not set389380# CONFIG_NET_VENDOR_VIA is not set390381# CONFIG_NET_VENDOR_WIZNET is not set391382CONFIG_PPP=m···522515CONFIG_DLM=m523516# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set524517CONFIG_MAGIC_SYSRQ=y518518+CONFIG_WW_MUTEX_SELFTEST=m519519+CONFIG_ATOMIC64_SELFTEST=m525520CONFIG_ASYNC_RAID6_TEST=m526521CONFIG_TEST_HEXDUMP=m527522CONFIG_TEST_STRING_HELPERS=m···554545CONFIG_CRYPTO_LRW=m555546CONFIG_CRYPTO_PCBC=m556547CONFIG_CRYPTO_KEYWRAP=m548548+CONFIG_CRYPTO_CMAC=m557549CONFIG_CRYPTO_XCBC=m558550CONFIG_CRYPTO_VMAC=m559551CONFIG_CRYPTO_MICHAEL_MIC=m···566556CONFIG_CRYPTO_SHA3=m567557CONFIG_CRYPTO_TGR192=m568558CONFIG_CRYPTO_WP512=m559559+CONFIG_CRYPTO_AES_TI=m569560CONFIG_CRYPTO_ANUBIS=m570561CONFIG_CRYPTO_BLOWFISH=m571562CONFIG_CRYPTO_CAMELLIA=m···591580CONFIG_CRYPTO_USER_API_RNG=m592581CONFIG_CRYPTO_USER_API_AEAD=m593582# CONFIG_CRYPTO_HW is not set583583+CONFIG_CRC32_SELFTEST=m594584CONFIG_XZ_DEC_TEST=m
+13-1
arch/m68k/configs/q40_defconfig
···2626# CONFIG_EFI_PARTITION is not set2727CONFIG_SYSV68_PARTITION=y2828CONFIG_IOSCHED_DEADLINE=m2929+CONFIG_MQ_IOSCHED_DEADLINE=m2930CONFIG_KEXEC=y3031CONFIG_BOOTINFO_PROC=y3132CONFIG_M68040=y···5756CONFIG_NET_FOU_IP_TUNNELS=y5857CONFIG_INET_AH=m5958CONFIG_INET_ESP=m5959+CONFIG_INET_ESP_OFFLOAD=m6060CONFIG_INET_IPCOMP=m6161CONFIG_INET_XFRM_MODE_TRANSPORT=m6262CONFIG_INET_XFRM_MODE_TUNNEL=m···6967CONFIG_IPV6_ROUTER_PREF=y7068CONFIG_INET6_AH=m7169CONFIG_INET6_ESP=m7070+CONFIG_INET6_ESP_OFFLOAD=m7271CONFIG_INET6_IPCOMP=m7372CONFIG_IPV6_ILA=m7473CONFIG_IPV6_VTI=m···10097CONFIG_NFT_CT=m10198CONFIG_NFT_SET_RBTREE=m10299CONFIG_NFT_SET_HASH=m100100+CONFIG_NFT_SET_BITMAP=m103101CONFIG_NFT_COUNTER=m104102CONFIG_NFT_LOG=m105103CONFIG_NFT_LIMIT=m···298294CONFIG_NET_L3_MASTER_DEV=y299295CONFIG_AF_KCM=m300296# CONFIG_WIRELESS is not set297297+CONFIG_PSAMPLE=m298298+CONFIG_NET_IFE=m301299CONFIG_NET_DEVLINK=m302300# CONFIG_UEVENT_HELPER is not set303301CONFIG_DEVTMPFS=y···364358CONFIG_MACVLAN=m365359CONFIG_MACVTAP=m366360CONFIG_IPVLAN=m361361+CONFIG_IPVTAP=m367362CONFIG_VXLAN=m368363CONFIG_GENEVE=m369364CONFIG_GTP=m···376369# CONFIG_NET_VENDOR_ALACRITECH is not set377370# CONFIG_NET_VENDOR_AMAZON is not set378371# CONFIG_NET_VENDOR_AMD is not set372372+# CONFIG_NET_VENDOR_AQUANTIA is not set379373# CONFIG_NET_VENDOR_ARC is not set380374# CONFIG_NET_CADENCE is not set381375# CONFIG_NET_VENDOR_BROADCOM is not set···396388# CONFIG_NET_VENDOR_SOLARFLARE is not set397389# CONFIG_NET_VENDOR_SMSC is not set398390# CONFIG_NET_VENDOR_STMICRO is not set399399-# CONFIG_NET_VENDOR_SYNOPSYS is not set400391# CONFIG_NET_VENDOR_VIA is not set401392# CONFIG_NET_VENDOR_WIZNET is not set402393CONFIG_PLIP=m···545538CONFIG_DLM=m546539# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set547540CONFIG_MAGIC_SYSRQ=y541541+CONFIG_WW_MUTEX_SELFTEST=m542542+CONFIG_ATOMIC64_SELFTEST=m548543CONFIG_ASYNC_RAID6_TEST=m549544CONFIG_TEST_HEXDUMP=m550545CONFIG_TEST_STRING_HELPERS=m···577568CONFIG_CRYPTO_LRW=m578569CONFIG_CRYPTO_PCBC=m579570CONFIG_CRYPTO_KEYWRAP=m571571+CONFIG_CRYPTO_CMAC=m580572CONFIG_CRYPTO_XCBC=m581573CONFIG_CRYPTO_VMAC=m582574CONFIG_CRYPTO_MICHAEL_MIC=m···589579CONFIG_CRYPTO_SHA3=m590580CONFIG_CRYPTO_TGR192=m591581CONFIG_CRYPTO_WP512=m582582+CONFIG_CRYPTO_AES_TI=m592583CONFIG_CRYPTO_ANUBIS=m593584CONFIG_CRYPTO_BLOWFISH=m594585CONFIG_CRYPTO_CAMELLIA=m···614603CONFIG_CRYPTO_USER_API_RNG=m615604CONFIG_CRYPTO_USER_API_AEAD=m616605# CONFIG_CRYPTO_HW is not set606606+CONFIG_CRC32_SELFTEST=m617607CONFIG_XZ_DEC_TEST=m
+13-1
arch/m68k/configs/sun3_defconfig
···2525# CONFIG_EFI_PARTITION is not set2626CONFIG_SYSV68_PARTITION=y2727CONFIG_IOSCHED_DEADLINE=m2828+CONFIG_MQ_IOSCHED_DEADLINE=m2829CONFIG_KEXEC=y2930CONFIG_BOOTINFO_PROC=y3031CONFIG_SUN3=y···5453CONFIG_NET_FOU_IP_TUNNELS=y5554CONFIG_INET_AH=m5655CONFIG_INET_ESP=m5656+CONFIG_INET_ESP_OFFLOAD=m5757CONFIG_INET_IPCOMP=m5858CONFIG_INET_XFRM_MODE_TRANSPORT=m5959CONFIG_INET_XFRM_MODE_TUNNEL=m···6664CONFIG_IPV6_ROUTER_PREF=y6765CONFIG_INET6_AH=m6866CONFIG_INET6_ESP=m6767+CONFIG_INET6_ESP_OFFLOAD=m6968CONFIG_INET6_IPCOMP=m7069CONFIG_IPV6_ILA=m7170CONFIG_IPV6_VTI=m···9794CONFIG_NFT_CT=m9895CONFIG_NFT_SET_RBTREE=m9996CONFIG_NFT_SET_HASH=m9797+CONFIG_NFT_SET_BITMAP=m10098CONFIG_NFT_COUNTER=m10199CONFIG_NFT_LOG=m102100CONFIG_NFT_LIMIT=m···295291CONFIG_NET_L3_MASTER_DEV=y296292CONFIG_AF_KCM=m297293# CONFIG_WIRELESS is not set294294+CONFIG_PSAMPLE=m295295+CONFIG_NET_IFE=m298296CONFIG_NET_DEVLINK=m299297# CONFIG_UEVENT_HELPER is not set300298CONFIG_DEVTMPFS=y···355349CONFIG_MACVLAN=m356350CONFIG_MACVTAP=m357351CONFIG_IPVLAN=m352352+CONFIG_IPVTAP=m358353CONFIG_VXLAN=m359354CONFIG_GENEVE=m360355CONFIG_GTP=m···366359# CONFIG_NET_VENDOR_ALACRITECH is not set367360# CONFIG_NET_VENDOR_AMAZON is not set368361CONFIG_SUN3LANCE=y362362+# CONFIG_NET_VENDOR_AQUANTIA is not set369363# CONFIG_NET_VENDOR_ARC is not set370364# CONFIG_NET_CADENCE is not set371365# CONFIG_NET_VENDOR_EZCHIP is not set···383375# CONFIG_NET_VENDOR_SOLARFLARE is not set384376# CONFIG_NET_VENDOR_STMICRO is not set385377# CONFIG_NET_VENDOR_SUN is not set386386-# CONFIG_NET_VENDOR_SYNOPSYS is not set387378# CONFIG_NET_VENDOR_VIA is not set388379# CONFIG_NET_VENDOR_WIZNET is not set389380CONFIG_PPP=m···524517CONFIG_DLM=m525518# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set526519CONFIG_MAGIC_SYSRQ=y520520+CONFIG_WW_MUTEX_SELFTEST=m521521+CONFIG_ATOMIC64_SELFTEST=m527522CONFIG_ASYNC_RAID6_TEST=m528523CONFIG_TEST_HEXDUMP=m529524CONFIG_TEST_STRING_HELPERS=m···555546CONFIG_CRYPTO_LRW=m556547CONFIG_CRYPTO_PCBC=m557548CONFIG_CRYPTO_KEYWRAP=m549549+CONFIG_CRYPTO_CMAC=m558550CONFIG_CRYPTO_XCBC=m559551CONFIG_CRYPTO_VMAC=m560552CONFIG_CRYPTO_MICHAEL_MIC=m···567557CONFIG_CRYPTO_SHA3=m568558CONFIG_CRYPTO_TGR192=m569559CONFIG_CRYPTO_WP512=m560560+CONFIG_CRYPTO_AES_TI=m570561CONFIG_CRYPTO_ANUBIS=m571562CONFIG_CRYPTO_BLOWFISH=m572563CONFIG_CRYPTO_CAMELLIA=m···592581CONFIG_CRYPTO_USER_API_RNG=m593582CONFIG_CRYPTO_USER_API_AEAD=m594583# CONFIG_CRYPTO_HW is not set584584+CONFIG_CRC32_SELFTEST=m595585CONFIG_XZ_DEC_TEST=m
+13-1
arch/m68k/configs/sun3x_defconfig
···2525# CONFIG_EFI_PARTITION is not set2626CONFIG_SYSV68_PARTITION=y2727CONFIG_IOSCHED_DEADLINE=m2828+CONFIG_MQ_IOSCHED_DEADLINE=m2829CONFIG_KEXEC=y2930CONFIG_BOOTINFO_PROC=y3031CONFIG_SUN3X=y···5453CONFIG_NET_FOU_IP_TUNNELS=y5554CONFIG_INET_AH=m5655CONFIG_INET_ESP=m5656+CONFIG_INET_ESP_OFFLOAD=m5757CONFIG_INET_IPCOMP=m5858CONFIG_INET_XFRM_MODE_TRANSPORT=m5959CONFIG_INET_XFRM_MODE_TUNNEL=m···6664CONFIG_IPV6_ROUTER_PREF=y6765CONFIG_INET6_AH=m6866CONFIG_INET6_ESP=m6767+CONFIG_INET6_ESP_OFFLOAD=m6968CONFIG_INET6_IPCOMP=m7069CONFIG_IPV6_ILA=m7170CONFIG_IPV6_VTI=m···9794CONFIG_NFT_CT=m9895CONFIG_NFT_SET_RBTREE=m9996CONFIG_NFT_SET_HASH=m9797+CONFIG_NFT_SET_BITMAP=m10098CONFIG_NFT_COUNTER=m10199CONFIG_NFT_LOG=m102100CONFIG_NFT_LIMIT=m···295291CONFIG_NET_L3_MASTER_DEV=y296292CONFIG_AF_KCM=m297293# CONFIG_WIRELESS is not set294294+CONFIG_PSAMPLE=m295295+CONFIG_NET_IFE=m298296CONFIG_NET_DEVLINK=m299297# CONFIG_UEVENT_HELPER is not set300298CONFIG_DEVTMPFS=y···355349CONFIG_MACVLAN=m356350CONFIG_MACVTAP=m357351CONFIG_IPVLAN=m352352+CONFIG_IPVTAP=m358353CONFIG_VXLAN=m359354CONFIG_GENEVE=m360355CONFIG_GTP=m···366359# CONFIG_NET_VENDOR_ALACRITECH is not set367360# CONFIG_NET_VENDOR_AMAZON is not set368361CONFIG_SUN3LANCE=y362362+# CONFIG_NET_VENDOR_AQUANTIA is not set369363# CONFIG_NET_VENDOR_ARC is not set370364# CONFIG_NET_CADENCE is not set371365# CONFIG_NET_VENDOR_BROADCOM is not set···383375# CONFIG_NET_VENDOR_SEEQ is not set384376# CONFIG_NET_VENDOR_SOLARFLARE is not set385377# CONFIG_NET_VENDOR_STMICRO is not set386386-# CONFIG_NET_VENDOR_SYNOPSYS is not set387378# CONFIG_NET_VENDOR_VIA is not set388379# CONFIG_NET_VENDOR_WIZNET is not set389380CONFIG_PPP=m···524517CONFIG_DLM=m525518# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set526519CONFIG_MAGIC_SYSRQ=y520520+CONFIG_WW_MUTEX_SELFTEST=m521521+CONFIG_ATOMIC64_SELFTEST=m527522CONFIG_ASYNC_RAID6_TEST=m528523CONFIG_TEST_HEXDUMP=m529524CONFIG_TEST_STRING_HELPERS=m···556547CONFIG_CRYPTO_LRW=m557548CONFIG_CRYPTO_PCBC=m558549CONFIG_CRYPTO_KEYWRAP=m550550+CONFIG_CRYPTO_CMAC=m559551CONFIG_CRYPTO_XCBC=m560552CONFIG_CRYPTO_VMAC=m561553CONFIG_CRYPTO_MICHAEL_MIC=m···568558CONFIG_CRYPTO_SHA3=m569559CONFIG_CRYPTO_TGR192=m570560CONFIG_CRYPTO_WP512=m561561+CONFIG_CRYPTO_AES_TI=m571562CONFIG_CRYPTO_ANUBIS=m572563CONFIG_CRYPTO_BLOWFISH=m573564CONFIG_CRYPTO_CAMELLIA=m···593582CONFIG_CRYPTO_USER_API_RNG=m594583CONFIG_CRYPTO_USER_API_AEAD=m595584# CONFIG_CRYPTO_HW is not set585585+CONFIG_CRC32_SELFTEST=m596586CONFIG_XZ_DEC_TEST=m
+1-1
arch/m68k/include/asm/bitops.h
···148148#define __change_bit(nr, vaddr) change_bit(nr, vaddr)149149150150151151-static inline int test_bit(int nr, const unsigned long *vaddr)151151+static inline int test_bit(int nr, const volatile unsigned long *vaddr)152152{153153 return (vaddr[nr >> 5] & (1UL << (nr & 31))) != 0;154154}
···2626 * user_regset definitions.2727 */28282929+static unsigned long user_txstatus(const struct pt_regs *regs)3030+{3131+ unsigned long data = (unsigned long)regs->ctx.Flags;3232+3333+ if (regs->ctx.SaveMask & TBICTX_CBUF_BIT)3434+ data |= USER_GP_REGS_STATUS_CATCH_BIT;3535+3636+ return data;3737+}3838+2939int metag_gp_regs_copyout(const struct pt_regs *regs,3040 unsigned int pos, unsigned int count,3141 void *kbuf, void __user *ubuf)···7464 if (ret)7565 goto out;7666 /* TXSTATUS */7777- data = (unsigned long)regs->ctx.Flags;7878- if (regs->ctx.SaveMask & TBICTX_CBUF_BIT)7979- data |= USER_GP_REGS_STATUS_CATCH_BIT;6767+ data = user_txstatus(regs);8068 ret = user_regset_copyout(&pos, &count, &kbuf, &ubuf,8169 &data, 4*25, 4*26);8270 if (ret)···129121 if (ret)130122 goto out;131123 /* TXSTATUS */124124+ data = user_txstatus(regs);132125 ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf,133126 &data, 4*25, 4*26);134127 if (ret)···255246 unsigned long long *ptr;256247 int ret, i;257248249249+ if (count < 4*13)250250+ return -EINVAL;258251 /* Read the entire pipeline before making any changes */259252 ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf,260253 &rp, 0, 4*13);···316305 const void *kbuf, const void __user *ubuf)317306{318307 int ret;319319- void __user *tls;308308+ void __user *tls = target->thread.tls_ptr;320309321310 ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, &tls, 0, -1);322311 if (ret)
+2-1
arch/mips/kernel/ptrace.c
···456456 &target->thread.fpu,457457 0, sizeof(elf_fpregset_t));458458459459- for (i = 0; i < NUM_FPU_REGS; i++) {459459+ BUILD_BUG_ON(sizeof(fpr_val) != sizeof(elf_fpreg_t));460460+ for (i = 0; i < NUM_FPU_REGS && count >= sizeof(elf_fpreg_t); i++) {460461 err = user_regset_copyin(&pos, &count, &kbuf, &ubuf,461462 &fpr_val, i * sizeof(elf_fpreg_t),462463 (i + 1) * sizeof(elf_fpreg_t));
+34-25
arch/parisc/include/asm/uaccess.h
···6565 ".previous\n"66666767/*6868+ * ASM_EXCEPTIONTABLE_ENTRY_EFAULT() creates a special exception table entry6969+ * (with lowest bit set) for which the fault handler in fixup_exception() will7070+ * load -EFAULT into %r8 for a read or write fault, and zeroes the target7171+ * register in case of a read fault in get_user().7272+ */7373+#define ASM_EXCEPTIONTABLE_ENTRY_EFAULT( fault_addr, except_addr )\7474+ ASM_EXCEPTIONTABLE_ENTRY( fault_addr, except_addr + 1)7575+7676+/*6877 * The page fault handler stores, in a per-cpu area, the following information6978 * if a fixup routine is available.7079 */···10091#define __get_user(x, ptr) \10192({ \10293 register long __gu_err __asm__ ("r8") = 0; \103103- register long __gu_val __asm__ ("r9") = 0; \9494+ register long __gu_val; \10495 \10596 load_sr2(); \10697 switch (sizeof(*(ptr))) { \···116107})117108118109#define __get_user_asm(ldx, ptr) \119119- __asm__("\n1:\t" ldx "\t0(%%sr2,%2),%0\n\t" \120120- ASM_EXCEPTIONTABLE_ENTRY(1b, fixup_get_user_skip_1)\110110+ __asm__("1: " ldx " 0(%%sr2,%2),%0\n" \111111+ "9:\n" \112112+ ASM_EXCEPTIONTABLE_ENTRY_EFAULT(1b, 9b) \121113 : "=r"(__gu_val), "=r"(__gu_err) \122122- : "r"(ptr), "1"(__gu_err) \123123- : "r1");114114+ : "r"(ptr), "1"(__gu_err));124115125116#if !defined(CONFIG_64BIT)126117127118#define __get_user_asm64(ptr) \128128- __asm__("\n1:\tldw 0(%%sr2,%2),%0" \129129- "\n2:\tldw 4(%%sr2,%2),%R0\n\t" \130130- ASM_EXCEPTIONTABLE_ENTRY(1b, fixup_get_user_skip_2)\131131- ASM_EXCEPTIONTABLE_ENTRY(2b, fixup_get_user_skip_1)\119119+ __asm__(" copy %%r0,%R0\n" \120120+ "1: ldw 0(%%sr2,%2),%0\n" \121121+ "2: ldw 4(%%sr2,%2),%R0\n" \122122+ "9:\n" \123123+ ASM_EXCEPTIONTABLE_ENTRY_EFAULT(1b, 9b) \124124+ ASM_EXCEPTIONTABLE_ENTRY_EFAULT(2b, 9b) \132125 : "=r"(__gu_val), "=r"(__gu_err) \133133- : "r"(ptr), "1"(__gu_err) \134134- : "r1");126126+ : "r"(ptr), "1"(__gu_err));135127136128#endif /* !defined(CONFIG_64BIT) */137129···158148 * The "__put_user/kernel_asm()" macros tell gcc they read from memory159149 * instead of writing. This is because they do not write to any memory160150 * gcc knows about, so there are no aliasing issues. These macros must161161- * also be aware that "fixup_put_user_skip_[12]" are executed in the162162- * context of the fault, and any registers used there must be listed163163- * as clobbers. In this case only "r1" is used by the current routines.164164- * r8/r9 are already listed as err/val.151151+ * also be aware that fixups are executed in the context of the fault,152152+ * and any registers used there must be listed as clobbers.153153+ * r8 is already listed as err.165154 */166155167156#define __put_user_asm(stx, x, ptr) \168157 __asm__ __volatile__ ( \169169- "\n1:\t" stx "\t%2,0(%%sr2,%1)\n\t" \170170- ASM_EXCEPTIONTABLE_ENTRY(1b, fixup_put_user_skip_1)\158158+ "1: " stx " %2,0(%%sr2,%1)\n" \159159+ "9:\n" \160160+ ASM_EXCEPTIONTABLE_ENTRY_EFAULT(1b, 9b) \171161 : "=r"(__pu_err) \172172- : "r"(ptr), "r"(x), "0"(__pu_err) \173173- : "r1")162162+ : "r"(ptr), "r"(x), "0"(__pu_err))174163175164176165#if !defined(CONFIG_64BIT)177166178167#define __put_user_asm64(__val, ptr) do { \179168 __asm__ __volatile__ ( \180180- "\n1:\tstw %2,0(%%sr2,%1)" \181181- "\n2:\tstw %R2,4(%%sr2,%1)\n\t" \182182- ASM_EXCEPTIONTABLE_ENTRY(1b, fixup_put_user_skip_2)\183183- ASM_EXCEPTIONTABLE_ENTRY(2b, fixup_put_user_skip_1)\169169+ "1: stw %2,0(%%sr2,%1)\n" \170170+ "2: stw %R2,4(%%sr2,%1)\n" \171171+ "9:\n" \172172+ ASM_EXCEPTIONTABLE_ENTRY_EFAULT(1b, 9b) \173173+ ASM_EXCEPTIONTABLE_ENTRY_EFAULT(2b, 9b) \184174 : "=r"(__pu_err) \185185- : "r"(ptr), "r"(__val), "0"(__pu_err) \186186- : "r1"); \175175+ : "r"(ptr), "r"(__val), "0"(__pu_err)); \187176} while (0)188177189178#endif /* !defined(CONFIG_64BIT) */
-10
arch/parisc/kernel/parisc_ksyms.c
···4747EXPORT_SYMBOL(lclear_user);4848EXPORT_SYMBOL(lstrnlen_user);49495050-/* Global fixups - defined as int to avoid creation of function pointers */5151-extern int fixup_get_user_skip_1;5252-extern int fixup_get_user_skip_2;5353-extern int fixup_put_user_skip_1;5454-extern int fixup_put_user_skip_2;5555-EXPORT_SYMBOL(fixup_get_user_skip_1);5656-EXPORT_SYMBOL(fixup_get_user_skip_2);5757-EXPORT_SYMBOL(fixup_put_user_skip_1);5858-EXPORT_SYMBOL(fixup_put_user_skip_2);5959-6050#ifndef CONFIG_64BIT6151/* Needed so insmod can set dp value */6252extern int $global$;
+2
arch/parisc/kernel/process.c
···143143 printk(KERN_EMERG "System shut down completed.\n"144144 "Please power this system off now.");145145146146+ /* prevent soft lockup/stalled CPU messages for endless loop. */147147+ rcu_sysrq_start();146148 for (;;);147149}148150
···11-/*22- * Linux/PA-RISC Project (http://www.parisc-linux.org/)33- *44- * Copyright (C) 2004 Randolph Chung <tausq@debian.org>55- *66- * This program is free software; you can redistribute it and/or modify77- * it under the terms of the GNU General Public License as published by88- * the Free Software Foundation; either version 2, or (at your option)99- * any later version.1010- *1111- * This program is distributed in the hope that it will be useful,1212- * but WITHOUT ANY WARRANTY; without even the implied warranty of1313- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the1414- * GNU General Public License for more details.1515- *1616- * You should have received a copy of the GNU General Public License1717- * along with this program; if not, write to the Free Software1818- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.1919- * 2020- * Fixup routines for kernel exception handling.2121- */2222-#include <asm/asm-offsets.h>2323-#include <asm/assembly.h>2424-#include <asm/errno.h>2525-#include <linux/linkage.h>2626-2727-#ifdef CONFIG_SMP2828- .macro get_fault_ip t1 t22929- loadgp3030- addil LT%__per_cpu_offset,%r273131- LDREG RT%__per_cpu_offset(%r1),\t13232- /* t2 = smp_processor_id() */3333- mfctl 30,\t23434- ldw TI_CPU(\t2),\t23535-#ifdef CONFIG_64BIT3636- extrd,u \t2,63,32,\t23737-#endif3838- /* t2 = &__per_cpu_offset[smp_processor_id()]; */3939- LDREGX \t2(\t1),\t2 4040- addil LT%exception_data,%r274141- LDREG RT%exception_data(%r1),\t14242- /* t1 = this_cpu_ptr(&exception_data) */4343- add,l \t1,\t2,\t14444- /* %r27 = t1->fault_gp - restore gp */4545- LDREG EXCDATA_GP(\t1), %r274646- /* t1 = t1->fault_ip */4747- LDREG EXCDATA_IP(\t1), \t14848- .endm4949-#else5050- .macro get_fault_ip t1 t25151- loadgp5252- /* t1 = this_cpu_ptr(&exception_data) */5353- addil LT%exception_data,%r275454- LDREG RT%exception_data(%r1),\t25555- /* %r27 = t2->fault_gp - restore gp */5656- LDREG EXCDATA_GP(\t2), %r275757- /* t1 = t2->fault_ip */5858- LDREG EXCDATA_IP(\t2), \t15959- .endm6060-#endif6161-6262- .level LEVEL6363-6464- .text6565- .section .fixup, "ax"6666-6767- /* get_user() fixups, store -EFAULT in r8, and 0 in r9 */6868-ENTRY_CFI(fixup_get_user_skip_1)6969- get_fault_ip %r1,%r87070- ldo 4(%r1), %r17171- ldi -EFAULT, %r87272- bv %r0(%r1)7373- copy %r0, %r97474-ENDPROC_CFI(fixup_get_user_skip_1)7575-7676-ENTRY_CFI(fixup_get_user_skip_2)7777- get_fault_ip %r1,%r87878- ldo 8(%r1), %r17979- ldi -EFAULT, %r88080- bv %r0(%r1)8181- copy %r0, %r98282-ENDPROC_CFI(fixup_get_user_skip_2)8383-8484- /* put_user() fixups, store -EFAULT in r8 */8585-ENTRY_CFI(fixup_put_user_skip_1)8686- get_fault_ip %r1,%r88787- ldo 4(%r1), %r18888- bv %r0(%r1)8989- ldi -EFAULT, %r89090-ENDPROC_CFI(fixup_put_user_skip_1)9191-9292-ENTRY_CFI(fixup_put_user_skip_2)9393- get_fault_ip %r1,%r89494- ldo 8(%r1), %r19595- bv %r0(%r1)9696- ldi -EFAULT, %r89797-ENDPROC_CFI(fixup_put_user_skip_2)9898-
+318
arch/parisc/lib/lusercopy.S
···55 * Copyright (C) 2000 Richard Hirst <rhirst with parisc-linux.org>66 * Copyright (C) 2001 Matthieu Delahaye <delahaym at esiee.fr>77 * Copyright (C) 2003 Randolph Chung <tausq with parisc-linux.org>88+ * Copyright (C) 2017 Helge Deller <deller@gmx.de>99+ * Copyright (C) 2017 John David Anglin <dave.anglin@bell.net>810 *911 *1012 * This program is free software; you can redistribute it and/or modify···132130 ASM_EXCEPTIONTABLE_ENTRY(1b,3b)133131 ASM_EXCEPTIONTABLE_ENTRY(2b,3b)134132133133+ .procend134134+135135+136136+137137+/*138138+ * unsigned long pa_memcpy(void *dstp, const void *srcp, unsigned long len)139139+ *140140+ * Inputs:141141+ * - sr1 already contains space of source region142142+ * - sr2 already contains space of destination region143143+ *144144+ * Returns:145145+ * - number of bytes that could not be copied.146146+ * On success, this will be zero.147147+ *148148+ * This code is based on a C-implementation of a copy routine written by149149+ * Randolph Chung, which in turn was derived from the glibc.150150+ *151151+ * Several strategies are tried to try to get the best performance for various152152+ * conditions. In the optimal case, we copy by loops that copy 32- or 16-bytes153153+ * at a time using general registers. Unaligned copies are handled either by154154+ * aligning the destination and then using shift-and-write method, or in a few155155+ * cases by falling back to a byte-at-a-time copy.156156+ *157157+ * Testing with various alignments and buffer sizes shows that this code is158158+ * often >10x faster than a simple byte-at-a-time copy, even for strangely159159+ * aligned operands. It is interesting to note that the glibc version of memcpy160160+ * (written in C) is actually quite fast already. This routine is able to beat161161+ * it by 30-40% for aligned copies because of the loop unrolling, but in some162162+ * cases the glibc version is still slightly faster. This lends more163163+ * credibility that gcc can generate very good code as long as we are careful.164164+ *165165+ * Possible optimizations:166166+ * - add cache prefetching167167+ * - try not to use the post-increment address modifiers; they may create168168+ * additional interlocks. Assumption is that those were only efficient on old169169+ * machines (pre PA8000 processors)170170+ */171171+172172+ dst = arg0173173+ src = arg1174174+ len = arg2175175+ end = arg3176176+ t1 = r19177177+ t2 = r20178178+ t3 = r21179179+ t4 = r22180180+ srcspc = sr1181181+ dstspc = sr2182182+183183+ t0 = r1184184+ a1 = t1185185+ a2 = t2186186+ a3 = t3187187+ a0 = t4188188+189189+ save_src = ret0190190+ save_dst = ret1191191+ save_len = r31192192+193193+ENTRY_CFI(pa_memcpy)194194+ .proc195195+ .callinfo NO_CALLS196196+ .entry197197+198198+ /* Last destination address */199199+ add dst,len,end200200+201201+ /* short copy with less than 16 bytes? */202202+ cmpib,>>=,n 15,len,.Lbyte_loop203203+204204+ /* same alignment? */205205+ xor src,dst,t0206206+ extru t0,31,2,t1207207+ cmpib,<>,n 0,t1,.Lunaligned_copy208208+209209+#ifdef CONFIG_64BIT210210+ /* only do 64-bit copies if we can get aligned. */211211+ extru t0,31,3,t1212212+ cmpib,<>,n 0,t1,.Lalign_loop32213213+214214+ /* loop until we are 64-bit aligned */215215+.Lalign_loop64:216216+ extru dst,31,3,t1217217+ cmpib,=,n 0,t1,.Lcopy_loop_16218218+20: ldb,ma 1(srcspc,src),t1219219+21: stb,ma t1,1(dstspc,dst)220220+ b .Lalign_loop64221221+ ldo -1(len),len222222+223223+ ASM_EXCEPTIONTABLE_ENTRY(20b,.Lcopy_done)224224+ ASM_EXCEPTIONTABLE_ENTRY(21b,.Lcopy_done)225225+226226+ ldi 31,t0227227+.Lcopy_loop_16:228228+ cmpb,COND(>>=),n t0,len,.Lword_loop229229+230230+10: ldd 0(srcspc,src),t1231231+11: ldd 8(srcspc,src),t2232232+ ldo 16(src),src233233+12: std,ma t1,8(dstspc,dst)234234+13: std,ma t2,8(dstspc,dst)235235+14: ldd 0(srcspc,src),t1236236+15: ldd 8(srcspc,src),t2237237+ ldo 16(src),src238238+16: std,ma t1,8(dstspc,dst)239239+17: std,ma t2,8(dstspc,dst)240240+241241+ ASM_EXCEPTIONTABLE_ENTRY(10b,.Lcopy_done)242242+ ASM_EXCEPTIONTABLE_ENTRY(11b,.Lcopy16_fault)243243+ ASM_EXCEPTIONTABLE_ENTRY(12b,.Lcopy_done)244244+ ASM_EXCEPTIONTABLE_ENTRY(13b,.Lcopy_done)245245+ ASM_EXCEPTIONTABLE_ENTRY(14b,.Lcopy_done)246246+ ASM_EXCEPTIONTABLE_ENTRY(15b,.Lcopy16_fault)247247+ ASM_EXCEPTIONTABLE_ENTRY(16b,.Lcopy_done)248248+ ASM_EXCEPTIONTABLE_ENTRY(17b,.Lcopy_done)249249+250250+ b .Lcopy_loop_16251251+ ldo -32(len),len252252+253253+.Lword_loop:254254+ cmpib,COND(>>=),n 3,len,.Lbyte_loop255255+20: ldw,ma 4(srcspc,src),t1256256+21: stw,ma t1,4(dstspc,dst)257257+ b .Lword_loop258258+ ldo -4(len),len259259+260260+ ASM_EXCEPTIONTABLE_ENTRY(20b,.Lcopy_done)261261+ ASM_EXCEPTIONTABLE_ENTRY(21b,.Lcopy_done)262262+263263+#endif /* CONFIG_64BIT */264264+265265+ /* loop until we are 32-bit aligned */266266+.Lalign_loop32:267267+ extru dst,31,2,t1268268+ cmpib,=,n 0,t1,.Lcopy_loop_4269269+20: ldb,ma 1(srcspc,src),t1270270+21: stb,ma t1,1(dstspc,dst)271271+ b .Lalign_loop32272272+ ldo -1(len),len273273+274274+ ASM_EXCEPTIONTABLE_ENTRY(20b,.Lcopy_done)275275+ ASM_EXCEPTIONTABLE_ENTRY(21b,.Lcopy_done)276276+277277+278278+.Lcopy_loop_4:279279+ cmpib,COND(>>=),n 15,len,.Lbyte_loop280280+281281+10: ldw 0(srcspc,src),t1282282+11: ldw 4(srcspc,src),t2283283+12: stw,ma t1,4(dstspc,dst)284284+13: stw,ma t2,4(dstspc,dst)285285+14: ldw 8(srcspc,src),t1286286+15: ldw 12(srcspc,src),t2287287+ ldo 16(src),src288288+16: stw,ma t1,4(dstspc,dst)289289+17: stw,ma t2,4(dstspc,dst)290290+291291+ ASM_EXCEPTIONTABLE_ENTRY(10b,.Lcopy_done)292292+ ASM_EXCEPTIONTABLE_ENTRY(11b,.Lcopy8_fault)293293+ ASM_EXCEPTIONTABLE_ENTRY(12b,.Lcopy_done)294294+ ASM_EXCEPTIONTABLE_ENTRY(13b,.Lcopy_done)295295+ ASM_EXCEPTIONTABLE_ENTRY(14b,.Lcopy_done)296296+ ASM_EXCEPTIONTABLE_ENTRY(15b,.Lcopy8_fault)297297+ ASM_EXCEPTIONTABLE_ENTRY(16b,.Lcopy_done)298298+ ASM_EXCEPTIONTABLE_ENTRY(17b,.Lcopy_done)299299+300300+ b .Lcopy_loop_4301301+ ldo -16(len),len302302+303303+.Lbyte_loop:304304+ cmpclr,COND(<>) len,%r0,%r0305305+ b,n .Lcopy_done306306+20: ldb 0(srcspc,src),t1307307+ ldo 1(src),src308308+21: stb,ma t1,1(dstspc,dst)309309+ b .Lbyte_loop310310+ ldo -1(len),len311311+312312+ ASM_EXCEPTIONTABLE_ENTRY(20b,.Lcopy_done)313313+ ASM_EXCEPTIONTABLE_ENTRY(21b,.Lcopy_done)314314+315315+.Lcopy_done:316316+ bv %r0(%r2)317317+ sub end,dst,ret0318318+319319+320320+ /* src and dst are not aligned the same way. */321321+ /* need to go the hard way */322322+.Lunaligned_copy:323323+ /* align until dst is 32bit-word-aligned */324324+ extru dst,31,2,t1325325+ cmpib,COND(=),n 0,t1,.Lcopy_dstaligned326326+20: ldb 0(srcspc,src),t1327327+ ldo 1(src),src328328+21: stb,ma t1,1(dstspc,dst)329329+ b .Lunaligned_copy330330+ ldo -1(len),len331331+332332+ ASM_EXCEPTIONTABLE_ENTRY(20b,.Lcopy_done)333333+ ASM_EXCEPTIONTABLE_ENTRY(21b,.Lcopy_done)334334+335335+.Lcopy_dstaligned:336336+337337+ /* store src, dst and len in safe place */338338+ copy src,save_src339339+ copy dst,save_dst340340+ copy len,save_len341341+342342+ /* len now needs give number of words to copy */343343+ SHRREG len,2,len344344+345345+ /*346346+ * Copy from a not-aligned src to an aligned dst using shifts.347347+ * Handles 4 words per loop.348348+ */349349+350350+ depw,z src,28,2,t0351351+ subi 32,t0,t0352352+ mtsar t0353353+ extru len,31,2,t0354354+ cmpib,= 2,t0,.Lcase2355355+ /* Make src aligned by rounding it down. */356356+ depi 0,31,2,src357357+358358+ cmpiclr,<> 3,t0,%r0359359+ b,n .Lcase3360360+ cmpiclr,<> 1,t0,%r0361361+ b,n .Lcase1362362+.Lcase0:363363+ cmpb,= %r0,len,.Lcda_finish364364+ nop365365+366366+1: ldw,ma 4(srcspc,src), a3367367+ ASM_EXCEPTIONTABLE_ENTRY(1b,.Lcda_rdfault)368368+1: ldw,ma 4(srcspc,src), a0369369+ ASM_EXCEPTIONTABLE_ENTRY(1b,.Lcda_rdfault)370370+ b,n .Ldo3371371+.Lcase1:372372+1: ldw,ma 4(srcspc,src), a2373373+ ASM_EXCEPTIONTABLE_ENTRY(1b,.Lcda_rdfault)374374+1: ldw,ma 4(srcspc,src), a3375375+ ASM_EXCEPTIONTABLE_ENTRY(1b,.Lcda_rdfault)376376+ ldo -1(len),len377377+ cmpb,=,n %r0,len,.Ldo0378378+.Ldo4:379379+1: ldw,ma 4(srcspc,src), a0380380+ ASM_EXCEPTIONTABLE_ENTRY(1b,.Lcda_rdfault)381381+ shrpw a2, a3, %sar, t0382382+1: stw,ma t0, 4(dstspc,dst)383383+ ASM_EXCEPTIONTABLE_ENTRY(1b,.Lcopy_done)384384+.Ldo3:385385+1: ldw,ma 4(srcspc,src), a1386386+ ASM_EXCEPTIONTABLE_ENTRY(1b,.Lcda_rdfault)387387+ shrpw a3, a0, %sar, t0388388+1: stw,ma t0, 4(dstspc,dst)389389+ ASM_EXCEPTIONTABLE_ENTRY(1b,.Lcopy_done)390390+.Ldo2:391391+1: ldw,ma 4(srcspc,src), a2392392+ ASM_EXCEPTIONTABLE_ENTRY(1b,.Lcda_rdfault)393393+ shrpw a0, a1, %sar, t0394394+1: stw,ma t0, 4(dstspc,dst)395395+ ASM_EXCEPTIONTABLE_ENTRY(1b,.Lcopy_done)396396+.Ldo1:397397+1: ldw,ma 4(srcspc,src), a3398398+ ASM_EXCEPTIONTABLE_ENTRY(1b,.Lcda_rdfault)399399+ shrpw a1, a2, %sar, t0400400+1: stw,ma t0, 4(dstspc,dst)401401+ ASM_EXCEPTIONTABLE_ENTRY(1b,.Lcopy_done)402402+ ldo -4(len),len403403+ cmpb,<> %r0,len,.Ldo4404404+ nop405405+.Ldo0:406406+ shrpw a2, a3, %sar, t0407407+1: stw,ma t0, 4(dstspc,dst)408408+ ASM_EXCEPTIONTABLE_ENTRY(1b,.Lcopy_done)409409+410410+.Lcda_rdfault:411411+.Lcda_finish:412412+ /* calculate new src, dst and len and jump to byte-copy loop */413413+ sub dst,save_dst,t0414414+ add save_src,t0,src415415+ b .Lbyte_loop416416+ sub save_len,t0,len417417+418418+.Lcase3:419419+1: ldw,ma 4(srcspc,src), a0420420+ ASM_EXCEPTIONTABLE_ENTRY(1b,.Lcda_rdfault)421421+1: ldw,ma 4(srcspc,src), a1422422+ ASM_EXCEPTIONTABLE_ENTRY(1b,.Lcda_rdfault)423423+ b .Ldo2424424+ ldo 1(len),len425425+.Lcase2:426426+1: ldw,ma 4(srcspc,src), a1427427+ ASM_EXCEPTIONTABLE_ENTRY(1b,.Lcda_rdfault)428428+1: ldw,ma 4(srcspc,src), a2429429+ ASM_EXCEPTIONTABLE_ENTRY(1b,.Lcda_rdfault)430430+ b .Ldo1431431+ ldo 2(len),len432432+433433+434434+ /* fault exception fixup handlers: */435435+#ifdef CONFIG_64BIT436436+.Lcopy16_fault:437437+10: b .Lcopy_done438438+ std,ma t1,8(dstspc,dst)439439+ ASM_EXCEPTIONTABLE_ENTRY(10b,.Lcopy_done)440440+#endif441441+442442+.Lcopy8_fault:443443+10: b .Lcopy_done444444+ stw,ma t1,4(dstspc,dst)445445+ ASM_EXCEPTIONTABLE_ENTRY(10b,.Lcopy_done)446446+447447+ .exit448448+ENDPROC_CFI(pa_memcpy)135449 .procend136450137451 .end
+3-458
arch/parisc/lib/memcpy.c
···22 * Optimized memory copy routines.33 *44 * Copyright (C) 2004 Randolph Chung <tausq@debian.org>55- * Copyright (C) 2013 Helge Deller <deller@gmx.de>55+ * Copyright (C) 2013-2017 Helge Deller <deller@gmx.de>66 *77 * This program is free software; you can redistribute it and/or modify88 * it under the terms of the GNU General Public License as published by···2121 * Portions derived from the GNU C Library2222 * Copyright (C) 1991, 1997, 2003 Free Software Foundation, Inc.2323 *2424- * Several strategies are tried to try to get the best performance for various2525- * conditions. In the optimal case, we copy 64-bytes in an unrolled loop using 2626- * fp regs. This is followed by loops that copy 32- or 16-bytes at a time using2727- * general registers. Unaligned copies are handled either by aligning the 2828- * destination and then using shift-and-write method, or in a few cases by 2929- * falling back to a byte-at-a-time copy.3030- *3131- * I chose to implement this in C because it is easier to maintain and debug,3232- * and in my experiments it appears that the C code generated by gcc (3.3/3.43333- * at the time of writing) is fairly optimal. Unfortunately some of the 3434- * semantics of the copy routine (exception handling) is difficult to express3535- * in C, so we have to play some tricks to get it to work.3636- *3737- * All the loads and stores are done via explicit asm() code in order to use3838- * the right space registers. 3939- * 4040- * Testing with various alignments and buffer sizes shows that this code is 4141- * often >10x faster than a simple byte-at-a-time copy, even for strangely4242- * aligned operands. It is interesting to note that the glibc version4343- * of memcpy (written in C) is actually quite fast already. This routine is 4444- * able to beat it by 30-40% for aligned copies because of the loop unrolling, 4545- * but in some cases the glibc version is still slightly faster. This lends 4646- * more credibility that gcc can generate very good code as long as we are 4747- * careful.4848- *4949- * TODO:5050- * - cache prefetching needs more experimentation to get optimal settings5151- * - try not to use the post-increment address modifiers; they create additional5252- * interlocks5353- * - replace byte-copy loops with stybs sequences5424 */55255656-#ifdef __KERNEL__5726#include <linux/module.h>5827#include <linux/compiler.h>5928#include <linux/uaccess.h>6060-#define s_space "%%sr1"6161-#define d_space "%%sr2"6262-#else6363-#include "memcpy.h"6464-#define s_space "%%sr0"6565-#define d_space "%%sr0"6666-#define pa_memcpy new2_copy6767-#endif68296930DECLARE_PER_CPU(struct exception_data, exception_data);7070-7171-#define preserve_branch(label) do { \7272- volatile int dummy = 0; \7373- /* The following branch is never taken, it's just here to */ \7474- /* prevent gcc from optimizing away our exception code. */ \7575- if (unlikely(dummy != dummy)) \7676- goto label; \7777-} while (0)78317932#define get_user_space() (segment_eq(get_fs(), KERNEL_DS) ? 0 : mfsp(3))8033#define get_kernel_space() (0)81348282-#define MERGE(w0, sh_1, w1, sh_2) ({ \8383- unsigned int _r; \8484- asm volatile ( \8585- "mtsar %3\n" \8686- "shrpw %1, %2, %%sar, %0\n" \8787- : "=r"(_r) \8888- : "r"(w0), "r"(w1), "r"(sh_2) \8989- ); \9090- _r; \9191-})9292-#define THRESHOLD 169393-9494-#ifdef DEBUG_MEMCPY9595-#define DPRINTF(fmt, args...) do { printk(KERN_DEBUG "%s:%d:%s ", __FILE__, __LINE__, __func__ ); printk(KERN_DEBUG fmt, ##args ); } while (0)9696-#else9797-#define DPRINTF(fmt, args...)9898-#endif9999-100100-#define def_load_ai_insn(_insn,_sz,_tt,_s,_a,_t,_e) \101101- __asm__ __volatile__ ( \102102- "1:\t" #_insn ",ma " #_sz "(" _s ",%1), %0\n\t" \103103- ASM_EXCEPTIONTABLE_ENTRY(1b,_e) \104104- : _tt(_t), "+r"(_a) \105105- : \106106- : "r8")107107-108108-#define def_store_ai_insn(_insn,_sz,_tt,_s,_a,_t,_e) \109109- __asm__ __volatile__ ( \110110- "1:\t" #_insn ",ma %1, " #_sz "(" _s ",%0)\n\t" \111111- ASM_EXCEPTIONTABLE_ENTRY(1b,_e) \112112- : "+r"(_a) \113113- : _tt(_t) \114114- : "r8")115115-116116-#define ldbma(_s, _a, _t, _e) def_load_ai_insn(ldbs,1,"=r",_s,_a,_t,_e)117117-#define stbma(_s, _t, _a, _e) def_store_ai_insn(stbs,1,"r",_s,_a,_t,_e)118118-#define ldwma(_s, _a, _t, _e) def_load_ai_insn(ldw,4,"=r",_s,_a,_t,_e)119119-#define stwma(_s, _t, _a, _e) def_store_ai_insn(stw,4,"r",_s,_a,_t,_e)120120-#define flddma(_s, _a, _t, _e) def_load_ai_insn(fldd,8,"=f",_s,_a,_t,_e)121121-#define fstdma(_s, _t, _a, _e) def_store_ai_insn(fstd,8,"f",_s,_a,_t,_e)122122-123123-#define def_load_insn(_insn,_tt,_s,_o,_a,_t,_e) \124124- __asm__ __volatile__ ( \125125- "1:\t" #_insn " " #_o "(" _s ",%1), %0\n\t" \126126- ASM_EXCEPTIONTABLE_ENTRY(1b,_e) \127127- : _tt(_t) \128128- : "r"(_a) \129129- : "r8")130130-131131-#define def_store_insn(_insn,_tt,_s,_t,_o,_a,_e) \132132- __asm__ __volatile__ ( \133133- "1:\t" #_insn " %0, " #_o "(" _s ",%1)\n\t" \134134- ASM_EXCEPTIONTABLE_ENTRY(1b,_e) \135135- : \136136- : _tt(_t), "r"(_a) \137137- : "r8")138138-139139-#define ldw(_s,_o,_a,_t,_e) def_load_insn(ldw,"=r",_s,_o,_a,_t,_e)140140-#define stw(_s,_t,_o,_a,_e) def_store_insn(stw,"r",_s,_t,_o,_a,_e)141141-142142-#ifdef CONFIG_PREFETCH143143-static inline void prefetch_src(const void *addr)144144-{145145- __asm__("ldw 0(" s_space ",%0), %%r0" : : "r" (addr));146146-}147147-148148-static inline void prefetch_dst(const void *addr)149149-{150150- __asm__("ldd 0(" d_space ",%0), %%r0" : : "r" (addr));151151-}152152-#else153153-#define prefetch_src(addr) do { } while(0)154154-#define prefetch_dst(addr) do { } while(0)155155-#endif156156-157157-#define PA_MEMCPY_OK 0158158-#define PA_MEMCPY_LOAD_ERROR 1159159-#define PA_MEMCPY_STORE_ERROR 2160160-161161-/* Copy from a not-aligned src to an aligned dst, using shifts. Handles 4 words162162- * per loop. This code is derived from glibc. 163163- */164164-static noinline unsigned long copy_dstaligned(unsigned long dst,165165- unsigned long src, unsigned long len)166166-{167167- /* gcc complains that a2 and a3 may be uninitialized, but actually168168- * they cannot be. Initialize a2/a3 to shut gcc up.169169- */170170- register unsigned int a0, a1, a2 = 0, a3 = 0;171171- int sh_1, sh_2;172172-173173- /* prefetch_src((const void *)src); */174174-175175- /* Calculate how to shift a word read at the memory operation176176- aligned srcp to make it aligned for copy. */177177- sh_1 = 8 * (src % sizeof(unsigned int));178178- sh_2 = 8 * sizeof(unsigned int) - sh_1;179179-180180- /* Make src aligned by rounding it down. */181181- src &= -sizeof(unsigned int);182182-183183- switch (len % 4)184184- {185185- case 2:186186- /* a1 = ((unsigned int *) src)[0];187187- a2 = ((unsigned int *) src)[1]; */188188- ldw(s_space, 0, src, a1, cda_ldw_exc);189189- ldw(s_space, 4, src, a2, cda_ldw_exc);190190- src -= 1 * sizeof(unsigned int);191191- dst -= 3 * sizeof(unsigned int);192192- len += 2;193193- goto do1;194194- case 3:195195- /* a0 = ((unsigned int *) src)[0];196196- a1 = ((unsigned int *) src)[1]; */197197- ldw(s_space, 0, src, a0, cda_ldw_exc);198198- ldw(s_space, 4, src, a1, cda_ldw_exc);199199- src -= 0 * sizeof(unsigned int);200200- dst -= 2 * sizeof(unsigned int);201201- len += 1;202202- goto do2;203203- case 0:204204- if (len == 0)205205- return PA_MEMCPY_OK;206206- /* a3 = ((unsigned int *) src)[0];207207- a0 = ((unsigned int *) src)[1]; */208208- ldw(s_space, 0, src, a3, cda_ldw_exc);209209- ldw(s_space, 4, src, a0, cda_ldw_exc);210210- src -=-1 * sizeof(unsigned int);211211- dst -= 1 * sizeof(unsigned int);212212- len += 0;213213- goto do3;214214- case 1:215215- /* a2 = ((unsigned int *) src)[0];216216- a3 = ((unsigned int *) src)[1]; */217217- ldw(s_space, 0, src, a2, cda_ldw_exc);218218- ldw(s_space, 4, src, a3, cda_ldw_exc);219219- src -=-2 * sizeof(unsigned int);220220- dst -= 0 * sizeof(unsigned int);221221- len -= 1;222222- if (len == 0)223223- goto do0;224224- goto do4; /* No-op. */225225- }226226-227227- do228228- {229229- /* prefetch_src((const void *)(src + 4 * sizeof(unsigned int))); */230230-do4:231231- /* a0 = ((unsigned int *) src)[0]; */232232- ldw(s_space, 0, src, a0, cda_ldw_exc);233233- /* ((unsigned int *) dst)[0] = MERGE (a2, sh_1, a3, sh_2); */234234- stw(d_space, MERGE (a2, sh_1, a3, sh_2), 0, dst, cda_stw_exc);235235-do3:236236- /* a1 = ((unsigned int *) src)[1]; */237237- ldw(s_space, 4, src, a1, cda_ldw_exc);238238- /* ((unsigned int *) dst)[1] = MERGE (a3, sh_1, a0, sh_2); */239239- stw(d_space, MERGE (a3, sh_1, a0, sh_2), 4, dst, cda_stw_exc);240240-do2:241241- /* a2 = ((unsigned int *) src)[2]; */242242- ldw(s_space, 8, src, a2, cda_ldw_exc);243243- /* ((unsigned int *) dst)[2] = MERGE (a0, sh_1, a1, sh_2); */244244- stw(d_space, MERGE (a0, sh_1, a1, sh_2), 8, dst, cda_stw_exc);245245-do1:246246- /* a3 = ((unsigned int *) src)[3]; */247247- ldw(s_space, 12, src, a3, cda_ldw_exc);248248- /* ((unsigned int *) dst)[3] = MERGE (a1, sh_1, a2, sh_2); */249249- stw(d_space, MERGE (a1, sh_1, a2, sh_2), 12, dst, cda_stw_exc);250250-251251- src += 4 * sizeof(unsigned int);252252- dst += 4 * sizeof(unsigned int);253253- len -= 4;254254- }255255- while (len != 0);256256-257257-do0:258258- /* ((unsigned int *) dst)[0] = MERGE (a2, sh_1, a3, sh_2); */259259- stw(d_space, MERGE (a2, sh_1, a3, sh_2), 0, dst, cda_stw_exc);260260-261261- preserve_branch(handle_load_error);262262- preserve_branch(handle_store_error);263263-264264- return PA_MEMCPY_OK;265265-266266-handle_load_error:267267- __asm__ __volatile__ ("cda_ldw_exc:\n");268268- return PA_MEMCPY_LOAD_ERROR;269269-270270-handle_store_error:271271- __asm__ __volatile__ ("cda_stw_exc:\n");272272- return PA_MEMCPY_STORE_ERROR;273273-}274274-275275-276276-/* Returns PA_MEMCPY_OK, PA_MEMCPY_LOAD_ERROR or PA_MEMCPY_STORE_ERROR.277277- * In case of an access fault the faulty address can be read from the per_cpu278278- * exception data struct. */279279-static noinline unsigned long pa_memcpy_internal(void *dstp, const void *srcp,280280- unsigned long len)281281-{282282- register unsigned long src, dst, t1, t2, t3;283283- register unsigned char *pcs, *pcd;284284- register unsigned int *pws, *pwd;285285- register double *pds, *pdd;286286- unsigned long ret;287287-288288- src = (unsigned long)srcp;289289- dst = (unsigned long)dstp;290290- pcs = (unsigned char *)srcp;291291- pcd = (unsigned char *)dstp;292292-293293- /* prefetch_src((const void *)srcp); */294294-295295- if (len < THRESHOLD)296296- goto byte_copy;297297-298298- /* Check alignment */299299- t1 = (src ^ dst);300300- if (unlikely(t1 & (sizeof(double)-1)))301301- goto unaligned_copy;302302-303303- /* src and dst have same alignment. */304304-305305- /* Copy bytes till we are double-aligned. */306306- t2 = src & (sizeof(double) - 1);307307- if (unlikely(t2 != 0)) {308308- t2 = sizeof(double) - t2;309309- while (t2 && len) {310310- /* *pcd++ = *pcs++; */311311- ldbma(s_space, pcs, t3, pmc_load_exc);312312- len--;313313- stbma(d_space, t3, pcd, pmc_store_exc);314314- t2--;315315- }316316- }317317-318318- pds = (double *)pcs;319319- pdd = (double *)pcd;320320-321321-#if 0322322- /* Copy 8 doubles at a time */323323- while (len >= 8*sizeof(double)) {324324- register double r1, r2, r3, r4, r5, r6, r7, r8;325325- /* prefetch_src((char *)pds + L1_CACHE_BYTES); */326326- flddma(s_space, pds, r1, pmc_load_exc);327327- flddma(s_space, pds, r2, pmc_load_exc);328328- flddma(s_space, pds, r3, pmc_load_exc);329329- flddma(s_space, pds, r4, pmc_load_exc);330330- fstdma(d_space, r1, pdd, pmc_store_exc);331331- fstdma(d_space, r2, pdd, pmc_store_exc);332332- fstdma(d_space, r3, pdd, pmc_store_exc);333333- fstdma(d_space, r4, pdd, pmc_store_exc);334334-335335-#if 0336336- if (L1_CACHE_BYTES <= 32)337337- prefetch_src((char *)pds + L1_CACHE_BYTES);338338-#endif339339- flddma(s_space, pds, r5, pmc_load_exc);340340- flddma(s_space, pds, r6, pmc_load_exc);341341- flddma(s_space, pds, r7, pmc_load_exc);342342- flddma(s_space, pds, r8, pmc_load_exc);343343- fstdma(d_space, r5, pdd, pmc_store_exc);344344- fstdma(d_space, r6, pdd, pmc_store_exc);345345- fstdma(d_space, r7, pdd, pmc_store_exc);346346- fstdma(d_space, r8, pdd, pmc_store_exc);347347- len -= 8*sizeof(double);348348- }349349-#endif350350-351351- pws = (unsigned int *)pds;352352- pwd = (unsigned int *)pdd;353353-354354-word_copy:355355- while (len >= 8*sizeof(unsigned int)) {356356- register unsigned int r1,r2,r3,r4,r5,r6,r7,r8;357357- /* prefetch_src((char *)pws + L1_CACHE_BYTES); */358358- ldwma(s_space, pws, r1, pmc_load_exc);359359- ldwma(s_space, pws, r2, pmc_load_exc);360360- ldwma(s_space, pws, r3, pmc_load_exc);361361- ldwma(s_space, pws, r4, pmc_load_exc);362362- stwma(d_space, r1, pwd, pmc_store_exc);363363- stwma(d_space, r2, pwd, pmc_store_exc);364364- stwma(d_space, r3, pwd, pmc_store_exc);365365- stwma(d_space, r4, pwd, pmc_store_exc);366366-367367- ldwma(s_space, pws, r5, pmc_load_exc);368368- ldwma(s_space, pws, r6, pmc_load_exc);369369- ldwma(s_space, pws, r7, pmc_load_exc);370370- ldwma(s_space, pws, r8, pmc_load_exc);371371- stwma(d_space, r5, pwd, pmc_store_exc);372372- stwma(d_space, r6, pwd, pmc_store_exc);373373- stwma(d_space, r7, pwd, pmc_store_exc);374374- stwma(d_space, r8, pwd, pmc_store_exc);375375- len -= 8*sizeof(unsigned int);376376- }377377-378378- while (len >= 4*sizeof(unsigned int)) {379379- register unsigned int r1,r2,r3,r4;380380- ldwma(s_space, pws, r1, pmc_load_exc);381381- ldwma(s_space, pws, r2, pmc_load_exc);382382- ldwma(s_space, pws, r3, pmc_load_exc);383383- ldwma(s_space, pws, r4, pmc_load_exc);384384- stwma(d_space, r1, pwd, pmc_store_exc);385385- stwma(d_space, r2, pwd, pmc_store_exc);386386- stwma(d_space, r3, pwd, pmc_store_exc);387387- stwma(d_space, r4, pwd, pmc_store_exc);388388- len -= 4*sizeof(unsigned int);389389- }390390-391391- pcs = (unsigned char *)pws;392392- pcd = (unsigned char *)pwd;393393-394394-byte_copy:395395- while (len) {396396- /* *pcd++ = *pcs++; */397397- ldbma(s_space, pcs, t3, pmc_load_exc);398398- stbma(d_space, t3, pcd, pmc_store_exc);399399- len--;400400- }401401-402402- return PA_MEMCPY_OK;403403-404404-unaligned_copy:405405- /* possibly we are aligned on a word, but not on a double... */406406- if (likely((t1 & (sizeof(unsigned int)-1)) == 0)) {407407- t2 = src & (sizeof(unsigned int) - 1);408408-409409- if (unlikely(t2 != 0)) {410410- t2 = sizeof(unsigned int) - t2;411411- while (t2) {412412- /* *pcd++ = *pcs++; */413413- ldbma(s_space, pcs, t3, pmc_load_exc);414414- stbma(d_space, t3, pcd, pmc_store_exc);415415- len--;416416- t2--;417417- }418418- }419419-420420- pws = (unsigned int *)pcs;421421- pwd = (unsigned int *)pcd;422422- goto word_copy;423423- }424424-425425- /* Align the destination. */426426- if (unlikely((dst & (sizeof(unsigned int) - 1)) != 0)) {427427- t2 = sizeof(unsigned int) - (dst & (sizeof(unsigned int) - 1));428428- while (t2) {429429- /* *pcd++ = *pcs++; */430430- ldbma(s_space, pcs, t3, pmc_load_exc);431431- stbma(d_space, t3, pcd, pmc_store_exc);432432- len--;433433- t2--;434434- }435435- dst = (unsigned long)pcd;436436- src = (unsigned long)pcs;437437- }438438-439439- ret = copy_dstaligned(dst, src, len / sizeof(unsigned int));440440- if (ret)441441- return ret;442442-443443- pcs += (len & -sizeof(unsigned int));444444- pcd += (len & -sizeof(unsigned int));445445- len %= sizeof(unsigned int);446446-447447- preserve_branch(handle_load_error);448448- preserve_branch(handle_store_error);449449-450450- goto byte_copy;451451-452452-handle_load_error:453453- __asm__ __volatile__ ("pmc_load_exc:\n");454454- return PA_MEMCPY_LOAD_ERROR;455455-456456-handle_store_error:457457- __asm__ __volatile__ ("pmc_store_exc:\n");458458- return PA_MEMCPY_STORE_ERROR;459459-}460460-461461-46235/* Returns 0 for success, otherwise, returns number of bytes not transferred. */463463-static unsigned long pa_memcpy(void *dstp, const void *srcp, unsigned long len)464464-{465465- unsigned long ret, fault_addr, reference;466466- struct exception_data *d;3636+extern unsigned long pa_memcpy(void *dst, const void *src,3737+ unsigned long len);46738468468- ret = pa_memcpy_internal(dstp, srcp, len);469469- if (likely(ret == PA_MEMCPY_OK))470470- return 0;471471-472472- /* if a load or store fault occured we can get the faulty addr */473473- d = this_cpu_ptr(&exception_data);474474- fault_addr = d->fault_addr;475475-476476- /* error in load or store? */477477- if (ret == PA_MEMCPY_LOAD_ERROR)478478- reference = (unsigned long) srcp;479479- else480480- reference = (unsigned long) dstp;481481-482482- DPRINTF("pa_memcpy: fault type = %lu, len=%lu fault_addr=%lu ref=%lu\n",483483- ret, len, fault_addr, reference);484484-485485- if (fault_addr >= reference)486486- return len - (fault_addr - reference);487487- else488488- return len;489489-}490490-491491-#ifdef __KERNEL__49239unsigned long __copy_to_user(void __user *dst, const void *src,49340 unsigned long len)49441{···8453785538 return __probe_kernel_read(dst, src, size);86539}8787-8888-#endif
+17
arch/parisc/mm/fault.c
···150150 d->fault_space = regs->isr;151151 d->fault_addr = regs->ior;152152153153+ /*154154+ * Fix up get_user() and put_user().155155+ * ASM_EXCEPTIONTABLE_ENTRY_EFAULT() sets the least-significant156156+ * bit in the relative address of the fixup routine to indicate157157+ * that %r8 should be loaded with -EFAULT to report a userspace158158+ * access error.159159+ */160160+ if (fix->fixup & 1) {161161+ regs->gr[8] = -EFAULT;162162+163163+ /* zero target register for get_user() */164164+ if (parisc_acctyp(0, regs->iir) == VM_READ) {165165+ int treg = regs->iir & 0x1f;166166+ regs->gr[treg] = 0;167167+ }168168+ }169169+153170 regs->iaoq[0] = (unsigned long)&fix->fixup + fix->fixup;154171 regs->iaoq[0] &= ~3;155172 /*
···351351 }352352353353 if (!ret) {354354- unsigned long y;354354+ unsigned long y = regs->y;355355356356 ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf,357357 &y,
+31-4
arch/x86/Makefile
···120120 # -funit-at-a-time shrinks the kernel .text considerably121121 # unfortunately it makes reading oopses harder.122122 KBUILD_CFLAGS += $(call cc-option,-funit-at-a-time)123123-124124- # this works around some issues with generating unwind tables in older gccs125125- # newer gccs do it by default126126- KBUILD_CFLAGS += $(call cc-option,-maccumulate-outgoing-args)127123endif128124129125ifdef CONFIG_X86_X32···141145# Don't unroll struct assignments with kmemcheck enabled142146ifeq ($(CONFIG_KMEMCHECK),y)143147 KBUILD_CFLAGS += $(call cc-option,-fno-builtin-memcpy)148148+endif149149+150150+#151151+# If the function graph tracer is used with mcount instead of fentry,152152+# '-maccumulate-outgoing-args' is needed to prevent a GCC bug153153+# (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=42109)154154+#155155+ifdef CONFIG_FUNCTION_GRAPH_TRACER156156+ ifndef CONFIG_HAVE_FENTRY157157+ ACCUMULATE_OUTGOING_ARGS := 1158158+ else159159+ ifeq ($(call cc-option-yn, -mfentry), n)160160+ ACCUMULATE_OUTGOING_ARGS := 1161161+ endif162162+ endif163163+endif164164+165165+#166166+# Jump labels need '-maccumulate-outgoing-args' for gcc < 4.5.2 to prevent a167167+# GCC bug (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=46226). There's no way168168+# to test for this bug at compile-time because the test case needs to execute,169169+# which is a no-go for cross compilers. So check the GCC version instead.170170+#171171+ifdef CONFIG_JUMP_LABEL172172+ ifneq ($(ACCUMULATE_OUTGOING_ARGS), 1)173173+ ACCUMULATE_OUTGOING_ARGS = $(call cc-if-fullversion, -lt, 040502, 1)174174+ endif175175+endif176176+177177+ifeq ($(ACCUMULATE_OUTGOING_ARGS), 1)178178+ KBUILD_CFLAGS += -maccumulate-outgoing-args144179endif145180146181# Stackpointer is addressed different for 32 bit and 64 bit x86
-18
arch/x86/Makefile_32.cpu
···4545# cpu entries4646cflags-$(CONFIG_X86_GENERIC) += $(call tune,generic,$(call tune,i686))47474848-# Work around the pentium-mmx code generator madness of gcc4.4.x which4949-# does stack alignment by generating horrible code _before_ the mcount5050-# prologue (push %ebp, mov %esp, %ebp) which breaks the function graph5151-# tracer assumptions. For i686, generic, core2 this is set by the5252-# compiler anyway5353-ifeq ($(CONFIG_FUNCTION_GRAPH_TRACER), y)5454-ADD_ACCUMULATE_OUTGOING_ARGS := y5555-endif5656-5757-# Work around to a bug with asm goto with first implementations of it5858-# in gcc causing gcc to mess up the push and pop of the stack in some5959-# uses of asm goto.6060-ifeq ($(CONFIG_JUMP_LABEL), y)6161-ADD_ACCUMULATE_OUTGOING_ARGS := y6262-endif6363-6464-cflags-$(ADD_ACCUMULATE_OUTGOING_ARGS) += $(call cc-option,-maccumulate-outgoing-args)6565-6648# Bug fix for binutils: this option is required in order to keep6749# binutils from generating NOPL instructions against our will.6850ifneq ($(CONFIG_X86_P6_NOP),y)
+1
arch/x86/boot/compressed/error.c
···44 * memcpy() and memmove() are defined for the compressed boot environment.55 */66#include "misc.h"77+#include "error.h"7889void warn(char *m)910{
+6-3
arch/x86/events/core.c
···22562256 struct perf_event_mmap_page *userpg, u64 now)22572257{22582258 struct cyc2ns_data *data;22592259+ u64 offset;2259226022602261 userpg->cap_user_time = 0;22612262 userpg->cap_user_time_zero = 0;···22642263 !!(event->hw.flags & PERF_X86_EVENT_RDPMC_ALLOWED);22652264 userpg->pmc_width = x86_pmu.cntval_bits;2266226522672267- if (!sched_clock_stable())22662266+ if (!using_native_sched_clock() || !sched_clock_stable())22682267 return;2269226822702269 data = cyc2ns_read_begin();22702270+22712271+ offset = data->cyc2ns_offset + __sched_clock_offset;2271227222722273 /*22732274 * Internal timekeeping for enabled/running/stopped times···22782275 userpg->cap_user_time = 1;22792276 userpg->time_mult = data->cyc2ns_mul;22802277 userpg->time_shift = data->cyc2ns_shift;22812281- userpg->time_offset = data->cyc2ns_offset - now;22782278+ userpg->time_offset = offset - now;2282227922832280 /*22842281 * cap_user_time_zero doesn't make sense when we're using a different···22862283 */22872284 if (!event->attr.use_clockid) {22882285 userpg->cap_user_time_zero = 1;22892289- userpg->time_zero = data->cyc2ns_offset;22862286+ userpg->time_zero = offset;22902287 }2291228822922289 cyc2ns_read_end(data);
···12121313extern int no_timer_check;14141515+extern bool using_native_sched_clock(void);1616+1517/*1618 * We use the full linear equation: f(x) = a + b*x, in order to allow1719 * a continuous function in the face of dynamic freq changes.
···88LDFLAGS_purgatory.ro := -e purgatory_start -r --no-undefined -nostdlib -z nodefaultlib99targets += purgatory.ro10101111+KASAN_SANITIZE := n1112KCOV_INSTRUMENT := n12131314# Default KBUILD_CFLAGS can have -pg option set when FTRACE is enabled. That
+4-3
block/blk-mq.c
···969969 struct request *rq;970970 LIST_HEAD(driver_list);971971 struct list_head *dptr;972972- int queued, ret = BLK_MQ_RQ_QUEUE_OK;972972+ int errors, queued, ret = BLK_MQ_RQ_QUEUE_OK;973973974974 /*975975 * Start off with dptr being NULL, so we start the first request···980980 /*981981 * Now process all the entries, sending them to the driver.982982 */983983- queued = 0;983983+ errors = queued = 0;984984 while (!list_empty(list)) {985985 struct blk_mq_queue_data bd;986986···10371037 default:10381038 pr_err("blk-mq: bad return on queue: %d\n", ret);10391039 case BLK_MQ_RQ_QUEUE_ERROR:10401040+ errors++;10401041 rq->errors = -EIO;10411042 blk_mq_end_request(rq, rq->errors);10421043 break;···10891088 blk_mq_run_hw_queue(hctx, true);10901089 }1091109010921092- return queued != 0;10911091+ return (queued + errors) != 0;10931092}1094109310951094static void __blk_mq_run_hw_queue(struct blk_mq_hw_ctx *hctx)
+5-2
crypto/lrw.c
···286286287287 subreq->cryptlen = LRW_BUFFER_SIZE;288288 if (req->cryptlen > LRW_BUFFER_SIZE) {289289- subreq->cryptlen = min(req->cryptlen, (unsigned)PAGE_SIZE);290290- rctx->ext = kmalloc(subreq->cryptlen, gfp);289289+ unsigned int n = min(req->cryptlen, (unsigned int)PAGE_SIZE);290290+291291+ rctx->ext = kmalloc(n, gfp);292292+ if (rctx->ext)293293+ subreq->cryptlen = n;291294 }292295293296 rctx->src = req->src;
+5-2
crypto/xts.c
···230230231231 subreq->cryptlen = XTS_BUFFER_SIZE;232232 if (req->cryptlen > XTS_BUFFER_SIZE) {233233- subreq->cryptlen = min(req->cryptlen, (unsigned)PAGE_SIZE);234234- rctx->ext = kmalloc(subreq->cryptlen, gfp);233233+ unsigned int n = min(req->cryptlen, (unsigned int)PAGE_SIZE);234234+235235+ rctx->ext = kmalloc(n, gfp);236236+ if (rctx->ext)237237+ subreq->cryptlen = n;235238 }236239237240 rctx->src = req->src;
-1
drivers/acpi/Makefile
···22# Makefile for the Linux ACPI interpreter33#4455-ccflags-y := -Os65ccflags-$(CONFIG_ACPI_DEBUG) += -DACPI_DEBUG_OUTPUT7687#
···10731073 if (list_empty(&ghes_sci))10741074 unregister_acpi_hed_notifier(&ghes_notifier_sci);10751075 mutex_unlock(&ghes_list_mutex);10761076+ synchronize_rcu();10761077 break;10771078 case ACPI_HEST_NOTIFY_NMI:10781079 ghes_nmi_remove(ghes);
+6
drivers/acpi/ioapic.c
···4545 struct resource *res = data;4646 struct resource_win win;47474848+ /*4949+ * We might assign this to 'res' later, make sure all pointers are5050+ * cleared before the resource is added to the global list5151+ */5252+ memset(&win, 0, sizeof(win));5353+4854 res->flags = 0;4955 if (acpi_dev_filter_resource_type(acpi_res, IORESOURCE_MEM))5056 return AE_OK;
+103-33
drivers/block/nbd.c
···4747struct nbd_sock {4848 struct socket *sock;4949 struct mutex tx_lock;5050+ struct request *pending;5151+ int sent;5052};51535254#define NBD_TIMEDOUT 0···126124127125static int nbd_size_clear(struct nbd_device *nbd, struct block_device *bdev)128126{129129- bd_set_size(bdev, 0);127127+ if (bdev->bd_openers <= 1)128128+ bd_set_size(bdev, 0);130129 set_capacity(nbd->disk, 0);131130 kobject_uevent(&nbd_to_dev(nbd)->kobj, KOBJ_CHANGE);132131···193190194191 dev_err(nbd_to_dev(nbd), "Connection timed out, shutting down connection\n");195192 set_bit(NBD_TIMEDOUT, &nbd->runtime_flags);196196- req->errors++;193193+ req->errors = -EIO;197194198195 mutex_lock(&nbd->config_lock);199196 sock_shutdown(nbd);···205202 * Send or receive packet.206203 */207204static int sock_xmit(struct nbd_device *nbd, int index, int send,208208- struct iov_iter *iter, int msg_flags)205205+ struct iov_iter *iter, int msg_flags, int *sent)209206{210207 struct socket *sock = nbd->socks[index]->sock;211208 int result;···240237 result = -EPIPE; /* short read */241238 break;242239 }240240+ if (sent)241241+ *sent += result;243242 } while (msg_data_left(&msg));244243245244 tsk_restore_flags(current, pflags, PF_MEMALLOC);···253248static int nbd_send_cmd(struct nbd_device *nbd, struct nbd_cmd *cmd, int index)254249{255250 struct request *req = blk_mq_rq_from_pdu(cmd);251251+ struct nbd_sock *nsock = nbd->socks[index];256252 int result;257253 struct nbd_request request = {.magic = htonl(NBD_REQUEST_MAGIC)};258254 struct kvec iov = {.iov_base = &request, .iov_len = sizeof(request)};···262256 struct bio *bio;263257 u32 type;264258 u32 tag = blk_mq_unique_tag(req);259259+ int sent = nsock->sent, skip = 0;265260266261 iov_iter_kvec(&from, WRITE | ITER_KVEC, &iov, 1, sizeof(request));267262···290283 return -EIO;291284 }292285286286+ /* We did a partial send previously, and we at least sent the whole287287+ * request struct, so just go and send the rest of the pages in the288288+ * request.289289+ */290290+ if (sent) {291291+ if (sent >= sizeof(request)) {292292+ skip = sent - sizeof(request);293293+ goto send_pages;294294+ }295295+ iov_iter_advance(&from, sent);296296+ }293297 request.type = htonl(type);294298 if (type != NBD_CMD_FLUSH) {295299 request.from = cpu_to_be64((u64)blk_rq_pos(req) << 9);···312294 cmd, nbdcmd_to_ascii(type),313295 (unsigned long long)blk_rq_pos(req) << 9, blk_rq_bytes(req));314296 result = sock_xmit(nbd, index, 1, &from,315315- (type == NBD_CMD_WRITE) ? MSG_MORE : 0);297297+ (type == NBD_CMD_WRITE) ? MSG_MORE : 0, &sent);316298 if (result <= 0) {299299+ if (result == -ERESTARTSYS) {300300+ /* If we havne't sent anything we can just return BUSY,301301+ * however if we have sent something we need to make302302+ * sure we only allow this req to be sent until we are303303+ * completely done.304304+ */305305+ if (sent) {306306+ nsock->pending = req;307307+ nsock->sent = sent;308308+ }309309+ return BLK_MQ_RQ_QUEUE_BUSY;310310+ }317311 dev_err_ratelimited(disk_to_dev(nbd->disk),318312 "Send control failed (result %d)\n", result);319313 return -EIO;320314 }321321-315315+send_pages:322316 if (type != NBD_CMD_WRITE)323323- return 0;317317+ goto out;324318325319 bio = req->bio;326320 while (bio) {···348318 cmd, bvec.bv_len);349319 iov_iter_bvec(&from, ITER_BVEC | WRITE,350320 &bvec, 1, bvec.bv_len);351351- result = sock_xmit(nbd, index, 1, &from, flags);321321+ if (skip) {322322+ if (skip >= iov_iter_count(&from)) {323323+ skip -= iov_iter_count(&from);324324+ continue;325325+ }326326+ iov_iter_advance(&from, skip);327327+ skip = 0;328328+ }329329+ result = sock_xmit(nbd, index, 1, &from, flags, &sent);352330 if (result <= 0) {331331+ if (result == -ERESTARTSYS) {332332+ /* We've already sent the header, we333333+ * have no choice but to set pending and334334+ * return BUSY.335335+ */336336+ nsock->pending = req;337337+ nsock->sent = sent;338338+ return BLK_MQ_RQ_QUEUE_BUSY;339339+ }353340 dev_err(disk_to_dev(nbd->disk),354341 "Send data failed (result %d)\n",355342 result);···383336 }384337 bio = next;385338 }339339+out:340340+ nsock->pending = NULL;341341+ nsock->sent = 0;386342 return 0;387343}388344···403353404354 reply.magic = 0;405355 iov_iter_kvec(&to, READ | ITER_KVEC, &iov, 1, sizeof(reply));406406- result = sock_xmit(nbd, index, 0, &to, MSG_WAITALL);356356+ result = sock_xmit(nbd, index, 0, &to, MSG_WAITALL, NULL);407357 if (result <= 0) {408358 if (!test_bit(NBD_DISCONNECTED, &nbd->runtime_flags) &&409359 !test_bit(NBD_DISCONNECT_REQUESTED, &nbd->runtime_flags))···433383 if (ntohl(reply.error)) {434384 dev_err(disk_to_dev(nbd->disk), "Other side returned error (%d)\n",435385 ntohl(reply.error));436436- req->errors++;386386+ req->errors = -EIO;437387 return cmd;438388 }439389···445395 rq_for_each_segment(bvec, req, iter) {446396 iov_iter_bvec(&to, ITER_BVEC | READ,447397 &bvec, 1, bvec.bv_len);448448- result = sock_xmit(nbd, index, 0, &to, MSG_WAITALL);398398+ result = sock_xmit(nbd, index, 0, &to, MSG_WAITALL, NULL);449399 if (result <= 0) {450400 dev_err(disk_to_dev(nbd->disk), "Receive data failed (result %d)\n",451401 result);452452- req->errors++;402402+ req->errors = -EIO;453403 return cmd;454404 }455405 dev_dbg(nbd_to_dev(nbd), "request %p: got %d bytes data\n",···519469 if (!blk_mq_request_started(req))520470 return;521471 cmd = blk_mq_rq_to_pdu(req);522522- req->errors++;472472+ req->errors = -EIO;523473 nbd_end_request(cmd);524474}525475···532482}533483534484535535-static void nbd_handle_cmd(struct nbd_cmd *cmd, int index)485485+static int nbd_handle_cmd(struct nbd_cmd *cmd, int index)536486{537487 struct request *req = blk_mq_rq_from_pdu(cmd);538488 struct nbd_device *nbd = cmd->nbd;539489 struct nbd_sock *nsock;490490+ int ret;540491541492 if (index >= nbd->num_connections) {542493 dev_err_ratelimited(disk_to_dev(nbd->disk),543494 "Attempted send on invalid socket\n");544544- goto error_out;495495+ return -EINVAL;545496 }546497547498 if (test_bit(NBD_DISCONNECTED, &nbd->runtime_flags)) {548499 dev_err_ratelimited(disk_to_dev(nbd->disk),549500 "Attempted send on closed socket\n");550550- goto error_out;501501+ return -EINVAL;551502 }552503553504 req->errors = 0;···559508 mutex_unlock(&nsock->tx_lock);560509 dev_err_ratelimited(disk_to_dev(nbd->disk),561510 "Attempted send on closed socket\n");562562- goto error_out;511511+ return -EINVAL;563512 }564513565565- if (nbd_send_cmd(nbd, cmd, index) != 0) {566566- dev_err_ratelimited(disk_to_dev(nbd->disk),567567- "Request send failed\n");568568- req->errors++;569569- nbd_end_request(cmd);514514+ /* Handle the case that we have a pending request that was partially515515+ * transmitted that _has_ to be serviced first. We need to call requeue516516+ * here so that it gets put _after_ the request that is already on the517517+ * dispatch list.518518+ */519519+ if (unlikely(nsock->pending && nsock->pending != req)) {520520+ blk_mq_requeue_request(req, true);521521+ ret = 0;522522+ goto out;570523 }571571-524524+ ret = nbd_send_cmd(nbd, cmd, index);525525+out:572526 mutex_unlock(&nsock->tx_lock);573573-574574- return;575575-576576-error_out:577577- req->errors++;578578- nbd_end_request(cmd);527527+ return ret;579528}580529581530static int nbd_queue_rq(struct blk_mq_hw_ctx *hctx,582531 const struct blk_mq_queue_data *bd)583532{584533 struct nbd_cmd *cmd = blk_mq_rq_to_pdu(bd->rq);534534+ int ret;585535586536 /*587537 * Since we look at the bio's to send the request over the network we···595543 */596544 init_completion(&cmd->send_complete);597545 blk_mq_start_request(bd->rq);598598- nbd_handle_cmd(cmd, hctx->queue_num);546546+547547+ /* We can be called directly from the user space process, which means we548548+ * could possibly have signals pending so our sendmsg will fail. In549549+ * this case we need to return that we are busy, otherwise error out as550550+ * appropriate.551551+ */552552+ ret = nbd_handle_cmd(cmd, hctx->queue_num);553553+ if (ret < 0)554554+ ret = BLK_MQ_RQ_QUEUE_ERROR;555555+ if (!ret)556556+ ret = BLK_MQ_RQ_QUEUE_OK;599557 complete(&cmd->send_complete);600558601601- return BLK_MQ_RQ_QUEUE_OK;559559+ return ret;602560}603561604562static int nbd_add_socket(struct nbd_device *nbd, struct block_device *bdev,···643581644582 mutex_init(&nsock->tx_lock);645583 nsock->sock = sock;584584+ nsock->pending = NULL;585585+ nsock->sent = 0;646586 socks[nbd->num_connections++] = nsock;647587648588 if (max_part)···666602667603static void nbd_bdev_reset(struct block_device *bdev)668604{605605+ if (bdev->bd_openers > 1)606606+ return;669607 set_device_ro(bdev, false);670608 bdev->bd_inode->i_size = 0;671609 if (max_part > 0) {···700634701635 for (i = 0; i < nbd->num_connections; i++) {702636 iov_iter_kvec(&from, WRITE | ITER_KVEC, &iov, 1, sizeof(request));703703- ret = sock_xmit(nbd, i, 1, &from, 0);637637+ ret = sock_xmit(nbd, i, 1, &from, 0, NULL);704638 if (ret <= 0)705639 dev_err(disk_to_dev(nbd->disk),706640 "Send disconnect failed %d\n", ret);···731665{732666 sock_shutdown(nbd);733667 nbd_clear_que(nbd);734734- kill_bdev(bdev);668668+669669+ __invalidate_device(bdev, true);735670 nbd_bdev_reset(bdev);736671 /*737672 * We want to give the run thread a chance to wait for everybody···848781 nbd_size_set(nbd, bdev, nbd->blksize, arg);849782 return 0;850783 case NBD_SET_TIMEOUT:851851- nbd->tag_set.timeout = arg * HZ;784784+ if (arg) {785785+ nbd->tag_set.timeout = arg * HZ;786786+ blk_queue_rq_timeout(nbd->disk->queue, arg * HZ);787787+ }852788 return 0;853789854790 case NBD_SET_FLAGS:
···918918 .release = cpufreq_sysfs_release,919919};920920921921-static int add_cpu_dev_symlink(struct cpufreq_policy *policy,922922- struct device *dev)921921+static void add_cpu_dev_symlink(struct cpufreq_policy *policy, unsigned int cpu)923922{923923+ struct device *dev = get_cpu_device(cpu);924924+925925+ if (!dev)926926+ return;927927+928928+ if (cpumask_test_and_set_cpu(cpu, policy->real_cpus))929929+ return;930930+924931 dev_dbg(dev, "%s: Adding symlink\n", __func__);925925- return sysfs_create_link(&dev->kobj, &policy->kobj, "cpufreq");932932+ if (sysfs_create_link(&dev->kobj, &policy->kobj, "cpufreq"))933933+ dev_err(dev, "cpufreq symlink creation failed\n");926934}927935928936static void remove_cpu_dev_symlink(struct cpufreq_policy *policy,···11881180 policy->user_policy.min = policy->min;11891181 policy->user_policy.max = policy->max;1190118211911191- write_lock_irqsave(&cpufreq_driver_lock, flags);11921192- for_each_cpu(j, policy->related_cpus)11831183+ for_each_cpu(j, policy->related_cpus) {11931184 per_cpu(cpufreq_cpu_data, j) = policy;11941194- write_unlock_irqrestore(&cpufreq_driver_lock, flags);11851185+ add_cpu_dev_symlink(policy, j);11861186+ }11951187 } else {11961188 policy->min = policy->user_policy.min;11971189 policy->max = policy->user_policy.max;···1283127512841276 if (cpufreq_driver->exit)12851277 cpufreq_driver->exit(policy);12781278+12791279+ for_each_cpu(j, policy->real_cpus)12801280+ remove_cpu_dev_symlink(policy, get_cpu_device(j));12811281+12861282out_free_policy:12871283 cpufreq_policy_free(policy);12881284 return ret;12891285}12901290-12911291-static int cpufreq_offline(unsigned int cpu);1292128612931287/**12941288 * cpufreq_add_dev - the cpufreq interface for a CPU device.···1313130313141304 /* Create sysfs link on CPU registration */13151305 policy = per_cpu(cpufreq_cpu_data, cpu);13161316- if (!policy || cpumask_test_and_set_cpu(cpu, policy->real_cpus))13171317- return 0;13061306+ if (policy)13071307+ add_cpu_dev_symlink(policy, cpu);1318130813191319- ret = add_cpu_dev_symlink(policy, dev);13201320- if (ret) {13211321- cpumask_clear_cpu(cpu, policy->real_cpus);13221322- cpufreq_offline(cpu);13231323- }13241324-13251325- return ret;13091309+ return 0;13261310}1327131113281312static int cpufreq_offline(unsigned int cpu)
+18
drivers/cpuidle/cpuidle-powernv.c
···175175 drv->state_count += 1;176176 }177177178178+ /*179179+ * On the PowerNV platform cpu_present may be less than cpu_possible in180180+ * cases when firmware detects the CPU, but it is not available to the181181+ * OS. If CONFIG_HOTPLUG_CPU=n, then such CPUs are not hotplugable at182182+ * run time and hence cpu_devices are not created for those CPUs by the183183+ * generic topology_init().184184+ *185185+ * drv->cpumask defaults to cpu_possible_mask in186186+ * __cpuidle_driver_init(). This breaks cpuidle on PowerNV where187187+ * cpu_devices are not created for CPUs in cpu_possible_mask that188188+ * cannot be hot-added later at run time.189189+ *190190+ * Trying cpuidle_register_device() on a CPU without a cpu_device is191191+ * incorrect, so pass a correct CPU mask to the generic cpuidle driver.192192+ */193193+194194+ drv->cpumask = (struct cpumask *)cpu_present_mask;195195+178196 return 0;179197}180198
···179179180180/* ------------------------ General CCP Defines ------------------------ */181181182182+#define CCP_DMA_DFLT 0x0183183+#define CCP_DMA_PRIV 0x1184184+#define CCP_DMA_PUB 0x2185185+182186#define CCP_DMAPOOL_MAX_SIZE 64183187#define CCP_DMAPOOL_ALIGN BIT(5)184188···640636/* Structure to hold CCP version-specific values */641637struct ccp_vdata {642638 const unsigned int version;639639+ const unsigned int dma_chan_attr;643640 void (*setup)(struct ccp_device *);644641 const struct ccp_actions *perform;645642 const unsigned int bar;
+41
drivers/crypto/ccp/ccp-dmaengine.c
···1010 * published by the Free Software Foundation.1111 */12121313+#include <linux/module.h>1314#include <linux/kernel.h>1415#include <linux/dmaengine.h>1516#include <linux/spinlock.h>···2524 u64 mask = _mask + 1; \2625 (mask == 0) ? 64 : fls64(mask); \2726})2727+2828+/* The CCP as a DMA provider can be configured for public or private2929+ * channels. Default is specified in the vdata for the device (PCI ID).3030+ * This module parameter will override for all channels on all devices:3131+ * dma_chan_attr = 0x2 to force all channels public3232+ * = 0x1 to force all channels private3333+ * = 0x0 to defer to the vdata setting3434+ * = any other value: warning, revert to 0x03535+ */3636+static unsigned int dma_chan_attr = CCP_DMA_DFLT;3737+module_param(dma_chan_attr, uint, 0444);3838+MODULE_PARM_DESC(dma_chan_attr, "Set DMA channel visibility: 0 (default) = device defaults, 1 = make private, 2 = make public");3939+4040+unsigned int ccp_get_dma_chan_attr(struct ccp_device *ccp)4141+{4242+ switch (dma_chan_attr) {4343+ case CCP_DMA_DFLT:4444+ return ccp->vdata->dma_chan_attr;4545+4646+ case CCP_DMA_PRIV:4747+ return DMA_PRIVATE;4848+4949+ case CCP_DMA_PUB:5050+ return 0;5151+5252+ default:5353+ dev_info_once(ccp->dev, "Invalid value for dma_chan_attr: %d\n",5454+ dma_chan_attr);5555+ return ccp->vdata->dma_chan_attr;5656+ }5757+}28582959static void ccp_free_cmd_resources(struct ccp_device *ccp,3060 struct list_head *list)···706674 dma_cap_set(DMA_MEMCPY, dma_dev->cap_mask);707675 dma_cap_set(DMA_SG, dma_dev->cap_mask);708676 dma_cap_set(DMA_INTERRUPT, dma_dev->cap_mask);677677+678678+ /* The DMA channels for this device can be set to public or private,679679+ * and overridden by the module parameter dma_chan_attr.680680+ * Default: according to the value in vdata (dma_chan_attr=0)681681+ * dma_chan_attr=0x1: all channels private (override vdata)682682+ * dma_chan_attr=0x2: all channels public (override vdata)683683+ */684684+ if (ccp_get_dma_chan_attr(ccp) == DMA_PRIVATE)685685+ dma_cap_set(DMA_PRIVATE, dma_dev->cap_mask);709686710687 INIT_LIST_HEAD(&dma_dev->channels);711688 for (i = 0; i < ccp->cmd_q_count; i++) {
+4-1
drivers/dma/bcm2835-dma.c
···251251 */252252253253 /* have we filled in period_length yet? */254254- if (*total_len + control_block->length < period_len)254254+ if (*total_len + control_block->length < period_len) {255255+ /* update number of bytes in this period so far */256256+ *total_len += control_block->length;255257 return;258258+ }256259257260 /* calculate the length that remains to reach period_length */258261 control_block->length = period_len - *total_len;
···43434444config EDAC_DEBUG4545 bool "Debugging"4646+ select DEBUG_FS4647 help4748 This turns on debugging information for the entire EDAC subsystem.4849 You do so by inserting edac_module with "edac_debug_level=x." Valid···259258 help260259 Support for error detection and correction the Intel261260 Skylake server Integrated Memory Controllers.261261+262262+config EDAC_PND2263263+ tristate "Intel Pondicherry2"264264+ depends on EDAC_MM_EDAC && PCI && X86_64 && X86_MCE_INTEL265265+ help266266+ Support for error detection and correction on the Intel267267+ Pondicherry2 Integrated Memory Controller. This SoC IP is268268+ first used on the Apollo Lake platform and Denverton269269+ micro-server but may appear on others in the future.262270263271config EDAC_MPC85XX264272 tristate "Freescale MPC83xx / MPC85xx"
···12931293 dimm->mtype = MEM_FB_DDR2;1294129412951295 /* ask what device type on this row */12961296- if (MTR_DRAM_WIDTH(mtr))12961296+ if (MTR_DRAM_WIDTH(mtr) == 8)12971297 dimm->dtype = DEV_X8;12981298 else12991299 dimm->dtype = DEV_X4;
···254254255255 rc = efi_mem_desc_lookup(efi.esrt, &md);256256 if (rc < 0) {257257- pr_err("ESRT header is not in the memory map.\n");257257+ pr_warn("ESRT header is not in the memory map.\n");258258 return;259259 }260260
···495495 unsigned char val = edid_get_byte(vgpu);496496497497 aux_data_for_write = (val << 16);498498- }498498+ } else499499+ aux_data_for_write = (0xff << 16);499500 }500501 /* write the return value in AUX_CH_DATA reg which includes:501502 * ACK of I2C_WRITE
+6-2
drivers/gpu/drm/i915/gvt/gtt.c
···18371837 ret = gtt_entry_p2m(vgpu, &e, &m);18381838 if (ret) {18391839 gvt_vgpu_err("fail to translate guest gtt entry\n");18401840- return ret;18401840+ /* guest driver may read/write the entry when partial18411841+ * update the entry in this situation p2m will fail18421842+ * settting the shadow entry to point to a scratch page18431843+ */18441844+ ops->set_pfn(&m, gvt->gtt.scratch_ggtt_mfn);18411845 }18421846 } else {18431847 m = e;18441844- m.val64 = 0;18481848+ ops->set_pfn(&m, gvt->gtt.scratch_ggtt_mfn);18451849 }1846185018471851 ggtt_set_shadow_entry(ggtt_mm, &m, g_gtt_index);
+9-1
drivers/gpu/drm/i915/gvt/handlers.c
···970970 return 0;971971}972972973973+static int mbctl_write(struct intel_vgpu *vgpu, unsigned int offset,974974+ void *p_data, unsigned int bytes)975975+{976976+ *(u32 *)p_data &= (~GEN6_MBCTL_ENABLE_BOOT_FETCH);977977+ write_vreg(vgpu, offset, p_data, bytes);978978+ return 0;979979+}980980+973981static int vga_control_mmio_write(struct intel_vgpu *vgpu, unsigned int offset,974982 void *p_data, unsigned int bytes)975983{···22462238 MMIO_D(0x7180, D_ALL);22472239 MMIO_D(0x7408, D_ALL);22482240 MMIO_D(0x7c00, D_ALL);22492249- MMIO_D(GEN6_MBCTL, D_ALL);22412241+ MMIO_DH(GEN6_MBCTL, D_ALL, NULL, mbctl_write);22502242 MMIO_D(0x911c, D_ALL);22512243 MMIO_D(0x9120, D_ALL);22522244 MMIO_DFH(GEN7_UCGCTL4, D_ALL, F_CMD_ACCESS, NULL, NULL);
···207207 l3_offset.reg = 0xb020;208208 for (i = 0; i < 32; i++) {209209 gen9_render_mocs_L3[i] = I915_READ(l3_offset);210210- I915_WRITE(l3_offset, vgpu_vreg(vgpu, offset));210210+ I915_WRITE(l3_offset, vgpu_vreg(vgpu, l3_offset));211211 POSTING_READ(l3_offset);212212 l3_offset.reg += 4;213213 }
+6-1
drivers/gpu/drm/i915/gvt/scheduler.c
···127127 return 0;128128}129129130130+static inline bool is_gvt_request(struct drm_i915_gem_request *req)131131+{132132+ return i915_gem_context_force_single_submission(req->ctx);133133+}134134+130135static int shadow_context_status_change(struct notifier_block *nb,131136 unsigned long action, void *data)132137{···142137 struct intel_vgpu_workload *workload =143138 scheduler->current_workload[req->engine->id];144139145145- if (unlikely(!workload))140140+ if (!is_gvt_request(req) || unlikely(!workload))146141 return NOTIFY_OK;147142148143 switch (action) {
+2
drivers/gpu/drm/i915/intel_ringbuffer.c
···20242024 ret = context_pin(ctx, flags);20252025 if (ret)20262026 goto error;20272027+20282028+ ce->state->obj->mm.dirty = true;20272029 }2028203020292031 /* The kernel context is only used as a placeholder for flushing the
+2-2
drivers/gpu/drm/radeon/radeon_ttm.c
···213213 rbo->placement.num_busy_placement = 0;214214 for (i = 0; i < rbo->placement.num_placement; i++) {215215 if (rbo->placements[i].flags & TTM_PL_FLAG_VRAM) {216216- if (rbo->placements[0].fpfn < fpfn)217217- rbo->placements[0].fpfn = fpfn;216216+ if (rbo->placements[i].fpfn < fpfn)217217+ rbo->placements[i].fpfn = fpfn;218218 } else {219219 rbo->placement.busy_placement =220220 &rbo->placements[i];
···520520 struct lpfc_hba *phba = ctxp->phba;521521 struct lpfc_iocbq *nvmewqeq;522522 unsigned long iflags;523523- int rc, id;523523+ int rc;524524525525#ifdef CONFIG_SCSI_LPFC_DEBUG_FS526526 if (phba->ktime_on) {···530530 ctxp->ts_nvme_data = ktime_get_ns();531531 }532532 if (phba->cpucheck_on & LPFC_CHECK_NVMET_IO) {533533- id = smp_processor_id();533533+ int id = smp_processor_id();534534 ctxp->cpu = id;535535 if (id < LPFC_CHECK_CPU_CNT)536536 phba->cpucheck_xmt_io[id]++;
···16511651 /* Don't abort commands in adapter during EEH16521652 * recovery as it's not accessible/responding.16531653 */16541654- if (GET_CMD_SP(sp) && !ha->flags.eeh_busy) {16541654+ if (GET_CMD_SP(sp) && !ha->flags.eeh_busy &&16551655+ (sp->type == SRB_SCSI_CMD)) {16551656 /* Get a reference to the sp and drop the lock.16561657 * The reference ensures this sp->done() call16571658 * - and not the call in qla2xxx_eh_abort() -
+2
drivers/scsi/sg.c
···996996 result = get_user(val, ip);997997 if (result)998998 return result;999999+ if (val > SG_MAX_CDB_SIZE)10001000+ return -ENOMEM;9991001 sfp->next_cmd_len = (val > 0) ? val : 0;10001002 return 0;10011003 case SG_GET_VERSION_NUM:
···46624662 }46634663 if (ufshcd_is_clkscaling_supported(hba))46644664 hba->clk_scaling.active_reqs--;46654665- if (ufshcd_is_clkscaling_supported(hba))46664666- hba->clk_scaling.active_reqs--;46674665 }4668466646694667 /* clear corresponding bits of completed commands */
+25-16
drivers/thermal/cpu_cooling.c
···107107};108108static DEFINE_IDA(cpufreq_ida);109109110110-static unsigned int cpufreq_dev_count;111111-112110static DEFINE_MUTEX(cooling_list_lock);113111static LIST_HEAD(cpufreq_dev_list);114112···393395394396 opp = dev_pm_opp_find_freq_exact(cpufreq_device->cpu_dev, freq_hz,395397 true);398398+ if (IS_ERR(opp)) {399399+ dev_warn_ratelimited(cpufreq_device->cpu_dev,400400+ "Failed to find OPP for frequency %lu: %ld\n",401401+ freq_hz, PTR_ERR(opp));402402+ return -EINVAL;403403+ }404404+396405 voltage = dev_pm_opp_get_voltage(opp);397406 dev_pm_opp_put(opp);398407399408 if (voltage == 0) {400400- dev_warn_ratelimited(cpufreq_device->cpu_dev,401401- "Failed to get voltage for frequency %lu: %ld\n",402402- freq_hz, IS_ERR(opp) ? PTR_ERR(opp) : 0);409409+ dev_err_ratelimited(cpufreq_device->cpu_dev,410410+ "Failed to get voltage for frequency %lu\n",411411+ freq_hz);403412 return -EINVAL;404413 }405414···698693699694 *state = cpufreq_cooling_get_level(cpu, target_freq);700695 if (*state == THERMAL_CSTATE_INVALID) {701701- dev_warn_ratelimited(&cdev->device,702702- "Failed to convert %dKHz for cpu %d into a cdev state\n",703703- target_freq, cpu);696696+ dev_err_ratelimited(&cdev->device,697697+ "Failed to convert %dKHz for cpu %d into a cdev state\n",698698+ target_freq, cpu);704699 return -EINVAL;705700 }706701···776771 unsigned int freq, i, num_cpus;777772 int ret;778773 struct thermal_cooling_device_ops *cooling_ops;774774+ bool first;779775780776 if (!alloc_cpumask_var(&temp_mask, GFP_KERNEL))781777 return ERR_PTR(-ENOMEM);···880874 cpufreq_dev->cool_dev = cool_dev;881875882876 mutex_lock(&cooling_list_lock);883883- list_add(&cpufreq_dev->node, &cpufreq_dev_list);884884-885877 /* Register the notifier for first cpufreq cooling device */886886- if (!cpufreq_dev_count++)878878+ first = list_empty(&cpufreq_dev_list);879879+ list_add(&cpufreq_dev->node, &cpufreq_dev_list);880880+ mutex_unlock(&cooling_list_lock);881881+882882+ if (first)887883 cpufreq_register_notifier(&thermal_cpufreq_notifier_block,888884 CPUFREQ_POLICY_NOTIFIER);889889- mutex_unlock(&cooling_list_lock);890885891886 goto put_policy;892887···10281021void cpufreq_cooling_unregister(struct thermal_cooling_device *cdev)10291022{10301023 struct cpufreq_cooling_device *cpufreq_dev;10241024+ bool last;1031102510321026 if (!cdev)10331027 return;···10361028 cpufreq_dev = cdev->devdata;1037102910381030 mutex_lock(&cooling_list_lock);10311031+ list_del(&cpufreq_dev->node);10391032 /* Unregister the notifier for the last cpufreq cooling device */10401040- if (!--cpufreq_dev_count)10331033+ last = list_empty(&cpufreq_dev_list);10341034+ mutex_unlock(&cooling_list_lock);10351035+10361036+ if (last)10411037 cpufreq_unregister_notifier(&thermal_cpufreq_notifier_block,10421038 CPUFREQ_POLICY_NOTIFIER);10431043-10441044- list_del(&cpufreq_dev->node);10451045- mutex_unlock(&cooling_list_lock);1046103910471040 thermal_cooling_device_unregister(cpufreq_dev->cool_dev);10481041 ida_simple_remove(&cpufreq_ida, cpufreq_dev->id);
+10-4
drivers/thermal/devfreq_cooling.c
···186186 return 0;187187188188 opp = dev_pm_opp_find_freq_exact(dev, freq, true);189189- if (IS_ERR(opp) && (PTR_ERR(opp) == -ERANGE))189189+ if (PTR_ERR(opp) == -ERANGE)190190 opp = dev_pm_opp_find_freq_exact(dev, freq, false);191191+192192+ if (IS_ERR(opp)) {193193+ dev_err_ratelimited(dev, "Failed to find OPP for frequency %lu: %ld\n",194194+ freq, PTR_ERR(opp));195195+ return 0;196196+ }191197192198 voltage = dev_pm_opp_get_voltage(opp) / 1000; /* mV */193199 dev_pm_opp_put(opp);194200195201 if (voltage == 0) {196196- dev_warn_ratelimited(dev,197197- "Failed to get voltage for frequency %lu: %ld\n",198198- freq, IS_ERR(opp) ? PTR_ERR(opp) : 0);202202+ dev_err_ratelimited(dev,203203+ "Failed to get voltage for frequency %lu\n",204204+ freq);199205 return 0;200206 }201207
+6-2
drivers/tty/serial/8250/Kconfig
···128128 by the parport_serial driver, enabled with CONFIG_PARPORT_SERIAL.129129130130config SERIAL_8250_EXAR131131- tristate "8250/16550 PCI device support"132132- depends on SERIAL_8250_PCI131131+ tristate "8250/16550 Exar/Commtech PCI/PCIe device support"132132+ depends on SERIAL_8250_PCI133133 default SERIAL_8250134134+ help135135+ This builds support for XR17C1xx, XR17V3xx and some Commtech136136+ 422x PCIe serial cards that are not covered by the more generic137137+ SERIAL_8250_PCI option.134138135139config SERIAL_8250_HP300136140 tristate
+21-2
drivers/tty/serial/amba-pl011.c
···24522452 uart_console_write(&dev->port, s, n, pl011_putc);24532453}2454245424552455+/*24562456+ * On non-ACPI systems, earlycon is enabled by specifying24572457+ * "earlycon=pl011,<address>" on the kernel command line.24582458+ *24592459+ * On ACPI ARM64 systems, an "early" console is enabled via the SPCR table,24602460+ * by specifying only "earlycon" on the command line. Because it requires24612461+ * SPCR, the console starts after ACPI is parsed, which is later than a24622462+ * traditional early console.24632463+ *24642464+ * To get the traditional early console that starts before ACPI is parsed,24652465+ * specify the full "earlycon=pl011,<address>" option.24662466+ */24552467static int __init pl011_early_console_setup(struct earlycon_device *device,24562468 const char *opt)24572469{24582470 if (!device->port.membase)24592471 return -ENODEV;2460247224612461- device->con->write = qdf2400_e44_present ?24622462- qdf2400_e44_early_write : pl011_early_write;24732473+ /* On QDF2400 SOCs affected by Erratum 44, the "qdf2400_e44" must24742474+ * also be specified, e.g. "earlycon=pl011,<address>,qdf2400_e44".24752475+ */24762476+ if (!strcmp(device->options, "qdf2400_e44"))24772477+ device->con->write = qdf2400_e44_early_write;24782478+ else24792479+ device->con->write = pl011_early_write;24802480+24632481 return 0;24642482}24652483OF_EARLYCON_DECLARE(pl011, "arm,pl011", pl011_early_console_setup);24662484OF_EARLYCON_DECLARE(pl011, "arm,sbsa-uart", pl011_early_console_setup);24852485+EARLYCON_DECLARE(qdf2400_e44, pl011_early_console_setup);2467248624682487#else24692488#define AMBA_CONSOLE NULL
+8
drivers/tty/serial/atmel_serial.c
···19541954 atmel_uart_writel(port, ATMEL_PDC_TCR, 0);19551955 atmel_port->pdc_tx.ofs = 0;19561956 }19571957+ /*19581958+ * in uart_flush_buffer(), the xmit circular buffer has just19591959+ * been cleared, so we have to reset tx_len accordingly.19601960+ */19611961+ atmel_port->tx_len = 0;19571962}1958196319591964/*···24902485 /* Store PDC transmit status and disable it */24912486 pdc_tx = atmel_uart_readl(port, ATMEL_PDC_PTSR) & ATMEL_PDC_TXTEN;24922487 atmel_uart_writel(port, ATMEL_PDC_PTCR, ATMEL_PDC_TXTDIS);24882488+24892489+ /* Make sure that tx path is actually able to send characters */24902490+ atmel_uart_writel(port, ATMEL_US_CR, ATMEL_US_TXEN);2493249124942492 uart_console_write(port, s, count, atmel_console_putchar);24952493
···2584258425852585 if (tree->ops) {25862586 ret = tree->ops->readpage_io_failed_hook(page, mirror);25872587- if (!ret && !bio->bi_error)25882588- uptodate = 1;25892589- } else {25902590- /*25912591- * The generic bio_readpage_error handles errors the25922592- * following way: If possible, new read requests are25932593- * created and submitted and will end up in25942594- * end_bio_extent_readpage as well (if we're lucky, not25952595- * in the !uptodate case). In that case it returns 0 and25962596- * we just go on with the next page in our bio. If it25972597- * can't handle the error it will return -EIO and we25982598- * remain responsible for that page.25992599- */26002600- ret = bio_readpage_error(bio, offset, page, start, end,26012601- mirror);26022602- if (ret == 0) {26032603- uptodate = !bio->bi_error;26042604- offset += len;26052605- continue;25872587+ if (ret == -EAGAIN) {25882588+ /*25892589+ * Data inode's readpage_io_failed_hook() always25902590+ * returns -EAGAIN.25912591+ *25922592+ * The generic bio_readpage_error handles errors25932593+ * the following way: If possible, new read25942594+ * requests are created and submitted and will25952595+ * end up in end_bio_extent_readpage as well (if25962596+ * we're lucky, not in the !uptodate case). In25972597+ * that case it returns 0 and we just go on with25982598+ * the next page in our bio. If it can't handle25992599+ * the error it will return -EIO and we remain26002600+ * responsible for that page.26012601+ */26022602+ ret = bio_readpage_error(bio, offset, page,26032603+ start, end, mirror);26042604+ if (ret == 0) {26052605+ uptodate = !bio->bi_error;26062606+ offset += len;26072607+ continue;26082608+ }26062609 }26102610+26112611+ /*26122612+ * metadata's readpage_io_failed_hook() always returns26132613+ * -EIO and fixes nothing. -EIO is also returned if26142614+ * data inode error could not be fixed.26152615+ */26162616+ ASSERT(ret == -EIO);26072617 }26082618readpage_ok:26092619 if (likely(uptodate)) {
···63056305 goto out;63066306 }6307630763086308+ /*63096309+ * Check that we don't overflow at later allocations, we request63106310+ * clone_sources_count + 1 items, and compare to unsigned long inside63116311+ * access_ok.63126312+ */63086313 if (arg->clone_sources_count >63096309- ULLONG_MAX / sizeof(*arg->clone_sources)) {63146314+ ULONG_MAX / sizeof(struct clone_root) - 1) {63106315 ret = -EINVAL;63116316 goto out;63126317 }
+12-13
fs/hugetlbfs/inode.c
···695695696696 inode = new_inode(sb);697697 if (inode) {698698- struct hugetlbfs_inode_info *info;699698 inode->i_ino = get_next_ino();700699 inode->i_mode = S_IFDIR | config->mode;701700 inode->i_uid = config->uid;702701 inode->i_gid = config->gid;703702 inode->i_atime = inode->i_mtime = inode->i_ctime = current_time(inode);704704- info = HUGETLBFS_I(inode);705705- mpol_shared_policy_init(&info->policy, NULL);706703 inode->i_op = &hugetlbfs_dir_inode_operations;707704 inode->i_fop = &simple_dir_operations;708705 /* directory inodes start off with i_nlink == 2 (for "." entry) */···730733731734 inode = new_inode(sb);732735 if (inode) {733733- struct hugetlbfs_inode_info *info;734736 inode->i_ino = get_next_ino();735737 inode_init_owner(inode, dir, mode);736738 lockdep_set_class(&inode->i_mapping->i_mmap_rwsem,···737741 inode->i_mapping->a_ops = &hugetlbfs_aops;738742 inode->i_atime = inode->i_mtime = inode->i_ctime = current_time(inode);739743 inode->i_mapping->private_data = resv_map;740740- info = HUGETLBFS_I(inode);741741- /*742742- * The policy is initialized here even if we are creating a743743- * private inode because initialization simply creates an744744- * an empty rb tree and calls rwlock_init(), later when we745745- * call mpol_free_shared_policy() it will just return because746746- * the rb tree will still be empty.747747- */748748- mpol_shared_policy_init(&info->policy, NULL);749744 switch (mode & S_IFMT) {750745 default:751746 init_special_inode(inode, mode, dev);···924937 hugetlbfs_inc_free_inodes(sbinfo);925938 return NULL;926939 }940940+941941+ /*942942+ * Any time after allocation, hugetlbfs_destroy_inode can be called943943+ * for the inode. mpol_free_shared_policy is unconditionally called944944+ * as part of hugetlbfs_destroy_inode. So, initialize policy here945945+ * in case of a quick call to destroy.946946+ *947947+ * Note that the policy is initialized even if we are creating a948948+ * private inode. This simplifies hugetlbfs_destroy_inode.949949+ */950950+ mpol_shared_policy_init(&p->policy, NULL);951951+927952 return &p->vfs_inode;928953}929954
+2-7
fs/nfs/dir.c
···20552055{20562056 struct inode *old_inode = d_inode(old_dentry);20572057 struct inode *new_inode = d_inode(new_dentry);20582058- struct dentry *dentry = NULL, *rehash = NULL;20582058+ struct dentry *dentry = NULL;20592059 struct rpc_task *task;20602060 int error = -EBUSY;20612061···20782078 * To prevent any new references to the target during the20792079 * rename, we unhash the dentry in advance.20802080 */20812081- if (!d_unhashed(new_dentry)) {20812081+ if (!d_unhashed(new_dentry))20822082 d_drop(new_dentry);20832083- rehash = new_dentry;20842084- }2085208320862084 if (d_count(new_dentry) > 2) {20872085 int err;···20962098 goto out;2097209920982100 new_dentry = dentry;20992099- rehash = NULL;21002101 new_inode = NULL;21012102 }21022103 }···21162119 error = task->tk_status;21172120 rpc_put_task(task);21182121out:21192119- if (rehash)21202120- d_rehash(rehash);21212122 trace_nfs_rename_exit(old_dir, old_dentry,21222123 new_dir, new_dentry, error);21232124 /* new dentry created? */
+101-60
fs/nfs/filelayout/filelayout.c
···202202 task->tk_status);203203 nfs4_mark_deviceid_unavailable(devid);204204 pnfs_error_mark_layout_for_return(inode, lseg);205205- pnfs_set_lo_fail(lseg);206205 rpc_wake_up(&tbl->slot_tbl_waitq);207206 /* fall through */208207 default:208208+ pnfs_set_lo_fail(lseg);209209reset:210210 dprintk("%s Retry through MDS. Error %d\n", __func__,211211 task->tk_status);···560560 return PNFS_ATTEMPTED;561561}562562563563-/*564564- * filelayout_check_layout()565565- *566566- * Make sure layout segment parameters are sane WRT the device.567567- * At this point no generic layer initialization of the lseg has occurred,568568- * and nothing has been added to the layout_hdr cache.569569- *570570- */571563static int572572-filelayout_check_layout(struct pnfs_layout_hdr *lo,573573- struct nfs4_filelayout_segment *fl,574574- struct nfs4_layoutget_res *lgr,575575- struct nfs4_deviceid *id,576576- gfp_t gfp_flags)564564+filelayout_check_deviceid(struct pnfs_layout_hdr *lo,565565+ struct nfs4_filelayout_segment *fl,566566+ gfp_t gfp_flags)577567{578568 struct nfs4_deviceid_node *d;579569 struct nfs4_file_layout_dsaddr *dsaddr;580570 int status = -EINVAL;581571582582- dprintk("--> %s\n", __func__);583583-584584- /* FIXME: remove this check when layout segment support is added */585585- if (lgr->range.offset != 0 ||586586- lgr->range.length != NFS4_MAX_UINT64) {587587- dprintk("%s Only whole file layouts supported. Use MDS i/o\n",588588- __func__);589589- goto out;590590- }591591-592592- if (fl->pattern_offset > lgr->range.offset) {593593- dprintk("%s pattern_offset %lld too large\n",594594- __func__, fl->pattern_offset);595595- goto out;596596- }597597-598598- if (!fl->stripe_unit) {599599- dprintk("%s Invalid stripe unit (%u)\n",600600- __func__, fl->stripe_unit);601601- goto out;602602- }603603-604572 /* find and reference the deviceid */605605- d = nfs4_find_get_deviceid(NFS_SERVER(lo->plh_inode), id,573573+ d = nfs4_find_get_deviceid(NFS_SERVER(lo->plh_inode), &fl->deviceid,606574 lo->plh_lc_cred, gfp_flags);607575 if (d == NULL)608576 goto out;···596628 __func__, fl->num_fh);597629 goto out_put;598630 }631631+ status = 0;632632+out:633633+ return status;634634+out_put:635635+ nfs4_fl_put_deviceid(dsaddr);636636+ goto out;637637+}638638+639639+/*640640+ * filelayout_check_layout()641641+ *642642+ * Make sure layout segment parameters are sane WRT the device.643643+ * At this point no generic layer initialization of the lseg has occurred,644644+ * and nothing has been added to the layout_hdr cache.645645+ *646646+ */647647+static int648648+filelayout_check_layout(struct pnfs_layout_hdr *lo,649649+ struct nfs4_filelayout_segment *fl,650650+ struct nfs4_layoutget_res *lgr,651651+ gfp_t gfp_flags)652652+{653653+ int status = -EINVAL;654654+655655+ dprintk("--> %s\n", __func__);656656+657657+ /* FIXME: remove this check when layout segment support is added */658658+ if (lgr->range.offset != 0 ||659659+ lgr->range.length != NFS4_MAX_UINT64) {660660+ dprintk("%s Only whole file layouts supported. Use MDS i/o\n",661661+ __func__);662662+ goto out;663663+ }664664+665665+ if (fl->pattern_offset > lgr->range.offset) {666666+ dprintk("%s pattern_offset %lld too large\n",667667+ __func__, fl->pattern_offset);668668+ goto out;669669+ }670670+671671+ if (!fl->stripe_unit) {672672+ dprintk("%s Invalid stripe unit (%u)\n",673673+ __func__, fl->stripe_unit);674674+ goto out;675675+ }599676600677 status = 0;601678out:602679 dprintk("--> %s returns %d\n", __func__, status);603680 return status;604604-out_put:605605- nfs4_fl_put_deviceid(dsaddr);606606- goto out;607681}608682609683static void _filelayout_free_lseg(struct nfs4_filelayout_segment *fl)···667657filelayout_decode_layout(struct pnfs_layout_hdr *flo,668658 struct nfs4_filelayout_segment *fl,669659 struct nfs4_layoutget_res *lgr,670670- struct nfs4_deviceid *id,671660 gfp_t gfp_flags)672661{673662 struct xdr_stream stream;···691682 if (unlikely(!p))692683 goto out_err;693684694694- memcpy(id, p, sizeof(*id));685685+ memcpy(&fl->deviceid, p, sizeof(fl->deviceid));695686 p += XDR_QUADLEN(NFS4_DEVICEID4_SIZE);696696- nfs4_print_deviceid(id);687687+ nfs4_print_deviceid(&fl->deviceid);697688698689 nfl_util = be32_to_cpup(p++);699690 if (nfl_util & NFL4_UFLG_COMMIT_THRU_MDS)···840831{841832 struct nfs4_filelayout_segment *fl;842833 int rc;843843- struct nfs4_deviceid id;844834845835 dprintk("--> %s\n", __func__);846836 fl = kzalloc(sizeof(*fl), gfp_flags);847837 if (!fl)848838 return NULL;849839850850- rc = filelayout_decode_layout(layoutid, fl, lgr, &id, gfp_flags);851851- if (rc != 0 || filelayout_check_layout(layoutid, fl, lgr, &id, gfp_flags)) {840840+ rc = filelayout_decode_layout(layoutid, fl, lgr, gfp_flags);841841+ if (rc != 0 || filelayout_check_layout(layoutid, fl, lgr, gfp_flags)) {852842 _filelayout_free_lseg(fl);853843 return NULL;854844 }···896888 return min(stripe_unit - (unsigned int)stripe_offset, size);897889}898890891891+static struct pnfs_layout_segment *892892+fl_pnfs_update_layout(struct inode *ino,893893+ struct nfs_open_context *ctx,894894+ loff_t pos,895895+ u64 count,896896+ enum pnfs_iomode iomode,897897+ bool strict_iomode,898898+ gfp_t gfp_flags)899899+{900900+ struct pnfs_layout_segment *lseg = NULL;901901+ struct pnfs_layout_hdr *lo;902902+ struct nfs4_filelayout_segment *fl;903903+ int status;904904+905905+ lseg = pnfs_update_layout(ino, ctx, pos, count, iomode, strict_iomode,906906+ gfp_flags);907907+ if (!lseg)908908+ lseg = ERR_PTR(-ENOMEM);909909+ if (IS_ERR(lseg))910910+ goto out;911911+912912+ lo = NFS_I(ino)->layout;913913+ fl = FILELAYOUT_LSEG(lseg);914914+915915+ status = filelayout_check_deviceid(lo, fl, gfp_flags);916916+ if (status)917917+ lseg = ERR_PTR(status);918918+out:919919+ if (IS_ERR(lseg))920920+ pnfs_put_lseg(lseg);921921+ return lseg;922922+}923923+899924static void900925filelayout_pg_init_read(struct nfs_pageio_descriptor *pgio,901926 struct nfs_page *req)902927{903928 if (!pgio->pg_lseg) {904904- pgio->pg_lseg = pnfs_update_layout(pgio->pg_inode,905905- req->wb_context,906906- 0,907907- NFS4_MAX_UINT64,908908- IOMODE_READ,909909- false,910910- GFP_KERNEL);929929+ pgio->pg_lseg = fl_pnfs_update_layout(pgio->pg_inode,930930+ req->wb_context,931931+ 0,932932+ NFS4_MAX_UINT64,933933+ IOMODE_READ,934934+ false,935935+ GFP_KERNEL);911936 if (IS_ERR(pgio->pg_lseg)) {912937 pgio->pg_error = PTR_ERR(pgio->pg_lseg);913938 pgio->pg_lseg = NULL;···960919 int status;961920962921 if (!pgio->pg_lseg) {963963- pgio->pg_lseg = pnfs_update_layout(pgio->pg_inode,964964- req->wb_context,965965- 0,966966- NFS4_MAX_UINT64,967967- IOMODE_RW,968968- false,969969- GFP_NOFS);922922+ pgio->pg_lseg = fl_pnfs_update_layout(pgio->pg_inode,923923+ req->wb_context,924924+ 0,925925+ NFS4_MAX_UINT64,926926+ IOMODE_RW,927927+ false,928928+ GFP_NOFS);970929 if (IS_ERR(pgio->pg_lseg)) {971930 pgio->pg_error = PTR_ERR(pgio->pg_lseg);972931 pgio->pg_lseg = NULL;
+10-9
fs/nfs/filelayout/filelayout.h
···5555};56565757struct nfs4_filelayout_segment {5858- struct pnfs_layout_segment generic_hdr;5959- u32 stripe_type;6060- u32 commit_through_mds;6161- u32 stripe_unit;6262- u32 first_stripe_index;6363- u64 pattern_offset;6464- struct nfs4_file_layout_dsaddr *dsaddr; /* Point to GETDEVINFO data */6565- unsigned int num_fh;6666- struct nfs_fh **fh_array;5858+ struct pnfs_layout_segment generic_hdr;5959+ u32 stripe_type;6060+ u32 commit_through_mds;6161+ u32 stripe_unit;6262+ u32 first_stripe_index;6363+ u64 pattern_offset;6464+ struct nfs4_deviceid deviceid;6565+ struct nfs4_file_layout_dsaddr *dsaddr; /* Point to GETDEVINFO data */6666+ unsigned int num_fh;6767+ struct nfs_fh **fh_array;6768};68696970struct nfs4_filelayout {
···167167168168int nfsd_minorversion(u32 minorversion, enum vers_op change)169169{170170- if (minorversion > NFSD_SUPPORTED_MINOR_VERSION)170170+ if (minorversion > NFSD_SUPPORTED_MINOR_VERSION &&171171+ change != NFSD_AVAIL)171172 return -1;172173 switch(change) {173174 case NFSD_SET:···416415417416void nfsd_reset_versions(void)418417{419419- int found_one = 0;420418 int i;421419422422- for (i = NFSD_MINVERS; i < NFSD_NRVERS; i++) {423423- if (nfsd_program.pg_vers[i])424424- found_one = 1;425425- }420420+ for (i = 0; i < NFSD_NRVERS; i++)421421+ if (nfsd_vers(i, NFSD_TEST))422422+ return;426423427427- if (!found_one) {428428- for (i = NFSD_MINVERS; i < NFSD_NRVERS; i++)429429- nfsd_program.pg_vers[i] = nfsd_version[i];430430-#if defined(CONFIG_NFSD_V2_ACL) || defined(CONFIG_NFSD_V3_ACL)431431- for (i = NFSD_ACL_MINVERS; i < NFSD_ACL_NRVERS; i++)432432- nfsd_acl_program.pg_vers[i] =433433- nfsd_acl_version[i];434434-#endif435435- }424424+ for (i = 0; i < NFSD_NRVERS; i++)425425+ if (i != 4)426426+ nfsd_vers(i, NFSD_SET);427427+ else {428428+ int minor = 0;429429+ while (nfsd_minorversion(minor, NFSD_SET) >= 0)430430+ minor++;431431+ }436432}437433438434/*
+3-3
include/asm-generic/sections.h
···1414 * [_sdata, _edata]: contains .data.* sections, may also contain .rodata.*1515 * and/or .init.* sections.1616 * [__start_rodata, __end_rodata]: contains .rodata.* sections1717- * [__start_data_ro_after_init, __end_data_ro_after_init]:1818- * contains data.ro_after_init section1717+ * [__start_ro_after_init, __end_ro_after_init]:1818+ * contains .data..ro_after_init section1919 * [__init_begin, __init_end]: contains .init.* sections, but .init.text.*2020 * may be out of this range on some architectures.2121 * [_sinittext, _einittext]: contains .init.text.* sections···3333extern char __bss_start[], __bss_stop[];3434extern char __init_begin[], __init_end[];3535extern char _sinittext[], _einittext[];3636-extern char __start_data_ro_after_init[], __end_data_ro_after_init[];3636+extern char __start_ro_after_init[], __end_ro_after_init[];3737extern char _end[];3838extern char __per_cpu_load[], __per_cpu_start[], __per_cpu_end[];3939extern char __kprobes_text_start[], __kprobes_text_end[];
···3232struct writeback_control;3333struct bdi_writeback;34343535+void init_mm_internals(void);3636+3537#ifndef CONFIG_NEED_MULTIPLE_NODES /* Don't use mapnrs, do it properly */3638extern unsigned long max_mapnr;3739
+7-6
include/linux/sched/clock.h
···5454}5555#else5656extern void sched_clock_init_late(void);5757-/*5858- * Architectures can set this to 1 if they have specified5959- * CONFIG_HAVE_UNSTABLE_SCHED_CLOCK in their arch Kconfig,6060- * but then during bootup it turns out that sched_clock()6161- * is reliable after all:6262- */6357extern int sched_clock_stable(void);6458extern void clear_sched_clock_stable(void);5959+6060+/*6161+ * When sched_clock_stable(), __sched_clock_offset provides the offset6262+ * between local_clock() and sched_clock().6363+ */6464+extern u64 __sched_clock_offset;6565+65666667extern void sched_clock_tick(void);6768extern void sched_clock_idle_sleep_event(void);
···12121313 if (!try_get_task_stack(target)) {1414 /* Task has no stack, so the task isn't in a syscall. */1515+ *sp = *pc = 0;1516 *callno = -1;1617 return 0;1718 }
+10
lib/test_kasan.c
···2020#include <linux/string.h>2121#include <linux/uaccess.h>2222#include <linux/module.h>2323+#include <linux/kasan.h>23242425/*2526 * Note: test functions are marked noinline so that their names appear in···475474476475static int __init kmalloc_tests_init(void)477476{477477+ /*478478+ * Temporarily enable multi-shot mode. Otherwise, we'd only get a479479+ * report for the first case.480480+ */481481+ bool multishot = kasan_save_enable_multi_shot();482482+478483 kmalloc_oob_right();479484 kmalloc_oob_left();480485 kmalloc_node_oob_right();···506499 ksize_unpoisons_memory();507500 copy_user_test();508501 use_after_scope_test();502502+503503+ kasan_restore_multi_shot(multishot);504504+509505 return -EAGAIN;510506}511507
+7-3
mm/hugetlb.c
···44034403 return 0;44044404out_err:44054405 if (!vma || vma->vm_flags & VM_MAYSHARE)44064406- region_abort(resv_map, from, to);44064406+ /* Don't call region_abort if region_chg failed */44074407+ if (chg >= 0)44084408+ region_abort(resv_map, from, to);44074409 if (vma && is_vma_resv_set(vma, HPAGE_RESV_OWNER))44084410 kref_put(&resv_map->refs, resv_map_release);44094411 return ret;···46534651{46544652 struct page *page = NULL;46554653 spinlock_t *ptl;46544654+ pte_t pte;46564655retry:46574656 ptl = pmd_lockptr(mm, pmd);46584657 spin_lock(ptl);···46634660 */46644661 if (!pmd_huge(*pmd))46654662 goto out;46664666- if (pmd_present(*pmd)) {46634663+ pte = huge_ptep_get((pte_t *)pmd);46644664+ if (pte_present(pte)) {46674665 page = pmd_page(*pmd) + ((address & ~PMD_MASK) >> PAGE_SHIFT);46684666 if (flags & FOLL_GET)46694667 get_page(page);46704668 } else {46714671- if (is_hugetlb_entry_migration(huge_ptep_get((pte_t *)pmd))) {46694669+ if (is_hugetlb_entry_migration(pte)) {46724670 spin_unlock(ptl);46734671 __migration_entry_wait(mm, (pte_t *)pmd, ptl);46744672 goto retry;
···267267 /* NOTE: overflow flag is not cleared */268268 spin_unlock_irqrestore(&f->lock, flags);269269270270+ /* close the old pool and wait until all users are gone */271271+ snd_seq_pool_mark_closing(oldpool);272272+ snd_use_lock_sync(&f->use_lock);273273+270274 /* release cells in old pool */271275 for (cell = oldhead; cell; cell = next) {272276 next = cell->next;
···13131414config SND_SOC_MT2701_CS424481515 tristate "ASoc Audio driver for MT2701 with CS42448 codec"1616- depends on SND_SOC_MT27011616+ depends on SND_SOC_MT2701 && I2C1717 select SND_SOC_CS42XX8_I2C1818 select SND_SOC_BT_SCO1919 help