Skip to content
Snippets Groups Projects
Commit 190dd6a5 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "lrdp: iommu: Ensure proper PTE attributes are printed"

parents 98655a9b a52ad045
No related branches found
No related tags found
No related merge requests found
# Copyright (c) 2016-2017, The Linux Foundation. All rights reserved. # Copyright (c) 2016-2018, The Linux Foundation. All rights reserved.
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 and # it under the terms of the GNU General Public License version 2 and
...@@ -76,13 +76,24 @@ class CollapsedMapping(object): ...@@ -76,13 +76,24 @@ class CollapsedMapping(object):
self.execute_never_str = execute_never_str self.execute_never_str = execute_never_str
self.mapped = mapped self.mapped = mapped
"""
def add_collapsed_mapping(mappings, virt_start, virt_end, phys_start, phys_end, Create a single Collapsed mapping representing the FlatMappings between
map_type, map_size, attr_indx_str, shareability_str, first and last, inclusive.
execute_never_str, mapped): """
map = CollapsedMapping(virt_start, virt_end, phys_start, phys_end, def add_collapsed_mapping(mappings, first, last):
map_type, map_size, attr_indx_str, shareability_str, virt_start = first.virt
execute_never_str, mapped)
map = CollapsedMapping(
virt_start = virt_start,
virt_end = last.virt + last.map_size,
phys_start = first.phys,
phys_end = last.phys + last.map_size,
map_type = first.type,
map_size = first.map_size,
attr_indx_str = first.attr_indx_str,
shareability_str = first.shareability_str,
execute_never_str = first.execute_never_str,
mapped = first.mapped)
if virt_start not in mappings: if virt_start not in mappings:
mappings[virt_start] = map mappings[virt_start] = map
...@@ -90,53 +101,41 @@ def add_collapsed_mapping(mappings, virt_start, virt_end, phys_start, phys_end, ...@@ -90,53 +101,41 @@ def add_collapsed_mapping(mappings, virt_start, virt_end, phys_start, phys_end,
map.type = 'Duplicate' map.type = 'Duplicate'
mappings[virt_start] = map mappings[virt_start] = map
return mappings """
Combine adjacent holes in the page table, but leave all valid entries
unchanged.
"""
def create_collapsed_mapping(flat_mapping): def create_collapsed_mapping(flat_mapping):
collapsed_mapping = {} collapsed_mapping = {}
if len(flat_mapping.keys()) > 0: if not len(flat_mapping.keys()):
virt_addrs = sorted(flat_mapping.keys()) return collapsed_mapping
start_map = prev_map = flat_mapping[virt_addrs[0]]
last_mapping = False virt_addrs = sorted(flat_mapping.keys())
new_mapping = False start_map = prev_map = flat_mapping[virt_addrs[0]]
new_mapping = False
for virt in virt_addrs[1:]:
map = flat_mapping[virt] for virt in virt_addrs[1:]:
map = flat_mapping[virt]
if map.map_size == prev_map.map_size \
and map.type == prev_map.type \ if map.map_size == prev_map.map_size \
and map.mapped == prev_map.mapped \ and map.type == prev_map.type \
and not map.mapped: and map.mapped == prev_map.mapped \
new_mapping = False and map.attr_indx_str == prev_map.attr_indx_str \
and not map.mapped:
if virt == virt_addrs[-1]: new_mapping = False
last_mapping = True else:
new_mapping = True
else:
new_mapping = True if new_mapping:
add_collapsed_mapping(
if new_mapping: collapsed_mapping, start_map, prev_map)
collapsed_mapping = add_collapsed_mapping( start_map = map
collapsed_mapping, start_map.virt,
map.virt, start_map.phys, prev_map = map
start_map.phys + start_map.map_size,
start_map.type, start_map.map_size, map.attr_indx_str, """Add the last entry"""
map.shareability_str, map.execute_never_str, add_collapsed_mapping(collapsed_mapping, start_map, prev_map)
start_map.mapped)
start_map = map
elif last_mapping:
collapsed_mapping = add_collapsed_mapping(
collapsed_mapping, start_map.virt,
0xFFFFFFFFFFFF + 1, start_map.phys,
start_map.phys + start_map.map_size,
start_map.type, start_map.map_size, map.attr_indx_str,
map.shareability_str, map.execute_never_str,
start_map.mapped)
prev_map = map
return collapsed_mapping return collapsed_mapping
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment