Commit graph

1031296 commits

Author SHA1 Message Date
Olof Johansson
e73153ba0c Arm Firmware Framework for ARMv8-A(FFA) interface driver
The Arm FFA specification describes a software architecture to
 leverages the virtualization extension to isolate software images
 provided by an ecosystem of vendors from each other and describes
 interfaces that standardize communication between the various software
 images including communication between images in the Secure world and
 Normal world. Any Hypervisor could use the FFA interfaces to enable
 communication between VMs it manages.
 
 The Hypervisor a.k.a Partition managers in FFA terminology can assign
 system resources(Memory regions, Devices, CPU cycles) to the partitions
 and manage isolation amongst them.
 
 This is the initial and minimal support for the FFA interface to enable
 communication between secure partitions and the normal world OS.
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCAAdFiEEunHlEgbzHrJD3ZPhAEG6vDF+4pgFAmC19HAACgkQAEG6vDF+
 4pijcw//XugK+jFEN7fA6eFzE7OeGt1xPG2mhG5TF1jtvQv2TQlij50V8evOgJmd
 kM3h5pUeEWMt4XrF0I2TlLOglBHLpFbU253kRPRC7zeYxK+AzD6TxtABKZ+eykAk
 OEQisX9FMp/h1rnnvu/OqT7l2AH/pZkVIwc2GQi6h+BvQzUq/NPanuuT+rS00U2E
 lLfZ98MQIjoUSDKr6r0C83gt8BlUWR62jkIkhsLycwFFouhWrdewXptfOntD4wIs
 1pDRi4+qdZLbOeFCLxHR9NfMTdGdnBY//P8NwmnSYV6YnbtVcgwvwyRqMAC6ElJM
 Lk+AuqJS+RSCdyqQerjkvVMNSQx778nPsmzEMteOyLCAfr2kXhQ84FfqaJpFBDsJ
 GQUUW8H5runR2P4p2Q3Tql9tTt7AhrOuO0iUIxBu5cq4YRBPMBamtRbquJtYN+VH
 9ggV4ygbkq4BIKYaBFaVffHOg0ygbvDTkXv/09wRmcGNH12y9AeuLyumhwcWxV0Z
 Kk0bjEieTjvisrshOeKOp5eOuhyixhFJNcffAOIos3KIkuQ1ivAL7cIig9fWF+k0
 AbqOTvX4dVSdIKBi+Q8op2CZ1gyDi80P43MstTgKlbZ8AN2YWxa9S3Iw27D4gY8u
 tIN8PqkB2NctwQecVcGv58JyDlqTRnCcuole7fJWr3iGRdGvyV4=
 =DQ7A
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQJDBAABCgAtFiEElf+HevZ4QCAJmMQ+jBrnPN6EHHcFAmDI23cPHG9sb2ZAbGl4
 b20ubmV0AAoJEIwa5zzehBx3uCcP/37GON7dD4zlic7idjGb6Wh5VuaaCSkKJDGc
 J7KDji52tvYVzNiqlTJu4qgTzWEIX3RLGqKHjeZHBDUwuHoWZFOTtVAU0d3xLVw1
 gXa9LQypRQ094pZ4/5ClaiBV2tiQB2E8j/jppynG+8XpOUDhu5rFD+dUpOhQwqW+
 REs+t1xDuGItcoweJj7ufXw+ZLgoLkbRnU7YniPQe4awS8Ml6lwDi1Rj7CXHmpW4
 5AMA1FLovAZ9Y0Dyy3MVOkfHTP/LVP6LPLxcSUc6xkBT9We76WgiHPMtzvNiwSAV
 ZLTua2cB9OdYt1ZGB40x4XDEZs85L8dGSSRXsARkcX+ImR3rLLOcomdW5QrD7Hgr
 1FtoAed13g5cxfiOizjpXLCEl6qxeW3lQ9au4FQ5xCasS7LM5tM/YuiyrafHu+Ep
 yVNgy35pBNjgh0NmGCGtrH7H9d/n7kdMgTNXHVkD6GW8qxXKEVfVVtwATSRJMRTV
 1bjxXjA2B7u91xAnWm874X6SLVYgxRXtHUR4EMxWoSATNAL4pvTNfGz6Wwt1QD1D
 ZJ8wqjYKhdEnKPqjtUW7iFYrbUd550B9FXwu8f3Uaau8/ON9P+t63C1XPdmyZA57
 CQMufO8TaXJ2ARDVxzO5dyYhgqN5Ew2DvDj/qmlGz26mF25JmdigeuRBplNF302+
 wj3e47y6
 =TfmE
 -----END PGP SIGNATURE-----

Merge tag 'arm-ffa-5.14' of git://git.kernel.org/pub/scm/linux/kernel/git/sudeep.holla/linux into arm/drivers

Arm Firmware Framework for ARMv8-A(FFA) interface driver

The Arm FFA specification describes a software architecture to
leverages the virtualization extension to isolate software images
provided by an ecosystem of vendors from each other and describes
interfaces that standardize communication between the various software
images including communication between images in the Secure world and
Normal world. Any Hypervisor could use the FFA interfaces to enable
communication between VMs it manages.

The Hypervisor a.k.a Partition managers in FFA terminology can assign
system resources(Memory regions, Devices, CPU cycles) to the partitions
and manage isolation amongst them.

This is the initial and minimal support for the FFA interface to enable
communication between secure partitions and the normal world OS.

* tag 'arm-ffa-5.14' of git://git.kernel.org/pub/scm/linux/kernel/git/sudeep.holla/linux:
  firmware: arm_ffa: Add support for MEM_* interfaces
  firmware: arm_ffa: Setup in-kernel users of FFA partitions
  firmware: arm_ffa: Add support for SMCCC as transport to FFA driver
  firmware: arm_ffa: Add initial Arm FFA driver support
  firmware: arm_ffa: Add initial FFA bus support for device enumeration
  arm64: smccc: Add support for SMCCCv1.2 extended input/output registers

Link: https://lore.kernel.org/r/20210601095838.GA838783@bogus
Signed-off-by: Olof Johansson <olof@lixom.net>
2021-06-15 09:55:19 -07:00
Olof Johansson
8d8538a497
Merge tag 'mstar-dt-5.14' of git://github.com/linux-chenxing/linux into arm/dt
* tag 'mstar-dt-5.14' of git://github.com/linux-chenxing/linux:
  ARM: dts: mstar: Add watchdog device node

Link: https://lore.kernel.org/r/CAFr9PXknSfSso6Uq0Fn_qJM5ZnJ4QK=YjJ32kKt4XYPrHK5x6w@mail.gmail.com
Signed-off-by: Olof Johansson <olof@lixom.net>
2021-06-15 09:48:10 -07:00
Romain Perier
8f610169a2 ARM: dts: mstar: Add watchdog device node
This adds the definition of both an oscillator at 12Mhz required by the
the watchdog and the watchdog device node.

Signed-off-by: Romain Perier <romain.perier@gmail.com>
Signed-off-by: Daniel Palmer <daniel@0x0f.com>
2021-06-16 01:22:52 +09:00
Kai Huang
4692bc775d x86/sgx: Add missing xa_destroy() when virtual EPC is destroyed
xa_destroy() needs to be called to destroy a virtual EPC's page array
before calling kfree() to free the virtual EPC. Currently it is not
called so add the missing xa_destroy().

Fixes: 540745ddbc ("x86/sgx: Introduce virtual EPC for use by KVM guests")
Signed-off-by: Kai Huang <kai.huang@intel.com>
Signed-off-by: Borislav Petkov <bp@suse.de>
Acked-by: Dave Hansen <dave.hansen@intel.com>
Tested-by: Yang Zhong <yang.zhong@intel.com>
Link: https://lkml.kernel.org/r/20210615101639.291929-1-kai.huang@intel.com
2021-06-15 18:03:45 +02:00
Daniel Borkmann
1f26622b79 Merge branch 'bpf-sock-migration'
Kuniyuki Iwashima says:

====================
The SO_REUSEPORT option allows sockets to listen on the same port and to
accept connections evenly. However, there is a defect in the current
implementation [1]. When a SYN packet is received, the connection is tied
to a listening socket. Accordingly, when the listener is closed, in-flight
requests during the three-way handshake and child sockets in the accept
queue are dropped even if other listeners on the same port could accept
such connections.

This situation can happen when various server management tools restart
server (such as nginx) processes. For instance, when we change nginx
configurations and restart it, it spins up new workers that respect the
new configuration and closes all listeners on the old workers, resulting
in the in-flight ACK of 3WHS is responded by RST.

To avoid such a situation, users have to know deeply how the kernel handles
SYN packets and implement connection draining by eBPF [2]:

  1. Stop routing SYN packets to the listener by eBPF.
  2. Wait for all timers to expire to complete requests
  3. Accept connections until EAGAIN, then close the listener.

  or

  1. Start counting SYN packets and accept syscalls using the eBPF map.
  2. Stop routing SYN packets.
  3. Accept connections up to the count, then close the listener.

In either way, we cannot close a listener immediately. However, ideally,
the application need not drain the not yet accepted sockets because 3WHS
and tying a connection to a listener are just the kernel behaviour. The
root cause is within the kernel, so the issue should be addressed in kernel
space and should not be visible to user space. This patchset fixes it so
that users need not take care of kernel implementation and connection
draining. With this patchset, the kernel redistributes requests and
connections from a listener to the others in the same reuseport group
at/after close or shutdown syscalls.

Although some software does connection draining, there are still merits in
migration. For some security reasons, such as replacing TLS certificates,
we may want to apply new settings as soon as possible and/or we may not be
able to wait for connection draining. The sockets in the accept queue have
not started application sessions yet. So, if we do not drain such sockets,
they can be handled by the newer listeners and could have a longer
lifetime. It is difficult to drain all connections in every case, but we
can decrease such aborted connections by migration. In that sense,
migration is always better than draining.

Moreover, auto-migration simplifies user space logic and also works well in
a case where we cannot modify and build a server program to implement the
workaround.

Note that the source and destination listeners MUST have the same settings
at the socket API level; otherwise, applications may face inconsistency and
cause errors. In such a case, we have to use the eBPF program to select a
specific listener or to cancel migration.

Special thanks to Martin KaFai Lau for bouncing ideas and exchanging code
snippets along the way.

Link:
 [1] The SO_REUSEPORT socket option
 https://lwn.net/Articles/542629/

 [2] Re: [PATCH 1/1] net: Add SO_REUSEPORT_LISTEN_OFF socket option as drain mode
 https://lore.kernel.org/netdev/1458828813.10868.65.camel@edumazet-glaptop3.roam.corp.google.com/

Changelog:
 v8:
  * Make reuse const in reuseport_sock_index()
  * Don't use __reuseport_add_sock() in reuseport_alloc()
  * Change the arg of the second memcpy() in reuseport_grow()
  * Fix coding style to use goto in reuseport_alloc()
  * Keep sk_refcnt uninitialized in inet_reqsk_clone()
  * Initialize ireq_opt and ipv6_opt separately in reqsk_migrate_reset()

  [ This series does not include a stats patch suggested by Yuchung Cheng
    not to drop Acked-by/Reviewed-by tags and save reviewer's time. I will
    post the patch as a follow up after this series is merged. ]

 v7:
 https://lore.kernel.org/bpf/20210521182104.18273-1-kuniyu@amazon.co.jp/
  * Prevent attaching/detaching a bpf prog via shutdowned socket
  * Fix typo in commit messages
  * Split selftest into subtests

 v6:
 https://lore.kernel.org/bpf/20210517002258.75019-1-kuniyu@amazon.co.jp/
  * Change description in ip-sysctl.rst
  * Test IPPROTO_TCP before reading tfo_listener
  * Move reqsk_clone() to inet_connection_sock.c and rename to
    inet_reqsk_clone()
  * Pass req->rsk_listener to inet_csk_reqsk_queue_drop() and
    reqsk_queue_removed() in the migration path of receiving ACK
  * s/ARG_PTR_TO_SOCKET/PTR_TO_SOCKET/ in sk_reuseport_is_valid_access()
  * In selftest, use atomic ops to increment global vars, drop ACK by XDP,
    enable force fastopen, use "skel->bss" instead of "skel->data"

 v5:
 https://lore.kernel.org/bpf/20210510034433.52818-1-kuniyu@amazon.co.jp/
  * Move initializtion of sk_node from 6th to 5th patch
  * Initialize sk_refcnt in reqsk_clone()
  * Modify some definitions in reqsk_timer_handler()
  * Validate in which path/state migration happens in selftest

 v4:
 https://lore.kernel.org/bpf/20210427034623.46528-1-kuniyu@amazon.co.jp/
  * Make some functions and variables 'static' in selftest
  * Remove 'scalability' from the cover letter

 v3:
 https://lore.kernel.org/bpf/20210420154140.80034-1-kuniyu@amazon.co.jp/
  * Add sysctl back for reuseport_grow()
  * Add helper functions to manage socks[]
  * Separate migration related logic into functions: reuseport_resurrect(),
    reuseport_stop_listen_sock(), reuseport_migrate_sock()
  * Clone request_sock to be migrated
  * Migrate request one by one
  * Pass child socket to eBPF prog

 v2:
 https://lore.kernel.org/netdev/20201207132456.65472-1-kuniyu@amazon.co.jp/
  * Do not save closed sockets in socks[]
  * Revert 607904c357
  * Extract inet_csk_reqsk_queue_migrate() into a single patch
  * Change the spin_lock order to avoid lockdep warning
  * Add static to __reuseport_select_sock
  * Use refcount_inc_not_zero() in reuseport_select_migrated_sock()
  * Set the default attach type in bpf_prog_load_check_attach()
  * Define new proto of BPF_FUNC_get_socket_cookie
  * Fix test to be compiled successfully
  * Update commit messages

 v1:
 https://lore.kernel.org/netdev/20201201144418.35045-1-kuniyu@amazon.co.jp/
  * Remove the sysctl option
  * Enable migration if eBPF progam is not attached
  * Add expected_attach_type to check if eBPF program can migrate sockets
  * Add a field to tell migration type to eBPF program
  * Support BPF_FUNC_get_socket_cookie to get the cookie of sk
  * Allocate an empty skb if skb is NULL
  * Pass req_to_sk(req)->sk_hash because listener's hash is zero
  * Update commit messages and coverletter

 RFC:
 https://lore.kernel.org/netdev/20201117094023.3685-1-kuniyu@amazon.co.jp/
====================

Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
2021-06-15 18:01:14 +02:00
Kuniyuki Iwashima
c9d0bdef89 bpf: Test BPF_SK_REUSEPORT_SELECT_OR_MIGRATE.
This patch adds a test for BPF_SK_REUSEPORT_SELECT_OR_MIGRATE and
removes 'static' from settimeo() in network_helpers.c.

Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.co.jp>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Acked-by: Martin KaFai Lau <kafai@fb.com>
Link: https://lore.kernel.org/bpf/20210612123224.12525-12-kuniyu@amazon.co.jp
2021-06-15 18:01:06 +02:00
Kuniyuki Iwashima
50501271e7 libbpf: Set expected_attach_type for BPF_PROG_TYPE_SK_REUSEPORT.
This commit introduces a new section (sk_reuseport/migrate) and sets
expected_attach_type to two each section in BPF_PROG_TYPE_SK_REUSEPORT
program.

Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.co.jp>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Acked-by: Martin KaFai Lau <kafai@fb.com>
Link: https://lore.kernel.org/bpf/20210612123224.12525-11-kuniyu@amazon.co.jp
2021-06-15 18:01:06 +02:00
Kuniyuki Iwashima
d5e4ddaeb6 bpf: Support socket migration by eBPF.
This patch introduces a new bpf_attach_type for BPF_PROG_TYPE_SK_REUSEPORT
to check if the attached eBPF program is capable of migrating sockets. When
the eBPF program is attached, we run it for socket migration if the
expected_attach_type is BPF_SK_REUSEPORT_SELECT_OR_MIGRATE or
net.ipv4.tcp_migrate_req is enabled.

Currently, the expected_attach_type is not enforced for the
BPF_PROG_TYPE_SK_REUSEPORT type of program. Thus, this commit follows the
earlier idea in the commit aac3fc320d ("bpf: Post-hooks for sys_bind") to
fix up the zero expected_attach_type in bpf_prog_load_fixup_attach_type().

Moreover, this patch adds a new field (migrating_sk) to sk_reuseport_md to
select a new listener based on the child socket. migrating_sk varies
depending on if it is migrating a request in the accept queue or during
3WHS.

  - accept_queue : sock (ESTABLISHED/SYN_RECV)
  - 3WHS         : request_sock (NEW_SYN_RECV)

In the eBPF program, we can select a new listener by
BPF_FUNC_sk_select_reuseport(). Also, we can cancel migration by returning
SK_DROP. This feature is useful when listeners have different settings at
the socket API level or when we want to free resources as soon as possible.

  - SK_PASS with selected_sk, select it as a new listener
  - SK_PASS with selected_sk NULL, fallbacks to the random selection
  - SK_DROP, cancel the migration.

There is a noteworthy point. We select a listening socket in three places,
but we do not have struct skb at closing a listener or retransmitting a
SYN+ACK. On the other hand, some helper functions do not expect skb is NULL
(e.g. skb_header_pointer() in BPF_FUNC_skb_load_bytes(), skb_tail_pointer()
in BPF_FUNC_skb_load_bytes_relative()). So we allocate an empty skb
temporarily before running the eBPF program.

Suggested-by: Martin KaFai Lau <kafai@fb.com>
Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.co.jp>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Acked-by: Martin KaFai Lau <kafai@fb.com>
Link: https://lore.kernel.org/netdev/20201123003828.xjpjdtk4ygl6tg6h@kafai-mbp.dhcp.thefacebook.com/
Link: https://lore.kernel.org/netdev/20201203042402.6cskdlit5f3mw4ru@kafai-mbp.dhcp.thefacebook.com/
Link: https://lore.kernel.org/netdev/20201209030903.hhow5r53l6fmozjn@kafai-mbp.dhcp.thefacebook.com/
Link: https://lore.kernel.org/bpf/20210612123224.12525-10-kuniyu@amazon.co.jp
2021-06-15 18:01:06 +02:00
Kuniyuki Iwashima
e061047684 bpf: Support BPF_FUNC_get_socket_cookie() for BPF_PROG_TYPE_SK_REUSEPORT.
We will call sock_reuseport.prog for socket migration in the next commit,
so the eBPF program has to know which listener is closing to select a new
listener.

We can currently get a unique ID of each listener in the userspace by
calling bpf_map_lookup_elem() for BPF_MAP_TYPE_REUSEPORT_SOCKARRAY map.

This patch makes the pointer of sk available in sk_reuseport_md so that we
can get the ID by BPF_FUNC_get_socket_cookie() in the eBPF program.

Suggested-by: Martin KaFai Lau <kafai@fb.com>
Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.co.jp>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Acked-by: Martin KaFai Lau <kafai@fb.com>
Link: https://lore.kernel.org/netdev/20201119001154.kapwihc2plp4f7zc@kafai-mbp.dhcp.thefacebook.com/
Link: https://lore.kernel.org/bpf/20210612123224.12525-9-kuniyu@amazon.co.jp
2021-06-15 18:01:06 +02:00
Kuniyuki Iwashima
d4f2c86b2b tcp: Migrate TCP_NEW_SYN_RECV requests at receiving the final ACK.
This patch also changes the code to call reuseport_migrate_sock() and
inet_reqsk_clone(), but unlike the other cases, we do not call
inet_reqsk_clone() right after reuseport_migrate_sock().

Currently, in the receive path for TCP_NEW_SYN_RECV sockets, its listener
has three kinds of refcnt:

  (A) for listener itself
  (B) carried by reuqest_sock
  (C) sock_hold() in tcp_v[46]_rcv()

While processing the req, (A) may disappear by close(listener). Also, (B)
can disappear by accept(listener) once we put the req into the accept
queue. So, we have to hold another refcnt (C) for the listener to prevent
use-after-free.

For socket migration, we call reuseport_migrate_sock() to select a listener
with (A) and to increment the new listener's refcnt in tcp_v[46]_rcv().
This refcnt corresponds to (C) and is cleaned up later in tcp_v[46]_rcv().
Thus we have to take another refcnt (B) for the newly cloned request_sock.

In inet_csk_complete_hashdance(), we hold the count (B), clone the req, and
try to put the new req into the accept queue. By migrating req after
winning the "own_req" race, we can avoid such a worst situation:

  CPU 1 looks up req1
  CPU 2 looks up req1, unhashes it, then CPU 1 loses the race
  CPU 3 looks up req2, unhashes it, then CPU 2 loses the race
  ...

Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.co.jp>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Acked-by: Martin KaFai Lau <kafai@fb.com>
Link: https://lore.kernel.org/bpf/20210612123224.12525-8-kuniyu@amazon.co.jp
2021-06-15 18:01:06 +02:00
Kuniyuki Iwashima
c905dee622 tcp: Migrate TCP_NEW_SYN_RECV requests at retransmitting SYN+ACKs.
As with the preceding patch, this patch changes reqsk_timer_handler() to
call reuseport_migrate_sock() and inet_reqsk_clone() to migrate in-flight
requests at retransmitting SYN+ACKs. If we can select a new listener and
clone the request, we resume setting the SYN+ACK timer for the new req. If
we can set the timer, we call inet_ehash_insert() to unhash the old req and
put the new req into ehash.

The noteworthy point here is that by unhashing the old req, another CPU
processing it may lose the "own_req" race in tcp_v[46]_syn_recv_sock() and
drop the final ACK packet. However, the new timer will recover this
situation.

Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.co.jp>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Acked-by: Martin KaFai Lau <kafai@fb.com>
Link: https://lore.kernel.org/bpf/20210612123224.12525-7-kuniyu@amazon.co.jp
2021-06-15 18:01:06 +02:00
Kuniyuki Iwashima
54b92e8419 tcp: Migrate TCP_ESTABLISHED/TCP_SYN_RECV sockets in accept queues.
When we call close() or shutdown() for listening sockets, each child socket
in the accept queue are freed at inet_csk_listen_stop(). If we can get a
new listener by reuseport_migrate_sock() and clone the request by
inet_reqsk_clone(), we try to add it into the new listener's accept queue
by inet_csk_reqsk_queue_add(). If it fails, we have to call __reqsk_free()
to call sock_put() for its listener and free the cloned request.

After putting the full socket into ehash, tcp_v[46]_syn_recv_sock() sets
NULL to ireq_opt/pktopts in struct inet_request_sock, but ipv6_opt can be
non-NULL. So, we have to set NULL to ipv6_opt of the old request to avoid
double free.

Note that we do not update req->rsk_listener and instead clone the req to
migrate because another path may reference the original request. If we
protected it by RCU, we would need to add rcu_read_lock() in many places.

Suggested-by: Martin KaFai Lau <kafai@fb.com>
Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.co.jp>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Acked-by: Martin KaFai Lau <kafai@fb.com>
Link: https://lore.kernel.org/netdev/20201209030903.hhow5r53l6fmozjn@kafai-mbp.dhcp.thefacebook.com/
Link: https://lore.kernel.org/bpf/20210612123224.12525-6-kuniyu@amazon.co.jp
2021-06-15 18:01:05 +02:00
Kuniyuki Iwashima
1cd62c2157 tcp: Add reuseport_migrate_sock() to select a new listener.
reuseport_migrate_sock() does the same check done in
reuseport_listen_stop_sock(). If the reuseport group is capable of
migration, reuseport_migrate_sock() selects a new listener by the child
socket hash and increments the listener's sk_refcnt beforehand. Thus, if we
fail in the migration, we have to decrement it later.

We will support migration by eBPF in the later commits.

Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.co.jp>
Signed-off-by: Martin KaFai Lau <kafai@fb.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Link: https://lore.kernel.org/bpf/20210612123224.12525-5-kuniyu@amazon.co.jp
2021-06-15 18:01:05 +02:00
Kuniyuki Iwashima
333bb73f62 tcp: Keep TCP_CLOSE sockets in the reuseport group.
When we close a listening socket, to migrate its connections to another
listener in the same reuseport group, we have to handle two kinds of child
sockets. One is that a listening socket has a reference to, and the other
is not.

The former is the TCP_ESTABLISHED/TCP_SYN_RECV sockets, and they are in the
accept queue of their listening socket. So we can pop them out and push
them into another listener's queue at close() or shutdown() syscalls. On
the other hand, the latter, the TCP_NEW_SYN_RECV socket is during the
three-way handshake and not in the accept queue. Thus, we cannot access
such sockets at close() or shutdown() syscalls. Accordingly, we have to
migrate immature sockets after their listening socket has been closed.

Currently, if their listening socket has been closed, TCP_NEW_SYN_RECV
sockets are freed at receiving the final ACK or retransmitting SYN+ACKs. At
that time, if we could select a new listener from the same reuseport group,
no connection would be aborted. However, we cannot do that because
reuseport_detach_sock() sets NULL to sk_reuseport_cb and forbids access to
the reuseport group from closed sockets.

