mbox series

[v6,00/13] xen/arm: Split MMU code as the prepration of MPU work

Message ID 20230828013224.669433-1-Henry.Wang@arm.com (mailing list archive)
Headers show
Series xen/arm: Split MMU code as the prepration of MPU work | expand

Message

Henry Wang Aug. 28, 2023, 1:32 a.m. UTC
Based on the discussion in the Xen Summit [1], sending this series out after
addressing the comments in v5 [2] as the preparation work to add MPU support.
The series passed the GitLab CI check in [3].

Mostly code movement and function folding, with some of Kconfig and build
system (mainly Makefiles) adjustment.

This series is based on:
ec272d8d4c CI: Always move the bisect build log back

[1] https://lore.kernel.org/xen-devel/AS8PR08MB799122F8B0CB841DED64F4819226A@AS8PR08MB7991.eurprd08.prod.outlook.com/
[2] https://lore.kernel.org/xen-devel/20230814042536.878720-1-Henry.Wang@arm.com/
[3] https://gitlab.com/xen-project/people/henryw/xen/-/pipelines/982592897

Henry Wang (9):
  xen/arm: Introduce CONFIG_MMU Kconfig option
  xen/arm64: Split and move MMU-specific head.S to mmu/head.S
  xen/arm64: Fold setup_fixmap() to create_page_tables()
  xen/arm: Split page table related code to mmu/pt.c
  xen/arm: Split MMU system SMP MM bringup code to mmu/smpboot.c
  xen/arm: Fold mmu_init_secondary_cpu() to head.S
  xen/arm: Extract MMU-specific MM code
  xen/arm: Split MMU-specific setup_mm() and related code out
  xen/arm: Fold pmap and fixmap into MMU system

Penny Zheng (2):
  xen/arm: Rename init_secondary_pagetables() to prepare_secondary_mm()
  xen/arm: mmu: move MMU specific P2M code to mmu/p2m.{c,h}

Wei Chen (2):
  xen/arm64: head.S: Introduce enable_{boot,secondary}_cpu_mm()
  xen/arm: Move MMU related definitions from config.h to mmu/layout.h

 xen/arch/arm/Kconfig                    |    5 +-
 xen/arch/arm/Makefile                   |    1 +
 xen/arch/arm/arm32/Makefile             |    1 +
 xen/arch/arm/arm32/head.S               |   22 +-
 xen/arch/arm/arm32/mmu/Makefile         |    1 +
 xen/arch/arm/arm32/mmu/mm.c             |  301 ++++
 xen/arch/arm/arm64/Makefile             |    2 +-
 xen/arch/arm/arm64/head.S               |  460 +-----
 xen/arch/arm/arm64/mmu/Makefile         |    2 +
 xen/arch/arm/arm64/mmu/head.S           |  481 ++++++
 xen/arch/arm/arm64/{ => mmu}/mm.c       |   84 ++
 xen/arch/arm/include/asm/arm32/mm.h     |    1 +
 xen/arch/arm/include/asm/arm64/macros.h |   36 +
 xen/arch/arm/include/asm/config.h       |  132 +-
 xen/arch/arm/include/asm/mm.h           |   28 +-
 xen/arch/arm/include/asm/mmu/layout.h   |  146 ++
 xen/arch/arm/include/asm/mmu/mm.h       |   41 +
 xen/arch/arm/include/asm/mmu/p2m.h      |   18 +
 xen/arch/arm/include/asm/p2m.h          |   26 +-
 xen/arch/arm/include/asm/page.h         |   15 -
 xen/arch/arm/include/asm/setup.h        |    5 +
 xen/arch/arm/kernel.c                   |   28 -
 xen/arch/arm/mm.c                       | 1212 ---------------
 xen/arch/arm/mmu/Makefile               |    4 +
 xen/arch/arm/mmu/p2m.c                  | 1736 +++++++++++++++++++++
 xen/arch/arm/mmu/pt.c                   |  743 +++++++++
 xen/arch/arm/mmu/setup.c                |  372 +++++
 xen/arch/arm/mmu/smpboot.c              |  121 ++
 xen/arch/arm/p2m.c                      | 1837 +----------------------
 xen/arch/arm/setup.c                    |  324 +---
 xen/arch/arm/smpboot.c                  |    4 +-
 xen/arch/arm/xen.lds.S                  |    1 +
 32 files changed, 4222 insertions(+), 3968 deletions(-)
 create mode 100644 xen/arch/arm/arm32/mmu/Makefile
 create mode 100644 xen/arch/arm/arm32/mmu/mm.c
 create mode 100644 xen/arch/arm/arm64/mmu/Makefile
 create mode 100644 xen/arch/arm/arm64/mmu/head.S
 rename xen/arch/arm/arm64/{ => mmu}/mm.c (60%)
 create mode 100644 xen/arch/arm/include/asm/mmu/layout.h
 create mode 100644 xen/arch/arm/include/asm/mmu/mm.h
 create mode 100644 xen/arch/arm/include/asm/mmu/p2m.h
 create mode 100644 xen/arch/arm/mmu/Makefile
 create mode 100644 xen/arch/arm/mmu/p2m.c
 create mode 100644 xen/arch/arm/mmu/pt.c
 create mode 100644 xen/arch/arm/mmu/setup.c
 create mode 100644 xen/arch/arm/mmu/smpboot.c

