{"push_id":1799804447,"size":119,"distinct_size":119,"ref":"refs/heads/linux-4.9.y","head":"05afd4c0af6a43f6bda7caaacb01bc0116d50d3b","before":"f1aa865ae5d4608cbfbb02f42baa1ef5ed95fce2","commits":[{"sha":"96d145216b5884c3ba3003b2ccd6eb2da625a77d","author":{"name":"Mintz, Yuval","email":"e7ff2cbe0352d468438315672d3ce2e0ac5acd78@cavium.com"},"message":"bnx2x: Fix Multi-Cos\n\n\n[ Upstream commit 3968d38917eb9bd0cd391265f6c9c538d9b33ffa ]\n\nApparently multi-cos isn't working for bnx2x quite some time -\ndriver implements ndo_select_queue() to allow queue-selection\nfor FCoE, but the regular L2 flow would cause it to modulo the\nfallback's result by the number of queues.\nThe fallback would return a queue matching the needed tc\n[via __skb_tx_hash()], but since the modulo is by the number of TSS\nqueues where number of TCs is not accounted, transmission would always\nbe done by a queue configured into using TC0.\n\nFixes: ada7c19e6d27 (\"bnx2x: use XPS if possible for bnx2x_select_queue instead of pure hash\")\nSigned-off-by: Yuval Mintz <Yuval.Mintz@cavium.com>\nSigned-off-by: David S. Miller <davem@davemloft.net>\nSigned-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>","distinct":true,"url":"https://api.github.com/repos/Whissi/linux-stable/commits/96d145216b5884c3ba3003b2ccd6eb2da625a77d"},{"sha":"b5e9b7ad0dd449b9296e16f4c0da9d4bb3d36d6d","author":{"name":"Lance Richardson","email":"529d81928dd60beeaf299499acfc13e39cc028fb@redhat.com"},"message":"vxlan: eliminate cached dst leak\n\n\n[ Upstream commit 35cf2845563c1aaa01d27bd34d64795c4ae72700 ]\n\nAfter commit 0c1d70af924b (\"net: use dst_cache for vxlan device\"),\ncached dst entries could be leaked when more than one remote was\npresent for a given vxlan_fdb entry, causing subsequent netns\noperations to block indefinitely and \"unregister_netdevice: waiting\nfor lo to become free.\" messages to appear in the kernel log.\n\nFix by properly releasing cached dst and freeing resources in this\ncase.\n\nFixes: 0c1d70af924b (\"net: use dst_cache for vxlan device\")\nSigned-off-by: Lance Richardson <lrichard@redhat.com>\nAcked-by: Paolo Abeni <pabeni@redhat.com>\nSigned-off-by: David S. Miller <davem@davemloft.net>\nSigned-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>","distinct":true,"url":"https://api.github.com/repos/Whissi/linux-stable/commits/b5e9b7ad0dd449b9296e16f4c0da9d4bb3d36d6d"},{"sha":"abbcb731d69cfa7fbcd7b77514ae04764827fdbf","author":{"name":"Ben Hutchings","email":"9c85637c38b80821c7bd8a03bde7b59da81ab77d@decadent.org.uk"},"message":"ipv6: xfrm: Handle errors reported by xfrm6_find_1stfragopt()\n\n\n[ Upstream commit 6e80ac5cc992ab6256c3dae87f7e57db15e1a58c ]\n\nxfrm6_find_1stfragopt() may now return an error code and we must\nnot treat it as a length.\n\nFixes: 2423496af35d (\"ipv6: Prevent overrun when parsing v6 header options\")\nSigned-off-by: Ben Hutchings <ben@decadent.org.uk>\nAcked-by: Craig Gallek <kraig@google.com>\nSigned-off-by: David S. Miller <davem@davemloft.net>\nSigned-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>","distinct":true,"url":"https://api.github.com/repos/Whissi/linux-stable/commits/abbcb731d69cfa7fbcd7b77514ae04764827fdbf"},{"sha":"61c92d5a533c884d93b129cd4ad412a9128db9b7","author":{"name":"Ganesh Goudar","email":"ff9295da3efab614774f90df169865d2fa93c83f@chelsio.com"},"message":"cxgb4: avoid enabling napi twice to the same queue\n\n\n[ Upstream commit e7519f9926f1d0d11c776eb0475eb098c7760f68 ]\n\nTake uld mutex to avoid race between cxgb_up() and\ncxgb4_register_uld() to enable napi for the same uld\nqueue.\n\nSigned-off-by: Ganesh Goudar <ganeshgr@chelsio.com>\nSigned-off-by: David S. Miller <davem@davemloft.net>\nSigned-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>","distinct":true,"url":"https://api.github.com/repos/Whissi/linux-stable/commits/61c92d5a533c884d93b129cd4ad412a9128db9b7"},{"sha":"3ee35b96825e063defe6eb333ffd3124aab5061b","author":{"name":"Yuchung Cheng","email":"e9603dd2756952b85012eef69eadebbcaf13f45b@google.com"},"message":"tcp: disallow cwnd undo when switching congestion control\n\n\n[ Upstream commit 44abafc4cc094214a99f860f778c48ecb23422fc ]\n\nWhen the sender switches its congestion control during loss\nrecovery, if the recovery is spurious then it may incorrectly\nrevert cwnd and ssthresh to the older values set by a previous\ncongestion control. Consider a congestion control (like BBR)\nthat does not use ssthresh and keeps it infinite: the connection\nmay incorrectly revert cwnd to an infinite value when switching\nfrom BBR to another congestion control.\n\nThis patch fixes it by disallowing such cwnd undo operation\nupon switching congestion control.  Note that undo_marker\nis not reset s.t. the packets that were incorrectly marked\nlost would be corrected. We only avoid undoing the cwnd in\ntcp_undo_cwnd_reduction().\n\nSigned-off-by: Yuchung Cheng <ycheng@google.com>\nSigned-off-by: Soheil Hassas Yeganeh <soheil@google.com>\nSigned-off-by: Neal Cardwell <ncardwell@google.com>\nSigned-off-by: Eric Dumazet <edumazet@google.com>\nSigned-off-by: David S. Miller <davem@davemloft.net>\nSigned-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>","distinct":true,"url":"https://api.github.com/repos/Whissi/linux-stable/commits/3ee35b96825e063defe6eb333ffd3124aab5061b"},{"sha":"c242e1a8140e56ff0f673ff82c4c5db3df7d4d4a","author":{"name":"Mark Bloch","email":"7c18a00fb5da813fb689dd380e6ae6c4fed63111@mellanox.com"},"message":"vxlan: fix use-after-free on deletion\n\n\n[ Upstream commit a53cb29b0af346af44e4abf13d7e59f807fba690 ]\n\nAdding a vxlan interface to a socket isn't symmetrical, while adding\nis done in vxlan_open() the deletion is done in vxlan_dellink().\nThis can cause a use-after-free error when we close the vxlan\ninterface before deleting it.\n\nWe add vxlan_vs_del_dev() to match vxlan_vs_add_dev() and call\nit from vxlan_stop() to match the call from vxlan_open().\n\nFixes: 56ef9c909b40 (\"vxlan: Move socket initialization to within rtnl scope\")\nAcked-by: Jiri Benc <jbenc@redhat.com>\nTested-by: Roi Dayan <roid@mellanox.com>\nSigned-off-by: Mark Bloch <markb@mellanox.com>\nAcked-by: Roopa Prabhu <roopa@cumulusnetworks.com>\nSigned-off-by: David S. Miller <davem@davemloft.net>\nSigned-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>","distinct":true,"url":"https://api.github.com/repos/Whissi/linux-stable/commits/c242e1a8140e56ff0f673ff82c4c5db3df7d4d4a"},{"sha":"599a4478d8cb7ad19bd946c878d59860c5df7875","author":{"name":"David S. Miller","email":"79caf591e37e1438a2d55ae59670d5cd0d717764@davemloft.net"},"message":"ipv6: Fix leak in ipv6_gso_segment().\n\n\n[ Upstream commit e3e86b5119f81e5e2499bea7ea1ebe8ac6aab789 ]\n\nIf ip6_find_1stfragopt() fails and we return an error we have to free\nup 'segs' because nobody else is going to.\n\nFixes: 2423496af35d (\"ipv6: Prevent overrun when parsing v6 header options\")\nReported-by: Ben Hutchings <ben@decadent.org.uk>\nSigned-off-by: David S. Miller <davem@davemloft.net>\nSigned-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>","distinct":true,"url":"https://api.github.com/repos/Whissi/linux-stable/commits/599a4478d8cb7ad19bd946c878d59860c5df7875"},{"sha":"0aa89f1b07de1e8a54f9073b0a48266e864c647e","author":{"name":"Eric Dumazet","email":"b3d77ad2db30f558882cc0c038be5a3cf96611f9@google.com"},"message":"net: ping: do not abuse udp_poll()\n\n\n[ Upstream commit 77d4b1d36926a9b8387c6b53eeba42bcaaffcea3 ]\n\nAlexander reported various KASAN messages triggered in recent kernels\n\nThe problem is that ping sockets should not use udp_poll() in the first\nplace, and recent changes in UDP stack finally exposed this old bug.\n\nFixes: c319b4d76b9e (\"net: ipv4: add IPPROTO_ICMP socket kind\")\nFixes: 6d0bfe226116 (\"net: ipv6: Add IPv6 support to the ping socket.\")\nSigned-off-by: Eric Dumazet <edumazet@google.com>\nReported-by: Sasha Levin <alexander.levin@verizon.com>\nCc: Solar Designer <solar@openwall.com>\nCc: Vasiliy Kulikov <segoon@openwall.com>\nCc: Lorenzo Colitti <lorenzo@google.com>\nAcked-By: Lorenzo Colitti <lorenzo@google.com>\nTested-By: Lorenzo Colitti <lorenzo@google.com>\nSigned-off-by: David S. Miller <davem@davemloft.net>\nSigned-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>","distinct":true,"url":"https://api.github.com/repos/Whissi/linux-stable/commits/0aa89f1b07de1e8a54f9073b0a48266e864c647e"},{"sha":"a97f807363d4f3c8c849a0e12064305d5bb5a6dc","author":{"name":"Richard Haines","email":"0fa87f366ff7633c0bd4103a1a46a5e21beaf50f@btinternet.com"},"message":"net/ipv6: Fix CALIPSO causing GPF with datagram support\n\n\n[ Upstream commit e3ebdb20fddacded2740a333ff66781e0d28b05c ]\n\nWhen using CALIPSO with IPPROTO_UDP it is possible to trigger a GPF as the\nIP header may have moved.\n\nAlso update the payload length after adding the CALIPSO option.\n\nSigned-off-by: Richard Haines <richard_c_haines@btinternet.com>\nAcked-by: Paul Moore <paul@paul-moore.com>\nSigned-off-by: Huw Davies <huw@codeweavers.com>\nSigned-off-by: David S. Miller <davem@davemloft.net>\nSigned-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>","distinct":true,"url":"https://api.github.com/repos/Whissi/linux-stable/commits/a97f807363d4f3c8c849a0e12064305d5bb5a6dc"},{"sha":"a83564d128637c99d454cc1918b69ca84b9ce688","author":{"name":"Max Filippov","email":"d74404602d9677d809facc4c4eac9231fee6b605@gmail.com"},"message":"net: ethoc: enable NAPI before poll may be scheduled\n\n\n[ Upstream commit d220b942a4b6a0640aee78841608f4aa5e8e185e ]\n\nethoc_reset enables device interrupts, ethoc_interrupt may schedule a\nNAPI poll before NAPI is enabled in the ethoc_open, which results in\ndevice being unable to send or receive anything until it's closed and\nreopened. In case the device is flooded with ingress packets it may be\nunable to recover at all.\nMove napi_enable above ethoc_reset in the ethoc_open to fix that.\n\nFixes: a1702857724f (\"net: Add support for the OpenCores 10/100 Mbps Ethernet MAC.\")\nSigned-off-by: Max Filippov <jcmvbkbc@gmail.com>\nReviewed-by: Tobias Klauser <tklauser@distanz.ch>\nReviewed-by: Florian Fainelli <f.fainelli@gmail.com>\nSigned-off-by: David S. Miller <davem@davemloft.net>\nSigned-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>","distinct":true,"url":"https://api.github.com/repos/Whissi/linux-stable/commits/a83564d128637c99d454cc1918b69ca84b9ce688"},{"sha":"3dd4daf112fd0c29e35b5f08af25ad93920e61aa","author":{"name":"Niklas Cassel","email":"3485f106f03dc7fc03607a0ea8be0cf4e5f44f2d@axis.com"},"message":"net: stmmac: fix completely hung TX when using TSO\n\n\n[ Upstream commit 426849e6611f2092553f8d53372ae310818a6292 ]\n\nstmmac_tso_allocator can fail to set the Last Descriptor bit\non a descriptor that actually was the last descriptor.\n\nThis happens when the buffer of the last descriptor ends\nup having a size of exactly TSO_MAX_BUFF_SIZE.\n\nWhen the IP eventually reaches the next last descriptor,\nwhich actually has the bit set, the DMA will hang.\n\nWhen the DMA hangs, we get a tx timeout, however,\nsince stmmac does not do a complete reset of the IP\nin stmmac_tx_timeout, we end up in a state with\ncompletely hung TX.\n\nSigned-off-by: Niklas Cassel <niklas.cassel@axis.com>\nAcked-by: Giuseppe Cavallaro <peppe.cavallaro@st.com>\nAcked-by: Alexandre TORGUE <alexandre.torgue@st.com>\nSigned-off-by: David S. Miller <davem@davemloft.net>\nSigned-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>","distinct":true,"url":"https://api.github.com/repos/Whissi/linux-stable/commits/3dd4daf112fd0c29e35b5f08af25ad93920e61aa"},{"sha":"0255284edddcfbba86c8997da2836a9bafc0354a","author":{"name":"Nikolay Aleksandrov","email":"64c6133501914790fe0371388ffd86301bcc142b@cumulusnetworks.com"},"message":"net: bridge: start hello timer only if device is up\n\n\n[ Upstream commit aeb073241fe7a2b932e04e20c60e47718332877f ]\n\nWhen the transition of NO_STP -> KERNEL_STP was fixed by always calling\nmod_timer in br_stp_start, it introduced a new regression which causes\nthe timer to be armed even when the bridge is down, and since we stop\nthe timers in its ndo_stop() function, they never get disabled if the\ndevice is destroyed before it's upped.\n\nTo reproduce:\n$ while :; do ip l add br0 type bridge hello_time 100; brctl stp br0 on;\nip l del br0; done;\n\nCC: Xin Long <lucien.xin@gmail.com>\nCC: Ivan Vecera <cera@cera.cz>\nCC: Sebastian Ott <sebott@linux.vnet.ibm.com>\nReported-by: Sebastian Ott <sebott@linux.vnet.ibm.com>\nFixes: 6d18c732b95c (\"bridge: start hello_timer when enabling KERNEL_STP in br_stp_start\")\nSigned-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>\nSigned-off-by: David S. Miller <davem@davemloft.net>\nSigned-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>","distinct":true,"url":"https://api.github.com/repos/Whissi/linux-stable/commits/0255284edddcfbba86c8997da2836a9bafc0354a"},{"sha":"4b684e6474d0137d00c555b51f9bb4299f3e29bb","author":{"name":"David S. Miller","email":"79caf591e37e1438a2d55ae59670d5cd0d717764@davemloft.net"},"message":"sparc64: Add __multi3 for gcc 7.x and later.\n\n\n[ Upstream commit 1b4af13ff2cc6897557bb0b8d9e2fad4fa4d67aa ]\n\nReported-by: Waldemar Brodkorb <wbx@openadk.org>\nSigned-off-by: David S. Miller <davem@davemloft.net>\nSigned-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>","distinct":true,"url":"https://api.github.com/repos/Whissi/linux-stable/commits/4b684e6474d0137d00c555b51f9bb4299f3e29bb"},{"sha":"8d665e039e6621aa9449f22d74f81ca803a748c9","author":{"name":"Mike Kravetz","email":"d107146bb715ad1d7b031c14b4c72b7561dc8356@oracle.com"},"message":"sparc64: mm: fix copy_tsb to correctly copy huge page TSBs\n\n\n[ Upstream commit 654f4807624a657f364417c2a7454f0df9961734 ]\n\nWhen a TSB grows beyond its current capacity, a new TSB is allocated\nand copy_tsb is called to copy entries from the old TSB to the new.\nA hash shift based on page size is used to calculate the index of an\nentry in the TSB.  copy_tsb has hard coded PAGE_SHIFT in these\ncalculations.  However, for huge page TSBs the value REAL_HPAGE_SHIFT\nshould be used.  As a result, when copy_tsb is called for a huge page\nTSB the entries are placed at the incorrect index in the newly\nallocated TSB.  When doing hardware table walk, the MMU does not\nmatch these entries and we end up in the TSB miss handling code.\nThis code will then create and write an entry to the correct index\nin the TSB.  We take a performance hit for the table walk miss and\nrecreation of these entries.\n\nPass a new parameter to copy_tsb that is the page size shift to be\nused when copying the TSB.\n\nSuggested-by: Anthony Yznaga <anthony.yznaga@oracle.com>\nSigned-off-by: Mike Kravetz <mike.kravetz@oracle.com>\nSigned-off-by: David S. Miller <davem@davemloft.net>\nSigned-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>","distinct":true,"url":"https://api.github.com/repos/Whissi/linux-stable/commits/8d665e039e6621aa9449f22d74f81ca803a748c9"},{"sha":"b3ad7a3e57b3c1af5c15a16b3f6c05f943035f1d","author":{"name":"James Clarke","email":"839b7c75ae321548c047f0be618b9152548af6e9@jrtc27.com"},"message":"sparc: Machine description indices can vary\n\n\n[ Upstream commit c982aa9c304bf0b9a7522fd118fed4afa5a0263c ]\n\nVIO devices were being looked up by their index in the machine\ndescription node block, but this often varies over time as devices are\nadded and removed. Instead, store the ID and look up using the type,\nconfig handle and ID.\n\nSigned-off-by: James Clarke <jrtc27@jrtc27.com>\nBugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=112541\nSigned-off-by: David S. Miller <davem@davemloft.net>\nSigned-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>","distinct":true,"url":"https://api.github.com/repos/Whissi/linux-stable/commits/b3ad7a3e57b3c1af5c15a16b3f6c05f943035f1d"},{"sha":"e7590a1b15c816db318d941eee24111798d655fd","author":{"name":"Pavel Tatashin","email":"6977097c81c2a3eb1080d10a254b04da250d15ac@oracle.com"},"message":"sparc64: reset mm cpumask after wrap\n\n\n[ Upstream commit 588974857359861891f478a070b1dc7ae04a3880 ]\n\nAfter a wrap (getting a new context version) a process must get a new\ncontext id, which means that we would need to flush the context id from\nthe TLB before running for the first time with this ID on every CPU. But,\nwe use mm_cpumask to determine if this process has been running on this CPU\nbefore, and this mask is not reset after a wrap. So, there are two possible\nfixes for this issue:\n\n1. Clear mm cpumask whenever mm gets a new context id\n2. Unconditionally flush context every time process is running on a CPU\n\nThis patch implements the first solution\n\nSigned-off-by: Pavel Tatashin <pasha.tatashin@oracle.com>\nReviewed-by: Bob Picco <bob.picco@oracle.com>\nReviewed-by: Steven Sistare <steven.sistare@oracle.com>\nSigned-off-by: David S. Miller <davem@davemloft.net>\nSigned-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>","distinct":true,"url":"https://api.github.com/repos/Whissi/linux-stable/commits/e7590a1b15c816db318d941eee24111798d655fd"},{"sha":"65e3443b61a889b02e33537f4bd94efb23c31592","author":{"name":"Pavel Tatashin","email":"6977097c81c2a3eb1080d10a254b04da250d15ac@oracle.com"},"message":"sparc64: combine activate_mm and switch_mm\n\n\n[ Upstream commit 14d0334c6748ff2aedb3f2f7fdc51ee90a9b54e7 ]\n\nThe only difference between these two functions is that in activate_mm we\nunconditionally flush context. However, there is no need to keep this\ndifference after fixing a bug where cpumask was not reset on a wrap. So, in\nthis patch we combine these.\n\nSigned-off-by: Pavel Tatashin <pasha.tatashin@oracle.com>\nReviewed-by: Bob Picco <bob.picco@oracle.com>\nReviewed-by: Steven Sistare <steven.sistare@oracle.com>\nSigned-off-by: David S. Miller <davem@davemloft.net>\nSigned-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>","distinct":true,"url":"https://api.github.com/repos/Whissi/linux-stable/commits/65e3443b61a889b02e33537f4bd94efb23c31592"},{"sha":"7932bfad0e826c03dfef488cda89143697c81dfe","author":{"name":"Pavel Tatashin","email":"6977097c81c2a3eb1080d10a254b04da250d15ac@oracle.com"},"message":"sparc64: redefine first version\n\n\n[ Upstream commit c4415235b2be0cc791572e8e7f7466ab8f73a2bf ]\n\nCTX_FIRST_VERSION defines the first context version, but also it defines\nfirst context. This patch redefines it to only include the first context\nversion.\n\nSigned-off-by: Pavel Tatashin <pasha.tatashin@oracle.com>\nReviewed-by: Bob Picco <bob.picco@oracle.com>\nReviewed-by: Steven Sistare <steven.sistare@oracle.com>\nSigned-off-by: David S. Miller <davem@davemloft.net>\nSigned-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>","distinct":true,"url":"https://api.github.com/repos/Whissi/linux-stable/commits/7932bfad0e826c03dfef488cda89143697c81dfe"},{"sha":"975f3cdc39154ccf7f339185883ef55933b85a77","author":{"name":"Pavel Tatashin","email":"6977097c81c2a3eb1080d10a254b04da250d15ac@oracle.com"},"message":"sparc64: add per-cpu mm of secondary contexts\n\n\n[ Upstream commit 7a5b4bbf49fe86ce77488a70c5dccfe2d50d7a2d ]\n\nThe new wrap is going to use information from this array to figure out\nmm's that currently have valid secondary contexts setup.\n\nSigned-off-by: Pavel Tatashin <pasha.tatashin@oracle.com>\nReviewed-by: Bob Picco <bob.picco@oracle.com>\nReviewed-by: Steven Sistare <steven.sistare@oracle.com>\nSigned-off-by: David S. Miller <davem@davemloft.net>\nSigned-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>","distinct":true,"url":"https://api.github.com/repos/Whissi/linux-stable/commits/975f3cdc39154ccf7f339185883ef55933b85a77"},{"sha":"b6bb22de0c9ee64926af8509d4d32a5c4b26b5bd","author":{"name":"Pavel Tatashin","email":"6977097c81c2a3eb1080d10a254b04da250d15ac@oracle.com"},"message":"sparc64: new context wrap\n\n\n[ Upstream commit a0582f26ec9dfd5360ea2f35dd9a1b026f8adda0 ]\n\nThe current wrap implementation has a race issue: it is called outside of\nthe ctx_alloc_lock, and also does not wait for all CPUs to complete the\nwrap.  This means that a thread can get a new context with a new version\nand another thread might still be running with the same context. The\nproblem is especially severe on CPUs with shared TLBs, like sun4v. I used\nthe following test to very quickly reproduce the problem:\n- start over 8K processes (must be more than context IDs)\n- write and read values at a  memory location in every process.\n\nVery quickly memory corruptions start happening, and what we read back\ndoes not equal what we wrote.\n\nSeveral approaches were explored before settling on this one:\n\nApproach 1:\nMove smp_new_mmu_context_version() inside ctx_alloc_lock, and wait for\nevery process to complete the wrap. (Note: every CPU must WAIT before\nleaving smp_new_mmu_context_version_client() until every one arrives).\n\nThis approach ends up with deadlocks, as some threads own locks which other\nthreads are waiting for, and they never receive softint until these threads\nexit smp_new_mmu_context_version_client(). Since we do not allow the exit,\ndeadlock happens.\n\nApproach 2:\nHandle wrap right during mondo interrupt. Use etrap/rtrap to enter into\ninto C code, and issue new versions to every CPU.\nThis approach adds some overhead to runtime: in switch_mm() we must add\nsome checks to make sure that versions have not changed due to wrap while\nwe were loading the new secondary context. (could be protected by PSTATE_IE\nbut that degrades performance as on M7 and older CPUs as it takes 50 cycles\nfor each access). Also, we still need a global per-cpu array of MMs to know\nwhere we need to load new contexts, otherwise we can change context to a\nthread that is going way (if we received mondo between switch_mm() and\nswitch_to() time). Finally, there are some issues with window registers in\nrtrap() when context IDs are changed during CPU mondo time.\n\nThe approach in this patch is the simplest and has almost no impact on\nruntime.  We use the array with mm's where last secondary contexts were\nloaded onto CPUs and bump their versions to the new generation without\nchanging context IDs. If a new process comes in to get a context ID, it\nwill go through get_new_mmu_context() because of version mismatch. But the\nrunning processes do not need to be interrupted. And wrap is quicker as we\ndo not need to xcall and wait for everyone to receive and complete wrap.\n\nSigned-off-by: Pavel Tatashin <pasha.tatashin@oracle.com>\nReviewed-by: Bob Picco <bob.picco@oracle.com>\nReviewed-by: Steven Sistare <steven.sistare@oracle.com>\nSigned-off-by: David S. Miller <davem@davemloft.net>\nSigned-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>","distinct":true,"url":"https://api.github.com/repos/Whissi/linux-stable/commits/b6bb22de0c9ee64926af8509d4d32a5c4b26b5bd"}]}
{"actor":{"display_login":"Whissi"}}