This patch allows TCP_CLOSE sockets to remain in the reuseport group and
access it while any child socket references them. The point is that
reuseport_detach_sock() was called twice from inet_unhash() and
sk_destruct(). This patch replaces the first reuseport_detach_sock() with
reuseport_stop_listen_sock(), which checks if the reuseport group is
capable of migration. If capable, it decrements num_socks, moves the socket
backwards in socks[] and increments num_closed_socks. When all connections
are migrated, sk_destruct() calls reuseport_detach_sock() to remove the
socket from socks[], decrement num_closed_socks, and set NULL to
sk_reuseport_cb.

By this change, closed or shutdowned sockets can keep sk_reuseport_cb.
Consequently, calling listen() after shutdown() can cause EADDRINUSE or
EBUSY in inet_csk_bind_conflict() or reuseport_add_sock() which expects
such sockets not to have the reuseport group. Therefore, this patch also
loosens such validation rules so that a socket can listen again if it has a
reuseport group with num_closed_socks more than 0.

When such sockets listen again, we handle them in reuseport_resurrect(). If
there is an existing reuseport group (reuseport_add_sock() path), we move
the socket from the old group to the new one and free the old one if
necessary. If there is no existing group (reuseport_alloc() path), we
allocate a new reuseport group, detach sk from the old one, and free it if
necessary, not to break the current shutdown behaviour:

  - we cannot carry over the eBPF prog of shutdowned sockets
  - we cannot attach/detach an eBPF prog to/from listening sockets via
    shutdowned sockets

Note that when the number of sockets gets over U16_MAX, we try to detach a
closed socket randomly to make room for the new listening socket in
reuseport_grow().

Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.co.jp>
Signed-off-by: Martin KaFai Lau <kafai@fb.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Link: https://lore.kernel.org/bpf/20210612123224.12525-4-kuniyu@amazon.co.jp
2021-06-15 18:01:05 +02:00
Kuniyuki Iwashima
5c040eaf5d tcp: Add num_closed_socks to struct sock_reuseport.
As noted in the following commit, a closed listener has to hold the
reference to the reuseport group for socket migration. This patch adds a
field (num_closed_socks) to struct sock_reuseport to manage closed sockets
within the same reuseport group. Moreover, this and the following commits
introduce some helper functions to split socks[] into two sections and keep
TCP_LISTEN and TCP_CLOSE sockets in each section. Like a double-ended
queue, we will place TCP_LISTEN sockets from the front and TCP_CLOSE
sockets from the end.

  TCP_LISTEN---------->       <-------TCP_CLOSE
  +---+---+  ---  +---+  ---  +---+  ---  +---+
  | 0 | 1 |  ...  | i |  ...  | j |  ...  | k |
  +---+---+  ---  +---+  ---  +---+  ---  +---+

  i = num_socks - 1
  j = max_socks - num_closed_socks
  k = max_socks - 1

This patch also extends reuseport_add_sock() and reuseport_grow() to
support num_closed_socks.

Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.co.jp>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Acked-by: Martin KaFai Lau <kafai@fb.com>
Link: https://lore.kernel.org/bpf/20210612123224.12525-3-kuniyu@amazon.co.jp
2021-06-15 18:01:05 +02:00
Kuniyuki Iwashima
f9ac779f88 net: Introduce net.ipv4.tcp_migrate_req.
This commit adds a new sysctl option: net.ipv4.tcp_migrate_req. If this
option is enabled or eBPF program is attached, we will be able to migrate
child sockets from a listener to another in the same reuseport group after
close() or shutdown() syscalls.

Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.co.jp>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Reviewed-by: Benjamin Herrenschmidt <benh@amazon.com>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Acked-by: Martin KaFai Lau <kafai@fb.com>
Link: https://lore.kernel.org/bpf/20210612123224.12525-2-kuniyu@amazon.co.jp
2021-06-15 18:01:05 +02:00
Kefeng Wang
c9811e379b
riscv: Add mem kernel parameter support
The memblock_enforce_memory_limit() could change the memblock
range, so move the dram_end assignment after it in bootmem_init(),
then support mem= cmdline.

Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com>
Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com>
2021-06-15 08:59:04 -07:00
Kalle Valo
f39c2d1a18 Merge ath-next from git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git
ath.git patches for v5.14. Major changes:

ath11k

* support for WCN6855 PCI hardware

wcn36xx

* WoWLAN support with magic packets and GTK rekeying
2021-06-15 18:47:30 +03:00
Huilong Deng
60f86b9a1c mcb: Remove trailing semicolon in macros
Macros should not use a trailing semicolon.

Signed-off-by: Huilong Deng <denghuilong@cdjrlc.com>
Signed-off-by: Johannes Thumshirn <jth@kernel.org>
Link: https://lore.kernel.org/r/fe520620eeddaa2ed8c669125f9b673c89d6b5a5.1623768541.git.johannes.thumshirn@wdc.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-06-15 17:46:57 +02:00
Pawan Gupta
293649307e x86/tsx: Clear CPUID bits when TSX always force aborts
As a result of TSX deprecation, some processors always abort TSX
transactions by default after a microcode update.

When TSX feature cannot be used it is better to hide it. Clear CPUID.RTM
and CPUID.HLE bits when TSX transactions always abort.

 [ bp: Massage commit message and comments. ]

Signed-off-by: Pawan Gupta <pawan.kumar.gupta@linux.intel.com>
Signed-off-by: Borislav Petkov <bp@suse.de>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Andi Kleen <ak@linux.intel.com>
Reviewed-by: Tony Luck <tony.luck@intel.com>
Tested-by: Neelima Krishnan <neelima.krishnan@intel.com>
Link: https://lkml.kernel.org/r/5209b3d72ffe5bd3cafdcc803f5b883f785329c3.1623704845.git-series.pawan.kumar.gupta@linux.intel.com
2021-06-15 17:46:48 +02:00
Axel Lin
70d654ea3d
regulator: mt6315: Fix checking return value of devm_regmap_init_spmi_ext
devm_regmap_init_spmi_ext() returns ERR_PTR() on error.

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Link: https://lore.kernel.org/r/20210615132934.3453965-1-axel.lin@ingics.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2021-06-15 16:43:01 +01:00
Alistair Francis
8c485bedfb
regulator: sy7636a: Initial commit
Initial support for the Silergy SY7636A-regulator Power Management chip.

Signed-off-by: Alistair Francis <alistair@alistair23.me>
Link: https://lore.kernel.org/r/20210615103400.946-3-alistair@alistair23.me
Signed-off-by: Mark Brown <broonie@kernel.org>
2021-06-15 16:43:00 +01:00
Yang Yingliang
afc3a0b4c4
ASoC: hisilicon: Use devm_platform_get_and_ioremap_resource()
Use devm_platform_get_and_ioremap_resource() to simplify
code.

Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
Link: https://lore.kernel.org/r/20210615133515.1376290-1-yangyingliang@huawei.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2021-06-15 16:39:49 +01:00
Yang Yingliang
50484d14ac
ASoC: jz4740-i2s: Use devm_platform_get_and_ioremap_resource()
Use devm_platform_get_and_ioremap_resource() to simplify
code.

Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
Link: https://lore.kernel.org/r/20210615135627.1665168-1-yangyingliang@huawei.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2021-06-15 16:39:48 +01:00
Yang Yingliang
942f2671c5
ASoC: img-spdif-out: Use devm_platform_get_and_ioremap_resource()
Use devm_platform_get_and_ioremap_resource() to simplify
code.

Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
Link: https://lore.kernel.org/r/20210615135200.1661695-5-yangyingliang@huawei.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2021-06-15 16:39:47 +01:00
Yang Yingliang
c481f3838a
ASoC: img-spdif-in: Use devm_platform_get_and_ioremap_resource()
Use devm_platform_get_and_ioremap_resource() to simplify
code.

Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
Link: https://lore.kernel.org/r/20210615135200.1661695-4-yangyingliang@huawei.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2021-06-15 16:39:46 +01:00
Yang Yingliang
a444a902b0
ASoC: img-parallel-out: Use devm_platform_get_and_ioremap_resource()
Use devm_platform_get_and_ioremap_resource() to simplify
code.

Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
Link: https://lore.kernel.org/r/20210615135200.1661695-3-yangyingliang@huawei.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2021-06-15 16:39:45 +01:00
Yang Yingliang
ef43f463dd
ASoC: img-i2s-out: Use devm_platform_get_and_ioremap_resource()
Use devm_platform_get_and_ioremap_resource() to simplify
code.

Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
Link: https://lore.kernel.org/r/20210615135200.1661695-2-yangyingliang@huawei.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2021-06-15 16:39:44 +01:00
Yang Yingliang
e43805c28d
ASoC: img-i2s-in: Use devm_platform_get_and_ioremap_resource()
Use devm_platform_get_and_ioremap_resource() to simplify
code.

Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
Link: https://lore.kernel.org/r/20210615135200.1661695-1-yangyingliang@huawei.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2021-06-15 16:39:43 +01:00
Yang Yingliang
1f65c9bdd6
ASoC: dwc: dwc-i2s: Use devm_platform_get_and_ioremap_resource()
Use devm_platform_get_and_ioremap_resource() to simplify
code.

Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
Link: https://lore.kernel.org/r/20210615132933.1372463-1-yangyingliang@huawei.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2021-06-15 16:39:42 +01:00
Srinivas Kandagatla
b90d9398d6
ASoC: codecs: wcd938x: remove incorrect module interdependency
For some reason we ended up with cyclic dependency between snd_soc_wcd938x
and snd_soc_wcd938x_sdw modules.

