Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Linux-6.6.y: Merge into the main branch #8

Merged
merged 44 commits into from
Dec 31, 2024

Conversation

qaz6750
Copy link
Owner

@qaz6750 qaz6750 commented Dec 31, 2024

No description provided.

qaz6750 and others added 30 commits January 1, 2025 01:50
OpenHarmony basic features:
 * Blackbox
 * Hievent buffer manager
 * Simple log manager for OpenHarmonyOS
 * Hisysevent feature
 * Base DFX hungtask
 * (DFX_ZEROHUNG) Catch hung log

Signed-off-by: XiaoYeZi <qaz6750@outlook.com>
Signed-off-by: XiaoYeZi <qaz6750@outlook.com>
…system

Signed-off-by: XiaoYeZi <qaz6750@outlook.com>
Signed-off-by: XiaoYeZi <qaz6750@outlook.com>
* Resolve compilation errors that occur during migration to the new
  kernel.
Ths driver supports the fuel gauge hardware available on PMICs such as PMI8994,
as well as gen 3 fuel gauge hardware available on PMI8998.

Co-developed-by: Caleb Connolly <caleb@connolly.tech>
Co-developed-by: Yassine Oudjana <y.oudjana@protonmail.com>
Signed-off-by: Yassine Oudjana <y.oudjana@protonmail.com>

qcom_fg: expose PROP_STATUS to fix upower not detecting charging status properly

fg: adopt battery info API changes

power: qcom_fg: silence -EPROBE_DEFER error

Sometimes, the devm_power_supply_register function will return
ERR_PTR(-EPROBE_DEFER) to make the driver subsystem probe the fuel guage
later. This is not an error and do not report it as such.

Signed-off-by: Richard Acayan <mailingradian@gmail.com>

power/supply: qcom_fg: add present sysfs property

Present property is required for battery drivers from UPower>=1.90.0
onwards to work properly.

Signed-off-by: Alexander Martinz <amartinz@shiftphones.com>
Signed-off-by: map220v <map220v300@gmail.com>
power: qcom_fg: Fix memif address for pm8150b

power: qcom_fg: Fix wrong psy passed to power_supply_put_battery_info()

power: qcom_fg: Add support for temperature data on gen4 fg
Signed-off-by: XiaoYeZi <qaz6750@outlook.com>
Signed-off-by: XiaoYeZi <qaz6750@outlook.com>
Working:
* touchscreen via goodix9886
* sound via tfa9874 / headphone via wcd9340
* wifi
* ufs
* usb
* drm
* gpu

Not working / broken:
* bluetooth

* The above status is from Linux 6.5, and the current status may
  change.

Signed-off-by: XiaoYeZi <qaz6750@outlook.com>
Signed-off-by: XiaoYeZi <qaz6750@outlook.com>
* To address the issue with the FTS521 driver,
* HACK was performed on gpiolib

Signed-off-by: XiaoYeZi <qaz6750@outlook.com>
Signed-off-by: XiaoYeZi <qaz6750@outlook.com>
* In the device schematic, vdd_boost_vreg is an important power supply
  for the Xiaomi 9 FTS521 touch screen, so we set it here.

Signed-off-by: XiaoYeZi <qaz6750@outlook.com>
Signed-off-by: XiaoYeZi <qaz6750@outlook.com>
* Warning only appears on higher versions of the kernel, but the patch
  was still merged from the 6.12 branch.

Signed-off-by: XiaoYeZi <qaz6750@outlook.com>
…when 'hilog buffer' is empty

Signed-off-by: 柳金 <ljin0613@163.com>
Signed-off-by: XiaoYeZi <qaz6750@outlook.com>
Signed-off-by: XiaoYeZi <qaz6750@outlook.com>
Signed-off-by: XiaoYeZi <qaz6750@outlook.com>
…okenid_get_permission

Signed-off-by: jidong <jidong4@huawei.com>
Change-Id: I176437cad8531928db4ec2c5b096e108304464aa
Signed-off-by: XiaoYeZi <qaz6750@outlook.com>
Signed-off-by: XiaoYeZi <qaz6750@outlook.com>
qaz6750 and others added 14 commits January 1, 2025 01:51
* In the downstream kernel, UART13 does not use interrupts, but instead
  uses interrupts extended and adds a GPIO. Therefore, we need to apply
  this improvement to the upstream to represent the actual situation. And
  we need to consider whether to move it to sm8150.dtsi, as this is a
  platform wide change.

