Re: [PATCH v1 2/8] x86/xen: simplify xen_oldmem_pfn_is_ram()

From: David Hildenbrand
Date: Wed Sep 29 2021 - 05:03:18 EST


On 29.09.21 10:45, David Hildenbrand wrote:

How about

    return a.mem_type != HVMMEM_mmio_dm;


Ha, how could I have missed that :)


Result should be promoted to int and this has added benefit of not requiring changes in patch 4.


Can we go one step further and do


@@ -20,24 +20,11 @@ static int xen_oldmem_pfn_is_ram(unsigned long pfn)
struct xen_hvm_get_mem_type a = {
.domid = DOMID_SELF,
.pfn = pfn,
+ .mem_type = HVMMEM_ram_rw,
};
- int ram;
- if (HYPERVISOR_hvm_op(HVMOP_get_mem_type, &a))
- return -ENXIO;
-
- switch (a.mem_type) {
- case HVMMEM_mmio_dm:
- ram = 0;
- break;
- case HVMMEM_ram_rw:
- case HVMMEM_ram_ro:
- default:
- ram = 1;
- break;
- }
-
- return ram;
+ HYPERVISOR_hvm_op(HVMOP_get_mem_type, &a);
+ return a.mem_type != HVMMEM_mmio_dm;
}
#endif


Assuming that if HYPERVISOR_hvm_op() fails that
.mem_type is not set to HVMMEM_mmio_dm.


Okay we can't, due to "__must_check" ...

--
Thanks,

David / dhildenb