Re: [PATCH] Allow aligned byte and word writes to IOAPIC registers.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 11/22/2011 06:09 PM, Julian Stecklina wrote:
> This fixes byte accesses to IOAPIC_REG_SELECT as mandated by at least the
> ICH10 and Intel Series 5 chipset specs. It also makes ioapic_mmio_write
> consistent with ioapic_mmio_read, which also allows byte and word accesses.
>

Your patch indents with spaces, while Linux uses tabs for indents.

> Signed-off-by: Julian Stecklina <js@xxxxxxxxx>
> ---
>  virt/kvm/ioapic.c |   17 +++++++++++++----
>  1 files changed, 13 insertions(+), 4 deletions(-)
>
> diff --git a/virt/kvm/ioapic.c b/virt/kvm/ioapic.c
> index 3eed61e..e94ef6ba 100644
> --- a/virt/kvm/ioapic.c
> +++ b/virt/kvm/ioapic.c
> @@ -332,9 +332,18 @@ static int ioapic_mmio_write(struct kvm_io_device *this, gpa_t addr, int len,
>  		     (void*)addr, len, val);
>  	ASSERT(!(addr & 0xf));	/* check alignment */
>  
> -	if (len == 4 || len == 8)
> -		data = *(u32 *) val;
> -	else {
> +        switch (len) {
> +        case 8:
> +        case 4:
> +                data = *(u32 *) val;
> +                break;
> +        case 2:
> +                data = *(u16 *) val;
> +                break;
> +        case 1:
> +                data = *(u8  *) val;
> +                break;
> +        default:
>  		printk(KERN_WARNING "ioapic: Unsupported size %d\n", len);
>  		return 0;
>  	}
> @@ -343,7 +352,7 @@ static int ioapic_mmio_write(struct kvm_io_device *this, gpa_t addr, int len,
>  	spin_lock(&ioapic->lock);
>  	switch (addr) {
>  	case IOAPIC_REG_SELECT:
> -		ioapic->ioregsel = data;
> +		ioapic->ioregsel = data & 0xFF; /* 8-bit register */
>  		break;
>  
>  	case IOAPIC_REG_WINDOW:

This is a bit over-permissive in that it allows 8-byte writes to the
IOWIN register.  I guess it's okay though.

-- 
error compiling committee.c: too many arguments to function

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux