Skip to content

Commit 0625535

Browse files
Automatic merge of 'master' into merge (2026-01-06 11:15)
2 parents 7170d5d + d26143b commit 0625535

118 files changed

Lines changed: 945 additions & 813 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Documentation/devicetree/bindings/spi/allwinner,sun6i-a31-spi.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ properties:
1717
compatible:
1818
oneOf:
1919
- const: allwinner,sun50i-r329-spi
20+
- const: allwinner,sun55i-a523-spi
2021
- const: allwinner,sun6i-a31-spi
2122
- const: allwinner,sun8i-h3-spi
2223
- items:
@@ -35,6 +36,9 @@ properties:
3536
- const: allwinner,sun20i-d1-spi-dbi
3637
- const: allwinner,sun50i-r329-spi-dbi
3738
- const: allwinner,sun50i-r329-spi
39+
- items:
40+
- const: allwinner,sun55i-a523-spi-dbi
41+
- const: allwinner,sun55i-a523-spi
3842

3943
reg:
4044
maxItems: 1

MAINTAINERS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27920,6 +27920,7 @@ F: drivers/regulator/
2792027920
F: rust/kernel/regulator.rs
2792127921
F: include/dt-bindings/regulator/
2792227922
F: include/linux/regulator/
27923+
F: include/uapi/regulator/
2792327924
K: regulator_get_optional
2792427925

2792527926
VOLTAGE AND CURRENT REGULATOR IRQ HELPERS

drivers/block/rnbd/rnbd-clt.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ struct rnbd_clt_dev {
112112
struct rnbd_queue *hw_queues;
113113
u32 device_id;
114114
/* local Idr index - used to track minor number allocations. */
115-
u32 clt_device_id;
115+
int clt_device_id;
116116
struct mutex lock;
117117
enum rnbd_clt_dev_state dev_state;
118118
refcount_t refcount;

drivers/block/ublk_drv.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1607,8 +1607,7 @@ static bool ublk_check_and_reset_active_ref(struct ublk_device *ub)
16071607
{
16081608
int i, j;
16091609

1610-
if (!(ub->dev_info.flags & (UBLK_F_SUPPORT_ZERO_COPY |
1611-
UBLK_F_AUTO_BUF_REG)))
1610+
if (!ublk_dev_need_req_ref(ub))
16121611
return false;
16131612

16141613
for (i = 0; i < ub->dev_info.nr_hw_queues; i++) {

drivers/firmware/efi/efi.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ struct mm_struct efi_mm = {
7373
MMAP_LOCK_INITIALIZER(efi_mm)
7474
.page_table_lock = __SPIN_LOCK_UNLOCKED(efi_mm.page_table_lock),
7575
.mmlist = LIST_HEAD_INIT(efi_mm.mmlist),
76+
.user_ns = &init_user_ns,
7677
.cpu_bitmap = { [BITS_TO_LONGS(NR_CPUS)] = 0},
7778
#ifdef CONFIG_SCHED_MM_CID
7879
.mm_cid.lock = __RAW_SPIN_LOCK_UNLOCKED(efi_mm.mm_cid.lock),

drivers/firmware/efi/libstub/gop.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -513,15 +513,15 @@ efi_status_t efi_setup_graphics(struct screen_info *si, struct edid_info *edid)
513513
status = efi_bs_call(handle_protocol, handle, &EFI_EDID_ACTIVE_PROTOCOL_GUID,
514514
(void **)&active_edid);
515515
if (status == EFI_SUCCESS) {
516-
gop_size_of_edid = active_edid->size_of_edid;
517-
gop_edid = active_edid->edid;
516+
gop_size_of_edid = efi_table_attr(active_edid, size_of_edid);
517+
gop_edid = efi_table_attr(active_edid, edid);
518518
} else {
519519
status = efi_bs_call(handle_protocol, handle,
520520
&EFI_EDID_DISCOVERED_PROTOCOL_GUID,
521521
(void **)&discovered_edid);
522522
if (status == EFI_SUCCESS) {
523-
gop_size_of_edid = discovered_edid->size_of_edid;
524-
gop_edid = discovered_edid->edid;
523+
gop_size_of_edid = efi_table_attr(discovered_edid, size_of_edid);
524+
gop_edid = efi_table_attr(discovered_edid, edid);
525525
}
526526
}
527527

drivers/gpu/drm/msm/adreno/a6xx_catalog.c

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1376,7 +1376,6 @@ static const uint32_t a7xx_pwrup_reglist_regs[] = {
13761376
REG_A6XX_UCHE_MODE_CNTL,
13771377
REG_A6XX_RB_NC_MODE_CNTL,
13781378
REG_A6XX_RB_CMP_DBG_ECO_CNTL,
1379-
REG_A7XX_GRAS_NC_MODE_CNTL,
13801379
REG_A6XX_RB_CONTEXT_SWITCH_GMEM_SAVE_RESTORE_ENABLE,
13811380
REG_A6XX_UCHE_GBIF_GX_CONFIG,
13821381
REG_A6XX_UCHE_CLIENT_PF,
@@ -1392,6 +1391,7 @@ static const u32 a750_ifpc_reglist_regs[] = {
13921391
REG_A6XX_TPL1_BICUBIC_WEIGHTS_TABLE(2),
13931392
REG_A6XX_TPL1_BICUBIC_WEIGHTS_TABLE(3),
13941393
REG_A6XX_TPL1_BICUBIC_WEIGHTS_TABLE(4),
1394+
REG_A6XX_RBBM_PERFCTR_CNTL,
13951395
REG_A6XX_TPL1_NC_MODE_CNTL,
13961396
REG_A6XX_SP_NC_MODE_CNTL,
13971397
REG_A6XX_CP_DBG_ECO_CNTL,
@@ -1448,6 +1448,12 @@ static const u32 a750_ifpc_reglist_regs[] = {
14481448

14491449
DECLARE_ADRENO_REGLIST_LIST(a750_ifpc_reglist);
14501450

1451+
static const struct adreno_reglist_pipe a7xx_dyn_pwrup_reglist_regs[] = {
1452+
{ REG_A7XX_GRAS_NC_MODE_CNTL, 0, BIT(PIPE_BV) | BIT(PIPE_BR) },
1453+
};
1454+
1455+
DECLARE_ADRENO_REGLIST_PIPE_LIST(a7xx_dyn_pwrup_reglist);
1456+
14511457
static const struct adreno_info a7xx_gpus[] = {
14521458
{
14531459
.chip_ids = ADRENO_CHIP_IDS(0x07000200),
@@ -1491,6 +1497,7 @@ static const struct adreno_info a7xx_gpus[] = {
14911497
.hwcg = a730_hwcg,
14921498
.protect = &a730_protect,
14931499
.pwrup_reglist = &a7xx_pwrup_reglist,
1500+
.dyn_pwrup_reglist = &a7xx_dyn_pwrup_reglist,
14941501
.gbif_cx = a640_gbif,
14951502
.gmu_cgc_mode = 0x00020000,
14961503
},
@@ -1513,6 +1520,7 @@ static const struct adreno_info a7xx_gpus[] = {
15131520
.hwcg = a740_hwcg,
15141521
.protect = &a730_protect,
15151522
.pwrup_reglist = &a7xx_pwrup_reglist,
1523+
.dyn_pwrup_reglist = &a7xx_dyn_pwrup_reglist,
15161524
.gbif_cx = a640_gbif,
15171525
.gmu_chipid = 0x7020100,
15181526
.gmu_cgc_mode = 0x00020202,
@@ -1547,6 +1555,7 @@ static const struct adreno_info a7xx_gpus[] = {
15471555
.hwcg = a740_hwcg,
15481556
.protect = &a730_protect,
15491557
.pwrup_reglist = &a7xx_pwrup_reglist,
1558+
.dyn_pwrup_reglist = &a7xx_dyn_pwrup_reglist,
15501559
.ifpc_reglist = &a750_ifpc_reglist,
15511560
.gbif_cx = a640_gbif,
15521561
.gmu_chipid = 0x7050001,
@@ -1589,6 +1598,7 @@ static const struct adreno_info a7xx_gpus[] = {
15891598
.a6xx = &(const struct a6xx_info) {
15901599
.protect = &a730_protect,
15911600
.pwrup_reglist = &a7xx_pwrup_reglist,
1601+
.dyn_pwrup_reglist = &a7xx_dyn_pwrup_reglist,
15921602
.ifpc_reglist = &a750_ifpc_reglist,
15931603
.gbif_cx = a640_gbif,
15941604
.gmu_chipid = 0x7090100,
@@ -1623,6 +1633,7 @@ static const struct adreno_info a7xx_gpus[] = {
16231633
.hwcg = a740_hwcg,
16241634
.protect = &a730_protect,
16251635
.pwrup_reglist = &a7xx_pwrup_reglist,
1636+
.dyn_pwrup_reglist = &a7xx_dyn_pwrup_reglist,
16261637
.gbif_cx = a640_gbif,
16271638
.gmu_chipid = 0x70f0000,
16281639
.gmu_cgc_mode = 0x00020222,

drivers/gpu/drm/msm/adreno/a6xx_gpu.c

Lines changed: 40 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -849,9 +849,16 @@ static void a6xx_set_ubwc_config(struct msm_gpu *gpu)
849849
min_acc_len_64b << 3 |
850850
hbb_lo << 1 | ubwc_mode);
851851

852-
if (adreno_is_a7xx(adreno_gpu))
853-
gpu_write(gpu, REG_A7XX_GRAS_NC_MODE_CNTL,
854-
FIELD_PREP(GENMASK(8, 5), hbb_lo));
852+
if (adreno_is_a7xx(adreno_gpu)) {
853+
for (u32 pipe_id = PIPE_BR; pipe_id <= PIPE_BV; pipe_id++) {
854+
gpu_write(gpu, REG_A7XX_CP_APERTURE_CNTL_HOST,
855+
A7XX_CP_APERTURE_CNTL_HOST_PIPE(pipe_id));
856+
gpu_write(gpu, REG_A7XX_GRAS_NC_MODE_CNTL,
857+
FIELD_PREP(GENMASK(8, 5), hbb_lo));
858+
}
859+
gpu_write(gpu, REG_A7XX_CP_APERTURE_CNTL_HOST,
860+
A7XX_CP_APERTURE_CNTL_HOST_PIPE(PIPE_NONE));
861+
}
855862

856863
gpu_write(gpu, REG_A6XX_UCHE_MODE_CNTL,
857864
min_acc_len_64b << 23 | hbb_lo << 21);
@@ -865,23 +872,27 @@ static void a7xx_patch_pwrup_reglist(struct msm_gpu *gpu)
865872
struct adreno_gpu *adreno_gpu = to_adreno_gpu(gpu);
866873
struct a6xx_gpu *a6xx_gpu = to_a6xx_gpu(adreno_gpu);
867874
const struct adreno_reglist_list *reglist;
875+
const struct adreno_reglist_pipe_list *dyn_pwrup_reglist;
868876
void *ptr = a6xx_gpu->pwrup_reglist_ptr;
869877
struct cpu_gpu_lock *lock = ptr;
870878
u32 *dest = (u32 *)&lock->regs[0];
879+
u32 dyn_pwrup_reglist_count = 0;
871880
int i;
872881

873882
lock->gpu_req = lock->cpu_req = lock->turn = 0;
874883

875884
reglist = adreno_gpu->info->a6xx->ifpc_reglist;
876-
lock->ifpc_list_len = reglist->count;
885+
if (reglist) {
886+
lock->ifpc_list_len = reglist->count;
877887

878-
/*
879-
* For each entry in each of the lists, write the offset and the current
880-
* register value into the GPU buffer
881-
*/
882-
for (i = 0; i < reglist->count; i++) {
883-
*dest++ = reglist->regs[i];
884-
*dest++ = gpu_read(gpu, reglist->regs[i]);
888+
/*
889+
* For each entry in each of the lists, write the offset and the current
890+
* register value into the GPU buffer
891+
*/
892+
for (i = 0; i < reglist->count; i++) {
893+
*dest++ = reglist->regs[i];
894+
*dest++ = gpu_read(gpu, reglist->regs[i]);
895+
}
885896
}
886897

887898
reglist = adreno_gpu->info->a6xx->pwrup_reglist;
@@ -907,7 +918,24 @@ static void a7xx_patch_pwrup_reglist(struct msm_gpu *gpu)
907918
* (<aperture, shifted 12 bits> <address> <data>), and the length is
908919
* stored as number for triplets in dynamic_list_len.
909920
*/
910-
lock->dynamic_list_len = 0;
921+
dyn_pwrup_reglist = adreno_gpu->info->a6xx->dyn_pwrup_reglist;
922+
if (dyn_pwrup_reglist) {
923+
for (u32 pipe_id = PIPE_BR; pipe_id <= PIPE_BV; pipe_id++) {
924+
gpu_write(gpu, REG_A7XX_CP_APERTURE_CNTL_HOST,
925+
A7XX_CP_APERTURE_CNTL_HOST_PIPE(pipe_id));
926+
for (i = 0; i < dyn_pwrup_reglist->count; i++) {
927+
if ((dyn_pwrup_reglist->regs[i].pipe & BIT(pipe_id)) == 0)
928+
continue;
929+
*dest++ = A7XX_CP_APERTURE_CNTL_HOST_PIPE(pipe_id);
930+
*dest++ = dyn_pwrup_reglist->regs[i].offset;
931+
*dest++ = gpu_read(gpu, dyn_pwrup_reglist->regs[i].offset);
932+
dyn_pwrup_reglist_count++;
933+
}
934+
}
935+
gpu_write(gpu, REG_A7XX_CP_APERTURE_CNTL_HOST,
936+
A7XX_CP_APERTURE_CNTL_HOST_PIPE(PIPE_NONE));
937+
}
938+
lock->dynamic_list_len = dyn_pwrup_reglist_count;
911939
}
912940

913941
static int a7xx_preempt_start(struct msm_gpu *gpu)

drivers/gpu/drm/msm/adreno/a6xx_gpu.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ struct a6xx_info {
4545
const struct adreno_reglist *hwcg;
4646
const struct adreno_protect *protect;
4747
const struct adreno_reglist_list *pwrup_reglist;
48+
const struct adreno_reglist_pipe_list *dyn_pwrup_reglist;
4849
const struct adreno_reglist_list *ifpc_reglist;
4950
const struct adreno_reglist *gbif_cx;
5051
const struct adreno_reglist_pipe *nonctxt_reglist;

drivers/gpu/drm/msm/adreno/a6xx_preempt.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -454,11 +454,11 @@ void a6xx_preempt_init(struct msm_gpu *gpu)
454454
gpu->vm, &a6xx_gpu->preempt_postamble_bo,
455455
&a6xx_gpu->preempt_postamble_iova);
456456

457-
preempt_prepare_postamble(a6xx_gpu);
458-
459457
if (IS_ERR(a6xx_gpu->preempt_postamble_ptr))
460458
goto fail;
461459

460+
preempt_prepare_postamble(a6xx_gpu);
461+
462462
timer_setup(&a6xx_gpu->preempt_timer, a6xx_preempt_timer, 0);
463463

464464
return;

0 commit comments

Comments
 (0)