mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-08 20:07:46 +09:00
e02ff715d50e878277b8fbf43ae7e9023cd5ad5e
1070562 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
e02ff715d5 |
Revert "locking/rtmutex: Fix task->pi_waiters integrity"
This reverts commit |
||
|
|
5f5a985931 |
Merge 5.15.124 into android14-5.15-lts
Changes in 5.15.124
jbd2: Fix wrongly judgement for buffer head removing while doing checkpoint
KVM: s390: pv: fix index value of replaced ASCE
io_uring: don't audit the capability check in io_uring_create()
gpio: tps68470: Make tps68470_gpio_output() always set the initial value
pwm: Add a stub for devm_pwmchip_add()
gpio: mvebu: Make use of devm_pwmchip_add
gpio: mvebu: fix irq domain leak
btrfs: fix race between quota disable and relocation
i2c: Delete error messages for failed memory allocations
i2c: Improve size determinations
i2c: nomadik: Remove unnecessary goto label
i2c: nomadik: Use devm_clk_get_enabled()
i2c: nomadik: Remove a useless call in the remove function
PCI/ASPM: Return 0 or -ETIMEDOUT from pcie_retrain_link()
PCI/ASPM: Factor out pcie_wait_for_retrain()
PCI/ASPM: Avoid link retraining race
PCI: rockchip: Remove writes to unused registers
PCI: rockchip: Fix window mapping and address translation for endpoint
PCI: rockchip: Don't advertise MSI-X in PCIe capabilities
dlm: cleanup plock_op vs plock_xop
dlm: rearrange async condition return
fs: dlm: interrupt posix locks only when process is killed
drm/ttm: Don't print error message if eviction was interrupted
drm/ttm: Don't leak a resource on eviction error
n_tty: Rename tail to old_tail in n_tty_read()
tty: fix hang on tty device with no_room set
drm/ttm: never consider pinned BOs for eviction&swap
cifs: missing directory in MAINTAINERS file
cifs: use fs_context for automounts
ksmbd: remove internal.h include
cifs: if deferred close is disabled then close files immediately
pwm: meson: Simplify duplicated per-channel tracking
pwm: meson: fix handling of period/duty if greater than UINT_MAX
tracing/probes: Add symstr type for dynamic events
tracing/probes: Fix to avoid double count of the string length on the array
tracing: Allow synthetic events to pass around stacktraces
Revert "tracing: Add "(fault)" name injection to kernel probes"
tracing/probes: Fix to record 0-length data_loc in fetch_store_string*() if fails
scsi: qla2xxx: Remove unused declarations for qla2xxx
scsi: qla2xxx: Multi-que support for TMF
scsi: qla2xxx: Fix task management cmd failure
scsi: qla2xxx: Fix task management cmd fail due to unavailable resource
scsi: qla2xxx: Add debug prints in the device remove path
scsi: qla2xxx: Fix hang in task management
drm/amdgpu: fix vkms crtc settings
drm/amdgpu/vkms: relax timer deactivation by hrtimer_try_to_cancel
phy: qcom-snps: Use dev_err_probe() to simplify code
phy: qcom-snps: correct struct qcom_snps_hsphy kerneldoc
phy: qcom-snps-femto-v2: keep cfg_ahb_clk enabled during runtime suspend
phy: qcom-snps-femto-v2: properly enable ref clock
soundwire: qcom: update status correctly with mask
media: staging: atomisp: select V4L2_FWNODE
i40e: Fix an NULL vs IS_ERR() bug for debugfs_create_dir()
iavf: fix potential deadlock on allocation failure
iavf: check for removal state before IAVF_FLAG_PF_COMMS_FAILED
net: phy: marvell10g: fix 88x3310 power up
net: hns3: fix wrong tc bandwidth weight data issue
net: hns3: fix wrong bw weight of disabled tc issue
vxlan: move to its own directory
vxlan: calculate correct header length for GPE
phy: hisilicon: Fix an out of bounds check in hisi_inno_phy_probe()
ethernet: atheros: fix return value check in atl1e_tso_csum()
ipv6 addrconf: fix bug where deleting a mngtmpaddr can create a new temporary address
tcp: Reduce chance of collisions in inet6_hashfn().
ice: Fix memory management in ice_ethtool_fdir.c
bonding: reset bond's flags when down link is P2P device
team: reset team's flags when down link is P2P device
net: stmmac: Apply redundant write work around on 4.xx too
platform/x86: msi-laptop: Fix rfkill out-of-sync on MSI Wind U100
igc: Fix Kernel Panic during ndo_tx_timeout callback
netfilter: nft_set_rbtree: fix overlap expiration walk
netfilter: nf_tables: skip immediate deactivate in _PREPARE_ERROR
netfilter: nf_tables: disallow rule addition to bound chain via NFTA_RULE_CHAIN_ID
net/sched: mqprio: refactor nlattr parsing to a separate function
net/sched: mqprio: add extack to mqprio_parse_nlattr()
net/sched: mqprio: Add length check for TCA_MQPRIO_{MAX/MIN}_RATE64
benet: fix return value check in be_lancer_xmit_workarounds()
tipc: check return value of pskb_trim()
tipc: stop tipc crypto on failure in tipc_node_create
RDMA/mlx4: Make check for invalid flags stricter
drm/msm/dpu: drop enum dpu_core_perf_data_bus_id
drm/msm/adreno: Fix snapshot BINDLESS_DATA size
RDMA/irdma: Add missing read barriers
RDMA/irdma: Fix data race on CQP completion stats
RDMA/irdma: Fix data race on CQP request done
RDMA/mthca: Fix crash when polling CQ for shared QPs
RDMA/bnxt_re: Prevent handling any completions after qp destroy
drm/msm: Fix IS_ERR_OR_NULL() vs NULL check in a5xx_submit_in_rb()
ASoC: fsl_spdif: Silence output on stop
block: Fix a source code comment in include/uapi/linux/blkzoned.h
dm raid: fix missing reconfig_mutex unlock in raid_ctr() error paths
dm raid: clean up four equivalent goto tags in raid_ctr()
dm raid: protect md_stop() with 'reconfig_mutex'
drm/amd: Fix an error handling mistake in psp_sw_init()
RDMA/irdma: Report correct WC error
ata: pata_ns87415: mark ns87560_tf_read static
ring-buffer: Fix wrong stat of cpu_buffer->read
tracing: Fix warning in trace_buffered_event_disable()
Revert "usb: gadget: tegra-xudc: Fix error check in tegra_xudc_powerdomain_init()"
usb: gadget: call usb_gadget_check_config() to verify UDC capability
USB: gadget: Fix the memory leak in raw_gadget driver
KVM: Grab a reference to KVM for VM and vCPU stats file descriptors
KVM: VMX: Don't fudge CR0 and CR4 for restricted L2 guest
serial: qcom-geni: drop bogus runtime pm state update
serial: 8250_dw: Preserve original value of DLF register
serial: sifive: Fix sifive_serial_console_setup() section
USB: serial: option: support Quectel EM060K_128
USB: serial: option: add Quectel EC200A module support
USB: serial: simple: add Kaufmann RKS+CAN VCP
USB: serial: simple: sort driver entries
can: gs_usb: gs_can_close(): add missing set of CAN state to CAN_STATE_STOPPED
Revert "usb: dwc3: core: Enable AutoRetry feature in the controller"
usb: dwc3: pci: skip BYT GPIO lookup table for hardwired phy
usb: dwc3: don't reset device side if dwc3 was configured as host-only
usb: ohci-at91: Fix the unhandle interrupt when resume
USB: quirks: add quirk for Focusrite Scarlett
usb: cdns3: fix incorrect calculation of ep_buf_size when more than one config
usb: xhci-mtk: set the dma max_seg_size
Revert "usb: xhci: tegra: Fix error check"
Documentation: security-bugs.rst: update preferences when dealing with the linux-distros group
Documentation: security-bugs.rst: clarify CVE handling
staging: r8712: Fix memory leak in _r8712_init_xmit_priv()
staging: ks7010: potential buffer overflow in ks_wlan_set_encode_ext()
tty: n_gsm: fix UAF in gsm_cleanup_mux
Revert "xhci: add quirk for host controllers that don't update endpoint DCS"
ALSA: hda/relatek: Enable Mute LED on HP 250 G8
hwmon: (k10temp) Enable AMD3255 Proc to show negative temperature
hwmon: (nct7802) Fix for temp6 (PECI1) processed even if PECI1 disabled
btrfs: check if the transaction was aborted at btrfs_wait_for_commit()
btrfs: check for commit error at btrfs_attach_transaction_barrier()
file: always lock position for FMODE_ATOMIC_POS
nfsd: Remove incorrect check in nfsd4_validate_stateid
tpm_tis: Explicitly check for error code
irq-bcm6345-l1: Do not assume a fixed block to cpu mapping
irqchip/gic-v4.1: Properly lock VPEs when doing a directLPI invalidation
locking/rtmutex: Fix task->pi_waiters integrity
KVM: x86: Disallow KVM_SET_SREGS{2} if incoming CR0 is invalid
virtio-net: fix race between set queues and probe
s390/dasd: fix hanging device after quiesce/resume
ASoC: wm8904: Fill the cache for WM8904_ADC_TEST_0 register
ceph: never send metrics if disable_send_metrics is set
dm cache policy smq: ensure IO doesn't prevent cleaner policy progress
rbd: make get_lock_owner_info() return a single locker or NULL
rbd: harden get_lock_owner_info() a bit
rbd: retrieve and check lock owner twice before blocklisting
tracing: Fix trace_event_raw_event_synth() if else statement
ACPI: processor: perflib: Use the "no limit" frequency QoS
ACPI: processor: perflib: Avoid updating frequency QoS unnecessarily
cpufreq: intel_pstate: Drop ACPI _PSS states table patching
selftests: mptcp: sockopt: use 'iptables-legacy' if available
io_uring: treat -EAGAIN for REQ_F_NOWAIT as final for io-wq
ASoC: cs42l51: fix driver to properly autoload with automatic module loading
selftests: mptcp: join: only check for ip6tables if needed
Linux 5.15.124
Change-Id: Ifeb2357cc7522671aff42c1408cc917a0f1aa905
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
|
||
|
|
d737715c00 |
Merge 5.15.123 into android14-5.15-lts
Changes in 5.15.123 ALSA: hda/realtek - remove 3k pull low procedure ALSA: hda/realtek: Add quirk for Clevo NS70AU ALSA: hda/realtek: Enable Mute LED on HP Laptop 15s-eq2xxx keys: Fix linking a duplicate key to a keyring's assoc_array perf probe: Add test for regression introduced by switch to die_get_decl_file() btrfs: fix warning when putting transaction with qgroups enabled after abort fuse: revalidate: don't invalidate if interrupted btrfs: zoned: fix memory leak after finding block group with super blocks fuse: ioctl: translate ENOSYS in outarg selftests: tc: set timeout to 15 minutes selftests: tc: add 'ct' action kconfig dep regmap: Drop initial version of maximum transfer length fixes regmap: Account for register length in SMBus I/O limits can: bcm: Fix UAF in bcm_proc_show() selftests: tc: add ConnTrack procfs kconfig drm/client: Fix memory leak in drm_client_target_cloned drm/client: Fix memory leak in drm_client_modeset_probe drm/amd/display: Disable MPC split by default on special asic drm/amd/display: Keep PHY active for DP displays on DCN31 ASoC: fsl_sai: Disable bit clock with transmitter ASoC: codecs: wcd938x: fix missing clsh ctrl error handling ASoC: codecs: wcd-mbhc-v2: fix resource leaks on component remove ASoC: codecs: wcd938x: fix resource leaks on component remove ASoC: codecs: wcd938x: fix missing mbhc init error handling ASoC: codecs: wcd934x: fix resource leaks on component remove ASoC: codecs: wcd938x: fix codec initialisation race ASoC: codecs: wcd938x: fix soundwire initialisation race ext4: correct inline offset when handling xattrs in inode body drm/radeon: Fix integer overflow in radeon_cs_parser_init ALSA: emu10k1: roll up loops in DSP setup code for Audigy quota: Properly disable quotas when add_dquot_ref() fails quota: fix warning in dqgrab() udf: Fix uninitialized array access for some pathnames fs: jfs: Fix UBSAN: array-index-out-of-bounds in dbAllocDmapLev MIPS: dec: prom: Address -Warray-bounds warning FS: JFS: Fix null-ptr-deref Read in txBegin FS: JFS: Check for read-only mounted filesystem in txBegin spi: bcm63xx: fix max prepend length fbdev: imxfb: warn about invalid left/right margin perf build: Fix library not found error when using CSLIBS pinctrl: amd: Use amd_pinconf_set() for all config options net: ethernet: ti: cpsw_ale: Fix cpsw_ale_get_field()/cpsw_ale_set_field() bridge: Add extack warning when enabling STP in netns. ethernet: use eth_hw_addr_set() instead of ether_addr_copy() of: net: add a helper for loading netdev->dev_addr ethernet: use of_get_ethdev_address() net: ethernet: mtk_eth_soc: handle probe deferral net: sched: cls_bpf: Undo tcf_bind_filter in case of an error iavf: Fix use-after-free in free_netdev iavf: Fix out-of-bounds when setting channels on remove security: keys: Modify mismatched function name octeontx2-pf: Dont allocate BPIDs for LBK interfaces bpf: Fix subprog idx logic in check_max_stack_depth igc: Prevent garbled TX queue with XDP ZEROCOPY tcp: annotate data-races around tcp_rsk(req)->ts_recent net: ipv4: Use kfree_sensitive instead of kfree net:ipv6: check return value of pskb_trim() Revert "tcp: avoid the lookup process failing to get sk in ehash table" fbdev: au1200fb: Fix missing IRQ check in au1200fb_drv_probe llc: Don't drop packet from non-root netns. netfilter: nf_tables: fix spurious set element insertion failure netfilter: nft_set_pipapo: fix improper element removal netfilter: nf_tables: skip bound chain in netns release path netfilter: nf_tables: skip bound chain on rule flush tcp: annotate data-races around tp->tcp_tx_delay tcp: annotate data-races around tp->keepalive_time tcp: annotate data-races around tp->keepalive_intvl tcp: annotate data-races around tp->keepalive_probes tcp: annotate data-races around icsk->icsk_syn_retries tcp: annotate data-races around tp->linger2 tcp: annotate data-races around rskq_defer_accept tcp: annotate data-races around tp->notsent_lowat tcp: annotate data-races around icsk->icsk_user_timeout tcp: annotate data-races around fastopenq.max_qlen net: phy: prevent stale pointer dereference in phy_init() jbd2: recheck chechpointing non-dirty buffer tracing/histograms: Return an error if we fail to add histogram to hist_vars list nixge: fix mac address error handling again Revert "drm/amd/display: edp do not add non-edid timings" Linux 5.15.123 Change-Id: I3162dc1d106295097e8075b29bab3646b7167e7b Signed-off-by: Greg Kroah-Hartman <gregkh@google.com> |
||
|
|
19f4d8d2d0 |
Merge android14-5.15 into android14-5.15-lts
This catches up the android14-5.15-lts branch up with a lot of bugfixes and ABI additions that were in the android14-5.15 branch. This consists of the following commits: * |
||
|
|
95e0307577 |
BACKPORT: blk-crypto: dynamically allocate fallback profile
blk_crypto_profile_init() calls lockdep_register_key(), which warns and does not register if the provided memory is a static object. blk-crypto-fallback currently has a static blk_crypto_profile and calls blk_crypto_profile_init() thereupon, resulting in the warning and failure to register. Fortunately it is simple enough to use a dynamically allocated profile and make lockdep function correctly. Fixes: |
||
|
|
c7860b4dbd |
UPSTREAM: media: usb: siano: Fix warning due to null work_func_t function pointer
[ Upstream commit |
||
|
|
cb69585f72 |
UPSTREAM: Bluetooth: L2CAP: Fix use-after-free in l2cap_sock_ready_cb
commit |
||
|
|
064fe2809f |
ANDROID: Delete build.config.gki.aarch64.16k.
This is now implemented with defconfig fragments. define_common_kernels use the regular build.config.gki.aarch64 and apply 16k_defconfig on it. Bug: 286589887 Test: TH Signed-off-by: Yifan Hong <elsk@google.com> (cherry picked from https://android-review.googlesource.com/q/commit:03d155e488ab9e5192cb344419e219203b82ea54) Merged-In: I71d9abd8faa19a2e517b1c9cb82f9b1a0c9b9197 Change-Id: I71d9abd8faa19a2e517b1c9cb82f9b1a0c9b9197 |
||
|
|
5acbeb3895 |
FROMGIT: usb: typec: tcpm: Refactor the PPS APDO selection
In current design of the PPS APDO selection, TCPM power supply only
accepts the requested voltage which is inside the range of the selected
PPS profile. To extend the flexibility and usability, remove the checks
about the voltage range in current profile. And try to search all PPS
APDOs of the Source that fit the requested voltage.
Also remove some redundant checks in tcpm_pd_build_pps_request.
Signed-off-by: Kyle Tso <kyletso@google.com>
Acked-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Link: https://lore.kernel.org/r/20230731162159.19483-1-kyletso@google.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Bug: 273608315
(cherry picked from commit
|
||
|
|
90ad33eb0e |
ANDROID: GKI: Update symbol list for lenovo
1 function symbol(s) added 'int migrate_swap(struct task_struct*, struct task_struct*, int, int)' Bug: 296962442 Change-Id: Id45b36c807d83abe0224e3e8c8b398bbae1235e0 Signed-off-by: erinwang <erinwang2@lenovo.com> |
||
|
|
844dfdef1c |
UPSTREAM: net: tap_open(): set sk_uid from current_fsuid()
commit |
||
|
|
7e0b682baf |
UPSTREAM: net: tun_chr_open(): set sk_uid from current_fsuid()
commit |
||
|
|
09eac0d3a8 |
UPSTREAM: usb: typec: tcpm: Fix response to vsafe0V event
commit |
||
|
|
8f1d7c6850 |
ANDROID: Update the ABI symbol list
Adding the following symbols: - d_path - __traceiter_android_vh_sched_setaffinity_early - __tracepoint_android_vh_sched_setaffinity_early Bug: 293815374 Change-Id: I2fd3b47217fa7a9806d81ba1964c94b3c4b05554 Signed-off-by: David Kimmel <davidkimmel@google.com> Signed-off-by: Will McVicker <willmcvicker@google.com> |
||
|
|
54afed884d |
UPSTREAM: net/sched: cls_route: No longer copy tcf_result on update to avoid use-after-free
[ Upstream commit |
||
|
|
d6c1899f33 |
UPSTREAM: net/sched: cls_fw: No longer copy tcf_result on update to avoid use-after-free
[ Upstream commit |
||
|
|
cb45423bcc |
UPSTREAM: net/sched: cls_u32: No longer copy tcf_result on update to avoid use-after-free
[ Upstream commit |
||
|
|
880189fdd2 |
UPSTREAM: netfilter: nf_tables: disallow rule addition to bound chain via NFTA_RULE_CHAIN_ID
[ Upstream commit |
||
|
|
4c73cba07b |
ANDROID: usb: gadget: f_accessory: Mitgate handling of non-existent USB request
Prevents mishandling USB requests that are no longer present. Bug: 161010552 Fixes: |
||
|
|
eebccae505 |
ANDROID: Update the ABI symbol list
Adding the following symbols: - drm_connector_attach_max_bpc_property Bug: 295934766 Change-Id: I7e32466caae2ae200b9549c62a3bcb2652612181 Signed-off-by: Petri Gynther <pgynther@google.com> |
||
|
|
a845525d3e |
FROMGIT: Multi-gen LRU: skip CMA pages when they are not eligible
This patch is based on the commit 5da226dbfce3("mm: skip CMA pages when
they are not available") which skips cma pages reclaim when they are not
eligible for the current allocation context. In mglru, such pages are
added to the tail of the immediate generation to maintain better LRU
order, which is unlike the case of conventional LRU where such pages are
directly added to the head of the LRU list(akin to adding to head of the
youngest generation in mglru).
No observable issue without this patch on MGLRU, but logically it make
sense to skip the CMA page reclaim when those pages can't be satisfied for
the current allocation context.
Link: https://lkml.kernel.org/r/1691568344-13475-1-git-send-email-quic_charante@quicinc.com
Change-Id: I586415b3e3a92da23f3e79b9d63802a2ced03432
Signed-off-by: Charan Teja Kalla <quic_charante@quicinc.com>
Reviewed-by: Kalesh Singh <kaleshsingh@google.com>
Cc: David Hildenbrand <david@redhat.com>
Cc: Suren Baghdasaryan <surenb@google.com>
Cc: Yu Zhao <yuzhao@google.com>
Cc: Zhaoyang Huang <zhaoyang.huang@unisoc.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
(cherry picked from commit 75d52d9304ef5b268eb798b0c679815290a0fc83 https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-unstable)
Bug: 288383787
Bug: 291719697
Signed-off-by: Kalesh Singh <kaleshsingh@google.com>
|
||
|
|
4502265e16 |
BACKPORT: mm: skip CMA pages when they are not available
This patch fixes unproductive reclaiming of CMA pages by skipping them
when they are not available for current context. It arises from the below
OOM issue, which was caused by a large proportion of MIGRATE_CMA pages
among free pages.
[ 36.172486] [03-19 10:05:52.172] ActivityManager: page allocation failure: order:0, mode:0xc00(GFP_NOIO), nodemask=(null),cpuset=foreground,mems_allowed=0
[ 36.189447] [03-19 10:05:52.189] DMA32: 0*4kB 447*8kB (C) 217*16kB (C) 124*32kB (C) 136*64kB (C) 70*128kB (C) 22*256kB (C) 3*512kB (C) 0*1024kB 0*2048kB 0*4096kB = 35848kB
[ 36.193125] [03-19 10:05:52.193] Normal: 231*4kB (UMEH) 49*8kB (MEH) 14*16kB (H) 13*32kB (H) 8*64kB (H) 2*128kB (H) 0*256kB 1*512kB (H) 0*1024kB 0*2048kB 0*4096kB = 3236kB
...
[ 36.234447] [03-19 10:05:52.234] SLUB: Unable to allocate memory on node -1, gfp=0xa20(GFP_ATOMIC)
[ 36.234455] [03-19 10:05:52.234] cache: ext4_io_end, object size: 64, buffer size: 64, default order: 0, min order: 0
[ 36.234459] [03-19 10:05:52.234] node 0: slabs: 53,objs: 3392, free: 0
This change further decreases the chance for wrong OOMs in the presence
of a lot of CMA memory.
[david@redhat.com: changelog addition]
Link: https://lkml.kernel.org/r/1685501461-19290-1-git-send-email-zhaoyang.huang@unisoc.com
Change-Id: I84f1145c38b5ff7b825f2122b33bc55997931bd7
Signed-off-by: Zhaoyang Huang <zhaoyang.huang@unisoc.com>
Acked-by: David Hildenbrand <david@redhat.com>
Cc: ke.wang <ke.wang@unisoc.com>
Cc: Matthew Wilcox <willy@infradead.org>
Cc: Minchan Kim <minchan@kernel.org>
Cc: Suren Baghdasaryan <surenb@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
(cherry picked from commit
|
||
|
|
53c38ebc4e |
ANDROID: dm-bow: Protect Ranges fetched and erased from the RB tree
Bug: 195565510
Signed-off-by: Lee Jones <lee.jones@linaro.org>
Change-Id: Ic8134eb902aa7d929e3121b2f69b1d258f570652
(cherry picked from commit
|
||
|
|
b88b3d3664 |
UPSTREAM: netfilter: nf_tables: skip bound chain on rule flush
[ Upstream commit |
||
|
|
6bcc6ff841 |
UPSTREAM: tty: n_gsm: fix UAF in gsm_cleanup_mux
commit |
||
|
|
b4a6c6f4a1 |
UPSTREAM: net/sched: sch_qfq: account for stab overhead in qfq_enqueue
[ Upstream commit |
||
|
|
1b2e6ebdc6 |
UPSTREAM: net/sched: sch_qfq: refactor parsing of netlink parameters
[ Upstream commit |
||
|
|
4128e28878 |
UPSTREAM: netfilter: nft_set_pipapo: fix improper element removal
[ Upstream commit |
||
|
|
1122dd3711 |
ANDROID: Add checkpatch target.
Running the following will run scripts/checkpatch.pl on a patch of HEAD tools/bazel run //common:checkpatch or a given Git SHA1: tools/bazel run //common:checkpatch -- --git_sha1 ... For additional flags, see tools/bazel run //common:checkpatch -- --help For details, see build/kernel/kleaf/docs/checkpatch.md in your source tree. Test: TH Bug: 259995152 Change-Id: Iaad8fd69508cf9be11340166aafbb84930d4805c Signed-off-by: Yifan Hong <elsk@google.com> (cherry picked from commit 7dbf26568fcccde88470e7a25c07f0c7229e85f1) |
||
|
|
056a17677d |
BACKPORT: FROMGIT: usb: typec: altmodes/displayport: Signal hpd when configuring pin assignment
When connecting to some DisplayPort partners, the initial status update after entering DisplayPort Alt Mode notifies that the DFP_D/UFP_D is not in the connected state. This leads to sending a configure message that keeps the device in USB mode. The port partner then sets DFP_D/UFP_D to the connected state and HPD to high in the same Attention message. Currently, the HPD signal is dropped in order to handle configuration. This patch saves changes to the HPD signal when the device chooses to configure during dp_altmode_status_update, and invokes sysfs_notify if necessary for HPD after configuring. Fixes: |
||
|
|
ee1147625d |
BACKPORT: USB: Gadget: core: Help prevent panic during UVC unconfigure
Avichal Rakesh reported a kernel panic that occurred when the UVC gadget driver was removed from a gadget's configuration. The panic involves a somewhat complicated interaction between the kernel driver and a userspace component (as described in the Link tag below), but the analysis did make one thing clear: The Gadget core should accomodate gadget drivers calling usb_gadget_deactivate() as part of their unbind procedure. Currently this doesn't work. gadget_unbind_driver() calls driver->unbind() while holding the udc->connect_lock mutex, and usb_gadget_deactivate() attempts to acquire that mutex, which will result in a deadlock. The simple fix is for gadget_unbind_driver() to release the mutex when invoking the ->unbind() callback. There is no particular reason for it to be holding the mutex at that time, and the mutex isn't held while the ->bind() callback is invoked. So we'll drop the mutex before performing the unbind callback and reacquire it afterward. We'll also add a couple of comments to usb_gadget_activate() and usb_gadget_deactivate(). Because they run in process context they must not be called from a gadget driver's ->disconnect() callback, which (according to the kerneldoc for struct usb_gadget_driver in include/linux/usb/gadget.h) may run in interrupt context. This may help prevent similar bugs from arising in the future. Reported-and-tested-by: Avichal Rakesh <arakesh@google.com> Signed-off-by: Alan Stern <stern@rowland.harvard.edu> Fixes: |
||
|
|
7ba2131ad4 |
FROMLIST: scsi: ufs: Disable zone write locking
From the UFSHCI 4.0 specification, about the legacy (single queue) mode: "The host controller always process transfer requests in-order according to the order submitted to the list. In case of multiple commands with single doorbell register ringing (batch mode), The dispatch order for these transfer requests by host controller will base on their index in the List. A transfer request with lower index value will be executed before a transfer request with higher index value." From the UFSHCI 4.0 specification, about the MCQ mode: "Command Submission 1. Host SW writes an Entry to SQ 2. Host SW updates SQ doorbell tail pointer Command Processing 3. After fetching the Entry, Host Controller updates SQ doorbell head pointer 4. Host controller sends COMMAND UPIU to UFS device" In other words, for both legacy and MCQ mode, UFS controllers are required to forward commands to the UFS device in the order these commands have been received from the host. Notes: - For legacy mode this is only correct if the host submits one command at a time. The UFS driver does this. - Also in legacy mode, the command order is not preserved if auto-hibernation is enabled in the UFS controller. Hence, enable zone write locking if auto-hibernation is enabled. This patch improves performance as follows on my test setup: - With the mq-deadline scheduler: 2.5x more IOPS for small writes. - When not using an I/O scheduler compared to using mq-deadline with zone locking: 4x more IOPS for small writes. Cc: Martin K. Petersen <martin.petersen@oracle.com> Cc: Avri Altman <avri.altman@wdc.com> Cc: Christoph Hellwig <hch@lst.de> Cc: Damien Le Moal <dlemoal@kernel.org> Cc: Ming Lei <ming.lei@redhat.com> Change-Id: Ie569b09ed78ecb91af0a13f56992f075f8d1f07a Signed-off-by: Bart Van Assche <bvanassche@acm.org> Bug: 234829282 Link: https://lore.kernel.org/linux-block/20230804154821.3232094-1-bvanassche@acm.org/T/#mbfe0e160cc8a47c16af598f1c0b3aeeb125d66de Signed-off-by: Bart Van Assche <bvanassche@google.com> |
||
|
|
4224108a41 |
FROMLIST: scsi: ufs: Split an if-condition
Make the next patch in this series easier to read. No functionality is changed. Cc: Martin K. Petersen <martin.petersen@oracle.com> Cc: Avri Altman <avri.altman@wdc.com> Cc: Christoph Hellwig <hch@lst.de> Cc: Damien Le Moal <dlemoal@kernel.org> Cc: Ming Lei <ming.lei@redhat.com> Change-Id: Id28955a0fb550c0e65eca2979efd3c796ac97dfa Signed-off-by: Bart Van Assche <bvanassche@acm.org> Bug: 234829282 Link: https://lore.kernel.org/linux-block/20230804154821.3232094-1-bvanassche@acm.org/T/#m49d28556332d4b959b8d8f4f7beeaec14add573d Signed-off-by: Bart Van Assche <bvanassche@google.com> |
||
|
|
1c33b80bf7 |
FROMLIST: scsi: scsi_debug: Support injecting unaligned write errors
Allow user space software, e.g. a blktests test, to inject unaligned write errors. Cc: Martin K. Petersen <martin.petersen@oracle.com> Cc: Douglas Gilbert <dgilbert@interlog.com> Change-Id: I05beba49f97d897b46bb1dc030037d4ae461f02b Signed-off-by: Bart Van Assche <bvanassche@acm.org> Bug: 234829282 Link: https://lore.kernel.org/linux-block/20230804154821.3232094-1-bvanassche@acm.org/T/#m90e1577803b1b226a8d85c9ac6195b4c0a4d2e3f Signed-off-by: Bart Van Assche <bvanassche@google.com> |
||
|
|
6c0276ef82 |
FROMLIST: scsi: scsi_debug: Support disabling zone write locking
Make it easier to test handling of QUEUE_FLAG_NO_ZONE_WRITE_LOCK by adding support for setting this flag for scsi_debug request queues. Cc: Martin K. Petersen <martin.petersen@oracle.com> Cc: Douglas Gilbert <dgilbert@interlog.com> Change-Id: I6c8f338dea26c8bfbbca18c70e306f904eccf0cb Signed-off-by: Bart Van Assche <bvanassche@acm.org> Bug: 234829282 Link: https://lore.kernel.org/linux-block/20230804154821.3232094-1-bvanassche@acm.org/T/#m42e4fdc8dce111f4cdd4dee21f438cd6bf0c9c70 Signed-off-by: Bart Van Assche <bvanassche@google.com> |
||
|
|
3347f7daae |
FROMLIST: scsi: core: Retry unaligned zoned writes
If zoned writes (REQ_OP_WRITE) for a sequential write required zone have a starting LBA that differs from the write pointer, e.g. because zoned writes have been reordered, then the storage device will respond with an UNALIGNED WRITE COMMAND error. Send commands that failed with an unaligned write error to the SCSI error handler if zone write locking is disabled. Let the SCSI error handler sort SCSI commands per LBA before resubmitting these. If zone write locking is disabled, increase the number of retries for write commands sent to a sequential zone to the maximum number of outstanding commands because in the worst case the number of times reordered zoned writes have to be retried is (number of outstanding writes per sequential zone) - 1. Reviewed-by: Damien Le Moal <dlemoal@kernel.org> Cc: Martin K. Petersen <martin.petersen@oracle.com> Cc: Christoph Hellwig <hch@lst.de> Cc: Ming Lei <ming.lei@redhat.com> Change-Id: I519cb3aedea7e0635be8af554edee76e8d162498 Signed-off-by: Bart Van Assche <bvanassche@acm.org> Bug: 234829282 Link: https://lore.kernel.org/linux-block/20230804154821.3232094-1-bvanassche@acm.org/T/#ma6573df4361baa921c258e3b39685a5c4c509faa Signed-off-by: Bart Van Assche <bvanassche@google.com> |
||
|
|
4e1d1b839d |
FROMLIST: block/mq-deadline: Only use zone locking if necessary
Measurements have shown that limiting the queue depth to one per zone for zoned writes has a significant negative performance impact on zoned UFS devices. Hence this patch that disables zone locking by the mq-deadline scheduler if the storage controller preserves the command order. This patch is based on the following assumptions: - It happens infrequently that zoned write requests are reordered by the block layer. - The I/O priority of all write requests is the same per zone. - Either no I/O scheduler is used or an I/O scheduler is used that serializes write requests per zone. Reviewed-by: Damien Le Moal <dlemoal@kernel.org> Cc: Christoph Hellwig <hch@lst.de> Cc: Ming Lei <ming.lei@redhat.com> Change-Id: I2000beaa430f29ea1096149a7d3b8a5423b679ec Signed-off-by: Bart Van Assche <bvanassche@acm.org> Bug: 234829282 Link: https://lore.kernel.org/linux-block/20230804154821.3232094-1-bvanassche@acm.org/T/#made79fdd0e1d8d466f734250f3868b4d6f8105db Signed-off-by: Bart Van Assche <bvanassche@google.com> |
||
|
|
5414ea3f50 |
BACKPORT: FROMLIST: block: Introduce the flag QUEUE_FLAG_NO_ZONE_WRITE_LOCK
Writes in sequential write required zones must happen at the write pointer. Even if the submitter of the write commands (e.g. a filesystem) submits writes for sequential write required zones in order, the block layer or the storage controller may reorder these write commands. The zone locking mechanism in the mq-deadline I/O scheduler serializes write commands for sequential zones. Some but not all storage controllers require this serialization. Introduce a new request queue flag to allow block drivers to indicate that they preserve the order of write commands and thus do not require serialization of writes per zone. Reviewed-by: Damien Le Moal <dlemoal@kernel.org> Cc: Christoph Hellwig <hch@lst.de> Cc: Ming Lei <ming.lei@redhat.com> Change-Id: Ibf578f0ec92074ccc2c11d2c24c8d6309294bc8c Signed-off-by: Bart Van Assche <bvanassche@acm.org> Bug: 234829282 Link: https://lore.kernel.org/linux-block/20230804154821.3232094-1-bvanassche@acm.org/T/#m539c093dff4322599af97bccea975f73f3f67013 Signed-off-by: Bart Van Assche <bvanassche@google.com> |
||
|
|
d01888a968 |
Revert "ANDROID: block: Introduce a request queue flag for pipelining zoned writes"
Prepare for applying the FROMLIST version of this patch.
This reverts commit
|
||
|
|
6a1ceeede7 |
Revert "ANDROID: block/mq-deadline: Only use zone locking if necessary"
Prepare for applying the FROMLIST version of this patch.
This reverts commit
|
||
|
|
dc77af3d38 |
Revert "ANDROID: scsi: Retry unaligned zoned writes"
Prepare for applying the FROMLIST version of this patch.
This reverts commit
|
||
|
|
2e83e40f6a |
Revert "ANDROID: scsi: ufs: Enable zoned write pipelining"
Prepare for applying the FROMLIST version of this patch.
This reverts commit
|
||
|
|
e08f97fe80 |
Revert "ANDROID: scsi: ufs: Disable zoned write pipelining"
Prepare for applying the FROMLIST version of this patch.
This reverts commit
|
||
|
|
a0565250b3 |
Revert "ANDROID: scsi: core: Delay unaligned write error retries"
Prepare for applying the FROMLIST version of this patch.
This reverts commit
|
||
|
|
053f022ed4 |
Revert "ANDROID: scsi: core: Limit zoned write retries"
Prepare for applying the FROMLIST version of this patch.
This reverts commit
|
||
|
|
8c7e6396da |
ANDROID: GKI: update mtktv symbol
update for gki modules protected symbols 11 function symbol(s) added 'void baswap(bdaddr_t*, const bdaddr_t*)' 'void bt_procfs_cleanup(struct net*, const char*)' 'int bt_procfs_init(struct net*, const char*, struct bt_sock_list*, int(*)(struct seq_file*, void*))' 'void bt_sock_link(struct bt_sock_list*, struct sock*)' 'int bt_sock_register(int, const struct net_proto_family*)' 'void bt_sock_unlink(struct bt_sock_list*, struct sock*)' 'void bt_sock_unregister(int)' 'int generic_mii_ioctl(struct mii_if_info*, struct mii_ioctl_data*, int, unsigned int*)' 'bool l2cap_is_socket(struct socket*)' 'int mii_ethtool_set_link_ksettings(struct mii_if_info*, const struct ethtool_link_ksettings*)' 'int mii_nway_restart(struct mii_if_info*)' Bug: 295293717 Change-Id: I14162165fc644243d4d73aa32a0cd8cb5c10846e Signed-off-by: Lecopzer Chen <lecopzer.chen@mediatek.com> |
||
|
|
7d47dd77f1 |
ANDROID: GKI: Add mtktv ABI symbol list, media, trace and remaining subsys
43 function symbol(s) added 'int __devm_mdiobus_register(struct device*, struct mii_bus*, struct module*)' 'void __insert_inode_hash(struct inode*, unsigned long)' 'int __mdiobus_register(struct mii_bus*, struct module*)' 'void __sock_recv_cmsgs(struct msghdr*, struct sock*, struct sk_buff*)' 'int __trace_bputs(unsigned long, const char*)' 'int __traceiter_android_vh_oom_check_panic(void*, struct oom_control*, int*)' 'void _trace_android_vh_record_pcpu_rwsem_starttime(struct task_struct*, unsigned long)' 'int block_is_partially_uptodate(struct page*, unsigned long, unsigned long)' 'int buffer_migrate_page(struct address_space*, struct page*, struct page*, enum migrate_mode)' 'struct inode* igrab(struct inode*)' 'int iio_read_channel_scale(struct iio_channel*, int*, int*)' 'void invalidate_bh_lrus()' 'void io_schedule()' 'u64 jiffies64_to_nsecs(u64)' 'int kern_path(const char*, unsigned int, struct path*)' 'int kmsg_dump_register(struct kmsg_dumper*)' 'int kmsg_dump_unregister(struct kmsg_dumper*)' 'int kstrtoul_from_user(const char*, size_t, unsigned int, unsigned long*)' 'enum led_default_state led_init_default_state_get(struct fwnode_handle*)' 'int lzo1x_1_compress(const unsigned char*, size_t, unsigned char*, size_t*, void*)' 'int lzo1x_decompress_safe(const unsigned char*, size_t, unsigned char*, size_t*)' 'struct media_link* media_create_intf_link(struct media_entity*, struct media_interface*, u32)' 'int media_create_pad_links(const struct media_device*, u32, struct media_entity*, u16, u32, struct media_entity*, u16, u32, bool)' 'int media_device_register_entity(struct media_device*, struct media_entity*)' 'int media_device_register_entity_notify(struct media_device*, struct media_entity_notify*)' 'void media_device_unregister_entity(struct media_entity*)' 'struct media_intf_devnode* media_devnode_create(struct media_device*, u32, u32, u32, u32)' 'void media_devnode_remove(struct media_intf_devnode*)' 'struct media_link* media_entity_find_link(struct media_pad*, struct media_pad*)' 'int media_get_pad_index(struct media_entity*, bool, enum media_pad_signal_type)' 'struct dentry* mount_bdev(struct file_system_type*, int, const char*, void*, int(*)(struct super_block*, void*, int))' 'struct list_head* seq_list_next(void*, struct list_head*, loff_t*)' 'struct list_head* seq_list_start(struct list_head*, loff_t)' 'int seq_open_private(struct file*, const struct seq_operations*, int)' 'int sprint_symbol_no_offset(char*, unsigned long)' 'unsigned int stack_trace_save_regs(struct pt_regs*, unsigned long*, unsigned int, unsigned int)' 'ssize_t store_sampling_rate(struct gov_attr_set*, const char*, size_t)' 'int sysfs_merge_group(struct kobject*, const struct attribute_group*)' 'void sysfs_unmerge_group(struct kobject*, const struct attribute_group*)' 'int trace_array_destroy(struct trace_array*)' 'struct trace_array* trace_array_get_by_name(const char*)' 'int trace_array_init_printk(struct trace_array*)' 'int trace_array_printk(struct trace_array*, unsigned long, const char*, ...)' 4 variable symbol(s) added 'struct tracepoint __tracepoint_android_vh_oom_check_panic' 'const struct fwnode_operations irqchip_fwnode_ops' 'struct workqueue_struct* system_freezable_power_efficient_wq' 'struct srcu_struct tracepoint_srcu' Bug: 293831482 Change-Id: If762f88971a9d8c2013c407838e46669a78719ff Signed-off-by: Lecopzer Chen <lecopzer.chen@mediatek.com> |
||
|
|
655a288103 |
ANDROID: GKI: Add mtktv ABI symbol list, cpufreq and misc
32 function symbol(s) added 'void clk_bulk_put_all(int, struct clk_bulk_data*)' '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*)' 'void console_verbose()' 'void cpufreq_dbs_governor_exit(struct cpufreq_policy*)' 'int cpufreq_dbs_governor_init(struct cpufreq_policy*)' 'void cpufreq_dbs_governor_limits(struct cpufreq_policy*)' 'int cpufreq_dbs_governor_start(struct cpufreq_policy*)' 'void cpufreq_dbs_governor_stop(struct cpufreq_policy*)' 'void cpufreq_update_policy(unsigned int)' 'struct dentry* d_add_ci(struct dentry*, struct inode*, struct qstr*)' 'unsigned int dbs_update(struct cpufreq_policy*)' 'void dev_get_tstats64(struct net_device*, struct rtnl_link_stats64*)' 'int device_match_of_node(struct device*, const void*)' 'struct regmap* device_node_to_regmap(struct device_node*)' 'void devm_devfreq_remove_device(struct device*, struct devfreq*)' 'int devm_extcon_register_notifier(struct device*, struct extcon_dev*, unsigned int, struct notifier_block*)' 'struct gpio_desc* devm_gpiod_get_index_optional(struct device*, const char*, unsigned int, enum gpiod_flags)' 'int devm_hwspin_lock_unregister(struct device*, struct hwspinlock_device*)' 'struct mii_bus* devm_mdiobus_alloc_size(struct device*, int)' 'void drm_atomic_state_default_clear(struct drm_atomic_state*)' 'void drm_display_mode_from_videomode(const struct videomode*, struct drm_display_mode*)' 'void end_page_writeback(struct page*)' 'int eth_platform_get_mac_address(struct device*, u8*)' 'void ftrace_dump(enum ftrace_dump_mode)' 'void* gen_pool_dma_alloc(struct gen_pool*, size_t, dma_addr_t*)' 'struct gen_pool* gen_pool_get(struct device*, const char*)' 'int generic_error_remove_page(struct address_space*, struct page*)' 'void gov_update_cpu_data(struct dbs_data*)' 'struct gpio_chip* gpiochip_find(void*, int(*)(struct gpio_chip*, void*))' 'int gpiod_is_active_low(const struct gpio_desc*)' 'int idr_alloc_u32(struct idr*, void*, u32*, unsigned long, gfp_t)' 'void* idr_get_next_ul(struct idr*, unsigned long*)' Bug: 293831482 Change-Id: Icc54949b24588b4d3e2ef59783b494bf3cd682c0 Signed-off-by: Lecopzer Chen <lecopzer.chen@mediatek.com> |
||
|
|
663ca511e8 |
ANDROID: GKI: Add mtktv ABI symbol list, net, eth, regulator and pinmux
36 function symbol(s) added 'void net_selftest(struct net_device*, struct ethtool_test*, u64*)' 'int net_selftest_get_count()' 'void net_selftest_get_strings(u8*)' 'struct thermal_cooling_device* of_cpufreq_cooling_register(struct cpufreq_policy*)' 'void path_put(const struct path*)' 'ssize_t perf_event_sysfs_show(struct device*, struct device_attribute*, char*)' '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_do_ioctl_running(struct net_device*, struct ifreq*, int)' '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_link_ksettings(struct net_device*, const struct ethtool_link_ksettings*)' 'void phy_start(struct phy_device*)' 'void phy_stop(struct phy_device*)' 'int phy_suspend(struct phy_device*)' 'pid_t pid_vnr(struct pid*)' 'void pinconf_generic_dump_config(struct pinctrl_dev*, struct seq_file*, unsigned long)' 'int pinctrl_count_index_with_args(const struct device_node*, const char*)' 'int pinctrl_generic_add_group(struct pinctrl_dev*, const char*, int*, int, void*)' 'int pinctrl_generic_get_group_count(struct pinctrl_dev*)' 'const char* pinctrl_generic_get_group_name(struct pinctrl_dev*, unsigned int)' 'int pinctrl_generic_get_group_pins(struct pinctrl_dev*, unsigned int, const unsigned int**, unsigned int*)' 'int pinctrl_generic_remove_group(struct pinctrl_dev*, unsigned int)' 'int pinctrl_parse_index_with_args(const struct device_node*, const char*, int, struct of_phandle_args*)' 'int pinctrl_register_and_init(struct pinctrl_desc*, struct device*, void*, struct pinctrl_dev**)' 'int pinmux_generic_add_function(struct pinctrl_dev*, const char*, const char**, unsigned int, void*)' '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 pinmux_generic_remove_function(struct pinctrl_dev*, unsigned int)' 'void proc_set_user(struct proc_dir_entry*, kuid_t, kgid_t)' 'int regulator_set_mode(struct regulator*, unsigned int)' 'int regulator_set_voltage_time(struct regulator*, int, int)' 'int sb_min_blocksize(struct super_block*, int)' 'int schedule_hrtimeout(ktime_t*, enum hrtimer_mode)' Bug: 293831482 Change-Id: I83226962af59b23418594dbc4ca816f9a0456b45 Signed-off-by: Lecopzer Chen <lecopzer.chen@mediatek.com> |
||
|
|
99c011c37d |
ANDROID: GKI: Add mtktv ABI symbol list, pwm, serial and snd
22 function symbol(s) added 'void pwm_free(struct pwm_device*)' 'struct pwm_device* pwm_request(int, const char*)' 'void serial8250_do_pm(struct uart_port*, unsigned int, unsigned int)' 'void serial8250_do_set_termios(struct uart_port*, struct ktermios*, struct ktermios*)' 'void serial8250_do_shutdown(struct uart_port*)' 'int serial8250_do_startup(struct uart_port*)' 'struct uart_8250_port* serial8250_get_port(int)' 'unsigned int serial8250_modem_status(struct uart_8250_port*)' '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_rpm_put_tx(struct uart_8250_port*)' 'unsigned char serial8250_rx_chars(struct uart_8250_port*, unsigned char)' 'void serial8250_suspend_port(int)' 'void serial8250_tx_chars(struct uart_8250_port*)' 'void serial8250_unregister_port(int)' 'bool sk_capable(const struct sock*, int)' 'int snd_compress_new(struct snd_card*, int, int, const char*, struct snd_compr*)' 'struct snd_kcontrol* snd_ctl_find_id(struct snd_card*, struct snd_ctl_elem_id*)' 'int snd_pcm_format_big_endian(snd_pcm_format_t)' 'const char* snd_pcm_format_name(snd_pcm_format_t)' Bug: 293831482 Change-Id: I4b664a3b232f0a038ed59ec523f09eab3e3506cc Signed-off-by: Lecopzer Chen <lecopzer.chen@mediatek.com> |