Commit Graph

1149046 Commits

Author SHA1 Message Date
Mostafa Saleh
90b95f6a81 ANDROID: KVM: arm64: iommu: Pass device specific flags to hypervisor
We need to pass some device specific flags that are detected from EL1
(as built-in sync device) to the hypervisor. The flags are defined
by the driver but hosted in the main iommu struct.

As we use SMCCC1.1 we only have 7 args, which were already used, so
mem_size is removed as it really not needed as all page donations
are 1 page. so passing the base address is enough.

Bug: 255266847
Change-Id: I14e6d2573d7a822334455999aa9fd6f01ac97450
Signed-off-by: Mostafa Saleh <smostafa@google.com>
2023-04-26 17:01:51 +00:00
Vijayanand Jitta
98d9ae3046 ANDROID: abi_gki_aarch64_qcom: Update qcom abi symbol list
Update qcom abi symbol list required for multiple kswapd.

Symbols added:
   kswapd
   __traceiter_android_vh_kswapd_per_node
   __tracepoint_android_vh_kswapd_per_node

Bug: 201263306
Change-Id: Ie945059158784a97570fadb31a9939ac365c3c71
Signed-off-by: Vijayanand Jitta <quic_vjitta@quicinc.com>
2023-04-26 17:01:51 +00:00
Charan Teja Reddy
88153d9a99 ANDROID: vmscan: Support multiple kswapd threads per node
Page replacement is handled in the Linux Kernel in one of two ways:

1) Asynchronously via kswapd
2) Synchronously, via direct reclaim

At page allocation time the allocating task is immediately given a page
from the zone free list allowing it to go right back to work doing
whatever it was doing; Probably directly or indirectly executing business
logic.

Just prior to satisfying the allocation, free pages is checked to see if
it has reached the zone low watermark and if so, kswapd is awakened.
Kswapd will start scanning pages looking for inactive pages to evict to
make room for new page allocations. The work of kswapd allows tasks to
continue allocating memory from their respective zone free list without
incurring any delay.

When the demand for free pages exceeds the rate that kswapd tasks can
supply them, page allocation works differently. Once the allocating task
finds that the number of free pages is at or below the zone min watermark,
the task will no longer pull pages from the free list. Instead, the task
will run the same CPU-bound routines as kswapd to satisfy its own
allocation by scanning and evicting pages. This is called a direct reclaim.

The time spent performing a direct reclaim can be substantial, often
taking tens to hundreds of milliseconds for small order0 allocations to
half a second or more for order9 huge-page allocations. In fact, kswapd is
not actually required on a linux system. It exists for the sole purpose of
optimizing performance by preventing direct reclaims.

When memory shortfall is sufficient to trigger direct reclaims, they can
occur in any task that is running on the system. A single aggressive
memory allocating task can set the stage for collateral damage to occur in
small tasks that rarely allocate additional memory. Consider the impact of
injecting an additional 100ms of latency when nscd allocates memory to
facilitate caching of a DNS query.

The presence of direct reclaims 10 years ago was a fairly reliable
indicator that too much was being asked of a Linux system. Kswapd was
likely wasting time scanning pages that were ineligible for eviction.
Adding RAM or reducing the working set size would usually make the problem
go away. Since then hardware has evolved to bring a new struggle for
kswapd. Storage speeds have increased by orders of magnitude while CPU
clock speeds stayed the same or even slowed down in exchange for more
cores per package. This presents a throughput problem for a single
threaded kswapd that will get worse with each generation of new hardware.

Test Details

NOTE: The tests below were run with shadow entries disabled. See the
associated patch and cover letter for details

The tests below were designed with the assumption that a kswapd bottleneck
is best demonstrated using filesystem reads. This way, the inactive list
will be full of clean pages, simplifying the analysis and allowing kswapd
to achieve the highest possible steal rate. Maximum steal rates for kswapd
are likely to be the same or lower for any other mix of page types on the
system.

Tests were run on a 2U Oracle X7-2L with 52 Intel Xeon Skylake 2GHz cores,
756GB of RAM and 8 x 3.6 TB NVMe Solid State Disk drives. Each drive has
an XFS file system mounted separately as /d0 through /d7. SSD drives
require multiple concurrent streams to show their potential, so I created
eleven 250GB zero-filled files on each drive so that I could test with
parallel reads.

The test script runs in multiple stages. At each stage, the number of dd
tasks run concurrently is increased by 2. I did not include all of the
test output for brevity.

During each stage dd tasks are launched to read from each drive in a round
robin fashion until the specified number of tasks for the stage has been
reached. Then iostat, vmstat and top are started in the background with 10
second intervals. After five minutes, all of the dd tasks are killed and
the iostat, vmstat and top output is parsed in order to report the
following:

CPU consumption
- sy - aggregate kernel mode CPU consumption from vmstat output. The value
       doesn't tend to fluctuate much so I just grab the highest value.
       Each sample is averaged over 10 seconds
- dd_cpu - for all of the dd tasks averaged across the top samples since
           there is a lot of variation.

Throughput
- in Kbytes
- Command is iostat -x -d 10 -g total

This first test performs reads using O_DIRECT in order to show the maximum
throughput that can be obtained using these drives. It also demonstrates
how rapidly throughput scales as the number of dd tasks are increased.

The dd command for this test looks like this:

Command Used: dd iflag=direct if=/d${i}/$n of=/dev/null bs=4M

Test #1: Direct IO
dd sy dd_cpu throughput
6  0  2.33   14726026.40
10 1  2.95   19954974.80
16 1  2.63   24419689.30
22 1  2.63   25430303.20
28 1  2.91   26026513.20
34 1  2.53   26178618.00
40 1  2.18   26239229.20
46 1  1.91   26250550.40
52 1  1.69   26251845.60
58 1  1.54   26253205.60
64 1  1.43   26253780.80
70 1  1.31   26254154.80
76 1  1.21   26253660.80
82 1  1.12   26254214.80
88 1  1.07   26253770.00
90 1  1.04   26252406.40

Throughput was close to peak with only 22 dd tasks. Very little system CPU
was consumed as expected as the drives DMA directly into the user address
space when using direct IO.

In this next test, the iflag=direct option is removed and we only run the
test until the pgscan_kswapd from /proc/vmstat starts to increment. At
that point metrics are parsed and reported and the pagecache contents are
dropped prior to the next test. Lather, rinse, repeat.

Test #2: standard file system IO, no page replacement
dd sy dd_cpu throughput
6  2  28.78  5134316.40
10 3  31.40  8051218.40
16 5  34.73  11438106.80
22 7  33.65  14140596.40
28 8  31.24  16393455.20
34 10 29.88  18219463.60
40 11 28.33  19644159.60
46 11 25.05  20802497.60
52 13 26.92  22092370.00
58 13 23.29  22884881.20
64 14 23.12  23452248.80
70 15 22.40  23916468.00
76 16 22.06  24328737.20
82 17 20.97  24718693.20
88 16 18.57  25149404.40
90 16 18.31  25245565.60

Each read has to pause after the buffer in kernel space is populated while
those pages are added to the pagecache and copied into the user address
space. For this reason, more parallel streams are required to achieve peak
throughput. The copy operation consumes substantially more CPU than direct
IO as expected.

The next test measures throughput after kswapd starts running. This is the
same test only we wait for kswapd to wake up before we start collecting
metrics. The script actually keeps track of a few things that were not
mentioned earlier. It tracks direct reclaims and page scans by watching
the metrics in /proc/vmstat. CPU consumption for kswapd is tracked the
same way it is tracked for dd.

Since the test is 100% reads, you can assume that the page steal rate for
kswapd and direct reclaims is almost identical to the scan rate.

Test #3: 1 kswapd thread per node
dd sy dd_cpu kswapd0 kswapd1 throughput  dr    pgscan_kswapd pgscan_direct
10 4  26.07  28.56   27.03   7355924.40  0     459316976     0
16 7  34.94  69.33   69.66   10867895.20 0     872661643     0
22 10 36.03  93.99   99.33   13130613.60 489   1037654473    11268334
28 10 30.34  95.90   98.60   14601509.60 671   1182591373    15429142
34 14 34.77  97.50   99.23   16468012.00 10850 1069005644    249839515
40 17 36.32  91.49   97.11   17335987.60 18903 975417728     434467710
46 19 38.40  90.54   91.61   17705394.40 25369 855737040     582427973
52 22 40.88  83.97   83.70   17607680.40 31250 709532935     724282458
58 25 40.89  82.19   80.14   17976905.60 35060 657796473     804117540
64 28 41.77  73.49   75.20   18001910.00 39073 561813658     895289337
70 33 45.51  63.78   64.39   17061897.20 44523 379465571     1020726436
76 36 46.95  57.96   60.32   16964459.60 47717 291299464     1093172384
82 39 47.16  55.43   56.16   16949956.00 49479 247071062     1134163008
88 42 47.41  53.75   47.62   16930911.20 51521 195449924     1180442208
90 43 47.18  51.40   50.59   16864428.00 51618 190758156     1183203901

In the previous test where kswapd was not involved, the system-wide kernel
mode CPU consumption with 90 dd tasks was 16%. In this test CPU consumption
with 90 tasks is at 43%. With 52 cores, and two kswapd tasks (one per NUMA
node), kswapd can only be responsible for a little over 4% of the increase.
The rest is likely caused by 51,618 direct reclaims that scanned 1.2
billion pages over the five minute time period of the test.

Same test, more kswapd tasks:

Test #4: 4 kswapd threads per node
dd sy dd_cpu kswapd0 kswapd1 throughput  dr    pgscan_kswapd pgscan_direct
10 5  27.09  16.65   14.17   7842605.60  0     459105291     0
16 10 37.12  26.02   24.85   11352920.40 15    920527796     358515
22 11 36.94  37.13   35.82   13771869.60 0     1132169011     0
28 13 35.23  48.43   46.86   16089746.00 0     1312902070     0
34 15 33.37  53.02   55.69   18314856.40 0     1476169080     0
40 19 35.90  69.60   64.41   19836126.80 0     1629999149     0
46 22 36.82  88.55   57.20   20740216.40 0     1708478106     0
52 24 34.38  93.76   68.34   21758352.00 0     1794055559     0
58 24 30.51  79.20   82.33   22735594.00 0     1872794397     0
64 26 30.21  97.12   76.73   23302203.60 176   1916593721     4206821
70 33 32.92  92.91   92.87   23776588.00 3575  1817685086     85574159
76 37 31.62  91.20   89.83   24308196.80 4752  1812262569     113981763
82 29 25.53  93.23   92.33   24802791.20 306   2032093122     7350704
88 43 37.12  76.18   77.01   25145694.40 20310 1253204719     487048202
90 42 38.56  73.90   74.57   22516787.60 22774 1193637495     545463615

By increasing the number of kswapd threads, throughput increased by ~50%
while kernel mode CPU utilization decreased or stayed the same, likely due
to a decrease in the number of parallel tasks at any given time doing page
replacement.

Signed-off-by: Buddy Lumpkin <buddy.lumpkin@oracle.com>
Bug: 201263306
Link: https://lore.kernel.org/lkml/1522661062-39745-1-git-send-email-buddy.lumpkin@oracle.com
[charante@codeaurora.org]: Changes made to select number of kswapds through uapi
Signed-off-by: Charan Teja Reddy <charante@codeaurora.org>
[quic_vjitta@quicinc.com]: Changes made to move multiple kswapd threads logic to vendor hooks
Signed-off-by: Vijayanand Jitta <quic_vjitta@quicinc.com>
(cherry picked from commit 0d61a651e4dd3c61d1658cc92e0b0450c8374738)

Change-Id: I8425cab7f40cbeaf65af0ea118c1a9ac7da0930e
[quic_vjitta@quicinc.com]: Resolved minor merge conflicts
Signed-off-by: Vijayanand Jitta <quic_vjitta@quicinc.com>
2023-04-26 17:01:51 +00:00
Vijayanand Jitta
d167f5b990 ANDROID: mm: Export kswapd function
To support multiple kswap threads vendor modules need
access to kswapd function. So, export it.

Bug: 201263306
Change-Id: I442612710835f39836a295e9d1936f86826ab960
Signed-off-by: Vijayanand Jitta <quic_vjitta@quicinc.com>
(cherry picked from commit 12972dd7bfa306aa07c92966c4efe7b1c0c5e043)
2023-04-26 17:01:51 +00:00
Carlos Llamas
18ed442c7e ANDROID: gki_defconfig: enable IPV6_MROUTE_MULTIPLE_TABLES
Enable support for multicast policy routing. This will allow border
router devices to run multiple routing tables simultaneously.

Bug: 233821827
Change-Id: Ib029f4db1c5bb9416c06813fa0b66c965fef8fd8
Signed-off-by: Carlos Llamas <cmllamas@google.com>
(cherry picked from commit c9e98bfeeeae4580143ec87b4f1f3ef8571dc331)
2023-04-26 17:01:51 +00:00
Suren Baghdasaryan
6f35d74087 Revert "ANDROID: gki_defconfig: remove CONFIG_CLEANCACHE from gki_defconfig"
This reverts commit e4058ca11d.

Bug: 271544708
Change-Id: I225e2d84e3a26067d0e6f9380a8b8bbb2bd05fa1
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
2023-04-26 17:01:51 +00:00
Suren Baghdasaryan
71c7092b68 ANDROID: Revert "mm: remove cleancache"
This reverts commit 0a4ee51818.

Conflicts:
	Documentation/mm/cleancache.rst
	Documentation/vm/index.rst
	arch/arm/configs/bcm2835_defconfig
	arch/arm/configs/qcom_defconfig
	arch/m68k/configs/amiga_defconfig
	arch/m68k/configs/apollo_defconfig
	arch/m68k/configs/atari_defconfig
	arch/m68k/configs/bvme6000_defconfig
	arch/m68k/configs/hp300_defconfig
	arch/m68k/configs/mac_defconfig
	arch/m68k/configs/multi_defconfig
	arch/m68k/configs/mvme147_defconfig
	arch/m68k/configs/mvme16x_defconfig
	arch/m68k/configs/q40_defconfig
	arch/m68k/configs/sun3_defconfig
	arch/m68k/configs/sun3x_defconfig
	arch/s390/configs/debug_defconfig
	arch/s390/configs/defconfig
	fs/f2fs/data.c
	fs/mpage.c

