* [PATCH V1 17/29] xen/arm: Mark each device used by Xen as disabled in DOM0 FDT
2013-08-28 14:47 [PATCH V1 00/29] Allow Xen to boot with a raw Device Tree Julien Grall
@ 2013-08-28 14:47 ` Julien Grall
2013-09-09 11:37 ` Ian Campbell
0 siblings, 1 reply; 7+ messages in thread
From: Julien Grall @ 2013-08-28 14:47 UTC (permalink / raw)
To: xen-devel
Cc: patches, Julien Grall, ian.campbell, andre.przywara,
stefano.stabellini
When a device has a property status with disabled inside, Linux will not use
the device.
Signed-off-by: Julien Grall <julien.grall@linaro.org>
---
xen/arch/arm/domain_build.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
index 76decf4..d56bc70a 100644
--- a/xen/arch/arm/domain_build.c
+++ b/xen/arch/arm/domain_build.c
@@ -208,6 +208,14 @@ static int write_properties(struct domain *d, struct kernel_info *kinfo,
return res;
}
+ /* Disable all devices used by Xen */
+ if ( dt_device_used_by(np) == DOMID_XEN )
+ {
+ res = fdt_property(kinfo->fdt, "status", "disabled", 8 + 1);
+ if ( res )
+ return res;
+ }
+
/*
* XXX should populate /chosen/linux,initrd-{start,end} here if we
* have module[2]
--
1.7.10.4
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH V1 17/29] xen/arm: Mark each device used by Xen as disabled in DOM0 FDT
@ 2013-08-29 1:19 Bamvor Jian Zhang
2013-08-29 8:34 ` Ian Campbell
2013-08-29 12:20 ` Julien Grall
0 siblings, 2 replies; 7+ messages in thread
From: Bamvor Jian Zhang @ 2013-08-29 1:19 UTC (permalink / raw)
To: xen-devel
Cc: patches, julien.grall, ian.campbell, andre.przywara,
stefano.stabellini
Hi Julien
> On some board, there is no alias to the UART. To avoid modification in
> the device tree, dt-uart should also search device by path.
>
> To distinguish an alias from a path, dt-uart will check the first character.
> If it's a / then it's path, otherwise it's an alias.
>
> Signed-off-by: Julien Grall <julien.grall@xxxxxxxxxx>
> Acked-by: Ian Cambell <ian.campbell@xxxxxxxxxx>
> ---
> xen/drivers/char/dt-uart.c | 16 ++++++++++------
> 1 file changed, 10 insertions(+), 6 deletions(-)
>
> diff --git a/xen/drivers/char/dt-uart.c b/xen/drivers/char/dt-uart.c
> index 93bb0f5..d7204fb 100644
> --- a/xen/drivers/char/dt-uart.c
> +++ b/xen/drivers/char/dt-uart.c
> @@ -26,9 +26,10 @@
>
> /*
> * Configure UART port with a string:
> - * alias,options
> + * path,options
> *
> - * @alias: alias used in the device tree for the UART
> + * @path: full path used in the device tree for the UART. If the path
> + * doesn't start with '/', we assuming that it's an alias.
> * @options: UART speficic options (see in each UART driver)
> */
> static char __initdata opt_dtuart[30] = "";
> @@ -38,7 +39,7 @@ void __init dt_uart_init(void)
> {
> struct dt_device_node *dev;
> int ret;
> - const char *devalias = opt_dtuart;
> + const char *devpath = opt_dtuart;
> char *options;
>
> if ( !console_has("dtuart") || !strcmp(opt_dtuart, "") )
> @@ -53,12 +54,15 @@ void __init dt_uart_init(void)
> else
> options = "";
>
> - early_printk("Looking for UART console %s\n", devalias);
> - dev = dt_find_node_by_alias(devalias);
> + early_printk("Looking for UART console %s\n", devpath);
> + if ( *devpath == '/' )
> + dev = dt_find_node_by_path(devpath);
> + else
> + dev = dt_find_node_by_alias(devpath);
if '/' start an alias, it should be
+ if ( *devpath == '/' )
+ dev = dt_find_node_by_alias(devpath);
+ else
+ dev = dt_find_node_by_path(devpath);
bamvor
>
> if ( !dev )
> {
> - early_printk("Unable to find device \"%s\"\n", devalias);
> + early_printk("Unable to find device \"%s\"\n", devpath);
> return;
> }
>
> --
> 1.7.10.4
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH V1 17/29] xen/arm: Mark each device used by Xen as disabled in DOM0 FDT
2013-08-29 1:19 [PATCH V1 17/29] xen/arm: Mark each device used by Xen as disabled in DOM0 FDT Bamvor Jian Zhang
@ 2013-08-29 8:34 ` Ian Campbell
2013-08-29 12:20 ` Julien Grall
1 sibling, 0 replies; 7+ messages in thread
From: Ian Campbell @ 2013-08-29 8:34 UTC (permalink / raw)
To: Bamvor Jian Zhang
Cc: stefano.stabellini, julien.grall, patches, andre.przywara,
xen-devel
On Wed, 2013-08-28 at 19:19 -0600, Bamvor Jian Zhang wrote:
> > - early_printk("Looking for UART console %s\n", devalias);
> > - dev = dt_find_node_by_alias(devalias);
> > + early_printk("Looking for UART console %s\n", devpath);
> > + if ( *devpath == '/' )
> > + dev = dt_find_node_by_path(devpath);
> > + else
> > + dev = dt_find_node_by_alias(devpath);
> if '/' start an alias, it should be
I think / is the start of a path not an alias, so the current code is
correct.
> + if ( *devpath == '/' )
> + dev = dt_find_node_by_alias(devpath);
> + else
> + dev = dt_find_node_by_path(devpath);
>
Ian.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH V1 17/29] xen/arm: Mark each device used by Xen as disabled in DOM0 FDT
2013-08-29 1:19 [PATCH V1 17/29] xen/arm: Mark each device used by Xen as disabled in DOM0 FDT Bamvor Jian Zhang
2013-08-29 8:34 ` Ian Campbell
@ 2013-08-29 12:20 ` Julien Grall
1 sibling, 0 replies; 7+ messages in thread
From: Julien Grall @ 2013-08-29 12:20 UTC (permalink / raw)
To: Bamvor Jian Zhang
Cc: stefano.stabellini, patches, ian.campbell, andre.przywara,
xen-devel
On 08/29/2013 02:19 AM, Bamvor Jian Zhang wrote:
> Hi Julien
Hi Bamvor,
>> On some board, there is no alias to the UART. To avoid modification in
>> the device tree, dt-uart should also search device by path.
>>
>> To distinguish an alias from a path, dt-uart will check the first character.
>> If it's a / then it's path, otherwise it's an alias.
>>
>> Signed-off-by: Julien Grall <julien.grall@xxxxxxxxxx>
>> Acked-by: Ian Cambell <ian.campbell@xxxxxxxxxx>
>> ---
>> xen/drivers/char/dt-uart.c | 16 ++++++++++------
>> 1 file changed, 10 insertions(+), 6 deletions(-)
>>
>> diff --git a/xen/drivers/char/dt-uart.c b/xen/drivers/char/dt-uart.c
>> index 93bb0f5..d7204fb 100644
>> --- a/xen/drivers/char/dt-uart.c
>> +++ b/xen/drivers/char/dt-uart.c
>> @@ -26,9 +26,10 @@
>>
>> /*
>> * Configure UART port with a string:
>> - * alias,options
>> + * path,options
>> *
>> - * @alias: alias used in the device tree for the UART
>> + * @path: full path used in the device tree for the UART. If the path
>> + * doesn't start with '/', we assuming that it's an alias.
>> * @options: UART speficic options (see in each UART driver)
>> */
>> static char __initdata opt_dtuart[30] = "";
>> @@ -38,7 +39,7 @@ void __init dt_uart_init(void)
>> {
>> struct dt_device_node *dev;
>> int ret;
>> - const char *devalias = opt_dtuart;
>> + const char *devpath = opt_dtuart;
>> char *options;
>>
>> if ( !console_has("dtuart") || !strcmp(opt_dtuart, "") )
>> @@ -53,12 +54,15 @@ void __init dt_uart_init(void)
>> else
>> options = "";
>>
>> - early_printk("Looking for UART console %s\n", devalias);
>> - dev = dt_find_node_by_alias(devalias);
>> + early_printk("Looking for UART console %s\n", devpath);
>> + if ( *devpath == '/' )
>> + dev = dt_find_node_by_path(devpath);
>> + else
>> + dev = dt_find_node_by_alias(devpath);
> if '/' start an alias, it should be
>From the ePAR
(http://www.power.org/resources/downloads/Power_ePAPR_APPROVED_v1.0.pdf)
section 3.3: an alias name must match the following pattern: [0-9a-z-]+
So we can't find '/' in the alias.
> + if ( *devpath == '/' )
> + dev = dt_find_node_by_alias(devpath);
> + else
> + dev = dt_find_node_by_path(devpath);
A path always start by '/'. With your solution, it won't be possible to
get the UART by path.
--
Julien Grall
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH V1 17/29] xen/arm: Mark each device used by Xen as disabled in DOM0 FDT
2013-08-28 14:47 ` [PATCH V1 17/29] xen/arm: Mark each device used by Xen as disabled in DOM0 FDT Julien Grall
@ 2013-09-09 11:37 ` Ian Campbell
2013-09-09 21:53 ` Julien Grall
0 siblings, 1 reply; 7+ messages in thread
From: Ian Campbell @ 2013-09-09 11:37 UTC (permalink / raw)
To: Julien Grall; +Cc: stefano.stabellini, andre.przywara, patches, xen-devel
On Wed, 2013-08-28 at 15:47 +0100, Julien Grall wrote:
> When a device has a property status with disabled inside, Linux will not use
> the device.
Do we not filter such devices out already?
Or did the previous patch remove that functionality? In which case is
there a bisection hazard here?
Why is it preferred to leave the device with disabled in it instead of
removing it? (Can this go in the changelog please)
I think I've asked before, but is the handling of status = disabled
generic and therefore reliable?
>
> Signed-off-by: Julien Grall <julien.grall@linaro.org>
> ---
> xen/arch/arm/domain_build.c | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
> index 76decf4..d56bc70a 100644
> --- a/xen/arch/arm/domain_build.c
> +++ b/xen/arch/arm/domain_build.c
> @@ -208,6 +208,14 @@ static int write_properties(struct domain *d, struct kernel_info *kinfo,
> return res;
> }
>
> + /* Disable all devices used by Xen */
> + if ( dt_device_used_by(np) == DOMID_XEN )
> + {
> + res = fdt_property(kinfo->fdt, "status", "disabled", 8 + 1);
> + if ( res )
> + return res;
> + }
> +
> /*
> * XXX should populate /chosen/linux,initrd-{start,end} here if we
> * have module[2]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH V1 17/29] xen/arm: Mark each device used by Xen as disabled in DOM0 FDT
2013-09-09 11:37 ` Ian Campbell
@ 2013-09-09 21:53 ` Julien Grall
2013-09-10 9:01 ` Ian Campbell
0 siblings, 1 reply; 7+ messages in thread
From: Julien Grall @ 2013-09-09 21:53 UTC (permalink / raw)
To: Ian Campbell; +Cc: stefano.stabellini, andre.przywara, patches, xen-devel
On 09/09/2013 12:37 PM, Ian Campbell wrote:
> On Wed, 2013-08-28 at 15:47 +0100, Julien Grall wrote:
>> When a device has a property status with disabled inside, Linux will not use
>> the device.
>
> Do we not filter such devices out already?
We only filter gic/timer node. All the others nodes used by Xen, for
instance the serial device, will be marked by status = "disabled".
> Or did the previous patch remove that functionality? In which case is
> there a bisection hazard here?
AFAIK, there is no bisection hazard with the current order of this patch
series.
>
> Why is it preferred to leave the device with disabled in it instead of
> removing it? (Can this go in the changelog please)
> I think I've asked before, but is the handling of status = disabled
> generic and therefore reliable?
I let this patch because I didn't implement all the fake nodes in the
previous patch series. In another hand, I'm not sure how Linux will
react if there is a missing node and it should cope with status =
"disabled" with most of nodes.
I will give a try and see if I can remove completely nodes used by Xen.
Except, of course, gic and timer nodes which are recreated later.
>>
>> Signed-off-by: Julien Grall <julien.grall@linaro.org>
>> ---
>> xen/arch/arm/domain_build.c | 8 ++++++++
>> 1 file changed, 8 insertions(+)
>>
>> diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
>> index 76decf4..d56bc70a 100644
>> --- a/xen/arch/arm/domain_build.c
>> +++ b/xen/arch/arm/domain_build.c
>> @@ -208,6 +208,14 @@ static int write_properties(struct domain *d, struct kernel_info *kinfo,
>> return res;
>> }
>>
>> + /* Disable all devices used by Xen */
>> + if ( dt_device_used_by(np) == DOMID_XEN )
>> + {
>> + res = fdt_property(kinfo->fdt, "status", "disabled", 8 + 1);
>> + if ( res )
>> + return res;
>> + }
>> +
>> /*
>> * XXX should populate /chosen/linux,initrd-{start,end} here if we
>> * have module[2]
>
>
--
Julien Grall
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH V1 17/29] xen/arm: Mark each device used by Xen as disabled in DOM0 FDT
2013-09-09 21:53 ` Julien Grall
@ 2013-09-10 9:01 ` Ian Campbell
0 siblings, 0 replies; 7+ messages in thread
From: Ian Campbell @ 2013-09-10 9:01 UTC (permalink / raw)
To: Julien Grall; +Cc: stefano.stabellini, andre.przywara, patches, xen-devel
On Mon, 2013-09-09 at 22:53 +0100, Julien Grall wrote:
> On 09/09/2013 12:37 PM, Ian Campbell wrote:
> > On Wed, 2013-08-28 at 15:47 +0100, Julien Grall wrote:
> >> When a device has a property status with disabled inside, Linux will not use
> >> the device.
> >
> > Do we not filter such devices out already?
>
> We only filter gic/timer node. All the others nodes used by Xen, for
> instance the serial device, will be marked by status = "disabled".
Ah, the current code omits devices from the mapping but not the fdt, I
was confusing the two. In the current way of doing things
fdt_next_dom0_node would need a check for the owner, but that's not
relevant with this series.
> > Or did the previous patch remove that functionality? In which case is
> > there a bisection hazard here?
>
> AFAIK, there is no bisection hazard with the current order of this patch
> series.
Ack, thanks.
>
> >
> > Why is it preferred to leave the device with disabled in it instead of
> > removing it? (Can this go in the changelog please)
> > I think I've asked before, but is the handling of status = disabled
> > generic and therefore reliable?
>
> I let this patch because I didn't implement all the fake nodes in the
> previous patch series. In another hand, I'm not sure how Linux will
> react if there is a missing node and it should cope with status =
> "disabled" with most of nodes.
>
> I will give a try and see if I can remove completely nodes used by Xen.
> Except, of course, gic and timer nodes which are recreated later.
If you want you can add that to the end of the series/future work rather
than reworking this patch in the middle of a large series.
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2013-09-10 9:01 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-08-29 1:19 [PATCH V1 17/29] xen/arm: Mark each device used by Xen as disabled in DOM0 FDT Bamvor Jian Zhang
2013-08-29 8:34 ` Ian Campbell
2013-08-29 12:20 ` Julien Grall
-- strict thread matches above, loose matches on Subject: below --
2013-08-28 14:47 [PATCH V1 00/29] Allow Xen to boot with a raw Device Tree Julien Grall
2013-08-28 14:47 ` [PATCH V1 17/29] xen/arm: Mark each device used by Xen as disabled in DOM0 FDT Julien Grall
2013-09-09 11:37 ` Ian Campbell
2013-09-09 21:53 ` Julien Grall
2013-09-10 9:01 ` Ian Campbell
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).