* https://github.com/MiCode/Xiaomi_Kernel_OpenSource/blob/cepheus-q-oss/arch/arm64/boot/dts/qcom/sm8150-qupv3.dtsi#L430-L431
  It reflects this very well.

Signed-off-by: XiaoYeZi <qaz6750@outlook.com>
Required for MAX98927 speaker audio to work on the OnePlus 6.
…ing config

* The sdm8150 sndcard driver is highly customized for NABU, but it has
  not yet been made universal for every SM8150 device, so sdm845 sndcard
  is used instead.

Signed-off-by: XiaoYeZi <qaz6750@outlook.com>
Signed-off-by: XiaoYeZi <qaz6750@outlook.com>
Branch: OpenHarmony_feature_202401017
PR: !1614 fix the remove_node_by_token bug

Signed-off-by: jidong <jidong4@huawei.com>
Signed-off-by: XiaoYeZi <qaz6750@outlook.com>
Change-Id: I0d3c3dbfd28dcce853d242f4155e3bf785964b9c
* In order to solve the touch issue on Xiaomi 9,
* I introduced ST FTS V521 touchscreen drive from downstream kernel porting.
* In order to adapt to the Linux 6.5-rc3 version, had made adaptations to some of the code.

Modifications:
* Improve the startStopWatch and stopStopWatch methods of the driver.
* HACK: Due to the inability of the mainline kernel to integrate touch
  firmware into the kernel, we have cancelled the handling of firmware
  upgrade failures. The touch IC comes with a built-in firmware.

Co-authored-by: BigfootACA <bigfoot@classfun.cn>
Signed-off-by: XiaoYeZi <qaz6750@outlook.com>
Signed-off-by: XiaoYeZi <qaz6750@outlook.com>
Signed-off-by: XiaoYeZi <qaz6750@outlook.com>
…hael

Signed-off-by: XiaoYeZi <qaz6750@outlook.com>
…USB configurations

Signed-off-by: XiaoYeZi <qaz6750@outlook.com>
Signed-off-by: XiaoYeZi <qaz6750@outlook.com>
Signed-off-by: XiaoYeZi <qaz6750@outlook.com>
* The Hyperhold driver is a key feature of OpenHarmony 5.0, so it is now
  being merged into Linux 6.6 to address some of the issues.

Signed-off-by: XiaoYeZi <qaz6750@outlook.com>
…management for hyperhold

ohos inclusion
category: feature
issue: #I4RXQ3
CVE: NA

-----------------
Put file page into pgdat lru list instead of memcg lru list for
management in hyperhold.
Add some interfaces in memcg for management in hyperhold.

Signed-off-by: XiaoYeZi <qaz6750@outlook.com>
@qaz6750 qaz6750 merged commit 2b6e899 into ohos-xiaomi-6.6.y Dec 31, 2024
@qaz6750 qaz6750 deleted the ohos-xiaomi-6.6.y-test branch December 31, 2024 18:27
qaz6750 pushed a commit that referenced this pull request Jan 17, 2025
…le_direct_reclaim()

commit 6aaced5 upstream.

The task sometimes continues looping in throttle_direct_reclaim() because
allow_direct_reclaim(pgdat) keeps returning false.

 #0 [ffff80002cb6f8d0] __switch_to at ffff8000080095ac
 #1 [ffff80002cb6f900] __schedule at ffff800008abbd1c
 #2 [ffff80002cb6f990] schedule at ffff800008abc50c
 #3 [ffff80002cb6f9b0] throttle_direct_reclaim at ffff800008273550
 #4 [ffff80002cb6fa20] try_to_free_pages at ffff800008277b68
 #5 [ffff80002cb6fae0] __alloc_pages_nodemask at ffff8000082c4660
 #6 [ffff80002cb6fc50] alloc_pages_vma at ffff8000082e4a98
 #7 [ffff80002cb6fca0] do_anonymous_page at ffff80000829f5a8
 #8 [ffff80002cb6fce0] __handle_mm_fault at ffff8000082a5974
 gregkh#9 [ffff80002cb6fd90] handle_mm_fault at ffff8000082a5bd4

