mbox series

[v3,0/7] Unflattening and relocation of host device tree

Message ID cover.1734452721.git.oleksii.kurochko@gmail.com (mailing list archive)
Headers show
Series Unflattening and relocation of host device tree | expand

Message

Oleksii Kurochko Dec. 17, 2024, 4:32 p.m. UTC
The current patch series introduces the relocation of the host device tree file
to free up low memory and also it is expected that discard_initial_modules()
will be called sooner or later, it will discard the FDT boot module,
and remove_early_mappings() will destroy the early mappings.

In addition to relocation, unflattening is introduced to create the tree of
struct device_node for the host device tree.

To implement this, several things have been introduced:
 - destroy_xen_mappings() function, which removes page mappings from Xen's
   page tables. This is necessary for clear_fixmap().
 - {set,clear}_fixmap() functions to manage mappings in the fixmap region,
   which are expected to be used in copy_from_paddr() to copy the FDT to Xen's
   heap.
 - Introduce new config CONFIG_QEMU which is going to be used to cover changes
   connected to QEMU virtual board. It will be used during introduction of stubs
   for clean_and_invalidate_dcache_va_range() and clean_dcache_va_range(),
   which are expected to be used in copy_from_paddr() and flush_page_to_ram(),
   which in turn are expected to be used during the call to xvmalloc_array() in
   relocate_fdt().
   In case of QEMU cached related functions are implemented as returning 0 as
   QEMU doesn't model cache ( and so CMO extensions ). For others cases, it is
   introduced as -ENOSUPP as h/w could support CMO extension ( or hardware
   specific insertions ) and it will need to update implementation of the
   mentioned functions.
 - The introduction of copy_from_paddr() to copy the FDT to an address
   allocated in Xen's heap.

---
Changes in v3:
 - Add some Acks for the patches. All the patches are Acked except:
     [PATCH v3 1/7] xen/riscv: update layout table in config.h
     [PATCH v3 5/7] xen/riscv: implement data and instruction cache operations
 - Other changes please look at the specific patch.
---
Changes in v2:
 - Update the cover letter.
 - Introduce new patch with aligning of upper bounds in the layout table in
   config.h with the definitions below which are inclusive.
 - Other changes please look at the specific patch.
---

Oleksii Kurochko (7):
  xen/riscv: update layout table in config.h
  xen/riscv: add destroy_xen_mappings() to remove mappings in Xen page
    tables
  xen/riscv: reorder includes in asm/page.h alphabetically
  xen/riscv: add {set,clear}_fixmap() functions for managing fixmap
    entries
  xen/riscv: implement data and instruction cache operations
  xen/riscv: implement prereq for DTB relocation
  xen/riscv: relocating and unflattening host device tree

 xen/arch/riscv/Kconfig                  |  2 +
 xen/arch/riscv/configs/tiny64_defconfig |  1 +
 xen/arch/riscv/include/asm/config.h     | 12 +++---
 xen/arch/riscv/include/asm/fixmap.h     |  5 +++
 xen/arch/riscv/include/asm/mm.h         |  8 +++-
 xen/arch/riscv/include/asm/page.h       | 36 ++++++++++++++--
 xen/arch/riscv/include/asm/setup.h      |  4 ++
 xen/arch/riscv/mm.c                     |  6 ---
 xen/arch/riscv/platforms/Kconfig        |  5 +++
 xen/arch/riscv/pt.c                     | 24 +++++++++++
 xen/arch/riscv/setup.c                  | 57 ++++++++++++++++++++++++-
 11 files changed, 140 insertions(+), 20 deletions(-)
 create mode 100644 xen/arch/riscv/platforms/Kconfig

Comments