Remove this cyclic dependency by handling them in respective modules.
Without this below error is reported during make modules_install

depmod: ERROR: Cycle detected: snd_soc_wcd938x -> snd_soc_wcd938x_sdw -> snd_soc_wcd938x
depmod: ERROR: Found 2 modules in dependency cycles!

Fixes: 0454422288 ("ASoC: codecs: wcd938x: add audio routing and Kconfig")
Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Link: https://lore.kernel.org/r/20210615132829.23067-1-srinivas.kandagatla@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
2021-06-15 16:39:41 +01:00
Gabriel David
35f78d0277
ASoC: qdsp6: q6routing: Add Quinary MI2S ports
This patch adds MI2S mixers to Quinary ports

Signed-off-by: Gabriel David <ultracoolguy@disroot.org>
Reviewed-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Link: https://lore.kernel.org/r/20210605022206.13226-5-ultracoolguy@disroot.org
Signed-off-by: Mark Brown <broonie@kernel.org>
2021-06-15 16:39:40 +01:00
Gabriel David
98e80779ff
ASoC: qdsp6: q6afe-dai: Add Quinary MI2S ports
This patch adds support to Quinary MI2S ports supported in AFE.

Signed-off-by: Gabriel David <ultracoolguy@disroot.org>
Reviewed-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Link: https://lore.kernel.org/r/20210605022206.13226-4-ultracoolguy@disroot.org
Signed-off-by: Mark Brown <broonie@kernel.org>
2021-06-15 16:39:39 +01:00
Gabriel David
d0293e2aa6
ASoC: qdsp6: q6afe: Add Quinary MI2S ports
This patch adds support for the Quinary MI2S ports on LPASS.

Signed-off-by: Gabriel David <ultracoolguy@disroot.org>
Reviewed-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Link: https://lore.kernel.org/r/20210605022206.13226-3-ultracoolguy@disroot.org
Signed-off-by: Mark Brown <broonie@kernel.org>
2021-06-15 16:39:38 +01:00
Gabriel David
099ab4fcf3
ASoC: q6afe: dt-bindings: Add QUIN_MI2S_RX/TX
This patch adds bindings required for Quinary MI2S ports on AFE.

Signed-off-by: Gabriel David <ultracoolguy@disroot.org>
Reviewed-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Link: https://lore.kernel.org/r/20210605022206.13226-2-ultracoolguy@disroot.org
Signed-off-by: Mark Brown <broonie@kernel.org>
2021-06-15 16:39:37 +01:00
Olof Johansson
d7fe0d42b5 arm64: tegra: Device tree changes for v5.14-rc1
Contains changes to consolidate audio card names, adds audio support on
 Jetson Xavier NX and enables SMMU on Tegra194.
 -----BEGIN PGP SIGNATURE-----
 
 iQJHBAABCAAxFiEEiOrDCAFJzPfAjcif3SOs138+s6EFAmDDjl4THHRyZWRpbmdA
 bnZpZGlhLmNvbQAKCRDdI6zXfz6zoYAqD/oCoIwSbN+JygsV1y7l1fJZrotmSISv
 p9DhkLvTRHrEUFgp+I7/os2VDMDcF4UWwLcchBSpUZY7Nqi/Js091XR8m9XEniC5
 XkgBI5v/ZvN6nXXU77WxbiLJ4EA98TpQj/CzjqNs9KGo7NZvZWNvSUECGkJ8qqdD
 R1C+X9s+PMssPoz+GQRl9waNjk7uSFOb06w7l5wO+FqFbBVLl4ZG8rl8A38RUuYL
 R/R8kQ/vNt55ujpz7FdUMkK35s3vb5Flf3agF5jKqUDqNVpM4diQgS9HRRSubYt1
 EIIzPu9Il/IdhzM83x+o8JtiRqUPCGbg7Pms5piI36TRbFf7SLDkHMX+YNAXFRvC
 DluT+7ThQ2ANMUXE9WhTJU/Fv7aEKqbXDSH9cJlU5ZzS3J8ZamKedTG6nLt9oE7B
 Ebwgpmx6dctSjLJR/5hIgoanNthw2GmIa2/xrFH11if/W2XoTmvLZnWfqSjs/Ra7
 YVv6V3nHhwcrh/FVNrTBjXisIAxo+9lLgzhe1jFiKCbrhlyOSAsKvARrOcdWEt5F
 OVLjzr0co0NLqp2deXji9QpTxVKEhxWGU4tbZxbKe6A5vOEOvuYv6KJsXZOPD8Yv
 AixIZPdvTqxX8hp9z0sohJiTqTf7CkFleAqQTSgmrMii04C5hLhPezGnK1KGBj3h
 mD5QUXy7kfJCzg==
 =A6hi
 -----END PGP SIGNATURE-----

Merge tag 'tegra-for-5.14-arm64-dt' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux into arm/dt

arm64: tegra: Device tree changes for v5.14-rc1

Contains changes to consolidate audio card names, adds audio support on
Jetson Xavier NX and enables SMMU on Tegra194.

* tag 'tegra-for-5.14-arm64-dt' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux:
  arm64: tegra: Enable SMMU support on Tegra194
  arm64: tegra: Hook up memory controller to SMMU on Tegra186
  arm64: tegra: Use correct compatible string for Tegra186 SMMU
  arm64: tegra: Audio graph sound card for Jetson Xavier NX
  arm64: tegra: Consolidate audio card names
  arm64: tegra: Add PMU node for Tegra194

Link: https://lore.kernel.org/r/20210611164437.3568059-6-thierry.reding@gmail.com
Signed-off-by: Olof Johansson <olof@lixom.net>
2021-06-15 08:37:30 -07:00
Olof Johansson
020b31abb7 ARM: tegra: Default configuration changes for v5.14-rc1
Enables the devfreq thermal support to allow using the devfreq device as
 cooling device for the system.
 -----BEGIN PGP SIGNATURE-----
 
 iQJHBAABCAAxFiEEiOrDCAFJzPfAjcif3SOs138+s6EFAmDDjioTHHRyZWRpbmdA
 bnZpZGlhLmNvbQAKCRDdI6zXfz6zoU0BD/4+vDpvzzUl1L7C60PlD4a6jJPyODa6
 a4T3KLjkMyp8Hxu2vWVXJjsb2CScz2A6kBlxM7q7bIPBkbh8UqdE0VKF4Z4wUGZK
 GMmftL4jq1cOYWMEmxr3lQbFrlP9xeIDGRKdu4dunl2/nZmK9tCUDtheWnRdYOQR
 g0CHF1CuNK/6SOd+N7EJVzECT6hoZJNMSAL4amd9UCTqfEzAJmJXyiyYNUiJy5BN
 QWqlMjfXCTH+wna20ZI/KUINJxSJ53JwweKg1cLOeHh72OjEK5YJMuT0jKr4oJjX
 aSxNqTR6MfR3NujAZtK+4olHldBX0Mt2guPqBG5MGzQd5OQg/K2L6bFt9ztDWS8E
 frsBcw1Txj0UR+3SkTw7VhbZNzSe01/cNjWQsSDTUXtpYb8ZU1W2z/h3UIz+KSI8
 jZxuTaClFle2FdyDnfg1y0Zt7BPrIxbaGFgFDZs2t7ptbnVdKzLmMbFM6UynlmzG
 zBpWAukIRsqJP50GlXuXvHzOfvRQeIrOT2Dv/9/co7OCgaQ9f6142as1C6bAgScZ
 Tey06DqQQk40V4WSKZt02KrUzIjrshLVuH58MqEbg+jDG/XvTtlqxWwbIHuDjduP
 HPPyFJ2znKqMpDmsuVCVRNXEX9dg49fKGm0+S5jVZ9Ob19hBT2FJ/bal5iq94rPl
 nnoDSiP/7UCNTw==
 =llL+
 -----END PGP SIGNATURE-----

