Commit Graph

1066174 Commits

Author SHA1 Message Date
Naresh Kumar PBS
3e949aaa8b RDMA/bnxt_re: Add missing spin lock initialization
[ Upstream commit 17f2569dce ]

Add the missing initialization of srq lock.

Fixes: 37cb11acf1 ("RDMA/bnxt_re: Add SRQ support for Broadcom adapters")
Link: https://lore.kernel.org/r/1629343553-5843-3-git-send-email-selvin.xavier@broadcom.com
Signed-off-by: Naresh Kumar PBS <nareshkumar.pbs@broadcom.com>
Signed-off-by: Selvin Xavier <selvin.xavier@broadcom.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2021-09-03 10:09:23 +02:00
Li Jinlin
22c18102ec scsi: core: Fix hang of freezing queue between blocking and running device
commit 02c6dcd543 upstream.

We found a hang, the steps to reproduce  are as follows:

  1. blocking device via scsi_device_set_state()

  2. dd if=/dev/sda of=/mnt/t.log bs=1M count=10

  3. echo none > /sys/block/sda/queue/scheduler

  4. echo "running" >/sys/block/sda/device/state

Step 3 and 4 should complete after step 4, but they hang.

  CPU#0               CPU#1                CPU#2
  ---------------     ----------------     ----------------
                                           Step 1: blocking device

                                           Step 2: dd xxxx
                                                  ^^^^^^ get request
                                                         q_usage_counter++

                      Step 3: switching scheculer
                      elv_iosched_store
                        elevator_switch
                          blk_mq_freeze_queue
                            blk_freeze_queue
                              > blk_freeze_queue_start
                                ^^^^^^ mq_freeze_depth++

                              > blk_mq_run_hw_queues
                                ^^^^^^ can't run queue when dev blocked

                              > blk_mq_freeze_queue_wait
                                ^^^^^^ Hang here!!!
                                       wait q_usage_counter==0

  Step 4: running device
  store_state_field
    scsi_rescan_device
      scsi_attach_vpd
        scsi_vpd_inquiry
          __scsi_execute
            blk_get_request
              blk_mq_alloc_request
                blk_queue_enter
                ^^^^^^ Hang here!!!
                       wait mq_freeze_depth==0

    blk_mq_run_hw_queues
    ^^^^^^ dispatch IO, q_usage_counter will reduce to zero

                            blk_mq_unfreeze_queue
                            ^^^^^ mq_freeze_depth--

To fix this, we need to run queue before rescanning device when the device
state changes to SDEV_RUNNING.

Link: https://lore.kernel.org/r/20210824025921.3277629-1-lijinlin3@huawei.com
Fixes: f0f82e2476 ("scsi: core: Fix capacity set to zero after offlinining device")
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: Li Jinlin <lijinlin3@huawei.com>
Signed-off-by: Qiu Laibin <qiulaibin@huawei.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-09-03 10:09:23 +02:00
Wesley Cheng
01da7c1dc4 usb: dwc3: gadget: Stop EP0 transfers during pullup disable
commit 4a1e25c0a0 upstream.

During a USB cable disconnect, or soft disconnect scenario, a pending
SETUP transaction may not be completed, leading to the following
error:

    dwc3 a600000.dwc3: timed out waiting for SETUP phase

If this occurs, then the entire pullup disable routine is skipped and
proper cleanup and halting of the controller does not complete.

Instead of returning an error (which is ignored from the UDC
perspective), allow the pullup disable routine to continue, which
will also handle disabling of EP0/1.  This will end any active
transfers as well.  Ensure to clear any delayed_status also, as the
timeout could happen within the STATUS stage.

Fixes: bb01473648 ("usb: dwc3: gadget: don't clear RUN/STOP when it's invalid to do so")
Cc: <stable@vger.kernel.org>
Reviewed-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
Acked-by: Felipe Balbi <balbi@kernel.org>
Signed-off-by: Wesley Cheng <wcheng@codeaurora.org>
Link: https://lore.kernel.org/r/20210825042855.7977-1-wcheng@codeaurora.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-09-03 10:09:23 +02:00
Thinh Nguyen
87b2016493 usb: dwc3: gadget: Fix dwc3_calc_trbs_left()
commit 51f1954ad8 upstream.

We can't depend on the TRB's HWO bit to determine if the TRB ring is
"full". A TRB is only available when the driver had processed it, not
when the controller consumed and relinquished the TRB's ownership to the
driver. Otherwise, the driver may overwrite unprocessed TRBs. This can
happen when many transfer events accumulate and the system is slow to
process them and/or when there are too many small requests.

If a request is in the started_list, that means there is one or more
unprocessed TRBs remained. Check this instead of the TRB's HWO bit
whether the TRB ring is full.

Fixes: c4233573f6 ("usb: dwc3: gadget: prepare TRBs on update transfers too")
Cc: <stable@vger.kernel.org>
Acked-by: Felipe Balbi <balbi@kernel.org>
Signed-off-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
Link: https://lore.kernel.org/r/e91e975affb0d0d02770686afc3a5b9eb84409f6.1629335416.git.Thinh.Nguyen@synopsys.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-09-03 10:09:23 +02:00
Takashi Iwai
56c92b8ddc usb: renesas-xhci: Prefer firmware loading on unknown ROM state
commit c82cacd2f1 upstream.

The recent attempt to handle an unknown ROM state in the commit
d143825baf ("usb: renesas-xhci: Fix handling of unknown ROM state")
resulted in a regression and reverted later by the commit 44cf53602f
("Revert "usb: renesas-xhci: Fix handling of unknown ROM state"").
The problem of the former fix was that it treated the failure of
firmware loading as a fatal error.  Since the firmware files aren't
included in the standard linux-firmware tree, most users don't have
them, hence they got the non-working system after that.  The revert
fixed the regression, but also it didn't make the firmware loading
triggered even on the devices that do need it.  So we need still a fix
for them.

This is another attempt to handle the unknown ROM state.  Like the
previous fix, this also tries to load the firmware when ROM shows
unknown state.  In this patch, however, the failure of a firmware
loading (such as a missing firmware file) isn't handled as a fatal
error any longer when ROM has been already detected, but it falls back
to the ROM mode like before.  The error is returned only when no ROM
is detected and the firmware loading failed.

Along with it, for simplifying the code flow, the detection and the
check of ROM is factored out from renesas_fw_check_running() and done
in the caller side, renesas_xhci_check_request_fw().  It avoids the
redundant ROM checks.

The patch was tested on Lenovo Thinkpad T14 gen (BIOS 1.34).  Also it
was confirmed that no regression is seen on another Thinkpad T14
machine that has worked without the patch, too.

