Hi,

After a chat with Richard I figured I misunderstood his comment ...

[...]

> +void mmu_change_region_attr_nobreak(phys_addr_t addr, size_t siz, u64 attrs)
> +{
> +       int level;
> +       u64 r, size, start;
> +
> +       /*
> +        * Loop through the address range until we find a page granule that 
> fits
> +        * our alignment constraints, then set it to the new cache attributes
> +        */
> +       start = addr;
> +       size = siz;
> +       while (size > 0) {
> +               for (level = 1; level < 4; level++) {
> +                       /* Set PTE to new attributes */
> +                       r = set_one_region(start, size, attrs, true, level);
> +                       if (r) {
> +                               /* PTE successfully updated */
> +                               size -= r;
> +                               start += r;
> +                               break;
> +                       }
> +               }
> +       }

Instead of replicating this, I'll remove this code from
mmu_change_region_attr() and call mmu_change_region_attr_nobreak() in
the next version


[...]

Thanks
/Ilias

Reply via email to