Jan Beulich Dec. 17, 2024, 4:36 p.m. UTC | #1
On 17.12.2024 17:32, Oleksii Kurochko wrote:
> The current patch series introduces the relocation of the host device tree file
> to free up low memory and also it is expected that discard_initial_modules()
> will be called sooner or later, it will discard the FDT boot module,
> and remove_early_mappings() will destroy the early mappings.
> 
> In addition to relocation, unflattening is introduced to create the tree of
> struct device_node for the host device tree.
> 
> To implement this, several things have been introduced:
>  - destroy_xen_mappings() function, which removes page mappings from Xen's
>    page tables. This is necessary for clear_fixmap().
>  - {set,clear}_fixmap() functions to manage mappings in the fixmap region,
>    which are expected to be used in copy_from_paddr() to copy the FDT to Xen's
>    heap.
>  - Introduce new config CONFIG_QEMU which is going to be used to cover changes
>    connected to QEMU virtual board. It will be used during introduction of stubs
>    for clean_and_invalidate_dcache_va_range() and clean_dcache_va_range(),
>    which are expected to be used in copy_from_paddr() and flush_page_to_ram(),
>    which in turn are expected to be used during the call to xvmalloc_array() in
>    relocate_fdt().
>    In case of QEMU cached related functions are implemented as returning 0 as
>    QEMU doesn't model cache ( and so CMO extensions ). For others cases, it is
>    introduced as -ENOSUPP as h/w could support CMO extension ( or hardware
>    specific insertions ) and it will need to update implementation of the
>    mentioned functions.
>  - The introduction of copy_from_paddr() to copy the FDT to an address
>    allocated in Xen's heap.
> 
> ---
> Changes in v3:
>  - Add some Acks for the patches. All the patches are Acked except:
>      [PATCH v3 1/7] xen/riscv: update layout table in config.h
>      [PATCH v3 5/7] xen/riscv: implement data and instruction cache operations
>  - Other changes please look at the specific patch.
> ---
> Changes in v2:
>  - Update the cover letter.
>  - Introduce new patch with aligning of upper bounds in the layout table in
>    config.h with the definitions below which are inclusive.
>  - Other changes please look at the specific patch.
> ---
> 
> Oleksii Kurochko (7):
>   xen/riscv: update layout table in config.h
>   xen/riscv: add destroy_xen_mappings() to remove mappings in Xen page
>     tables
>   xen/riscv: reorder includes in asm/page.h alphabetically
>   xen/riscv: add {set,clear}_fixmap() functions for managing fixmap
>     entries

Please can you avoid re-posting patches that were already committed (the
latter three)?

Jan
Oleksii Kurochko Dec. 18, 2024, 10:50 a.m. UTC | #2
On 12/17/24 5:36 PM, Jan Beulich wrote:
> On 17.12.2024 17:32, Oleksii Kurochko wrote:
>> The current patch series introduces the relocation of the host device tree file
>> to free up low memory and also it is expected that discard_initial_modules()
>> will be called sooner or later, it will discard the FDT boot module,
>> and remove_early_mappings() will destroy the early mappings.
>>
>> In addition to relocation, unflattening is introduced to create the tree of
>> struct device_node for the host device tree.
>>
>> To implement this, several things have been introduced:
>>   - destroy_xen_mappings() function, which removes page mappings from Xen's
>>     page tables. This is necessary for clear_fixmap().
>>   - {set,clear}_fixmap() functions to manage mappings in the fixmap region,
>>     which are expected to be used in copy_from_paddr() to copy the FDT to Xen's
>>     heap.
>>   - Introduce new config CONFIG_QEMU which is going to be used to cover changes
>>     connected to QEMU virtual board. It will be used during introduction of stubs
>>     for clean_and_invalidate_dcache_va_range() and clean_dcache_va_range(),
>>     which are expected to be used in copy_from_paddr() and flush_page_to_ram(),
>>     which in turn are expected to be used during the call to xvmalloc_array() in
>>     relocate_fdt().
>>     In case of QEMU cached related functions are implemented as returning 0 as
>>     QEMU doesn't model cache ( and so CMO extensions ). For others cases, it is
>>     introduced as -ENOSUPP as h/w could support CMO extension ( or hardware
>>     specific insertions ) and it will need to update implementation of the
>>     mentioned functions.
>>   - The introduction of copy_from_paddr() to copy the FDT to an address
>>     allocated in Xen's heap.
>>
>> ---
>> Changes in v3:
>>   - Add some Acks for the patches. All the patches are Acked except:
>>       [PATCH v3 1/7] xen/riscv: update layout table in config.h
>>       [PATCH v3 5/7] xen/riscv: implement data and instruction cache operations
>>   - Other changes please look at the specific patch.
>> ---
>> Changes in v2:
>>   - Update the cover letter.
>>   - Introduce new patch with aligning of upper bounds in the layout table in
>>     config.h with the definitions below which are inclusive.
>>   - Other changes please look at the specific patch.
>> ---
>>
>> Oleksii Kurochko (7):
>>    xen/riscv: update layout table in config.h
>>    xen/riscv: add destroy_xen_mappings() to remove mappings in Xen page
>>      tables
>>    xen/riscv: reorder includes in asm/page.h alphabetically
>>    xen/riscv: add {set,clear}_fixmap() functions for managing fixmap
>>      entries
> Please can you avoid re-posting patches that were already committed (the
> latter three)?

Sure, I confused something when fetch upstream/staging so missed that some patches
were merged.

Sorry for inconvenience.

~ Oleksii