Merge tag 'tegra-for-5.14-arm-defconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux into arm/defconfig

ARM: tegra: Default configuration changes for v5.14-rc1

Enables the devfreq thermal support to allow using the devfreq device as
cooling device for the system.

* tag 'tegra-for-5.14-arm-defconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux:
  ARM: tegra_defconfig: Enable CONFIG_DEVFREQ_THERMAL

Link: https://lore.kernel.org/r/20210611164437.3568059-5-thierry.reding@gmail.com
Signed-off-by: Olof Johansson <olof@lixom.net>
2021-06-15 08:36:57 -07:00
Olof Johansson
8fb202c77f ARM: tegra: Device tree changes for v5.14-rc1
This contains various improvements (such as microphone detection and
 thermal zones) for some older Tegra devices (such as the Nexus 7 or
 the Acer A500).
 -----BEGIN PGP SIGNATURE-----
 
 iQJHBAABCAAxFiEEiOrDCAFJzPfAjcif3SOs138+s6EFAmDDjcsTHHRyZWRpbmdA
 bnZpZGlhLmNvbQAKCRDdI6zXfz6zodS9D/9DcmPSJlwv21gK3e9HzLxDZDkTaX2Q
 UEvqrgIaCsUG9Nby6dzE8A8iqNT1rwev4kh/6qYE1pRQV2NY4/apyUrjGrPAicHH
 7vi69ROyOk2PFVEWvhwEpjjioYZIlGsaz4R6Uc3PtwA3lrnUtAtU/98mN/XFRkre
 /hs/tohVROqPMGBV2x49BwNC6E3grnFsd/sSgt8SIIaCQmMz84lhsf/iGRXO4BbU
 T1FPoLXXpNuAU8rv8vxupir2omgJoEDRp1bQHCEGrLHNS8hz1lNkKJbfYwwJw1rt
 DxM781HxlU0a4nYaZtPWy/dRpdPQjm8Vrpwc3psQXBEZqrQVCpkF/bZG+dqIeE6q
 zINAcp1JFbKTVdbCr5Q26tITUGxARnk9Xfyz68ieuJXvM2xpEhNECcl77+uELAOy
 BHkUD0Ry373RYSk1PD0KIM1HQqmBB4CNh67Gx7NMRZPYd1fdI6O6TAGZeOzLh5OT
 UVDjqwB+5NMxF8TMwcWAH58XQR94dWbF6h3/f4WQrMB0yizMUCsbxjciQOhm1V9b
 j9qbExP5OIrETzxEYXM+c0tEbwLjMPXmk2I952Bls5rixzb6mY3ueGMEyndhu6Yu
 0zQibcmCulggjmzDAQzyxLRLdndDqvDTR4q9ka5xOSbbxRJCh2S5BtlfakeCbTvj
 gh8X+rfLrVqD9w==
 =JLFw
 -----END PGP SIGNATURE-----

Merge tag 'tegra-for-5.14-arm-dt' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux into arm/dt

ARM: tegra: Device tree changes for v5.14-rc1

This contains various improvements (such as microphone detection and
thermal zones) for some older Tegra devices (such as the Nexus 7 or
the Acer A500).

* tag 'tegra-for-5.14-arm-dt' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux:
  ARM: tegra: ouya: Enable memory frequency thermal throttling using ACTMON
  ARM: tegra: nexus7: Enable memory frequency thermal throttling using ACTMON
  ARM: tegra: Add cooling cells to ACTMON device-tree node
  ARM: tegra: nexus7: Correct 3v3 regulator GPIO of PM269 variant
  ARM: tegra: nexus7: Remove monitored-battery property
  ARM: tegra: nexus7: Improve thermal zones
  ARM: tegra: nexus7: Add i2c-thermtrip node
  ARM: tegra: paz00: Add CPU thermal zone
  ARM: tegra: wm8903: Fix polarity of headphones-detection GPIO in device-trees
  ARM: tegra: Add reg property to Tegra20 EMC table device-tree nodes
  ARM: tegra: acer-a500: Bump thermal trips by 10C
  ARM: tegra: acer-a500: Specify proper voltage for WiFi SDIO bus
  ARM: tegra: acer-a500: Improve microphone detection

Link: https://lore.kernel.org/r/20210611164437.3568059-4-thierry.reding@gmail.com
Signed-off-by: Olof Johansson <olof@lixom.net>
2021-06-15 08:36:27 -07:00
Pawan Gupta
ad3c2e1749 x86/events/intel: Do not deploy TSX force abort workaround when TSX is deprecated
Earlier workaround added by

  400816f60c ("perf/x86/intel: Implement support for TSX Force Abort")

for perf counter interactions [1] are not required on some client
systems which received a microcode update that deprecates TSX.

Bypass the perf workaround when such microcode is enumerated.