1. Skip documentation which was refactored.
2. Skip defconfigs unused in Android.
3. Replaced deprecated __submit_bio() with f2fs_submit_read_bio()
4. Replaced PageUptodate() with folio_test_uptodate()
5. Replaced SetPageUptodate() with folio_mark_uptodate()
6. Changed cleancache_get_page() call to use folio->page

Bug: 271544708
Change-Id: I93359509f7799de72f31b002a2539565d1bda9d6
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
2023-04-26 17:01:50 +00:00
T.J. Mercier
31d4df4302 ANDROID: dma-buf: heaps: dmabuf page pool spinlock should be spinlock_t
Address checkpatch warning:
WARNING: struct spinlock should be spinlock_t
+	struct spinlock lock;

Fixes: 2977891dfd ("ANDROID: dma-buf: heaps: replace mutex lock with spinlock")
Bug: 275698445
Change-Id: I6f2fc7c5ec4bc56a43e8fa738577cb4b64cfcb3e
Signed-off-by: T.J. Mercier <tjmercier@google.com>
2023-04-26 17:01:50 +00:00
T.J. Mercier
a3f0a1011d ANDROID: GKI: Update db845c symbol list for dmabuf_page_pool_get_size
Update symbol list after making the DMA-BUF heap page-pool helper

Bug: 275698445
Change-Id: Ic063172de9c81a3f7fcd9c3f8a07a81ddd1a6d8c
Signed-off-by: T.J. Mercier <tjmercier@google.com>
2023-04-26 17:01:50 +00:00
T.J. Mercier
b1307a821a ANDROID: GKI: Update virtual_device symbol list for dmabuf_page_pool_get_size
Update symbol list after making the DMA-BUF heap page-pool helper
library built-in.

Bug: 275698445
Change-Id: If06ccb4c916da03a9b6e1a05305089ca7ab9514d
Signed-off-by: T.J. Mercier <tjmercier@google.com>
2023-04-26 17:01:50 +00:00
T.J. Mercier
10cd7caf4a ANDROID: dma-heap: Let system heap report total pool size
This information will be exposed as part of Android Bugreport[1].

[1]: https://android-review.googlesource.com/q/topic:%22b%252F167709539%22+(status:open%20OR%20status:merged)

Bug: 167709539
Bug: 275698445
Change-Id: I5b810bd18a495fe8e7f4907c047917ba4718796d
Signed-off-by: T.J. Mercier <tjmercier@google.com>
2023-04-26 17:01:50 +00:00
Hridya Valsaraju
de525dc0a6 ANDROID: dma-buf: heaps: Add a sysfs file to report total pool size.
In order to help with memory accounting, expose the total pool size of
all DMA-BUF heaps at /sys/kernel/dma_heap/total_pools_kb.

This information will be exposed as part of Android Bugreport[1].

[1]: https://android-review.googlesource.com/q/topic:%22b%252F167709539%22+(status:open%20OR%20status:merged)

Bug: 167709539
Bug: 275698445
Change-Id: I6a1b52517e73103122690f6567f4f295db9ca1ad
Signed-off-by: Hridya Valsaraju <hridya@google.com>
Signed-off-by: T.J. Mercier <tjmercier@google.com>
2023-04-26 17:01:50 +00:00
Bart Van Assche
f54a58c7d1 ANDROID: block: Prepare for preserving the zoned write order
This patch does not change any functionality. This patch is a subset of
the following patch that is expected to be merged upstream soon:
https://lore.kernel.org/linux-block/20230407235822.1672286-3-bvanassche@acm.org/

Bug: 275581839
Bug: 277112517
Change-Id: I717d1c78233b92fd18297c81ef15335684da5d54
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2023-04-26 17:00:50 +00:00
Junki Min
16107fbbff ANDROID: Update symbol list for Exynos SoC
6 function symbol(s) added
  'struct scsi_device* __scsi_device_lookup_by_target(struct scsi_target*, u64)'
  'void blk_crypto_reprogram_all_keys(struct blk_crypto_profile*)'
  'int cpufreq_unregister_notifier(struct notifier_block*, unsigned int)'
  'int i3c_master_defslvs_locked(struct i3c_master_controller*)'
  'int is_dma_buf_file(struct file*)'
  'bool printk_timed_ratelimit(unsigned long*, unsigned int)'

Bug: 278466304
Change-Id: I462748d99cb45ffaa56e6f09ca58379c65a7e4a8
Signed-off-by: Junki Min <joonki.min@samsung.com>
2023-04-26 16:17:31 +00:00
Greg Kroah-Hartman
55e4f0c551 This is the 6.1.25 stable release
-----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCAAdFiEEZH8oZUiU471FcZm+ONu9yGCSaT4FAmRBFW0ACgkQONu9yGCS
 aT7Jew//Ytw9+JQ71LT1TuJnQ1GayJOL1BW5hgxoYgnBFasWDwsGA9rzHs6KHqHb
 0Vjk7MX7VZB+6zWakOxY5CFVM33J4fS7wY8WE2bj8X3QQhD/J0HQDMdELvSBi3qF
 7xI6sghEQEwOuwAj2+CBqm/q7rA5FTnO1QgJuk/AKJ6PHGRiQeZ7q1zGpFvSaj7S
 cyKvY99RsjnUN+PYk4LE2+u/6DVCqiWYVDQrdjalb9zsrXg4+nmPH6ZJzZX8+bbM
 eM0xAR675V8TXqDi+8bj7tWmiS52XyjYF3Q/bu9BmU67DqslH9FFyVQxhgTHUZpN
 qWXkojEU2djIc3qt7T/bpZS/vD8Kg3Px1CgyIRN8Y5SlZfhZyqVdTZ4AQCtJuLQJ
 wDIdQCLlGzzDNFvbD+LdfJSjZt7Ig1sM/HwtPZhUA9yF0FN1XV3dcESzCOeI0/S7
 ohRh8cs1sidnxrbvVwiVNENSqbJD7G9/9vVjIfyfcnt57q+fs6xCBhpOyNoVOp74
 I5i6ALMcVZoAB50vDjnoGZsSRe9W2AmOV6UMIkVCvRCWYFqBpgVftMTAACNyljni
 UlXmO7aDQj+nbHD/auclFtU02oHQbk62FSrwoWMFS090zWztQqUhgRY7Qnl13yCM
 poEvrKlskXhvunsNtdVmI5O3N2GANWKgGwkyFIiXvgxKkw1qpUo=
 =zeN9
 -----END PGP SIGNATURE-----

Merge 6.1.25 into android14-6.1

Changes in 6.1.25
	Revert "pinctrl: amd: Disable and mask interrupts on resume"
	drm/amd/display: Pass the right info to drm_dp_remove_payload
	ALSA: emu10k1: fix capture interrupt handler unlinking
	ALSA: hda/sigmatel: add pin overrides for Intel DP45SG motherboard
	ALSA: i2c/cs8427: fix iec958 mixer control deactivation
	ALSA: hda: patch_realtek: add quirk for Asus N7601ZM
	ALSA: hda/realtek: Add quirks for Lenovo Z13/Z16 Gen2
	ALSA: firewire-tascam: add missing unwind goto in snd_tscm_stream_start_duplex()
	ALSA: emu10k1: don't create old pass-through playback device on Audigy
	ALSA: hda/sigmatel: fix S/PDIF out on Intel D*45* motherboards
	ALSA: hda/hdmi: disable KAE for Intel DG2
	Bluetooth: L2CAP: Fix use-after-free in l2cap_disconnect_{req,rsp}
	Bluetooth: Fix race condition in hidp_session_thread
	bluetooth: btbcm: Fix logic error in forming the board name.
	Bluetooth: Free potentially unfreed SCO connection
	Bluetooth: hci_conn: Fix possible UAF
	btrfs: restore the thread_pool= behavior in remount for the end I/O workqueues
	btrfs: fix fast csum implementation detection
	fbmem: Reject FB_ACTIVATE_KD_TEXT from userspace
	mtdblock: tolerate corrected bit-flips
	mtd: rawnand: meson: fix bitmask for length in command word
	mtd: rawnand: stm32_fmc2: remove unsupported EDO mode
	mtd: rawnand: stm32_fmc2: use timings.mode instead of checking tRC_min
	KVM: arm64: PMU: Restore the guest's EL0 event counting after migration
	fbcon: Fix error paths in set_con2fb_map
	fbcon: set_con2fb_map needs to set con2fb_map!
	drm/i915/dsi: fix DSS CTL register offsets for TGL+
	clk: sprd: set max_register according to mapping range
	RDMA/irdma: Do not generate SW completions for NOPs
	RDMA/irdma: Fix memory leak of PBLE objects
	RDMA/irdma: Increase iWARP CM default rexmit count
	RDMA/irdma: Add ipv4 check to irdma_find_listener()
	IB/mlx5: Add support for 400G_8X lane speed
	RDMA/erdma: Update default EQ depth to 4096 and max_send_wr to 8192
	RDMA/erdma: Inline mtt entries into WQE if supported
	RDMA/erdma: Defer probing if netdevice can not be found
	clk: rs9: Fix suspend/resume
	RDMA/cma: Allow UD qp_type to join multicast only
	bpf: tcp: Use sock_gen_put instead of sock_put in bpf_iter_tcp
	LoongArch, bpf: Fix jit to skip speculation barrier opcode
	dmaengine: apple-admac: Handle 'global' interrupt flags
	dmaengine: apple-admac: Set src_addr_widths capability
	dmaengine: apple-admac: Fix 'current_tx' not getting freed
	9p/xen : Fix use after free bug in xen_9pfs_front_remove due to race condition
	bpf, arm64: Fixed a BTI error on returning to patched function
	KVM: arm64: Initialise hypervisor copies of host symbols unconditionally
	KVM: arm64: Advertise ID_AA64PFR0_EL1.CSV2/3 to protected VMs
	niu: Fix missing unwind goto in niu_alloc_channels()
	tcp: restrict net.ipv4.tcp_app_win
	bonding: fix ns validation on backup slaves
	iavf: refactor VLAN filter states
	iavf: remove active_cvlans and active_svlans bitmaps
	net: openvswitch: fix race on port output
	Bluetooth: hci_conn: Fix not cleaning up on LE Connection failure
	Bluetooth: Fix printing errors if LE Connection times out
	Bluetooth: SCO: Fix possible circular locking dependency sco_sock_getsockopt
	Bluetooth: Set ISO Data Path on broadcast sink
	drm/armada: Fix a potential double free in an error handling path
	qlcnic: check pci_reset_function result
	net: wwan: iosm: Fix error handling path in ipc_pcie_probe()
	cgroup,freezer: hold cpu_hotplug_lock before freezer_mutex
	net: qrtr: Fix an uninit variable access bug in qrtr_tx_resume()
	sctp: fix a potential overflow in sctp_ifwdtsn_skip
	RDMA/core: Fix GID entry ref leak when create_ah fails
	selftests: openvswitch: adjust datapath NL message declaration
	udp6: fix potential access to stale information
	net: macb: fix a memory corruption in extended buffer descriptor mode
	skbuff: Fix a race between coalescing and releasing SKBs
	libbpf: Fix single-line struct definition output in btf_dump
	ARM: 9290/1: uaccess: Fix KASAN false-positives
	ARM: dts: qcom: apq8026-lg-lenok: add missing reserved memory
	power: supply: rk817: Fix unsigned comparison with less than zero
	power: supply: cros_usbpd: reclassify "default case!" as debug
	power: supply: axp288_fuel_gauge: Added check for negative values
	selftests/bpf: Fix progs/find_vma_fail1.c build error.
	wifi: mwifiex: mark OF related data as maybe unused
	i2c: imx-lpi2c: clean rx/tx buffers upon new message
	i2c: hisi: Avoid redundant interrupts
	efi: sysfb_efi: Add quirk for Lenovo Yoga Book X91F/L
	block: ublk_drv: mark device as LIVE before adding disk
	ACPI: video: Add backlight=native DMI quirk for Acer Aspire 3830TG
	drm: panel-orientation-quirks: Add quirk for Lenovo Yoga Book X90F
	hwmon: (peci/cputemp) Fix miscalculated DTS for SKX
	hwmon: (xgene) Fix ioremap and memremap leak
	verify_pefile: relax wrapper length check
	asymmetric_keys: log on fatal failures in PE/pkcs7
	nvme: send Identify with CNS 06h only to I/O controllers
	wifi: iwlwifi: mvm: fix mvmtxq->stopped handling
	wifi: iwlwifi: mvm: protect TXQ list manipulation
	drm/amdgpu: add mes resume when do gfx post soft reset
	drm/amdgpu: Force signal hw_fences that are embedded in non-sched jobs
	drm/amdgpu/gfx: set cg flags to enter/exit safe mode
	ACPI: resource: Add Medion S17413 to IRQ override quirk
	x86/hyperv: Move VMCB enlightenment definitions to hyperv-tlfs.h
	KVM: selftests: Move "struct hv_enlightenments" to x86_64/svm.h
	KVM: SVM: Add a proper field for Hyper-V VMCB enlightenments
	x86/hyperv: KVM: Rename "hv_enlightenments" to "hv_vmcb_enlightenments"
	KVM: SVM: Flush Hyper-V TLB when required
	tracing: Add trace_array_puts() to write into instance
	tracing: Have tracing_snapshot_instance_cond() write errors to the appropriate instance
	maple_tree: fix write memory barrier of nodes once dead for RCU mode
	ksmbd: avoid out of bounds access in decode_preauth_ctxt()
	riscv: add icache flush for nommu sigreturn trampoline
	HID: intel-ish-hid: Fix kernel panic during warm reset
	net: sfp: initialize sfp->i2c_block_size at sfp allocation
	net: phy: nxp-c45-tja11xx: add remove callback
	net: phy: nxp-c45-tja11xx: fix unsigned long multiplication overflow
	scsi: ses: Handle enclosure with just a primary component gracefully
	x86/PCI: Add quirk for AMD XHCI controller that loses MSI-X state in D3hot
	cgroup: fix display of forceidle time at root
	cgroup/cpuset: Fix partition root's cpuset.cpus update bug
	cgroup/cpuset: Wake up cpuset_attach_wq tasks in cpuset_cancel_attach()
	drm/amd/pm: correct SMU13.0.7 pstate profiling clock settings
	drm/amd/pm: correct SMU13.0.7 max shader clock reporting
	mptcp: use mptcp_schedule_work instead of open-coding it
	mptcp: stricter state check in mptcp_worker
	ubi: Fix failure attaching when vid_hdr offset equals to (sub)page size
	ubi: Fix deadlock caused by recursively holding work_sem
	i2c: mchp-pci1xxxx: Update Timing registers
	powerpc/papr_scm: Update the NUMA distance table for the target node
	sched/fair: Fix imbalance overflow
	x86/rtc: Remove __init for runtime functions
	i2c: ocores: generate stop condition after timeout in polling mode
	cifs: fix negotiate context parsing
	nvme-pci: mark Lexar NM760 as IGNORE_DEV_SUBNQN
	nvme-pci: add NVME_QUIRK_BOGUS_NID for T-FORCE Z330 SSD
	cgroup/cpuset: Skip spread flags update on v2
	cgroup/cpuset: Make cpuset_fork() handle CLONE_INTO_CGROUP properly
	cgroup/cpuset: Add cpuset_can_fork() and cpuset_cancel_fork() methods
	Linux 6.1.25