Fixes: 44cf53602f ("Revert "usb: renesas-xhci: Fix handling of unknown ROM state"")
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
BugLink: https://bugzilla.opensuse.org/show_bug.cgi?id=1189207
Link: https://lore.kernel.org/r/20210826124127.14789-1-tiwai@suse.de
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-09-03 10:09:23 +02:00
Zhengjun Zhang
b0bcc80388 USB: serial: option: add new VID/PID to support Fibocom FG150
commit 2829a4e3cf upstream.

Fibocom FG150 is a 5G module based on Qualcomm SDX55 platform,
support Sub-6G band.

Here are the outputs of lsusb -v and usb-devices:

> T:  Bus=02 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#=  2 Spd=5000 MxCh= 0
> D:  Ver= 3.20 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 9 #Cfgs=  1
> P:  Vendor=2cb7 ProdID=010b Rev=04.14
> S:  Manufacturer=Fibocom
> S:  Product=Fibocom Modem_SN:XXXXXXXX
> S:  SerialNumber=XXXXXXXX
> C:  #Ifs= 5 Cfg#= 1 Atr=a0 MxPwr=896mA
> I:  If#=0x0 Alt= 0 #EPs= 1 Cls=ef(misc ) Sub=04 Prot=01 Driver=rndis_host
> I:  If#=0x1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=rndis_host
> I:  If#=0x2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none)
> I:  If#=0x3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=(none)
> I:  If#=0x4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none)

> Bus 002 Device 002: ID 2cb7:010b Fibocom Fibocom Modem_SN:XXXXXXXX
> Device Descriptor:
>   bLength                18
>   bDescriptorType         1
>   bcdUSB               3.20
>   bDeviceClass            0
>   bDeviceSubClass         0
>   bDeviceProtocol         0
>   bMaxPacketSize0         9
>   idVendor           0x2cb7 Fibocom
>   idProduct          0x010b
>   bcdDevice            4.14
>   iManufacturer           1 Fibocom
>   iProduct                2 Fibocom Modem_SN:XXXXXXXX
>   iSerial                 3 XXXXXXXX
>   bNumConfigurations      1
>   Configuration Descriptor:
>     bLength                 9
>     bDescriptorType         2
>     wTotalLength       0x00e6
>     bNumInterfaces          5
>     bConfigurationValue     1
>     iConfiguration          4 RNDIS_DUN_DIAG_ADB
>     bmAttributes         0xa0
>       (Bus Powered)
>       Remote Wakeup
>     MaxPower              896mA
>     Interface Association:
>       bLength                 8
>       bDescriptorType        11
>       bFirstInterface         0
>       bInterfaceCount         2
>       bFunctionClass        239 Miscellaneous Device
>       bFunctionSubClass       4
>       bFunctionProtocol       1
>       iFunction               7 RNDIS
>     Interface Descriptor:
>       bLength                 9
>       bDescriptorType         4
>       bInterfaceNumber        0
>       bAlternateSetting       0
>       bNumEndpoints           1
>       bInterfaceClass       239 Miscellaneous Device
>       bInterfaceSubClass      4
>       bInterfaceProtocol      1
>       iInterface              0
>       ** UNRECOGNIZED:  05 24 00 10 01
>       ** UNRECOGNIZED:  05 24 01 00 01
>       ** UNRECOGNIZED:  04 24 02 00
>       ** UNRECOGNIZED:  05 24 06 00 01
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x81  EP 1 IN
>         bmAttributes            3
>           Transfer Type            Interrupt
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0008  1x 8 bytes
>         bInterval               9
>         bMaxBurst               0
>     Interface Descriptor:
>       bLength                 9
>       bDescriptorType         4
>       bInterfaceNumber        1
>       bAlternateSetting       0
>       bNumEndpoints           2
>       bInterfaceClass        10 CDC Data
>       bInterfaceSubClass      0
>       bInterfaceProtocol      0
>       iInterface              0
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x8e  EP 14 IN
>         bmAttributes            2
>           Transfer Type            Bulk
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0400  1x 1024 bytes
>         bInterval               0
>         bMaxBurst               6
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x0f  EP 15 OUT
>         bmAttributes            2
>           Transfer Type            Bulk
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0400  1x 1024 bytes
>         bInterval               0
>         bMaxBurst               6
>     Interface Descriptor:
>       bLength                 9
>       bDescriptorType         4
>       bInterfaceNumber        2
>       bAlternateSetting       0
>       bNumEndpoints           3
>       bInterfaceClass       255 Vendor Specific Class
>       bInterfaceSubClass      0
>       bInterfaceProtocol      0
>       iInterface              0
>       ** UNRECOGNIZED:  05 24 00 10 01
>       ** UNRECOGNIZED:  05 24 01 00 00
>       ** UNRECOGNIZED:  04 24 02 02
>       ** UNRECOGNIZED:  05 24 06 00 00
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x83  EP 3 IN
>         bmAttributes            3
>           Transfer Type            Interrupt
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x000a  1x 10 bytes
>         bInterval               9
>         bMaxBurst               0
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x82  EP 2 IN
>         bmAttributes            2
>           Transfer Type            Bulk
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0400  1x 1024 bytes
>         bInterval               0
>         bMaxBurst               0
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x01  EP 1 OUT
>         bmAttributes            2
>           Transfer Type            Bulk
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0400  1x 1024 bytes
>         bInterval               0
>         bMaxBurst               0
>     Interface Descriptor:
>       bLength                 9
>       bDescriptorType         4
>       bInterfaceNumber        3
>       bAlternateSetting       0
>       bNumEndpoints           2
>       bInterfaceClass       255 Vendor Specific Class
>       bInterfaceSubClass    255 Vendor Specific Subclass
>       bInterfaceProtocol     48
>       iInterface              0
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x84  EP 4 IN
>         bmAttributes            2
>           Transfer Type            Bulk
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0400  1x 1024 bytes
>         bInterval               0
>         bMaxBurst               0
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x02  EP 2 OUT
>         bmAttributes            2
>           Transfer Type            Bulk
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0400  1x 1024 bytes
>         bInterval               0
>         bMaxBurst               0
>     Interface Descriptor:
>       bLength                 9
>       bDescriptorType         4
>       bInterfaceNumber        4
>       bAlternateSetting       0
>       bNumEndpoints           2
>       bInterfaceClass       255 Vendor Specific Class
>       bInterfaceSubClass     66
>       bInterfaceProtocol      1
>       iInterface              0
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x03  EP 3 OUT
>         bmAttributes            2
>           Transfer Type            Bulk
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0400  1x 1024 bytes
>         bInterval               0
>         bMaxBurst               0
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x85  EP 5 IN
>         bmAttributes            2
>           Transfer Type            Bulk
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0400  1x 1024 bytes
>         bInterval               0
>         bMaxBurst               0
> Binary Object Store Descriptor:
>   bLength                 5
>   bDescriptorType        15
>   wTotalLength       0x0016
>   bNumDeviceCaps          2
>   USB 2.0 Extension Device Capability:
>     bLength                 7
>     bDescriptorType        16
>     bDevCapabilityType      2
>     bmAttributes   0x00000006
>       BESL Link Power Management (LPM) Supported
>   SuperSpeed USB Device Capability:
>     bLength                10
>     bDescriptorType        16
>     bDevCapabilityType      3
>     bmAttributes         0x00
>     wSpeedsSupported   0x000f
>       Device can operate at Low Speed (1Mbps)
>       Device can operate at Full Speed (12Mbps)
>       Device can operate at High Speed (480Mbps)
>       Device can operate at SuperSpeed (5Gbps)
>     bFunctionalitySupport   1
>       Lowest fully-functional device speed is Full Speed (12Mbps)
>     bU1DevExitLat           1 micro seconds
>     bU2DevExitLat         500 micro seconds
> Device Status:     0x0000
>   (Bus Powered)