[1] [ bp: Look for document ID 604224, "Performance Monitoring Impact
      of Intel Transactional Synchronization Extension Memory". Since
      there's no way for us to have stable links to documents... ]

 [ bp: Massage comment. ]

Signed-off-by: Pawan Gupta <pawan.kumar.gupta@linux.intel.com>
Signed-off-by: Borislav Petkov <bp@suse.de>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Andi Kleen <ak@linux.intel.com>
Reviewed-by: Tony Luck <tony.luck@intel.com>
Tested-by: Neelima Krishnan <neelima.krishnan@intel.com>
Link: https://lkml.kernel.org/r/e4d410f786946280ced02dd07c74e0a74f1d10cb.1623704845.git-series.pawan.kumar.gupta@linux.intel.com
2021-06-15 17:36:03 +02:00
Olof Johansson
5dad6db1c4 firmware: tegra: Changes for v5.14-rc1
These changes contain two minor fixes for the Tegra BPMP driver.
 -----BEGIN PGP SIGNATURE-----
 
 iQJHBAABCAAxFiEEiOrDCAFJzPfAjcif3SOs138+s6EFAmDDjXkTHHRyZWRpbmdA
 bnZpZGlhLmNvbQAKCRDdI6zXfz6zodwzD/9GxlLcEtY5TbOrYT7uX/zLz+PqUgLA
 Oufl2SOMWnzuTkbR3PlwkD4idKTVjtn9f/8HW9oGdtmihYb6Bo2SiKurZR9Pd1iK
 3+HaukH3jDsLsBgiyK4wBtuD+MlcQaoPbcPc7i2azqgJDwkkIHrmk++vgrzuBvul
 JQgNSHdJkMdgXQ9tkCQAmDoPi/O3fHyDzl+NtdQQ1toii/0xBRw5Gt9tPACELAF0
 dk0PFD6iY/I3iwC9VCJct0JGYYPX4YefkD+OzzYK6UyOlNhFfNd0q8ceZyKGlroM
 hpOQW/HDzqE3umLow7SfVv8c96v/dAIoGpjjVZMq0Ci3FhLxLkDb6qepjh9RDEOh
 slZx2J60WYfVPjPw0e0TLMblXhojRdbo3BAtKYEHC9rME+JLboaBiRaOr5CVLhn5
 Sbe3SDBFYkNYlk0cRUlGgcau0rTLDQee2nv0v74sWHq2Xdrll0aWwkX5n3YbJ07O
 zMnmogp/X9ICtKr6fFmjfrn+j6ZPnAnMhRz3ABqmDwd3CPsanouThvMnyBGmzCfB
 S7RnBAmzFqCU6Ee+6GXjilHcq0mBFQ1yrKa7rzuZTQtHErR0cfXWbx3k2ZYOniSt
 Qxxa9eDPlTvuv3ZOpXmJsAGsYUptcfgMdHGI7U85qmmIDHUkx/N8qoh94KByZGah
 io0hwnx/pW2npw==
 =W3nY
 -----END PGP SIGNATURE-----

Merge tag 'tegra-for-5.14-firmware' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux into arm/drivers

firmware: tegra: Changes for v5.14-rc1

These changes contain two minor fixes for the Tegra BPMP driver.

* tag 'tegra-for-5.14-firmware' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux:
  firmware: tegra: bpmp: Fix Tegra234-only builds
  firmware: tegra: Fix error return code in tegra210_bpmp_init()

Link: https://lore.kernel.org/r/20210611164437.3568059-3-thierry.reding@gmail.com
Signed-off-by: Olof Johansson <olof@lixom.net>
2021-06-15 08:36:02 -07:00
Olof Johansson
777cf27fb2 soc/tegra: Changes for v5.14-rc1
These changes implement the core power domain for the PMC, and fix a
 couple of minor issues as well as add stubs to help some drivers be
 compile tested more easily.
 -----BEGIN PGP SIGNATURE-----
 
 iQJHBAABCAAxFiEEiOrDCAFJzPfAjcif3SOs138+s6EFAmDDjV4THHRyZWRpbmdA
 bnZpZGlhLmNvbQAKCRDdI6zXfz6zoXVsD/0QgZHiuEH8rU42JtYGB/rjCskWUPen
 BOtcrIi+QxJ7m8q4qnRrPIeE8ETjQAB92pWpZE8VQ260Pk/s8NAeIXBbP7I2lKU8
 M+TkwvCQ8zZw18q9ZPinqSUHgVsh7Q+7kQggHGZcYpE4rOmlb0oTr9B2EprdSpBl
 hVNGtcaJ9Ovqri1ioDi/owUaxYpeJ3L8A++luIv9K8oDUpN7GBw3nV0dMOBvUOBs
 nT9iQFEThvo0NRNs4zPNDPLPsLJFwePRDmY9SE4PCreDKo26+VWAamooW8R6iEnU
 P7OOfCSZbLqMs8Sfkjrb742sqWX50okFFJQG6aW3BOln3IA5esc9uJ3l2jH6GZP1
 21hestxJjK2JuZLv8uMtGHura8do7e4PrYVvxOT6Lp85AXaXA1/uieAWRyh40lcD
 d4S4hL3prlfgepj6eUy40MnbLbatsRyQoFYdloZtB+cZb+KxMSV/Lx+j0Y5VyOI/
 OpVcTxTxwAZRrVcHTISkUjkxLProY1hQwQP9vexRMIn8SB+ZhgztjHJQuUxa25at
 c2Q1aOeGr+h3w1NYpOa+u1tyyKt/Vw92tA84MHaoGoWJg2DGXDAh66HFpiFrmE8q
 +n2wc/uyhz1bdS38ky73ibJ6iQ96ucRLxEjCIz+59hdZ57bEYnF+EUJtNdMSyqXg
 hGVs5fnWFlw97Q==
 =g0AU
 -----END PGP SIGNATURE-----

Merge tag 'tegra-for-5.14-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux into arm/soc

soc/tegra: Changes for v5.14-rc1

These changes implement the core power domain for the PMC, and fix a
couple of minor issues as well as add stubs to help some drivers be
compile tested more easily.

* tag 'tegra-for-5.14-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux:
  soc/tegra: fuse: Fix Tegra234-only builds
  soc/tegra: fuse: Don't return -ENOMEM when allocate lookups failed
  soc/tegra: regulators: Support core domain state syncing
  soc/tegra: pmc: Add driver state syncing
  soc/tegra: pmc: Add core power domain
  soc/tegra: fuse: Add stubs needed for compile-testing
  soc/tegra: Add devm_tegra_core_dev_init_opp_table()
  soc/tegra: Add stub for soc_is_tegra()
  soc/tegra: regulators: Bump voltages on system reboot
  regulator: core: Add regulator_sync_voltage_rdev()

Link: https://lore.kernel.org/r/20210611164437.3568059-2-thierry.reding@gmail.com
Signed-off-by: Olof Johansson <olof@lixom.net>
2021-06-15 08:35:29 -07:00
Olof Johansson
479011d4f2 dt-bindings: Changes for v5.14-rc1
This contains a conversion of the Tegra clock and reset controller
 device tree bindings to the new json-schema format and adds the core
 power domain to the PMC device tree bindings.
 -----BEGIN PGP SIGNATURE-----
 
 iQJHBAABCAAxFiEEiOrDCAFJzPfAjcif3SOs138+s6EFAmDDjO0THHRyZWRpbmdA
 bnZpZGlhLmNvbQAKCRDdI6zXfz6zobwrEAC7SUeyWdvE+WwJoOv+bt/rlwQrkpU6
 qXhHIn3AS6SSYJAXLX7c7xg+9FwiC8LH2prtr1+v0c9WUXvr+UPAP+0Fv7yopzIQ
 b8JlmbjMwZ6nU8K5LKTan1RyLgKpwO32D2RQpCvTJd+Y502f0z87XJqUZNTU7DbF
 GhU8sXVzk6bD0PiL+0vmnh+sbyJWZ9d6ER3eLL1afoDgcU9p/MHiNbVdck3SnAwH
 9GQDCM5iBstfUnvRnM3/Dmc1yCNcWfH3aOGXt58vI7vW6BIVuKwNC8vgzFN9fInJ
 Js+cH0PGiU0/cIUxDzhVitphbRmtcAxT5pgyUB8nSucLKnELSz1HsumLSFxtEWe1
 BoWlfsEZqZ/7+rytrkRJ0BGpmdvKLjgpsEMXSKlm3Wx0gFGij9Ffgldab9erCd+Q
 ESB5lk0jvDXeJk6nhIapu/2EXtTgVjKf/b0CbL49q1zPfhfgZJPXcvyLzQVm+fIT
 9sN5ysjtTcSsw/mH8QEPcrlHAQzOAip6Ylfz2Aku/69pRp31M3wksCbLHLa+IMP6
 G6lEoR81HlhO1nIMwc6+3KZr6QfhIR2boehAi+A4WiHsPcd/SAGhOQKcIzUEQQHT
 cymstZI85FOPK/rjioERlzkpQ21ASlMyoLmdRHbr3MEjv7Ey4ApQ2FwgJ9+IeFZS
 sIOT9/bi09D9xg==
 =VdqF
 -----END PGP SIGNATURE-----

Merge tag 'tegra-for-5.14-dt-bindings' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux into arm/dt

dt-bindings: Changes for v5.14-rc1

This contains a conversion of the Tegra clock and reset controller
device tree bindings to the new json-schema format and adds the core
power domain to the PMC device tree bindings.

* tag 'tegra-for-5.14-dt-bindings' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux:
  dt-bindings: soc: tegra-pmc: Document core power domain
  dt-bindings: clock: tegra: Convert to schema

Link: https://lore.kernel.org/r/20210611164437.3568059-1-thierry.reding@gmail.com
Signed-off-by: Olof Johansson <olof@lixom.net>
2021-06-15 08:33:46 -07:00
Daniel Palmer
805be5c9e6 MAINTAINERS: ARM/MStar/Sigmastar SoCs: Add a link to the MStar tree
Add a link to the MStar tree on github.

Signed-off-by: Daniel Palmer <daniel@0x0f.com>
Reviewed-by: Romain Perier <romain.perier@gmail.com>
Signed-off-by: Olof Johansson <olof@lixom.net>
2021-06-15 08:29:15 -07:00
Romain Perier
624b9d8362 ARM: debug: add UART early console support for MSTAR SoCs
This adds the debug_ll uart for the PM UART found on armv7-based MStar
SoCs.

Signed-off-by: Romain Perier <romain.perier@gmail.com>
Acked-by: Daniel Palmer <daniel@thingy.jp>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Tested-by: Mohammed Billoo <mohammed.billoo@gmail.com>
Signed-off-by: Daniel Palmer <daniel@0x0f.com>
Signed-off-by: Olof Johansson <olof@lixom.net>
2021-06-15 08:29:15 -07:00
Al Cooper
98b5ce4c08 mmc: sdhci-iproc: Add support for the legacy sdhci controller on the BCM7211
Add support for the legacy Arasan sdhci controller on the BCM7211 and
related SoC's. This includes adding a .shutdown callback to increase
the power savings during S5.

Signed-off-by: Al Cooper <alcooperx@gmail.com>
Link: https://lore.kernel.org/r/20210602192758.38735-2-alcooperx@gmail.com
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
2021-06-15 17:27:48 +02:00
Al Cooper
09a8ec9a2d dt-bindings: mmc: sdhci-iproc: Add brcm,bcm7211a0-sdhci
Add new compatible string for the legacy sdhci controller on the
BCM7211 family of SoC's.

Signed-off-by: Al Cooper <alcooperx@gmail.com>
Link: https://lore.kernel.org/r/20210602192758.38735-1-alcooperx@gmail.com
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
2021-06-15 17:27:48 +02:00
Ulf Hansson
2c49912f1d Merge branch 'fixes' into next 2021-06-15 17:27:38 +02:00
Pawan Gupta
1348924ba8 x86/msr: Define new bits in TSX_FORCE_ABORT MSR
Intel client processors that support the IA32_TSX_FORCE_ABORT MSR
related to perf counter interaction [1] received a microcode update that
deprecates the Transactional Synchronization Extension (TSX) feature.
The bit FORCE_ABORT_RTM now defaults to 1, writes to this bit are
ignored. A new bit TSX_CPUID_CLEAR clears the TSX related CPUID bits.

The summary of changes to the IA32_TSX_FORCE_ABORT MSR are:

  Bit 0: FORCE_ABORT_RTM (legacy bit, new default=1) Status bit that
  indicates if RTM transactions are always aborted. This bit is
  essentially !SDV_ENABLE_RTM(Bit 2). Writes to this bit are ignored.

  Bit 1: TSX_CPUID_CLEAR (new bit, default=0) When set, CPUID.HLE = 0
  and CPUID.RTM = 0.

  Bit 2: SDV_ENABLE_RTM (new bit, default=0) When clear, XBEGIN will
  always abort with EAX code 0. When set, XBEGIN will not be forced to
  abort (but will always abort in SGX enclaves). This bit is intended to
  be used on developer systems. If this bit is set, transactional
  atomicity correctness is not certain. SDV = Software Development
  Vehicle (SDV), i.e. developer systems.

Performance monitoring counter 3 is usable in all cases, regardless of
the value of above bits.

Add support for a new CPUID bit - CPUID.RTM_ALWAYS_ABORT (CPUID 7.EDX[11])
 - to indicate the status of always abort behavior.

[1] [ bp: Look for document ID 604224, "Performance Monitoring Impact
      of Intel Transactional Synchronization Extension Memory". Since
      there's no way for us to have stable links to documents... ]

 [ bp: Massage and extend commit message. ]

Signed-off-by: Pawan Gupta <pawan.kumar.gupta@linux.intel.com>
Signed-off-by: Borislav Petkov <bp@suse.de>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Andi Kleen <ak@linux.intel.com>
Reviewed-by: Tony Luck <tony.luck@intel.com>
Tested-by: Neelima Krishnan <neelima.krishnan@intel.com>
Link: https://lkml.kernel.org/r/9add61915b4a4eedad74fbd869107863a28b428e.1623704845.git-series.pawan.kumar.gupta@linux.intel.com
2021-06-15 17:23:15 +02:00
Olof Johansson
e6640fa697 Visconti device tree updates for 5.14
- Add DT support for Toshiba Visconti5 PWM driver
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCAAdFiEEXmKe5SMhlzV7hM9DMiR/u0CtH6YFAmDH5nAACgkQMiR/u0Ct
 H6bTIhAAh+7XXFrknfwxYANW0As/HfxxRRlHj04OUd6HsREHugj/X55n62F/eK0H
 vVy78twgZ9ONhX64UXsFl3TyXsYtWZe0Nyb3QiSH2dp6X04RsdgcjVDluY8PepiR
 aHOJgA5Udsr9Fj+6+HdmRMLf+BmmyfDbHGJW4p6dPIXrJBxI6yjCN9zrQybFMgG9
 zPxYuKeDWDp5W2Hk/JZHxG2jI196Onq7DT7OookeWy0m77Kx35wxjgec/IannNZ1
 WrVWtA7bu5pbMn0zO28EKMQ0BVA7ZvC5Ux77JEY2NCkL8HrAMoXU/RZ2V/1HenVS
 loLgQcuvfzet4WuKHDM9+EUjZJ03gQM59+A+gTwR0OFzagNEvHwgshd9eB4citXH
 qDhHhOtj8NmtuzulfrZvKNfdillnomECD96gr/3IrDbMYBEEkXsVQaq+EExyU4kg
 v59RB2Y3pW3j1p3dKBTVwSyFdl8iuJK2gQ9a2qyUpTBywpHHk8ZlLLg35uk8vBVn
 wiUnTR+v9QVVkBKrFPAMJhe3Utd+40l9eWqgp0kBLumHXP+/GIi2/IRkw3eyjaSx
 zRD6cd1fAhls4kSGtaTvqOYIeiGfPoDvPxsTXNwNyy/93vuT6KIN9MRnii1v5yeD
 gGFAEAxAtzUBzqCfAxM03bUgODAL2+XORLYYU8OVZA5k6GvhDKw=
 =1GK5
 -----END PGP SIGNATURE-----

Merge tag 'visconti-arm-dt-for-v5.14' of https://git.kernel.org/pub/scm/linux/kernel/git/iwamatsu/linux-visconti into arm/dt

Visconti device tree updates for 5.14

- Add DT support for Toshiba Visconti5 PWM driver

* tag 'visconti-arm-dt-for-v5.14' of https://git.kernel.org/pub/scm/linux/kernel/git/iwamatsu/linux-visconti:
  arm64: dts: visconti: Add PWM support for TMPV7708 SoC

Link: https://lore.kernel.org/r/20210614234654.2u3xetnn5rwhymwz@toshiba.co.jp
Signed-off-by: Olof Johansson <olof@lixom.net>
2021-06-15 08:18:11 -07:00
Olof Johansson
ab9c2a7546 Qualcomm DTS updates for v5.14
This adds DMA, NAND controllers, USB controller and PHY, RPM, L2CC,
 thermal sensors and defines thermal zones. It them enables these for the
 RB3011.
 -----BEGIN PGP SIGNATURE-----
 
 iQJPBAABCAA5FiEEBd4DzF816k8JZtUlCx85Pw2ZrcUFAmDH0vYbHGJqb3JuLmFu
 ZGVyc3NvbkBsaW5hcm8ub3JnAAoJEAsfOT8Nma3Fs5AP/REdDsBpNCrvG3om3wgc
 xtVkJa8sR4WiRKjf7gtg+RH6rvwmx0AH4atKiUtNpT2RHf+6ff4mlbH3TYwTwQoi
 ESsokvEgDTPaNBpP4ilPKPDVYi/DH27gI5hvr5/Ld0V2A1VJwSEPEOxAQ/fOgJA2
 MJ/yagQEOKL5JKhim13K9AYI53I8x7cz4Sa37THGe9tglpShGaVYXlli5HjdJptv
 nfh1zgo84MtaseTwVKruYUQdK7VWkMzK02JKGWY63LP+3ncItyBTZfQCnORK+XRR
 XwvItHNhWs6VIVbRA8IIhR8rjkAOn61U63wNctMO6xoCMJW49+IELHa0cbjgUVy0
 +AK9x9QXuDHbVmFs0qrFZndsVDftrpV2IVXhoA3TGckY1qsbQaV2HrAiv2re4OGo
 bDWaY8Ub1GEc0jyIxGQGdGC24TxEyv4fR+IV9DamjztVY+29doS5VHF3CAYSJzYb
 XwER2ntOg56HxLmS5LO0IiDPhqHcjT4S8xtwe6O7ucuDoG+RCX5EZ8uwKOg0Fn5m
 k1beh2QNaCQbAoNQCd9A+r4P0Nz0f95nxp2oL2xpDx2spJj9utCm6Vi+CYj7m8Dt
 y7QQbpUH7GGaPoekj0QiQzQE4XyFz2zYhf4QmcLyE9tGWZw9+KAfSseT6KjKVGBD
 6BckCqDWJmcF8SZW7r5SUOY0
 =n/jg
 -----END PGP SIGNATURE-----

Merge tag 'qcom-dts-for-5.14' of https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux into arm/dt

Qualcomm DTS updates for v5.14

This adds DMA, NAND controllers, USB controller and PHY, RPM, L2CC,
thermal sensors and defines thermal zones. It them enables these for the
RB3011.

* tag 'qcom-dts-for-5.14' of https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux:
  ARM: dts: qcom: Enable NAND + USB for RB3011
  ARM: dts: qcom: add L2CC and RPM for IPQ8064
  ARM: dts: qcom: Add USB port definitions to ipq806x
  ARM: dts: qcom: Add tsens details to ipq806x
  ARM: dts: qcom: Add ADM DMA + NAND definitions to ipq806x

Link: https://lore.kernel.org/r/20210614223840.393224-1-bjorn.andersson@linaro.org
Signed-off-by: Olof Johansson <olof@lixom.net>
2021-06-15 08:17:32 -07:00