Change-Id: Ib4d2c49ea9bacb8d8dbdb7b3a4eecce937016427
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2023-04-26 13:13:19 +00:00
Zhipeng Wang
e6092a18f6 ANDROID: ABI: Update symbol list for imx
3 function symbol(s) added
  'int mipi_dsi_dcs_get_display_brightness(struct mipi_dsi_device*, u16*)'
  'struct irq_domain* platform_msi_create_irq_domain(struct fwnode_handle*, struct msi_domain_info*, struct irq_domain*)'
  'int snd_soc_dapm_nc_pin(struct snd_soc_dapm_context*, const char*)'

Bug: 277791334
Change-Id: Ied360a3b057971dd5fa2e4faa14fba9d571b2259
Signed-off-by: Zhipeng Wang <zhipeng.wang_1@nxp.com>
2023-04-26 12:05:50 +00:00
Ulises Mendez Martinez
ab94b5f2e3 ANDROID: db845c: Update symbol list
The 6.1.24 release requires the addition of the symbol `strchrnul` for
the db845c target to build properly.

Bug: 279448025
Change-Id: I3643400271513fbd0bad68fca720039d3a5a98db
Signed-off-by: Ulises Mendez Martinez <umendez@google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2023-04-26 10:00:48 +00:00
Greg Kroah-Hartman
cfe9bcec4d ANDROID: preserve CRC for xhci symbols
In release 6.1.24 a new .h file was included in the xhci code, which
caused the CRCs to change as some structures changed into "real"
structures instead of anonymous definitions.  So preserve the CRCs by
commenting out the #include if GENKSYMS is being calculated.

This will be removed the next KABI break, as it shouldn't be sticking
around long.

Bug: 161946584
Fixes: 167c05646f ("xhci: also avoid the XHCI_ZERO_64B_REGS quirk with a passthrough iommu")
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: I59838b0af869d3e17fc73d72eb473190c50281fd
2023-04-26 10:00:48 +00:00
Greg Kroah-Hartman
2039635543 Revert "raw: use net_hash_mix() in hash function"
This reverts commit 53a0031217.

It breaks the current Android kernel abi.  It will be brought back at
the next KABI break update.

Bug: 161946584
Change-Id: I7fd2655234ff38dfe11a528e71c7772458a36328
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2023-04-26 10:00:48 +00:00
Greg Kroah-Hartman
cc7a00d2d6 Revert "raw: Fix NULL deref in raw_get_next()."
This reverts commit b34056bedf.

It breaks the current Android kernel abi.  It will be brought back at
the next KABI break update.

Bug: 161946584
Change-Id: I3664de0db15ba207c8b35530840095083d376dd1
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2023-04-26 10:00:48 +00:00
Greg Kroah-Hartman
a3a763fb37 Revert "pwm: Make .get_state() callback return an error code"
This reverts commit 547cc8dae2.

It breaks the current Android kernel abi.  It will be brought back at
the next KABI break update.

Bug: 161946584
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: I3ba5ae5485e8cfb709ad23885053a3db8112913b
2023-04-26 10:00:48 +00:00
Greg Kroah-Hartman
6996d13954 Revert "pwm: hibvt: Explicitly set .polarity in .get_state()"
This reverts commit 98ba763cc9.

It breaks the current Android kernel abi.  It will be brought back at
the next KABI break update.

Bug: 161946584
Change-Id: Ic6c1286d261b9a502caeb8bac2244cd6037f291e
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2023-04-26 10:00:48 +00:00
Greg Kroah-Hartman
b8301c2638 Revert "pwm: cros-ec: Explicitly set .polarity in .get_state()"
This reverts commit 8a3a6a0aca.

It breaks the current Android kernel abi.  It will be brought back at
the next KABI break update.

Bug: 161946584
Change-Id: I7126fe19db71c01814281eb6518f11ededccc3e3
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2023-04-26 10:00:48 +00:00
Greg Kroah-Hartman
301169bd8c Revert "pwm: iqs620a: Explicitly set .polarity in .get_state()"
This reverts commit 116a17f977.

It breaks the current Android kernel abi.  It will be brought back at
the next KABI break update.

Bug: 161946584
Change-Id: Ie8472f722dea420d2a1ee271b30e650b47f97579
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2023-04-26 10:00:48 +00:00
Greg Kroah-Hartman
46e1414454 Revert "pwm: sprd: Explicitly set .polarity in .get_state()"
This reverts commit c6af1a3ae7.

It breaks the current Android kernel abi.  It will be brought back at
the next KABI break update.

Bug: 161946584
Change-Id: I3d34dbad550f7b142403332971783c9246c0ae6f
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2023-04-26 10:00:48 +00:00
Greg Kroah-Hartman
af88eb49be Revert "pwm: meson: Explicitly set .polarity in .get_state()"
This reverts commit 6f62d2d396.

It breaks the current Android kernel abi.  It will be brought back at
the next KABI break update.

Bug: 161946584
Change-Id: I13e1e6e04d130a364e3c7294daceb50c8ed31957
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2023-04-26 10:00:48 +00:00
Greg Kroah-Hartman
9d29ba9c30 Revert "KVM: arm64: PMU: Align chained counter implementation with architecture pseudocode"
This reverts commit eb3df96102.

It breaks the current Android kernel abi.  It will be brought back at
the next KABI break update.

Bug: 161946584
Change-Id: Icbc6a902a085e81fb1ba72666cae32527c2479cc
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2023-04-26 10:00:48 +00:00
Greg Kroah-Hartman
7ddb50fff2 Revert "KVM: arm64: PMU: Distinguish between 64bit counter and 64bit overflow"
This reverts commit 508d71a677.

It breaks the current Android kernel abi.  It will be brought back at
the next KABI break update.

Bug: 161946584
Change-Id: I1d646f16b36447aad59225c7a8a5e7bab1ca33f8
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2023-04-26 10:00:48 +00:00
Greg Kroah-Hartman
a8fa816c4d Revert "KVM: arm64: PMU: Sanitise PMCR_EL0.LP on first vcpu run"
This reverts commit 3d8c8a9ad5.

It breaks the current Android kernel abi.  It will be brought back at
the next KABI break update.

Bug: 161946584
Change-Id: I258e499d86f5f145e48369b856ee3c5df79d7283
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2023-04-26 10:00:48 +00:00
Greg Kroah-Hartman
067f7ca9fd Revert "KVM: arm64: PMU: Don't save PMCR_EL0.{C,P} for the vCPU"
This reverts commit 74347b99d4.

It breaks the current Android kernel abi.  It will be brought back at
the next KABI break update.

Bug: 161946584
Change-Id: Ic2ad434700f477dbecc2fd0f66275c4b3fb11406
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2023-04-26 10:00:48 +00:00
Matthias Männich
6c0621608d Merge "Merge 6.1.24 into android14-6.1" into android14-6.1 2023-04-26 10:00:48 +00:00
Marc Zyngier
ef8b5cddf1 BACKPORT: KVM: arm64: Make vcpu flag updates non-preemptible
Per-vcpu flags are updated using a non-atomic RMW operation.
Which means it is possible to get preempted between the read and
write operations.

Another interesting thing to note is that preemption also updates
flags, as we have some flag manipulation in both the load and put
operations.

It is thus possible to lose information communicated by either
load or put, as the preempted flag update will overwrite the flags
when the thread is resumed. This is specially critical if either
load or put has stored information which depends on the physical
CPU the vcpu runs on.

This results in really elusive bugs, and kudos must be given to
Mostafa for the long hours of debugging, and finally spotting
the problem.

Fix it by disabling preemption during the RMW operation, which
ensures that the state stays consistent. Also upgrade vcpu_get_flag
path to use READ_ONCE() to make sure the field is always atomically
accessed.

Fixes: e87abb73e5 ("KVM: arm64: Add helpers to manipulate vcpu flags among a set")
Reported-by: Mostafa Saleh <smostafa@google.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/r/20230418125737.2327972-1-maz@kernel.org
Signed-off-by: Oliver Upton <oliver.upton@linux.dev>
(cherry picked from commit 35dcb3ac663a16510afc27ba2725d70c15e012a5)
[willdeacon@: also update __vcpu_copy_flag()]
Signed-off-by: Will Deacon <willdeacon@google.com>
Bug: 278750073
Change-Id: I63058ff1494e4092dab9d29cb66c295dd8fe9d86
2023-04-26 07:36:22 +00:00
Fuad Tabba
73e072e857 BACKPORT: KVM: arm64: Advertise ID_AA64PFR0_EL1.CSV2/3 to protected VMs
The existing pKVM code attempts to advertise CSV2/3 using values
initialized to 0, but never set. To advertise CSV2/3 to protected
guests, pass the CSV2/3 values to hyp when initializing hyp's
view of guests' ID_AA64PFR0_EL1.

Similar to non-protected KVM, these are system-wide, rather than
per cpu, for simplicity.

Fixes: 6c30bfb18d ("KVM: arm64: Add handlers for protected VM System Registers")
Signed-off-by: Fuad Tabba <tabba@google.com>
Link: https://lore.kernel.org/r/20230404152321.413064-1-tabba@google.com
Signed-off-by: Oliver Upton <oliver.upton@linux.dev>
(cherry picked from commit e81625218bf7986ba1351a98c43d346b15601d26)
[willdeacon@: fixed_config.h has been moved into kvm_pkvm.h]
Signed-off-by: Will Deacon <willdeacon@google.com>
Bug: 278750073
Change-Id: I27821a28bcde0dbce3d45bac6cf4de20dcf299f9
2023-04-26 07:36:22 +00:00
Wesley Cheng
15e99e4bfa FROMGIT: usb: dwc3: gadget: Refactor EP0 forced stall/restart into a separate API
Several sequences utilize the same routine for forcing the control endpoint
back into the SETUP phase.  This is required, because those operations need
to ensure that EP0 is back in the default state.

