xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: Julien Grall <julien.grall@linaro.org>
To: Ian Campbell <Ian.Campbell@citrix.com>
Cc: patches@linaro.org, xen-devel@lists.xen.org,
	andre.przywara@linaro.org, stefano.stabellini@eu.citrix.com
Subject: Re: [RFC 21/24] xen/arm: vexpress: Blacklist a list of board specific devices
Date: Thu, 22 Aug 2013 16:28:32 +0100	[thread overview]
Message-ID: <52162E20.5090507@linaro.org> (raw)
In-Reply-To: <1377183742.2825.71.camel@kazak.uk.xensource.com>

On 08/22/2013 04:02 PM, Ian Campbell wrote:
> On Thu, 2013-08-22 at 15:51 +0100, Julien Grall wrote:
>> On 08/22/2013 03:36 PM, Ian Campbell wrote:
>>> On Thu, 2013-08-22 at 15:24 +0100, Julien Grall wrote:
>>>> On 08/22/2013 03:00 PM, Ian Campbell wrote:
>>>>> On Fri, 2013-08-16 at 22:05 +0100, Julien Grall wrote:
>>>>>> On Versatile there is a bunch of devices that must not pass-through to any
>>>>>
>>>>> "there are a bunch of devices which must not be passed-through"
>>>>>
>>>>>> guest (power management and cache coherency devices).
>>>>>>
>>>>>> This commit also blacklist the HDLCD device because then is unable to correctly
>>>>>                                                           ^Linux?
>>>>>
>>>>>> map the framebuffer. Therefore, when Linux will try to access to the framebuffer,
>>>>>> Xen will receive a non-handled data access.
>>>>>
>>>>> Can/should this be conditional on whether Xen has console=hdlcd or not?
>>>>> Or does Xen use the device unconditionally if it exists? TBH I think it
>>>>> would be normal to prefer that Linux gets this device...
>>>>>
>>>>> (I'm unclear how this relates to memreserve as mention in the code
>>>>> comment)
>>>>
>>>> This issue is only when the HDLCD is used by Linux (not Xen). To specify
>>>> where the framebuffer lives in the memory, there is a property
>>>> "framebuffer" which contains address/size.
>>>> This regions must be reserved to avoid Linux/u-boot play with it. So the
>>>> DTS has a memreserve range with the same value. I don't really
>>>> understand all memreserve things but Xen must cope with it.
>>>
>>> Yes, Xen needs to learn memreserve, it's used on midway too for example.
>>
>> As I understand memreserve can only contains RAM region. Right?
> 
> ePAPR seems to suggest it is only for RAM, yes.
> 
>>> It seems like it would be hard to link an individual memsreserve to a
>>> particular device, at least not without device specific logic (e.g
>>> looking at the "framebuffer" property in this case).
>>>
>>> Sounds like we might need list of compatible -> dom0_init_hook
>>> functions, with the appropriate hook called for each device which we
>>> pass through.
>>
>> It could be a solution. In this case, we just need to update the
>> framebuffer property and the memreserve.
> 
> I think in this case we probably want to create a 1:1 mapping of the
> video ram? In case e.g. the firmware has setup attributes, or the LCD
> cannot use a different address etc...

Do we need to take into account in the dom0 memory?

For example, the amount of video RAM memory is 6Mb and the DOM0 memory
is 256Mb.

Does Xen must allocate?
	- 6Mb of 1:1 mapping
        - 250Mb of domain allocate page

