[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v5 5/6] hw/arm/virt: Improve high memory region address assig
From: |
Cornelia Huck |
Subject: |
Re: [PATCH v5 5/6] hw/arm/virt: Improve high memory region address assignment |
Date: |
Wed, 19 Oct 2022 15:54:40 +0200 |
User-agent: |
Notmuch/0.37 (https://notmuchmail.org) |
On Wed, Oct 12 2022, Gavin Shan <gshan@redhat.com> wrote:
> There are three high memory regions, which are VIRT_HIGH_REDIST2,
> VIRT_HIGH_PCIE_ECAM and VIRT_HIGH_PCIE_MMIO. Their base addresses
> are floating on highest RAM address. However, they can be disabled
> in several cases.
>
> (1) One specific high memory region is disabled by developer by
> toggling vms->highmem_{redists, ecam, mmio}.
>
> (2) VIRT_HIGH_PCIE_ECAM region is disabled on machine, which is
> 'virt-2.12' or ealier than it.
>
> (3) VIRT_HIGH_PCIE_ECAM region is disabled when firmware is loaded
> on 32-bits system.
>
> (4) One specific high memory region is disabled when it breaks the
> PA space limit.
>
> The current implementation of virt_set_memmap() isn't comprehensive
> because the space for one specific high memory region is always
> reserved from the PA space for case (1), (2) and (3). In the code,
> 'base' and 'vms->highest_gpa' are always increased for those three
> cases. It's unnecessary since the assigned space of the disabled
> high memory region won't be used afterwards.
>
> This improves the address assignment for those three high memory
> region by skipping the address assignment for one specific high
> memory region if it has been disabled in case (1), (2) and (3).
> 'vms->high_compact' is false for now, meaning that we don't have
> any behavior changes until it becomes configurable through property
> 'compact-highmem' in next patch.
>
> Signed-off-by: Gavin Shan <gshan@redhat.com>
> Tested-by: Zhenyu Zhang <zhenyzha@redhat.com>
> ---
> hw/arm/virt.c | 23 +++++++++++++++--------
> include/hw/arm/virt.h | 1 +
> 2 files changed, 16 insertions(+), 8 deletions(-)
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
- [PATCH v5 0/6] hw/arm/virt: Improve address assignment for high memory regions, Gavin Shan, 2022/10/11
- [PATCH v5 1/6] hw/arm/virt: Introduce virt_set_high_memmap() helper, Gavin Shan, 2022/10/11
- [PATCH v5 2/6] hw/arm/virt: Rename variable size to region_size in virt_set_high_memmap(), Gavin Shan, 2022/10/11
- [PATCH v5 3/6] hw/arm/virt: Introduce variable region_base in virt_set_high_memmap(), Gavin Shan, 2022/10/11
- [PATCH v5 4/6] hw/arm/virt: Introduce virt_get_high_memmap_enabled() helper, Gavin Shan, 2022/10/11
- [PATCH v5 5/6] hw/arm/virt: Improve high memory region address assignment, Gavin Shan, 2022/10/11
- [PATCH v5 6/6] hw/arm/virt: Add 'compact-highmem' property, Gavin Shan, 2022/10/11