Acked-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
Signed-off-by: Wesley Cheng <quic_wcheng@quicinc.com>
Link: https://lore.kernel.org/r/20230420212759.29429-3-quic_wcheng@quicinc.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Bug: 277690231
Change-Id: I9b468a021b04e765b074d9b48f46c6e828022705
(cherry picked from commit 8f40fc0808137c157dd408d2632e63bfca2aecdb https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git usb-next)
Signed-off-by: Wesley Cheng <quic_wcheng@quicinc.com>
2023-04-25 16:56:22 +00:00
Chun-Hung Wu
df1c3fcbc9 ANDROID: Update symbol list for mtk
363 function symbol(s) added
  '__arm_smccc_hvc'
  'int __device_reset(struct device*, bool)'
  'int __iio_device_register(struct iio_dev*, struct module*)'
  'void* __kmalloc_node(size_t, gfp_t, int)'
  'struct media_link* __media_entity_next_link(struct media_entity*, struct media_link*, unsigned long)'
  'void __napi_schedule_irqoff(struct napi_struct*)'
  'void* __netdev_alloc_frag_align(unsigned int, unsigned int)'
  'int __platform_register_drivers(struct platform_driver* const*, unsigned int, struct module*)'
  'void __put_cred(struct cred*)'
  'int __traceiter_android_rvh_find_energy_efficient_cpu(void*, struct task_struct*, int, int, int*)'
  'int __traceiter_android_rvh_find_new_ilb(void*, struct cpumask*, int*)'
  'int __traceiter_android_vh_alter_futex_plist_add(void*, struct plist_node*, struct plist_head*, bool*)'
  'int __traceiter_android_vh_alter_rwsem_list_add(void*, struct rwsem_waiter*, struct rw_semaphore*, bool*)'
  'int __traceiter_android_vh_arch_set_freq_scale(void*, const struct cpumask*, unsigned long, unsigned long, unsigned long*)'
  'int __traceiter_android_vh_cgroup_attach(void*, struct cgroup_subsys*, struct cgroup_taskset*)'
  'int __traceiter_android_vh_cgroup_set_task(void*, int, struct task_struct*)'
  'int __traceiter_android_vh_iommu_iovad_alloc_iova(void*, struct device*, struct iova_domain*, dma_addr_t, size_t)'
  'int __traceiter_android_vh_iommu_iovad_free_iova(void*, struct iova_domain*, dma_addr_t, size_t)'
  'int __traceiter_android_vh_rwsem_init(void*, struct rw_semaphore*)'
  'int __traceiter_android_vh_rwsem_wake(void*, struct rw_semaphore*)'
  'int __traceiter_android_vh_rwsem_write_finished(void*, struct rw_semaphore*)'
  'int __traceiter_android_vh_sched_pelt_multiplier(void*, unsigned int, unsigned int, int*)'
  'int __traceiter_android_vh_set_wake_flags(void*, int*, unsigned int*)'
  'int __traceiter_android_vh_syscall_prctl_finished(void*, int, struct task_struct*)'
  'int __traceiter_cpu_frequency(void*, unsigned int, unsigned int)'
  'int __traceiter_pelt_rt_tp(void*, struct rq*)'
  'int __traceiter_pelt_se_tp(void*, struct sched_entity*)'
  'int __traceiter_sched_update_nr_running_tp(void*, struct rq*, int)'
  'int __traceiter_task_newtask(void*, struct task_struct*, unsigned long)'
  'int __v4l2_ctrl_s_ctrl_compound(struct v4l2_ctrl*, enum v4l2_ctrl_type, const void*)'
  'const void* __v4l2_find_nearest_size(const void*, size_t, size_t, size_t, size_t, s32, s32)'
  'void __write_overflow_field(size_t, size_t)'
  'int _raw_read_trylock(rwlock_t*)'
  'enum arm_smccc_conduit arm_smccc_1_1_get_conduit()'
  'arm_smccc_1_2_hvc'
  'arm_smccc_1_2_smc'
  'u32 arm_smccc_get_version()'
  'void bio_init(struct bio*, struct block_device*, struct bio_vec*, unsigned short, blk_opf_t)'
  'int bitmap_find_free_region(unsigned long*, unsigned int, int)'
  'u32 blk_mq_unique_tag(struct request*)'
  'void clk_bulk_put(int, struct clk_bulk_data*)'
  'int clk_hw_get_parent_index(struct clk_hw*)'
  'int clk_hw_set_parent(struct clk_hw*, struct clk_hw*)'
  'struct clk* clk_register_composite(struct device*, const char*, const char* const*, int, struct clk_hw*, const struct clk_ops*, struct clk_hw*, const struct clk_ops*, struct clk_hw*, const struct clk_ops*, unsigned long)'
  'struct clk* clk_register_divider_table(struct device*, const char*, const char*, unsigned long, void*, u8, u8, u8, const struct clk_div_table*, spinlock_t*)'
  'int component_add_typed(struct device*, const struct component_ops*, int)'
  'void component_match_add_typed(struct device*, struct component_match**, int(*)(struct device*, int, void*), void*)'
  'void cpu_hotplug_disable()'
  'void cpu_hotplug_enable()'
  'void cpufreq_add_update_util_hook(int, struct update_util_data*, void(*)(struct update_util_data*, u64, unsigned int))'
  'void cpufreq_remove_update_util_hook(int)'
  'bool cpufreq_this_cpu_can_update(struct cpufreq_policy*)'
  'void cpufreq_update_limits(unsigned int)'
  'void cpuidle_driver_state_disabled(struct cpuidle_driver*, int, bool)'
  'struct cpuidle_driver* cpuidle_get_driver()'
  'void cpuidle_pause_and_lock()'
  'void cpuidle_resume_and_unlock()'
  'void ct_idle_enter()'
  'void ct_idle_exit()'
  'int dapm_clock_event(struct snd_soc_dapm_widget*, struct snd_kcontrol*, int)'
  'unsigned int dapm_kcontrol_get_value(const struct snd_kcontrol*)'
  'void debugfs_create_regset32(const char*, umode_t, struct dentry*, struct debugfs_regset32*)'
  'struct device* dev_pm_domain_attach_by_id(struct device*, unsigned int)'
  'struct opp_table* dev_pm_opp_get_opp_table(struct device*)'
  'int dev_pm_opp_of_add_table_indexed(struct device*, int)'
  'void dev_pm_opp_put_opp_table(struct opp_table*)'
  'int dev_pm_set_dedicated_wake_irq_reverse(struct device*, int)'
  'struct devfreq* devfreq_get_devfreq_by_phandle(struct device*, const char*, int)'
  'int device_attach(struct device*)'
  'int device_match_any(struct device*, const void*)'
  'struct regmap* device_node_to_regmap(struct device_node*)'
  'void device_set_of_node_from_dev(struct device*, const struct device*)'
  'ssize_t device_show_bool(struct device*, struct device_attribute*, char*)'
  'ssize_t device_store_bool(struct device*, struct device_attribute*, const char*, size_t)'
  'int devm_devfreq_register_notifier(struct device*, struct devfreq*, struct notifier_block*, unsigned int)'
  'void devm_devfreq_remove_device(struct device*, struct devfreq*)'
  'void devm_devfreq_unregister_notifier(struct device*, struct devfreq*, struct notifier_block*, unsigned int)'
  'int devm_extcon_register_notifier(struct device*, struct extcon_dev*, unsigned int, struct notifier_block*)'
  'struct iio_channel* devm_iio_channel_get_all(struct device*)'
  'void devm_led_classdev_unregister(struct device*, struct led_classdev*)'
  'struct phy* devm_of_phy_get_by_index(struct device*, struct device_node*, int)'
  'struct phy* devm_phy_optional_get(struct device*, const char*)'
  'struct power_supply* devm_power_supply_get_by_phandle(struct device*, const char*)'
  'struct rc_dev* devm_rc_allocate_device(struct device*, enum rc_driver_type)'
  'int devm_rc_register_device(struct device*, struct rc_dev*)'
  'int devm_regmap_field_bulk_alloc(struct device*, struct regmap*, struct regmap_field**, const struct reg_field*, int)'
  'void devm_regulator_unregister_notifier(struct regulator*, struct notifier_block*)'
  'int devm_rtc_nvmem_register(struct rtc_device*, struct nvmem_config*)'
  'void devm_thermal_of_zone_unregister(struct device*, struct thermal_zone_device*)'
  'int dma_heap_bufferfd_alloc(struct dma_heap*, size_t, unsigned int, unsigned int)'
  'struct dma_fence* dma_resv_iter_first_unlocked(struct dma_resv_iter*)'
  'struct dma_fence* dma_resv_iter_next_unlocked(struct dma_resv_iter*)'
  'void dma_run_dependencies(struct dma_async_tx_descriptor*)'
  'int down_killable(struct semaphore*)'
  'int down_read_killable(struct rw_semaphore*)'
  'int down_write_killable(struct rw_semaphore*)'
  'int driver_create_file(struct device_driver*, const struct driver_attribute*)'
  'void driver_remove_file(struct device_driver*, const struct driver_attribute*)'
  'int drm_atomic_helper_resume(struct drm_device*, struct drm_atomic_state*)'
  'struct drm_atomic_state* drm_atomic_helper_suspend(struct drm_device*)'
  'int drm_edid_to_sad(const struct edid*, struct cea_sad**)'
  'void drm_framebuffer_cleanup(struct drm_framebuffer*)'
  'int drm_mode_crtc_set_gamma_size(struct drm_crtc*, int)'
  'int em_dev_register_perf_domain(struct device*, unsigned int, struct em_data_callback*, cpumask_t*, bool)'
  'int eth_header(struct sk_buff*, struct net_device*, unsigned short, const void*, const void*, unsigned int)'
  'int eth_header_cache(const struct neighbour*, struct hh_cache*, __be16)'
  'void eth_header_cache_update(struct hh_cache*, const struct net_device*, const unsigned char*)'
  'void eventfd_ctx_do_read(struct eventfd_ctx*, __u64*)'
  'char* file_path(struct file*, char*, int)'
  'int follow_pfn(struct vm_area_struct*, unsigned long, unsigned long*)'
  'void frame_vector_to_pfns(struct frame_vector*)'
  'int fsg_common_create_luns(struct fsg_common*, struct fsg_config*)'
  'int fsg_common_set_cdev(struct fsg_common*, struct usb_composite_dev*, bool)'
  'void fsg_common_set_inquiry_string(struct fsg_common*, const char*, const char*)'
  'void fsg_common_set_sysfs(struct fsg_common*, bool)'
  'void fsg_config_from_params(struct fsg_config*, const struct fsg_module_parameters*, unsigned int)'
  'bool fwnode_device_is_available(const struct fwnode_handle*)'
  'struct fwnode_handle* fwnode_graph_get_next_endpoint(const struct fwnode_handle*, struct fwnode_handle*)'
  'struct fwnode_handle* fwnode_graph_get_port_parent(const struct fwnode_handle*)'
  'struct fwnode_handle* fwnode_graph_get_remote_endpoint(const struct fwnode_handle*)'
  'struct fwnode_handle* fwnode_graph_get_remote_port_parent(const struct fwnode_handle*)'
  'int fwnode_graph_parse_endpoint(const struct fwnode_handle*, struct fwnode_endpoint*)'
  'int fwnode_property_get_reference_args(const struct fwnode_handle*, const char*, const char*, unsigned int, unsigned int, struct fwnode_reference_args*)'
  'int fwnode_property_read_u64_array(const struct fwnode_handle*, const char*, u64*, size_t)'
  'struct typec_mux* fwnode_typec_mux_get(struct fwnode_handle*, const struct typec_altmode_desc*)'
  'void* gen_pool_dma_zalloc(struct gen_pool*, size_t, dma_addr_t*)'
  'void gen_pool_for_each_chunk(struct gen_pool*, void(*)(struct gen_pool*, struct gen_pool_chunk*, void*), void*)'
  'int get_kernel_pages(const struct kvec*, int, int, struct page**)'
  'const struct cred* get_task_cred(struct task_struct*)'
  'long get_user_pages_remote(struct mm_struct*, unsigned long, unsigned long, unsigned int, struct page**, struct vm_area_struct**, int*)'
  'kvm_pfn_t gfn_to_pfn_memslot(const struct kvm_memory_slot*, gfn_t)'
  'void icc_node_del(struct icc_node*)'
  'void icc_node_destroy(int)'
  'struct iio_poll_func* iio_alloc_pollfunc(irqreturn_t(*)(int, void*), irqreturn_t(*)(int, void*), int, struct iio_dev*, const char*, ...)'
  'void iio_dealloc_pollfunc(struct iio_poll_func*)'
  'int iio_device_id(struct iio_dev*)'
  's64 iio_get_time_ns(const struct iio_dev*)'
  'int iio_read_channel_attribute(struct iio_channel*, int*, int*, enum iio_chan_info_enum)'
  'int iio_read_channel_raw(struct iio_channel*, int*)'
  'void iio_trigger_notify_done(struct iio_trigger*)'
  'void input_reset_device(struct input_dev*)'
  'int irq_domain_xlate_onetwocell(struct irq_domain*, struct device_node*, const u32*, unsigned int, unsigned long*, unsigned int*)'
  'int irq_set_chip(unsigned int, const struct irq_chip*)'
  'void irq_work_run()'
  'int iterate_dir(struct file*, struct dir_context*)'
  'u64 jiffies64_to_nsecs(u64)'
  'void kernel_sigaction(int, __sighandler_t)'
  'int kernfs_path_from_node(struct kernfs_node*, struct kernfs_node*, char*, size_t)'
  'const char* kmsg_dump_reason_str(enum kmsg_dump_reason)'
  'void ksys_sync_helper()'
  'int led_get_flash_fault(struct led_classdev_flash*, u32*)'
  'enum led_default_state led_init_default_state_get(struct fwnode_handle*)'
  'int led_set_brightness_sync(struct led_classdev*, unsigned int)'
  'int led_set_flash_brightness(struct led_classdev_flash*, u32)'
  'int led_set_flash_timeout(struct led_classdev_flash*, u32)'
  'void led_sysfs_disable(struct led_classdev*)'
  'void led_sysfs_enable(struct led_classdev*)'
  'void led_trigger_remove(struct led_classdev*)'
  'int led_update_brightness(struct led_classdev*)'
  'int led_update_flash_brightness(struct led_classdev_flash*)'
  'void linear_range_get_selector_within(const struct linear_range*, unsigned int, unsigned int*)'
  'int linear_range_get_value(const struct linear_range*, unsigned int, unsigned int*)'
  'int match_hex(substring_t*, int*)'
  'int match_int(substring_t*, int*)'
  'int match_token(char*, const struct match_token*, substring_t*)'
  'struct media_link* media_create_ancillary_link(struct media_entity*, struct media_entity*)'
  'struct media_link* media_create_intf_link(struct media_entity*, struct media_interface*, u32)'
  'int media_create_pad_link(struct media_entity*, u16, struct media_entity*, u16, u32)'
  'struct media_intf_devnode* media_devnode_create(struct media_device*, u32, u32, u32, u32)'
  'void media_devnode_remove(struct media_intf_devnode*)'
  'struct media_pipeline* media_entity_pipeline(struct media_entity*)'
  'void media_entity_remove_links(struct media_entity*)'
  'struct media_pad* media_pad_remote_pad_first(const struct media_pad*)'
  'struct media_pad* media_pad_remote_pad_unique(const struct media_pad*)'
  'int media_pipeline_start(struct media_pad*, struct media_pipeline*)'
  'void media_pipeline_stop(struct media_pad*)'
  'struct media_request* media_request_get_by_fd(struct media_device*, int)'
  'void media_request_object_complete(struct media_request_object*)'
  'void media_request_put(struct media_request*)'
  'ssize_t mipi_dsi_dcs_write(struct mipi_dsi_device*, u8, const void*, size_t)'
  'ssize_t mipi_dsi_generic_read(struct mipi_dsi_device*, const void*, size_t, void*, size_t)'
  'time64_t mktime64(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int)'
  'bool mmc_can_gpio_cd(struct mmc_host*)'
  'int mmc_cmdq_disable(struct mmc_card*)'
  'int mmc_cmdq_enable(struct mmc_card*)'
  'void mmc_detect_change(struct mmc_host*, unsigned long)'
  'void mmc_get_card(struct mmc_card*, struct mmc_ctx*)'
  'int mmc_get_ext_csd(struct mmc_card*, u8**)'
  'int mmc_hw_reset(struct mmc_card*)'
  'void mmc_put_card(struct mmc_card*, struct mmc_ctx*)'
  'void mmc_set_data_timeout(struct mmc_data*, const struct mmc_card*)'
  'int mmc_switch(struct mmc_card*, u8, u8, u8, unsigned int)'
  'void mmc_wait_for_req(struct mmc_host*, struct mmc_request*)'
  'int mod_timer_pending(struct timer_list*, unsigned long)'
  'u64 mul_u64_u64_div_u64(u64, u64, u64)'
  'int mutex_lock_killable(struct mutex*)'
  'struct nvmem_device* nvmem_device_get(struct device*, const char*)'
  'unsigned int of_clk_get_parent_count(const struct device_node*)'
  'struct thermal_cooling_device* of_devfreq_cooling_register_power(struct device_node*, struct devfreq*, struct devfreq_cooling_power*)'
  'struct dma_chan* of_dma_xlate_by_chan_id(struct of_phandle_args*, struct of_dma*)'
  'int of_genpd_add_device(struct of_phandle_args*, struct device*)'
  'int of_get_pci_domain_nr(struct device_node*)'
  'int of_irq_to_resource_table(struct device_node*, struct resource*, int)'
  'int of_remove_property(struct device_node*, struct property*)'
  'int param_get_bool(char*, const struct kernel_param*)'
  'int param_get_charp(char*, const struct kernel_param*)'
  'int param_get_ulong(char*, const struct kernel_param*)'
  'int param_set_charp(const char*, const struct kernel_param*)'
  'int param_set_ulong(const char*, const struct kernel_param*)'
  'bool pci_ats_supported(struct pci_dev*)'
  'void pci_disable_ats(struct pci_dev*)'
  'int pci_enable_ats(struct pci_dev*, int)'
  'int pci_generic_config_read32(struct pci_bus*, unsigned int, int, int, u32*)'
  'int pci_generic_config_write32(struct pci_bus*, unsigned int, int, int, u32)'
  'void pci_lock_rescan_remove()'
  'phys_addr_t pci_pio_to_address(unsigned long)'
  'void pci_remove_root_bus(struct pci_bus*)'
  'void pci_stop_root_bus(struct pci_bus*)'
  'void pci_unlock_rescan_remove()'
  'int pcim_enable_device(struct pci_dev*)'
  'int pcim_iomap_regions(struct pci_dev*, int, const char*)'
  'void* const* pcim_iomap_table(struct pci_dev*)'
  'void pcim_iounmap_regions(struct pci_dev*, int)'
  'struct phy* phy_get(struct device*, const char*)'
  'void phy_put(struct device*, struct phy*)'
  'int pinconf_generic_parse_dt_config(struct device_node*, struct pinctrl_dev*, unsigned long**, unsigned int*)'
  'int pinctrl_gpio_direction_input(unsigned int)'
  'int pinctrl_gpio_direction_output(unsigned int)'
  'int pinctrl_utils_add_map_configs(struct pinctrl_dev*, struct pinctrl_map**, unsigned int*, unsigned int*, const char*, unsigned long*, unsigned int, enum pinctrl_map_type)'
  'int pinctrl_utils_reserve_map(struct pinctrl_dev*, struct pinctrl_map**, unsigned int*, unsigned int*, unsigned int)'
  'void platform_unregister_drivers(struct platform_driver* const*, unsigned int)'
  'int pm_genpd_add_device(struct generic_pm_domain*, struct device*)'
  'int pm_genpd_remove_device(struct device*)'
  'bool pm_suspend_default_s2idle()'
  'int power_supply_is_system_supplied()'
  'const char* pstore_type_to_name(enum pstore_type_id)'
  'int radix_tree_maybe_preload(gfp_t)'
  'struct device* rdev_get_dev(struct regulator_dev*)'
  'struct regmap* rdev_get_regmap(struct regulator_dev*)'
  'struct irq_domain* regmap_irq_get_domain(struct regmap_irq_chip_data*)'
  'int regulator_list_voltage(struct regulator*, unsigned int)'
  'int regulator_list_voltage_table(struct regulator_dev*, unsigned int)'
  'int regulator_map_voltage_iterate(struct regulator_dev*, int, int)'
  'int regulator_set_voltage_time(struct regulator*, int, int)'
  'int regulator_set_voltage_time_sel(struct regulator_dev*, unsigned int, unsigned int)'
  'int regulator_sync_voltage(struct regulator*)'
  'void release_pages(struct page**, int)'
  'int reset_controller_register(struct reset_controller_dev*)'
  'void rpmsg_destroy_ept(struct rpmsg_endpoint*)'
  'struct device* rpmsg_find_device(struct device*, struct rpmsg_channel_info*)'
  'int rpmsg_sendto(struct rpmsg_endpoint*, void*, int, u32)'
  'struct rtc_time rtc_ktime_to_tm(ktime_t)'
  'ktime_t rtc_tm_to_ktime(struct rtc_time)'
  'int scsi_execute_cmd(struct scsi_device*, const unsigned char*, blk_opf_t, void*, unsigned int, int, int, const struct scsi_exec_args*)'
  'void scsi_print_sense_hdr(const struct scsi_device*, const char*, const struct scsi_sense_hdr*)'
  'unsigned char sdio_f0_readb(struct sdio_func*, unsigned int, int*)'
  'void sdio_f0_writeb(struct sdio_func*, unsigned char, unsigned int, int*)'
  'mmc_pm_flag_t sdio_get_host_pm_caps(struct sdio_func*)'
  'u32 sdio_readl(struct sdio_func*, unsigned int, int*)'
  'int sdio_set_host_pm_flags(struct sdio_func*, mmc_pm_flag_t)'
  'void sdio_signal_irq(struct mmc_host*)'
  'void sdio_writel(struct sdio_func*, u32, unsigned int, int*)'
  'int security_file_ioctl(struct file*, unsigned int, unsigned long)'
  'int seq_open_private(struct file*, const struct seq_operations*, int)'
  'void serial8250_do_set_termios(struct uart_port*, struct ktermios*, const struct ktermios*)'
  'void serial8250_do_shutdown(struct uart_port*)'
  'int serial8250_do_startup(struct uart_port*)'
  'struct uart_8250_port* serial8250_get_port(int)'
  'int serial8250_register_8250_port(const struct uart_8250_port*)'
  'void serial8250_resume_port(int)'
  'void serial8250_rpm_get(struct uart_8250_port*)'
  'void serial8250_rpm_put(struct uart_8250_port*)'
  'void serial8250_suspend_port(int)'
  'void serial8250_unregister_port(int)'
  'size_t sg_pcopy_from_buffer(struct scatterlist*, unsigned int, const void*, size_t, off_t)'
  'size_t sg_pcopy_to_buffer(struct scatterlist*, unsigned int, void*, size_t, off_t)'
  'void skb_split(struct sk_buff*, struct sk_buff*, u32)'
  'int snd_card_add_dev_attr(struct snd_card*, const struct attribute_group*)'
  'void snd_pcm_lib_preallocate_free_for_all(struct snd_pcm*)'
  'void snd_pcm_lib_preallocate_pages_for_all(struct snd_pcm*, int, void*, size_t, size_t)'
  'int snd_soc_bytes_info_ext(struct snd_kcontrol*, struct snd_ctl_elem_info*)'
  'int snd_soc_dapm_enable_pin(struct snd_soc_dapm_context*, const char*)'
  'int snd_soc_dapm_get_pin_switch(struct snd_kcontrol*, struct snd_ctl_elem_value*)'
  'int snd_soc_dapm_info_pin_switch(struct snd_kcontrol*, struct snd_ctl_elem_info*)'
  'int snd_soc_dapm_put_pin_switch(struct snd_kcontrol*, struct snd_ctl_elem_value*)'
  'int snd_soc_poweroff(struct device*)'
  'int snd_soc_resume(struct device*)'
  'int spi_add_device(struct spi_device*)'
  'struct spi_device* spi_alloc_device(struct spi_controller*)'
  'int spi_delay_to_ns(struct spi_delay*, struct spi_transfer*)'
  'int sprint_symbol_no_offset(char*, unsigned long)'
  'int submit_bio_wait(struct bio*)'
  'struct regmap* syscon_regmap_lookup_by_compatible(const char*)'
  'struct regmap* syscon_regmap_lookup_by_phandle_optional(struct device_node*, const char*)'
  'int sysfs_merge_group(struct kobject*, const struct attribute_group*)'
  'int sysrq_toggle_support(int)'
  'void task_cputime_adjusted(struct task_struct*, u64*, u64*)'
  'int trace_set_clr_event(const char*, const char*, int)'
  'unsigned int tty_chars_in_buffer(struct tty_struct*)'
  'unsigned int tty_write_room(struct tty_struct*)'
  'void typec_mux_put(struct typec_mux*)'
  'int typec_mux_set(struct typec_mux*, struct typec_mux_state*)'
  'void typec_mux_unregister(struct typec_mux_dev*)'
  'int typec_partner_set_identity(struct typec_partner*)'
  'void typec_partner_set_pd_revision(struct typec_partner*, u16)'
  'void typec_partner_set_svdm_version(struct typec_partner*, enum usb_pd_svdm_ver)'
  'void typec_set_vconn_role(struct typec_port*, enum typec_role)'
  'unsigned int uart_get_divisor(struct uart_port*, unsigned int)'
  'void ufshcd_delay_us(unsigned long, unsigned long)'
  'int ufshcd_link_recovery(struct ufs_hba*)'
  'int ufshcd_uic_change_pwr_mode(struct ufs_hba*, u8)'
  'void unpin_user_pages(struct page**, unsigned long)'
  'int unregister_module_notifier(struct notifier_block*)'
  'int usb_add_config(struct usb_composite_dev*, struct usb_configuration*, int(*)(struct usb_configuration*))'
  'int usb_composite_probe(struct usb_composite_driver*)'
  'void usb_composite_unregister(struct usb_composite_driver*)'
  'const char* usb_ep_type_string(int)'
  'int usb_gadget_connect(struct usb_gadget*)'
  'int usb_gadget_disconnect(struct usb_gadget*)'
  'int usb_gadget_map_request(struct usb_gadget*, struct usb_request*, int)'
  'int usb_gadget_register_driver_owner(struct usb_gadget_driver*, struct module*, const char*)'
  'int usb_gadget_set_selfpowered(struct usb_gadget*)'
  'void usb_gadget_unmap_request(struct usb_gadget*, struct usb_request*, int)'
  'enum usb_dr_mode usb_get_dr_mode(struct device*)'
  'struct usb_function* usb_get_function(struct usb_function_instance*)'
  'struct usb_function_instance* usb_get_function_instance(const char*)'
  'enum usb_device_speed usb_get_maximum_speed(struct device*)'
  'enum usb_dr_mode usb_get_role_switch_default_mode(struct device*)'
  'void usb_hcd_end_port_resume(struct usb_bus*, int)'
  'irqreturn_t usb_hcd_irq(int, void*)'
  'int usb_hcd_map_urb_for_dma(struct usb_hcd*, struct urb*, gfp_t)'
  'void usb_hcd_start_port_resume(struct usb_bus*, int)'
  'void usb_hcd_unmap_urb_for_dma(struct usb_hcd*, struct urb*)'
  'int usb_hub_clear_tt_buffer(struct urb*)'
  'struct config_group* usb_os_desc_prepare_interf_dir(struct config_group*, int, struct usb_os_desc**, char**, struct module*)'
  'void usb_put_function(struct usb_function*)'
  'void usb_remove_function(struct usb_configuration*, struct usb_function*)'
  'const char* usb_role_string(enum usb_role)'
  'struct usb_role_switch* usb_role_switch_get(struct device*)'
  'void usb_wakeup_notification(struct usb_device*, unsigned int)'
  'void uuid_gen(uuid_t*)'
  's32 v4l2_ctrl_g_ctrl(struct v4l2_ctrl*)'
  's64 v4l2_ctrl_g_ctrl_int64(struct v4l2_ctrl*)'
  'struct v4l2_ctrl* v4l2_ctrl_new_std_menu_items(struct v4l2_ctrl_handler*, const struct v4l2_ctrl_ops*, u32, u8, u64, u8, const char* const*)'
  'int v4l2_ctrl_subdev_subscribe_event(struct v4l2_subdev*, struct v4l2_fh*, struct v4l2_event_subscription*)'
  'int v4l2_event_subdev_unsubscribe(struct v4l2_subdev*, struct v4l2_fh*, struct v4l2_event_subscription*)'
  'const struct v4l2_format_info* v4l2_format_info(u32)'
  'void v4l2_m2m_buf_copy_metadata(const struct vb2_v4l2_buffer*, struct vb2_v4l2_buffer*, bool)'
  'int v4l2_m2m_dqbuf(struct file*, struct v4l2_m2m_ctx*, struct v4l2_buffer*)'
  'int v4l2_m2m_streamoff(struct file*, struct v4l2_m2m_ctx*, enum v4l2_buf_type)'
  'void v4l2_m2m_try_schedule(struct v4l2_m2m_ctx*)'
  'int v4l2_pipeline_link_notify(struct media_link*, u32, unsigned int)'
  'int v4l2_subdev_link_validate(struct media_link*)'
  'int v4l2_subdev_link_validate_default(struct v4l2_subdev*, struct media_link*, struct v4l2_subdev_format*, struct v4l2_subdev_format*)'
  'void v4l_bound_align_image(u32*, unsigned int, unsigned int, unsigned int, u32*, unsigned int, unsigned int, unsigned int, unsigned int)'
  'struct frame_vector* vb2_create_framevec(unsigned long, unsigned long)'
  'void vb2_destroy_framevec(struct frame_vector*)'
  'int vb2_ioctl_prepare_buf(struct file*, void*, struct v4l2_buffer*)'
  'bool vb2_request_object_is_buffer(struct media_request_object*)'
  'void vb2_request_queue(struct media_request*)'
  'loff_t vfs_llseek(struct file*, loff_t, int)'
  'int wait_for_completion_state(struct completion*, unsigned int)'
  'long work_on_cpu(int, long(*)(void*), void*)'

