Re: [PATCH v3] ASoC: fsl: Rename stream name of SAI DAI driver

2025-02-20 Thread Shengjiu Wang
On Mon, Feb 17, 2025 at 9:05 AM Chancel Liu  wrote:
>
> If stream names of DAI driver are duplicated there'll be warnings when
> machine driver tries to add widgets on a route:
>
> [8.831335] fsl-asoc-card sound-wm8960: ASoC: sink widget CPU-Playback 
> overwritten
> [8.839917] fsl-asoc-card sound-wm8960: ASoC: source widget CPU-Capture 
> overwritten
>
> Use different stream names to avoid such warnings.
> DAI names in AUDMIX are also updated accordingly.
>
> Fixes: 15c958390460 ("ASoC: fsl_sai: Add separate DAI for transmitter and 
> receiver")
> Signed-off-by: Chancel Liu 

Acked-by: Shengjiu Wang 

Best regards
Shengjiu Wang
> ---
> - changes in v3
> Squash two fix patches in one commit
>
>  sound/soc/fsl/fsl_sai.c| 6 +++---
>  sound/soc/fsl/imx-audmix.c | 4 ++--
>  2 files changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/sound/soc/fsl/fsl_sai.c b/sound/soc/fsl/fsl_sai.c
> index c4eb87c5d39e..9f33dd11d47f 100644
> --- a/sound/soc/fsl/fsl_sai.c
> +++ b/sound/soc/fsl/fsl_sai.c
> @@ -994,10 +994,10 @@ static struct snd_soc_dai_driver fsl_sai_dai_template[] 
> = {
> {
> .name = "sai-tx",
> .playback = {
> -   .stream_name = "CPU-Playback",
> +   .stream_name = "SAI-Playback",
> .channels_min = 1,
> .channels_max = 32,
> -   .rate_min = 8000,
> +   .rate_min = 8000,
> .rate_max = 2822400,
> .rates = SNDRV_PCM_RATE_KNOT,
> .formats = FSL_SAI_FORMATS,
> @@ -1007,7 +1007,7 @@ static struct snd_soc_dai_driver fsl_sai_dai_template[] 
> = {
> {
> .name = "sai-rx",
> .capture = {
> -   .stream_name = "CPU-Capture",
> +   .stream_name = "SAI-Capture",
> .channels_min = 1,
> .channels_max = 32,
> .rate_min = 8000,
> diff --git a/sound/soc/fsl/imx-audmix.c b/sound/soc/fsl/imx-audmix.c
> index 50ecc5f51100..dac5d4ddacd6 100644
> --- a/sound/soc/fsl/imx-audmix.c
> +++ b/sound/soc/fsl/imx-audmix.c
> @@ -119,8 +119,8 @@ static const struct snd_soc_ops imx_audmix_be_ops = {
>  static const char *name[][3] = {
> {"HiFi-AUDMIX-FE-0", "HiFi-AUDMIX-FE-1", "HiFi-AUDMIX-FE-2"},
> {"sai-tx", "sai-tx", "sai-rx"},
> -   {"AUDMIX-Playback-0", "AUDMIX-Playback-1", "CPU-Capture"},
> -   {"CPU-Playback", "CPU-Playback", "AUDMIX-Capture-0"},
> +   {"AUDMIX-Playback-0", "AUDMIX-Playback-1", "SAI-Capture"},
> +   {"SAI-Playback", "SAI-Playback", "AUDMIX-Capture-0"},
>  };
>
>  static int imx_audmix_probe(struct platform_device *pdev)
> --
> 2.47.1
>



Re: [PATCH v8 19/20] fs/dax: Properly refcount fs dax pages

2025-02-20 Thread David Hildenbrand

-static inline unsigned long dax_folio_share_put(struct folio *folio)
+static inline unsigned long dax_folio_put(struct folio *folio)
   {
-   return --folio->page.share;
+   unsigned long ref;
+   int order, i;
+
+   if (!dax_folio_is_shared(folio))
+   ref = 0;
+   else
+   ref = --folio->share;
+


out of interest, what synchronizes access to folio->share?


Actually that's an excellent question as I hadn't looked too closely at this
given I wasn't changing the overall flow with regards to synchronization, merely
representation of the "shared" state. So I don't have a good answer for you off
the top of my head - Dan maybe you can shed some light here?


Not that I understand what that dax-shared thing is or does, but the 
non-atomic update on a folio_put path looked "surprising".



diff --git a/include/linux/dax.h b/include/linux/dax.h
index 2333c30..dcc9fcd 100644
--- a/include/linux/dax.h
+++ b/include/linux/dax.h
@@ -209,7 +209,7 @@ int dax_truncate_page(struct inode *inode, loff_t pos, bool 
*did_zero,


[...]


diff --git a/mm/huge_memory.c b/mm/huge_memory.c
index d189826..1a0d6a8 100644
--- a/mm/huge_memory.c
+++ b/mm/huge_memory.c
@@ -2225,7 +2225,7 @@ int zap_huge_pmd(struct mmu_gather *tlb, struct 
vm_area_struct *vma,
tlb->fullmm);
arch_check_zapped_pmd(vma, orig_pmd);
tlb_remove_pmd_tlb_entry(tlb, pmd, addr);
-   if (vma_is_special_huge(vma)) {
+   if (!vma_is_dax(vma) && vma_is_special_huge(vma)) {


I wonder if we actually want to remove the vma_is_dax() check from
vma_is_special_huge(), and instead add it to the remaining callers of
vma_is_special_huge() that still need it -- if any need it.

Did we sanity-check which callers of vma_is_special_huge() still need it? Is
there still reason to have that DAX check in vma_is_special_huge()?


If by "we" you mean "me" then yes :) There are still a few callers of it, mainly
for page splitting.


Heh, "you or any of the reviewers" :)

So IIUC, the existing users still need the DAX check I assume (until 
that part is cleaned up, below).





But vma_is_special_huge() is rather confusing from me ... the whole
vma_is_special_huge() thing should probably be removed. That's a cleanup for
another day, though.


But after double checking I have come to the same conclusion as you - it should
be removed. I will add that to my ever growing clean-up series that can go on
top of this one.


Nice!

--
Cheers,

David / dhildenb




Re: [RFC PATCH v2 1/3] sched/fair: introduce new scheduler group type group_parked

2025-02-20 Thread Tobias Huschle




On 18/02/2025 06:44, Shrikanth Hegde wrote:
[...]

@@ -1352,6 +1352,9 @@ bool sched_can_stop_tick(struct rq *rq)
  if (rq->cfs.h_nr_queued > 1)
  return false;
+    if (rq->cfs.nr_running > 0 && arch_cpu_parked(cpu_of(rq)))
+    return false;
+


you mean rq->cfs.h_nr_queued or rq->nr_running ?



cfs.h_nr_queued is probably more sensible, will use that.

[...]
@@ -11259,6 +11293,8 @@ static inline void calculate_imbalance(struct 
lb_env *env, struct sd_lb_stats *s

   * avg_load : Only if imbalance is significant enough.
   * nr_idle :  dst_cpu is not busy and the number of idle CPUs is quite
   *    different in groups.
+ * nr_task :  balancing can go either way depending on the number of 
running tasks

+ *    per group
   */


This comment on nr_task can be removed as it is not present in the list.



Consider it gone.

[...]
@@ -11766,7 +11822,7 @@ static int sched_balance_rq(int this_cpu, 
struct rq *this_rq,

  ld_moved = 0;
  /* Clear this flag as soon as we find a pullable task */
  env.flags |= LBF_ALL_PINNED;
-    if (busiest->nr_running > 1) {
+    if (busiest->nr_running > 1 || arch_cpu_parked(busiest->cpu)) {


Since there is reliance on active balance if there is single task, it 
think above isn't needed. Is there any usecase for it?




Seems to work without that check. I have no particular use case in mind.


  /*
   * Attempt to move tasks. If sched_balance_find_src_group 
has found

   * an imbalance but busiest->nr_running <= 1, the group is
@@ -12356,6 +12412,11 @@ static void nohz_balancer_kick(struct rq *rq)
  if (time_before(now, nohz.next_balance))
  goto out;
+    if (!idle_cpu(rq->cpu)) {
+    flags = NOHZ_STATS_KICK | NOHZ_BALANCE_KICK;
+    goto out;
+    }
+


This could be agrressive. Note when the code comes here, it is not idle. 
It would bail out early if it is idle.




It seems like we can do without this one as well.


  if (rq->nr_running >= 2) {
  flags = NOHZ_STATS_KICK | NOHZ_BALANCE_KICK;
  goto out;
@@ -12767,6 +12828,9 @@ static int sched_balance_newidle(struct rq 
*this_rq, struct rq_flags *rf)

  update_misfit_status(NULL, this_rq);
+    if (arch_cpu_parked(this_cpu))
+    return 0;
+
  /*
   * There is a task waiting to run. No need to search for one.
   * Return 0; the task will be enqueued when switching to idle.
diff --git a/kernel/sched/syscalls.c b/kernel/sched/syscalls.c
index 456d339be98f..7efd76a30be7 100644
--- a/kernel/sched/syscalls.c
+++ b/kernel/sched/syscalls.c
@@ -214,6 +214,9 @@ int idle_cpu(int cpu)
  return 0;
  #endif
+    if (arch_cpu_parked(cpu))
+    return 0;
+
  return 1;
  }







Re: [RFC PATCH v2 0/3] sched/fair: introduce new scheduler group type group_parked

2025-02-20 Thread Tobias Huschle




On 18/02/2025 06:58, Shrikanth Hegde wrote:
[...]


There are a couple of issues and corner cases which need further
considerations:
- rt & dl:  Realtime and deadline scheduling require some additional
 attention.


I think we need to address atleast rt, there would be some non percpu 
kworker threads which need to move out of parked cpus.




Yea, sounds reasonable. Would probably make sense to go next for that one.


- ext:  Probably affected as well. Needs some conceptional
 thoughts first.
- raciness: Right now, there are no synchronization efforts. It needs
 to be considered whether those might be necessary or if
 it is alright that the parked-state of a CPU might 
change

 during load-balancing.

Patches apply to tip:sched/core

The s390 patch serves as a simplified implementation example.



Gave it a try on powerpc with the debugfs file. it works for 
sched_normal tasks.




That's great to hear!



Tobias Huschle (3):
   sched/fair: introduce new scheduler group type group_parked
   sched/fair: adapt scheduler group weight and capacity for parked CPUs
   s390/topology: Add initial implementation for selection of parked CPUs

  arch/s390/include/asm/smp.h    |   2 +
  arch/s390/kernel/smp.c |   5 ++
  include/linux/sched/topology.h |  19 ++
  kernel/sched/core.c    |  13 -
  kernel/sched/fair.c    | 104 -
  kernel/sched/syscalls.c    |   3 +
  6 files changed, 130 insertions(+), 16 deletions(-)








[PATCH] KVM: powerpc: Enable commented out BUILD_BUG_ON() assertion

2025-02-20 Thread Thorsten Blum
The BUILD_BUG_ON() assertion was commented out in commit 38634e676992
("powerpc/kvm: Remove problematic BUILD_BUG_ON statement") and fixed in
commit c0a187e12d48 ("KVM: powerpc: Fix BUILD_BUG_ON condition"), but
not enabled. Enable it now that this no longer breaks and remove the
comment.

Signed-off-by: Thorsten Blum 
---
 arch/powerpc/kvm/timing.h | 4 
 1 file changed, 4 deletions(-)

diff --git a/arch/powerpc/kvm/timing.h b/arch/powerpc/kvm/timing.h
index 45817ab82bb4..14b0e23f601f 100644
--- a/arch/powerpc/kvm/timing.h
+++ b/arch/powerpc/kvm/timing.h
@@ -38,11 +38,7 @@ static inline void kvmppc_set_exit_type(struct kvm_vcpu 
*vcpu, int type) {}
 static inline void kvmppc_account_exit_stat(struct kvm_vcpu *vcpu, int type)
 {
/* type has to be known at build time for optimization */
-
-   /* The BUILD_BUG_ON below breaks in funny ways, commented out
-* for now ... -BenH
BUILD_BUG_ON(!__builtin_constant_p(type));
-   */
switch (type) {
case EXT_INTR_EXITS:
vcpu->stat.ext_intr_exits++;
-- 
2.48.1




Re: [PATCH] powerpc/fsl_lbc: Explicitly populate bus

2025-02-20 Thread J . Neuschäfer
On Sun, Feb 09, 2025 at 10:58:50PM +0100, J. Neuschäfer via B4 Relay wrote:
> From: "J. Neuschäfer" 
> 
> Historically, devicetree nodes representing the Freescale Enhanced
> Local Bus Controller (eLBC) have compatible strings such as:
> 
> compatible = "fsl,mpc8313-elbc", "fsl,elbc", "simple-bus";
> 
> The "simple-bus" string causes the bus to be populated, and the memory
> devices contained within it to be discovered. The eLBC bus (as
> represented in device trees) differs from a simple-bus in a few ways,
> though:
> 
>  - Addresses are not simple/linear: The first cell of an address is a
>chip select, the second is an linear address within the space thus
>selected. Representing 1,0 as 1, for example, would decrease
>readability[1].
>  - It is expected that the devices on a simple-bus "can be accessed
>directly without additional configuration required"[2], but the eLBC
>needs some configuration.
> 
> To accommodate devicetrees that declare an eLBC without "simple-bus",
> explicitly populate the bus in the eLBC driver.
> 
> [1]: dtc makes such a suggestion opon encountering an eLBC
> [2]: Quoting the Devicetree Specification Release v0.3
> 
> Signed-off-by: J. Neuschäfer 
> ---

Due to advice from Crystal Wood and Rob Herring[1], I reached the
conclusion that this patch is not necessary.

[1]: https://lore.kernel.org/lkml/Z7ILej_AJYot_wKP@probook/

>  arch/powerpc/sysdev/fsl_lbc.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/powerpc/sysdev/fsl_lbc.c b/arch/powerpc/sysdev/fsl_lbc.c
> index 
> 217cea150987df1e1b5c6dbf9e9a1607dd5ce49b..2007ced997fcf0c7059e5b780893b530764dc8b2
>  100644
> --- a/arch/powerpc/sysdev/fsl_lbc.c
> +++ b/arch/powerpc/sysdev/fsl_lbc.c
> @@ -20,6 +20,7 @@
>  #include 
>  #include 
>  #include 
> +#include 
>  #include 
>  #include 
>  #include 
> @@ -336,7 +337,7 @@ static int fsl_lbc_ctrl_probe(struct platform_device *dev)
>   /* Enable interrupts for any detected events */
>   out_be32(&fsl_lbc_ctrl_dev->regs->lteir, LTEIR_ENABLE);
>  
> - return 0;
> + return devm_of_platform_populate(&dev->dev);
>  
>  err1:
>   free_irq(fsl_lbc_ctrl_dev->irq[0], fsl_lbc_ctrl_dev);
> 
> ---
> base-commit: 7ccde445dddcca030cd6ed66974bb80915ad9dd5
> change-id: 20250209-localbus-94a6ebb04c12
> 
> Best regards,
> -- 
> J. Neuschäfer 
> 
> 



Re: [PATCH v8 20/20] device/dax: Properly refcount device dax pages when mapping

2025-02-20 Thread Gerald Schaefer
On Tue, 18 Feb 2025 14:55:36 +1100
Alistair Popple  wrote:

[...]
> diff --git a/mm/memremap.c b/mm/memremap.c
> index 9a8879b..532a52a 100644
> --- a/mm/memremap.c
> +++ b/mm/memremap.c
> @@ -460,11 +460,10 @@ void free_zone_device_folio(struct folio *folio)
>  {
>   struct dev_pagemap *pgmap = folio->pgmap;
>  
> - if (WARN_ON_ONCE(!pgmap->ops))
> - return;
> -
> - if (WARN_ON_ONCE(pgmap->type != MEMORY_DEVICE_FS_DAX &&
> -  !pgmap->ops->page_free))
> + if (WARN_ON_ONCE((!pgmap->ops &&
> +   pgmap->type != MEMORY_DEVICE_GENERIC) ||
> +  (pgmap->ops && !pgmap->ops->page_free &&
> +   pgmap->type != MEMORY_DEVICE_FS_DAX)))

Playing around with dcssblk, adding devm_memremap_pages() and
pgmap.type = MEMORY_DEVICE_FS_DAX, similar to the other two existing
FS_DAX drivers drivers/nvdimm/pmem.c and fs/fuse/virtio_fs.c, I hit
this warning when executing binaries from DAX-mounted fs.

I do not set up pgmap->ops, similar to fs/fuse/virtio_fs.c, and I don't see
why they would be needed here anyway, at least for MEMORY_DEVICE_FS_DAX.
drivers/nvdimm/pmem.c does set up pgmap->ops, but only ->memory_failure,
which is still good enough to not trigger the warning here, probably just
by chance.

Now I wonder:
1) What is this check / warning good for, when this function only ever
   calls pgmap->ops->page_free(), but not for MEMORY_DEVICE_FS_DAX and
   not for MEMORY_DEVICE_GENERIC (the latter only after this patch)?
2) Is the warning also seen for virtio DAX mappings (added Vivek and
   Stefan on CC)? No pgmap->ops set up there, so I would guess "yes",
   and already before this series, with the old check / warning.
3) Could this be changed to only check / warn if pgmap->ops (or maybe
   rather pgmap->ops->page_free) is not set up, but not for
   MEMORY_DEVICE_GENERIC and MEMORY_DEVICE_FS_DAX where this is not
   being called?
4) Or is there any reason why pgmap->ops would be required for
   MEMORY_DEVICE_FS_DAX?

Apart from the warning, we would also miss out on the
wake_up_var(&folio->page) in the MEMORY_DEVICE_FS_DAX case, when no
pgmap->ops was set up. IIUC, even before this change / series (i.e.
for virtio DAX only, since dcssblk was not using ZONE_DEVICE before,
and pmem seems to work by chance because they have ops->memory_failure).

>   return;
>  
>   mem_cgroup_uncharge(folio);
> @@ -494,7 +493,8 @@ void free_zone_device_folio(struct folio *folio)
>* zero which indicating the page has been removed from the file
>* system mapping.
>*/
> - if (pgmap->type != MEMORY_DEVICE_FS_DAX)
> + if (pgmap->type != MEMORY_DEVICE_FS_DAX &&
> + pgmap->type != MEMORY_DEVICE_GENERIC)
>   folio->mapping = NULL;
>  
>   switch (pgmap->type) {
> @@ -509,7 +509,6 @@ void free_zone_device_folio(struct folio *folio)
>* Reset the refcount to 1 to prepare for handing out the page
>* again.
>*/
> - pgmap->ops->page_free(folio_page(folio, 0));

Ok, this is probably the reason why you adjusted the check above, since
no more pgmap->ops needed for MEMORY_DEVICE_GENERIC.
Still, the MEMORY_DEVICE_FS_DAX case also does not seem to need
pgmap->ops, and at least the existing virtio DAX should already be
affected, and of course future dcssblk DAX.

But maybe that should be addressed in a separate patch, since your changes
here seem consistent, and not change or worsen anything wrt !pgmap->ops
and MEMORY_DEVICE_FS_DAX.

>   folio_set_count(folio, 1);
>   break;
>  

For reference, this is call trace I see when I hit the warning:

[  283.567945] [ cut here ]
[  283.567947] WARNING: CPU: 12 PID: 878 at mm/memremap.c:436 
free_zone_device_folio+0x6e/0x140
[  283.567959] Modules linked in:
[  283.567963] CPU: 12 UID: 0 PID: 878 Comm: ls Not tainted 
6.14.0-rc3-next-20250220-00012-gd072dabf62e8-dirty #44
[  283.567968] Hardware name: IBM 3931 A01 704 (z/VM 7.4.0)
[  283.567971] Krnl PSW : 0704d0018000 01ec0548b44a 
(free_zone_device_folio+0x72/0x140)
[  283.567978]R:0 T:1 IO:1 EX:1 Key:0 M:1 W:0 P:0 AS:3 CC:1 PM:0 
RI:0 EA:3
[  283.567982] Krnl GPRS: 0038  0003 
01ec06cc42e8
[  283.567986]0004cc38e400  0003 
93eacd00
[  283.567990]9a68413f 016614010940 9553a640 
016614010940
[  283.567994]  01ec0548b416 
016c05da3bf8
[  283.568004] Krnl Code: 01ec0548b43e: a70e0003   

Re: [RFC PATCH] objtool: Skip unannotated intra-function call warning for bl+mflr pattern

2025-02-20 Thread Josh Poimboeuf
On Wed, Feb 19, 2025 at 09:50:14PM +0530, Sathvika Vasireddy wrote:
> Architectures like PowerPC use a pattern where the compiler generates a
> branch-and-link (bl) instruction that targets the very next instruction,
> followed by loading the link register (mflr) later. This pattern appears
> in the code like:
> 
>  bl .+4
>  li r5,0
>  mflr r30

If I understand correctly, this is basically a fake call which is used
to get the value of the program counter?

> Objtool currently warns about this as an "unannotated intra-function
> call" because find_call_destination() fails to find any symbol at the
> target offset. Add a check to skip the warning when a branch targets
> the immediate next instruction in the same function.
> 
> Reported-by: kernel test robot 
> Closes: 
> https://lore.kernel.org/oe-kbuild-all/202502180818.xnfdv8i8-...@intel.com/
> Signed-off-by: Sathvika Vasireddy 

This should have a Fixes tag as well.

>  static int add_call_destinations(struct objtool_file *file)
>  {
> + struct instruction *next_insn;
>   struct instruction *insn;
>   unsigned long dest_off;
>   struct symbol *dest;
> @@ -1625,6 +1626,11 @@ static int add_call_destinations(struct objtool_file 
> *file)
>   reloc = insn_reloc(file, insn);
>   if (!reloc) {
>   dest_off = arch_jump_destination(insn);
> +
> + next_insn = next_insn_same_func(file, insn);
> + if (next_insn && dest_off == next_insn->offset)
> + continue;
> +

This won't work on x86, where an intra-function call is converted to a
stack-modifying JUMP.  So this should probably be checked in an
arch-specific function.

-- 
Josh



[powerpc:fixes-test] BUILD SUCCESS eff2eb592efd73f00590d578c3d6021f604df62c

2025-02-20 Thread kernel test robot
tree/branch: https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git 
fixes-test
branch HEAD: eff2eb592efd73f00590d578c3d6021f604df62c  cxl: Fix cross-reference 
in documentation and add deprecation warning

elapsed time: 1446m

configs tested: 128
configs skipped: 5

The following configs have been built successfully.
More configs may be tested in the coming days.

tested configs:
alpha allnoconfiggcc-14.2.0
alphaallyesconfiggcc-14.2.0
alpha   defconfiggcc-14.2.0
arc  allmodconfiggcc-13.2.0
arc   allnoconfiggcc-13.2.0
arc  allyesconfiggcc-13.2.0
arc defconfiggcc-13.2.0
arc   randconfig-001-20250219gcc-13.2.0
arc   randconfig-002-20250219gcc-13.2.0
arm  allmodconfiggcc-14.2.0
arm   allnoconfigclang-17
arm  allyesconfiggcc-14.2.0
arm defconfigclang-21
arm   imxrt_defconfigclang-19
armmvebu_v7_defconfigclang-15
arm nhk8815_defconfigclang-21
arm   randconfig-001-20250219gcc-14.2.0
arm   randconfig-002-20250219clang-17
arm   randconfig-003-20250219clang-15
arm   randconfig-004-20250219gcc-14.2.0
arm   u8500_defconfiggcc-14.2.0
arm   versatile_defconfiggcc-14.2.0
armvexpress_defconfiggcc-14.2.0
arm64allmodconfigclang-18
arm64 allnoconfiggcc-14.2.0
arm64   defconfiggcc-14.2.0
arm64 randconfig-001-20250219clang-21
arm64 randconfig-002-20250219gcc-14.2.0
arm64 randconfig-003-20250219gcc-14.2.0
arm64 randconfig-004-20250219gcc-14.2.0
csky  allnoconfiggcc-14.2.0
cskydefconfiggcc-14.2.0
csky  randconfig-001-20250219gcc-14.2.0
csky  randconfig-002-20250219gcc-14.2.0
hexagon   allnoconfigclang-21
hexagon  allyesconfigclang-18
hexagon defconfigclang-21
hexagon   randconfig-001-20250219clang-14
hexagon   randconfig-002-20250219clang-21
i386 allmodconfiggcc-12
i386  allnoconfiggcc-12
i386 allyesconfiggcc-12
i386buildonly-randconfig-001-20250219clang-19
i386buildonly-randconfig-002-20250219clang-19
i386buildonly-randconfig-003-20250219gcc-12
i386buildonly-randconfig-004-20250219clang-19
i386buildonly-randconfig-005-20250219clang-19
i386buildonly-randconfig-006-20250219gcc-12
i386defconfigclang-19
loongarch allnoconfiggcc-14.2.0
loongarch randconfig-001-20250219gcc-14.2.0
loongarch randconfig-002-20250219gcc-14.2.0
m68k  allnoconfiggcc-14.2.0
m68kdefconfiggcc-14.2.0
m68k   m5249evb_defconfiggcc-14.2.0
microblazeallnoconfiggcc-14.2.0
microblaze  defconfiggcc-14.2.0
mips  allnoconfiggcc-14.2.0
nios2 allnoconfiggcc-14.2.0
nios2 randconfig-001-20250219gcc-14.2.0
nios2 randconfig-002-20250219gcc-14.2.0
openrisc  allnoconfiggcc-14.2.0
openrisc allyesconfiggcc-14.2.0
openriscdefconfiggcc-14.2.0
parisc   allmodconfiggcc-14.2.0
pariscallnoconfiggcc-14.2.0
parisc   allyesconfiggcc-14.2.0
parisc  defconfiggcc-14.2.0
pariscrandconfig-001-20250219gcc-14.2.0
pariscrandconfig-002-20250219gcc-14.2.0
powerpc  allmodconfiggcc-14.2.0
powerpc   allnoconfiggcc-14.2.0
powerpc   randconfig-001-20250219clang-15
powerpc   randconfig-002-20250219clang-17
powerpc   randconfig-003-20250219gcc-14.2.0
powerpc tqm8555_defconfiggcc-14.2.0
powerpc64 randconfig-001-20250219gcc-14.2.0
powerpc64 randconfig-002-20250219 

[PATCH v3] dt-bindings: powerpc: Add Freescale/NXP MPC83xx SoCs

2025-02-20 Thread J . Neuschäfer via B4 Relay
From: "J. Neuschäfer" 

Add a new binding for MPC83xx platforms, describing the board compatible
strings used in currently existing device trees.

Note that the SoC bus is called immr@... in many existing devicetrees,
but this contradicts the simple-bus binding.

Reviewed-by: Rob Herring (Arm) 
Signed-off-by: J. Neuschäfer 
---
V3:
- split out as a single patch
- otherwise no changes

V2:
- part of series [PATCH v2 00/12] YAML conversion of several Freescale/PowerPC 
DT bindings
  Link: 
https://lore.kernel.org/lkml/20250207-ppcyaml-v2-1-8137b0c42...@posteo.net/
- trim subject line
- fix property order to comply with dts coding style
- add Rob Herrings's R-b tag
---
 .../bindings/powerpc/fsl/fsl,mpc83xx.yaml  | 67 ++
 1 file changed, 67 insertions(+)

diff --git a/Documentation/devicetree/bindings/powerpc/fsl/fsl,mpc83xx.yaml 
b/Documentation/devicetree/bindings/powerpc/fsl/fsl,mpc83xx.yaml
new file mode 100644
index 
..1d7ed67473ca447e0fd2e9b8f30d20e18c601ccf
--- /dev/null
+++ b/Documentation/devicetree/bindings/powerpc/fsl/fsl,mpc83xx.yaml
@@ -0,0 +1,67 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/powerpc/fsl/fsl,mpc83xx.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale PowerQUICC II Pro (MPC83xx) platforms
+
+maintainers:
+  - J. Neuschäfer 
+
+properties:
+  $nodename:
+const: '/'
+  compatible:
+oneOf:
+  - description: MPC83xx Reference Design Boards
+items:
+  - enum:
+  - fsl,mpc8308rdb
+  - fsl,mpc8315erdb
+  - fsl,mpc8360rdk
+  - fsl,mpc8377rdb
+  - fsl,mpc8377wlan
+  - fsl,mpc8378rdb
+  - fsl,mpc8379rdb
+
+patternProperties:
+  "^soc@.*$":
+type: object
+properties:
+  compatible:
+oneOf:
+  - items:
+  - enum:
+  - fsl,mpc8315-immr
+  - fsl,mpc8308-immr
+  - const: simple-bus
+  - items:
+  - const: fsl,mpc8360-immr
+  - const: fsl,immr
+  - const: fsl,soc
+  - const: simple-bus
+  - const: simple-bus
+
+additionalProperties: true
+
+examples:
+  - |
+/ {
+compatible = "fsl,mpc8315erdb";
+model = "MPC8315E-RDB";
+#address-cells = <1>;
+#size-cells = <1>;
+
+soc@e000 {
+compatible = "fsl,mpc8315-immr", "simple-bus";
+reg = <0xe000 0x0200>;
+#address-cells = <1>;
+#size-cells = <1>;
+device_type = "soc";
+ranges = <0 0xe000 0x0010>;
+    bus-frequency = <0>;
+};
+};
+
+...

---
base-commit: 2014c95afecee3e76ca4a56956a936e23283f05b
change-id: 20250220-ppcyaml-soc-cae1f14cf389

Best regards,
-- 
J. Neuschäfer