Signed-off-by: Zhengjun Zhang <zhangzhengjun@aicrobo.com>
Cc: stable@vger.kernel.org
Signed-off-by: Johan Hovold <johan@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-09-03 10:09:22 +02:00
Johan Hovold
8437e07c37 Revert "USB: serial: ch341: fix character loss at high transfer rates"
commit df7b16d1c0 upstream.

This reverts commit 3c18e9baee.

These devices do not appear to send a zero-length packet when the
transfer size is a multiple of the bulk-endpoint max-packet size. This
means that incoming data may not be processed by the driver until a
short packet is received or the receive buffer is full.

Revert back to using endpoint-sized receive buffers to avoid stalled
reads.

Reported-by: Paul Größel <pb.g@gmx.de>
Link: https://bugzilla.kernel.org/show_bug.cgi?id=214131
Fixes: 3c18e9baee ("USB: serial: ch341: fix character loss at high transfer rates")
Cc: stable@vger.kernel.org
Cc: Willy Tarreau <w@1wt.eu>
Link: https://lore.kernel.org/r/20210824121926.19311-1-johan@kernel.org
Signed-off-by: Johan Hovold <johan@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-09-03 10:09:22 +02:00
Michel Dänzer
da3067eadc drm/amdgpu: Cancel delayed work when GFXOFF is disabled
commit 32bc8f8373 upstream.

schedule_delayed_work does not push back the work if it was already
scheduled before, so amdgpu_device_delay_enable_gfx_off ran ~100 ms
after the first time GFXOFF was disabled and re-enabled, even if GFXOFF
was disabled and re-enabled again during those 100 ms.

This resulted in frame drops / stutter with the upcoming mutter 41
release on Navi 14, due to constantly enabling GFXOFF in the HW and
disabling it again (for getting the GPU clock counter).

To fix this, call cancel_delayed_work_sync when the disable count
transitions from 0 to 1, and only schedule the delayed work on the
reverse transition, not if the disable count was already 0. This makes
sure the delayed work doesn't run at unexpected times, and allows it to
be lock-free.

v2:
* Use cancel_delayed_work_sync & mutex_trylock instead of
  mod_delayed_work.
v3:
* Make amdgpu_device_delay_enable_gfx_off lock-free (Christian König)
v4:
* Fix race condition between amdgpu_gfx_off_ctrl incrementing
  adev->gfx.gfx_off_req_count and amdgpu_device_delay_enable_gfx_off
  checking for it to be 0 (Evan Quan)

Cc: stable@vger.kernel.org
Reviewed-by: Evan Quan <evan.quan@amd.com>
Reviewed-by: Lijo Lazar <lijo.lazar@amd.com> # v3
Acked-by: Christian König <christian.koenig@amd.com> # v3
Signed-off-by: Michel Dänzer <mdaenzer@redhat.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-09-03 10:09:22 +02:00
Qu Wenruo
3134292a8e Revert "btrfs: compression: don't try to compress if we don't have enough pages"
commit 4e9655763b upstream.

This reverts commit f216562731.