33 variable symbol(s) added
  'struct tracepoint __tracepoint_android_rvh_find_energy_efficient_cpu'
  'struct tracepoint __tracepoint_android_rvh_find_new_ilb'
  'struct tracepoint __tracepoint_android_vh_alter_futex_plist_add'
  'struct tracepoint __tracepoint_android_vh_alter_rwsem_list_add'
  'struct tracepoint __tracepoint_android_vh_arch_set_freq_scale'
  'struct tracepoint __tracepoint_android_vh_cgroup_attach'
  'struct tracepoint __tracepoint_android_vh_cgroup_set_task'
  'struct tracepoint __tracepoint_android_vh_iommu_iovad_alloc_iova'
  'struct tracepoint __tracepoint_android_vh_iommu_iovad_free_iova'
  'struct tracepoint __tracepoint_android_vh_rwsem_init'
  'struct tracepoint __tracepoint_android_vh_rwsem_wake'
  'struct tracepoint __tracepoint_android_vh_rwsem_write_finished'
  'struct tracepoint __tracepoint_android_vh_sched_pelt_multiplier'
  'struct tracepoint __tracepoint_android_vh_set_wake_flags'
  'struct tracepoint __tracepoint_android_vh_syscall_prctl_finished'
  'struct tracepoint __tracepoint_cpu_frequency'
  'struct tracepoint __tracepoint_pelt_rt_tp'
  'struct tracepoint __tracepoint_pelt_se_tp'
  'struct tracepoint __tracepoint_sched_update_nr_running_tp'
  'struct tracepoint __tracepoint_task_newtask'
  'struct neigh_table arp_tbl'
  'const struct clk_ops clk_divider_ops'
  'const struct clk_ops clk_gate_ops'
  'const struct clk_ops clk_mux_ops'
  'struct console* console_drivers'
  'rwlock_t dev_base_lock'
  'const struct font_desc font_vga_8x16'
  'const char hex_asc[17]'
  'void* high_memory'
  'struct workqueue_struct* pm_wq'
  'struct srcu_struct tracepoint_srcu'
  'const uuid_t uuid_null'
  'const struct vm_operations_struct vb2_common_vm_ops'

