|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v4 07/17] x86/hvm: add length to mmio check op
>>> On 24.06.15 at 13:24, <paul.durrant@xxxxxxxxxx> wrote:
> --- a/xen/arch/x86/hvm/hpet.c
> +++ b/xen/arch/x86/hvm/hpet.c
> @@ -498,10 +498,11 @@ static int hpet_write(
> return X86EMUL_OKAY;
> }
>
> -static int hpet_range(struct vcpu *v, unsigned long addr)
> +static int hpet_range(struct vcpu *v, unsigned long addr,
> + unsigned long length)
> {
> - return ( (addr >= HPET_BASE_ADDRESS) &&
> - (addr < (HPET_BASE_ADDRESS + HPET_MMAP_SIZE)) );
> + return (addr >= HPET_BASE_ADDRESS) &&
> + ((addr + length) < (HPET_BASE_ADDRESS + HPET_MMAP_SIZE));
<=
> --- a/xen/arch/x86/hvm/vlapic.c
> +++ b/xen/arch/x86/hvm/vlapic.c
> @@ -986,14 +986,16 @@ int hvm_x2apic_msr_write(struct vcpu *v, unsigned int
> msr, uint64_t msr_content)
> return vlapic_reg_write(v, offset, (uint32_t)msr_content);
> }
>
> -static int vlapic_range(struct vcpu *v, unsigned long addr)
> +static int vlapic_range(struct vcpu *v, unsigned long address,
> + unsigned long len)
> {
> struct vlapic *vlapic = vcpu_vlapic(v);
> - unsigned long offset = addr - vlapic_base_address(vlapic);
> + unsigned long offset = address - vlapic_base_address(vlapic);
>
> return !vlapic_hw_disabled(vlapic) &&
> !vlapic_x2apic_mode(vlapic) &&
> - (offset < PAGE_SIZE);
> + (address >= vlapic_base_address(vlapic)) &&
> + ((offset + len) <= PAGE_SIZE);
I'd prefer to stay with checking just offset here, unless you see
anything wrong with that.
> @@ -333,12 +333,15 @@ out:
> return r;
> }
>
> -static int msixtbl_range(struct vcpu *v, unsigned long addr)
> +static int msixtbl_range(struct vcpu *v, unsigned long address,
> + unsigned long len)
> {
> + struct msixtbl_entry *entry;
> const struct msi_desc *desc;
>
> rcu_read_lock(&msixtbl_rcu_lock);
> - desc = msixtbl_addr_to_desc(msixtbl_find_entry(v, addr), addr);
> + entry = msixtbl_find_entry(v, address, len);
> + desc = msixtbl_addr_to_desc(entry, address);
Again I don't see the need to do more adjustments here than
necessary for your purpose.
> --- a/xen/include/asm-x86/hvm/io.h
> +++ b/xen/include/asm-x86/hvm/io.h
> @@ -35,7 +35,9 @@ typedef int (*hvm_mmio_write_t)(struct vcpu *v,
> unsigned long addr,
> unsigned long length,
> unsigned long val);
> -typedef int (*hvm_mmio_check_t)(struct vcpu *v, unsigned long addr);
> +typedef int (*hvm_mmio_check_t)(struct vcpu *v,
> + unsigned long addr,
> + unsigned long length);
I don't think this really needs to be "long"?
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |