qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH v3] hw/arm/virt: Add high MMIO PCI region


From: Pavel Fedin
Subject: Re: [Qemu-devel] [PATCH v3] hw/arm/virt: Add high MMIO PCI region
Date: Wed, 29 Jul 2015 17:01:53 +0300

 Hello! I have studied the problem. It is a kernel bug and it's still not 
fixed, at least in 4.1

> (1) We should confirm whether this really is a guest kernel
> bug (as opposed to the device tree QEMU emits not being
> in spec)

 The problem is in of_pci_range_to_resource(): 
http://lxr.free-electrons.com/source/drivers/of/address.c#L313
 Note the line 333: res->start = range->cpu_addr; here is the problem. The 
problem occurs if CONFIG_ARM_LPAE is disabled. Inside struct resource 'start' 
and 'end' are of  resource_size_t type, which is an alias of phys_addr_t:
--- cut ---
#ifdef CONFIG_PHYS_ADDR_T_64BIT
typedef u64 phys_addr_t;
#else
typedef u32 phys_addr_t;
#endif

typedef phys_addr_t resource_size_t;
--- cut ---
 Config option chain is as follows: CONFIG_ARM_LPAE => 
CONFIG_ARCH_PHYS_ADDR_T_64BIT => CONFIG_PHYS_ADDR_T_64BIT
 This function should check that range->cpu_addr fits into 32 bits if LPAE is 
disabled.

> (2) If it is a kernel bug, submit a patch to fix it

 Will do it.

> (3) Consider a workaround for older guests anyway. The
> scope of that workaround would depend on exactly which
> guests are affected, which is presumably something we
> figured out during step (1).

 Problem occurs if LPAE is disabled in the kernel. What is your verdict then? 
Do we need an option or just ignore those poor guys with such old configs?

Kind regards,
Pavel Fedin
Expert Engineer
Samsung Electronics Research center Russia





reply via email to

[Prev in Thread] Current Thread [Next in Thread]