Bug: 279225438
Change-Id: I859bec8e385ad2ed9271868608a5e587d35c87e5
Signed-off-by: Chun-Hung Wu <chun-hung.wu@mediatek.com>
2023-04-25 11:27:24 +00:00
Wesley Cheng
4590238002 FROMGIT: usb: dwc3: gadget: Execute gadget stop after halting the controller
Do not call gadget stop until the poll for controller halt is
completed.  DEVTEN is cleared as part of gadget stop, so the intention to
allow ep0 events to continue while waiting for controller halt is not
happening.

Fixes: c96683798e ("usb: dwc3: ep0: Don't prepare beyond Setup stage")
Cc: stable@vger.kernel.org
Acked-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
Signed-off-by: Wesley Cheng <quic_wcheng@quicinc.com>
Link: https://lore.kernel.org/r/20230420212759.29429-2-quic_wcheng@quicinc.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Bug: 277690231
Change-Id: I2a8a42e938a680cefc0d1a56274caf155a4f99cd
(cherry picked from commit 39674be56fba1cd3a03bf4617f523a35f85fd2c1 https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git usb-next)
Signed-off-by: Wesley Cheng <quic_wcheng@quicinc.com>
2023-04-25 06:30:17 +00:00
Ziqi Chen
c747f08962 UPSTREAM: scsi: ufs: core: Print trs for pending requests in MCQ mode
We don't have outstanding_reqs bitmap in MCQ mode. Considering that the
queue depth may increase beyond 64 in the future, rework ufshcd_print_trs()
to get rid of bitmap usage so that we can print trs for pending requests in
both SDB and MCQ mode.

Signed-off-by: Ziqi Chen <quic_ziqichen@quicinc.com>
Link: https://lore.kernel.org/r/1678865517-43139-1-git-send-email-quic_ziqichen@quicinc.com
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
(cherry picked from commit 127fd07da459379d39d5a048afbd3e51d00f3f60)
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>

Bug: 277673029
Change-Id: I14bfe83fdd89628693180bda6da95a188839e116
Signed-off-by: Ziqi Chen <quic_ziqichen@quicinc.com>
2023-04-25 01:29:15 +00:00
Ziqi Chen
764c422dcb UPSTREAM: scsi: ufs: core: Add trace event for MCQ
Add MCQ hardware queue ID in the existing trace event ufshcd_command().

Signed-off-by: Ziqi Chen <quic_ziqichen@quicinc.com>
Link: https://lore.kernel.org/r/1678866271-49601-1-git-send-email-quic_ziqichen@quicinc.com
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
(cherry picked from commit 4a52338bf288c95a46f20af1f5df77b80b74c9ad)
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>

Bug: 277673029
Change-Id: Idf1861723a43981cef0ec5b010d4f0447adc3cde
Signed-off-by: Ziqi Chen <quic_ziqichen@quicinc.com>
2023-04-25 01:29:15 +00:00
Will McVicker
b2866c2972 ANDROID: ABI: update the pixel symbol list
These symbols are needed as part of an upgrade to v6.1.

41 function symbol(s) added
  'struct device* __root_device_register(const char*, struct module*)'
  'int badblocks_check(struct badblocks*, sector_t, int, sector_t*, int*)'
  'int badblocks_clear(struct badblocks*, sector_t, int)'
  'void badblocks_exit(struct badblocks*)'
  'int badblocks_init(struct badblocks*, int)'
  'int badblocks_set(struct badblocks*, sector_t, int, int)'
  'ssize_t badblocks_show(struct badblocks*, char*, int)'
  'unsigned int bdev_nr_zones(struct block_device*)'
  'void blk_abort_request(struct request*)'
  'void blk_mq_stop_hw_queues(struct request_queue*)'
  'u32 blk_mq_unique_tag(struct request*)'
  'void blk_mq_update_nr_hw_queues(struct blk_mq_tag_set*, int)'
  'const char* blk_op_str(enum req_op)'
  'void blk_queue_chunk_sectors(struct request_queue*, unsigned int)'
  'void blk_queue_max_zone_append_sectors(struct request_queue*, unsigned int)'
  'void blk_queue_required_elevator_features(struct request_queue*, unsigned int)'
  'void blk_queue_virt_boundary(struct request_queue*, unsigned long)'
  'int blk_revalidate_disk_zones(struct gendisk*, void(*)(struct gendisk*))'
  'const char* blk_zone_cond_str(enum blk_zone_cond)'
  'void config_item_init_type_name(struct config_item*, const char*, const struct config_item_type*)'
  'int crypto_register_notifier(struct notifier_block*)'
  'int crypto_unregister_notifier(struct notifier_block*)'
  'void disk_set_zoned(struct gendisk*, enum blk_zoned_model)'
  'blk_status_t errno_to_blk_status(int)'
  'void int_to_scsilun(u64, struct scsi_lun*)'
  'void io_schedule()'
  'void* radix_tree_delete_item(struct xarray*, unsigned long, void*)'
  'unsigned int radix_tree_gang_lookup(const struct xarray*, void**, unsigned long, unsigned int)'
  'int radix_tree_preload(gfp_t)'
  'void root_device_unregister(struct device*)'
  'void scsi_build_sense(struct scsi_cmnd*, int, u8, u8, u8)'
  'void scsi_done(struct scsi_cmnd*)'
  'int scsi_set_sense_information(u8*, int, u64)'
  'size_t sg_copy_buffer(struct scatterlist*, unsigned int, void*, size_t, off_t, bool)'
  'size_t sg_pcopy_from_buffer(struct scatterlist*, unsigned int, const void*, size_t, off_t)'
  'int snd_soc_component_enable_pin(struct snd_soc_component*, const char*)'
  'int snd_soc_component_get_pin_status(struct snd_soc_component*, const char*)'
  'void uuid_gen(uuid_t*)'
  'void xa_clear_mark(struct xarray*, unsigned long, xa_mark_t)'
  'bool xa_get_mark(struct xarray*, unsigned long, xa_mark_t)'
  'void xa_set_mark(struct xarray*, unsigned long, xa_mark_t)'

Bug: 279090118
Change-Id: I72c4d033ff4234a4c1622540426e8cb6c2d5680c
Signed-off-by: Will McVicker <willmcvicker@google.com>
2023-04-24 21:37:40 +00:00
Johan Hovold
8f3f69c9b9 FROMGIT: USB: dwc3: gadget: drop dead hibernation code
The hibernation code is broken and has never been enabled in mainline
and should thus be dropped.