[BUG]
It's no longer possible to create compressed inline extent after commit
f216562731 ("btrfs: compression: don't try to compress if we don't
have enough pages").

[CAUSE]
For compression code, there are several possible reasons we have a range
that needs to be compressed while it's no more than one page.

- Compressed inline write
  The data is always smaller than one sector and the test lacks the
  condition to properly recognize a non-inline extent.

- Compressed subpage write
  For the incoming subpage compressed write support, we require page
  alignment of the delalloc range.
  And for 64K page size, we can compress just one page into smaller
  sectors.

For those reasons, the requirement for the data to be more than one page
is not correct, and is already causing regression for compressed inline
data writeback.  The idea of skipping one page to avoid wasting CPU time
could be revisited in the future.

[FIX]
Fix it by reverting the offending commit.

Reported-by: Zygo Blaxell <ce3g8jdj@umail.furryterror.org>
Link: https://lore.kernel.org/linux-btrfs/afa2742.c084f5d6.17b6b08dffc@tnonline.net
Fixes: f216562731 ("btrfs: compression: don't try to compress if we don't have enough pages")
CC: stable@vger.kernel.org # 4.4+
Signed-off-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-09-03 10:09:22 +02:00
Vincent Chen
921c2533aa riscv: Ensure the value of FP registers in the core dump file is up to date
commit 379eb01c21 upstream.

The value of FP registers in the core dump file comes from the
thread.fstate. However, kernel saves the FP registers to the thread.fstate
only before scheduling out the process. If no process switch happens
during the exception handling process, kernel will not have a chance to
save the latest value of FP registers to thread.fstate. It will cause the
value of FP registers in the core dump file may be incorrect. To solve this
problem, this patch force lets kernel save the FP register into the
thread.fstate if the target task_struct equals the current.

Signed-off-by: Vincent Chen <vincent.chen@sifive.com>
Reviewed-by: Jisheng Zhang <jszhang@kernel.org>
Fixes: b8c8a9590e ("RISC-V: Add FP register ptrace support for gdb.")
Cc: stable@vger.kernel.org
Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-09-03 10:09:22 +02:00
Xiubo Li
e55a8b4615 ceph: correctly handle releasing an embedded cap flush
commit b2f9fa1f3b upstream.

The ceph_cap_flush structures are usually dynamically allocated, but
the ceph_cap_snap has an embedded one.

When force umounting, the client will try to remove all the session
caps. During this, it will free them, but that should not be done
with the ones embedded in a capsnap.

Fix this by adding a new boolean that indicates that the cap flush is
embedded in a capsnap, and skip freeing it if that's set.

At the same time, switch to using list_del_init() when detaching the
i_list and g_list heads.  It's possible for a forced umount to remove
these objects but then handle_cap_flushsnap_ack() races in and does the
list_del_init() again, corrupting memory.

Cc: stable@vger.kernel.org
URL: https://tracker.ceph.com/issues/52283
Signed-off-by: Xiubo Li <xiubli@redhat.com>
Reviewed-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-09-03 10:09:22 +02:00
Stefan Mätje
7008b9981b can: usb: esd_usb2: esd_usb2_rx_event(): fix the interchange of the CAN RX and TX error counters
commit 044012b520 upstream.

This patch fixes the interchanged fetch of the CAN RX and TX error
counters from the ESD_EV_CAN_ERROR_EXT message. The RX error counter
is really in struct rx_msg::data[2] and the TX error counter is in
struct rx_msg::data[3].

Fixes: 96d8e90382 ("can: Add driver for esd CAN-USB/2 device")
Link: https://lore.kernel.org/r/20210825215227.4947-2-stefan.maetje@esd.eu
Cc: stable@vger.kernel.org
Signed-off-by: Stefan Mätje <stefan.maetje@esd.eu>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-09-03 10:09:22 +02:00
Mark Brown
45b7b20971 net: mscc: Fix non-GPL export of regmap APIs
[ Upstream commit 48c812e032 ]

The ocelot driver makes use of regmap, wrapping it with driver specific
operations that are thin wrappers around the core regmap APIs. These are
exported with EXPORT_SYMBOL, dropping the _GPL from the core regmap
exports which is frowned upon. Add _GPL suffixes to at least the APIs that
are doing register I/O.

Signed-off-by: Mark Brown <broonie@kernel.org>
Acked-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2021-09-03 10:09:22 +02:00
Miklos Szeredi
ef2d68ef9a ovl: fix uninitialized pointer read in ovl_lookup_real_one()
[ Upstream commit 580c610429 ]

One error path can result in release_dentry_name_snapshot() being called
before "name" was initialized by take_dentry_name_snapshot().

Fix by moving the release_dentry_name_snapshot() to immediately after the
only use.

Reported-by: Colin Ian King <colin.king@canonical.com>
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2021-09-03 10:09:22 +02:00
Ming Lei
c94d50979f blk-iocost: fix lockdep warning on blkcg->lock
[ Upstream commit 11431e26c9 ]

blkcg->lock depends on q->queue_lock which may depend on another driver
lock required in irq context, one example is dm-thin:

	Chain exists of:
	  &pool->lock#3 --> &q->queue_lock --> &blkcg->lock

	 Possible interrupt unsafe locking scenario:

	       CPU0                    CPU1
	       ----                    ----
	  lock(&blkcg->lock);
	                               local_irq_disable();
	                               lock(&pool->lock#3);
	                               lock(&q->queue_lock);
	  <Interrupt>
	    lock(&pool->lock#3);

Fix the issue by using spin_lock_irq(&blkcg->lock) in ioc_weight_write().

Cc: Tejun Heo <tj@kernel.org>
Reported-by: Bruno Goncalves <bgoncalv@redhat.com>
Link: https://lore.kernel.org/linux-block/CA+QYu4rzz6079ighEanS3Qq_Dmnczcf45ZoJoHKVLVATTo1e4Q@mail.gmail.com/T/#u
Signed-off-by: Ming Lei <ming.lei@redhat.com>
Acked-by: Tejun Heo <tj@kernel.org>
Link: https://lore.kernel.org/r/20210803070608.1766400-1-ming.lei@redhat.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2021-09-03 10:09:22 +02:00
Kefeng Wang
6815e21fe2 once: Fix panic when module unload
[ Upstream commit 1027b96ec9 ]

DO_ONCE
DEFINE_STATIC_KEY_TRUE(___once_key);
__do_once_done
  once_disable_jump(once_key);
    INIT_WORK(&w->work, once_deferred);
    struct once_work *w;
    w->key = key;
    schedule_work(&w->work);                     module unload
                                                   //*the key is
destroy*
process_one_work
  once_deferred
    BUG_ON(!static_key_enabled(work->key));
       static_key_count((struct static_key *)x)    //*access key, crash*

When module uses DO_ONCE mechanism, it could crash due to the above
concurrency problem, we could reproduce it with link[1].

Fix it by add/put module refcount in the once work process.

[1] https://lore.kernel.org/netdev/eaa6c371-465e-57eb-6be9-f4b16b9d7cbf@huawei.com/

Cc: Hannes Frederic Sowa <hannes@stressinduktion.org>
Cc: Daniel Borkmann <daniel@iogearbox.net>
Cc: David S. Miller <davem@davemloft.net>
Cc: Eric Dumazet <edumazet@google.com>
Reported-by: Minmin chen <chenmingmin@huawei.com>
Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com>
Acked-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2021-09-03 10:09:21 +02:00
Florian Westphal
f68ad168e2 netfilter: conntrack: collect all entries in one cycle
[ Upstream commit 4608fdfc07 ]

Michal Kubecek reports that conntrack gc is responsible for frequent
wakeups (every 125ms) on idle systems.

On busy systems, timed out entries are evicted during lookup.
The gc worker is only needed to remove entries after system becomes idle
after a busy period.

To resolve this, always scan the entire table.
If the scan is taking too long, reschedule so other work_structs can run
and resume from next bucket.

After a completed scan, wait for 2 minutes before the next cycle.
Heuristics for faster re-schedule are removed.

GC_SCAN_INTERVAL could be exposed as a sysctl in the future to allow
tuning this as-needed or even turn the gc worker off.

Reported-by: Michal Kubecek <mkubecek@suse.cz>
Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2021-09-03 10:09:21 +02:00
Guenter Roeck
a13a2df0b1 ARC: Fix CONFIG_STACKDEPOT
[ Upstream commit bf79167fd8 ]

Enabling CONFIG_STACKDEPOT results in the following build error.

arc-elf-ld: lib/stackdepot.o: in function `filter_irq_stacks':
stackdepot.c:(.text+0x456): undefined reference to `__irqentry_text_start'
arc-elf-ld: stackdepot.c:(.text+0x456): undefined reference to `__irqentry_text_start'
arc-elf-ld: stackdepot.c:(.text+0x476): undefined reference to `__irqentry_text_end'
arc-elf-ld: stackdepot.c:(.text+0x476): undefined reference to `__irqentry_text_end'
arc-elf-ld: stackdepot.c:(.text+0x484): undefined reference to `__softirqentry_text_start'
arc-elf-ld: stackdepot.c:(.text+0x484): undefined reference to `__softirqentry_text_start'
arc-elf-ld: stackdepot.c:(.text+0x48c): undefined reference to `__softirqentry_text_end'
arc-elf-ld: stackdepot.c:(.text+0x48c): undefined reference to `__softirqentry_text_end'

Other architectures address this problem by adding IRQENTRY_TEXT and
SOFTIRQENTRY_TEXT to the text segment, so do the same here.

Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2021-09-03 10:09:21 +02:00
Mark Brown
0af6a9f82c ASoC: component: Remove misplaced prefix handling in pin control functions
[ Upstream commit 31428c7874 ]

When the component level pin control functions were added they for some
no longer obvious reason handled adding prefixing of widget names. This
meant that when the lack of prefix handling in the DAPM level pin
operations was fixed by ae4fc53224 (ASoC: dapm: use component
prefix when checking widget names) the one device using the component
level API ended up with the prefix being applied twice, causing all
lookups to fail.

Fix this by removing the redundant prefixing from the component code,
which has the nice side effect of also making that code much simpler.

Reported-by: Richard Fitzgerald <rf@opensource.cirrus.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Tested-by: Lucas Tanure <tanureal@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20210726194123.54585-1-broonie@kernel.org
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2021-09-03 10:09:21 +02:00
Derek Fang
34cc80ec12 ASoC: rt5682: Adjust headset volume button threshold
[ Upstream commit 6d20bf7c02 ]

Adjust the threshold of headset button volume+ to fix
the wrong button detection issue with some brand headsets.

Signed-off-by: Derek Fang <derek.fang@realtek.com>
Link: https://lore.kernel.org/r/20210721133121.12333-1-derek.fang@realtek.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2021-09-03 10:09:21 +02:00
Yonghong Song
d81ddadabd bpf: Fix NULL pointer dereference in bpf_get_local_storage() helper
commit b910eaaaa4 upstream.

Jiri Olsa reported a bug ([1]) in kernel where cgroup local
storage pointer may be NULL in bpf_get_local_storage() helper.
There are two issues uncovered by this bug:
  (1). kprobe or tracepoint prog incorrectly sets cgroup local storage
       before prog run,
  (2). due to change from preempt_disable to migrate_disable,
       preemption is possible and percpu storage might be overwritten
       by other tasks.

This issue (1) is fixed in [2]. This patch tried to address issue (2).
The following shows how things can go wrong:
  task 1:   bpf_cgroup_storage_set() for percpu local storage
         preemption happens
  task 2:   bpf_cgroup_storage_set() for percpu local storage
         preemption happens
  task 1:   run bpf program

task 1 will effectively use the percpu local storage setting by task 2
which will be either NULL or incorrect ones.

Instead of just one common local storage per cpu, this patch fixed
the issue by permitting 8 local storages per cpu and each local
storage is identified by a task_struct pointer. This way, we
allow at most 8 nested preemption between bpf_cgroup_storage_set()
and bpf_cgroup_storage_unset(). The percpu local storage slot
is released (calling bpf_cgroup_storage_unset()) by the same task
after bpf program finished running.
bpf_test_run() is also fixed to use the new bpf_cgroup_storage_set()
interface.

The patch is tested on top of [2] with reproducer in [1].
Without this patch, kernel will emit error in 2-3 minutes.
With this patch, after one hour, still no error.

 [1] https://lore.kernel.org/bpf/CAKH8qBuXCfUz=w8L+Fj74OaUpbosO29niYwTki7e3Ag044_aww@mail.gmail.com/T
 [2] https://lore.kernel.org/bpf/20210309185028.3763817-1-yhs@fb.com

Signed-off-by: Yonghong Song <yhs@fb.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Acked-by: Roman Gushchin <guro@fb.com>
Link: https://lore.kernel.org/bpf/20210323055146.3334476-1-yhs@fb.com
Cc: <stable@vger.kernel.org> # 5.10.x
Signed-off-by: Stanislav Fomichev <sdf@google.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2021-09-03 10:09:21 +02:00
Daniel Borkmann
9dd6f6d896 bpf: Fix ringbuf helper function compatibility
commit 5b029a32cf upstream.

Commit 457f44363a ("bpf: Implement BPF ring buffer and verifier support
for it") extended check_map_func_compatibility() by enforcing map -> helper
function match, but not helper -> map type match.

Due to this all of the bpf_ringbuf_*() helper functions could be used with
a wrong map type such as array or hash map, leading to invalid access due
to type confusion.

Also, both BPF_FUNC_ringbuf_{submit,discard} have ARG_PTR_TO_ALLOC_MEM as
argument and not a BPF map. Therefore, their check_map_func_compatibility()
presence is incorrect since it's only for map type checking.

Fixes: 457f44363a ("bpf: Implement BPF ring buffer and verifier support for it")
Reported-by: Ryota Shiga (Flatt Security)
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-09-03 10:09:21 +02:00
Xiaolong Huang
ad41706c77 net: qrtr: fix another OOB Read in qrtr_endpoint_post
commit 7e78c597c3 upstream.

This check was incomplete, did not consider size is 0:

	if (len != ALIGN(size, 4) + hdrlen)
                    goto err;

if size from qrtr_hdr is 0, the result of ALIGN(size, 4)
will be 0, In case of len == hdrlen and size == 0
in header this check won't fail and

	if (cb->type == QRTR_TYPE_NEW_SERVER) {
                /* Remote node endpoint can bridge other distant nodes */
                const struct qrtr_ctrl_pkt *pkt = data + hdrlen;

                qrtr_node_assign(node, le32_to_cpu(pkt->server.node));
        }

will also read out of bound from data, which is hdrlen allocated block.

Fixes: 194ccc8829 ("net: qrtr: Support decoding incoming v2 packets")
Fixes: ad9d24c942 ("net: qrtr: fix OOB Read in qrtr_endpoint_post")
Signed-off-by: Xiaolong Huang <butterflyhuangxx@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-09-03 10:09:21 +02:00
Cai YiWei
a2d74ca47b media: v4l: add API to clear unready device
Change-Id: I497719e6e8f2ef25a9d6402c16733bf4318d06d7
Signed-off-by: Cai YiWei <cyw@rock-chips.com>
2021-09-03 11:26:07 +08:00
Shawn Lin
f463bdf4d8 arm64: dts: rockchip: rk3568: Set SDHCI core clk to 200MHz
As we mask our SDHCI controller as SDHCI_QUIRK_CAP_CLOCK_BASE_BROKEN,
host->max_clk is derived from core clock in the first place. Then
f_max works together with it.

If we adjust loader's core clk setting, such as 50MHz, we will get
50MHz for host->max_clk, because .get_max_clock() reads core clk
when probing driver. That will lead f_max be set to 50MHz as well,
no matter if max-frequency is set higher than 50MHz.

We can simple solve this problem by assigning core clk as 200MHz
in the first place and then let max-frequency property takes over
it.

Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com>
Change-Id: Idb2fdb8f68881d0286d977dc3718b74c30d3bc67
2021-09-03 10:04:35 +08:00
Liujie Xie
94fbab9d6c ANDROID: vendor_hooks: Add hook in kmalloc_slab()
Add hook in kmalloc_slab() for debug kmalloc slab memory leak.

Bug: 197614797

Signed-off-by: Liujie Xie <xieliujie@oppo.com>
Change-Id: I402a9f968f2bf1e75daa461c05a53a8fabf70028
2021-09-03 00:17:50 +00:00
Jack Pham
73839b71c8 FROMGIT: usb: dwc3: Decouple USB 2.0 L1 & L2 events
On DWC_usb3 revisions 3.00a and newer (including DWC_usb31 and
DWC_usb32) the GUCTL1 register gained the DEV_DECOUPLE_L1L2_EVT
field (bit 31) which when enabled allows the controller in device
mode to treat USB 2.0 L1 LPM & L2 events separately.

After commit d1d90dd272 ("usb: dwc3: gadget: Enable suspend
events") the controller will now receive events (and therefore
interrupts) for every state change when entering/exiting either
L1 or L2 states.  Since L1 is handled entirely by the hardware
and requires no software intervention, there is no need to even
enable these events and unnecessarily notify the gadget driver.
Enable the aforementioned bit to help reduce the overall interrupt
count for these L1 events that don't need to be handled while
retaining the events for full L2 suspend/wakeup.

Tested-by: Jun Li <jun.li@nxp.com>
Tested-by: Amit Pundir <amit.pundir@linaro.org> # for RB5 (sm8250)
Tested-by: John Stultz <john.stultz@linaro.org> # for HiKey960 & db845c
Reviewed-by: Jun Li <jun.li@nxp.com>
Acked-by: Felipe Balbi <balbi@kernel.org>
Signed-off-by: Jack Pham <jackp@codeaurora.org>
Link: https://lore.kernel.org/r/20210812082635.12924-1-jackp@codeaurora.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

(cherry picked from commit 843714bb37
 https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git usb-next)
Bug: 197291225
Change-Id: Id800cd1ae6d45108b17432ff864902f4d6d57759
Signed-off-by: Jack Pham <jackp@codeaurora.org>
2021-09-02 13:06:32 +00:00
wangting11
2c68b9071d ANDROID: GKI: update xiaomi symbol list
Leaf changes summary: 17 artifacts changed
Changed leaf types summary: 0 leaf type changed
Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 10 Added functions
Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 7 Added variables

10 Added functions:

  [A] 'function int __traceiter_android_rvh_check_preempt_tick(void*, task_struct*, unsigned long int*, bool*, unsigned long int, cfs_rq*, sched_entity*, unsigned int)'
  [A] 'function int __traceiter_android_rvh_cpuset_fork(void*, task_struct*, int*)'
  [A] 'function int __traceiter_android_rvh_dequeue_entity(void*, cfs_rq*, sched_entity*)'
  [A] 'function int __traceiter_android_rvh_enqueue_entity(void*, cfs_rq*, sched_entity*)'
  [A] 'function int __traceiter_android_rvh_set_cpus_allowed_comm(void*, task_struct*, const cpumask*)'
  [A] 'function int __traceiter_android_vh_map_util_freq(void*, unsigned long int, unsigned long int, unsigned long int, unsigned long int*, cpufreq_policy*, bool*)'
  [A] 'function int __traceiter_android_vh_sched_setaffinity_early(void*, task_struct*, const cpumask*, int*)'
  [A] 'function void cpuset_cpus_allowed(task_struct*, cpumask*)'
  [A] 'function const char* drm_get_connector_type_name(unsigned int)'
  [A] 'function int gpio_request_array(const gpio*, size_t)'

7 Added variables:

  [A] 'tracepoint __tracepoint_android_rvh_check_preempt_tick'
  [A] 'tracepoint __tracepoint_android_rvh_cpuset_fork'
  [A] 'tracepoint __tracepoint_android_rvh_dequeue_entity'
  [A] 'tracepoint __tracepoint_android_rvh_enqueue_entity'
  [A] 'tracepoint __tracepoint_android_rvh_set_cpus_allowed_comm'
  [A] 'tracepoint __tracepoint_android_vh_map_util_freq'
  [A] 'tracepoint __tracepoint_android_vh_sched_setaffinity_early'

Bug: 197910412
Signed-off-by: ting wang <wangting11@xiaomi.com>
Change-Id: Iadbd3477ee983c254a06956295ce0a46b6dcbf91
2021-09-02 11:40:19 +00:00
Tao Huang
2c342bcc05 arm64: rockchip_gki.config: Enable CONFIG_PHY_ROCKCHIP_CSI2_DPHY
Signed-off-by: Tao Huang <huangtao@rock-chips.com>
Change-Id: Ia285c1c09f097a99ca6d76da5ae18094656659be
2021-09-02 18:23:05 +08:00
Cai YiWei
d9b335b5d8 phy: rockchip: csi2-dphy: fix compile error
Change-Id: I6afabfa78abe3202b308e8a4cfd547761bc2a6be
Signed-off-by: Cai YiWei <cyw@rock-chips.com>
2021-09-02 18:22:35 +08:00
Kever Yang
98e3dce8ad arm64: dts: rockchip: rk3588: Add support for multi-core
RK3588 is an ARM DynamiQ architecture SoC, including 4 Cortex-A55 cores
and 4 Cortex-A76 cores.

Signed-off-by: Kever Yang <kever.yang@rock-chips.com>
Change-Id: Id52349b39e28bc5a4fd3d0f17a712cd4c0797db8
2021-09-02 18:02:18 +08:00
Sami Tolvanen
8da32d526d ANDROID: cfi: explicitly clear diag in __cfi_slowpath
When CONFIG_CFI_PERMISSIVE is not set, ensure the third argument
passed to __cfi_check from __cfi_slowpath is NULL to avoid an invalid
memory access in __cfi_check_fail. __cfi_check_fail always traps
anyway, but the error message will be less confusing with this patch.

Note that kernels built with full LTO aren't affected as they always
clear the argument before a __cfi_slowpath call. Later kernel versions
are also not affected as they use -fno-sanitize-trap=cfi.

Bug: 196763360
Change-Id: Ifa5b4e324737a3069f7a772dd9b392042ec8407e
Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
2021-09-02 08:55:56 +00:00
William Wu
bf6c596646 arm64: dts: rockchip: rk3588: add usb2 phy1 node
Signed-off-by: William Wu <william.wu@rock-chips.com>
Change-Id: I9d8ce4b7e660b66a6d560502ccc895a2ec457173
2021-09-02 16:36:32 +08:00
Tao Huang
621f6a5d90 arm64: dts: rockchip: Remove leading 0x from unit addresses in rk3588
arch/arm64/boot/dts/rockchip/rk3588s.dtsi:921.32-933.4: Warning (unit_address_format): /iommu@0xfdc38700: unit name should not have leading "0x"
arch/arm64/boot/dts/rockchip/rk3588s.dtsi:935.32-947.4: Warning (unit_address_format): /iommu@0xfdc48700: unit name should not have leading "0x"

Fixes: e1e1eabccd ("arm64: dts: rockchip: rk3588s: Add mmu nodes for video codecs")
Signed-off-by: Tao Huang <huangtao@rock-chips.com>
Change-Id: If259e78e4454266bccbbb51ee808f59c0e62ace7
2021-09-02 16:34:20 +08:00
Greg Kroah-Hartman
45cad77f78 ANDROID: GKI: update the android12-5.10-lts abi .xml file
We need another symbol added in here for now, due to changes in an LTS
release, so update the .xml file after the merge in order to preserve it
properly.

Leaf changes summary: 1 artifact changed
Changed leaf types summary: 0 leaf type changed
Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 1 Added function
Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable

1 Added function:

  [A] 'function void __sdhci_set_timeout(sdhci_host*, mmc_command*)'

Fixes: af06413d4c ("Merge branch 'android12-5.10' into `android12-5.10-lts`")
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: I777a7489fcf81630dc30a07eaa927aa34afafdfc
2021-09-02 09:23:24 +02:00
Greg Kroah-Hartman
af06413d4c Merge branch 'android12-5.10' into android12-5.10-lts
Sync up with android12-5.10 for the following commits:

b781144f8a ANDROID: GKI: update xiaomi symbol list
7ed18b3da9 ANDROID: GKI: Update symbols to symbol list
70fb50176e UPSTREAM: kasan, slub: reset tag when printing address
bd5c75ce7b UPSTREAM: kasan, kmemleak: reset tags when scanning block
b683931b2a ANDROID: gki_defconfig: set DEFAULT_MMAP_MIN_ADDR=32768
c0cce1da8b UPSTREAM: kasan, slub: reset tag when printing address
3b6f980a85 UPSTREAM: KVM: arm64: Fix off-by-one in range_is_memory
3649d38887 UPSTREAM: mm: fix the deadlock in finish_fault()
09ec66de84 UPSTREAM: arm64: mte: fix restoration of GCR_EL1 from suspend
1e8a0d84dc UPSTREAM: firmware: arm_scmi: Avoid padding in sensor message structure
ea6f697c3d UPSTREAM: media: s5p-mfc: Fix display delay control creation
2f13bd8f39 UPSTREAM: software node: Handle software node injection to an existing device properly
2f34733fae UPSTREAM: usb: dwc3: Fix debugfs creation flow
d42ca898a6 UPSTREAM: usb: dwc3: core: fix kernel panic when do reboot
71710d40d9 UPSTREAM: kfence: use TASK_IDLE when awaiting allocation
1ea718cd9e UPSTREAM: regulator: scmi: Fix off-by-one for linear regulators .n_voltages setting
be7c2833df UPSTREAM: clk: Skip clk provider registration when np is NULL
f20cbf56db FROMGIT: usb: typec: tcpm: Raise vdm_sm_running flag only when VDM SM is running
b58b8007b1 FROMGIT: usb: typec: tcpm: Fix VDMs sometimes not being forwarded to alt-mode drivers

Note, takes the .xml file from the `android12-5.10` branch, will need to
be updated again in a follow-on commit to pick up the missing symbol.

Change-Id: Ic579951cb27d50feb2987cc91a3f58170562eed1
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2021-09-02 09:02:06 +02:00
Frank Wang
95f6f44072 arm64: dts: rockchip: rk3588: add usbdp phy device node
This adds USBDP combo PHY1 related nodes for RK3588 SoCs.

Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
Change-Id: I2afb41c8f57ab49c13ecee110a78c9b7f011e3fe
2021-09-02 14:44:26 +08:00
Jon Lin
0e542bf348 arm64: dts: rockchip: rk3588s: add spi node
Change-Id: I4e72251952f5aae5b9588c4c5cb00de4f70b7ae1
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
2021-09-02 14:39:24 +08:00
William Wu
abdc763b77 arm64: dts: rockchip: rk3588s: add usb2 phy nodes
The rk3588s has three independent USB 2.0 PHYs. And
each PHY has one port. The connection between the PHYs
and the controlles is as follows:

USB2 PHY0 to USB3 OTG0
USB2 PHY2 to USB2 HOST0
USB2 PHY3 to USB2 HOST1

Signed-off-by: William Wu <william.wu@rock-chips.com>
Change-Id: I300dcf4fdf6e4688a7e1598e9e2f4bb17d48acbc
2021-09-02 10:36:09 +08:00
William Wu
d8b7417bea usb: dwc3: core: allow pm runtime for rockchip platform
Most of rockchip platforms support power domain for dwc3.
Allow the pm runtime to manage the power domain for dwc3
in the dwc3 runtime PM routine.

Signed-off-by: William Wu <william.wu@rock-chips.com>
Change-Id: I49e3fa207db8aea0355a797b69c9c8a791d2eaa3
2021-09-02 10:18:24 +08:00
William Wu
7e4881a49e usb: dwc3: core: use 2.0 clk for 3.0 if only support 2.0 mode
If the dwc3 core is programmed to operate in usb 2.0 only
mode, and no usb 3.0 phy, then it needs to set the bit
DEV_FORCE_20_CLK_FOR_30_CLK of GUCTL1 to make the internal
2.0(utmi/ulpi) clock to be routed as the 3.0 (pipe) clock.

Signed-off-by: William Wu <william.wu@rock-chips.com>
Signed-off-by: Bin Yang <yangbin@rock-chips.com>
Change-Id: I217a380815c21903c1090bd003c1d8ba2fadbe7c
2021-09-02 10:18:23 +08:00
Jianqun Xu
7e6d99ae56 arm64: dts: rockchip: rk3399 add pd for iep_mmu
Fixes: 239c747658 ("arm64: dts: rockchip: rk3399: add iep device node")

Signed-off-by: Jianqun Xu <jay.xu@rock-chips.com>
Change-Id: Iec517750dd98af2d9814d97d7f3c2a9ff083f88a
2021-09-02 09:56:40 +08:00
Jianqun Xu
9ee813b963 arm64: dts: rockchip: rk3399 fix rkvdec_mmu to vdec_mmu
Fixes: a4e0ffd261 ("arm64: dts: rockchip: rk3399: add mpp support")

Signed-off-by: Jianqun Xu <jay.xu@rock-chips.com>
Change-Id: Ie325e610071fecb69128981b821023b862099459
2021-09-02 09:49:20 +08:00
Yifeng Zhao
1a6396458b phy: rockchip: naneng-combphy: add support rk3588
Signed-off-by: Yifeng Zhao <yifeng.zhao@rock-chips.com>
Change-Id: Ice2a0219c3702dddeae91b4d0cb2dbbbcdb875fc
2021-09-02 09:38:00 +08:00
Andy Yan
6a4797b6c4 drm/rockchip: vop2: Set correct possible_crtcs for writeback connector
We only register used vp. So the registered crtcs may less than
the total vp on vop.

Fix warning:

[    0.495636][    T1] Bogus possible_crtcs: [ENCODER:345:Virtual-345]
possible_crtcs=0x7 (full crtc mask=0x3)
[    0.495681][    T1] WARNING: CPU: 0 PID: 1 at
drivers/gpu/drm/drm_mode_config.c:638
drm_mode_config_validate+0x1f0/0x2e8
[    0.495697][    T1] Modules linked in:
[    0.495717][    T1] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.10.43
[    0.495730][    T1] Hardware name: Rockchip RK3568 EVB1 DDR4 V10
Board (DT)
[    0.495741][    T1] pstate: 60800009 (nZCv daif -PAN +UAO -TCO
BTYPE=--)
[    0.495751][    T1] pc : drm_mode_config_validate+0x1f0/0x2e8
[    0.495765][    T1] lr : drm_mode_config_validate+0x1f0/0x2e8
[    0.495777][    T1] sp : ffffffc01003b8c0
[    0.495786][    T1] x29: ffffffc01003b8d0 x28: 0000000000000000
[    0.495804][    T1] x27: ffffff8003b23580 x26: 0000000000000001
[    0.495823][    T1] x25: 000000000000000f x24: ffffff8003bc2750
[    0.495839][    T1] x23: ffffffc0114aa4b8 x22: ffffffc0114aa438
[    0.495851][    T1] x21: ffffff8003bb4368 x20: ffffff8003bb4368
[    0.495863][    T1] x19: ffffff8003bb4360 x18: ffffffffffffffff
[    0.495879][    T1] x17: 0000000000049705 x16: 00000000000d42dc
[    0.495896][    T1] x15: 0000000000000113 x14: ffffffc01003b550
[    0.495911][    T1] x13: 00000000ffffffea x12: ffffffc011bbb7b0
[    0.495928][    T1] x11: 0000000000000001 x10: 0000000000000001
[    0.495945][    T1] x9 : 0000000000000003 x8 : ffffffc011a5b808
[    0.495961][    T1] x7 : ffffffc011bbb808 x6 : c0000000ffffbfff
[    0.495977][    T1] x5 : 000000000005ffe8 x4 : 0000000000000000
[    0.495993][    T1] x3 : 00000000ffffffff x2 : ffffffc011a5b788
[    0.496008][    T1] x1 : 4effea469dba5e00 x0 : 0000000000000000
[    0.496026][    T1] Call trace:
[    0.496041][    T1]  drm_mode_config_validate+0x1f0/0x2e8
[    0.496057][    T1]  drm_dev_register+0x16c/0x1f0
[    0.496074][    T1]  rockchip_drm_bind+0x4f4/0x568
[    0.496087][    T1]  try_to_bring_up_master+0x15c/0x1c8
[    0.496096][    T1]  __component_add+0xb0/0x198
[    0.496104][    T1]  component_add+0x10/0x18
[    0.496120][    T1]  dw_mipi_dsi_rockchip_host_attach+0x28/0xd8
[    0.496136][    T1]  dw_mipi_dsi_host_attach+0xd0/0x120
[    0.496149][    T1]  mipi_dsi_attach+0x24/0x38
[    0.496165][    T1]  panel_simple_dsi_probe+0x94/0x1c8
[    0.496180][    T1]  mipi_dsi_drv_probe+0x1c/0x28
[    0.496195][    T1]  really_probe+0x20c/0x3e8
[    0.496209][    T1]  driver_probe_device+0x54/0xb8
[    0.496224][    T1]  device_driver_attach+0x6c/0x78
[    0.496238][    T1]  __driver_attach+0xb0/0xf0
[    0.496253][    T1]  bus_for_each_dev+0x68/0xc8
[    0.496267][    T1]  driver_attach+0x20/0x28
[    0.496281][    T1]  bus_add_driver+0x168/0x1f8
[    0.496296][    T1]  driver_register+0x60/0x110
[    0.496311][    T1]  mipi_dsi_driver_register_full+0x54/0x60
[    0.496328][    T1]  panel_simple_init+0x30/0x44
[    0.496339][    T1]  do_one_initcall+0x48/0x2d8
[    0.496349][    T1]  kernel_init_freeable+0x254/0x2c4
[    0.496365][    T1]  kernel_init+0x10/0x108
[    0.496380][    T1]  ret_from_fork+0x10/0x18

Fixes: d8d8a665cd ("drm/rockchip: vop2: Only register used vp to drm")
Signed-off-by: Andy Yan <andy.yan@rock-chips.com>
Change-Id: I537b953d5597eeae70110e218892edca1e83a243
2021-09-02 09:32:48 +08:00
wangting11
b781144f8a ANDROID: GKI: update xiaomi symbol list
Leaf changes summary: 2 artifacts changed
Changed leaf types summary: 0 leaf type changed
Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 2 Added functions
Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable

2 Added functions:

  [A] 'function user_struct* find_user(kuid_t)'
  [A] 'function void free_uid(user_struct*)'

Bug: 197716484
Signed-off-by: ting wang <wangting11@xiaomi.com>
Change-Id: Ia0addb98ca8162fda44440262c32b6f37721de6c
2021-09-01 17:33:21 -07:00
Amit Pundir
383ea08168 ANDROID: GKI: db845c: Update symbols list and ABI for lts v5.10.61
android12-5.10-lts is broken on Dragonboard 845c because of
missing symbols added in v5.10.61.

So updating the symbols list by running:
  BUILD_CONFIG=common/build.config.db845c build/build_abi.sh -s

And updated the abi_gki_aarch64 ABI by running:
  "BUILD_CONFIG=common/build.config.gki.aarch64 \
    ABI_DEFINITION=abi_gki_aarch64.xml build/build_abi.sh \
      --update --print-report"

========================================================
Leaf changes summary: 1 artifact changed
Changed leaf types summary: 0 leaf type changed
Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 1 Added function
Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable

1 Added function:

  [A] 'function void __sdhci_set_timeout(sdhci_host*, mmc_command*)'
========================================================

Bug: 146449535
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
Change-Id: Ie077af89ca6b847f79cf5294f57467fbbf6b11e1
2021-09-01 20:15:25 +05:30
William Wu
3e5172d097 arm64: dts: rockchip: rk3588: add usb3 otg1 controller node
Signed-off-by: William Wu <william.wu@rock-chips.com>
Change-Id: I550e0fd3991179a4a62c1b762cc6b8358bf0f862
2021-09-01 20:24:46 +08:00
Hu Kejun
a3344fee66 arm64: dts: rockchip: rk3399: add rkisp1 support
Change-Id: Ie0eb7088d08f9c0cbd0443b6f9c635ade9b4cc8f
Signed-off-by: Hu Kejun <william.hu@rock-chips.com>
2021-09-01 20:14:35 +08:00
Cai YiWei
206bd78433 media: rockchip: add rockchip isp format
Change-Id: I0dd89290f23c412d4656583f554e220af66f9704
Signed-off-by: Cai YiWei <cyw@rock-chips.com>
2021-09-01 19:29:38 +08:00