Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
15 commits
Select commit Hold shift + click to select a range
8625060
Enable required kernel features for Droidspaces on arm64
google-labs-jules[bot] Jan 30, 2026
f77544c
Merge pull request #1 from shedowe19/droidspaces-config-arm64-1453587…
shedowe19 Jan 30, 2026
66d6849
Enable comprehensive kernel features for Droidspaces on arm64
google-labs-jules[bot] Jan 30, 2026
906c487
Merge branch '16.0.0-sultan' into droidspaces-config-arm64-1453587427…
shedowe19 Jan 30, 2026
803c80b
Merge pull request #2 from shedowe19/droidspaces-config-arm64-1453587…
shedowe19 Jan 30, 2026
42a252e
Enable Droidspaces configs for gs201 and fix mm/vmscan.c build
google-labs-jules[bot] Jan 30, 2026
5add82f
Merge pull request #3 from shedowe19/droidspaces-config-arm64-1453587…
shedowe19 Jan 30, 2026
6b6e2a7
Enable Droidspaces features for Pixel 7 (gs201) and Pixel 8 (zuma/zum…
google-labs-jules[bot] Jan 30, 2026
a270398
Merge pull request #4 from shedowe19/droidspaces-config-arm64-1453587…
shedowe19 Jan 30, 2026
f1ffc5c
Enable Droidspaces features and fix boot hang on Pixel devices
google-labs-jules[bot] Jan 30, 2026
7bb21c7
Merge branch '16.0.0-sultan' into droidspaces-config-arm64-1453587427…
shedowe19 Jan 30, 2026
1710505
Merge pull request #5 from shedowe19/droidspaces-config-arm64-1453587…
shedowe19 Jan 30, 2026
5795aba
mm: vmscan: Fix potential deadlock in shrink_slab
google-labs-jules[bot] Jan 30, 2026
158387d
Merge pull request #6 from shedowe19/fix-shrink-slab-deadlock-1827243…
shedowe19 Jan 30, 2026
1525782
arch: arm64: Enable CONFIG_PSI for Pixel platforms and add fw paths
google-labs-jules[bot] Jan 31, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 11 additions & 1 deletion arch/arm64/configs/gki_defconfig
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
CONFIG_UAPI_HEADER_TEST=y
CONFIG_AUDIT=y
CONFIG_NO_HZ=y
CONFIG_SYSCTL=y
CONFIG_SYSVIPC=y
CONFIG_POSIX_MQUEUE=y
CONFIG_HIGH_RES_TIMERS=y
CONFIG_BPF_SYSCALL=y
CONFIG_BPF_JIT=y
Expand Down Expand Up @@ -29,10 +32,14 @@ CONFIG_CGROUP_SCHED=y
CONFIG_UCLAMP_TASK_GROUP=y
CONFIG_CGROUP_FREEZER=y
CONFIG_CPUSETS=y
CONFIG_CGROUP_DEVICE=y
CONFIG_CGROUP_CPUACCT=y
CONFIG_CGROUP_BPF=y
CONFIG_NAMESPACES=y
# CONFIG_PID_NS is not set
CONFIG_UTS_NS=y
CONFIG_IPC_NS=y
CONFIG_PID_NS=y
CONFIG_MNT_NS=y
CONFIG_RT_SOFTIRQ_AWARE_SCHED=y
# CONFIG_RD_BZIP2 is not set
# CONFIG_RD_LZMA is not set
Expand Down Expand Up @@ -310,7 +317,10 @@ CONFIG_PCIE_DW_PLAT_EP=y
CONFIG_PCIE_QCOM=y
CONFIG_PCIE_KIRIN=y
CONFIG_PCI_ENDPOINT=y
CONFIG_DEVTMPFS=y
CONFIG_FW_LOADER=y
CONFIG_FW_LOADER_USER_HELPER=y
CONFIG_FW_LOADER_COMPRESS=y
# CONFIG_FW_CACHE is not set
# CONFIG_BRCMSTB_GISB_ARB is not set
# CONFIG_SUN50I_DE2_BUS is not set
Expand Down
15 changes: 13 additions & 2 deletions arch/arm64/configs/gs201_defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@ CONFIG_LOCALVERSION="-Sultan"
CONFIG_IRQ_SBALANCE=y
CONFIG_SBALANCE_EXCLUDE_CPUS="3,5,7"
CONFIG_NO_HZ=y
CONFIG_SYSCTL=y
CONFIG_SYSVIPC=y
CONFIG_POSIX_MQUEUE=y
CONFIG_HIGH_RES_TIMERS=y
CONFIG_BPF_SYSCALL=y
CONFIG_BPF_JIT=y
Expand All @@ -29,11 +32,15 @@ CONFIG_CGROUP_SCHED=y
CONFIG_UCLAMP_TASK_GROUP=y
CONFIG_CGROUP_FREEZER=y
CONFIG_CPUSETS=y
CONFIG_CGROUP_DEVICE=y
CONFIG_CGROUP_CPUACCT=y
CONFIG_MEMCG=y
CONFIG_CGROUP_BPF=y
CONFIG_NAMESPACES=y
# CONFIG_UTS_NS is not set
# CONFIG_PID_NS is not set
CONFIG_UTS_NS=y
CONFIG_IPC_NS=y
CONFIG_PID_NS=y
CONFIG_MNT_NS=y
CONFIG_SCHED_CASS=y
CONFIG_RT_SOFTIRQ_AWARE_SCHED=y
# CONFIG_RD_GZIP is not set
Expand Down Expand Up @@ -321,7 +328,10 @@ CONFIG_PCI_IOV=y
CONFIG_PCI_HOST_GENERIC=y
CONFIG_PCIE_DW_PLAT_EP=y
CONFIG_PCI_ENDPOINT=y
CONFIG_DEVTMPFS=y
CONFIG_FW_LOADER=y
CONFIG_FW_LOADER_USER_HELPER=y
CONFIG_FW_LOADER_COMPRESS=y
# CONFIG_FW_CACHE is not set
CONFIG_ARM_SCMI_PROTOCOL=y
# CONFIG_ARM_SCMI_POWER_DOMAIN is not set
Expand Down Expand Up @@ -845,3 +855,4 @@ CONFIG_TRUSTY=m
# CONFIG_TRUSTY_TEST is not set
CONFIG_TRUSTY_DMA_BUF_FFA_TAG=y
CONFIG_TRUSTY_CRASH_IS_PANIC=y
CONFIG_PSI=y
15 changes: 13 additions & 2 deletions arch/arm64/configs/zuma_defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@ CONFIG_LOCALVERSION="-Sultan"
CONFIG_IRQ_SBALANCE=y
CONFIG_SBALANCE_EXCLUDE_CPUS="3,7,8"
CONFIG_NO_HZ=y
CONFIG_SYSCTL=y
CONFIG_SYSVIPC=y
CONFIG_POSIX_MQUEUE=y
CONFIG_HIGH_RES_TIMERS=y
CONFIG_BPF_SYSCALL=y
CONFIG_BPF_JIT=y
Expand Down Expand Up @@ -30,10 +33,14 @@ CONFIG_UCLAMP_TASK_GROUP=y
CONFIG_CGROUP_FREEZER=y
CONFIG_CPUSETS=y
CONFIG_CGROUP_CPUACCT=y
CONFIG_MEMCG=y
CONFIG_CGROUP_DEVICE=y
CONFIG_CGROUP_BPF=y
CONFIG_NAMESPACES=y
# CONFIG_UTS_NS is not set
# CONFIG_PID_NS is not set
CONFIG_UTS_NS=y
CONFIG_IPC_NS=y
CONFIG_PID_NS=y
CONFIG_MNT_NS=y
CONFIG_SCHED_CASS=y
CONFIG_RT_SOFTIRQ_AWARE_SCHED=y
# CONFIG_RD_GZIP is not set
Expand Down Expand Up @@ -314,7 +321,10 @@ CONFIG_PCI_IOV=y
CONFIG_PCI_HOST_GENERIC=y
CONFIG_PCIE_DW_PLAT_EP=y
CONFIG_PCI_ENDPOINT=y
CONFIG_DEVTMPFS=y
CONFIG_FW_LOADER=y
CONFIG_FW_LOADER_USER_HELPER=y
CONFIG_FW_LOADER_COMPRESS=y
# CONFIG_FW_CACHE is not set
CONFIG_ARM_SCMI_PROTOCOL=y
# CONFIG_ARM_SCMI_POWER_DOMAIN is not set
Expand Down Expand Up @@ -846,3 +856,4 @@ CONFIG_TRUSTY=m
# CONFIG_TRUSTY_TEST is not set
CONFIG_TRUSTY_DMA_BUF_FFA_TAG=y
CONFIG_TRUSTY_CRASH_IS_PANIC=y
CONFIG_PSI=y
15 changes: 13 additions & 2 deletions arch/arm64/configs/zumapro_defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@ CONFIG_LOCALVERSION="-Sultan"
CONFIG_IRQ_SBALANCE=y
CONFIG_SBALANCE_EXCLUDE_CPUS="3,6,7"
CONFIG_NO_HZ=y
CONFIG_SYSCTL=y
CONFIG_SYSVIPC=y
CONFIG_POSIX_MQUEUE=y
CONFIG_HIGH_RES_TIMERS=y
CONFIG_BPF_SYSCALL=y
CONFIG_BPF_JIT=y
Expand All @@ -29,10 +32,14 @@ CONFIG_UCLAMP_TASK_GROUP=y
CONFIG_CGROUP_FREEZER=y
CONFIG_CPUSETS=y
CONFIG_CGROUP_CPUACCT=y
CONFIG_MEMCG=y
CONFIG_CGROUP_DEVICE=y
CONFIG_CGROUP_BPF=y
CONFIG_NAMESPACES=y
# CONFIG_UTS_NS is not set
# CONFIG_PID_NS is not set
CONFIG_UTS_NS=y
CONFIG_IPC_NS=y
CONFIG_PID_NS=y
CONFIG_MNT_NS=y
CONFIG_SCHED_CASS=y
CONFIG_RT_SOFTIRQ_AWARE_SCHED=y
# CONFIG_RD_GZIP is not set
Expand Down Expand Up @@ -315,7 +322,10 @@ CONFIG_PCI_IOV=y
CONFIG_PCI_HOST_GENERIC=y
CONFIG_PCIE_DW_PLAT_EP=y
CONFIG_PCI_ENDPOINT=y
CONFIG_DEVTMPFS=y
CONFIG_FW_LOADER=y
CONFIG_FW_LOADER_USER_HELPER=y
CONFIG_FW_LOADER_COMPRESS=y
# CONFIG_FW_CACHE is not set
CONFIG_ARM_SCMI_PROTOCOL=y
# CONFIG_ARM_SCMI_POWER_DOMAIN is not set
Expand Down Expand Up @@ -850,3 +860,4 @@ CONFIG_BACKLIGHT_RT4539_GS=m
CONFIG_QCOM_QBT_HANDLER=m
CONFIG_LINK_DEVICE_PCIE_SOC_EXYNOS=y
CONFIG_CP_PMIC=m
CONFIG_PSI=y
7 changes: 6 additions & 1 deletion drivers/base/firmware_loader/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -485,7 +485,12 @@ static const char * const fw_path[] = {
"/lib/firmware/updates/" UTS_RELEASE,
"/lib/firmware/updates",
"/lib/firmware/" UTS_RELEASE,
"/lib/firmware"
"/lib/firmware",
"/image",
"/vendor/firmware",
"/vendor/firmware/image",
"/odm/firmware",
"/odm/firmware/image"
};

static char strpath[PATH_SIZE * CUSTOM_FW_PATH_COUNT];
Expand Down
59 changes: 30 additions & 29 deletions mm/vmscan.c
Original file line number Diff line number Diff line change
Expand Up @@ -211,8 +211,7 @@ static void set_task_reclaim_state(struct task_struct *task,
}

static LIST_HEAD(shrinker_list);
static DEFINE_SPINLOCK(shrinker_lock);
static DEFINE_RWLOCK(shrinker_rwlock);
static DECLARE_RWSEM(shrinker_rwsem);

#ifdef CONFIG_MEMCG
static int shrinker_nr_max;
Expand Down Expand Up @@ -719,12 +718,12 @@ void free_prealloced_shrinker(struct shrinker *shrinker)
void register_shrinker_prepared(struct shrinker *shrinker)
{
init_rwsem(&shrinker->del_rwsem);
spin_lock(&shrinker_lock);
down_write(&shrinker_rwsem);
/* Use the RCU list mutation primitive to allow concurrent iteration */
list_add_tail_rcu(&shrinker->list, &shrinker_list);
shrinker->flags |= SHRINKER_REGISTERED;
shrinker_debugfs_add(shrinker);
spin_unlock(&shrinker_lock);
up_write(&shrinker_rwsem);
}

static int __register_shrinker(struct shrinker *shrinker)
Expand Down Expand Up @@ -780,15 +779,11 @@ void unregister_shrinker(struct shrinker *shrinker)
* Wait until the shrinker list is no longer in use (shrinker_rwlock)
*/
down_write(&shrinker->del_rwsem);
spin_lock(&shrinker_lock);
write_lock(&shrinker_rwlock);
list_del(&shrinker->list);
down_write(&shrinker_rwsem);
list_del_rcu(&shrinker->list);
shrinker->flags &= ~SHRINKER_REGISTERED;
if (shrinker->flags & SHRINKER_MEMCG_AWARE)
unregister_memcg_shrinker(shrinker);
debugfs_entry = shrinker_debugfs_remove(shrinker);
write_unlock(&shrinker_rwlock);
spin_unlock(&shrinker_lock);
up_write(&shrinker_rwsem);
up_write(&shrinker->del_rwsem);

debugfs_remove_recursive(debugfs_entry);
Expand Down Expand Up @@ -1040,29 +1035,35 @@ unsigned long shrink_slab(gfp_t gfp_mask, int nid,
if (!mem_cgroup_disabled() && !mem_cgroup_is_root(memcg))
return shrink_slab_memcg(gfp_mask, nid, memcg, priority);

read_lock(&shrinker_rwlock);
/* Use the RCU list iteration primitive to allow concurrent additions */
list_for_each_entry_rcu(shrinker, &shrinker_list, list) {
struct shrink_control sc = {
.gfp_mask = gfp_mask,
.nid = nid,
.memcg = memcg,
};
if (down_read_trylock(&shrinker_rwsem)) {
/* Use the RCU list iteration primitive to allow concurrent additions */
list_for_each_entry_rcu(shrinker, &shrinker_list, list) {
struct shrink_control sc = {
.gfp_mask = gfp_mask,
.nid = nid,
.memcg = memcg,
};

if (!down_read_trylock(&shrinker->del_rwsem))
continue;
read_unlock(&shrinker_rwlock);
if (!down_read_trylock(&shrinker->del_rwsem))
continue;
up_read(&shrinker_rwsem);

ret = do_shrink_slab(&sc, shrinker, priority);
if (ret == SHRINK_EMPTY)
ret = 0;
freed += ret;
ret = do_shrink_slab(&sc, shrinker, priority);
if (ret == SHRINK_EMPTY)
ret = 0;
freed += ret;

read_lock(&shrinker_rwlock);
up_read(&shrinker->del_rwsem);
if (!down_read_trylock(&shrinker_rwsem)) {
up_read(&shrinker->del_rwsem);
goto out;
}
up_read(&shrinker->del_rwsem);
}

up_read(&shrinker_rwsem);
}
read_unlock(&shrinker_rwlock);

out:
cond_resched();
return freed;
}
Expand Down