>>
>>>
>>> Ian.
>>>
>>>>
>>>> This solution is not upstream (only in the Linaro tree). I don't know if
>>>> this driver works with the vanilla kernel.
>>>>
>>>>>
>>>>>>
>>>>>> Signed-off-by: Julien Grall <julien.grall@linaro.org>
>>>>>> ---
>>>>>>  xen/arch/arm/platforms/vexpress.c |   17 +++++++++++++++++
>>>>>>  1 file changed, 17 insertions(+)
>>>>>>
>>>>>> diff --git a/xen/arch/arm/platforms/vexpress.c b/xen/arch/arm/platforms/vexpress.c
>>>>>> index 8fc30c4..ece7bd9 100644
>>>>>> --- a/xen/arch/arm/platforms/vexpress.c
>>>>>> +++ b/xen/arch/arm/platforms/vexpress.c
>>>>>> @@ -125,9 +125,26 @@ static const char const *vexpress_dt_compat[] __initdata =
>>>>>>      NULL
>>>>>>  };
>>>>>>  
>>>>>> +static const struct dt_device_match vexpress_blacklist_dev[] __initconst =
>>>>>> +{
>>>>>> +    /* Cache Coherent Interconnect */
>>>>>> +    DT_MATCH_COMPATIBLE("arm,cci-400"),
>>>>>> +    DT_MATCH_COMPATIBLE("arm,cci-400-pmu"),
>>>>>> +    /* Video device
>>>>>> +     * TODO: remove it once memreserve is handled properly by Xen
>>>>>> +     */
>>>>>> +    DT_MATCH_COMPATIBLE("arm,hdlcd"),
>>>>>> +    /* Hardware power management */
>>>>>> +    DT_MATCH_COMPATIBLE("arm,vexpress-reset"),
>>>>>> +    DT_MATCH_COMPATIBLE("arm,vexpress-reboot"),
>>>>>> +    DT_MATCH_COMPATIBLE("arm,vexpress-shutdown"),
>>>>>> +    { /* sentinel */ },
>>>>>> +};
>>>>>> +
>>>>>>  PLATFORM_START(vexpress, "VERSATILE EXPRESS")
>>>>>>      .compatible = vexpress_dt_compat,
>>>>>>      .reset = vexpress_reset,
>>>>>> +    .blacklist_dev = vexpress_blacklist_dev,
>>>>>>  PLATFORM_END
>>>>>>  
>>>>>>  /*
>>>>>
>>>>>
>>>>
>>>>
>>>
>>>
>>
>>
> 
> 


-- 
Julien Grall

  reply	other threads:[~2013-08-22 15:28 UTC|newest]

Thread overview: 84+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-08-16 21:05 [RFC 00/24] Allow Xen to boot with a raw Device Tree Julien Grall
2013-08-16 21:05 ` [RFC 01/24] xen/char: dt-uart: Allow the user to give a path to the node Julien Grall
2013-08-16 21:25   ` Andre Przywara
2013-08-19 15:09     ` Julien Grall
2013-08-22 12:23       ` Ian Campbell
2013-08-16 21:05 ` [RFC 02/24] xen: Introduce __initconst to store initial const data Julien Grall
2013-08-19  9:46   ` Jan Beulich
2013-08-19 14:56     ` Ian Campbell
2013-08-20  7:12       ` Jan Beulich
2013-08-20  8:31         ` Ian Campbell
2013-08-20  8:53           ` Jan Beulich
2013-08-20  8:59           ` Julien Grall
2013-08-22 13:07   ` Ian Campbell
2013-08-16 21:05 ` [RFC 03/24] xen/dts: Don't check the number of address and size cells in process_cpu_node Julien Grall
2013-08-19  0:59   ` Chen Baozi
2013-08-22 12:51   ` Ian Campbell
2013-08-22 13:14     ` Julien Grall
2013-08-22 14:05       ` Ian Campbell
2013-08-16 21:05 ` [RFC 04/24] xen/dts: Constify device_tree_flattened Julien Grall
2013-08-22 13:05   ` Ian Campbell
2013-08-22 13:35     ` Julien Grall
2013-08-22 14:07       ` Ian Campbell
2013-08-16 21:05 ` [RFC 05/24] xen/arm: Move __PSCI* from traps.c to the header Julien Grall
2013-08-22 13:05   ` Ian Campbell
2013-08-16 21:05 ` [RFC 06/24] xen: Add new string functions Julien Grall
2013-08-19  9:54   ` Jan Beulich
2013-08-19 14:57     ` Ian Campbell
2013-08-19 15:13       ` Julien Grall
2013-08-20  8:32         ` Jan Beulich
2013-08-16 21:05 ` [RFC 07/24] xen: Use the right string comparison function in device tree Julien Grall
2013-08-22 13:11   ` Ian Campbell
2013-08-22 13:23     ` Julien Grall
2013-08-16 21:05 ` [RFC 08/24] xen/dts: Don't add a fake property "name" in the " Julien Grall
2013-08-22 13:16   ` Ian Campbell
2013-08-22 13:43     ` Julien Grall
2013-08-22 14:08       ` Ian Campbell
2013-08-16 21:05 ` [RFC 09/24] xen/dts: Add new helpers to use " Julien Grall
2013-08-22 13:21   ` Ian Campbell
2013-08-22 13:48     ` Julien Grall
2013-08-22 14:09       ` Ian Campbell
2013-08-16 21:05 ` [RFC 10/24] xen/dts: Remove device_get_reg call in process_memory_node Julien Grall
2013-08-22 13:23   ` Ian Campbell
2013-08-22 13:54     ` Julien Grall
2013-08-22 14:10       ` Ian Campbell
2013-08-16 21:05 ` [RFC 11/24] xen/dts: Remove device_get_reg call in process_cpu_node Julien Grall
2013-08-16 21:05 ` [RFC 12/24] xen/dts: Remove device_get_reg call in process_multiboot_node Julien Grall
2013-08-16 21:05 ` [RFC 13/24] xen/dts: Check the CPU ID is not greater than NR_CPUS Julien Grall
2013-08-22 13:24   ` Ian Campbell
2013-08-16 21:05 ` [RFC 14/24] xen/video: hdlcd: Convert the driver to the new device tree API Julien Grall
2013-08-22 13:28   ` Ian Campbell
2013-08-22 14:02     ` Julien Grall
2013-08-22 14:11       ` Ian Campbell
2013-08-16 21:05 ` [RFC 15/24] xen/arm: Use dt_device_match to avoid multiple if conditions Julien Grall
2013-08-22 13:30   ` Ian Campbell
2013-08-22 14:04     ` Julien Grall
2013-08-16 21:05 ` [RFC 16/24] xen/arm: Build DOM0 FDT by browsing the device tree structure Julien Grall
2013-08-22 13:49   ` Ian Campbell
2013-08-22 14:10     ` Julien Grall
2013-08-22 14:13       ` Ian Campbell
2013-08-16 21:05 ` [RFC 17/24] xen/arm: Mark each device used by Xen as disabled in DOM0 FDT Julien Grall
2013-08-22 13:50   ` Ian Campbell
2013-08-22 14:15     ` Julien Grall
2013-08-22 14:22       ` Ian Campbell
2013-08-16 21:05 ` [RFC 18/24] xen/arm: Don't map disabled device in DOM0 Julien Grall
2013-08-16 21:05 ` [RFC 19/24] xen/arm: Create a fake PSCI node in dom0 device tree Julien Grall
2013-08-21 13:50   ` Julien Grall
2013-08-16 21:05 ` [RFC 20/24] xen/arm: Add new platform specific callback device_is_blacklist Julien Grall
2013-08-22 13:57   ` Ian Campbell
2013-08-16 21:05 ` [RFC 21/24] xen/arm: vexpress: Blacklist a list of board specific devices Julien Grall
2013-08-22 14:00   ` Ian Campbell
2013-08-22 14:24     ` Julien Grall
2013-08-22 14:36       ` Ian Campbell
2013-08-22 14:51         ` Julien Grall
2013-08-22 15:02           ` Ian Campbell
2013-08-22 15:28             ` Julien Grall [this message]
2013-08-22 15:32               ` Ian Campbell
2013-08-16 21:05 ` [RFC 22/24] xen/arm: exynos5: Blacklist MCT device Julien Grall
2013-08-16 21:05 ` [RFC 23/24] xen/dts: Clean up the exported API for device tree Julien Grall
2013-08-22 14:01   ` Ian Campbell
2013-08-16 21:05 ` [RFC 24/24] xen/arm: Check if the device is available before using it Julien Grall
2013-08-22 14:01   ` Ian Campbell
2013-08-19 22:11 ` [RFC 00/24] Allow Xen to boot with a raw Device Tree Julien Grall
2013-08-20  8:33   ` Ian Campbell
2013-08-20  8:48     ` Julien Grall

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=52162E20.5090507@linaro.org \
    --to=julien.grall@linaro.org \
    --cc=Ian.Campbell@citrix.com \
    --cc=andre.przywara@linaro.org \
    --cc=patches@linaro.org \
    --cc=stefano.stabellini@eu.citrix.com \
    --cc=xen-devel@lists.xen.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).