David Hildenbrand
2021-Sep-29 08:45 UTC
[PATCH v1 2/8] x86/xen: simplify xen_oldmem_pfn_is_ram()
> > 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. -- Thanks, David / dhildenb
David Hildenbrand
2021-Sep-29 09:03 UTC
[PATCH v1 2/8] x86/xen: simplify xen_oldmem_pfn_is_ram()
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