Remove the hibernation bits from the gadget code, which effectively
reverts commits e1dadd3b0f ("usb: dwc3: workaround: bogus hibernation
events") and 7b2a0368bb ("usb: dwc3: gadget: set KEEP_CONNECT in case
of hibernation") except for the spurious interrupt warning.

Acked-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
Link: https://lore.kernel.org/r/20230404072524.19014-5-johan+linaro@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Bug: 277690231
Change-Id: I893cefd276fd3be5e254c8aa82611eba2fc53396
(cherry picked from commit bdb19d01026a5cccfa437be8adcf2df472c5889e https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git usb-next)
Signed-off-by: Wesley Cheng <quic_wcheng@quicinc.com>
2023-04-24 18:23:23 +00:00
Wesley Cheng
5dd4405fee FROMGIT: usb: dwc3: gadget: Stall and restart EP0 if host is unresponsive
It was observed that there are hosts that may complete pending SETUP
transactions before the stop active transfers and controller halt occurs,
leading to lingering endxfer commands on DEPs on subsequent pullup/gadget
start iterations.

  dwc3_gadget_ep_disable   name=ep8in flags=0x3009  direction=1
  dwc3_gadget_ep_disable   name=ep4in flags=1  direction=1
  dwc3_gadget_ep_disable   name=ep3out flags=1  direction=0
  usb_gadget_disconnect   deactivated=0  connected=0  ret=0

The sequence shows that the USB gadget disconnect (dwc3_gadget_pullup(0))
routine completed successfully, allowing for the USB gadget to proceed with
a USB gadget connect.  However, if this occurs the system runs into an
issue where:

  BUG: spinlock already unlocked on CPU
  spin_bug+0x0
  dwc3_remove_requests+0x278
  dwc3_ep0_out_start+0xb0
  __dwc3_gadget_start+0x25c

This is due to the pending endxfers, leading to gadget start (w/o lock
held) to execute the remove requests, which will unlock the dwc3
spinlock as part of giveback.

To mitigate this, resolve the pending endxfers on the pullup disable
path by re-locating the SETUP phase check after stop active transfers, since
that is where the DWC3_EP_DELAY_STOP is potentially set.  This also allows
for handling of a host that may be unresponsive by using the completion
timeout to trigger the stall and restart for EP0.

Fixes: c96683798e ("usb: dwc3: ep0: Don't prepare beyond Setup stage")
Cc: stable@vger.kernel.org
Acked-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
Signed-off-by: Wesley Cheng <quic_wcheng@quicinc.com>
Link: https://lore.kernel.org/r/20230413195742.11821-2-quic_wcheng@quicinc.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Bug: 277690231
Change-Id: Ifa9aeab01a4f45feaae59c2d393e6712f5370f08
(cherry picked from commit 02435a739b81ae24aff5d6e930efef9458e2af3c https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git usb-next)
Signed-off-by: Wesley Cheng <quic_wcheng@quicinc.com>
2023-04-24 18:23:23 +00:00
Ming Qian
4dbfc3a024 FROMGIT: media: add RealVideo format RV30 and RV40
RealVideo, or also spelled as Real Video, is a suite of proprietary
video compression formats developed by RealNetworks -
the specific format changes with the version.
RealVideo codecs are identified by four-character codes.
RV30 and RV40 are RealNetworks' proprietary H.264-based codecs.

Bug: 279270030
Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Signed-off-by: Ming Qian <ming.qian@nxp.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
(cherry picked from commit ec9aa62a1e4d151e9f14b7bda0b13438a901f904
    https://git.linuxtv.org/mchehab/media-next.git master)
Change-Id: I8388fb2764a25543a3b155e5ce65f8af3ac005e4
Signed-off-by: Jindong Yue <jindong.yue@nxp.com>
2023-04-24 10:45:38 +00:00
Ming Qian
61c48ea296 FROMGIT: media: add Sorenson Spark video format
Sorenson Spark is an implementation of H.263 for use
in Flash Video and Adobe Flash files.
Sorenson Spark is an incomplete implementation of H.263.
It differs mostly in header structure and ranges of the coefficients.

Bug: 279270030
Signed-off-by: Ming Qian <ming.qian@nxp.com>
Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
(cherry picked from commit ae77d1391445f1357d888990c07b5288a4cacac5
    https://git.linuxtv.org/mchehab/media-next.git master)
Change-Id: I914e0a2bbbeaf9095be239844051a7919ffd2e02
Signed-off-by: Jindong Yue <jindong.yue@nxp.com>
2023-04-24 10:45:38 +00:00
Matthias Männich
4f6302ba3c ANDROID: Update ABI representation for imx symbol list updates
Bug: 277791334
Change-Id: Ia83d83aac9377dca69770520d774f80cf5158fff
Signed-off-by: Matthias Männich <maennich@google.com>
2023-04-24 10:43:55 +00:00
Zhipeng Wang
515e3ed383 ANDROID: ABI: Add clk/power related symbols for imx
68 function symbol(s) added
  'struct clk_hw* __clk_hw_register_divider(struct device*, struct device_node*, const char*, const char*, const struct clk_hw*, const struct clk_parent_data*, unsigned long, void*, u8, u8, u8, const struct clk_div_table*, spinlock_t*)'
  'struct clk_hw* __clk_hw_register_fixed_rate(struct device*, struct device_node*, const char*, const char*, const struct clk_hw*, const struct clk_parent_data*, unsigned long, unsigned long, unsigned long, unsigned long, bool)'
  'struct clk_hw* __clk_hw_register_gate(struct device*, struct device_node*, const char*, const char*, const struct clk_hw*, const struct clk_parent_data*, unsigned long, void*, u8, u8, spinlock_t*)'
  'struct clk_hw* __clk_hw_register_mux(struct device*, struct device_node*, const char*, u8, const char* const*, const struct clk_hw**, const struct clk_parent_data*, unsigned long, void*, u8, u32, u8, const u32*, spinlock_t*)'
  'int __of_mdiobus_register(struct mii_bus*, struct device_node*, struct module*)'
  'int clk_bulk_get(struct device*, int, struct clk_bulk_data*)'
  'void clk_bulk_put(int, struct clk_bulk_data*)'
  'int clk_gate_is_enabled(struct clk_hw*)'
  'struct clk_hw* clk_hw_register_composite(struct device*, const char*, const char* const*, int, struct clk_hw*, const struct clk_ops*, struct clk_hw*, const struct clk_ops*, struct clk_hw*, const struct clk_ops*, unsigned long)'
  'struct clk_hw* clk_hw_register_fixed_factor(struct device*, const char*, const char*, unsigned long, unsigned int, unsigned int)'
  'unsigned int clk_mux_index_to_val(const u32*, unsigned int, u8)'
  'struct clk* clk_register_mux_table(struct device*, const char*, const char* const*, u8, unsigned long, void*, u8, u32, u8, const u32*, spinlock_t*)'
  'void clk_unregister(struct clk*)'
  'unsigned int cpufreq_generic_get(unsigned int)'
  'int cpufreq_generic_suspend(struct cpufreq_policy*)'
  'void dev_pm_opp_free_cpufreq_table(struct device*, struct cpufreq_frequency_table**)'
  'unsigned long dev_pm_opp_get_max_transition_latency(struct device*)'
  'int dev_pm_opp_get_sharing_cpus(struct device*, struct cpumask*)'
  'unsigned long dev_pm_opp_get_suspend_opp_freq(struct device*)'
  'int dev_pm_opp_init_cpufreq_table(struct device*, struct cpufreq_frequency_table**)'
  'int dev_pm_opp_of_cpumask_add_table(const struct cpumask*)'
  'int dev_pm_opp_of_get_sharing_cpus(struct device*, struct cpumask*)'
  'int devm_hwrng_register(struct device*, struct hwrng*)'
  'int dmaenginem_async_device_register(struct dma_device*)'
  'int dw_pcie_ep_init(struct dw_pcie_ep*)'
  'int dw_pcie_ep_raise_legacy_irq(struct dw_pcie_ep*, u8)'
  'int dw_pcie_ep_raise_msi_irq(struct dw_pcie_ep*, u8, u8)'
  'void dw_pcie_ep_reset_bar(struct dw_pcie*, enum pci_barno)'
  'u8 dw_pcie_find_capability(struct dw_pcie*, u8)'
  'u32 dw_pcie_read_dbi(struct dw_pcie*, u32, size_t)'
  'int dw_pcie_wait_for_link(struct dw_pcie*)'
  'void dw_pcie_write_dbi(struct dw_pcie*, u32, size_t, u32)'
  'bool mdiobus_is_registered_device(struct mii_bus*, int)'
  'void net_selftest(struct net_device*, struct ethtool_test*, u64*)'
  'int net_selftest_get_count()'
  'void net_selftest_get_strings(u8*)'
  'void netif_set_tso_max_segs(struct net_device*, unsigned int)'
  'int nvmem_cell_read_u64(struct device*, const char*, u64*)'
  'int of_clk_parent_fill(struct device_node*, const char**, unsigned int)'
  'int of_genpd_add_device(struct of_phandle_args*, struct device*)'
  'int of_genpd_add_subdomain(struct of_phandle_args*, struct of_phandle_args*)'
  'int of_get_phy_mode(struct device_node*, phy_interface_t*)'
  'struct phy_device* of_phy_connect(struct net_device*, struct device_node*, void(*)(struct net_device*), u32, phy_interface_t)'
  'void of_phy_deregister_fixed_link(struct device_node*)'
  'struct phy_device* of_phy_find_device(struct device_node*)'
  'int of_phy_register_fixed_link(struct device_node*)'
  'int pci_msi_enabled()'
  'struct phy_device* phy_connect(struct net_device*, const char*, void(*)(struct net_device*), phy_interface_t)'
  'void phy_disconnect(struct phy_device*)'
  'int phy_ethtool_get_eee(struct phy_device*, struct ethtool_eee*)'
  'int phy_ethtool_get_link_ksettings(struct net_device*, struct ethtool_link_ksettings*)'
  'int phy_ethtool_nway_reset(struct net_device*)'
  'int phy_ethtool_set_eee(struct phy_device*, struct ethtool_eee*)'
  'int phy_ethtool_set_link_ksettings(struct net_device*, const struct ethtool_link_ksettings*)'
  'int phy_mii_ioctl(struct phy_device*, struct ifreq*, int)'
  'void phy_print_status(struct phy_device*)'
  'void phy_remove_link_mode(struct phy_device*, u32)'
  'int phy_reset_after_clk_enable(struct phy_device*)'
  'void phy_set_max_speed(struct phy_device*, u32)'
  'void phy_set_sym_pause(struct phy_device*, bool, bool, bool)'
  'void phy_start(struct phy_device*)'
  'void phy_stop(struct phy_device*)'
  'void phy_support_sym_pause(struct phy_device*)'
  'int pm_genpd_remove_device(struct device*)'
  'void tso_build_data(const struct sk_buff*, struct tso_t*, int)'
  'void tso_build_hdr(const struct sk_buff*, char*, struct tso_t*, int, bool)'
  'int tso_count_descs(const struct sk_buff*)'
  'int tso_start(struct sk_buff*, struct tso_t*)'

8 variable symbol(s) added
  'const struct clk_ops clk_divider_ops'
  'const struct clk_ops clk_divider_ro_ops'
  'const struct clk_ops clk_fractional_divider_ops'
  'const struct clk_ops clk_gate_ops'
  'const struct clk_ops clk_mux_ops'
  'const struct clk_ops clk_mux_ro_ops'
  'struct kobject* firmware_kobj'
  'struct device_node* of_chosen'

Bug: 277791334
Change-Id: Ide2e8e1be03d8978476ddbdcd32a9d364ea8814f
Signed-off-by: Zhipeng Wang <zhipeng.wang_1@nxp.com>
2023-04-24 10:43:55 +00:00
Zhipeng Wang
6665806c0c ANDROID: ABI: Add phy/pinctrl/regulator related symbols for imx
21 function symbol(s) added
  'struct regmap* __regmap_init_mmio_clk(struct device*, const char*, void*, const struct regmap_config*, struct lock_class_key*, const char*)'
  'int devm_pwmchip_add(struct device*, struct pwm_chip*)'
  'void devres_remove_group(struct device*, void*)'
  'struct pwm_device* of_pwm_xlate_with_flags(struct pwm_chip*, const struct of_phandle_args*)'
  'int of_regulator_match(struct device*, struct device_node*, struct of_regulator_match*, unsigned int)'
  'int phy_pm_runtime_get_sync(struct phy*)'
  'int phy_pm_runtime_put(struct phy*)'
  'int pinconf_generic_parse_dt_config(struct device_node*, struct pinctrl_dev*, unsigned long**, unsigned int*)'
  'struct group_desc* pinctrl_generic_get_group(struct pinctrl_dev*, unsigned int)'
  'struct function_desc* pinmux_generic_get_function(struct pinctrl_dev*, unsigned int)'
  'int pinmux_generic_get_function_count(struct pinctrl_dev*)'
  'int pinmux_generic_get_function_groups(struct pinctrl_dev*, unsigned int, const char* const**, unsigned int*)'
  'const char* pinmux_generic_get_function_name(struct pinctrl_dev*, unsigned int)'
  'int regulator_desc_list_voltage_linear_range(const struct regulator_desc*, unsigned int)'
  'int regulator_map_voltage_ascend(struct regulator_dev*, int, int)'
  'int regulator_set_ramp_delay_regmap(struct regulator_dev*, int)'
  'int regulator_set_voltage_time_sel(struct regulator_dev*, unsigned int, unsigned int)'
  'int reset_controller_register(struct reset_controller_dev*)'
  'void reset_controller_unregister(struct reset_controller_dev*)'
  'struct device* rpmsg_find_device(struct device*, struct rpmsg_channel_info*)'
  'int rpmsg_sendto(struct rpmsg_endpoint*, void*, int, u32)'

1 variable symbol(s) added
  'suspend_state_t pm_suspend_target_state'

Bug: 277791334
Change-Id: Idbcd16e66e57f2ad78cd731a981c5653a0f5605f
Signed-off-by: Zhipeng Wang <zhipeng.wang_1@nxp.com>
2023-04-24 10:43:55 +00:00
Zhipeng Wang
9d368adaae ANDROID: ABI: Add bus/mmc/dma related symbols for imx
55 function symbol(s) added
  'void __bitmap_replace(unsigned long*, const unsigned long*, const unsigned long*, const unsigned long*, unsigned int)'
  'void bdi_unregister(struct backing_dev_info*)'
  'unsigned long* bitmap_alloc(unsigned int, gfp_t)'
  'struct irq_chip_generic* devm_irq_alloc_generic_chip(struct device*, const char*, int, unsigned int, void*, irq_flow_handler_t)'
  'int devm_irq_setup_generic_chip(struct device*, struct irq_chip_generic*, u32, enum irq_gc_flags, unsigned int, unsigned int)'
  'int devm_register_sys_off_handler(struct device*, enum sys_off_mode, int, int(*)(struct sys_off_data*), void*)'
  'struct spi_mem_dirmap_desc* devm_spi_mem_dirmap_create(struct device*, struct spi_mem*, const struct spi_mem_dirmap_info*)'
  'void* gen_pool_dma_alloc(struct gen_pool*, size_t, dma_addr_t*)'
  'struct gpio_desc* gpiod_get_index_optional(struct device*, const char*, unsigned int, enum gpiod_flags)'
  'int gpiod_set_array_value_cansleep(unsigned int, struct gpio_desc**, struct gpio_array*, unsigned long*)'
  'struct irq_domain* irq_domain_add_legacy(struct device_node*, unsigned int, unsigned int, irq_hw_number_t, const struct irq_domain_ops*, void*)'
  'void mctrl_gpio_disable_ms(struct mctrl_gpios*)'
  'void mctrl_gpio_enable_ms(struct mctrl_gpios*)'
  'unsigned int mctrl_gpio_get(struct mctrl_gpios*, unsigned int*)'
  'struct mctrl_gpios* mctrl_gpio_init(struct uart_port*, unsigned int)'
  'void mctrl_gpio_set(struct mctrl_gpios*, unsigned int)'
  'int mmc_gpio_set_cd_wake(struct mmc_host*, bool)'
  'int mmc_of_parse_voltage(struct mmc_host*, u32*)'
  'int mmc_pwrseq_register(struct mmc_pwrseq*)'
  'void mmc_pwrseq_unregister(struct mmc_pwrseq*)'
  'void mmc_retune_timer_stop(struct mmc_host*)'
  'struct gen_pool* of_gen_pool_get(struct device_node*, const char*, int)'
  'bool of_node_name_prefix(const struct device_node*, const char*)'
  'int pinctrl_gpio_direction_input(unsigned int)'
  'int pinctrl_gpio_direction_output(unsigned int)'
  'int regmap_attach_dev(struct device*, struct regmap*, const struct regmap_config*)'
  'void rproc_add_carveout(struct rproc*, struct rproc_mem_entry*)'
  'struct resource_table* rproc_elf_find_loaded_rsc_table(struct rproc*, const struct firmware*)'
  'int rproc_elf_load_rsc_table(struct rproc*, const struct firmware*)'
  'int rproc_elf_load_segments(struct rproc*, const struct firmware*)'
  'int rproc_elf_sanity_check(struct rproc*, const struct firmware*)'
  'struct rproc_mem_entry* rproc_mem_entry_init(struct device*, void*, dma_addr_t, size_t, u32, int(*)(struct rproc*, struct rproc_mem_entry*), int(*)(struct rproc*, struct rproc_mem_entry*), const char*, ...)'
  'int rproc_of_parse_firmware(struct device*, int, const char**)'
  'irqreturn_t rproc_vq_interrupt(struct rproc*, int)'
  'void sdhci_dumpregs(struct sdhci_host*)'
  'int sdhci_execute_tuning(struct mmc_host*, u32)'
  'int sdhci_resume_host(struct sdhci_host*)'
  'int sdhci_runtime_resume_host(struct sdhci_host*, int)'
  'int sdhci_runtime_suspend_host(struct sdhci_host*)'
  'int sdhci_suspend_host(struct sdhci_host*)'
  'struct scatterlist* sg_last(struct scatterlist*, unsigned int)'
  'int spi_mem_adjust_op_size(struct spi_mem*, struct spi_mem_op*)'
  'bool spi_mem_default_supports_op(struct spi_mem*, const struct spi_mem_op*)'
  'ssize_t spi_mem_dirmap_read(struct spi_mem_dirmap_desc*, u64, size_t, void*)'
  'ssize_t spi_mem_dirmap_write(struct spi_mem_dirmap_desc*, u64, size_t, const void*)'
  'int spi_mem_driver_register_with_owner(struct spi_mem_driver*, struct module*)'
  'void spi_mem_driver_unregister(struct spi_mem_driver*)'
  'int spi_mem_exec_op(struct spi_mem*, const struct spi_mem_op*)'
  'const char* spi_mem_get_name(struct spi_mem*)'
  'bool spi_mem_supports_op(struct spi_mem*, const struct spi_mem_op*)'
  'unsigned char tty_get_frame_size(unsigned int)'
  'unsigned int uart_get_divisor(struct uart_port*, unsigned int)'
  'int uart_get_rs485_mode(struct uart_port*)'
  'void uart_handle_cts_change(struct uart_port*, unsigned int)'
  'void uart_handle_dcd_change(struct uart_port*, unsigned int)'

Bug: 277791334
Change-Id: Ibb506df8f2897865016f7e77256b84f67dcb5af4
Signed-off-by: Zhipeng Wang <zhipeng.wang_1@nxp.com>
2023-04-24 10:43:55 +00:00
Zhipeng Wang
ddd2c21ef7 ANDROID: ABI: Add display related symbols for imx
83 function symbol(s) added
  'int __device_reset(struct device*, bool)'
  'struct drm_mm_node* __drm_mm_interval_first(const struct drm_mm*, u64, u64)'
  'void* __drmm_simple_encoder_alloc(struct drm_device*, size_t, size_t, int)'
  'int __irq_alloc_domain_generic_chips(struct irq_domain*, int, int, const char*, irq_flow_handler_t, unsigned int, unsigned int, enum irq_gc_flags)'
  'int bitmap_find_free_region(unsigned long*, unsigned int, int)'
  'void* bsearch(const void*, const void*, size_t, size_t, cmp_func_t)'
  'void cec_fill_conn_info_from_drm(struct cec_connector_info*, const struct drm_connector*)'
  'struct cec_notifier* cec_notifier_cec_adap_register(struct device*, const char*, struct cec_adapter*)'
  'void cec_notifier_cec_adap_unregister(struct cec_notifier*, struct cec_adapter*)'
  'struct cec_notifier* cec_notifier_conn_register(struct device*, const char*, const struct cec_connector_info*)'
  'void cec_notifier_conn_unregister(struct cec_notifier*)'
  'void cec_notifier_set_phys_addr(struct cec_notifier*, u16)'
  'void cec_notifier_set_phys_addr_from_edid(struct cec_notifier*, const struct edid*)'
  'void cec_s_phys_addr_from_edid(struct cec_adapter*, const struct edid*)'
  'void cec_transmit_done_ts(struct cec_adapter*, u8, u8, u8, u8, u8, ktime_t)'
  'int component_compare_dev_name(struct device*, void*)'
  'struct drm_bridge* devm_drm_panel_bridge_add(struct device*, struct drm_panel*)'
  'struct phy* devm_of_phy_get(struct device*, struct device_node*, const char*)'
  'void devm_remove_action(struct device*, void(*)(void*), void*)'
  'u64 dma_get_required_mask(struct device*)'
  'int down_killable(struct semaphore*)'
  'int driver_create_file(struct device_driver*, const struct driver_attribute*)'
  'void driver_remove_file(struct device_driver*, const struct driver_attribute*)'
  'u32* drm_atomic_helper_bridge_propagate_bus_fmt(struct drm_bridge*, struct drm_bridge_state*, struct drm_crtc_state*, struct drm_connector_state*, u32, unsigned int*)'
  'void drm_atomic_helper_commit_tail_rpm(struct drm_atomic_state*)'
  'void drm_atomic_helper_disable_planes_on_crtc(struct drm_crtc_state*, bool)'
  'void drm_bridge_connector_disable_hpd(struct drm_connector*)'
  'void drm_bus_flags_from_videomode(const struct videomode*, u32*)'
  'bool drm_connector_atomic_hdr_metadata_equal(struct drm_connector_state*, struct drm_connector_state*)'
  'int drm_connector_attach_hdr_output_metadata_property(struct drm_connector*)'
  'int drm_connector_attach_max_bpc_property(struct drm_connector*, int, int)'
  'int drm_connector_init_with_ddc(struct drm_device*, struct drm_connector*, const struct drm_connector_funcs*, int, struct i2c_adapter*)'
  'int drm_connector_set_panel_orientation(struct drm_connector*, enum drm_panel_orientation)'
  'enum hdmi_quantization_range drm_default_rgb_quant_range(const struct drm_display_mode*)'
  'int drm_display_info_set_bus_formats(struct drm_display_info*, const u32*, unsigned int)'
  'void drm_display_mode_from_videomode(const struct videomode*, struct drm_display_mode*)'
  'void drm_hdmi_avi_infoframe_quant_range(struct hdmi_avi_infoframe*, const struct drm_connector*, const struct drm_display_mode*, enum hdmi_quantization_range)'
  'int drm_hdmi_vendor_infoframe_from_display_mode(struct hdmi_vendor_infoframe*, const struct drm_connector*, const struct drm_display_mode*)'
  'bool drm_mm_scan_add_block(struct drm_mm_scan*, struct drm_mm_node*)'
  'void drm_mm_scan_init_with_range(struct drm_mm_scan*, struct drm_mm*, u64, u64, unsigned long, u64, u64, enum drm_mm_insert_mode)'
  'bool drm_mm_scan_remove_block(struct drm_mm_scan*, struct drm_mm_node*)'
  'int drm_mode_create_hdmi_colorspace_property(struct drm_connector*)'
  'bool drm_mode_is_420_also(const struct drm_display_info*, const struct drm_display_mode*)'
  'int drm_of_encoder_active_endpoint(struct device_node*, struct drm_encoder*, struct of_endpoint*)'
  'uint32_t drm_of_find_possible_crtcs(struct drm_device*, struct device_node*)'
  'int drm_panel_of_backlight(struct drm_panel*)'
  'int drm_plane_create_color_properties(struct drm_plane*, u32, u32, enum drm_color_encoding, enum drm_color_range)'
  'int drm_plane_create_scaling_filter_property(struct drm_plane*, unsigned int)'
  'int hdmi_avi_infoframe_check(struct hdmi_avi_infoframe*)'
  'void hdmi_avi_infoframe_init(struct hdmi_avi_infoframe*)'
  'ssize_t hdmi_avi_infoframe_pack(struct hdmi_avi_infoframe*, void*, size_t)'
  'int hdmi_drm_infoframe_init(struct hdmi_drm_infoframe*)'
  'ssize_t hdmi_drm_infoframe_pack(struct hdmi_drm_infoframe*, void*, size_t)'
  'ssize_t hdmi_vendor_infoframe_pack(struct hdmi_vendor_infoframe*, void*, size_t)'
  'void input_copy_abs(struct input_dev*, unsigned int, const struct input_dev*, unsigned int)'
  'void irq_gc_ack_set_bit(struct irq_data*)'
  'void irq_gc_mask_clr_bit(struct irq_data*)'
  'void irq_gc_mask_set_bit(struct irq_data*)'
  'struct irq_chip_generic* irq_get_domain_generic_chip(struct irq_domain*, unsigned int)'
  'void* memset32(uint32_t*, uint32_t, size_t)'
  'int mipi_dsi_dcs_enter_sleep_mode(struct mipi_dsi_device*)'
  'int mipi_dsi_dcs_exit_sleep_mode(struct mipi_dsi_device*)'
  'int mipi_dsi_dcs_set_display_off(struct mipi_dsi_device*)'
  'int mipi_dsi_dcs_set_display_on(struct mipi_dsi_device*)'
  'int mipi_dsi_dcs_set_pixel_format(struct mipi_dsi_device*, u8)'
  'int mipi_dsi_dcs_set_tear_on(struct mipi_dsi_device*, enum mipi_dsi_dcs_tear_mode)'
  'int mipi_dsi_dcs_set_tear_scanline(struct mipi_dsi_device*, u16)'
  'int mipi_dsi_dcs_soft_reset(struct mipi_dsi_device*)'
  'void mipi_dsi_device_unregister(struct mipi_dsi_device*)'
  'int mutex_lock_killable(struct mutex*)'
  'int of_drm_get_panel_orientation(const struct device_node*, enum drm_panel_orientation*)'
  'int of_get_display_timing(const struct device_node*, const char*, struct display_timing*)'
  'struct phy* of_phy_get(struct device_node*, const char*)'
  'int phy_mipi_dphy_get_default_config(unsigned long, unsigned int, unsigned int, struct phy_configure_opts_mipi_dphy*)'
  'int phy_validate(struct phy*, enum phy_mode, int, union phy_configure_opts*)'
  'struct regmap* syscon_regmap_lookup_by_phandle_optional(struct device_node*, const char*)'
  'void thermal_of_zone_unregister(struct thermal_zone_device*)'
  'int thermal_zone_bind_cooling_device(struct thermal_zone_device*, int, struct thermal_cooling_device*, unsigned long, unsigned long, unsigned int)'
  'void touchscreen_parse_properties(struct input_dev*, bool, struct touchscreen_properties*)'
  'void touchscreen_report_pos(struct input_dev*, const struct touchscreen_properties*, unsigned int, unsigned int, bool)'
  'void unpin_user_pages(struct page**, unsigned long)'
  'void videomode_from_timing(const struct display_timing*, struct videomode*)'
  'void vma_set_file(struct vm_area_struct*, struct file*)'

2 variable symbol(s) added
  'unsigned int hrtimer_resolution'
  'const struct irq_domain_ops irq_generic_chip_ops'

Bug: 277791334
Change-Id: I98df3b80e88be6bf5ec63abcc50de32546cdee12
Signed-off-by: Zhipeng Wang <zhipeng.wang_1@nxp.com>
2023-04-24 10:43:55 +00:00
Zhipeng Wang
31b52eddc4 ANDROID: ABI: Add video/camera related symbols for imx
62 function symbol(s) added
  'int __v4l2_ctrl_s_ctrl_int64(struct v4l2_ctrl*, s64)'
  'const void* __v4l2_find_nearest_size(const void*, size_t, size_t, size_t, size_t, s32, s32)'
  'int _vb2_fop_release(struct file*, struct mutex*)'
  'void console_lock()'
  'void console_unlock()'
  'struct rc_dev* devm_rc_allocate_device(struct device*, enum rc_driver_type)'
  'int devm_rc_register_device(struct device*, struct rc_dev*)'
  'u8 drm_match_cea_mode(const struct drm_display_mode*)'
  'struct drm_display_mode* drm_mode_find_dmt(struct drm_device*, int, int, int, bool)'
  'void drm_property_destroy(struct drm_device*, struct drm_property*)'
  'void drm_self_refresh_helper_cleanup(struct drm_crtc*)'
  'int drm_self_refresh_helper_init(struct drm_crtc*)'
  'int fb_get_options(const char*, char**)'
  'bool fwnode_device_is_available(const struct fwnode_handle*)'
  'struct fwnode_handle* fwnode_graph_get_next_endpoint(const struct fwnode_handle*, struct fwnode_handle*)'
  'struct fwnode_handle* fwnode_graph_get_port_parent(const struct fwnode_handle*)'
  'struct fwnode_handle* fwnode_graph_get_remote_endpoint(const struct fwnode_handle*)'
  'struct fwnode_handle* fwnode_graph_get_remote_port_parent(const struct fwnode_handle*)'
  'int fwnode_graph_parse_endpoint(const struct fwnode_handle*, struct fwnode_endpoint*)'
  'int fwnode_property_get_reference_args(const struct fwnode_handle*, const char*, const char*, unsigned int, unsigned int, struct fwnode_reference_args*)'
  'int fwnode_property_read_u64_array(const struct fwnode_handle*, const char*, u64*, size_t)'
  'int ir_raw_event_store_edge(struct rc_dev*, bool)'
  'int is_console_locked()'
  'struct mbox_chan* mbox_request_channel_byname(struct mbox_client*, const char*)'
  'struct media_link* media_create_ancillary_link(struct media_entity*, struct media_entity*)'
  'int media_create_pad_link(struct media_entity*, u16, struct media_entity*, u16, u32)'
  'void media_entity_remove_links(struct media_entity*)'
  'void media_graph_walk_cleanup(struct media_graph*)'
  'int media_graph_walk_init(struct media_graph*, struct media_device*)'
  'struct media_entity* media_graph_walk_next(struct media_graph*)'
  'void media_graph_walk_start(struct media_graph*, struct media_entity*)'
  'struct media_pad* media_pad_remote_pad_first(const struct media_pad*)'
  'int of_get_videomode(struct device_node*, struct videomode*, int)'
  'struct device_node* of_graph_get_port_by_id(struct device_node*, u32)'
  'struct reset_control* of_reset_control_array_get(struct device_node*, bool, bool, bool)'
  'void pwm_free(struct pwm_device*)'
  'struct pwm_device* pwm_request(int, const char*)'
  'const struct soc_device_attribute* soc_device_match(const struct soc_device_attribute*)'
  'void v4l2_ctrl_auto_cluster(unsigned int, struct v4l2_ctrl**, u8, bool)'
  'int v4l2_ctrl_new_fwnode_properties(struct v4l2_ctrl_handler*, const struct v4l2_ctrl_ops*, const struct v4l2_fwnode_device_properties*)'
  'struct v4l2_ctrl* v4l2_ctrl_new_int_menu(struct v4l2_ctrl_handler*, const struct v4l2_ctrl_ops*, u32, u8, u8, const s64*)'
  'struct v4l2_ctrl* v4l2_ctrl_new_std_menu_items(struct v4l2_ctrl_handler*, const struct v4l2_ctrl_ops*, u32, u8, u64, u8, const char* const*)'
  '__poll_t v4l2_ctrl_poll(struct file*, struct poll_table_struct*)'
  'int v4l2_ctrl_subdev_log_status(struct v4l2_subdev*)'
  'int v4l2_ctrl_subdev_subscribe_event(struct v4l2_subdev*, struct v4l2_fh*, struct v4l2_event_subscription*)'
  'int v4l2_event_subdev_unsubscribe(struct v4l2_subdev*, struct v4l2_fh*, struct v4l2_event_subscription*)'
  'int v4l2_g_parm_cap(struct video_device*, struct v4l2_subdev*, struct v4l2_streamparm*)'
  's64 v4l2_get_link_freq(struct v4l2_ctrl_handler*, unsigned int, unsigned int)'
  'void v4l2_m2m_buf_copy_metadata(const struct vb2_v4l2_buffer*, struct vb2_v4l2_buffer*, bool)'
  'int v4l2_m2m_ioctl_decoder_cmd(struct file*, void*, struct v4l2_decoder_cmd*)'
  'int v4l2_m2m_ioctl_encoder_cmd(struct file*, void*, struct v4l2_encoder_cmd*)'
  'void v4l2_m2m_last_buffer_done(struct v4l2_m2m_ctx*, struct vb2_v4l2_buffer*)'
  'void v4l2_m2m_resume(struct v4l2_m2m_dev*)'
  'void v4l2_m2m_suspend(struct v4l2_m2m_dev*)'
  'void v4l2_m2m_update_start_streaming_state(struct v4l2_m2m_ctx*, struct vb2_queue*)'
  'void v4l2_m2m_update_stop_streaming_state(struct v4l2_m2m_ctx*, struct vb2_queue*)'
  'int v4l2_s_parm_cap(struct video_device*, struct v4l2_subdev*, struct v4l2_streamparm*)'
  'int v4l2_subdev_link_validate(struct media_link*)'
  'void v4l_bound_align_image(u32*, unsigned int, unsigned int, unsigned int, u32*, unsigned int, unsigned int, unsigned int, unsigned int)'
  'int vb2_expbuf(struct vb2_queue*, struct v4l2_exportbuffer*)'
  'int vb2_ioctl_prepare_buf(struct file*, void*, struct v4l2_buffer*)'
  'size_t vb2_read(struct vb2_queue*, char*, size_t, loff_t*, int)'

2 variable symbol(s) added
  'const char* fb_mode_option'
  'atomic_t ignore_console_lock_warning'

Bug: 277791334
Change-Id: I624ff8405f0a4508894b65cb1ab10f1661ac3ddd
Signed-off-by: Zhipeng Wang <zhipeng.wang_1@nxp.com>
2023-04-24 10:43:55 +00:00
Zhipeng Wang
7c333eaff9 ANDROID: ABI: Add sensor/led/iput related symbols for imx
17 function symbol(s) added
  'struct iio_trigger* __devm_iio_trigger_alloc(struct device*, struct module*, const char*, ...)'
  'int __iio_device_register(struct iio_dev*, struct module*)'
  'struct i3c_device* dev_to_i3cdev(struct device*)'
  'struct gpio_desc* devm_fwnode_gpiod_get_index(struct device*, struct fwnode_handle*, const char*, int, enum gpiod_flags, const char*)'
  'int devm_iio_trigger_register(struct device*, struct iio_trigger*)'
  'int fwnode_irq_get_byname(const struct fwnode_handle*, const char*)'
  'const struct i3c_device_id* i3c_device_match_id(struct i3c_device*, const struct i3c_device_id*)'
  'struct iio_poll_func* iio_alloc_pollfunc(irqreturn_t(*)(int, void*), irqreturn_t(*)(int, void*), int, struct iio_dev*, const char*, ...)'
  'void iio_dealloc_pollfunc(struct iio_poll_func*)'
  'int iio_device_id(struct iio_dev*)'
  's64 iio_get_time_ns(const struct iio_dev*)'
  'ssize_t iio_read_const_attr(struct device*, struct device_attribute*, char*)'
  'int iio_read_mount_matrix(struct device*, struct iio_mount_matrix*)'
  'ssize_t iio_show_mount_matrix(struct iio_dev*, uintptr_t, const struct iio_chan_spec*, char*)'
  'void iio_trigger_notify_done(struct iio_trigger*)'
  'void iio_trigger_poll_chained(struct iio_trigger*)'
  'enum led_default_state led_init_default_state_get(struct fwnode_handle*)'

Bug: 277791334
Change-Id: I041b56da461721aa1c5922894692e1a9d2636b0b
Signed-off-by: Zhipeng Wang <zhipeng.wang_1@nxp.com>
2023-04-24 10:43:55 +00:00