Comments

Stefano Stabellini Sept. 8, 2023, 10:15 p.m. UTC | #1
I committed patches 1-5

On Mon, 28 Aug 2023, Henry Wang wrote:
> Based on the discussion in the Xen Summit [1], sending this series out after
> addressing the comments in v5 [2] as the preparation work to add MPU support.
> The series passed the GitLab CI check in [3].
> 
> Mostly code movement and function folding, with some of Kconfig and build
> system (mainly Makefiles) adjustment.
> 
> This series is based on:
> ec272d8d4c CI: Always move the bisect build log back
> 
> [1] https://lore.kernel.org/xen-devel/AS8PR08MB799122F8B0CB841DED64F4819226A@AS8PR08MB7991.eurprd08.prod.outlook.com/
> [2] https://lore.kernel.org/xen-devel/20230814042536.878720-1-Henry.Wang@arm.com/
> [3] https://gitlab.com/xen-project/people/henryw/xen/-/pipelines/982592897
> 
> Henry Wang (9):
>   xen/arm: Introduce CONFIG_MMU Kconfig option
>   xen/arm64: Split and move MMU-specific head.S to mmu/head.S
>   xen/arm64: Fold setup_fixmap() to create_page_tables()
>   xen/arm: Split page table related code to mmu/pt.c
>   xen/arm: Split MMU system SMP MM bringup code to mmu/smpboot.c
>   xen/arm: Fold mmu_init_secondary_cpu() to head.S
>   xen/arm: Extract MMU-specific MM code
>   xen/arm: Split MMU-specific setup_mm() and related code out
>   xen/arm: Fold pmap and fixmap into MMU system
> 
> Penny Zheng (2):
>   xen/arm: Rename init_secondary_pagetables() to prepare_secondary_mm()
>   xen/arm: mmu: move MMU specific P2M code to mmu/p2m.{c,h}
> 
> Wei Chen (2):
>   xen/arm64: head.S: Introduce enable_{boot,secondary}_cpu_mm()
>   xen/arm: Move MMU related definitions from config.h to mmu/layout.h
> 
>  xen/arch/arm/Kconfig                    |    5 +-
>  xen/arch/arm/Makefile                   |    1 +
>  xen/arch/arm/arm32/Makefile             |    1 +
>  xen/arch/arm/arm32/head.S               |   22 +-
>  xen/arch/arm/arm32/mmu/Makefile         |    1 +
>  xen/arch/arm/arm32/mmu/mm.c             |  301 ++++
>  xen/arch/arm/arm64/Makefile             |    2 +-
>  xen/arch/arm/arm64/head.S               |  460 +-----
>  xen/arch/arm/arm64/mmu/Makefile         |    2 +
>  xen/arch/arm/arm64/mmu/head.S           |  481 ++++++
>  xen/arch/arm/arm64/{ => mmu}/mm.c       |   84 ++
>  xen/arch/arm/include/asm/arm32/mm.h     |    1 +
>  xen/arch/arm/include/asm/arm64/macros.h |   36 +
>  xen/arch/arm/include/asm/config.h       |  132 +-
>  xen/arch/arm/include/asm/mm.h           |   28 +-
>  xen/arch/arm/include/asm/mmu/layout.h   |  146 ++
>  xen/arch/arm/include/asm/mmu/mm.h       |   41 +
>  xen/arch/arm/include/asm/mmu/p2m.h      |   18 +
>  xen/arch/arm/include/asm/p2m.h          |   26 +-
>  xen/arch/arm/include/asm/page.h         |   15 -
>  xen/arch/arm/include/asm/setup.h        |    5 +
>  xen/arch/arm/kernel.c                   |   28 -
>  xen/arch/arm/mm.c                       | 1212 ---------------
>  xen/arch/arm/mmu/Makefile               |    4 +
>  xen/arch/arm/mmu/p2m.c                  | 1736 +++++++++++++++++++++
>  xen/arch/arm/mmu/pt.c                   |  743 +++++++++
>  xen/arch/arm/mmu/setup.c                |  372 +++++
>  xen/arch/arm/mmu/smpboot.c              |  121 ++
>  xen/arch/arm/p2m.c                      | 1837 +----------------------
>  xen/arch/arm/setup.c                    |  324 +---
>  xen/arch/arm/smpboot.c                  |    4 +-
>  xen/arch/arm/xen.lds.S                  |    1 +
>  32 files changed, 4222 insertions(+), 3968 deletions(-)
>  create mode 100644 xen/arch/arm/arm32/mmu/Makefile
>  create mode 100644 xen/arch/arm/arm32/mmu/mm.c
>  create mode 100644 xen/arch/arm/arm64/mmu/Makefile
>  create mode 100644 xen/arch/arm/arm64/mmu/head.S
>  rename xen/arch/arm/arm64/{ => mmu}/mm.c (60%)
>  create mode 100644 xen/arch/arm/include/asm/mmu/layout.h
>  create mode 100644 xen/arch/arm/include/asm/mmu/mm.h
>  create mode 100644 xen/arch/arm/include/asm/mmu/p2m.h
>  create mode 100644 xen/arch/arm/mmu/Makefile
>  create mode 100644 xen/arch/arm/mmu/p2m.c
>  create mode 100644 xen/arch/arm/mmu/pt.c
>  create mode 100644 xen/arch/arm/mmu/setup.c
>  create mode 100644 xen/arch/arm/mmu/smpboot.c
> 
> -- 
> 2.25.1
>
Ayan Kumar Halder Sept. 11, 2023, 2:03 p.m. UTC | #2
Hi Henry,

On 08/09/2023 23:15, Stefano Stabellini wrote:
> CAUTION: This message has originated from an External Source. Please use proper judgment and caution when opening attachments, clicking links, or responding to this email.
>
>
> I committed patches 1-5
>
> On Mon, 28 Aug 2023, Henry Wang wrote:
>> Based on the discussion in the Xen Summit [1], sending this series out after
>> addressing the comments in v5 [2] as the preparation work to add MPU support.
>> The series passed the GitLab CI check in [3].
>>
>> Mostly code movement and function folding, with some of Kconfig and build
>> system (mainly Makefiles) adjustment.
>>
>> This series is based on:
>> ec272d8d4c CI: Always move the bisect build log back
>>
>> [1] https://lore.kernel.org/xen-devel/AS8PR08MB799122F8B0CB841DED64F4819226A@AS8PR08MB7991.eurprd08.prod.outlook.com/
>> [2] https://lore.kernel.org/xen-devel/20230814042536.878720-1-Henry.Wang@arm.com/
>> [3] https://gitlab.com/xen-project/people/henryw/xen/-/pipelines/982592897
>>
>> Henry Wang (9):
>>    xen/arm: Introduce CONFIG_MMU Kconfig option
>>    xen/arm64: Split and move MMU-specific head.S to mmu/head.S
>>    xen/arm64: Fold setup_fixmap() to create_page_tables()
>>    xen/arm: Split page table related code to mmu/pt.c
>>    xen/arm: Split MMU system SMP MM bringup code to mmu/smpboot.c
>>    xen/arm: Fold mmu_init_secondary_cpu() to head.S
>>    xen/arm: Extract MMU-specific MM code
>>    xen/arm: Split MMU-specific setup_mm() and related code out
>>    xen/arm: Fold pmap and fixmap into MMU system
>>
>> Penny Zheng (2):
>>    xen/arm: Rename init_secondary_pagetables() to prepare_secondary_mm()
>>    xen/arm: mmu: move MMU specific P2M code to mmu/p2m.{c,h}
>>
>> Wei Chen (2):
>>    xen/arm64: head.S: Introduce enable_{boot,secondary}_cpu_mm()
>>    xen/arm: Move MMU related definitions from config.h to mmu/layout.h

