[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [RFC PATCH v4 22/36] i386/tdx: Track RAM entries for TDX VM
From: |
Gerd Hoffmann |
Subject: |
Re: [RFC PATCH v4 22/36] i386/tdx: Track RAM entries for TDX VM |
Date: |
Tue, 24 May 2022 09:37:29 +0200 |
> +static int tdx_accept_ram_range(uint64_t address, uint64_t length)
> +{
> + TdxRamEntry *e;
> + int i;
> +
> + for (i = 0; i < tdx_guest->nr_ram_entries; i++) {
> + e = &tdx_guest->ram_entries[i];
> +
> + if (address + length < e->address ||
> + e->address + e->length < address) {
> + continue;
> + }
> +
> + if (e->address > address ||
> + e->address + e->length < address + length) {
> + return -EINVAL;
> + }
if (e->type == TDX_RAM_ADDED)
return -EINVAL
> + if (e->address == address && e->length == length) {
> + e->type = TDX_RAM_ADDED;
> + } else if (e->address == address) {
> + e->address += length;
> + e->length -= length;
> + tdx_add_ram_entry(address, length, TDX_RAM_ADDED);
> + } else if (e->address + e->length == address + length) {
> + e->length -= length;
> + tdx_add_ram_entry(address, length, TDX_RAM_ADDED);
> + } else {
> + TdxRamEntry tmp = {
> + .address = e->address,
> + .length = e->length,
> + };
> + e->length = address - tmp.address;
> +
> + tdx_add_ram_entry(address, length, TDX_RAM_ADDED);
> + tdx_add_ram_entry(address + length,
> + tmp.address + tmp.length - (address + length),
> + TDX_RAM_UNACCEPTED);
> + }
I think all this can be simplified, by
(1) Change the existing entry to cover the accepted ram range.
(2) If there is room before the accepted ram range add a
TDX_RAM_UNACCEPTED entry for that.
(3) If there is room after the accepted ram range add a
TDX_RAM_UNACCEPTED entry for that.
take care,
Gerd
- [RFC PATCH v4 15/36] i386/tdx: Set kvm_readonly_mem_enabled to false for TDX VM, (continued)
- [RFC PATCH v4 15/36] i386/tdx: Set kvm_readonly_mem_enabled to false for TDX VM, Xiaoyao Li, 2022/05/11
- [RFC PATCH v4 20/36] i386/tdx: Register a machine_init_done callback for TD, Xiaoyao Li, 2022/05/11
- [RFC PATCH v4 17/36] i386/tdx: Parse TDVF metadata for TDX VM, Xiaoyao Li, 2022/05/11
- [RFC PATCH v4 21/36] i386/tdx: Track mem_ptr for each firmware entry of TDVF, Xiaoyao Li, 2022/05/11
- [RFC PATCH v4 22/36] i386/tdx: Track RAM entries for TDX VM, Xiaoyao Li, 2022/05/11
- Re: [RFC PATCH v4 22/36] i386/tdx: Track RAM entries for TDX VM,
Gerd Hoffmann <=
- Re: [RFC PATCH v4 22/36] i386/tdx: Track RAM entries for TDX VM, Xiaoyao Li, 2022/05/26
- Re: [RFC PATCH v4 22/36] i386/tdx: Track RAM entries for TDX VM, Isaku Yamahata, 2022/05/26
- Re: [RFC PATCH v4 22/36] i386/tdx: Track RAM entries for TDX VM, Xiaoyao Li, 2022/05/27
- Re: [RFC PATCH v4 22/36] i386/tdx: Track RAM entries for TDX VM, Gerd Hoffmann, 2022/05/30
- Re: [RFC PATCH v4 22/36] i386/tdx: Track RAM entries for TDX VM, Xiaoyao Li, 2022/05/30
- Re: [RFC PATCH v4 22/36] i386/tdx: Track RAM entries for TDX VM, Xiaoyao Li, 2022/05/27
[RFC PATCH v4 24/36] i386/tdx: Add TDVF memory via KVM_TDX_INIT_MEM_REGION, Xiaoyao Li, 2022/05/11