const struct dt_device_node *node)
{
struct kernel_info kinfo = {};
- int rc;
+ int rc, i, k;
u64 mem;
+ u64 col_val;
rc = dt_property_read_u64(node, "memory", &mem);
if ( !rc )
return -ENOMEM;
d->max_pages = ~0U;
+ rc = dt_property_read_u64(node, "colors", &col_val);
+
+ if ( get_max_colors() && col_val )
+ {
+ printk("Colored configuration: 0x%"PRIx64"\n", col_val);
+ d->max_colors = 0;
+ if ( d->colors )
+ xfree(d->colors);
+
+ /* Calculate number of bit set */
+ for ( i = 0; i < get_max_colors(); i++)
+ if ( col_val & (1 << i) )
+ d->max_colors++;
+
+ d->colors = xzalloc_array(uint32_t, d->max_colors);
+ for ( i = 0, k = 0; k < d->max_colors; i++ )
+ if ( col_val & (1 << i) )
+ d->colors[k++] = i;
+
+ printk("DomU config: [ ");
+ for ( k = 0; k < d->max_colors; k++ )
+ printk("%u ", d->colors[k]);
+ printk("]\n");
+ }
+
kinfo.d = d;
rc = kernel_probe(&kinfo, node);