Except for "[PATCH v6 08/13] xen/arm: Fold mmu_init_secondary_cpu() to 
head.S " where I have a small comment, I am happy with the current set.

I have made the corresponding changes for Arm32 MMU (See 
https://gitlab.com/xen-project/people/ayankuma/xen/-/commits/mmu_arm32_on_arm64?ref_type=heads 
),

and triggered the CI. It looks all good (qemu-smoke-ppc64le-pseries-gcc 
failure seems unrelated).

I have sent out the patches for review so that the maintainers/you can 
have a look and review them

("[XEN v1 0/4] xen/arm: Split MMU code as the prepration of MPU work 
form Arm32").

- Ayan

>>
>>   xen/arch/arm/Kconfig                    |    5 +-
>>   xen/arch/arm/Makefile                   |    1 +
>>   xen/arch/arm/arm32/Makefile             |    1 +
>>   xen/arch/arm/arm32/head.S               |   22 +-
>>   xen/arch/arm/arm32/mmu/Makefile         |    1 +
>>   xen/arch/arm/arm32/mmu/mm.c             |  301 ++++
>>   xen/arch/arm/arm64/Makefile             |    2 +-
>>   xen/arch/arm/arm64/head.S               |  460 +-----
>>   xen/arch/arm/arm64/mmu/Makefile         |    2 +
>>   xen/arch/arm/arm64/mmu/head.S           |  481 ++++++
>>   xen/arch/arm/arm64/{ => mmu}/mm.c       |   84 ++
>>   xen/arch/arm/include/asm/arm32/mm.h     |    1 +
>>   xen/arch/arm/include/asm/arm64/macros.h |   36 +
>>   xen/arch/arm/include/asm/config.h       |  132 +-
>>   xen/arch/arm/include/asm/mm.h           |   28 +-
>>   xen/arch/arm/include/asm/mmu/layout.h   |  146 ++
>>   xen/arch/arm/include/asm/mmu/mm.h       |   41 +
>>   xen/arch/arm/include/asm/mmu/p2m.h      |   18 +
>>   xen/arch/arm/include/asm/p2m.h          |   26 +-
>>   xen/arch/arm/include/asm/page.h         |   15 -
>>   xen/arch/arm/include/asm/setup.h        |    5 +
>>   xen/arch/arm/kernel.c                   |   28 -
>>   xen/arch/arm/mm.c                       | 1212 ---------------
>>   xen/arch/arm/mmu/Makefile               |    4 +
>>   xen/arch/arm/mmu/p2m.c                  | 1736 +++++++++++++++++++++
>>   xen/arch/arm/mmu/pt.c                   |  743 +++++++++
>>   xen/arch/arm/mmu/setup.c                |  372 +++++
>>   xen/arch/arm/mmu/smpboot.c              |  121 ++
>>   xen/arch/arm/p2m.c                      | 1837 +----------------------
>>   xen/arch/arm/setup.c                    |  324 +---
>>   xen/arch/arm/smpboot.c                  |    4 +-
>>   xen/arch/arm/xen.lds.S                  |    1 +
>>   32 files changed, 4222 insertions(+), 3968 deletions(-)
>>   create mode 100644 xen/arch/arm/arm32/mmu/Makefile
>>   create mode 100644 xen/arch/arm/arm32/mmu/mm.c
>>   create mode 100644 xen/arch/arm/arm64/mmu/Makefile
>>   create mode 100644 xen/arch/arm/arm64/mmu/head.S
>>   rename xen/arch/arm/arm64/{ => mmu}/mm.c (60%)
>>   create mode 100644 xen/arch/arm/include/asm/mmu/layout.h
>>   create mode 100644 xen/arch/arm/include/asm/mmu/mm.h
>>   create mode 100644 xen/arch/arm/include/asm/mmu/p2m.h
>>   create mode 100644 xen/arch/arm/mmu/Makefile
>>   create mode 100644 xen/arch/arm/mmu/p2m.c
>>   create mode 100644 xen/arch/arm/mmu/pt.c
>>   create mode 100644 xen/arch/arm/mmu/setup.c
>>   create mode 100644 xen/arch/arm/mmu/smpboot.c
>>
>> --
>> 2.25.1
>>
Henry Wang Sept. 12, 2023, 12:51 a.m. UTC | #3
Hi Ayan,

> On Sep 11, 2023, at 22:03, Ayan Kumar Halder <ayankuma@amd.com> wrote:
> 
> Hi Henry,
> 
> On 08/09/2023 23:15, Stefano Stabellini wrote:
>> 
>> I committed patches 1-5
>> 
>> On Mon, 28 Aug 2023, Henry Wang wrote:
>>> 
>>> Henry Wang (9):
>>>   xen/arm: Introduce CONFIG_MMU Kconfig option
>>>   xen/arm64: Split and move MMU-specific head.S to mmu/head.S
>>>   xen/arm64: Fold setup_fixmap() to create_page_tables()
>>>   xen/arm: Split page table related code to mmu/pt.c
>>>   xen/arm: Split MMU system SMP MM bringup code to mmu/smpboot.c
>>>   xen/arm: Fold mmu_init_secondary_cpu() to head.S
>>>   xen/arm: Extract MMU-specific MM code
>>>   xen/arm: Split MMU-specific setup_mm() and related code out
>>>   xen/arm: Fold pmap and fixmap into MMU system
>>> 
>>> Penny Zheng (2):
>>>   xen/arm: Rename init_secondary_pagetables() to prepare_secondary_mm()
>>>   xen/arm: mmu: move MMU specific P2M code to mmu/p2m.{c,h}
>>> 
>>> Wei Chen (2):
>>>   xen/arm64: head.S: Introduce enable_{boot,secondary}_cpu_mm()
>>>   xen/arm: Move MMU related definitions from config.h to mmu/layout.h
> 
> Except for "[PATCH v6 08/13] xen/arm: Fold mmu_init_secondary_cpu() to head.S " where I have a small comment, I am happy with the current set.

Thanks!

> 
> I have made the corresponding changes for Arm32 MMU (See https://gitlab.com/xen-project/people/ayankuma/xen/-/commits/mmu_arm32_on_arm64?ref_type=heads ),
> 
> and triggered the CI. It looks all good (qemu-smoke-ppc64le-pseries-gcc failure seems unrelated).
> 
> I have sent out the patches for review so that the maintainers/you can have a look and review them

Sure, me and Penny will have a look.

Kind regards,
Henry

> 
> ("[XEN v1 0/4] xen/arm: Split MMU code as the prepration of MPU work form Arm32").
> 
> - Ayan