At this point, the pgdat contains the following two zones:

        NODE: 4  ZONE: 0  ADDR: ffff00817fffe540  NAME: "DMA32"
          SIZE: 20480  MIN/LOW/HIGH: 11/28/45
          VM_STAT:
                NR_FREE_PAGES: 359
        NR_ZONE_INACTIVE_ANON: 18813
          NR_ZONE_ACTIVE_ANON: 0
        NR_ZONE_INACTIVE_FILE: 50
          NR_ZONE_ACTIVE_FILE: 0
          NR_ZONE_UNEVICTABLE: 0
        NR_ZONE_WRITE_PENDING: 0
                     NR_MLOCK: 0
                    NR_BOUNCE: 0
                   NR_ZSPAGES: 0
            NR_FREE_CMA_PAGES: 0

        NODE: 4  ZONE: 1  ADDR: ffff00817fffec00  NAME: "Normal"
          SIZE: 8454144  PRESENT: 98304  MIN/LOW/HIGH: 68/166/264
          VM_STAT:
                NR_FREE_PAGES: 146
        NR_ZONE_INACTIVE_ANON: 94668
          NR_ZONE_ACTIVE_ANON: 3
        NR_ZONE_INACTIVE_FILE: 735
          NR_ZONE_ACTIVE_FILE: 78
          NR_ZONE_UNEVICTABLE: 0
        NR_ZONE_WRITE_PENDING: 0
                     NR_MLOCK: 0
                    NR_BOUNCE: 0
                   NR_ZSPAGES: 0
            NR_FREE_CMA_PAGES: 0

In allow_direct_reclaim(), while processing ZONE_DMA32, the sum of
inactive/active file-backed pages calculated in zone_reclaimable_pages()
based on the result of zone_page_state_snapshot() is zero.

Additionally, since this system lacks swap, the calculation of inactive/
active anonymous pages is skipped.

        crash> p nr_swap_pages
        nr_swap_pages = $1937 = {
          counter = 0
        }

As a result, ZONE_DMA32 is deemed unreclaimable and skipped, moving on to
the processing of the next zone, ZONE_NORMAL, despite ZONE_DMA32 having
free pages significantly exceeding the high watermark.

The problem is that the pgdat->kswapd_failures hasn't been incremented.

        crash> px ((struct pglist_data *) 0xffff00817fffe540)->kswapd_failures
        $1935 = 0x0

This is because the node deemed balanced.  The node balancing logic in
balance_pgdat() evaluates all zones collectively.  If one or more zones
(e.g., ZONE_DMA32) have enough free pages to meet their watermarks, the
entire node is deemed balanced.  This causes balance_pgdat() to exit early
before incrementing the kswapd_failures, as it considers the overall
memory state acceptable, even though some zones (like ZONE_NORMAL) remain
under significant pressure.


The patch ensures that zone_reclaimable_pages() includes free pages
(NR_FREE_PAGES) in its calculation when no other reclaimable pages are
available (e.g., file-backed or anonymous pages).  This change prevents
zones like ZONE_DMA32, which have sufficient free pages, from being
mistakenly deemed unreclaimable.  By doing so, the patch ensures proper
node balancing, avoids masking pressure on other zones like ZONE_NORMAL,
and prevents infinite loops in throttle_direct_reclaim() caused by
allow_direct_reclaim(pgdat) repeatedly returning false.


The kernel hangs due to a task stuck in throttle_direct_reclaim(), caused
by a node being incorrectly deemed balanced despite pressure in certain
zones, such as ZONE_NORMAL.  This issue arises from
zone_reclaimable_pages() returning 0 for zones without reclaimable file-
backed or anonymous pages, causing zones like ZONE_DMA32 with sufficient
free pages to be skipped.

The lack of swap or reclaimable pages results in ZONE_DMA32 being ignored
during reclaim, masking pressure in other zones.  Consequently,
pgdat->kswapd_failures remains 0 in balance_pgdat(), preventing fallback
mechanisms in allow_direct_reclaim() from being triggered, leading to an
infinite loop in throttle_direct_reclaim().

This patch modifies zone_reclaimable_pages() to account for free pages
(NR_FREE_PAGES) when no other reclaimable pages exist.  This ensures zones
with sufficient free pages are not skipped, enabling proper balancing and
reclaim behavior.

[akpm@linux-foundation.org: coding-style cleanups]
Link: https://lkml.kernel.org/r/20241130164346.436469-1-snishika@redhat.com
Link: https://lkml.kernel.org/r/20241130161236.433747-2-snishika@redhat.com
Fixes: 5a1c84b ("mm: remove reclaim and compaction retry approximations")
Signed-off-by: Seiji Nishikawa <snishika@redhat.com>
Cc: Mel Gorman <mgorman@techsingularity.net>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants