Date   

Re: [PATCH v2] config_tools: update upgrader.py script for virtio

Junjie Mao
 

Kunhui-Li <kunhuix.li@...> writes:

1. add virtio gpu logic in upgrader.py script.
2. fix the upgraded virtio elements issue.
3. add the logic to remove the element with empty value in xml file
to use the default value.

v1-->v2
parse all possible formats of a virtio console node in console_encoding
function and remove some unnecessary code.

Tracked-On: #7301
Signed-off-by: Kunhui-Li <kunhuix.li@...>
Reviewed-by: Junjie Mao <junjie.mao@...>

---
misc/config_tools/scenario_config/upgrader.py | 99 ++++++++++++-------
1 file changed, 65 insertions(+), 34 deletions(-)

diff --git a/misc/config_tools/scenario_config/upgrader.py b/misc/config_tools/scenario_config/upgrader.py
index 1bbd22de4..a80af85c4 100755
--- a/misc/config_tools/scenario_config/upgrader.py
+++ b/misc/config_tools/scenario_config/upgrader.py
@@ -233,45 +233,52 @@ class SharedMemoryRegions:
return node

class VirtioDevices(object):
-
def __init__(self, old_xml_etree):
+ self.gpus = []
self.blocks = []
self.inputs = []
self.networks = []
- self.console = namedtuple("console", ["use_type", "backend_type", "file_path"])
- self.old_xml_etree = old_xml_etree
+ self.consoles = []

- def console_encoding(self, text):
- if text is not None:
- self.console.use_type = "Virtio console" if text.startswith("@") else "Virtio serial port"
- self.console.backend_type = text.split(":")[0].replace("@", "")
- self.console.file_path = text.split("=")[1].split(":")[0] if "=" in text else None
+ def console_encoding(self, console):
+ if console.text is not None:
+ use_type = "Virtio console" if console.text.startswith("@") else "Virtio serial port"
+ backend_type = console.text.split(":")[0].replace("@", "")
+ file_path = console.text.split("=")[1].split(":")[0] if "=" in console.text else None
else:
- self.console = self.console(use_type=None, backend_type=None, file_path=None)
- return self.console
+ use_type = console.xpath("./use_type")[0].text if console.xpath("./use_type") else None
+ backend_type = console.xpath("./backend_type")[0].text if console.xpath("./backend_type") else None
+ file_path = console.xpath("./file_path")[0].text if console.xpath("./file_path") else None
+ self.consoles.append((use_type, backend_type, file_path))

- def format_console_element(self):
+ def format_console_element(self, console):
node = etree.Element("console")
- etree.SubElement(node, "use_type").text = self.console.use_type
- etree.SubElement(node, "backend_type").text = self.console.backend_type
- if self.console.backend_type == "socket":
- etree.SubElement(node, "sock_file_path").text = self.console.file_path
- if self.console.backend_type == "tty":
- etree.SubElement(node, "tty_device_path").text = self.console.file_path
- if self.console.backend_type == "file":
- etree.SubElement(node, "output_file_path").text = self.console.file_path
+ if console[0] is not None:
+ etree.SubElement(node, "use_type").text = console[0]
+ if console[1] is not None:
+ etree.SubElement(node, "backend_type").text = console[1]
+ if console[1] == "socket":
+ etree.SubElement(node, "sock_file_path").text = console[2]
+ if console[1] == "tty":
+ etree.SubElement(node, "tty_device_path").text = console[2]
+ if console[1] == "file":
+ etree.SubElement(node, "output_file_path").text = console[2]
return node

def format_network_element(self, network):
node = etree.Element("network")
- etree.SubElement(node, "virtio_framework")
- etree.SubElement(node, "interface_name").text = network
+ if network[0] is not None:
+ etree.SubElement(node, "virtio_framework").text = network[0]
+ if network[1] is not None:
+ etree.SubElement(node, "interface_name").text = network[1]
return node

def format_input_element(self, input):
node = etree.Element("input")
- etree.SubElement(node, "backend_device_file").text = input
- etree.SubElement(node, "id")
+ if input[0] is not None:
+ etree.SubElement(node, "backend_device_file").text = input[0]
+ if input[1] is not None:
+ etree.SubElement(node, "id").text = input[1]
return node

def format_block_element(self, block):
@@ -279,25 +286,51 @@ class VirtioDevices(object):
node.text = block
return node

+ def format_gpu_element(self, gpu):
+ if gpu is not None:
+ node = etree.Element("gpu")
+ node.text = gpu
+ return node
+
def format_xml_element(self):
node = etree.Element("virtio_devices")
- node.append(self.format_console_element())
+ for console in self.consoles:
+ node.append(self.format_console_element(console))
for network in self.networks:
node.append(self.format_network_element(network))
for input in self.inputs:
node.append(self.format_input_element(input))
for block in self.blocks:
node.append(self.format_block_element(block))
+ for gpu in self.gpus:
+ node.append(self.format_gpu_element(gpu))
return node

def add_virtio_devices(self, virtio_device_node):
- self.console = self.console_encoding(virtio_device_node.xpath("./console")[0].text)
- for virtio_network in virtio_device_node.xpath("./network"):
- self.networks.append(virtio_network.text)
- for virtio_input in virtio_device_node.xpath("./input"):
- self.inputs.append(virtio_input.text)
- for virtio_block in virtio_device_node.xpath("./block"):
- self.blocks.append(virtio_block.text)
+ if virtio_device_node.xpath("./network")[0].text is not None:
+ for network in virtio_device_node.xpath("./network"):
+ self.networks.append((None, network.text))
+ else:
+ for network in virtio_device_node.xpath("./network"):
+ virtio_framework = network.xpath("./virtio_framework")[0].text if network.xpath("./virtio_framework") else None
+ interface_name = network.xpath("./interface_name")[0].text if network.xpath("./interface_name") else None
+ self.networks.append((virtio_framework, interface_name))
+
+ if virtio_device_node.xpath("./input")[0].text is not None:
+ for input in virtio_device_node.xpath("./input"):
+ self.inputs.append((None, input.text))
+ else:
+ for input in virtio_device_node.xpath("./input"):
+ backend_device_file = input.xpath("./backend_device_file")[0].text if input.xpath("./backend_device_file") else None
+ id = input.xpath("./id")[0].text if input.xpath("./id") else None
+ self.inputs.append((backend_device_file, id))
+
+ for console in virtio_device_node.xpath("./console"):
+ self.console_encoding(console)
+ for block in virtio_device_node.xpath("./block"):
+ self.blocks.append(block.text)
+ for gpu in virtio_device_node.xpath("./gpu"):
+ self.gpus.append(gpu.text)

class ScenarioUpgrader(ScenarioTransformer):
@classmethod
@@ -364,17 +397,15 @@ class ScenarioUpgrader(ScenarioTransformer):

def move_virtio_devices(self, xsd_element_node, xml_parent_node, new_nodes):
virtio = VirtioDevices(self.old_xml_etree)
-
try:
old_data_virtio = self.get_from_old_data(xml_parent_node, ".//virtio_devices").pop()
except IndexError as e:
logging.debug(e)
return
- old_data_virtio = self.get_from_old_data(xml_parent_node, ".//virtio_devices").pop()
+
virtio.add_virtio_devices(old_data_virtio)
for child in old_data_virtio.iter():
self.old_data_nodes.discard(child)
-
new_nodes.append(virtio.format_xml_element())
return False
--
Best Regards
Junjie Mao


[PATCH v4] misc: refine cache config

chenli.wei
 

The current RDT setting requires users to calculate the CLOS mask and
the details, it is not a user-friendly setting.

So we redesigned RDT, users can easily specify the cache of each vcpu
for VMs.

This patch add an RDT region element for schema, calculate and generate
all the mask and rdt parameters by config tool to generates rdt_info
struct for board.c.

v3-->v4:
1. code format
2. unified allocate CLOS ID for L2 and L3

v2-->v3:
1. code format
2. adapt new RDT interface

v1-->v2:
1. update commit msg
2. modify for rdt struct update
3. use new cache interface of board.xml

Signed-off-by: Chenli Wei <chenli.wei@...>
---
misc/config_tools/board_config/board_c.py | 266 ++++++++++++++----
misc/config_tools/schema/config.xsd | 5 +
misc/config_tools/schema/types.xsd | 48 +++-
misc/config_tools/static_allocators/clos.py | 150 ++++++++++
misc/config_tools/xforms/lib.xsl | 4 +-
misc/config_tools/xforms/misc_cfg.h.xsl | 6 -
.../xforms/vm_configurations.c.xsl | 14 +-
7 files changed, 414 insertions(+), 79 deletions(-)
create mode 100644 misc/config_tools/static_allocators/clos.py

diff --git a/misc/config_tools/board_config/board_c.py b/misc/config_tools/board_config/board_c.py
index 971b31785..8082c4387 100644
--- a/misc/config_tools/board_config/board_c.py
+++ b/misc/config_tools/board_config/board_c.py
@@ -7,6 +7,8 @@ import sys
import enum
import board_cfg_lib
import common
+import lxml.etree
+import os

class RDT(enum.Enum):
L2 = 0
@@ -17,6 +19,7 @@ INCLUDE_HEADER = """
#include <asm/board.h>
#include <asm/vtd.h>
#include <asm/msr.h>
+#include <asm/rdt.h>
#include <pci.h>
#include <misc_cfg.h>
"""
@@ -102,9 +105,7 @@ def populate_clos_mask_msr(rdt_res, cat_mask_list, config):
idx = 0
for cat_mask in cat_mask_list:
print("\t{", file=config)
- print("\t\t.value.clos_mask = CLOS_MASK_{},".format(idx), file=config)
- print("\t\t.msr_index = MSR_IA32_{0}_MASK_BASE + {1},".format(
- rdt_res, idx), file=config)
+ print("\t\t.clos_mask = {},".format(cat_mask), file=config)
print("\t},", file=config)
idx += 1

@@ -118,58 +119,148 @@ def populate_mba_delay_mask(rdt_res, mba_delay_list, config):
idx = 0
for mba_delay_mask in mba_delay_list:
print("\t{", file=config)
- print("\t\t.value.mba_delay = MBA_MASK_{},".format(idx), file=config)
- print("\t\t.msr_index = MSR_IA32_{0}_MASK_BASE + {1},".format(
- rdt_res, idx), file=config)
+ print("\t\t.mba_delay = ,".format(mba_delay_mask), file=config)
print("\t},", file=config)
idx += 1

+def get_rdt_enabled():
+ scenario_etree = lxml.etree.parse(common.SCENARIO_INFO_FILE)
+ enable = scenario_etree.xpath(f"//RDT_ENABLED/text()")
+ if enable[0] == "y":
+ return "true"
+ else:
+ return "false"

-def gen_rdt_res(config):
- """
- Get RDT resource (L2, L3, MBA) information
- :param config: it is a file pointer of board information for writing to
- """
+def get_cdp_enabled():
+ scenario_etree = lxml.etree.parse(common.SCENARIO_INFO_FILE)
+ enable = scenario_etree.xpath(f"//CDP_ENABLED/text()")
+ if enable[0] == "y":
+ return "true"
+ else:
+ return "false"
+
+def get_common_clos_max(clos_number, capability_id):
+
+ common_clos_max = 0
+ if get_rdt_enabled() and not get_cdp_enabled():
+ common_clos_max = clos_number
+ if get_cdp_enabled() and capability_id != 'MBA':
+ common_clos_max = clos_number / 2
+
+ return common_clos_max
+
+def gen_rdt_str(cache, config):
err_dic = {}
- rdt_res_str =""
- res_present = [0, 0, 0]
- (rdt_resources, rdt_res_clos_max, _) = board_cfg_lib.clos_info_parser(common.BOARD_INFO_FILE)
- common_clos_max = board_cfg_lib.get_common_clos_max()
+ cat_mask_list = {}

- cat_mask_list = common.get_hv_item_tag(common.SCENARIO_INFO_FILE, "FEATURES", "RDT", "CLOS_MASK")
- mba_delay_list = common.get_hv_item_tag(common.SCENARIO_INFO_FILE, "FEATURES", "RDT", "MBA_DELAY")
+ board_etree = lxml.etree.parse(common.BOARD_INFO_FILE)
+ mask_length = common.get_node(f"./capability[@id='CAT']/capacity_mask_length/text()", cache)
+ clos_number = common.get_node(f"./capability[@id='CAT']/clos_number/text()", cache)

- if common_clos_max > MSR_IA32_L2_MASK_END - MSR_IA32_L2_MASK_BASE or\
- common_clos_max > MSR_IA32_L3_MASK_END - MSR_IA32_L3_MASK_BASE:
- err_dic["board config: generate board.c failed"] = "CLOS MAX should be less than reserved adress region length of L2/L3 cache"
- return err_dic
+ bitmask = (1 << int(mask_length)) - 1
+ cache_level = common.get_node(f"./@level", cache)
+ cache_id = common.get_node(f"./@id", cache)
+ processor_list = board_etree.xpath(f"//cache[@level = '{cache_level}' and @id = '{cache_id}']/processors/processor/text()")
+ capability_list = board_etree.xpath(f"//cache[@level = '{cache_level}' and @id = '{cache_id}']/capability/@id")

- print("\n#ifdef CONFIG_RDT_ENABLED", file=config)
- if len(rdt_resources) == 0 or common_clos_max == 0:
- print("struct platform_clos_info platform_{0}_clos_array[MAX_CACHE_CLOS_NUM_ENTRIES];".format("l2"), file=config)
- print("struct platform_clos_info platform_{0}_clos_array[MAX_CACHE_CLOS_NUM_ENTRIES];".format("l3"), file=config)
- print("struct platform_clos_info platform_{0}_clos_array[MAX_MBA_CLOS_NUM_ENTRIES];".format("mba"), file=config)
+ for capability_id in capability_list:
+
+ common_clos_max = get_common_clos_max(int(clos_number), capability_id)
+ if capability_id == "CAT":
+ if common_clos_max > MSR_IA32_L2_MASK_END - MSR_IA32_L2_MASK_BASE or\
+ common_clos_max > MSR_IA32_L3_MASK_END - MSR_IA32_L3_MASK_BASE:
+ err_dic["board config: Failed to generate board.c"] = "CLOS Mask Number is more then the reserved address region length of L2/L3 cache"
+ return err_dic
+
+ cdp_enable = get_cdp_enabled()
+ cat_mask_list = get_mask_list(cache_level, int(cache_id, 16))
+ if len(cat_mask_list) > int(clos_number):
+ err_dic['board config: Failed to generate board.c'] = "CLOS Mask Number too bigger then the supported of L2/L3 cache"
+ return err_dic;
+
+ if cache_level == "2":
+ rdt_res = "l2"
+ elif cache_level == "3":
+ rdt_res = "l3"
+
+ clos_config_array = "platform_l{0}_clos_array_{1}".format(cache_level, int(cache_id, 16))
+
+ print("\t{", file=config)
+ print("\t\t.res.cache = {", file=config)
+ print("\t\t\t.bitmask = {0},".format(hex(bitmask)), file=config)
+ print("\t\t\t.cbm_len = {0},".format(mask_length), file=config)
+ print("\t\t\t.is_cdp_enabled = {0},".format(cdp_enable), file=config)
+ print("\t\t},", file=config)
+ elif capability_id == "MBA":
+ max_throttling_value = common.get_node(f"./capability/max_throttling_value/text()", cache)
+ rdt_res = "mba"
+ clos_config_array = "platform_mba_clos_array"
+ print("\t{", file=config)
+ print("\t\t.res.membw = {", file=config)
+ print("\t\t\t.mba_max = {0},".format(clos_number), file=config)
+ print("\t\t\t.delay_linear = {0}".format(max_throttling_value), file=config)
+ print("\t\t},", file=config)
+
+ print("\t\t.num_closids = {0},".format(clos_number), file=config)
+ print("\t\t.num_clos_config = {0},".format(len(cat_mask_list)), file=config)
+ print("\t\t.clos_config_array = {0},".format(clos_config_array), file=config)
+
+ cpu_mask = 0
+ for processor in processor_list:
+ core_id = common.get_node(f"//core[@id = '{processor}']/thread/cpu_id/text()", board_etree)
+ if core_id is None:
+ continue
+ else:
+ cpu_mask = cpu_mask | (1 << int(core_id))
+ print("\t\t.cpu_mask = {0},".format(hex(cpu_mask)), file=config)
+ print("\t},", file=config)
+
+ return err_dic;
+
+def get_mask_list(cache_level, cache_id):
+ allocation_dir = os.path.split(common.SCENARIO_INFO_FILE)[0] + "/configs/allocation.xml"
+ allocation_etree = lxml.etree.parse(allocation_dir)
+ if cache_level == "3":
+ clos_list = allocation_etree.xpath(f"//clos_mask[@id = 'l3']/clos/text()")
+ else:
+ clos_list = allocation_etree.xpath(f"//clos_mask[@id = '{cache_id}']/clos/text()")
+ return clos_list
+def gen_clos_array(cache_list, config):
+ err_dic = {}
+ res_present = [0, 0, 0]
+ if len(cache_list) == 0:
+ print("union clos_config platform_{0}_clos_array[MAX_CACHE_CLOS_NUM_ENTRIES];".format("l2"), file=config)
+ print("union clos_config platform_{0}_clos_array[MAX_CACHE_CLOS_NUM_ENTRIES];".format("l3"), file=config)
+ print("union clos_config platform_{0}_clos_array[MAX_MBA_CLOS_NUM_ENTRIES];".format("mba"), file=config)
+ print("struct rdt_info res_infos[RDT_INFO_NUMBER];", file=config)
else:
- for idx, rdt_res in enumerate(rdt_resources):
- if rdt_res == "L2":
- rdt_res_str = "l2"
- print("struct platform_clos_info platform_{0}_clos_array[{1}] = {{".format(rdt_res_str,
- "MAX_CACHE_CLOS_NUM_ENTRIES"), file=config)
- populate_clos_mask_msr(rdt_res, cat_mask_list, config)
+ for idx, cache in enumerate(cache_list):
+ cache_level = common.get_node(f"./@level", cache)
+ cache_id = common.get_node(f"./@id", cache)
+ clos_number = common.get_node(f"./capability/clos_number/text()", cache)
+ if cache_level == "2":
+
+ cat_mask_list = get_mask_list(cache_level, int(cache_id, 16))
+ array_size = len(cat_mask_list)
+
+ print("union clos_config platform_l2_clos_array_{0}[{1}] = {{".format(int(cache_id, 16), clos_number), file=config)
+
+ populate_clos_mask_msr("L2", cat_mask_list, config)
+
print("};\n", file=config)
- res_present[RDT.L2.value] = 1
- elif rdt_res == "L3":
- rdt_res_str = "l3"
- print("struct platform_clos_info platform_{0}_clos_array[{1}] = {{".format(rdt_res_str,
- "MAX_CACHE_CLOS_NUM_ENTRIES"), file=config)
- populate_clos_mask_msr(rdt_res, cat_mask_list, config)
+ res_present[RDT.L2.value] += 1
+ elif cache_level == "3":
+ cat_mask_list = get_mask_list(cache_level, int(cache_id, 16))
+
+ print("union clos_config platform_l3_clos_array_{0}[{1}] = {{".format(int(cache_id, 16), clos_number), file=config)
+
+ populate_clos_mask_msr("L3", cat_mask_list, config)
+
print("};\n", file=config)
- res_present[RDT.L3.value] = 1
- elif rdt_res == "MBA":
- rdt_res_str = "mba"
- print("struct platform_clos_info platform_{0}_clos_array[{1}] = {{".format(rdt_res_str,
- "MAX_MBA_CLOS_NUM_ENTRIES"), file=config)
- err_dic = populate_mba_delay_mask(rdt_res, mba_delay_list, config)
+ res_present[RDT.L3.value] += 1
+ elif cache_level == "MBA":
+ print("union clos_config platform_mba_clos_array[MAX_MBA_CLOS_NUM_ENTRIES] = {", file=config)
+ err_dic = populate_mba_delay_mask("mba", mba_delay_list, config)
print("};\n", file=config)
res_present[RDT.MBA.value] = 1
else:
@@ -177,17 +268,92 @@ def gen_rdt_res(config):
return err_dic

if res_present[RDT.L2.value] == 0:
- print("struct platform_clos_info platform_{0}_clos_array[{1}];".format("l2", "MAX_CACHE_CLOS_NUM_ENTRIES"), file=config)
+ print("union clos_config platform_l2_clos_array[MAX_CACHE_CLOS_NUM_ENTRIES];", file=config)
if res_present[RDT.L3.value] == 0:
- print("struct platform_clos_info platform_{0}_clos_array[{1}];".format("l3", "MAX_CACHE_CLOS_NUM_ENTRIES"), file=config)
+ print("union clos_config platform_l3_clos_array[MAX_CACHE_CLOS_NUM_ENTRIES];", file=config)
if res_present[RDT.MBA.value] == 0:
- print("struct platform_clos_info platform_{0}_clos_array[{1}];".format("mba", "MAX_MBA_CLOS_NUM_ENTRIES"), file=config)
+ print("union clos_config platform_mba_clos_array[MAX_MBA_CLOS_NUM_ENTRIES];", file=config)
+ return 0

- print("#endif", file=config)
+def gen_rdt_res(config):
+ """
+ Get RDT resource (L2, L3, MBA) information
+ :param config: it is a file pointer of board information for writing to
+ """
+ print("\n#ifdef CONFIG_RDT_ENABLED", file=config)
+ err_dic = {}
+ res_present = [0, 0, 0]

- print("", file=config)
- return err_dic
+ scenario_etree = lxml.etree.parse(common.SCENARIO_INFO_FILE)
+ allocation_etree = lxml.etree.parse(common.SCENARIO_INFO_FILE)
+ board_etree = lxml.etree.parse(common.BOARD_INFO_FILE)
+
+ cache_list = board_etree.xpath(f"//cache[capability/@id = 'CAT' or capability/@id = 'MBA']")
+ gen_clos_array(cache_list, config)
+
+ cache_list = board_etree.xpath(f"//cache[capability/@id = 'CAT' and @level = '2']")
+ if len(cache_list) > 0:
+ res_present[RDT.L2.value] = len(cache_list)
+ rdt_ins_name = "rdt_ins_l2[" + str(len(cache_list)) + "] = {"
+ print("struct rdt_ins {}".format(rdt_ins_name), file=config)
+ for idx, cache in enumerate(cache_list):
+ err_dic = gen_rdt_str(cache, config)
+ if err_dic:
+ return err_dic;
+ print("};\n", file=config)
+
+ cache_list = board_etree.xpath(f"//cache[capability/@id = 'CAT' and @level = '3']")
+ if len(cache_list) > 0:
+ res_present[RDT.L3.value] = len(cache_list)
+ rdt_ins_name = "rdt_ins_l3[" + str(len(cache_list)) + "] = {"
+ print("struct rdt_ins {}".format(rdt_ins_name), file=config)
+ for idx, cache in enumerate(cache_list):
+ err_dic = gen_rdt_str(cache, config)
+ if err_dic:
+ return err_dic;
+ print("};\n", file=config)
+
+ cache_list = board_etree.xpath(f"//cache[capability/@id = 'MBA']")
+ if len(cache_list) > 0:
+ res_present[RDT.L2.value] = 1
+ rdt_ins_name = "rdt_ins_mba[" + str(len(cache_list)) + "] = {"
+ print("struct rdt_ins {}".format(rdt_ins_name), file=config)
+ for idx, cache in enumerate(cache_list):
+ err_dic = gen_rdt_str(cache, config)
+ if err_dic:
+ return err_dic;
+ print("};\n", file=config)
+
+ print("struct rdt_type res_cap_info[RDT_NUM_RESOURCES] = {", file=config)
+ if res_present[RDT.L2.value] > 0:
+ print("\t{", file=config)
+ print("\t\t.res_id = RDT_RESID_L2,", file=config)
+ print("\t\t.msr_qos_cfg = MSR_IA32_L2_QOS_CFG,", file=config)
+ print("\t\t.msr_base = MSR_IA32_L2_MASK_BASE,", file=config)
+ print("\t\t.num_ins = {},".format(res_present[RDT.L2.value]), file=config)
+ print("\t\t.ins_array = rdt_ins_l2,", file=config)
+ print("\t},", file=config)
+ if res_present[RDT.L3.value] > 0:
+ print("\t{", file=config)
+ print("\t\t.res_id = RDT_RESID_L3,", file=config)
+ print("\t\t.msr_qos_cfg = MSR_IA32_L3_QOS_CFG,", file=config)
+ print("\t\t.msr_base = MSR_IA32_L3_MASK_BASE,", file=config)
+ print("\t\t.num_ins = {},".format(res_present[RDT.L3.value]), file=config)
+ print("\t\t.ins_array = rdt_ins_l3,", file=config)
+ print("\t},", file=config)
+ if res_present[RDT.MBA.value] > 0:
+ print("\t{", file=config)
+ print("\t\t.res_id = RDT_RESID_MBA,", file=config)
+ print("\t\t.msr_qos_cfg = MSR_IA32_MBA_QOS_CFG,", file=config)
+ print("\t\t.msr_base = MSR_IA32_MBA_MASK_BASE,", file=config)
+ print("\t\t.num_ins = {},".format(res_present[RDT.MBA.value]), file=config)
+ print("\t\t.ins_array = rdt_ins_mba,", file=config)
+ print("\t},", file=config)
+ print("};\n", file=config)
+
+ print("#endif\n", file=config)

+ return err_dic

def gen_single_data(data_lines, domain_str, config):
line_i = 0
diff --git a/misc/config_tools/schema/config.xsd b/misc/config_tools/schema/config.xsd
index 642dc516e..f771dcc81 100644
--- a/misc/config_tools/schema/config.xsd
+++ b/misc/config_tools/schema/config.xsd
@@ -277,6 +277,11 @@ These settings can only be changed at build time.</xs:documentation>
Refer to :ref:`vuart_config` for detailed vUART settings.</xs:documentation>
</xs:annotation>
</xs:element>
+ <xs:element name="CACHE_REGION" type="CacheRegionType" minOccurs="0" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation>Specify the cache setting.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
</xs:all>
</xs:complexType>

diff --git a/misc/config_tools/schema/types.xsd b/misc/config_tools/schema/types.xsd
index 2dc286574..059fe887c 100644
--- a/misc/config_tools/schema/types.xsd
+++ b/misc/config_tools/schema/types.xsd
@@ -320,20 +320,6 @@ RDT, setting this option to ``y`` is ignored.</xs:documentation>
<xs:documentation>Enable virtualization of the Cache Allocation Technology (CAT) feature in RDT. CAT enables you to allocate cache to VMs, providing isolation to avoid performance interference from other VMs.</xs:documentation>
</xs:annotation>
</xs:element>
- <xs:element name="CLOS_MASK" type="xs:string" minOccurs="0" maxOccurs="unbounded">
- <xs:annotation>
- <xs:documentation>Specify the cache capacity bitmask for the CLOS; only continuous '1' bits
-are allowed. The value will be ignored when hardware does not support RDT.
-This option takes effect only if :option:`hv.FEATURES.RDT.RDT_ENABLED` is set to ``y``.
-As :option:`vm.clos.vcpu_clos` specifies the index of the CLOS to be associated with the given vCPU,
-:option:`hv.FEATURES.RDT.CLOS_MASK` of that CLOS would impact the performance of the given vCPU.</xs:documentation>
- </xs:annotation>
- </xs:element>
- <xs:element name="MBA_DELAY" type="xs:string" minOccurs="0" maxOccurs="unbounded">
- <xs:annotation>
- <xs:documentation>Memory Bandwidth Allocation delay value.</xs:documentation>
- </xs:annotation>
- </xs:element>
</xs:sequence>
</xs:complexType>

@@ -347,4 +333,38 @@ As :option:`vm.clos.vcpu_clos` specifies the index of the CLOS to be associated
</xs:sequence>
</xs:complexType>

+<xs:simpleType name="CacheType">
+ <xs:annotation>
+ <xs:documentation>Option: Unified, Code, Data</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="Unified"/>
+ <xs:enumeration value="Code" />
+ <xs:enumeration value="Data" />
+ </xs:restriction>
+</xs:simpleType>
+
+<xs:complexType name="CachePolicyType">
+ <xs:sequence>
+ <xs:element name="VM" type="xs:string" />
+ <xs:element name="VCPU" type="xs:integer" />
+ <xs:element name="TYPE" type="CacheType" minOccurs="1"/>
+ <xs:element name="CLOS_MASK" type="HexFormat" />
+ </xs:sequence>
+</xs:complexType>
+
+<xs:complexType name="CacheAllocationType">
+ <xs:sequence>
+ <xs:element name="CACHE_ID" type="xs:integer"/>
+ <xs:element name="CACHE_LEVEL" type="xs:integer"/>
+ <xs:element name="POLICY" type="CachePolicyType" minOccurs="1" maxOccurs="unbounded"/>
+ </xs:sequence>
+</xs:complexType>
+
+<xs:complexType name="CacheRegionType">
+ <xs:sequence>
+ <xs:element name="CACHE_ALLOCATION" type="CacheAllocationType" minOccurs="1" maxOccurs="unbounded"/>
+ </xs:sequence>
+</xs:complexType>
+
</xs:schema>
diff --git a/misc/config_tools/static_allocators/clos.py b/misc/config_tools/static_allocators/clos.py
new file mode 100644
index 000000000..6f41738a7
--- /dev/null
+++ b/misc/config_tools/static_allocators/clos.py
@@ -0,0 +1,150 @@
+#!/usr/bin/env python3
+#
+# Copyright (C) 2022 Intel Corporation.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+
+import sys, os
+sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', 'library'))
+import common
+import re
+from collections import defaultdict
+from itertools import combinations
+
+def create_clos_node(etree, vm_id, index_list):
+ allocation_vm_node = common.get_node(f"/acrn-config/vm[@id = '{vm_id}']", etree)
+ if allocation_vm_node is None:
+ allocation_vm_node = common.append_node("/acrn-config/vm", None, etree, id = vm_id)
+ if common.get_node("./clos", allocation_vm_node) is None:
+ clos_node = common.append_node("./clos", None, allocation_vm_node)
+ for index in index_list:
+ common.append_node(f"./vcpu_clos", str(index), clos_node)
+
+def find_cache2_id(mask, cache2_id_list):
+ for cache2 in cache2_id_list:
+ if mask[cache2] != "None":
+ return cache2
+ return "None"
+
+def merge_policy_list(mask_list, cache2_id_list):
+ index = 0
+ result_list = []
+ for index,mask in enumerate(mask_list):
+ merged = 0
+ if index == 0:
+ result_list.append(mask)
+ continue
+ for result in result_list:
+ if result["l3"] != mask["l3"]:
+ continue
+ else:
+ cache2_id = find_cache2_id(mask, cache2_id_list)
+ if cache2_id == "None" or result[cache2_id] == mask[cache2_id]:
+ merged = 1
+ break
+ if result[cache2_id] == "None":
+ merged = 1
+ result[cache2_id] = mask[cache2_id]
+ break
+ if merged == 0:
+ result_list.append(mask)
+ return result_list
+
+def gen_all_clos_index(board_etree, scenario_etree, allocation_etree):
+ policy_list = []
+ allocation_list = scenario_etree.xpath(f"//POLICY")
+ cache2_id_list = scenario_etree.xpath("//CACHE_ALLOCATION[CACHE_LEVEL = 2]/CACHE_ID/text()")
+ cache2_id_list.sort()
+
+ for policy in allocation_list:
+ cache_level = common.get_node("../CACHE_LEVEL/text()", policy)
+ cache_id = common.get_node("../CACHE_ID/text()", policy)
+ vcpu = common.get_node("./VCPU/text()", policy)
+ mask = common.get_node("./CLOS_MASK/text()", policy)
+ tmp = (cache_level, cache_id, vcpu, mask)
+ policy_list.append(tmp)
+
+ vCPU_list = scenario_etree.xpath(f"//POLICY/VCPU/text()")
+ l3_mask_list = scenario_etree.xpath(f"//CACHE_ALLOCATION[CACHE_LEVEL = 3]/POLICY/CLOS_MASK")
+ mask_list = []
+ for vCPU in vCPU_list:
+ dict_tmp = {}
+ l3_mask = l2_mask = "None"
+ l3_mask_list = scenario_etree.xpath(f"//CACHE_ALLOCATION[CACHE_LEVEL = 3]/POLICY[VCPU = '{vCPU}']/CLOS_MASK/text()")
+ if len(l3_mask_list) > 0:
+ l3_mask = l3_mask_list[0]
+ dict_tmp["l3"] = l3_mask
+
+ l2_mask_list = scenario_etree.xpath(f"//CACHE_ALLOCATION[CACHE_LEVEL = 2]/POLICY[VCPU = '{vCPU}']/CLOS_MASK")
+ if len(l2_mask_list) > 0:
+ l2_mask = l2_mask_list[0].text
+ cache_id = scenario_etree.xpath(f"//CACHE_ALLOCATION[CACHE_LEVEL = 2 and POLICY/VCPU = '{vCPU}']/CACHE_ID/text()")[0]
+ for cache2 in cache2_id_list:
+ if cache2 == cache_id:
+ dict_tmp[cache_id] = l2_mask
+ else:
+ dict_tmp[cache2] = "None"
+ mask_list.append(dict_tmp)
+ mask_list = merge_policy_list(mask_list, cache2_id_list)
+ return mask_list
+
+def get_clos_index(cache_level, cache_id, clos_mask):
+ mask_list = common.get_mask_list(cache_level, cache_id)
+ idx = 0
+ for mask in mask_list:
+ idx += 1
+ if mask == clos_mask:
+ break
+ return idx
+def get_clos_id(mask_list, l2_id, l2_mask, l3_mask):
+ for mask in mask_list:
+ if mask[l2_id] == l2_mask and mask["l3"] == l3_mask:
+ return mask_list.index(mask)
+ return 0
+
+def alloc_clos_index(board_etree, scenario_etree, allocation_etree, mask_list):
+ vm_node_list = scenario_etree.xpath("//vm")
+ for vm_node in vm_node_list:
+ vmname = common.get_node("./name/text()", vm_node)
+ allocation_list = scenario_etree.xpath(f"//CACHE_ALLOCATION[POLICY/VM = '{vmname}']")
+ for allocation in allocation_list:
+ index_list = []
+ cache_level = common.get_node("./CACHE_LEVEL/text()", allocation)
+ cache_id = common.get_node("./CACHE_ID/text()", allocation)
+ clos_mask_list = allocation.xpath(f".//POLICY[VM = '{vmname}']/CLOS_MASK/text()")
+
+ for clos_mask in clos_mask_list:
+ index = get_clos_id(mask_list, cache_id, clos_mask, "None")
+ index_list.append(index)
+ create_clos_node(allocation_etree, common.get_node("./@id", vm_node), index_list)
+
+def creat_mask_list_node(board_etree, scenario_etree, allocation_etree, mask_list):
+ allocation_hv_node = common.get_node(f"//hv", allocation_etree)
+ if allocation_hv_node is None:
+ allocation_hv_node = common.append_node("//hv", None, allocation_etree, id = vm_id)
+ cache2_id_list = scenario_etree.xpath("//CACHE_ALLOCATION[CACHE_LEVEL = 2]/CACHE_ID/text()")
+ cache2_id_list.sort()
+ if common.get_node("./clos_mask[@id = l3]", allocation_hv_node) is None:
+ clos_mask = common.append_node("./clos_mask", None, allocation_hv_node, id="l3")
+ for i in range(0, len(mask_list)):
+ if mask_list[i]["l3"] == "None":
+ value = "0xffff"
+ else:
+ value = str(mask_list[i]["l3"])
+ common.append_node(f"./clos", value, clos_mask)
+
+ for cache2 in cache2_id_list:
+ if common.get_node("./clos_mask[@id = '{cache2}']", allocation_hv_node) is None:
+ clos_mask = common.append_node("./clos_mask", None, allocation_hv_node, id=cache2)
+ for i in range(0, len(mask_list)):
+ if mask_list[i][cache2] == "None":
+ value = "0xffff"
+ else:
+ value = str(mask_list[i][cache2] )
+ common.append_node(f"./clos", value, clos_mask)
+
+def fn(board_etree, scenario_etree, allocation_etree):
+ mask_list = gen_all_clos_index(board_etree, scenario_etree, allocation_etree)
+ creat_mask_list_node(board_etree, scenario_etree, allocation_etree, mask_list)
+ alloc_clos_index(board_etree, scenario_etree, allocation_etree, mask_list)
diff --git a/misc/config_tools/xforms/lib.xsl b/misc/config_tools/xforms/lib.xsl
index 6b3631d8c..0e28f89f1 100644
--- a/misc/config_tools/xforms/lib.xsl
+++ b/misc/config_tools/xforms/lib.xsl
@@ -564,12 +564,12 @@

<!-- Board-specific functions-->
<func:function name="acrn:get-normalized-closinfo-rdt-res-str">
- <xsl:variable name="rdt_resource" select="translate(substring-before(substring-after(//CLOS_INFO, 'rdt resources supported:'), 'rdt resource clos max:'), $whitespaces, '')" />
+ <xsl:variable name="rdt_resource" select="acrn:string-join(//cache[capability/@id='CAT']/@level, ', ', 'L', '')" />
<func:result select="$rdt_resource" />
</func:function>

<func:function name="acrn:get-normalized-closinfo-rdt-clos-max-str">
- <xsl:variable name="rdt_res_clos_max" select="translate(substring-before(substring-after(//CLOS_INFO, 'rdt resource clos max:'), 'rdt resource mask max:'), $whitespaces, '')" />
+ <xsl:variable name="rdt_res_clos_max" select="acrn:string-join(//cache[capability/@id='CAT']/capability/clos_number, ', ', '', '')"/>
<func:result select="$rdt_res_clos_max" />
</func:function>

diff --git a/misc/config_tools/xforms/misc_cfg.h.xsl b/misc/config_tools/xforms/misc_cfg.h.xsl
index 48faa8a39..64426b1c0 100644
--- a/misc/config_tools/xforms/misc_cfg.h.xsl
+++ b/misc/config_tools/xforms/misc_cfg.h.xsl
@@ -152,12 +152,6 @@
</xsl:otherwise>
</xsl:choose>
<xsl:if test="acrn:is-rdt-supported()">
- <xsl:for-each select="hv/FEATURES/RDT/MBA_DELAY">
- <xsl:value-of select="acrn:define(concat('MBA_MASK_', position() - 1), current(), 'U')" />
- </xsl:for-each>
- <xsl:for-each select="hv/FEATURES/RDT/CLOS_MASK">
- <xsl:value-of select="acrn:define(concat('CLOS_MASK_', position() - 1), current(), 'U')" />
- </xsl:for-each>
<xsl:value-of select="$endif" />
</xsl:if>
</xsl:template>
diff --git a/misc/config_tools/xforms/vm_configurations.c.xsl b/misc/config_tools/xforms/vm_configurations.c.xsl
index 6ba2360cb..f79d5d1d3 100644
--- a/misc/config_tools/xforms/vm_configurations.c.xsl
+++ b/misc/config_tools/xforms/vm_configurations.c.xsl
@@ -57,8 +57,9 @@
<xsl:value-of select="acrn:ifdef('CONFIG_RDT_ENABLED')" />

<xsl:for-each select="vm">
- <xsl:value-of select="concat('static uint16_t ', concat('vm', @id, '_vcpu_clos'), '[', count(clos/vcpu_clos), 'U] = {')" />
- <xsl:value-of select="acrn:string-join(clos/vcpu_clos, ', ', '', 'U')" />
+ <xsl:variable name="vm_id" select="@id" />
+ <xsl:value-of select="concat('static uint16_t ', concat('vm', @id, '_vcpu_clos'), '[', count(//allocation-data/acrn-config/vm[@id=$vm_id]/clos/vcpu_clos), 'U] = {')" />
+ <xsl:value-of select="acrn:string-join(//allocation-data/acrn-config/vm[@id=$vm_id]/clos/vcpu_clos, ', ', '', 'U')" />
<xsl:text>};</xsl:text>
<xsl:value-of select="$newline" />
</xsl:for-each>
@@ -166,18 +167,17 @@
<xsl:value-of select="acrn:ifdef('CONFIG_RDT_ENABLED')" />
<xsl:value-of select="acrn:initializer('pclosids', concat('vm', ../@id, '_vcpu_clos'))" />

- <xsl:value-of select="acrn:initializer('num_pclosids', concat(count(vcpu_clos), 'U'))" />
-
+ <xsl:variable name="vm_id" select="../@id" />
+ <xsl:value-of select="acrn:initializer('num_pclosids', concat(count(//allocation-data/acrn-config/vm[@id=$vm_id]/clos/vcpu_clos), 'U'))" />
<xsl:if test="acrn:is-vcat-enabled() and ../virtual_cat_support[text() = 'y']">
<xsl:variable name="rdt_res_str" select="acrn:get-normalized-closinfo-rdt-res-str()" />
- <xsl:variable name="closid" select="vcpu_clos[1]" />

<xsl:if test="contains($rdt_res_str, 'L2')">
- <xsl:value-of select="acrn:initializer('max_l2_pcbm', concat(../../hv/FEATURES/RDT/CLOS_MASK[$closid + 1], 'U'))" />
+ <xsl:value-of select="acrn:initializer('max_l2_pcbm', concat(math:max(//allocation-data/acrn-config/vm[@id=$vm_id]/clos/vcpu_clos), 'U'))" />
</xsl:if>

<xsl:if test="contains($rdt_res_str, 'L3')">
- <xsl:value-of select="acrn:initializer('max_l3_pcbm', concat(../../hv/FEATURES/RDT/CLOS_MASK[$closid + 1], 'U'))" />
+ <xsl:value-of select="acrn:initializer('max_l3_pcbm', concat(math:max(//allocation-data/acrn-config/vm[@id=$vm_id]/clos/vcpu_clos), 'U'))" />
</xsl:if>
</xsl:if>

--
2.17.1


[PATCH] misc: configurator: Deactivate later steps until prior step is complete

Liu, Yifan1
 

From: Yifan Liu <yifan1.liu@...>

There are 3 steps to configure hypervisor: step 1 load boardxml, step 2 load
or create scenario xml, step 3 configure scenario.xml.

This patch disables later steps until prior step is complete.
The button "Save Scenario and Launch Scripts" shares the same logic with
steps 3.

Signed-off-by: Yifan Liu <yifan1.liu@...>
---
.../configurator/src/pages/Config/Config.jsx | 18 ++++++++++++++----
.../ConfigureSettingsForScenario.jsx | 8 ++++++--
.../CreateNewOrImportAnExistingScenario.jsx | 6 +++++-
.../ImportABoardConfigurationFile.jsx | 1 +
4 files changed, 26 insertions(+), 7 deletions(-)

diff --git a/misc/config_tools/configurator/src/pages/Config/Config.jsx b/misc/config_tools/configurator/src/pages/Config/Config.jsx
index 106fdea36..98dd5a066 100644
--- a/misc/config_tools/configurator/src/pages/Config/Config.jsx
+++ b/misc/config_tools/configurator/src/pages/Config/Config.jsx
@@ -21,10 +21,20 @@ class Config extends React.Component {
super(props);
let {configurator} = context
this.state = {
- WorkingFolder: configurator.WorkingFolder
+ WorkingFolder: configurator.WorkingFolder,
+ boardXMLLoaded: false,
+ scenarioXMLLoaded: false
}
}

+ setBoardReady = () => {
+ this.setState({boardXMLLoaded: true})
+ }
+
+ setScenarioReady = () => {
+ this.setState({scenarioXMLLoaded: true})
+ }
+
render = () => {
return (<div>
<Container fluid className="configBody">
@@ -42,16 +52,16 @@ class Config extends React.Component {

{/*<!-- stage 1 -->*/}

- <ImportABoardConfigurationFile/>
+ <ImportABoardConfigurationFile stepFinished={this.setBoardReady}/>
<Banner/>

{/*/!*<!-- stage 2 -->*!/*/}

- <CreateNewOrImportAnExistingScenario/>
+ <CreateNewOrImportAnExistingScenario stepFinished={this.setScenarioReady} stepStarted={this.state.boardXMLLoaded}/>
<Banner/>

{/*<!-- stage 3 -->*/}
- <ConfigureSettingsForScenario/>
+ <ConfigureSettingsForScenario stepStarted={this.state.boardXMLLoaded && this.state.scenarioXMLLoaded}/>
</Accordion>

<Footer/>
diff --git a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigureSettingsForScenario.jsx b/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigureSettingsForScenario.jsx
index 214c91f10..949a00e68 100644
--- a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigureSettingsForScenario.jsx
+++ b/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigureSettingsForScenario.jsx
@@ -50,8 +50,10 @@ export default class ConfigureSettingsForScenario extends Component {
return (<Accordion.Item eventKey="2">
<Accordion.Header>
<div className="p-1 w-100 d-flex justify-content-between align-items-center">
- <div className="fs-4">3. Configure settings for scenario and launch scripts</div>
- <Button size="lg" onClick={(e) => {
+ <div className="fs-4"><font color={this.props.stepStarted ? "black" : "gray"}>3. Configure settings for scenario and launch scripts</font></div>
+ <Button size="lg"
+ disabled={!this.props.stepStarted}
+ onClick={(e) => {
configurator.saveScenario()
.then(() => {
alert('Save successful!')
@@ -61,6 +63,7 @@ export default class ConfigureSettingsForScenario extends Component {
}}>Save Scenario and Launch Scripts</Button>
</div>
</Accordion.Header>
+ {this.props.stepStarted &&
<Accordion.Body>

<div className="p-4">
@@ -87,6 +90,7 @@ export default class ConfigureSettingsForScenario extends Component {

</div>
</Accordion.Body>
+ }
</Accordion.Item>)
}
}
diff --git a/misc/config_tools/configurator/src/pages/Config/CreateNewOrImportAnExistingScenario/CreateNewOrImportAnExistingScenario.jsx b/misc/config_tools/configurator/src/pages/Config/CreateNewOrImportAnExistingScenario/CreateNewOrImportAnExistingScenario.jsx
index b020ff2c4..5a9268630 100644
--- a/misc/config_tools/configurator/src/pages/Config/CreateNewOrImportAnExistingScenario/CreateNewOrImportAnExistingScenario.jsx
+++ b/misc/config_tools/configurator/src/pages/Config/CreateNewOrImportAnExistingScenario/CreateNewOrImportAnExistingScenario.jsx
@@ -67,6 +67,7 @@ export default class CreateNewOrImportAnExistingScenario extends Component {
return configurator.programLayer.loadScenario(this.scenarioXMLSelect.current.value)
.then(() => {
this.setState({selected: this.getScenarioPath()})
+ this.props.stepFinished()
}).then(() => {
let tabButton = document.querySelectorAll(".accordion-button")[2];
if (tabButton.className.indexOf('collapsed') >= 0) {
@@ -99,9 +100,10 @@ export default class CreateNewOrImportAnExistingScenario extends Component {
<Accordion.Item eventKey="1">
<Accordion.Header>
<div className="p-1 fs-4">
- 2. Create new or import an existing scenario
+ <font color={this.props.stepStarted ? "black" : "gray"}>2. Create new or import an existing scenario</font>
</div>
</Accordion.Header>
+ {this.props.stepStarted &&
<Accordion.Body>
<Row className="px-3 py-2">
<Col className="border-end-sm py-1" sm>
@@ -110,6 +112,7 @@ export default class CreateNewOrImportAnExistingScenario extends Component {
<div className="py-4 text-center">
<CreateScenarioModal cb={() => {
this.setState({selected: this.getScenarioPath()})
+ this.props.stepFinished()
}}/>
</div>
</Col>
@@ -151,6 +154,7 @@ export default class CreateNewOrImportAnExistingScenario extends Component {
</Col>
</Row>
</Accordion.Body>
+ }
</Accordion.Item>
)
}
diff --git a/misc/config_tools/configurator/src/pages/Config/ImportABoardConfigurationFile/ImportABoardConfigurationFile.jsx b/misc/config_tools/configurator/src/pages/Config/ImportABoardConfigurationFile/ImportABoardConfigurationFile.jsx
index 5548f63f8..0a58b929d 100644
--- a/misc/config_tools/configurator/src/pages/Config/ImportABoardConfigurationFile/ImportABoardConfigurationFile.jsx
+++ b/misc/config_tools/configurator/src/pages/Config/ImportABoardConfigurationFile/ImportABoardConfigurationFile.jsx
@@ -89,6 +89,7 @@ export default class ImportABoardConfigurationFile extends Component {
BASE_BOARD_INFO: BASE_BOARD_INFO
})
this.boardXMLSelect.current.disabled = true
+ this.props.stepFinished()
}

render() {
--
2.32.0.windows.2


Re: [PATCH] ACRN: DM: Implement vhost vsock feature

Conghui Chen
 

Please check my comments inline, thanks.

-----Original Message-----
From: Liu Long <long.liu@...>
Sent: Friday, April 22, 2022 10:06 AM
To: Chen, Conghui <conghui.chen@...>; acrn-
dev@...
Subject: [PATCH] ACRN: DM: Implement vhost vsock feature

Signed-off-by: Liu Long <long.liu@...>
---
devicemodel/Makefile | 1 +
devicemodel/hw/pci/core.c | 2 +
devicemodel/hw/pci/virtio/vhost.c | 126 ++++++++--
devicemodel/hw/pci/virtio/vhost_vsock.c | 319
++++++++++++++++++++++++
devicemodel/hw/pci/virtio/virtio.c | 25 +-
devicemodel/include/vhost.h | 25 ++
devicemodel/include/virtio.h | 3 +
7 files changed, 474 insertions(+), 27 deletions(-)
create mode 100644 devicemodel/hw/pci/virtio/vhost_vsock.c

diff --git a/devicemodel/Makefile b/devicemodel/Makefile
index e0b59958e..84ab1f108 100644
--- a/devicemodel/Makefile
+++ b/devicemodel/Makefile
@@ -141,6 +141,7 @@ SRCS += hw/pci/virtio/virtio_coreu.c
SRCS += hw/pci/virtio/virtio_hdcp.c
SRCS += hw/pci/virtio/virtio_rpmb.c
SRCS += hw/pci/virtio/virtio_gpio.c
+SRCS += hw/pci/virtio/vhost_vsock.c
SRCS += hw/pci/irq.c
SRCS += hw/pci/uart.c
SRCS += hw/pci/gvt.c
diff --git a/devicemodel/hw/pci/core.c b/devicemodel/hw/pci/core.c
index 9527d66d2..d6963eb4d 100644
--- a/devicemodel/hw/pci/core.c
+++ b/devicemodel/hw/pci/core.c
@@ -2074,10 +2074,12 @@ pci_lintr_deassert(struct pci_vdev *dev)
return;
}

+ printf("%s dev_name: %s\n", __func__, dev->name);
Please remove the debug info or use pr_dbg, thanks.


pthread_mutex_lock(&dev->lintr.lock);
if (dev->lintr.state == ASSERTED) {
dev->lintr.state = IDLE;
pci_irq_deassert(dev);
+ printf("%s dev_name: %s pci_irq_deassert!\n", __func__,
dev->name);
Ditto.

} else if (dev->lintr.state == PENDING)
dev->lintr.state = IDLE;
pthread_mutex_unlock(&dev->lintr.lock);
diff --git a/devicemodel/hw/pci/virtio/vhost.c
b/devicemodel/hw/pci/virtio/vhost.c
index a289fca7d..1a90421b2 100644
--- a/devicemodel/hw/pci/virtio/vhost.c
+++ b/devicemodel/hw/pci/virtio/vhost.c
@@ -18,6 +18,7 @@
#include <unistd.h>
#include <pthread.h>
#include <linux/vhost.h>
+#include <string.h>

#include "dm.h"
#include "pci_core.h"
@@ -25,7 +26,7 @@
#include "vmmapi.h"
#include "vhost.h"

-static int vhost_debug;
+static int vhost_debug = 1;
Don't forget this one.


#define LOG_TAG "vhost: "
#define DPRINTF(fmt, args...) \
do { if (vhost_debug) pr_dbg(LOG_TAG fmt, ##args); } while (0)
@@ -128,6 +129,20 @@ vhost_kernel_set_vring_busyloop_timeout(struct
vhost_dev *vdev,
#endif
}

+static int
+vsock_set_running(struct vhost_dev *vdev, uint64_t features)
+{
+ return vhost_kernel_ioctl(vdev, VHOST_VSOCK_SET_RUNNING,
&features);
+}
+
+static int
+vhost_vsock_set_guest_cid(struct vhost_dev *vdev,
+ uint64_t guest_cid)
+{
+ return vhost_kernel_ioctl(vdev,
+ VHOST_VSOCK_SET_GUEST_CID, &guest_cid);
+}
+
static int
vhost_kernel_set_features(struct vhost_dev *vdev,
uint64_t features)
@@ -142,7 +157,7 @@ vhost_kernel_get_features(struct vhost_dev *vdev,
return vhost_kernel_ioctl(vdev, VHOST_GET_FEATURES, features);
}

-static int
+int
I notice that you did not use the function outside this file, so you may change it back, thanks.

vhost_kernel_set_owner(struct vhost_dev *vdev)
{
return vhost_kernel_ioctl(vdev, VHOST_SET_OWNER, NULL);
@@ -174,8 +189,8 @@ vhost_eventfd_test_and_clear(int fd)
* vhost_vq_init()).
*/
rc = read(fd, &count, sizeof(count));
- DPRINTF("read eventfd, rc = %d, errno = %d, count = %ld\n",
- rc, errno, count);
+ DPRINTF("read eventfd, rc = %d, errno = %d, count = %ld, str:%s\n",
+ rc, errno, count, strerror(errno));
return rc > 0 ? 1 : 0;
}

@@ -239,11 +254,11 @@ vhost_vq_register_eventfd(struct vhost_dev
*vdev,
ioeventfd.flags |= (ACRN_IOEVENTFD_FLAG_DATAMATCH |
ACRN_IOEVENTFD_FLAG_PIO);
}
-
ioeventfd.fd = vq->kick_fd;
DPRINTF("[ioeventfd: %d][0x%lx@%d][flags: 0x%x][data: 0x%lx]\n",
ioeventfd.fd, ioeventfd.addr, ioeventfd.len,
ioeventfd.flags, ioeventfd.data);
+ printf("Before vm_ioeventfd!\n");
Please remove this, thanks.

rc = vm_ioeventfd(vdev->base->dev->vmctx, &ioeventfd);
if (rc < 0) {
WPRINTF("vm_ioeventfd failed rc = %d, errno = %d\n",
@@ -251,6 +266,7 @@ vhost_vq_register_eventfd(struct vhost_dev *vdev,
return -1;
}

+ printf("Before &vdev->base->dev->msix.table[vqi->msix_idx:%d]\n",
vqi->msix_idx);
Ditto.

/* register irqfd for notify */
mte = &vdev->base->dev->msix.table[vqi->msix_idx];
msi.msi_addr = mte->addr;
@@ -364,10 +380,8 @@ vhost_vq_start(struct vhost_dev *vdev, int idx)
vqi = &vdev->base->queues[q_idx];
vq = &vdev->vqs[idx];

- /* clear kick_fd and call_fd */
Please keep the original comment, thanks.

vhost_eventfd_test_and_clear(vq->kick_fd);
vhost_eventfd_test_and_clear(vq->call_fd);
-
/* register ioeventfd & irqfd */
rc = vhost_vq_register_eventfd(vdev, idx, true);
if (rc < 0) {
@@ -501,6 +515,7 @@ vhost_set_mem_table(struct vhost_dev *vdev)
if (ctx->highmem > 0)
nregions++;

+ printf("vhost_set_mem_table nregions :%d!\n", nregions);
Ditto.

mem = calloc(1, sizeof(struct vhost_memory) +
sizeof(struct vhost_memory_region) * nregions);
if (!mem) {
@@ -547,6 +562,67 @@ vhost_set_mem_table(struct vhost_dev *vdev)
return 0;
}

+int
+vhost_vsock_set_running(struct vhost_vsock *vh_sock, int start)
+{
+ struct vhost_vsock *vhvsock = vh_sock;
+ int ret;
+
+ printf("vsock_set_running!\n");
Use pr_dbg may better, thanks.

+ ret = vsock_set_running(&vhvsock->vdev, start);
+ if (ret < 0) {
+ return -errno;
+ }
+ return 0;
+}
+
+int
+vhost_vsock_start(struct vhost_vsock *vhvsock)
+{
+ int rc;
+
+ if (!vhvsock->vhost_started)
+ printf("Start the vsock!\n");
+ if (vhvsock->vhost_started) {
+ printf("vhost vsock already started!\n");
+ return 0;
+ }
+ printf("Start vhost dev!\n");
You can remove the first 'if', and keep the log here. Please change it to pr_dbg, or just remove, thanks.

+ rc = vhost_dev_start(&vhvsock->vdev);
+ if (rc < 0) {
+ printf("vhost_dev_start failed\n");
+ goto fail;
+ }
+
+ rc = vhost_vsock_set_running(vhvsock, 1);
+ if (rc < 0) {
+ printf("vhost_vsock_set_running %d\n", rc);
+ goto fail;
Here may need another fail label, as the vhost dev is started, we need to stop it by call vhost_dev_stop, you can check the logic in vhost net.

+ }
+
+ vhvsock->vhost_started = true;
+ printf("vhost_dev_start return!!\n");
Please remove or change to pr_dbg, thanks.

+ return 0;
+fail:
+ return -1;
+}
+
+int
+vhost_vsock_guest_cid(struct vhost_vsock *vhsock, uint64_t gcid)
I just wonder why not directly use the API vhost_vsock_set_guest_cid?

+{
+
+ int rc;
+
+ rc = vhost_vsock_set_guest_cid(&vhsock->vdev, gcid);
+
+ if (rc < 0) {
+ printf("vhost_vsock_set_guest_cid return %d!\n", rc);
+ return -1;
+ }
+ return 0;
+}
+
/**
* @brief vhost_dev initialization.
*
@@ -577,28 +653,29 @@ vhost_dev_init(struct vhost_dev *vdev,

/* sanity check */
if (!base || !base->queues || !base->vops) {
- WPRINTF("virtio_base is not initialized\n");
+ printf("virtio_base is not initialized\n");
Please recover this, thanks.

goto fail;
}

if (!vdev->vqs || vdev->nvqs == 0) {
- WPRINTF("virtqueue is not initialized\n");
+ printf("virtqueue is not initialized\n");
Ditto.

goto fail;
}

if (vq_idx + vdev->nvqs > base->vops->nvq) {
- WPRINTF("invalid vq_idx: %d\n", vq_idx);
+ printf("invalid vq_idx: %d\n", vq_idx);
Ditto.

goto fail;
}

vhost_kernel_init(vdev, base, fd, vq_idx, busyloop_timeout);
-
rc = vhost_kernel_get_features(vdev, &features);
+ printf("vhost_get_features %ld\n", features);
if (rc < 0) {
- WPRINTF("vhost_get_features failed\n");
+ printf("vhost_get_features failed\n");
goto fail;
}

+ printf("vsock debug nvqs:%d!\n", vdev->nvqs);
for (i = 0; i < vdev->nvqs; i++) {
rc = vhost_vq_init(vdev, i);
if (rc < 0)
@@ -617,7 +694,11 @@ vhost_dev_init(struct vhost_dev *vdev,
* vhost_features), they should be disabled in device_caps,
* which expose as virtio host_features for virtio FE driver.
*/
+ printf("vhost_features: %ld features %ld\n",
+ vhost_features, features);
vdev->base->device_caps &= ~(vhost_features ^ features);
+ printf("vdev->base->device_caps: %ld!\n",
+ vdev->base->device_caps);
vdev->started = false;

return 0;
@@ -668,8 +749,10 @@ vhost_dev_start(struct vhost_dev *vdev)
uint64_t features;
int i, rc;

- if (vdev->started)
+ if (vdev->started) {
+ printf("xxxx vhost_dev_start !\n");
Ditto.

return 0;
+ }

/* sanity check */
if (!vdev->base || !vdev->base->queues || !vdev->base->vops) {
@@ -677,12 +760,6 @@ vhost_dev_start(struct vhost_dev *vdev)
goto fail;
}

- if ((vdev->base->status & VIRTIO_CONFIG_S_DRIVER_OK) == 0) {
- WPRINTF("status error 0x%x\n", vdev->base->status);
- goto fail;
- }
-
Ditto.

- /* only msix is supported now */
if (!pci_msix_enabled(vdev->base->dev)) {
WPRINTF("only msix is supported\n");
goto fail;
@@ -697,12 +774,13 @@ vhost_dev_start(struct vhost_dev *vdev)
/* set vhost internal features */
features = (vdev->base->negotiated_caps & vdev->vhost_features) |
vdev->vhost_ext_features;
+ printf("vhost_kernel_set_features %ld, negotiated_caps:%ld!\n",
features, vdev->base->negotiated_caps);
rc = vhost_kernel_set_features(vdev, features);
if (rc < 0) {
WPRINTF("set_features failed\n");
goto fail;
}
- DPRINTF("set_features: 0x%lx\n", features);
+ printf("set_features: 0x%lx\n", features);

/* set memory table */
rc = vhost_set_mem_table(vdev);
@@ -725,13 +803,13 @@ vhost_dev_start(struct vhost_dev *vdev)
}
}

+ printf("Before start host vq !\n");
/* start vhost virtqueue */
for (i = 0; i < vdev->nvqs; i++) {
rc = vhost_vq_start(vdev, i);
if (rc < 0)
goto fail_vq;
}
-
vdev->started = true;
return 0;

@@ -754,10 +832,7 @@ fail:
int
vhost_dev_stop(struct vhost_dev *vdev)
{
- int i, rc = 0;
-
- for (i = 0; i < vdev->nvqs; i++)
- vhost_vq_stop(vdev, i);
Please recover this, thanks.


+ int rc = 0;

/* the following are done by this ioctl:
* 1) resources of the vhost dev are freed
@@ -808,3 +883,4 @@ fail:

return -1;
}
+
diff --git a/devicemodel/hw/pci/virtio/vhost_vsock.c
b/devicemodel/hw/pci/virtio/vhost_vsock.c
new file mode 100644
index 000000000..38062d3e2
--- /dev/null
+++ b/devicemodel/hw/pci/virtio/vhost_vsock.c
@@ -0,0 +1,319 @@
+/*-
+ * Copyright (c) 2011 NetApp, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY NETAPP, INC ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL NETAPP, INC OR CONTRIBUTORS
BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+#include <sys/uio.h>
+#include <net/ethernet.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <openssl/md5.h>
+#include <pthread.h>
+#include <sys/ioctl.h>
+#include <sys/errno.h>
+#include <net/if.h>
+#include <linux/if_tun.h>
+#include <sys/socket.h>
+
+#include "dm.h"
+#include "pci_core.h"
+#include "mevent.h"
+#include "virtio.h"
+#include "vhost.h"
+#include "dm_string.h"
+
+struct virtio_vsock_hdr {
+ uint64_t src_cid;
+ uint64_t dst_cid;
+ uint32_t src_port;
+ uint32_t dst_port;
+ uint32_t len;
+ uint16_t type;
+ uint16_t op;
+ uint32_t flags;
+ uint32_t buf_alloc;
+ uint32_t fwd_cnt;
+}__attribute__((packed));
+
+#define VIRTIO_VSOCK_RINGSZ 1024
+#define VIRTIO_VSOCK_MAXSEGS 256
+
+struct virtio_vsock_config {
+ uint64_t guest_cid;
+}__attribute__((packed));
+
+struct virtio_vsock {
+ struct virtio_base base;
+ pthread_mutex_t mtx;
+ struct virtio_vq_info queues[VHOST_VSOCK_MAXQ];
+ struct virtio_vsock_config config;
+ struct vhost_vsock *vhost_vsock;
+ volatile int resetting; /* set and checked outside lock */
+ volatile int closing; /* stop the tx i/o thread */
+
+ int rx_ready;
+ uint64_t features;
+};
+
+static int
+virtio_vsock_cfgwrite(void *vdev, int offset, int size, uint32_t value)
+{
+ struct virtio_vsock *vivsock = vdev;
+ void *ptr;
+
+ if (offset < 6) {
What does 6 means? You may use a MACRO.

+ if (offset + size > 6) {
+ return -1;
+ }
+ ptr = &vivsock->config.guest_cid;
+ memcpy(ptr, &value, size);
+ } else {
+ /* silently ignore other writes */
+ WPRINTF(("vsock: write to readonly reg %d\n\r", offset));
+ }
+
+ return 0;
+}
+
+static int
+vhost_vsock_stop(struct vhost_vsock *vhost_vsock)
+{
+ int rc = 0;
+
+ vhost_net_set_backend(&vhost_vsock->vdev, -1);
It's very strange to use vhost_net API, you may need to write an API for vhost_vsock..

+
+ rc = vhost_dev_stop(&vhost_vsock->vdev);
+ if (rc < 0)
+ WPRINTF(("vhost_vsock_stop failed\n"));
+ vhost_vsock->vhost_started = false;
+ return rc;
+}
+
+static void
+virtio_vsock_set_status(void *vdev, uint64_t status)
+{
+ struct virtio_vsock *vivsock = vdev;
+ bool should_start = status & VIRTIO_CONFIG_S_DRIVER_OK;
+ int rc;
+
+ if (!vivsock->vhost_vsock) {
+ WPRINTF(("virtio_vsock_set_status vhost is NULL!\n"));
+ return;
+ }
+
+ if (should_start) {
+ rc = vhost_vsock_start(vivsock->vhost_vsock);
+ if (rc < 0) {
+ WPRINTF(("vhost_vsock_start failed!\n"));
+ return;
+ }
+ } else if (vivsock->vhost_vsock->vhost_started &&
+ ((status & VIRTIO_CONFIG_S_DRIVER_OK) == 0)) {
+ vhost_vsock_stop(vivsock->vhost_vsock);
+ }
+}
+
+static void
+virtio_vsock_apply_neg(void *vdev, uint64_t negotiated_features)
+{
+ struct virtio_vsock *vivsock = vdev;
+
+ vivsock->features = negotiated_features;
+}
+
+static int
+virtio_vsock_read_cfg(void *vdev, int offset, int size, uint32_t *retval)
+{
+ struct virtio_vsock *vivsock = vdev;
+ void *ptr;
+
+ ptr = (uint8_t *)&vivsock->config + offset;
+ memcpy(retval, ptr, size);
+
+ return 0;
+}
+
+static void
+virtio_vsock_reset(void *vdev)
+{
+ struct virtio_vsock *vivsock = vdev;
+
+ vivsock->resetting = 1;
+ vivsock->rx_ready = 0;
+
+ /* now reset rings, MSI-X vectors, and negotiated capabilities */
+ virtio_reset_dev(&vivsock->base);
+
+ vivsock->resetting = 0;
+ vivsock->closing = 0;
+}
+
+static struct virtio_ops virtio_vsock_ops = {
+ "vhost-vsock", /* our name */
+ VHOST_VSOCK_MAXQ, /* we currently support 2 virtqueues */
+ sizeof(struct virtio_vsock_config), /* config reg size */
+ virtio_vsock_reset, /* reset */
+ NULL, /* device-wide qnotify -- not used */
+ virtio_vsock_read_cfg, /* read PCI config */
+ virtio_vsock_cfgwrite, /* write PCI config */
+ virtio_vsock_apply_neg, /* apply negotiated features */
+ virtio_vsock_set_status, /* called on guest set status */
+};
+
+static struct vhost_vsock *
+vhost_vsock_init(struct virtio_base *base, int vq_idx)
+{
+ struct vhost_vsock *vhvsock = NULL;
+ uint64_t vhost_features = VHOST_FEATURES;
+ uint32_t busyloop_timeout = 0;
+ int rc;
+
+ vhvsock = calloc(1, sizeof(struct vhost_vsock));
+ if (!vhvsock) {
+ WPRINTF(("vhost init out of memory\n"));
+ goto fail;
+ }
+
+ /* pre-init before calling vhost_dev_init */
+ vhvsock->vdev.nvqs = 2;
+ vhvsock->vdev.vqs = vhvsock->vqs;
+ vhvsock->vhost_fd = open("/dev/vhost-vsock", O_RDWR);;
+ if (vhvsock->vhost_fd < 0) {
+ WPRINTF(("Open vhost-vsock fail!\n"));
+ goto fail;
+ }
+ rc = fcntl(vhvsock->vhost_fd, F_GETFL);
+ if (rc == -1) {
+ WPRINTF(("fcntl vhost node fail!\n"));
+ goto fail;
+ }
+ if (fcntl(vhvsock->vhost_fd, F_SETFL, rc | O_NONBLOCK) == -1) {
+ WPRINTF(("fcntl set NONBLOCK fail!\n"));
+ goto fail;
vhost_fd should be closed first.

+ }
+
+ rc = vhost_dev_init(&vhvsock->vdev, base, vhvsock->vhost_fd, vq_idx,
+ vhost_features, 0, busyloop_timeout);
+ if (rc < 0) {
+ WPRINTF(("vhost_dev_init failed\n"));
+ goto fail;
Ditto.

+ }
+
+ return vhvsock;
+fail:
+ if (vhvsock)
+ free(vhvsock);
+ return NULL;
+}
+
+static void
+vhost_vsock_handle_output(void *vdev, struct virtio_vq_info *vq)
+{
+ /*do nothing*/
+}
+
+static int
+virtio_vhost_vsock_init(struct vmctx *ctx, struct pci_vdev *dev, char *opts)
+{
+ struct virtio_vsock *vivsock;
+ int rc, val;
+ pthread_mutexattr_t attr;
+ char *devopts = NULL;
+
+ vivsock = calloc(1, sizeof(struct virtio_vsock));
+ if (!vivsock) {
+ WPRINTF(("virtio_vosck: malloc struct return NULL!"));
+ return -1;
+ }
+
+ rc = pthread_mutexattr_init(&attr);
+ if (rc)
+ WPRINTF(("virtio_vsock: mutexattr init failed with
erro %d\n", rc));
+ rc = pthread_mutexattr_settype(&attr,
PTHREAD_MUTEX_RECURSIVE);
+ if (rc)
+ WPRINTF(("virtio_vsock: mutexattr_settype failed with
error %d\n", rc));
+ rc = pthread_mutex_init(&vivsock->mtx, &attr);
+ if (rc)
+ WPRINTF(("virtio_vsock: pthread_mutexattr_init failed with
error %d\n", rc));
+
+ if (opts != NULL) {
+ devopts = strdup(opts);
+ if (!devopts) {
+ WPRINTF(("virtio_vsock: The vsock parameter is
NULL!\n"));
+ free(vivsock);
+ return -1;
+ }
+ if (!strncmp(devopts, "guest_cid=", 10)) {
+ strsep(&devopts, "=");
+ dm_strtoi(devopts, NULL, 10, &val);
+ vivsock->config.guest_cid = val;
+ }
+ }
+ virtio_linkup(&vivsock->base, &virtio_vsock_ops, vivsock, dev,
vivsock->queues, BACKEND_VHOST);
+ vivsock->base.mtx = &vivsock->mtx;
+ vivsock->base.device_caps = (1UL << VIRTIO_F_VERSION_1) |
VHOST_FEATURES;
VHOST_FEATURES has VIRTIO_F_VERSION_1.

+
+ vivsock->queues[VHOST_VSOCK_RXQ].qsize =
VHOST_VSOCK_QUEUE_SIZE;
+ vivsock->queues[VHOST_VSOCK_RXQ].notify =
vhost_vsock_handle_output;
+ vivsock->queues[VHOST_VSOCK_TXQ].qsize =
VHOST_VSOCK_QUEUE_SIZE;
+ vivsock->queues[VHOST_VSOCK_TXQ].notify =
vhost_vsock_handle_output;
+ vivsock->queues[VHOST_VSOCK_CTLQ].qsize =
VHOST_VSOCK_QUEUE_SIZE;
+ vivsock->queues[VHOST_VSOCK_CTLQ].notify =
vhost_vsock_handle_output;
+
+ /* initialize config space */
+ pci_set_cfgdata16(dev, PCIR_DEVICE, 0x1040 + VIRTIO_VHOST_VSOCK);
Why not directly define the value of VIRTIO_VHOST_VOSCK to 0x1040+19, any reason for it?

+ pci_set_cfgdata16(dev, PCIR_VENDOR, VIRTIO_VENDOR);
+ pci_set_cfgdata8(dev, PCIR_CLASS, PCIC_NETWORK);
+ pci_set_cfgdata16(dev, PCIR_REVID, 1);
+ virtio_set_modern_bar(&vivsock->base, false);
+
+ vivsock->vhost_vsock = vhost_vsock_init(&vivsock->base, 0);
+ rc = vhost_vsock_guest_cid(vivsock->vhost_vsock, vivsock-
config.guest_cid);
+ WPRINTF(("vhost_vsock_guest_cid rc %d!\n", rc));
+
+ if (virtio_interrupt_init(&vivsock->base, virtio_uses_msix())) {
+ if (vivsock)
+ free(vivsock);
+ return -1;
+ }
+ return 0;
+}
+static void
+virtio_vhost_vsock_deinit(struct vmctx *ctx, struct pci_vdev *dev, char
*opts)
+{
Please complete the de-init logic here, thanks.

+ return;
+}
+
+struct pci_vdev_ops pci_ops_vhost_vsock = {
+ .class_name = "vhost-vsock",
+ .vdev_init = virtio_vhost_vsock_init,
+ .vdev_deinit = virtio_vhost_vsock_deinit,
+ .vdev_barwrite = virtio_pci_write,
+ .vdev_barread = virtio_pci_read
+};
+DEFINE_PCI_DEVTYPE(pci_ops_vhost_vsock);
diff --git a/devicemodel/hw/pci/virtio/virtio.c
b/devicemodel/hw/pci/virtio/virtio.c
index 88a5f1a5e..91caef72b 100644
--- a/devicemodel/hw/pci/virtio/virtio.c
+++ b/devicemodel/hw/pci/virtio/virtio.c
@@ -1161,6 +1161,7 @@ virtio_set_modern_mmio_bar(struct virtio_base
*base, int barnum)
}

base->modern_mmio_bar_idx = barnum;
+ printf("%s barnum: %d\n", __func__, barnum);
Please remove this, thanks.

return 0;
}

@@ -1221,8 +1222,10 @@ virtio_set_modern_bar(struct virtio_base *base,
bool use_notify_pio)

vops = base->vops;

- if (!vops || (base->device_caps & (1UL << VIRTIO_F_VERSION_1)) ==
0)
+ if (!vops || (base->device_caps & (1UL << VIRTIO_F_VERSION_1)) ==
0) {
+ printf("Virtio_set_modern_bar start !\n");
Ditto.

return -1;
+ }

if (use_notify_pio)
rc = virtio_set_modern_pio_bar(base,
@@ -1341,6 +1344,7 @@ virtio_common_cfg_read(struct pci_vdev *dev,
uint64_t offset, int size)
value = base->curq < vops->nvq ?
base->queues[base->curq].msix_idx :
VIRTIO_MSI_NO_VECTOR;
+ printf("%s value: %d\t\n", __func__, value);
Ditto.

break;
case VIRTIO_PCI_COMMON_Q_ENABLE:
value = base->curq < vops->nvq ?
@@ -1387,6 +1391,7 @@ virtio_common_cfg_write(struct pci_vdev *dev,
uint64_t offset, int size,
struct virtio_ops *vops;
const struct config_reg *cr;
const char *name;
+ uint64_t low_features, high_features = 0;

vops = base->vops;
name = vops->name;
@@ -1421,9 +1426,19 @@ virtio_common_cfg_write(struct pci_vdev *dev,
uint64_t offset, int size,
break;
if (base->driver_feature_select < 2) {
value &= 0xffffffff;
+ /*
base->negotiated_caps =
(value << (base->driver_feature_select * 32))
& base->device_caps;
+ */
+ if (base->driver_feature_select == 0) {
+ low_features = base->device_caps & value;
+ base->negotiated_caps |= low_features;
+ } else {
+ high_features = (value << (base-
driver_feature_select * 32)) & base->device_caps;
+ base->negotiated_caps |= high_features;
+ }
+ printf("%s negotiated_caps:%ld\n", __func__, base-
Please separate this logic in another patch, thanks.


negotiated_caps);
if (vops->apply_features)
(*vops->apply_features)(DEV_STRUCT(base),
base->negotiated_caps);
@@ -1433,11 +1448,14 @@ virtio_common_cfg_write(struct pci_vdev *dev,
uint64_t offset, int size,
base->msix_cfg_idx = value;
break;
case VIRTIO_PCI_COMMON_STATUS:
+ printf("dev->name :%s VIRTIO_PCI_COMMON_STATUS!\n",
dev->name);
base->status = value & 0xff;
if (vops->set_status)
(*vops->set_status)(DEV_STRUCT(base), value);
- if ((base->status == 0) && (vops->reset))
+ if ((base->status == 0) && (vops->reset)) {
+ printf("Reset the %s!\n", dev->name);
(*vops->reset)(DEV_STRUCT(base));
+ }
/* TODO: virtio poll mode for modern devices */
break;
case VIRTIO_PCI_COMMON_Q_SELECT:
@@ -1459,6 +1477,7 @@ virtio_common_cfg_write(struct pci_vdev *dev,
uint64_t offset, int size,
goto bad_qindex;
vq = &base->queues[base->curq];
vq->msix_idx = value;
+ printf("%s msix_idx: %d!\n", __func__, vq->msix_idx);
break;
case VIRTIO_PCI_COMMON_Q_ENABLE:
if (base->curq >= vops->nvq)
@@ -1857,6 +1876,8 @@ virtio_pci_write(struct vmctx *ctx, int vcpu, struct
pci_vdev *dev,
return;
}

+ if (!strcmp(dev->name, "vhost-vsock"))
+ printf("virtio_pci_write %d\n", baridx);
if (baridx == base->modern_mmio_bar_idx) {
virtio_pci_modern_mmio_write(ctx, vcpu, dev, baridx,
offset, size, value);
diff --git a/devicemodel/include/vhost.h b/devicemodel/include/vhost.h
index a1e893da1..14fe263bb 100644
--- a/devicemodel/include/vhost.h
+++ b/devicemodel/include/vhost.h
@@ -78,6 +78,27 @@ struct vhost_dev {
bool started;
};

+#define VHOST_VSOCK_RXQ 0
+#define VHOST_VSOCK_TXQ 1
+#define VHOST_VSOCK_CTLQ 2 /* NB: not yet supported */
+
+#define VHOST_VSOCK_MAXQ 3
+
+#define VHOST_VSOCK_QUEUE_SIZE 128
+#define VHOST_F_LOG_ALL 26
+
+#define VHOST_FEATURES \
+ (1ULL << VIRTIO_F_NOTIFY_ON_EMPTY) | (1ULL <<
VIRTIO_RING_F_INDIRECT_DESC) | \
+ (1ULL << VIRTIO_RING_F_EVENT_IDX) | (1ULL << VHOST_F_LOG_ALL) |
\
+ (1ULL << VIRTIO_F_ANY_LAYOUT) | (1ULL << VIRTIO_F_VERSION_1)
+
+struct vhost_vsock {
+ struct vhost_dev vdev;
+ struct vhost_vq vqs[VHOST_VSOCK_MAXQ];
+ int vhost_fd;
+ bool vhost_started;
+};
+
/**
* @brief vhost_dev initialization.
*
@@ -147,4 +168,8 @@ int vhost_net_set_backend(struct vhost_dev *vdev,
int backend_fd);
/**
* @}
*/
+int vhost_vsock_start(struct vhost_vsock *vhvsock);
+int vhost_vsock_guest_cid(struct vhost_vsock *vhsock, uint64_t guest_cid);
+int vhost_vsock_set_running(struct vhost_vsock *vh_sock, int start);
+int vhost_kernel_set_owner(struct vhost_dev *vdev);
#endif
diff --git a/devicemodel/include/virtio.h b/devicemodel/include/virtio.h
index 6581b5cfd..7324e309f 100644
--- a/devicemodel/include/virtio.h
+++ b/devicemodel/include/virtio.h
@@ -193,6 +193,8 @@ enum {
#define VIRTIO_TYPE_SCSI 8
#define VIRTIO_TYPE_9P 9
#define VIRTIO_TYPE_INPUT 18
+#define VIRTIO_TYPE_VSOCK 19
+

/*
* ACRN virtio device types
@@ -219,6 +221,7 @@ enum {
#define VIRTIO_DEV_BLOCK 0x1001
#define VIRTIO_DEV_CONSOLE 0x1003
#define VIRTIO_DEV_RANDOM 0x1005
+#define VIRTIO_VHOST_VSOCK 19

/*
* ACRN virtio device IDs
--
2.25.1


[PATCH v3 4/4] config-tools: remove board and scenario attributes

Conghui Chen
 

Remove board and scenario attributes from scenario XMLs

Signed-off-by: Conghui <conghui.chen@...>
---
misc/config_tools/data/cfl-k700-i7/hybrid_launch_2user_vm.xml | 2 +-
misc/config_tools/data/cfl-k700-i7/hybrid_rt.xml | 2 +-
misc/config_tools/data/cfl-k700-i7/partitioned.xml | 2 +-
misc/config_tools/data/cfl-k700-i7/shared_launch_6user_vm.xml | 2 +-
misc/config_tools/data/generic_board/hybrid_launch_2user_vm.xml | 2 +-
misc/config_tools/data/generic_board/hybrid_rt.xml | 2 +-
misc/config_tools/data/generic_board/partitioned.xml | 2 +-
misc/config_tools/data/generic_board/shared_launch_6user_vm.xml | 2 +-
misc/config_tools/data/nuc11tnbi5/hybrid_launch_2user_vm.xml | 2 +-
misc/config_tools/data/nuc11tnbi5/partitioned.xml | 2 +-
misc/config_tools/data/nuc11tnbi5/shared_launch_6user_vm.xml | 2 +-
misc/config_tools/data/qemu/shared.xml | 2 +-
misc/config_tools/data/tgl-vecow-spc-7100-Corei7/hybrid.xml | 2 +-
.../config_tools/data/tgl-vecow-spc-7100-Corei7/partitioned.xml | 2 +-
.../data/tgl-vecow-spc-7100-Corei7/shared_launch_2user_vm.xml | 2 +-
misc/config_tools/data/whl-ipc-i5/hybrid.xml | 2 +-
.../data/whl-ipc-i5/hybrid_rt_launch_1user_vm_waag.xml | 2 +-
misc/config_tools/data/whl-ipc-i5/partitioned.xml | 2 +-
.../data/whl-ipc-i5/shared_launch_1user_vm_hardrt.xml | 2 +-
.../data/whl-ipc-i5/shared_launch_1user_vm_vxworks.xml | 2 +-
.../data/whl-ipc-i5/shared_launch_1user_vm_waag.xml | 2 +-
misc/config_tools/data/whl-ipc-i5/shared_launch_2user_vm.xml | 2 +-
misc/config_tools/data/whl-ipc-i5/shared_launch_6user_vm.xml | 2 +-
23 files changed, 23 insertions(+), 23 deletions(-)

diff --git a/misc/config_tools/data/cfl-k700-i7/hybrid_launch_2user_vm.xml b/misc/config_tools/data/cfl-k700-i7/hybrid_launch_2user_vm.xml
index 0955d98a1..d215b611e 100644
--- a/misc/config_tools/data/cfl-k700-i7/hybrid_launch_2user_vm.xml
+++ b/misc/config_tools/data/cfl-k700-i7/hybrid_launch_2user_vm.xml
@@ -1,4 +1,4 @@
-<acrn-config board="cfl-k700-i7" scenario="hybrid">
+<acrn-config>
<hv>
<DEBUG_OPTIONS>
<BUILD_TYPE>debug</BUILD_TYPE>
diff --git a/misc/config_tools/data/cfl-k700-i7/hybrid_rt.xml b/misc/config_tools/data/cfl-k700-i7/hybrid_rt.xml
index 1b4fa9d01..268431c61 100644
--- a/misc/config_tools/data/cfl-k700-i7/hybrid_rt.xml
+++ b/misc/config_tools/data/cfl-k700-i7/hybrid_rt.xml
@@ -1,4 +1,4 @@
-<acrn-config board="cfl-k700-i7" scenario="hybrid_rt">
+<acrn-config>
<hv>
<DEBUG_OPTIONS>
<BUILD_TYPE>debug</BUILD_TYPE>
diff --git a/misc/config_tools/data/cfl-k700-i7/partitioned.xml b/misc/config_tools/data/cfl-k700-i7/partitioned.xml
index c738031b3..eb2766bf3 100644
--- a/misc/config_tools/data/cfl-k700-i7/partitioned.xml
+++ b/misc/config_tools/data/cfl-k700-i7/partitioned.xml
@@ -1,4 +1,4 @@
-<acrn-config board="cfl-k700-i7" scenario="partitioned">
+<acrn-config>
<hv>
<DEBUG_OPTIONS>
<BUILD_TYPE>debug</BUILD_TYPE>
diff --git a/misc/config_tools/data/cfl-k700-i7/shared_launch_6user_vm.xml b/misc/config_tools/data/cfl-k700-i7/shared_launch_6user_vm.xml
index ece3b39a5..87c53b30e 100644
--- a/misc/config_tools/data/cfl-k700-i7/shared_launch_6user_vm.xml
+++ b/misc/config_tools/data/cfl-k700-i7/shared_launch_6user_vm.xml
@@ -1,4 +1,4 @@
-<acrn-config board="cfl-k700-i7" scenario="shared">
+<acrn-config>
<hv>
<DEBUG_OPTIONS>
<BUILD_TYPE>debug</BUILD_TYPE>
diff --git a/misc/config_tools/data/generic_board/hybrid_launch_2user_vm.xml b/misc/config_tools/data/generic_board/hybrid_launch_2user_vm.xml
index 1d71948c4..7b7e82b5e 100644
--- a/misc/config_tools/data/generic_board/hybrid_launch_2user_vm.xml
+++ b/misc/config_tools/data/generic_board/hybrid_launch_2user_vm.xml
@@ -1,4 +1,4 @@
-<acrn-config board="generic_board" scenario="hybrid">
+<acrn-config>
<hv>
<DEBUG_OPTIONS>
<BUILD_TYPE>debug</BUILD_TYPE>
diff --git a/misc/config_tools/data/generic_board/hybrid_rt.xml b/misc/config_tools/data/generic_board/hybrid_rt.xml
index 850708091..6d84e991b 100644
--- a/misc/config_tools/data/generic_board/hybrid_rt.xml
+++ b/misc/config_tools/data/generic_board/hybrid_rt.xml
@@ -1,4 +1,4 @@
-<acrn-config board="generic_board" scenario="hybrid_rt">
+<acrn-config>
<hv>
<DEBUG_OPTIONS>
<BUILD_TYPE>debug</BUILD_TYPE>
diff --git a/misc/config_tools/data/generic_board/partitioned.xml b/misc/config_tools/data/generic_board/partitioned.xml
index d81deeb88..4b090358c 100644
--- a/misc/config_tools/data/generic_board/partitioned.xml
+++ b/misc/config_tools/data/generic_board/partitioned.xml
@@ -1,4 +1,4 @@
-<acrn-config board="generic_board" scenario="partitioned">
+<acrn-config>
<hv>
<DEBUG_OPTIONS>
<BUILD_TYPE>debug</BUILD_TYPE>
diff --git a/misc/config_tools/data/generic_board/shared_launch_6user_vm.xml b/misc/config_tools/data/generic_board/shared_launch_6user_vm.xml
index ead9df745..cbf903987 100644
--- a/misc/config_tools/data/generic_board/shared_launch_6user_vm.xml
+++ b/misc/config_tools/data/generic_board/shared_launch_6user_vm.xml
@@ -1,4 +1,4 @@
-<acrn-config board="generic_board" scenario="shared">
+<acrn-config>
<hv>
<DEBUG_OPTIONS>
<BUILD_TYPE>debug</BUILD_TYPE>
diff --git a/misc/config_tools/data/nuc11tnbi5/hybrid_launch_2user_vm.xml b/misc/config_tools/data/nuc11tnbi5/hybrid_launch_2user_vm.xml
index ec6179b6d..7b7e82b5e 100644
--- a/misc/config_tools/data/nuc11tnbi5/hybrid_launch_2user_vm.xml
+++ b/misc/config_tools/data/nuc11tnbi5/hybrid_launch_2user_vm.xml
@@ -1,4 +1,4 @@
-<acrn-config board="nuc11tnbi5" scenario="hybrid">
+<acrn-config>
<hv>
<DEBUG_OPTIONS>
<BUILD_TYPE>debug</BUILD_TYPE>
diff --git a/misc/config_tools/data/nuc11tnbi5/partitioned.xml b/misc/config_tools/data/nuc11tnbi5/partitioned.xml
index ae22f9d66..5a7180768 100644
--- a/misc/config_tools/data/nuc11tnbi5/partitioned.xml
+++ b/misc/config_tools/data/nuc11tnbi5/partitioned.xml
@@ -1,4 +1,4 @@
-<acrn-config board="nuc11tnbi5" scenario="partitioned">
+<acrn-config>
<hv>
<DEBUG_OPTIONS>
<BUILD_TYPE>debug</BUILD_TYPE>
diff --git a/misc/config_tools/data/nuc11tnbi5/shared_launch_6user_vm.xml b/misc/config_tools/data/nuc11tnbi5/shared_launch_6user_vm.xml
index 32ad31b4e..f225b6de3 100644
--- a/misc/config_tools/data/nuc11tnbi5/shared_launch_6user_vm.xml
+++ b/misc/config_tools/data/nuc11tnbi5/shared_launch_6user_vm.xml
@@ -1,4 +1,4 @@
-<acrn-config board="nuc11tnbi5" scenario="shared">
+<acrn-config>
<hv>
<DEBUG_OPTIONS>
<BUILD_TYPE>debug</BUILD_TYPE>
diff --git a/misc/config_tools/data/qemu/shared.xml b/misc/config_tools/data/qemu/shared.xml
index 7b49b1267..f367ee249 100644
--- a/misc/config_tools/data/qemu/shared.xml
+++ b/misc/config_tools/data/qemu/shared.xml
@@ -1,4 +1,4 @@
-<acrn-config board="qemu" scenario="shared">
+<acrn-config>
<hv>
<DEBUG_OPTIONS>
<BUILD_TYPE>debug</BUILD_TYPE>
diff --git a/misc/config_tools/data/tgl-vecow-spc-7100-Corei7/hybrid.xml b/misc/config_tools/data/tgl-vecow-spc-7100-Corei7/hybrid.xml
index 91cc72489..3ae348799 100644
--- a/misc/config_tools/data/tgl-vecow-spc-7100-Corei7/hybrid.xml
+++ b/misc/config_tools/data/tgl-vecow-spc-7100-Corei7/hybrid.xml
@@ -1,4 +1,4 @@
-<acrn-config board="tgl-vecow-spc-7100-Corei7" scenario="hybrid">
+<acrn-config>
<hv>
<DEBUG_OPTIONS>
<BUILD_TYPE>debug</BUILD_TYPE>
diff --git a/misc/config_tools/data/tgl-vecow-spc-7100-Corei7/partitioned.xml b/misc/config_tools/data/tgl-vecow-spc-7100-Corei7/partitioned.xml
index 2c63cd003..021c95bb5 100644
--- a/misc/config_tools/data/tgl-vecow-spc-7100-Corei7/partitioned.xml
+++ b/misc/config_tools/data/tgl-vecow-spc-7100-Corei7/partitioned.xml
@@ -1,4 +1,4 @@
-<acrn-config board="tgl-vecow-spc-7100-Corei7" scenario="partitioned">
+<acrn-config>
<hv>
<DEBUG_OPTIONS>
<BUILD_TYPE>debug</BUILD_TYPE>
diff --git a/misc/config_tools/data/tgl-vecow-spc-7100-Corei7/shared_launch_2user_vm.xml b/misc/config_tools/data/tgl-vecow-spc-7100-Corei7/shared_launch_2user_vm.xml
index ba7da9270..d610c6b21 100644
--- a/misc/config_tools/data/tgl-vecow-spc-7100-Corei7/shared_launch_2user_vm.xml
+++ b/misc/config_tools/data/tgl-vecow-spc-7100-Corei7/shared_launch_2user_vm.xml
@@ -1,4 +1,4 @@
-<acrn-config board="tgl-vecow-spc-7100-Corei7" scenario="shared">
+<acrn-config>
<hv>
<DEBUG_OPTIONS>
<BUILD_TYPE>debug</BUILD_TYPE>
diff --git a/misc/config_tools/data/whl-ipc-i5/hybrid.xml b/misc/config_tools/data/whl-ipc-i5/hybrid.xml
index 0fcb9a46a..6dddf5dea 100644
--- a/misc/config_tools/data/whl-ipc-i5/hybrid.xml
+++ b/misc/config_tools/data/whl-ipc-i5/hybrid.xml
@@ -1,4 +1,4 @@
-<acrn-config board="whl-ipc-i5" scenario="hybrid">
+<acrn-config>
<hv>
<DEBUG_OPTIONS>
<BUILD_TYPE>debug</BUILD_TYPE>
diff --git a/misc/config_tools/data/whl-ipc-i5/hybrid_rt_launch_1user_vm_waag.xml b/misc/config_tools/data/whl-ipc-i5/hybrid_rt_launch_1user_vm_waag.xml
index 52a2d4b94..1c6b2e89f 100644
--- a/misc/config_tools/data/whl-ipc-i5/hybrid_rt_launch_1user_vm_waag.xml
+++ b/misc/config_tools/data/whl-ipc-i5/hybrid_rt_launch_1user_vm_waag.xml
@@ -1,4 +1,4 @@
-<acrn-config board="whl-ipc-i5" scenario="hybrid_rt">
+<acrn-config>
<hv>
<DEBUG_OPTIONS>
<BUILD_TYPE>debug</BUILD_TYPE>
diff --git a/misc/config_tools/data/whl-ipc-i5/partitioned.xml b/misc/config_tools/data/whl-ipc-i5/partitioned.xml
index d94df2d79..a52683a69 100644
--- a/misc/config_tools/data/whl-ipc-i5/partitioned.xml
+++ b/misc/config_tools/data/whl-ipc-i5/partitioned.xml
@@ -1,4 +1,4 @@
-<acrn-config board="whl-ipc-i5" scenario="partitioned">
+<acrn-config>
<hv>
<DEBUG_OPTIONS>
<BUILD_TYPE>debug</BUILD_TYPE>
diff --git a/misc/config_tools/data/whl-ipc-i5/shared_launch_1user_vm_hardrt.xml b/misc/config_tools/data/whl-ipc-i5/shared_launch_1user_vm_hardrt.xml
index b0822735d..c4c82dcac 100644
--- a/misc/config_tools/data/whl-ipc-i5/shared_launch_1user_vm_hardrt.xml
+++ b/misc/config_tools/data/whl-ipc-i5/shared_launch_1user_vm_hardrt.xml
@@ -1,4 +1,4 @@
-<acrn-config board="whl-ipc-i5" scenario="shared">
+<acrn-config>
<hv>
<DEBUG_OPTIONS>
<BUILD_TYPE>debug</BUILD_TYPE>
diff --git a/misc/config_tools/data/whl-ipc-i5/shared_launch_1user_vm_vxworks.xml b/misc/config_tools/data/whl-ipc-i5/shared_launch_1user_vm_vxworks.xml
index f0a5a56f1..e9d509897 100644
--- a/misc/config_tools/data/whl-ipc-i5/shared_launch_1user_vm_vxworks.xml
+++ b/misc/config_tools/data/whl-ipc-i5/shared_launch_1user_vm_vxworks.xml
@@ -1,4 +1,4 @@
-<acrn-config board="whl-ipc-i5" scenario="shared">
+<acrn-config>
<hv>
<DEBUG_OPTIONS>
<BUILD_TYPE>debug</BUILD_TYPE>
diff --git a/misc/config_tools/data/whl-ipc-i5/shared_launch_1user_vm_waag.xml b/misc/config_tools/data/whl-ipc-i5/shared_launch_1user_vm_waag.xml
index b4d5d0fbe..49f9b2103 100644
--- a/misc/config_tools/data/whl-ipc-i5/shared_launch_1user_vm_waag.xml
+++ b/misc/config_tools/data/whl-ipc-i5/shared_launch_1user_vm_waag.xml
@@ -1,4 +1,4 @@
-<acrn-config board="whl-ipc-i5" scenario="shared">
+<acrn-config>
<hv>
<DEBUG_OPTIONS>
<BUILD_TYPE>debug</BUILD_TYPE>
diff --git a/misc/config_tools/data/whl-ipc-i5/shared_launch_2user_vm.xml b/misc/config_tools/data/whl-ipc-i5/shared_launch_2user_vm.xml
index a0b3a6aa9..f0d560310 100644
--- a/misc/config_tools/data/whl-ipc-i5/shared_launch_2user_vm.xml
+++ b/misc/config_tools/data/whl-ipc-i5/shared_launch_2user_vm.xml
@@ -1,4 +1,4 @@
-<acrn-config board="whl-ipc-i5" scenario="shared">
+<acrn-config>
<hv>
<DEBUG_OPTIONS>
<BUILD_TYPE>debug</BUILD_TYPE>
diff --git a/misc/config_tools/data/whl-ipc-i5/shared_launch_6user_vm.xml b/misc/config_tools/data/whl-ipc-i5/shared_launch_6user_vm.xml
index 0bb91fc73..271a77dd5 100644
--- a/misc/config_tools/data/whl-ipc-i5/shared_launch_6user_vm.xml
+++ b/misc/config_tools/data/whl-ipc-i5/shared_launch_6user_vm.xml
@@ -1,4 +1,4 @@
-<acrn-config board="whl-ipc-i5" scenario="shared">
+<acrn-config>
<hv>
<DEBUG_OPTIONS>
<BUILD_TYPE>debug</BUILD_TYPE>
--
2.25.1


Re: [PATCH v2 4/4] config-tools: remove board and scenario

Conghui Chen
 

-----Original Message-----
From: Mao, Junjie <junjie.mao@...>
Sent: Sunday, April 24, 2022 8:45 AM
To: Chen, Conghui <conghui.chen@...>
Cc: acrn-dev@...
Subject: Re: [PATCH v2 4/4] config-tools: remove board and scenario

Conghui <conghui.chen@...> writes:

Remove board and scenario from scenario XMLs

v1->v2: new patch

Signed-off-by: Conghui <conghui.chen@...>
---
misc/config_tools/data/adl-rvp/adl-rvp.xml | 6449 +++++++++++
misc/config_tools/data/adl-rvp/hybrid.xml | 179 +
misc/config_tools/data/adl-rvp/scenaro.xml | 79 +
misc/config_tools/data/adl-rvp/shared.xml | 262 +
.../data/adl-rvp/shared_launch_2user_vm.xml | 92 +
.../data/adl-rvp/shared_launch_6user_vm.xml | 272 +
.../config_tools/data/adl-s-crb/adl-s-crb.xml | 9461 +++++++++++++++++
misc/config_tools/data/adl-s-crb/hybrid.xml | 208 +
.../config_tools/data/adl-s-crb/hybrid_rt.xml | 281 +
.../hybrid_rt_launch_1user_vm_waag.xml | 47 +
.../hybrid_rt_launch_1user_vm_waag_sriov.xml | 47 +
.../data/adl-s-crb/partitioned.xml | 200 +
misc/config_tools/data/adl-s-crb/shared.xml | 358 +
.../data/adl-s-crb/shared_launch_2user_vm.xml | 92 +
.../data/adl-s-crb/shared_launch_6user_vm.xml | 272 +
.../shared_launch_6user_vm_sriov.xml | 272 +
.../cfl-k700-i7/hybrid_launch_2user_vm.xml | 2 +-
.../data/cfl-k700-i7/hybrid_rt.xml | 2 +-
.../data/cfl-k700-i7/partitioned.xml | 2 +-
.../cfl-k700-i7/shared_launch_6user_vm.xml | 2 +-
.../generic_board/hybrid_launch_2user_vm.xml | 2 +-
.../data/generic_board/hybrid_rt.xml | 2 +-
.../data/generic_board/partitioned.xml | 2 +-
.../generic_board/shared_launch_6user_vm.xml | 2 +-
misc/config_tools/data/icx-d-hcc/hybrid.xml | 204 +
.../config_tools/data/icx-d-hcc/hybrid_rt.xml | 251 +
.../hybrid_rt_launch_1user_vm_waag.xml | 47 +
.../icx-d-hcc/hybrid_rt_launch_2user_vm.xml | 92 +
.../config_tools/data/icx-d-hcc/icx-d-hcc.xml | 5701 ++++++++++
misc/config_tools/data/icx-d-hcc/shared.xml | 348 +
.../data/icx-d-hcc/shared_launch_2user_vm.xml | 92 +
.../data/icx-d-hcc/shared_launch_6user_vm.xml | 272 +
.../nuc11tnbi5/hybrid_launch_2user_vm.xml | 2 +-
.../data/nuc11tnbi5/partitioned.xml | 2 +-
.../nuc11tnbi5/shared_launch_6user_vm.xml | 2 +-
misc/config_tools/data/qemu/shared.xml | 2 +-
.../data/tgl-vecow-spc-7100-Corei7/hybrid.xml | 2 +-
.../tgl-vecow-spc-7100-Corei7/partitioned.xml | 2 +-
.../shared_launch_2user_vm.xml | 2 +-
misc/config_tools/data/whl-ipc-i5/hybrid.xml | 2 +-
.../hybrid_rt_launch_1user_vm_waag.xml | 2 +-
.../data/whl-ipc-i5/partitioned.xml | 2 +-
.../shared_launch_1user_vm_hardrt.xml | 2 +-
.../shared_launch_1user_vm_vxworks.xml | 2 +-
.../shared_launch_1user_vm_waag.xml | 2 +-
.../whl-ipc-i5/shared_launch_2user_vm.xml | 2 +-
.../whl-ipc-i5/shared_launch_6user_vm.xml | 2 +-
47 files changed, 25601 insertions(+), 23 deletions(-)
create mode 100644 misc/config_tools/data/adl-rvp/adl-rvp.xml
create mode 100644 misc/config_tools/data/adl-rvp/hybrid.xml
create mode 100644 misc/config_tools/data/adl-rvp/scenaro.xml
create mode 100755 misc/config_tools/data/adl-rvp/shared.xml
create mode 100644 misc/config_tools/data/adl-
rvp/shared_launch_2user_vm.xml
create mode 100644 misc/config_tools/data/adl-
rvp/shared_launch_6user_vm.xml
create mode 100644 misc/config_tools/data/adl-s-crb/adl-s-crb.xml
create mode 100644 misc/config_tools/data/adl-s-crb/hybrid.xml
create mode 100644 misc/config_tools/data/adl-s-crb/hybrid_rt.xml
create mode 100644 misc/config_tools/data/adl-s-
crb/hybrid_rt_launch_1user_vm_waag.xml
create mode 100644 misc/config_tools/data/adl-s-
crb/hybrid_rt_launch_1user_vm_waag_sriov.xml
create mode 100644 misc/config_tools/data/adl-s-crb/partitioned.xml
create mode 100644 misc/config_tools/data/adl-s-crb/shared.xml
create mode 100644 misc/config_tools/data/adl-s-
crb/shared_launch_2user_vm.xml
create mode 100644 misc/config_tools/data/adl-s-
crb/shared_launch_6user_vm.xml
create mode 100644 misc/config_tools/data/adl-s-
crb/shared_launch_6user_vm_sriov.xml
create mode 100644 misc/config_tools/data/icx-d-hcc/hybrid.xml
create mode 100644 misc/config_tools/data/icx-d-hcc/hybrid_rt.xml
create mode 100644 misc/config_tools/data/icx-d-
hcc/hybrid_rt_launch_1user_vm_waag.xml
create mode 100644 misc/config_tools/data/icx-d-
hcc/hybrid_rt_launch_2user_vm.xml
create mode 100644 misc/config_tools/data/icx-d-hcc/icx-d-hcc.xml
create mode 100644 misc/config_tools/data/icx-d-hcc/shared.xml
create mode 100644 misc/config_tools/data/icx-d-
hcc/shared_launch_2user_vm.xml
create mode 100644 misc/config_tools/data/icx-d-
hcc/shared_launch_6user_vm.xml
Why do you need to create those files?
Sorry for the mistake, as I just run 'git add misc/config_tools/data/', so add all the unnecessary files here. Will fix this in next version. Thanks.


Best Regards
Junjie Mao


Re: [PATCH 2/2] hv: vSRIOV: add VF BARs mapping for PF

Li, Fei1
 

On Sat, Apr 23, 2022 at 06:44:44AM +0800, Dong, Eddie wrote:


-----Original Message-----
From: Li, Fei1 <fei1.li@...>
Sent: Friday, April 22, 2022 3:47 AM
To: acrn-dev@...
Cc: Dong, Eddie <eddie.dong@...>; Chen, Jason CJ
<jason.cj.chen@...>
Subject: [PATCH 2/2] hv: vSRIOV: add VF BARs mapping for PF

When enabling SRIOV capability for a PF in Service VM, ACRN Hypervisor
should add VF BARs mapping for PF since PF's firmware would access these
BARs to do initialization for VFs when it's first created.

Signed-off-by: Fei Li <fei1.li@...>
---
hypervisor/dm/vpci/pci_pt.c | 2 +-
hypervisor/dm/vpci/vsriov.c | 12 ++++++++++++
2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/hypervisor/dm/vpci/pci_pt.c b/hypervisor/dm/vpci/pci_pt.c index
4a9568bbc..ec2372b0a 100644
--- a/hypervisor/dm/vpci/pci_pt.c
+++ b/hypervisor/dm/vpci/pci_pt.c
@@ -582,7 +582,7 @@ void init_vdev_pt(struct pci_vdev *vdev, bool
is_pf_vdev)
pci_vdev_write_vcfg(vdev, PCIR_VENDOR, 2U, vid);
pci_vdev_write_vcfg(vdev, PCIR_DEVICE, 2U, did);
} else {
- /* VF is unassinged */
+ /* VF is unassinged: when VF was first created, the
VF's BARs hasn't
+been assigned */
uint32_t bar_idx;

for (bar_idx = 0U; bar_idx < vdev->nr_bars;
bar_idx++) { diff --git a/hypervisor/dm/vpci/vsriov.c
b/hypervisor/dm/vpci/vsriov.c index 9e93f6d9d..940862dde 100644
--- a/hypervisor/dm/vpci/vsriov.c
+++ b/hypervisor/dm/vpci/vsriov.c
@@ -27,6 +27,7 @@
*/

#include <asm/guest/vm.h>
+#include <asm/guest/ept.h>
#include <ptdev.h>
#include <vpci.h>
#include <asm/pci_dev.h>
@@ -134,6 +135,17 @@ static void create_vf(struct pci_vdev *pf_vdev,
union pci_bdf vf_bdf, uint16_t v
pci_vdev_write_vcfg(vf_vdev,
pci_bar_offset(bar_idx), 4U, 0U);
}

+ /* Map VF's BARs when it's first created. */
+ for (bar_idx = 0U; bar_idx < PCI_BAR_COUNT; bar_idx++) {
Can we reuse the loop in above?
yes.

+ vf_vbar = &vf_vdev->vbars[bar_idx];
+
+ if (vf_vbar->base_gpa != 0UL) {
+ struct acrn_vm *vm = vpci2vm(vf_vdev-
vpci);
+ ept_add_mr(vm, (uint64_t *)(vm-
arch_vm.nworld_eptp), vf_vbar->base_hpa,
+ vf_vbar->base_gpa, vf_vbar->size,
EPT_WR | EPT_RD | EPT_UNCACHED);
+ }
+ }
+
if (has_msix_cap(vf_vdev)) {
vdev_pt_map_msix(vf_vdev, false);
We could move this into the loop in above too.
}
--
2.25.1


Re: [PATCH v2 4/4] config-tools: remove board and scenario

Junjie Mao
 

Conghui <conghui.chen@...> writes:

Remove board and scenario from scenario XMLs

v1->v2: new patch

Signed-off-by: Conghui <conghui.chen@...>
---
misc/config_tools/data/adl-rvp/adl-rvp.xml | 6449 +++++++++++
misc/config_tools/data/adl-rvp/hybrid.xml | 179 +
misc/config_tools/data/adl-rvp/scenaro.xml | 79 +
misc/config_tools/data/adl-rvp/shared.xml | 262 +
.../data/adl-rvp/shared_launch_2user_vm.xml | 92 +
.../data/adl-rvp/shared_launch_6user_vm.xml | 272 +
.../config_tools/data/adl-s-crb/adl-s-crb.xml | 9461 +++++++++++++++++
misc/config_tools/data/adl-s-crb/hybrid.xml | 208 +
.../config_tools/data/adl-s-crb/hybrid_rt.xml | 281 +
.../hybrid_rt_launch_1user_vm_waag.xml | 47 +
.../hybrid_rt_launch_1user_vm_waag_sriov.xml | 47 +
.../data/adl-s-crb/partitioned.xml | 200 +
misc/config_tools/data/adl-s-crb/shared.xml | 358 +
.../data/adl-s-crb/shared_launch_2user_vm.xml | 92 +
.../data/adl-s-crb/shared_launch_6user_vm.xml | 272 +
.../shared_launch_6user_vm_sriov.xml | 272 +
.../cfl-k700-i7/hybrid_launch_2user_vm.xml | 2 +-
.../data/cfl-k700-i7/hybrid_rt.xml | 2 +-
.../data/cfl-k700-i7/partitioned.xml | 2 +-
.../cfl-k700-i7/shared_launch_6user_vm.xml | 2 +-
.../generic_board/hybrid_launch_2user_vm.xml | 2 +-
.../data/generic_board/hybrid_rt.xml | 2 +-
.../data/generic_board/partitioned.xml | 2 +-
.../generic_board/shared_launch_6user_vm.xml | 2 +-
misc/config_tools/data/icx-d-hcc/hybrid.xml | 204 +
.../config_tools/data/icx-d-hcc/hybrid_rt.xml | 251 +
.../hybrid_rt_launch_1user_vm_waag.xml | 47 +
.../icx-d-hcc/hybrid_rt_launch_2user_vm.xml | 92 +
.../config_tools/data/icx-d-hcc/icx-d-hcc.xml | 5701 ++++++++++
misc/config_tools/data/icx-d-hcc/shared.xml | 348 +
.../data/icx-d-hcc/shared_launch_2user_vm.xml | 92 +
.../data/icx-d-hcc/shared_launch_6user_vm.xml | 272 +
.../nuc11tnbi5/hybrid_launch_2user_vm.xml | 2 +-
.../data/nuc11tnbi5/partitioned.xml | 2 +-
.../nuc11tnbi5/shared_launch_6user_vm.xml | 2 +-
misc/config_tools/data/qemu/shared.xml | 2 +-
.../data/tgl-vecow-spc-7100-Corei7/hybrid.xml | 2 +-
.../tgl-vecow-spc-7100-Corei7/partitioned.xml | 2 +-
.../shared_launch_2user_vm.xml | 2 +-
misc/config_tools/data/whl-ipc-i5/hybrid.xml | 2 +-
.../hybrid_rt_launch_1user_vm_waag.xml | 2 +-
.../data/whl-ipc-i5/partitioned.xml | 2 +-
.../shared_launch_1user_vm_hardrt.xml | 2 +-
.../shared_launch_1user_vm_vxworks.xml | 2 +-
.../shared_launch_1user_vm_waag.xml | 2 +-
.../whl-ipc-i5/shared_launch_2user_vm.xml | 2 +-
.../whl-ipc-i5/shared_launch_6user_vm.xml | 2 +-
47 files changed, 25601 insertions(+), 23 deletions(-)
create mode 100644 misc/config_tools/data/adl-rvp/adl-rvp.xml
create mode 100644 misc/config_tools/data/adl-rvp/hybrid.xml
create mode 100644 misc/config_tools/data/adl-rvp/scenaro.xml
create mode 100755 misc/config_tools/data/adl-rvp/shared.xml
create mode 100644 misc/config_tools/data/adl-rvp/shared_launch_2user_vm.xml
create mode 100644 misc/config_tools/data/adl-rvp/shared_launch_6user_vm.xml
create mode 100644 misc/config_tools/data/adl-s-crb/adl-s-crb.xml
create mode 100644 misc/config_tools/data/adl-s-crb/hybrid.xml
create mode 100644 misc/config_tools/data/adl-s-crb/hybrid_rt.xml
create mode 100644 misc/config_tools/data/adl-s-crb/hybrid_rt_launch_1user_vm_waag.xml
create mode 100644 misc/config_tools/data/adl-s-crb/hybrid_rt_launch_1user_vm_waag_sriov.xml
create mode 100644 misc/config_tools/data/adl-s-crb/partitioned.xml
create mode 100644 misc/config_tools/data/adl-s-crb/shared.xml
create mode 100644 misc/config_tools/data/adl-s-crb/shared_launch_2user_vm.xml
create mode 100644 misc/config_tools/data/adl-s-crb/shared_launch_6user_vm.xml
create mode 100644 misc/config_tools/data/adl-s-crb/shared_launch_6user_vm_sriov.xml
create mode 100644 misc/config_tools/data/icx-d-hcc/hybrid.xml
create mode 100644 misc/config_tools/data/icx-d-hcc/hybrid_rt.xml
create mode 100644 misc/config_tools/data/icx-d-hcc/hybrid_rt_launch_1user_vm_waag.xml
create mode 100644 misc/config_tools/data/icx-d-hcc/hybrid_rt_launch_2user_vm.xml
create mode 100644 misc/config_tools/data/icx-d-hcc/icx-d-hcc.xml
create mode 100644 misc/config_tools/data/icx-d-hcc/shared.xml
create mode 100644 misc/config_tools/data/icx-d-hcc/shared_launch_2user_vm.xml
create mode 100644 misc/config_tools/data/icx-d-hcc/shared_launch_6user_vm.xml
Why do you need to create those files?

Best Regards
Junjie Mao


[PATCH v2 4/4] config-tools: remove board and scenario

Conghui Chen
 

Remove board and scenario from scenario XMLs

v1->v2: new patch

Signed-off-by: Conghui <conghui.chen@...>
---
misc/config_tools/data/adl-rvp/adl-rvp.xml | 6449 +++++++++++
misc/config_tools/data/adl-rvp/hybrid.xml | 179 +
misc/config_tools/data/adl-rvp/scenaro.xml | 79 +
misc/config_tools/data/adl-rvp/shared.xml | 262 +
.../data/adl-rvp/shared_launch_2user_vm.xml | 92 +
.../data/adl-rvp/shared_launch_6user_vm.xml | 272 +
.../config_tools/data/adl-s-crb/adl-s-crb.xml | 9461 +++++++++++++++++
misc/config_tools/data/adl-s-crb/hybrid.xml | 208 +
.../config_tools/data/adl-s-crb/hybrid_rt.xml | 281 +
.../hybrid_rt_launch_1user_vm_waag.xml | 47 +
.../hybrid_rt_launch_1user_vm_waag_sriov.xml | 47 +
.../data/adl-s-crb/partitioned.xml | 200 +
misc/config_tools/data/adl-s-crb/shared.xml | 358 +
.../data/adl-s-crb/shared_launch_2user_vm.xml | 92 +
.../data/adl-s-crb/shared_launch_6user_vm.xml | 272 +
.../shared_launch_6user_vm_sriov.xml | 272 +
.../cfl-k700-i7/hybrid_launch_2user_vm.xml | 2 +-
.../data/cfl-k700-i7/hybrid_rt.xml | 2 +-
.../data/cfl-k700-i7/partitioned.xml | 2 +-
.../cfl-k700-i7/shared_launch_6user_vm.xml | 2 +-
.../generic_board/hybrid_launch_2user_vm.xml | 2 +-
.../data/generic_board/hybrid_rt.xml | 2 +-
.../data/generic_board/partitioned.xml | 2 +-
.../generic_board/shared_launch_6user_vm.xml | 2 +-
misc/config_tools/data/icx-d-hcc/hybrid.xml | 204 +
.../config_tools/data/icx-d-hcc/hybrid_rt.xml | 251 +
.../hybrid_rt_launch_1user_vm_waag.xml | 47 +
.../icx-d-hcc/hybrid_rt_launch_2user_vm.xml | 92 +
.../config_tools/data/icx-d-hcc/icx-d-hcc.xml | 5701 ++++++++++
misc/config_tools/data/icx-d-hcc/shared.xml | 348 +
.../data/icx-d-hcc/shared_launch_2user_vm.xml | 92 +
.../data/icx-d-hcc/shared_launch_6user_vm.xml | 272 +
.../nuc11tnbi5/hybrid_launch_2user_vm.xml | 2 +-
.../data/nuc11tnbi5/partitioned.xml | 2 +-
.../nuc11tnbi5/shared_launch_6user_vm.xml | 2 +-
misc/config_tools/data/qemu/shared.xml | 2 +-
.../data/tgl-vecow-spc-7100-Corei7/hybrid.xml | 2 +-
.../tgl-vecow-spc-7100-Corei7/partitioned.xml | 2 +-
.../shared_launch_2user_vm.xml | 2 +-
misc/config_tools/data/whl-ipc-i5/hybrid.xml | 2 +-
.../hybrid_rt_launch_1user_vm_waag.xml | 2 +-
.../data/whl-ipc-i5/partitioned.xml | 2 +-
.../shared_launch_1user_vm_hardrt.xml | 2 +-
.../shared_launch_1user_vm_vxworks.xml | 2 +-
.../shared_launch_1user_vm_waag.xml | 2 +-
.../whl-ipc-i5/shared_launch_2user_vm.xml | 2 +-
.../whl-ipc-i5/shared_launch_6user_vm.xml | 2 +-
47 files changed, 25601 insertions(+), 23 deletions(-)
create mode 100644 misc/config_tools/data/adl-rvp/adl-rvp.xml
create mode 100644 misc/config_tools/data/adl-rvp/hybrid.xml
create mode 100644 misc/config_tools/data/adl-rvp/scenaro.xml
create mode 100755 misc/config_tools/data/adl-rvp/shared.xml
create mode 100644 misc/config_tools/data/adl-rvp/shared_launch_2user_vm.xml
create mode 100644 misc/config_tools/data/adl-rvp/shared_launch_6user_vm.xml
create mode 100644 misc/config_tools/data/adl-s-crb/adl-s-crb.xml
create mode 100644 misc/config_tools/data/adl-s-crb/hybrid.xml
create mode 100644 misc/config_tools/data/adl-s-crb/hybrid_rt.xml
create mode 100644 misc/config_tools/data/adl-s-crb/hybrid_rt_launch_1user_vm_waag.xml
create mode 100644 misc/config_tools/data/adl-s-crb/hybrid_rt_launch_1user_vm_waag_sriov.xml
create mode 100644 misc/config_tools/data/adl-s-crb/partitioned.xml
create mode 100644 misc/config_tools/data/adl-s-crb/shared.xml
create mode 100644 misc/config_tools/data/adl-s-crb/shared_launch_2user_vm.xml
create mode 100644 misc/config_tools/data/adl-s-crb/shared_launch_6user_vm.xml
create mode 100644 misc/config_tools/data/adl-s-crb/shared_launch_6user_vm_sriov.xml
create mode 100644 misc/config_tools/data/icx-d-hcc/hybrid.xml
create mode 100644 misc/config_tools/data/icx-d-hcc/hybrid_rt.xml
create mode 100644 misc/config_tools/data/icx-d-hcc/hybrid_rt_launch_1user_vm_waag.xml
create mode 100644 misc/config_tools/data/icx-d-hcc/hybrid_rt_launch_2user_vm.xml
create mode 100644 misc/config_tools/data/icx-d-hcc/icx-d-hcc.xml
create mode 100644 misc/config_tools/data/icx-d-hcc/shared.xml
create mode 100644 misc/config_tools/data/icx-d-hcc/shared_launch_2user_vm.xml
create mode 100644 misc/config_tools/data/icx-d-hcc/shared_launch_6user_vm.xml

diff --git a/misc/config_tools/data/adl-rvp/adl-rvp.xml b/misc/config_tools/data/adl-rvp/adl-rvp.xml
new file mode 100644
index 000000000..d5bb4bcad
--- /dev/null
+++ b/misc/config_tools/data/adl-rvp/adl-rvp.xml
@@ -0,0 +1,6449 @@
+<acrn-config board="adl-rvp">
+ <BIOS_INFO>
+ BIOS Information
+ Vendor: Intel Corporation
+ Version: ADLPFWI1.R00.2217.A00.2105261201
+ Release Date: 05/26/2021
+ </BIOS_INFO>
+ <BASE_BOARD_INFO>
+ Base Board Information
+ Manufacturer: Intel Corporation
+ Product Name: AlderLake-P LP4x RVP
+ Version: 1
+ </BASE_BOARD_INFO>
+ <PCI_DEVICE>
+ 00:00.0 Host bridge: Intel Corporation Device 4601 (rev 03)
+ 00:02.0 VGA compatible controller: Intel Corporation Device 46a8 (rev 04)
+ Region 0: Memory at 607c000000 (64-bit, non-prefetchable) [size=16M]
+ Region 2: Memory at 4000000000 (64-bit, prefetchable) [size=256M]
+ Region 0: Memory at 0000004010000000 (64-bit, non-prefetchable)
+ Region 2: Memory at 0000004020000000 (64-bit, prefetchable)
+ 00:04.0 Signal processing controller: Intel Corporation Alder Lake Innovation Platform Framework Processor Participant (rev 03)
+ Region 0: Memory at 607d180000 (64-bit, non-prefetchable) [size=128K]
+ 00:06.0 PCI bridge: Intel Corporation 12th Gen Core Processor PCI Express x4 Controller #0 (rev 03)
+ 00:07.0 PCI bridge: Intel Corporation Alder Lake-P Thunderbolt 4 PCI Express Root Port #0 (rev 03)
+ 00:07.1 PCI bridge: Intel Corporation Alder Lake-P Thunderbolt 4 PCI Express Root Port #1 (rev 03)
+ 00:07.2 PCI bridge: Intel Corporation Alder Lake-P Thunderbolt 4 PCI Express Root Port #2 (rev 03)
+ 00:07.3 PCI bridge: Intel Corporation Alder Lake-P Thunderbolt 4 PCI Express Root Port #3 (rev 03)
+ 00:08.0 System peripheral: Intel Corporation 12th Gen Core Processor Gaussian &amp; Neural Accelerator (rev 03)
+ Region 0: Memory at 607d1e4000 (64-bit, non-prefetchable) [disabled] [size=4K]
+ 00:0a.0 Signal processing controller: Intel Corporation Platform Monitoring Technology (rev 01)
+ Region 0: Memory at 607d1c8000 (64-bit, non-prefetchable) [size=32K]
+ 00:0d.0 USB controller: Intel Corporation Alder Lake-P Thunderbolt 4 USB Controller (rev 03)
+ Region 0: Memory at 607d1b0000 (64-bit, non-prefetchable) [size=64K]
+ 00:0d.2 USB controller: Intel Corporation Alder Lake-P Thunderbolt 4 NHI #0 (rev 03)
+ Region 0: Memory at 607d140000 (64-bit, non-prefetchable) [size=256K]
+ Region 2: Memory at 607d1e3000 (64-bit, non-prefetchable) [size=4K]
+ 00:0d.3 USB controller: Intel Corporation Alder Lake-P Thunderbolt 4 NHI #1 (rev 03)
+ Region 0: Memory at 607d100000 (64-bit, non-prefetchable) [size=256K]
+ Region 2: Memory at 607d1e2000 (64-bit, non-prefetchable) [size=4K]
+ 00:10.0 Serial bus controller: Intel Corporation Device 51d8
+ Region 0: Memory at 4017000000 (64-bit, non-prefetchable) [disabled] [size=4K]
+ 00:10.6 Digitizer Pen: Intel Corporation Device 51d0
+ Region 0: Memory at 607d1c0000 (64-bit, non-prefetchable) [disabled] [size=32K]
+ 00:14.0 USB controller: Intel Corporation Alder Lake PCH USB 3.2 xHCI Host Controller
+ Region 0: Memory at 607d1a0000 (64-bit, non-prefetchable) [size=64K]
+ 00:14.2 RAM memory: Intel Corporation Alder Lake PCH Shared SRAM
+ Region 0: Memory at 607d1d4000 (64-bit, non-prefetchable) [disabled] [size=16K]
+ Region 2: Memory at 607d1e0000 (64-bit, non-prefetchable) [disabled] [size=4K]
+ 00:15.0 Serial bus controller: Intel Corporation Alder Lake PCH Serial IO I2C Controller #0
+ Region 0: Memory at 4017001000 (64-bit, non-prefetchable) [virtual] [size=4K]
+ 00:15.1 Serial bus controller: Intel Corporation Alder Lake PCH Serial IO I2C Controller #1
+ Region 0: Memory at 4017002000 (64-bit, non-prefetchable) [virtual] [size=4K]
+ 00:16.0 Communication controller: Intel Corporation Alder Lake PCH HECI Controller
+ Region 0: Memory at 607d1dd000 (64-bit, non-prefetchable) [size=4K]
+ 00:16.3 Serial controller: Intel Corporation Device 51e3
+ Region 1: Memory at 86321000 (32-bit, non-prefetchable) [size=4K]
+ 00:19.0 Serial bus controller: Intel Corporation Alder Lake-P Serial IO I2C Controller #0
+ Region 0: Memory at 4017003000 (64-bit, non-prefetchable) [size=4K]
+ 00:19.1 Serial bus controller: Intel Corporation Alder Lake-P Serial IO I2C Controller #1
+ Region 0: Memory at 4017004000 (64-bit, non-prefetchable) [virtual] [size=4K]
+ 00:1d.0 PCI bridge: Intel Corporation Device 51b0
+ 00:1e.0 Communication controller: Intel Corporation Alder Lake PCH UART #0
+ Region 0: Memory at 4017005000 (64-bit, non-prefetchable) [virtual] [size=4K]
+ 00:1e.3 Serial bus controller: Intel Corporation Device 51ab
+ Region 0: Memory at 4017006000 (64-bit, non-prefetchable) [virtual] [size=4K]
+ 00:1f.0 ISA bridge: Intel Corporation Alder Lake PCH eSPI Controller
+ 00:1f.3 Multimedia audio controller: Intel Corporation Alder Lake PCH-P High Definition Audio Controller
+ Region 0: Memory at 607d1d0000 (64-bit, non-prefetchable) [size=16K]
+ Region 4: Memory at 607d000000 (64-bit, non-prefetchable) [size=1M]
+ 00:1f.4 SMBus: Intel Corporation Alder Lake PCH-P SMBus Host Controller
+ Region 0: Memory at 607d1d8000 (64-bit, non-prefetchable) [size=256]
+ 00:1f.5 Serial bus controller: Intel Corporation Alder Lake-P PCH SPI Controller
+ Region 0: Memory at 4f800000 (32-bit, non-prefetchable) [size=4K]
+ 00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (16) I219-LM
+ Region 0: Memory at 86300000 (32-bit, non-prefetchable) [size=128K]
+ 01:00.0 Non-Volatile memory controller: Silicon Motion, Inc. SM2263EN/SM2263XT SSD Controller (rev 03)
+ Region 0: Memory at 86200000 (64-bit, non-prefetchable) [size=16K]
+ </PCI_DEVICE>
+ <PCI_VID_PID>
+ 00:00.0 0600: 8086:4601 (rev 03)
+ 00:02.0 0300: 8086:46a8 (rev 04)
+ 00:04.0 1180: 8086:461d (rev 03)
+ 00:06.0 0604: 8086:464d (rev 03)
+ 00:07.0 0604: 8086:466e (rev 03)
+ 00:07.1 0604: 8086:463f (rev 03)
+ 00:07.2 0604: 8086:462f (rev 03)
+ 00:07.3 0604: 8086:461f (rev 03)
+ 00:08.0 0880: 8086:464f (rev 03)
+ 00:0a.0 1180: 8086:467d (rev 01)
+ 00:0d.0 0c03: 8086:461e (rev 03)
+ 00:0d.2 0c03: 8086:463e (rev 03)
+ 00:0d.3 0c03: 8086:466d (rev 03)
+ 00:10.0 0c80: 8086:51d8
+ 00:10.6 0901: 8086:51d0
+ 00:14.0 0c03: 8086:51ed
+ 00:14.2 0500: 8086:51ef
+ 00:15.0 0c80: 8086:51e8
+ 00:15.1 0c80: 8086:51e9
+ 00:16.0 0780: 8086:51e0
+ 00:16.3 0700: 8086:51e3
+ 00:19.0 0c80: 8086:51c5
+ 00:19.1 0c80: 8086:51c6
+ 00:1d.0 0604: 8086:51b0
+ 00:1e.0 0780: 8086:51a8
+ 00:1e.3 0c80: 8086:51ab
+ 00:1f.0 0601: 8086:5182
+ 00:1f.3 0401: 8086:51c8
+ 00:1f.4 0c05: 8086:51a3
+ 00:1f.5 0c80: 8086:51a4
+ 00:1f.6 0200: 8086:1a1e
+ 01:00.0 0108: 126f:2263 (rev 03)
+ </PCI_VID_PID>
+ <WAKE_VECTOR_INFO>
+ #define WAKE_VECTOR_32 0x43A6600CUL
+ #define WAKE_VECTOR_64 0x43A66018UL
+ </WAKE_VECTOR_INFO>
+ <RESET_REGISTER_INFO>
+ #define RESET_REGISTER_ADDRESS 0xCF9UL
+ #define RESET_REGISTER_SPACE_ID SPACE_SYSTEM_IO
+ #define RESET_REGISTER_VALUE 0x6U
+ </RESET_REGISTER_INFO>
+ <PM_INFO>
+ #define PM1A_EVT_SPACE_ID SPACE_SYSTEM_IO
+ #define PM1A_EVT_BIT_WIDTH 0x20U
+ #define PM1A_EVT_BIT_OFFSET 0x0U
+ #define PM1A_EVT_ADDRESS 0x1800UL
+ #define PM1A_EVT_ACCESS_SIZE 0x2U
+ #define PM1B_EVT_SPACE_ID SPACE_SYSTEM_IO
+ #define PM1B_EVT_BIT_WIDTH 0x0U
+ #define PM1B_EVT_BIT_OFFSET 0x0U
+ #define PM1B_EVT_ADDRESS 0x0UL
+ #define PM1B_EVT_ACCESS_SIZE 0x2U
+ #define PM1A_CNT_SPACE_ID SPACE_SYSTEM_IO
+ #define PM1A_CNT_BIT_WIDTH 0x10U
+ #define PM1A_CNT_BIT_OFFSET 0x0U
+ #define PM1A_CNT_ADDRESS 0x1804UL
+ #define PM1A_CNT_ACCESS_SIZE 0x2U
+ #define PM1B_CNT_SPACE_ID SPACE_SYSTEM_IO
+ #define PM1B_CNT_BIT_WIDTH 0x0U
+ #define PM1B_CNT_BIT_OFFSET 0x0U
+ #define PM1B_CNT_ADDRESS 0x0UL
+ #define PM1B_CNT_ACCESS_SIZE 0x2U
+ </PM_INFO>
+ <S3_INFO>
+ #define S3_PKG_VAL_PM1A 0x5U
+ #define S3_PKG_VAL_PM1B 0U
+ #define S3_PKG_RESERVED 0x0U
+ </S3_INFO>
+ <S5_INFO>
+ #define S5_PKG_VAL_PM1A 0x7U
+ #define S5_PKG_VAL_PM1B 0U
+ #define S5_PKG_RESERVED 0x0U
+ </S5_INFO>
+ <DRHD_INFO>
+ #define DRHD_COUNT 2U
+
+ #define DRHD0_DEV_CNT 0x1U
+ #define DRHD0_SEGMENT 0x0U
+ #define DRHD0_FLAGS 0x0U
+ #define DRHD0_REG_BASE 0xFED90000UL
+ #define DRHD0_IGNORE true
+ #define DRHD0_DEVSCOPE0_TYPE 0x1U
+ #define DRHD0_DEVSCOPE0_ID 0x0U
+ #define DRHD0_DEVSCOPE0_BUS 0x0U
+ #define DRHD0_DEVSCOPE0_PATH 0x10U
+
+ #define DRHD1_DEV_CNT 0x2U
+ #define DRHD1_SEGMENT 0x0U
+ #define DRHD1_FLAGS 0x1U
+ #define DRHD1_REG_BASE 0xFED91000UL
+ #define DRHD1_IGNORE false
+ #define DRHD1_DEVSCOPE0_TYPE 0x3U
+ #define DRHD1_DEVSCOPE0_ID 0x2U
+ #define DRHD1_DEVSCOPE0_BUS 0x0U
+ #define DRHD1_DEVSCOPE0_PATH 0xf7U
+ #define DRHD1_DEVSCOPE1_TYPE 0x4U
+ #define DRHD1_DEVSCOPE1_ID 0x0U
+ #define DRHD1_DEVSCOPE1_BUS 0x0U
+ #define DRHD1_DEVSCOPE1_PATH 0xf6U
+
+ </DRHD_INFO>
+ <CPU_BRAND>
+ "Genuine Intel(R) 0000"
+ </CPU_BRAND>
+ <CX_INFO>
+ {{SPACE_FFixedHW, 0x00U, 0x00U, 0x00U, 0x00UL}, 0x01U, 0x01U, 0x00U}, /* C1 */
+ {{SPACE_SYSTEM_IO, 0x08U, 0x00U, 0x00U, 0x1815UL}, 0x02U, 0x7FU, 0x00U}, /* C2 */
+ {{SPACE_SYSTEM_IO, 0x08U, 0x00U, 0x00U, 0x1819UL}, 0x03U, 0x418U, 0x00U}, /* C3 */
+ </CX_INFO>
+ <PX_INFO>
+ {0x3E9UL, 0x00UL, 0x0AUL, 0x0AUL, 0x002A00UL, 0x002A00UL}, /* P0 */
+ {0x3E8UL, 0x00UL, 0x0AUL, 0x0AUL, 0x000A00UL, 0x000A00UL}, /* P1 */
+ {0x384UL, 0x00UL, 0x0AUL, 0x0AUL, 0x000900UL, 0x000900UL}, /* P2 */
+ {0x320UL, 0x00UL, 0x0AUL, 0x0AUL, 0x000800UL, 0x000800UL}, /* P3 */
+ {0x2BCUL, 0x00UL, 0x0AUL, 0x0AUL, 0x000700UL, 0x000700UL}, /* P4 */
+ {0x258UL, 0x00UL, 0x0AUL, 0x0AUL, 0x000600UL, 0x000600UL}, /* P5 */
+ {0x1F4UL, 0x00UL, 0x0AUL, 0x0AUL, 0x000500UL, 0x000500UL}, /* P6 */
+ {0x190UL, 0x00UL, 0x0AUL, 0x0AUL, 0x000400UL, 0x000400UL}, /* P7 */
+ </PX_INFO>
+ <MMCFG_BASE_INFO>
+ /* PCI mmcfg base of MCFG */
+ #define DEFAULT_PCI_MMCFG_BASE 0xc0000000UL
+ </MMCFG_BASE_INFO>
+ <TPM_INFO>
+ TPM2
+ </TPM_INFO>
+ <CLOS_INFO>
+ rdt resources supported: L2
+ rdt resource clos max: 16
+ rdt resource mask max: '0xffff'
+ </CLOS_INFO>
+ <IOMEM_INFO>
+ 00000000-00000fff : Reserved
+ 00001000-0009efff : System RAM
+ 0009f000-000fffff : Reserved
+ 000a0000-000bffff : PCI Bus 0000:00
+ 000f0000-000fffff : System ROM
+ 00100000-3ccd6fff : System RAM
+ 3ccd7000-3ccd7fff : Reserved
+ 3ccd8000-3cfb7fff : System RAM
+ 3cfb8000-3cfb8fff : Reserved
+ 3cfb9000-4060dfff : System RAM
+ 4060e000-43a26fff : Reserved
+ 43a27000-43ae4fff : ACPI Non-volatile Storage
+ 43ae5000-43bfefff : ACPI Tables
+ 43bff000-43bfffff : System RAM
+ 43c00000-47ffffff : Reserved
+ 49e00000-4f7fffff : Reserved
+ 4f800000-bfffffff : PCI Bus 0000:00
+ 4f800000-4f800fff : 0000:00:1f.5
+ 50000000-5c1fffff : PCI Bus 0000:80
+ 5e000000-6a1fffff : PCI Bus 0000:56
+ 6c000000-781fffff : PCI Bus 0000:2c
+ 7a000000-861fffff : PCI Bus 0000:02
+ 86200000-862fffff : PCI Bus 0000:01
+ 86200000-86203fff : 0000:01:00.0
+ 86200000-86203fff : nvme
+ 86300000-8631ffff : 0000:00:1f.6
+ 86300000-8631ffff : e1000e
+ 86321000-86321fff : 0000:00:16.3
+ c0000000-cfffffff : PCI MMCONFIG 0000 [bus 00-ff]
+ c0000000-cfffffff : Reserved
+ fd690000-fd69ffff : INTC1055:00
+ fd690000-fd69ffff : INTC1055:00 INTC1055:00
+ fd6a0000-fd6affff : INTC1055:00
+ fd6a0000-fd6affff : INTC1055:00 INTC1055:00
+ fd6d0000-fd6dffff : INTC1055:00
+ fd6d0000-fd6dffff : INTC1055:00 INTC1055:00
+ fd6e0000-fd6effff : INTC1055:00
+ fd6e0000-fd6effff : INTC1055:00 INTC1055:00
+ fec00000-fec003ff : IOAPIC 0
+ fed00000-fed003ff : HPET 0
+ fed00000-fed003ff : PNP0103:00
+ fed20000-fed7ffff : Reserved
+ fed40000-fed44fff : INTC6001:00
+ fed40000-fed44fff : INTC6001:00
+ fed90000-fed90fff : dmar0
+ fed91000-fed91fff : dmar1
+ feda0000-feda0fff : pnp 00:05
+ feda1000-feda1fff : pnp 00:05
+ fedc0000-fedc7fff : pnp 00:05
+ fee00000-feefffff : pnp 00:05
+ fee00000-fee00fff : Local APIC
+ ff000000-ffffffff : Reserved
+ 100000000-4b07fffff : System RAM
+ 293a00000-294a02686 : Kernel code
+ 294c00000-29563efff : Kernel rodata
+ 295800000-295b6e13f : Kernel data
+ 295e69000-2963fffff : Kernel bss
+ 4b0800000-4b3ffffff : RAM buffer
+ 4000000000-7fffffffff : PCI Bus 0000:00
+ 4000000000-400fffffff : 0000:00:02.0
+ 4010000000-4016ffffff : 0000:00:02.0
+ 4017000000-4017000fff : 0000:00:10.0
+ 4017001000-4017001fff : 0000:00:15.0
+ 4017001000-40170011ff : lpss_dev
+ 4017001000-40170011ff : i2c_designware.0 lpss_dev
+ 4017001200-40170012ff : lpss_priv
+ 4017001800-4017001fff : idma64.0
+ 4017001800-4017001fff : idma64.0 idma64.0
+ 4017002000-4017002fff : 0000:00:15.1
+ 4017002000-40170021ff : lpss_dev
+ 4017002000-40170021ff : i2c_designware.1 lpss_dev
+ 4017002200-40170022ff : lpss_priv
+ 4017002800-4017002fff : idma64.1
+ 4017002800-4017002fff : idma64.1 idma64.1
+ 4017003000-4017003fff : 0000:00:19.0
+ 4017003000-40170031ff : lpss_dev
+ 4017003000-40170031ff : i2c_designware.2 lpss_dev
+ 4017003200-40170032ff : lpss_priv
+ 4017003800-4017003fff : idma64.2
+ 4017003800-4017003fff : idma64.2 idma64.2
+ 4017004000-4017004fff : 0000:00:19.1
+ 4017004000-40170041ff : lpss_dev
+ 4017004000-40170041ff : i2c_designware.3 lpss_dev
+ 4017004200-40170042ff : lpss_priv
+ 4017004800-4017004fff : idma64.3
+ 4017004800-4017004fff : idma64.3 idma64.3
+ 4017005000-4017005fff : 0000:00:1e.0
+ 4017005000-40170051ff : lpss_dev
+ 4017005000-401700501f : serial
+ 4017005200-40170052ff : lpss_priv
+ 4017005800-4017005fff : idma64.4
+ 4017005800-4017005fff : idma64.4 idma64.4
+ 4017006000-4017006fff : 0000:00:1e.3
+ 4017006000-40170061ff : lpss_dev
+ 4017006000-40170061ff : pxa2xx-spi.5 lpss_dev
+ 4017006200-40170062ff : lpss_priv
+ 4017006800-4017006fff : idma64.5
+ 4017006800-4017006fff : idma64.5 idma64.5
+ 4020000000-40ffffffff : 0000:00:02.0
+ 6000000000-601bffffff : PCI Bus 0000:02
+ 6020000000-603bffffff : PCI Bus 0000:2c
+ 6040000000-605bffffff : PCI Bus 0000:56
+ 6060000000-607bffffff : PCI Bus 0000:80
+ 607c000000-607cffffff : 0000:00:02.0
+ 607d000000-607d0fffff : 0000:00:1f.3
+ 607d000000-607d0fffff : Audio DSP
+ 607d100000-607d13ffff : 0000:00:0d.3
+ 607d140000-607d17ffff : 0000:00:0d.2
+ 607d180000-607d19ffff : 0000:00:04.0
+ 607d180000-607d19ffff : proc_thermal
+ 607d1a0000-607d1affff : 0000:00:14.0
+ 607d1a0000-607d1affff : xhci-hcd
+ 607d1b0000-607d1bffff : 0000:00:0d.0
+ 607d1b0000-607d1bffff : xhci-hcd
+ 607d1c0000-607d1c7fff : 0000:00:10.6
+ 607d1c8000-607d1cffff : 0000:00:0a.0
+ 607d1ce4d8-607d1ce4e7 : pmt_telemetry.1.auto
+ 607d1ce4e8-607d1ce4f7 : pmt_telemetry.1.auto
+ 607d1ce4f8-607d1ce507 : pmt_telemetry.1.auto
+ 607d1ce508-607d1ce517 : pmt_telemetry.1.auto
+ 607d1d0000-607d1d3fff : 0000:00:1f.3
+ 607d1d0000-607d1d3fff : Audio DSP
+ 607d1d4000-607d1d7fff : 0000:00:14.2
+ 607d1d8000-607d1d80ff : 0000:00:1f.4
+ 607d1dd000-607d1ddfff : 0000:00:16.0
+ 607d1dd000-607d1ddfff : mei_me
+ 607d1e0000-607d1e0fff : 0000:00:14.2
+ 607d1e2000-607d1e2fff : 0000:00:0d.3
+ 607d1e3000-607d1e3fff : 0000:00:0d.2
+ 607d1e4000-607d1e4fff : 0000:00:08.0
+ </IOMEM_INFO>
+ <BLOCK_DEVICE_INFO>
+ /dev/nvme0n1p2: TYPE="ext4"
+ /dev/sda3: TYPE="ext4"
+ </BLOCK_DEVICE_INFO>
+ <TTYS_INFO>
+ seri:/dev/ttyS0 type:portio base:0x3F8 irq:4
+ seri:/dev/ttyS4 type:portio base:0x3060 irq:19
+ seri:/dev/ttyS5 type:mmio base:0x4017005000 irq:16 bdf:"00:1e.0"
+ </TTYS_INFO>
+ <AVAILABLE_IRQ_INFO>
+ 3, 5, 6, 7, 10, 11, 12, 13, 15
+ </AVAILABLE_IRQ_INFO>
+ <TOTAL_MEM_INFO>
+ 16138256 kB
+ </TOTAL_MEM_INFO>
+ <CPU_PROCESSOR_INFO>
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
+ </CPU_PROCESSOR_INFO>
+ <MAX_MSIX_TABLE_NUM>
+ 16
+ </MAX_MSIX_TABLE_NUM>
+ <processors>
+ <model description="Genuine Intel(R) 0000">
+ <family_id>0x6</family_id>
+ <model_id>0x9a</model_id>
+ <core_type>Core</core_type>
+ <native_model_id>0x1</native_model_id>
+ <capability id="sse3"/>
+ <capability id="pclmulqdq"/>
+ <capability id="dtes64"/>
+ <capability id="monitor"/>
+ <capability id="ds_cpl"/>
+ <capability id="vmx"/>
+ <capability id="smx"/>
+ <capability id="est"/>
+ <capability id="tm2"/>
+ <capability id="ssse3"/>
+ <capability id="sdbg"/>
+ <capability id="fma"/>
+ <capability id="cmpxchg16b"/>
+ <capability id="xtpr"/>
+ <capability id="pdcm"/>
+ <capability id="pcid"/>
+ <capability id="sse4_1"/>
+ <capability id="sse4_2"/>
+ <capability id="x2apic"/>
+ <capability id="movbe"/>
+ <capability id="popcnt"/>
+ <capability id="tsc_deadline"/>
+ <capability id="aes"/>
+ <capability id="xsave"/>
+ <capability id="avx"/>
+ <capability id="f16c"/>
+ <capability id="rdrand"/>
+ <capability id="fpu"/>
+ <capability id="vme"/>
+ <capability id="de"/>
+ <capability id="pse"/>
+ <capability id="tsc"/>
+ <capability id="msr"/>
+ <capability id="pae"/>
+ <capability id="mce"/>
+ <capability id="cx8"/>
+ <capability id="apic"/>
+ <capability id="sep"/>
+ <capability id="mtrr"/>
+ <capability id="pge"/>
+ <capability id="mca"/>
+ <capability id="cmov"/>
+ <capability id="pat"/>
+ <capability id="pse36"/>
+ <capability id="clfsh"/>
+ <capability id="ds"/>
+ <capability id="acpi"/>
+ <capability id="mmx"/>
+ <capability id="fxsr"/>
+ <capability id="sse"/>
+ <capability id="sse2"/>
+ <capability id="ss"/>
+ <capability id="htt"/>
+ <capability id="tm"/>
+ <capability id="pbe"/>
+ <capability id="fsgsbase"/>
+ <capability id="ia32_tsc_adjust_msr"/>
+ <capability id="bmi1"/>
+ <capability id="avx2"/>
+ <capability id="fdp_excptn_only"/>
+ <capability id="smep"/>
+ <capability id="bmi2"/>
+ <capability id="erms"/>
+ <capability id="invpcid"/>
+ <capability id="deprecate_fpu"/>
+ <capability id="rdt_a"/>
+ <capability id="rdseed"/>
+ <capability id="adx"/>
+ <capability id="smap"/>
+ <capability id="clflushopt"/>
+ <capability id="clwb"/>
+ <capability id="intel_pt"/>
+ <capability id="sha"/>
+ <capability id="umip"/>
+ <capability id="pku"/>
+ <capability id="waitpkg"/>
+ <capability id="cet_ss"/>
+ <capability id="gfni"/>
+ <capability id="vaes"/>
+ <capability id="vpclmulqdq"/>
+ <capability id="tme_en"/>
+ <capability id="rdpid"/>
+ <capability id="kl"/>
+ <capability id="cldemote"/>
+ <capability id="movdiri"/>
+ <capability id="movdiri64b"/>
+ <capability id="pks"/>
+ <capability id="fast_short_rep_mov"/>
+ <capability id="md_clear"/>
+ <capability id="hybrid"/>
+ <capability id="pconfig"/>
+ <capability id="cet_ibt"/>
+ <capability id="ibrs_ibpb"/>
+ <capability id="stibp"/>
+ <capability id="l1d_flush"/>
+ <capability id="ia32_arch_capabilities"/>
+ <capability id="ia32_core_capabilities"/>
+ <capability id="ssbd"/>
+ <capability id="lahf_sahf_64"/>
+ <capability id="lzcnt"/>
+ <capability id="prefetchw"/>
+ <capability id="syscall_sysret_64"/>
+ <capability id="execute_disable"/>
+ <capability id="gbyte_pages"/>
+ <capability id="rdtscp_ia32_tsc_aux"/>
+ <capability id="intel_64"/>
+ <capability id="invariant_tsc"/>
+ <attribute id="physical_address_bits">46</attribute>
+ <attribute id="linear_address_bits">48</attribute>
+ </model>
+ <model description="Genuine Intel(R) 0000">
+ <family_id>0x6</family_id>
+ <model_id>0x9a</model_id>
+ <core_type>Atom</core_type>
+ <native_model_id>0x1</native_model_id>
+ <capability id="sse3"/>
+ <capability id="pclmulqdq"/>
+ <capability id="dtes64"/>
+ <capability id="monitor"/>
+ <capability id="ds_cpl"/>
+ <capability id="vmx"/>
+ <capability id="smx"/>
+ <capability id="est"/>
+ <capability id="tm2"/>
+ <capability id="ssse3"/>
+ <capability id="sdbg"/>
+ <capability id="fma"/>
+ <capability id="cmpxchg16b"/>
+ <capability id="xtpr"/>
+ <capability id="pdcm"/>
+ <capability id="pcid"/>
+ <capability id="sse4_1"/>
+ <capability id="sse4_2"/>
+ <capability id="x2apic"/>
+ <capability id="movbe"/>
+ <capability id="popcnt"/>
+ <capability id="tsc_deadline"/>
+ <capability id="aes"/>
+ <capability id="xsave"/>
+ <capability id="avx"/>
+ <capability id="f16c"/>
+ <capability id="rdrand"/>
+ <capability id="fpu"/>
+ <capability id="vme"/>
+ <capability id="de"/>
+ <capability id="pse"/>
+ <capability id="tsc"/>
+ <capability id="msr"/>
+ <capability id="pae"/>
+ <capability id="mce"/>
+ <capability id="cx8"/>
+ <capability id="apic"/>
+ <capability id="sep"/>
+ <capability id="mtrr"/>
+ <capability id="pge"/>
+ <capability id="mca"/>
+ <capability id="cmov"/>
+ <capability id="pat"/>
+ <capability id="pse36"/>
+ <capability id="clfsh"/>
+ <capability id="ds"/>
+ <capability id="acpi"/>
+ <capability id="mmx"/>
+ <capability id="fxsr"/>
+ <capability id="sse"/>
+ <capability id="sse2"/>
+ <capability id="ss"/>
+ <capability id="htt"/>
+ <capability id="tm"/>
+ <capability id="pbe"/>
+ <capability id="fsgsbase"/>
+ <capability id="ia32_tsc_adjust_msr"/>
+ <capability id="bmi1"/>
+ <capability id="avx2"/>
+ <capability id="fdp_excptn_only"/>
+ <capability id="smep"/>
+ <capability id="bmi2"/>
+ <capability id="erms"/>
+ <capability id="invpcid"/>
+ <capability id="deprecate_fpu"/>
+ <capability id="rdt_a"/>
+ <capability id="rdseed"/>
+ <capability id="adx"/>
+ <capability id="smap"/>
+ <capability id="clflushopt"/>
+ <capability id="clwb"/>
+ <capability id="intel_pt"/>
+ <capability id="sha"/>
+ <capability id="umip"/>
+ <capability id="pku"/>
+ <capability id="waitpkg"/>
+ <capability id="cet_ss"/>
+ <capability id="gfni"/>
+ <capability id="vaes"/>
+ <capability id="vpclmulqdq"/>
+ <capability id="tme_en"/>
+ <capability id="rdpid"/>
+ <capability id="kl"/>
+ <capability id="cldemote"/>
+ <capability id="movdiri"/>
+ <capability id="movdiri64b"/>
+ <capability id="pks"/>
+ <capability id="fast_short_rep_mov"/>
+ <capability id="md_clear"/>
+ <capability id="hybrid"/>
+ <capability id="pconfig"/>
+ <capability id="cet_ibt"/>
+ <capability id="ibrs_ibpb"/>
+ <capability id="stibp"/>
+ <capability id="l1d_flush"/>
+ <capability id="ia32_arch_capabilities"/>
+ <capability id="ia32_core_capabilities"/>
+ <capability id="ssbd"/>
+ <capability id="lahf_sahf_64"/>
+ <capability id="lzcnt"/>
+ <capability id="prefetchw"/>
+ <capability id="syscall_sysret_64"/>
+ <capability id="execute_disable"/>
+ <capability id="gbyte_pages"/>
+ <capability id="rdtscp_ia32_tsc_aux"/>
+ <capability id="intel_64"/>
+ <capability id="invariant_tsc"/>
+ <attribute id="physical_address_bits">46</attribute>
+ <attribute id="linear_address_bits">48</attribute>
+ </model>
+ <die id="0x0">
+ <core id="0x0">
+ <thread id="0x0">
+ <cpu_id>0</cpu_id>
+ <apic_id>0x0</apic_id>
+ <x2apic_id>0x0</x2apic_id>
+ <family_id>0x6</family_id>
+ <model_id>0x9a</model_id>
+ <stepping_id>0x1</stepping_id>
+ <core_type>Core</core_type>
+ <native_model_id>0x1</native_model_id>
+ </thread>
+ </core>
+ <core id="0x4">
+ <thread id="0x8">
+ <cpu_id>1</cpu_id>
+ <apic_id>0x8</apic_id>
+ <x2apic_id>0x8</x2apic_id>
+ <family_id>0x6</family_id>
+ <model_id>0x9a</model_id>
+ <stepping_id>0x1</stepping_id>
+ <core_type>Core</core_type>
+ <native_model_id>0x1</native_model_id>
+ </thread>
+ </core>
+ <core id="0x8">
+ <thread id="0x10">
+ <cpu_id>2</cpu_id>
+ <apic_id>0x10</apic_id>
+ <x2apic_id>0x10</x2apic_id>
+ <family_id>0x6</family_id>
+ <model_id>0x9a</model_id>
+ <stepping_id>0x1</stepping_id>
+ <core_type>Atom</core_type>
+ <native_model_id>0x1</native_model_id>
+ </thread>
+ </core>
+ <core id="0x9">
+ <thread id="0x12">
+ <cpu_id>3</cpu_id>
+ <apic_id>0x12</apic_id>
+ <x2apic_id>0x12</x2apic_id>
+ <family_id>0x6</family_id>
+ <model_id>0x9a</model_id>
+ <stepping_id>0x1</stepping_id>
+ <core_type>Atom</core_type>
+ <native_model_id>0x1</native_model_id>
+ </thread>
+ </core>
+ <core id="0xa">
+ <thread id="0x14">
+ <cpu_id>4</cpu_id>
+ <apic_id>0x14</apic_id>
+ <x2apic_id>0x14</x2apic_id>
+ <family_id>0x6</family_id>
+ <model_id>0x9a</model_id>
+ <stepping_id>0x1</stepping_id>
+ <core_type>Atom</core_type>
+ <native_model_id>0x1</native_model_id>
+ </thread>
+ </core>
+ <core id="0xb">
+ <thread id="0x16">
+ <cpu_id>5</cpu_id>
+ <apic_id>0x16</apic_id>
+ <x2apic_id>0x16</x2apic_id>
+ <family_id>0x6</family_id>
+ <model_id>0x9a</model_id>
+ <stepping_id>0x1</stepping_id>
+ <core_type>Atom</core_type>
+ <native_model_id>0x1</native_model_id>
+ </thread>
+ </core>
+ <core id="0xc">
+ <thread id="0x18">
+ <cpu_id>6</cpu_id>
+ <apic_id>0x18</apic_id>
+ <x2apic_id>0x18</x2apic_id>
+ <family_id>0x6</family_id>
+ <model_id>0x9a</model_id>
+ <stepping_id>0x1</stepping_id>
+ <core_type>Atom</core_type>
+ <native_model_id>0x1</native_model_id>
+ </thread>
+ </core>
+ <core id="0xd">
+ <thread id="0x1a">
+ <cpu_id>7</cpu_id>
+ <apic_id>0x1a</apic_id>
+ <x2apic_id>0x1a</x2apic_id>
+ <family_id>0x6</family_id>
+ <model_id>0x9a</model_id>
+ <stepping_id>0x1</stepping_id>
+ <core_type>Atom</core_type>
+ <native_model_id>0x1</native_model_id>
+ </thread>
+ </core>
+ <core id="0xe">
+ <thread id="0x1c">
+ <cpu_id>8</cpu_id>
+ <apic_id>0x1c</apic_id>
+ <x2apic_id>0x1c</x2apic_id>
+ <family_id>0x6</family_id>
+ <model_id>0x9a</model_id>
+ <stepping_id>0x1</stepping_id>
+ <core_type>Atom</core_type>
+ <native_model_id>0x1</native_model_id>
+ </thread>
+ </core>
+ <core id="0xf">
+ <thread id="0x1e">
+ <cpu_id>9</cpu_id>
+ <apic_id>0x1e</apic_id>
+ <x2apic_id>0x1e</x2apic_id>
+ <family_id>0x6</family_id>
+ <model_id>0x9a</model_id>
+ <stepping_id>0x1</stepping_id>
+ <core_type>Atom</core_type>
+ <native_model_id>0x1</native_model_id>
+ </thread>
+ </core>
+ </die>
+ </processors>
+ <caches>
+ <cache level="1" id="0x0" type="1">
+ <cache_size>49152</cache_size>
+ <line_size>64</line_size>
+ <ways>12</ways>
+ <sets>64</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>0</complex_cache_indexing>
+ <processors>
+ <processor>0x0</processor>
+ </processors>
+ </cache>
+ <cache level="1" id="0x0" type="2">
+ <cache_size>32768</cache_size>
+ <line_size>64</line_size>
+ <ways>8</ways>
+ <sets>64</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>0</complex_cache_indexing>
+ <processors>
+ <processor>0x0</processor>
+ </processors>
+ </cache>
+ <cache level="1" id="0x4" type="1">
+ <cache_size>49152</cache_size>
+ <line_size>64</line_size>
+ <ways>12</ways>
+ <sets>64</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>0</complex_cache_indexing>
+ <processors>
+ <processor>0x8</processor>
+ </processors>
+ </cache>
+ <cache level="1" id="0x4" type="2">
+ <cache_size>32768</cache_size>
+ <line_size>64</line_size>
+ <ways>8</ways>
+ <sets>64</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>0</complex_cache_indexing>
+ <processors>
+ <processor>0x8</processor>
+ </processors>
+ </cache>
+ <cache level="1" id="0x8" type="1">
+ <cache_size>32768</cache_size>
+ <line_size>64</line_size>
+ <ways>8</ways>
+ <sets>64</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>0</complex_cache_indexing>
+ <processors>
+ <processor>0x10</processor>
+ </processors>
+ </cache>
+ <cache level="1" id="0x8" type="2">
+ <cache_size>65536</cache_size>
+ <line_size>64</line_size>
+ <ways>8</ways>
+ <sets>128</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>0</complex_cache_indexing>
+ <processors>
+ <processor>0x10</processor>
+ </processors>
+ </cache>
+ <cache level="1" id="0x9" type="1">
+ <cache_size>32768</cache_size>
+ <line_size>64</line_size>
+ <ways>8</ways>
+ <sets>64</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>0</complex_cache_indexing>
+ <processors>
+ <processor>0x12</processor>
+ </processors>
+ </cache>
+ <cache level="1" id="0x9" type="2">
+ <cache_size>65536</cache_size>
+ <line_size>64</line_size>
+ <ways>8</ways>
+ <sets>128</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>0</complex_cache_indexing>
+ <processors>
+ <processor>0x12</processor>
+ </processors>
+ </cache>
+ <cache level="1" id="0xa" type="1">
+ <cache_size>32768</cache_size>
+ <line_size>64</line_size>
+ <ways>8</ways>
+ <sets>64</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>0</complex_cache_indexing>
+ <processors>
+ <processor>0x14</processor>
+ </processors>
+ </cache>
+ <cache level="1" id="0xa" type="2">
+ <cache_size>65536</cache_size>
+ <line_size>64</line_size>
+ <ways>8</ways>
+ <sets>128</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>0</complex_cache_indexing>
+ <processors>
+ <processor>0x14</processor>
+ </processors>
+ </cache>
+ <cache level="1" id="0xb" type="1">
+ <cache_size>32768</cache_size>
+ <line_size>64</line_size>
+ <ways>8</ways>
+ <sets>64</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>0</complex_cache_indexing>
+ <processors>
+ <processor>0x16</processor>
+ </processors>
+ </cache>
+ <cache level="1" id="0xb" type="2">
+ <cache_size>65536</cache_size>
+ <line_size>64</line_size>
+ <ways>8</ways>
+ <sets>128</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>0</complex_cache_indexing>
+ <processors>
+ <processor>0x16</processor>
+ </processors>
+ </cache>
+ <cache level="1" id="0xc" type="1">
+ <cache_size>32768</cache_size>
+ <line_size>64</line_size>
+ <ways>8</ways>
+ <sets>64</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>0</complex_cache_indexing>
+ <processors>
+ <processor>0x18</processor>
+ </processors>
+ </cache>
+ <cache level="1" id="0xc" type="2">
+ <cache_size>65536</cache_size>
+ <line_size>64</line_size>
+ <ways>8</ways>
+ <sets>128</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>0</complex_cache_indexing>
+ <processors>
+ <processor>0x18</processor>
+ </processors>
+ </cache>
+ <cache level="1" id="0xd" type="1">
+ <cache_size>32768</cache_size>
+ <line_size>64</line_size>
+ <ways>8</ways>
+ <sets>64</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>0</complex_cache_indexing>
+ <processors>
+ <processor>0x1a</processor>
+ </processors>
+ </cache>
+ <cache level="1" id="0xd" type="2">
+ <cache_size>65536</cache_size>
+ <line_size>64</line_size>
+ <ways>8</ways>
+ <sets>128</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>0</complex_cache_indexing>
+ <processors>
+ <processor>0x1a</processor>
+ </processors>
+ </cache>
+ <cache level="1" id="0xe" type="1">
+ <cache_size>32768</cache_size>
+ <line_size>64</line_size>
+ <ways>8</ways>
+ <sets>64</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>0</complex_cache_indexing>
+ <processors>
+ <processor>0x1c</processor>
+ </processors>
+ </cache>
+ <cache level="1" id="0xe" type="2">
+ <cache_size>65536</cache_size>
+ <line_size>64</line_size>
+ <ways>8</ways>
+ <sets>128</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>0</complex_cache_indexing>
+ <processors>
+ <processor>0x1c</processor>
+ </processors>
+ </cache>
+ <cache level="1" id="0xf" type="1">
+ <cache_size>32768</cache_size>
+ <line_size>64</line_size>
+ <ways>8</ways>
+ <sets>64</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>0</complex_cache_indexing>
+ <processors>
+ <processor>0x1e</processor>
+ </processors>
+ </cache>
+ <cache level="1" id="0xf" type="2">
+ <cache_size>65536</cache_size>
+ <line_size>64</line_size>
+ <ways>8</ways>
+ <sets>128</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>0</complex_cache_indexing>
+ <processors>
+ <processor>0x1e</processor>
+ </processors>
+ </cache>
+ <cache level="2" id="0x0" type="3">
+ <cache_size>1310720</cache_size>
+ <line_size>64</line_size>
+ <ways>10</ways>
+ <sets>2048</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>0</complex_cache_indexing>
+ <processors>
+ <processor>0x0</processor>
+ </processors>
+ <capability id="CAT">
+ <capacity_mask_length>10</capacity_mask_length>
+ <clos_number>8</clos_number>
+ </capability>
+ <capability id="CDP"/>
+ </cache>
+ <cache level="2" id="0x1" type="3">
+ <cache_size>1310720</cache_size>
+ <line_size>64</line_size>
+ <ways>10</ways>
+ <sets>2048</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>0</complex_cache_indexing>
+ <processors>
+ <processor>0x8</processor>
+ </processors>
+ <capability id="CAT">
+ <capacity_mask_length>10</capacity_mask_length>
+ <clos_number>8</clos_number>
+ </capability>
+ <capability id="CDP"/>
+ </cache>
+ <cache level="2" id="0x2" type="3">
+ <cache_size>2097152</cache_size>
+ <line_size>64</line_size>
+ <ways>16</ways>
+ <sets>2048</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>0</complex_cache_indexing>
+ <processors>
+ <processor>0x10</processor>
+ <processor>0x12</processor>
+ <processor>0x14</processor>
+ <processor>0x16</processor>
+ </processors>
+ <capability id="CAT">
+ <capacity_mask_length>16</capacity_mask_length>
+ <clos_number>16</clos_number>
+ </capability>
+ <capability id="CDP"/>
+ </cache>
+ <cache level="2" id="0x3" type="3">
+ <cache_size>2097152</cache_size>
+ <line_size>64</line_size>
+ <ways>16</ways>
+ <sets>2048</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>0</complex_cache_indexing>
+ <processors>
+ <processor>0x18</processor>
+ <processor>0x1a</processor>
+ <processor>0x1c</processor>
+ <processor>0x1e</processor>
+ </processors>
+ <capability id="CAT">
+ <capacity_mask_length>16</capacity_mask_length>
+ <clos_number>16</clos_number>
+ </capability>
+ <capability id="CDP"/>
+ </cache>
+ <cache level="3" id="0x0" type="3">
+ <cache_size>12582912</cache_size>
+ <line_size>64</line_size>
+ <ways>12</ways>
+ <sets>16384</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>1</complex_cache_indexing>
+ <processors>
+ <processor>0x0</processor>
+ <processor>0x8</processor>
+ <processor>0x10</processor>
+ <processor>0x12</processor>
+ <processor>0x14</processor>
+ <processor>0x16</processor>
+ <processor>0x18</processor>
+ <processor>0x1a</processor>
+ <processor>0x1c</processor>
+ <processor>0x1e</processor>
+ </processors>
+ </cache>
+ </caches>
+ <memory>
+ <range start="0x0000000000000000" end="0x000000000009efff" size="651264"/>
+ <range start="0x0000000000100000" end="0x000000004060dfff" size="1079042048"/>
+ <range start="0x0000000043bff000" end="0x0000000043bfffff" size="4096"/>
+ <range start="0x0000000100000000" end="0x00000004b07fffff" size="15846080512"/>
+ </memory>
+ <ioapics>
+ <ioapic id="0x2">
+ <address>0xfec00000</address>
+ <gsi_base>0x0</gsi_base>
+ <gsi_number>120</gsi_number>
+ </ioapic>
+ </ioapics>
+ <devices>
+ <device id="INT3420" description="Power Sharing Manager">
+ <acpi_object>\PSM_</acpi_object>
+ <acpi_uid>0</acpi_uid>
+ <aml_template>5b8242055c50534d5f085f53544100085f4849440c25d43420085f55494400085f535452112f0a2c50006f007700650072002000530068006100720069006e00670020004d0061006e0061006700650072000000</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ </device>
+ <bus type="system">
+ <acpi_object>\_SB_</acpi_object>
+ <bus id="PNP0A08" type="pci" address="0x0" description="Host bridge: Intel Corporation">
+ <vendor>0x8086</vendor>
+ <identifier>0x4601</identifier>
+ <subsystem_vendor>0x8086</subsystem_vendor>
+ <subsystem_identifier>0x7270</subsystem_identifier>
+ <class>0x060000</class>
+ <acpi_object>\_SB_.PC00</acpi_object>
+ <compatible_id>PNP0A03</compatible_id>
+ <acpi_uid>0</acpi_uid>
+ <resource id="res0" type="bus_number" min="0x0" max="0xfe" len="0xff"/>
+ <resource id="res1" type="io_port" min="0x0" max="0xcf7" len="0xcf8"/>
+ <resource id="res2" type="io_port" min="0xcf8" max="0xcf8" len="0x8"/>
+ <resource id="res3" type="io_port" min="0xd00" max="0xffff" len="0xf300"/>
+ <resource id="res4" type="memory" min="0xa0000" max="0xbffff" len="0x20000"/>
+ <resource id="res5" type="memory" min="0xc0000" max="0xbffff" len="0x0"/>
+ <resource id="res6" type="memory" min="0xc4000" max="0xc3fff" len="0x0"/>
+ <resource id="res7" type="memory" min="0xc8000" max="0xc7fff" len="0x0"/>
+ <resource id="res8" type="memory" min="0xcc000" max="0xcbfff" len="0x0"/>
+ <resource id="res9" type="memory" min="0xd0000" max="0xcffff" len="0x0"/>
+ <resource id="res10" type="memory" min="0xd4000" max="0xd3fff" len="0x0"/>
+ <resource id="res11" type="memory" min="0xd8000" max="0xd7fff" len="0x0"/>
+ <resource id="res12" type="memory" min="0xdc000" max="0xdbfff" len="0x0"/>
+ <resource id="res13" type="memory" min="0xe0000" max="0xdffff" len="0x0"/>
+ <resource id="res14" type="memory" min="0xe4000" max="0xe3fff" len="0x0"/>
+ <resource id="res15" type="memory" min="0xe8000" max="0xe7fff" len="0x0"/>
+ <resource id="res16" type="memory" min="0xec000" max="0xebfff" len="0x0"/>
+ <resource id="res17" type="memory" min="0xf0000" max="0xeffff" len="0x0"/>
+ <resource id="res18" type="memory" min="0x4f800000" max="0xbfffffff" len="0x70800000"/>
+ <resource id="res19" type="memory" min="0x4000000000" max="0x7fffffffff" len="0x4000000000"/>
+ <capability id="Vendor-Specific"/>
+ <interrupt_pin_routing>
+ <routing address="0x1fffff">
+ <mapping pin="INTA#" source="16"/>
+ <mapping pin="INTB#" source="17"/>
+ <mapping pin="INTC#" source="18"/>
+ <mapping pin="INTD#" source="19"/>
+ </routing>
+ <routing address="0x1effff">
+ <mapping pin="INTA#" source="16"/>
+ <mapping pin="INTB#" source="17"/>
+ <mapping pin="INTC#" source="36"/>
+ <mapping pin="INTD#" source="37"/>
+ </routing>
+ <routing address="0x1dffff">
+ <mapping pin="INTA#" source="16"/>
+ <mapping pin="INTB#" source="17"/>
+ <mapping pin="INTC#" source="18"/>
+ <mapping pin="INTD#" source="19"/>
+ </routing>
+ <routing address="0x1cffff">
+ <mapping pin="INTA#" source="16"/>
+ <mapping pin="INTB#" source="17"/>
+ <mapping pin="INTC#" source="18"/>
+ <mapping pin="INTD#" source="19"/>
+ </routing>
+ <routing address="0x1bffff">
+ <mapping pin="INTA#" source="16"/>
+ <mapping pin="INTB#" source="17"/>
+ <mapping pin="INTC#" source="18"/>
+ <mapping pin="INTD#" source="19"/>
+ </routing>
+ <routing address="0x1affff">
+ <mapping pin="INTA#" source="16"/>
+ <mapping pin="INTB#" source="17"/>
+ <mapping pin="INTC#" source="18"/>
+ <mapping pin="INTD#" source="19"/>
+ </routing>
+ <routing address="0x19ffff">
+ <mapping pin="INTA#" source="31"/>
+ <mapping pin="INTB#" source="32"/>
+ <mapping pin="INTC#" source="33"/>
+ </routing>
+ <routing address="0x17ffff">
+ <mapping pin="INTA#" source="16"/>
+ </routing>
+ <routing address="0x16ffff">
+ <mapping pin="INTA#" source="16"/>
+ <mapping pin="INTB#" source="17"/>
+ <mapping pin="INTC#" source="18"/>
+ <mapping pin="INTD#" source="19"/>
+ </routing>
+ <routing address="0x15ffff">
+ <mapping pin="INTA#" source="27"/>
+ <mapping pin="INTB#" source="40"/>
+ <mapping pin="INTC#" source="29"/>
+ <mapping pin="INTD#" source="30"/>
+ </routing>
+ <routing address="0x14ffff">
+ <mapping pin="INTA#" source="16"/>
+ <mapping pin="INTB#" source="17"/>
+ <mapping pin="INTC#" source="18"/>
+ </routing>
+ <routing address="0x13ffff">
+ <mapping pin="INTA#" source="20"/>
+ <mapping pin="INTB#" source="21"/>
+ <mapping pin="INTC#" source="24"/>
+ <mapping pin="INTD#" source="38"/>
+ </routing>
+ <routing address="0x12ffff">
+ <mapping pin="INTA#" source="26"/>
+ <mapping pin="INTB#" source="39"/>
+ <mapping pin="INTC#" source="18"/>
+ </routing>
+ <routing address="0x11ffff">
+ <mapping pin="INTA#" source="25"/>
+ <mapping pin="INTB#" source="36"/>
+ <mapping pin="INTC#" source="28"/>
+ <mapping pin="INTD#" source="34"/>
+ </routing>
+ <routing address="0x10ffff">
+ <mapping pin="INTC#" source="18"/>
+ <mapping pin="INTD#" source="19"/>
+ <mapping pin="INTA#" source="23"/>
+ <mapping pin="INTB#" source="22"/>
+ </routing>
+ <routing address="0x6ffff">
+ <mapping pin="INTA#" source="16"/>
+ <mapping pin="INTB#" source="17"/>
+ <mapping pin="INTC#" source="18"/>
+ <mapping pin="INTD#" source="19"/>
+ </routing>
+ <routing address="0x1ffff">
+ <mapping pin="INTA#" source="16"/>
+ <mapping pin="INTB#" source="17"/>
+ <mapping pin="INTC#" source="18"/>
+ <mapping pin="INTD#" source="19"/>
+ </routing>
+ <routing address="0x2ffff">
+ <mapping pin="INTA#" source="16"/>
+ </routing>
+ <routing address="0x4ffff">
+ <mapping pin="INTA#" source="16"/>
+ </routing>
+ <routing address="0x5ffff">
+ <mapping pin="INTA#" source="16"/>
+ </routing>
+ <routing address="0x8ffff">
+ <mapping pin="INTA#" source="16"/>
+ </routing>
+ <routing address="0xdffff">
+ <mapping pin="INTA#" source="16"/>
+ <mapping pin="INTB#" source="17"/>
+ </routing>
+ <routing address="0x7ffff">
+ <mapping pin="INTA#" source="16"/>
+ <mapping pin="INTB#" source="17"/>
+ <mapping pin="INTC#" source="18"/>
+ <mapping pin="INTD#" source="19"/>
+ </routing>
+ </interrupt_pin_routing>
+ <device address="0x0">
+ <acpi_object>\_SB_.PC00.MC__</acpi_object>
+ <aml_template>5b82165c2f035f53425f504330304d435f5f085f41445200</aml_template>
+ </device>
+ <device address="0x10000">
+ <acpi_object>\_SB_.PC00.PEG1</acpi_object>
+ <aml_template>5b82205c2f035f53425f5043303050454731085f53544100085f4144520c00000100</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <interrupt_pin_routing>
+ <routing address="0xffff">
+ <mapping pin="INTA#" source="16"/>
+ <mapping pin="INTB#" source="17"/>
+ <mapping pin="INTC#" source="18"/>
+ <mapping pin="INTD#" source="19"/>
+ </routing>
+ </interrupt_pin_routing>
+ <device address="0x0">
+ <acpi_object>\_SB_.PC00.PEG1.PEGP</acpi_object>
+ <aml_template>5b821a5c2f045f53425f504330305045473150454750085f41445200</aml_template>
+ <device address="0xffff">
+ <acpi_object>\_SB_.PC00.PEG1.PEGP.MINI</acpi_object>
+ <aml_template>5b82205c2f055f53425f5043303050454731504547504d494e49085f4144520bffff</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ </device>
+ </device>
+ </device>
+ <device address="0x20000" id="0x46a8" description="VGA compatible controller: Intel Corporation">
+ <vendor>0x8086</vendor>
+ <identifier>0x46a8</identifier>
+ <subsystem_vendor>0x8086</subsystem_vendor>
+ <subsystem_identifier>0x2212</subsystem_identifier>
+ <class>0x030000</class>
+ <acpi_object>\_SB_.PC00.GFX0</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303047465830085f4144520c00000200</aml_template>
+ <resource type="interrupt_pin" pin="INTA#" source="16"/>
+ <resource type="io_port" min="0x3000" max="0x303f" len="0x40" id="bar4"/>
+ <resource type="memory" min="0x4000000000" max="0x400fffffff" len="0x10000000" id="bar2" width="64" prefetchable="1"/>
+ <resource type="memory" min="0x607c000000" max="0x607cffffff" len="0x1000000" id="bar0" width="64" prefetchable="0"/>
+ <capability id="Vendor-Specific"/>
+ <capability id="PCI Express"/>
+ <capability id="MSI">
+ <count>1</count>
+ <capability id="per-vector masking"/>
+ </capability>
+ <capability id="Power Management"/>
+ <capability id="PASID"/>
+ <capability id="ATS"/>
+ <capability id="PRI"/>
+ <capability id="SR-IOV"/>
+ <device address="0x1">
+ <acpi_object>\_SB_.PC00.GFX0.DD01</acpi_object>
+ <aml_template>5b821a5c2f045f53425f504330304746583044443031085f41445201</aml_template>
+ </device>
+ <device address="0x2">
+ <acpi_object>\_SB_.PC00.GFX0.DD02</acpi_object>
+ <aml_template>5b821b5c2f045f53425f504330304746583044443032085f4144520a02</aml_template>
+ </device>
+ <device address="0x3">
+ <acpi_object>\_SB_.PC00.GFX0.DD03</acpi_object>
+ <aml_template>5b821b5c2f045f53425f504330304746583044443033085f4144520a03</aml_template>
+ </device>
+ <device address="0x4">
+ <acpi_object>\_SB_.PC00.GFX0.DD04</acpi_object>
+ <aml_template>5b821b5c2f045f53425f504330304746583044443034085f4144520a04</aml_template>
+ </device>
+ <device address="0x5">
+ <acpi_object>\_SB_.PC00.GFX0.DD05</acpi_object>
+ <aml_template>5b821b5c2f045f53425f504330304746583044443035085f4144520a05</aml_template>
+ </device>
+ <device address="0x6">
+ <acpi_object>\_SB_.PC00.GFX0.DD06</acpi_object>
+ <aml_template>5b821b5c2f045f53425f504330304746583044443036085f4144520a06</aml_template>
+ </device>
+ <device address="0x7">
+ <acpi_object>\_SB_.PC00.GFX0.DD07</acpi_object>
+ <aml_template>5b821b5c2f045f53425f504330304746583044443037085f4144520a07</aml_template>
+ </device>
+ <device address="0x8">
+ <acpi_object>\_SB_.PC00.GFX0.DD08</acpi_object>
+ <aml_template>5b821b5c2f045f53425f504330304746583044443038085f4144520a08</aml_template>
+ </device>
+ <device address="0x9">
+ <acpi_object>\_SB_.PC00.GFX0.DD09</acpi_object>
+ <aml_template>5b821b5c2f045f53425f504330304746583044443039085f4144520a09</aml_template>
+ </device>
+ <device address="0xa">
+ <acpi_object>\_SB_.PC00.GFX0.DD0A</acpi_object>
+ <aml_template>5b821b5c2f045f53425f504330304746583044443041085f4144520a0a</aml_template>
+ </device>
+ <device address="0xb">
+ <acpi_object>\_SB_.PC00.GFX0.DD0B</acpi_object>
+ <aml_template>5b821b5c2f045f53425f504330304746583044443042085f4144520a0b</aml_template>
+ </device>
+ <device address="0xc">
+ <acpi_object>\_SB_.PC00.GFX0.DD0C</acpi_object>
+ <aml_template>5b821b5c2f045f53425f504330304746583044443043085f4144520a0c</aml_template>
+ </device>
+ <device address="0xd">
+ <acpi_object>\_SB_.PC00.GFX0.DD0D</acpi_object>
+ <aml_template>5b821b5c2f045f53425f504330304746583044443044085f4144520a0d</aml_template>
+ </device>
+ <device address="0xe">
+ <acpi_object>\_SB_.PC00.GFX0.DD0E</acpi_object>
+ <aml_template>5b821b5c2f045f53425f504330304746583044443045085f4144520a0e</aml_template>
+ </device>
+ <device address="0xf">
+ <acpi_object>\_SB_.PC00.GFX0.DD0F</acpi_object>
+ <aml_template>5b821b5c2f045f53425f504330304746583044443046085f4144520a0f</aml_template>
+ </device>
+ <device address="0x1f">
+ <acpi_object>\_SB_.PC00.GFX0.DD1F</acpi_object>
+ <aml_template>5b821b5c2f045f53425f504330304746583044443146085f4144520a1f</aml_template>
+ </device>
+ <device>
+ <acpi_object>\_SB_.PC00.GFX0.DD2F</acpi_object>
+ <aml_template>5b821b5c2f045f53425f504330304746583044443246085f4144520a1f</aml_template>
+ </device>
+ </device>
+ <device address="0x40000" id="0x461d" description="Signal processing controller: Intel Corporation Alder Lake Innovation Platform Framework Processor Participant">
+ <vendor>0x8086</vendor>
+ <identifier>0x461d</identifier>
+ <subsystem_vendor>0x8086</subsystem_vendor>
+ <subsystem_identifier>0x7270</subsystem_identifier>
+ <class>0x118000</class>
+ <acpi_object>\_SB_.PC00.TCPU</acpi_object>
+ <aml_template>5b82215c2f035f53425f5043303054435055085f5354410a0f085f4144520c00000400</aml_template>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ <resource type="interrupt_pin" pin="INTA#" source="16"/>
+ <resource type="memory" min="0x607d180000" max="0x607d19ffff" len="0x20000" id="bar0" width="64" prefetchable="0"/>
+ <capability id="MSI">
+ <count>1</count>
+ </capability>
+ <capability id="Power Management"/>
+ <capability id="Vendor-Specific"/>
+ </device>
+ <device address="0x50000">
+ <acpi_object>\_SB_.PC00.IPU0</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303049505530085f4144520c00000500</aml_template>
+ </device>
+ <device address="0x60000" id="0x464d" description="PCI bridge: Intel Corporation 12th Gen Core Processor PCI Express x4 Controller #0">
+ <vendor>0x8086</vendor>
+ <identifier>0x464d</identifier>
+ <class>0x060400</class>
+ <acpi_object>\_SB_.PC00.PEG0</acpi_object>
+ <aml_template>5b82215c2f035f53425f5043303050454730085f5354410a0f085f4144520c00000600</aml_template>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ <resource type="interrupt_pin" pin="INTD#" source="19"/>
+ <resource type="memory" min="0x86200000" max="0x862fffff" len="0x100000"/>
+ <capability id="PCI Express"/>
+ <capability id="MSI">
+ <count>1</count>
+ </capability>
+ <capability id="Subsystem ID and Subsystem Vendor ID"/>
+ <capability id="Power Management"/>
+ <capability id="Advanced Error Reporting"/>
+ <capability id="ACS"/>
+ <capability id="L1 PM Substates"/>
+ <capability id="TPM"/>
+ <capability id="Virtual Channel"/>
+ <capability id="DPC"/>
+ <capability id="Secondary PCI Express"/>
+ <capability id="Data Link Feature"/>
+ <capability id="Physical Layer 16.0 GT/s"/>
+ <capability id="Lane Margining at the Receiver"/>
+ <bus type="pci" address="0x1">
+ <interrupt_pin_routing>
+ <routing address="0xffff">
+ <mapping pin="INTA#" source="16"/>
+ <mapping pin="INTB#" source="17"/>
+ <mapping pin="INTC#" source="18"/>
+ <mapping pin="INTD#" source="19"/>
+ </routing>
+ </interrupt_pin_routing>
+ <device address="0x0" id="0x2263" description="Non-Volatile memory controller: Silicon Motion, Inc. SM2263EN/SM2263XT SSD Controller">
+ <vendor>0x126f</vendor>
+ <identifier>0x2263</identifier>
+ <subsystem_vendor>0x126f</subsystem_vendor>
+ <subsystem_identifier>0x2263</subsystem_identifier>
+ <class>0x010802</class>
+ <resource type="interrupt_pin" pin="INTA#" source="16"/>
+ <resource type="memory" min="0x86200000" max="0x86203fff" len="0x4000" id="bar0" width="64" prefetchable="0"/>
+ <capability id="Power Management"/>
+ <capability id="MSI">
+ <count>8</count>
+ <capability id="multiple-message"/>
+ <capability id="64-bit address"/>
+ <capability id="per-vector masking"/>
+ </capability>
+ <capability id="PCI Express"/>
+ <capability id="MSI-X">
+ <table_size>16</table_size>
+ <table_bir>1</table_bir>
+ <table_offset>0x1000000</table_offset>
+ <pba_bir>1</pba_bir>
+ <pba_offset>0x0</pba_offset>
+ </capability>
+ <capability id="Advanced Error Reporting"/>
+ <capability id="Secondary PCI Express"/>
+ <capability id="LTR"/>
+ <capability id="L1 PM Substates"/>
+ </device>
+ </bus>
+ <device address="0x0">
+ <acpi_object>\_SB_.PC00.PEG0.PEGP</acpi_object>
+ <aml_template>5b821a5c2f045f53425f504330305045473050454750085f41445200</aml_template>
+ <device address="0xffff">
+ <acpi_object>\_SB_.PC00.PEG0.PEGP.MINI</acpi_object>
+ <aml_template>5b82205c2f055f53425f5043303050454730504547504d494e49085f4144520bffff</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ </device>
+ </device>
+ </device>
+ <device address="0x60002">
+ <acpi_object>\_SB_.PC00.PEG2</acpi_object>
+ <aml_template>5b82215c2f035f53425f5043303050454732085f5354410a0f085f4144520c02000600</aml_template>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ <interrupt_pin_routing>
+ <routing address="0xffff">
+ <mapping pin="INTA#" source="16"/>
+ <mapping pin="INTB#" source="17"/>
+ <mapping pin="INTC#" source="18"/>
+ <mapping pin="INTD#" source="19"/>
+ </routing>
+ </interrupt_pin_routing>
+ <device address="0x0">
+ <acpi_object>\_SB_.PC00.PEG2.PEGP</acpi_object>
+ <aml_template>5b821a5c2f045f53425f504330305045473250454750085f41445200</aml_template>
+ <device address="0xffff">
+ <acpi_object>\_SB_.PC00.PEG2.PEGP.MINI</acpi_object>
+ <aml_template>5b82205c2f055f53425f5043303050454732504547504d494e49085f4144520bffff</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ </device>
+ </device>
+ </device>
+ <device address="0x70000" id="0x466e" description="PCI bridge: Intel Corporation Alder Lake-P Thunderbolt 4 PCI Express Root Port #0">
+ <vendor>0x8086</vendor>
+ <identifier>0x466e</identifier>
+ <class>0x060400</class>
+ <acpi_object>\_SB_.PC00.TRP0</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303054525030085f4144520c00000700</aml_template>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ <resource type="interrupt_pin" pin="INTA#" source="16"/>
+ <resource type="io_port" min="0x4000" max="0x4fff" len="0x1000"/>
+ <resource type="memory" min="0x7a000000" max="0x861fffff" len="0xc200000"/>
+ <capability id="PCI Express"/>
+ <capability id="MSI">
+ <count>1</count>
+ <capability id="64-bit address"/>
+ </capability>
+ <capability id="Subsystem ID and Subsystem Vendor ID"/>
+ <capability id="Power Management"/>
+ <capability id="Advanced Error Reporting"/>
+ <capability id="ACS"/>
+ <capability id="TPM"/>
+ <capability id="DPC"/>
+ <capability id="Secondary PCI Express"/>
+ <capability id="Data Link Feature"/>
+ <capability id="Resizable BAR"/>
+ <bus type="pci" address="0x2">
+ <interrupt_pin_routing>
+ <routing address="0xffff">
+ <mapping pin="INTA#" source="16"/>
+ <mapping pin="INTB#" source="17"/>
+ <mapping pin="INTC#" source="18"/>
+ <mapping pin="INTD#" source="19"/>
+ </routing>
+ </interrupt_pin_routing>
+ </bus>
+ <device address="0x0">
+ <acpi_object>\_SB_.PC00.TRP0.PXSX</acpi_object>
+ <aml_template>5b821a5c2f045f53425f504330305452503050585358085f41445200</aml_template>
+ </device>
+ </device>
+ <device address="0x70001" id="0x463f" description="PCI bridge: Intel Corporation Alder Lake-P Thunderbolt 4 PCI Express Root Port #1">
+ <vendor>0x8086</vendor>
+ <identifier>0x463f</identifier>
+ <class>0x060400</class>
+ <acpi_object>\_SB_.PC00.TRP1</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303054525031085f4144520c01000700</aml_template>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ <resource type="interrupt_pin" pin="INTB#" source="17"/>
+ <resource type="io_port" min="0x5000" max="0x5fff" len="0x1000"/>
+ <resource type="memory" min="0x6c000000" max="0x781fffff" len="0xc200000"/>
+ <capability id="PCI Express"/>
+ <capability id="MSI">
+ <count>1</count>
+ <capability id="64-bit address"/>
+ </capability>
+ <capability id="Subsystem ID and Subsystem Vendor ID"/>
+ <capability id="Power Management"/>
+ <capability id="Advanced Error Reporting"/>
+ <capability id="ACS"/>
+ <capability id="TPM"/>
+ <capability id="DPC"/>
+ <capability id="Secondary PCI Express"/>
+ <capability id="Data Link Feature"/>
+ <capability id="Resizable BAR"/>
+ <bus type="pci" address="0x2c">
+ <interrupt_pin_routing>
+ <routing address="0xffff">
+ <mapping pin="INTA#" source="16"/>
+ <mapping pin="INTB#" source="17"/>
+ <mapping pin="INTC#" source="18"/>
+ <mapping pin="INTD#" source="19"/>
+ </routing>
+ </interrupt_pin_routing>
+ </bus>
+ <device address="0x0">
+ <acpi_object>\_SB_.PC00.TRP1.PXSX</acpi_object>
+ <aml_template>5b821a5c2f045f53425f504330305452503150585358085f41445200</aml_template>
+ </device>
+ </device>
+ <device address="0x70002" id="0x462f" description="PCI bridge: Intel Corporation Alder Lake-P Thunderbolt 4 PCI Express Root Port #2">
+ <vendor>0x8086</vendor>
+ <identifier>0x462f</identifier>
+ <class>0x060400</class>
+ <acpi_object>\_SB_.PC00.TRP2</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303054525032085f4144520c02000700</aml_template>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ <resource type="interrupt_pin" pin="INTC#" source="18"/>
+ <resource type="io_port" min="0x6000" max="0x6fff" len="0x1000"/>
+ <resource type="memory" min="0x5e000000" max="0x6a1fffff" len="0xc200000"/>
+ <capability id="PCI Express"/>
+ <capability id="MSI">
+ <count>1</count>
+ <capability id="64-bit address"/>
+ </capability>
+ <capability id="Subsystem ID and Subsystem Vendor ID"/>
+ <capability id="Power Management"/>
+ <capability id="Advanced Error Reporting"/>
+ <capability id="ACS"/>
+ <capability id="TPM"/>
+ <capability id="DPC"/>
+ <capability id="Secondary PCI Express"/>
+ <capability id="Data Link Feature"/>
+ <capability id="Resizable BAR"/>
+ <bus type="pci" address="0x56">
+ <interrupt_pin_routing>
+ <routing address="0xffff">
+ <mapping pin="INTA#" source="16"/>
+ <mapping pin="INTB#" source="17"/>
+ <mapping pin="INTC#" source="18"/>
+ <mapping pin="INTD#" source="19"/>
+ </routing>
+ </interrupt_pin_routing>
+ </bus>
+ <device address="0x0">
+ <acpi_object>\_SB_.PC00.TRP2.PXSX</acpi_object>
+ <aml_template>5b821a5c2f045f53425f504330305452503250585358085f41445200</aml_template>
+ </device>
+ </device>
+ <device address="0x70003" id="0x461f" description="PCI bridge: Intel Corporation Alder Lake-P Thunderbolt 4 PCI Express Root Port #3">
+ <vendor>0x8086</vendor>
+ <identifier>0x461f</identifier>
+ <class>0x060400</class>
+ <acpi_object>\_SB_.PC00.TRP3</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303054525033085f4144520c03000700</aml_template>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ <resource type="interrupt_pin" pin="INTD#" source="19"/>
+ <resource type="io_port" min="0x7000" max="0x7fff" len="0x1000"/>
+ <resource type="memory" min="0x50000000" max="0x5c1fffff" len="0xc200000"/>
+ <capability id="PCI Express"/>
+ <capability id="MSI">
+ <count>1</count>
+ <capability id="64-bit address"/>
+ </capability>
+ <capability id="Subsystem ID and Subsystem Vendor ID"/>
+ <capability id="Power Management"/>
+ <capability id="Advanced Error Reporting"/>
+ <capability id="ACS"/>
+ <capability id="TPM"/>
+ <capability id="DPC"/>
+ <capability id="Secondary PCI Express"/>
+ <capability id="Data Link Feature"/>
+ <capability id="Resizable BAR"/>
+ <bus type="pci" address="0x80">
+ <interrupt_pin_routing>
+ <routing address="0xffff">
+ <mapping pin="INTA#" source="16"/>
+ <mapping pin="INTB#" source="17"/>
+ <mapping pin="INTC#" source="18"/>
+ <mapping pin="INTD#" source="19"/>
+ </routing>
+ </interrupt_pin_routing>
+ </bus>
+ <device address="0x0">
+ <acpi_object>\_SB_.PC00.TRP3.PXSX</acpi_object>
+ <aml_template>5b821a5c2f045f53425f504330305452503350585358085f41445200</aml_template>
+ </device>
+ </device>
+ <device address="0x80000" id="0x464f" description="System peripheral: Intel Corporation 12th Gen Core Processor Gaussian &amp; Neural Accelerator">
+ <vendor>0x8086</vendor>
+ <identifier>0x464f</identifier>
+ <subsystem_vendor>0x8086</subsystem_vendor>
+ <subsystem_identifier>0x7270</subsystem_identifier>
+ <class>0x088000</class>
+ <acpi_object>\_SB_.PC00.GNA0</acpi_object>
+ <aml_template>5b821a5c2f035f53425f50433030474e4130085f4144520c00000800</aml_template>
+ <resource type="interrupt_pin" pin="INTA#" source="16"/>
+ <resource type="memory" min="0x607d1e4000" max="0x607d1e4fff" len="0x1000" id="bar0" width="64" prefetchable="0"/>
+ <capability id="MSI">
+ <count>1</count>
+ </capability>
+ <capability id="Vendor-Specific"/>
+ <capability id="Power Management"/>
+ <capability id="Conventional PCI Advanced Features"/>
+ </device>
+ <device address="0xa0000" id="0x467d" description="Signal processing controller: Intel Corporation Platform Monitoring Technology">
+ <vendor>0x8086</vendor>
+ <identifier>0x467d</identifier>
+ <subsystem_vendor>0x8086</subsystem_vendor>
+ <subsystem_identifier>0x7270</subsystem_identifier>
+ <class>0x118000</class>
+ <resource type="memory" min="0x607d1c8000" max="0x607d1cffff" len="0x8000" id="bar0" width="64" prefetchable="0"/>
+ <capability id="PCI Express"/>
+ <capability id="Power Management"/>
+ <capability id="Designated Vendor-Specific"/>
+ <capability id="Designated Vendor-Specific"/>
+ <capability id="Designated Vendor-Specific"/>
+ </device>
+ <device description="USB controller: Intel Corporation Alder Lake-P Thunderbolt 4 USB Controller" address="0xd0000" id="0x461e">
+ <vendor>0x8086</vendor>
+ <identifier>0x461e</identifier>
+ <subsystem_vendor>0x8086</subsystem_vendor>
+ <subsystem_identifier>0x7270</subsystem_identifier>
+ <class>0x0c0330</class>
+ <acpi_object>\_SB_.PC00.TXHC</acpi_object>
+ <aml_template>5b8248055c2f035f53425f5043303054584843085f53545211370a34490043004c0020004e006f0072007400680020005800480043004900200063006f006e00740072006f006c006c00650072000000085f4144520c00000d00</aml_template>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ <resource type="memory" min="0x607d1b0000" max="0x607d1bffff" len="0x10000" id="bar0" width="64" prefetchable="0"/>
+ <capability id="Power Management"/>
+ <capability id="MSI">
+ <count>8</count>
+ <capability id="multiple-message"/>
+ <capability id="64-bit address"/>
+ </capability>
+ <capability id="Vendor-Specific"/>
+ <capability id="Vendor-Specific"/>
+ <device address="0x0">
+ <acpi_object>\_SB_.PC00.TXHC.RHUB</acpi_object>
+ <aml_template>5b821a5c2f045f53425f504330305458484352485542085f41445200</aml_template>
+ <device address="0x1">
+ <acpi_object>\_SB_.PC00.TXHC.RHUB.HS01</acpi_object>
+ <aml_template>5b821e5c2f055f53425f50433030545848435248554248533031085f41445201</aml_template>
+ </device>
+ <device address="0x2">
+ <acpi_object>\_SB_.PC00.TXHC.RHUB.SS01</acpi_object>
+ <aml_template>5b821f5c2f055f53425f50433030545848435248554253533031085f4144520a02</aml_template>
+ </device>
+ <device address="0x3">
+ <acpi_object>\_SB_.PC00.TXHC.RHUB.SS02</acpi_object>
+ <aml_template>5b821f5c2f055f53425f50433030545848435248554253533032085f4144520a03</aml_template>
+ </device>
+ <device address="0x4">
+ <acpi_object>\_SB_.PC00.TXHC.RHUB.SS03</acpi_object>
+ <aml_template>5b821f5c2f055f53425f50433030545848435248554253533033085f4144520a04</aml_template>
+ </device>
+ <device address="0x5">
+ <acpi_object>\_SB_.PC00.TXHC.RHUB.SS04</acpi_object>
+ <aml_template>5b821f5c2f055f53425f50433030545848435248554253533034085f4144520a05</aml_template>
+ </device>
+ </device>
+ </device>
+ <device description="USB controller: Intel Corporation Alder Lake-P Thunderbolt 4 NHI #0" address="0xd0002" id="0x463e">
+ <vendor>0x8086</vendor>
+ <identifier>0x463e</identifier>
+ <subsystem_vendor>0x8086</subsystem_vendor>
+ <subsystem_identifier>0x7270</subsystem_identifier>
+ <class>0x0c0340</class>
+ <acpi_object>\_SB_.PC00.TDM0</acpi_object>
+ <aml_template>5b8244055c2f035f53425f5043303054444d30085f53545211330a30490043004c002000540042005400200044004d0041003000200063006f006e00740072006f006c006c00650072000000085f4144520c02000d00</aml_template>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ <resource type="interrupt_pin" pin="INTA#" source="16"/>
+ <resource type="memory" min="0x607d140000" max="0x607d17ffff" len="0x40000" id="bar0" width="64" prefetchable="0"/>
+ <resource type="memory" min="0x607d1e3000" max="0x607d1e3fff" len="0x1000" id="bar2" width="64" prefetchable="0"/>
+ <capability id="Power Management"/>
+ <capability id="MSI">
+ <count>1</count>
+ <capability id="64-bit address"/>
+ </capability>
+ <capability id="MSI-X">
+ <table_size>16</table_size>
+ <table_bir>4</table_bir>
+ <table_offset>0xfa20000</table_offset>
+ <pba_bir>0</pba_bir>
+ <pba_offset>0x2000000</pba_offset>
+ </capability>
+ </device>
+ <device description="USB controller: Intel Corporation Alder Lake-P Thunderbolt 4 NHI #1" address="0xd0003" id="0x466d">
+ <vendor>0x8086</vendor>
+ <identifier>0x466d</identifier>
+ <subsystem_vendor>0x8086</subsystem_vendor>
+ <subsystem_identifier>0x7270</subsystem_identifier>
+ <class>0x0c0340</class>
+ <acpi_object>\_SB_.PC00.TDM1</acpi_object>
+ <aml_template>5b8244055c2f035f53425f5043303054444d31085f53545211330a30490043004c002000540042005400200044004d0041003100200063006f006e00740072006f006c006c00650072000000085f4144520c03000d00</aml_template>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ <resource type="interrupt_pin" pin="INTA#" source="16"/>
+ <resource type="memory" min="0x607d100000" max="0x607d13ffff" len="0x40000" id="bar0" width="64" prefetchable="0"/>
+ <resource type="memory" min="0x607d1e2000" max="0x607d1e2fff" len="0x1000" id="bar2" width="64" prefetchable="0"/>
+ <capability id="Power Management"/>
+ <capability id="MSI">
+ <count>1</count>
+ <capability id="64-bit address"/>
+ </capability>
+ <capability id="MSI-X">
+ <table_size>16</table_size>
+ <table_bir>4</table_bir>
+ <table_offset>0xfa20000</table_offset>
+ <pba_bir>0</pba_bir>
+ <pba_offset>0x2000000</pba_offset>
+ </capability>
+ </device>
+ <device address="0x100000" id="0x51d8" description="Serial bus controller: Intel Corporation">
+ <vendor>0x8086</vendor>
+ <identifier>0x51d8</identifier>
+ <subsystem_vendor>0x8086</subsystem_vendor>
+ <subsystem_identifier>0x7270</subsystem_identifier>
+ <class>0x0c8000</class>
+ <acpi_object>\_SB_.PC00.I2C6</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303049324336085f4144520c00001000</aml_template>
+ <resource type="interrupt_pin" pin="INTC#" source="18"/>
+ <resource type="memory" min="0x4017000000" max="0x4017000fff" len="0x1000" id="bar0" width="64" prefetchable="0"/>
+ <capability id="Power Management"/>
+ <capability id="Vendor-Specific"/>
+ </device>
+ <device address="0x100001">
+ <acpi_object>\_SB_.PC00.I2C7</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303049324337085f4144520c01001000</aml_template>
+ </device>
+ <device address="0x100006" id="0x51d0" description="Digitizer Pen: Intel Corporation">
+ <vendor>0x8086</vendor>
+ <identifier>0x51d0</identifier>
+ <subsystem_vendor>0x8086</subsystem_vendor>
+ <subsystem_identifier>0x7270</subsystem_identifier>
+ <class>0x090100</class>
+ <acpi_object>\_SB_.PC00.THC0</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303054484330085f4144520c06001000</aml_template>
+ <resource type="interrupt_pin" pin="INTA#" source="23"/>
+ <resource type="memory" min="0x607d1c0000" max="0x607d1c7fff" len="0x8000" id="bar0" width="64" prefetchable="0"/>
+ <capability id="MSI">
+ <count>1</count>
+ <capability id="64-bit address"/>
+ </capability>
+ <capability id="Power Management"/>
+ <device address="0x1">
+ <acpi_object>\_SB_.PC00.THC0.TLC1</acpi_object>
+ <aml_template>5b82215c2f045f53425f5043303054484330544c4331085f5354410a0f085f41445201</aml_template>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ </device>
+ <device address="0x2">
+ <acpi_object>\_SB_.PC00.THC0.TLC2</acpi_object>
+ <aml_template>5b82225c2f045f53425f5043303054484330544c4332085f5354410a0f085f4144520a02</aml_template>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ </device>
+ <device address="0x3">
+ <acpi_object>\_SB_.PC00.THC0.TLC3</acpi_object>
+ <aml_template>5b82225c2f045f53425f5043303054484330544c4333085f5354410a0f085f4144520a03</aml_template>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ </device>
+ </device>
+ <device address="0x100007">
+ <acpi_object>\_SB_.PC00.THC1</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303054484331085f4144520c07001000</aml_template>
+ <device address="0x1">
+ <acpi_object>\_SB_.PC00.THC1.TLC1</acpi_object>
+ <aml_template>5b82215c2f045f53425f5043303054484331544c4331085f5354410a0f085f41445201</aml_template>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ </device>
+ <device address="0x2">
+ <acpi_object>\_SB_.PC00.THC1.TLC2</acpi_object>
+ <aml_template>5b82225c2f045f53425f5043303054484331544c4332085f5354410a0f085f4144520a02</aml_template>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ </device>
+ <device address="0x3">
+ <acpi_object>\_SB_.PC00.THC1.TLC3</acpi_object>
+ <aml_template>5b82225c2f045f53425f5043303054484331544c4333085f5354410a0f085f4144520a03</aml_template>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ </device>
+ </device>
+ <device address="0x110000">
+ <acpi_object>\_SB_.PC00.UA03</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303055413033085f4144520c00001100</aml_template>
+ </device>
+ <device address="0x110001">
+ <acpi_object>\_SB_.PC00.UA04</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303055413034085f4144520c01001100</aml_template>
+ </device>
+ <device address="0x110002">
+ <acpi_object>\_SB_.PC00.UA05</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303055413035085f4144520c02001100</aml_template>
+ </device>
+ <device address="0x110003">
+ <acpi_object>\_SB_.PC00.UA06</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303055413036085f4144520c03001100</aml_template>
+ </device>
+ <device address="0x120000">
+ <acpi_object>\_SB_.PC00.ISHD</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303049534844085f4144520c00001200</aml_template>
+ </device>
+ <device address="0x120006">
+ <acpi_object>\_SB_.PC00.SPI2</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303053504932085f4144520c06001200</aml_template>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.S2D0</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.S2DC</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.TP2_</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.S2D3</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.S2DB</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.S2D4</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.TP3_</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.S2DD</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.S2D9</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.FPNT</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.S2D5</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.S2DA</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.TP1_</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.S2D6</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.S2D7</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.S2D2</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.S2DE</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.S2D1</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.S2D8</dependency>
+ <device id="DUMY0000">
+ <acpi_object>\_SB_.PC00.SPI2.FPNT</acpi_object>
+ <aml_template>5b8246085c2f045f53425f504330305350493246504e54085f53544100085f4849440d44554d593030303000085f4352531146050a528e21000100020200000109000000000008000000005c5f53422e504330302e53504932008c2000010101000200000000000017000019002300000000005c5f53422e47504930008906001501770000007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGPIOConnection" id="res1"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <resource id="res2" type="irq" int="119"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI2</dependency>
+ <dependency type="consumes resources from">\_SB_.GPI0</dependency>
+ </device>
+ <device id="SPI2001">
+ <acpi_object>\_SB_.PC00.SPI2.S2D0</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493253324430085f53544100085f4849440d5350493230303100085f55494401085f43525311290a268e210001000202000001090040420f0008000000005c5f53422e504330302e53504932007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI2</dependency>
+ </device>
+ <device id="SPI2003">
+ <acpi_object>\_SB_.PC00.SPI2.S2D1</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493253324431085f53544100085f4849440d5350493230303300085f55494401085f43525311290a268e210001000202000001090040420f0008000100005c5f53422e504330302e53504932007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI2</dependency>
+ </device>
+ <device id="SPI2002">
+ <acpi_object>\_SB_.PC00.SPI2.S2D2</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493253324432085f53544100085f4849440d5350493230303200085f55494401085f43525311290a268e210001000202000001090040420f0008010000005c5f53422e504330302e53504932007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI2</dependency>
+ </device>
+ <device id="SPI2004">
+ <acpi_object>\_SB_.PC00.SPI2.S2D3</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493253324433085f53544100085f4849440d5350493230303400085f55494401085f43525311290a268e210001000202000001090040420f0008010100005c5f53422e504330302e53504932007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI2</dependency>
+ </device>
+ <device id="SPI2005">
+ <acpi_object>\_SB_.PC00.SPI2.S2D4</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493253324434085f53544100085f4849440d5350493230303500085f55494401085f43525311290a268e210001000202020001090040420f0008000000005c5f53422e504330302e53504932007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI2</dependency>
+ </device>
+ <device id="SPI2007">
+ <acpi_object>\_SB_.PC00.SPI2.S2D5</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493253324435085f53544100085f4849440d5350493230303700085f55494401085f43525311290a268e210001000202020001090040420f0008000100005c5f53422e504330302e53504932007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI2</dependency>
+ </device>
+ <device id="SPI2006">
+ <acpi_object>\_SB_.PC00.SPI2.S2D6</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493253324436085f53544100085f4849440d5350493230303600085f55494401085f43525311290a268e210001000202020001090040420f0008010000005c5f53422e504330302e53504932007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI2</dependency>
+ </device>
+ <device id="SPI2008">
+ <acpi_object>\_SB_.PC00.SPI2.S2D7</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493253324437085f53544100085f4849440d5350493230303800085f55494401085f43525311290a268e210001000202020001090040420f0008010100005c5f53422e504330302e53504932007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI2</dependency>
+ </device>
+ <device id="SPI2009">
+ <acpi_object>\_SB_.PC00.SPI2.S2D8</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493253324438085f53544100085f4849440d5350493230303900085f55494401085f43525311290a268e21000100020200000109008096980008000000005c5f53422e504330302e53504932007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI2</dependency>
+ </device>
+ <device id="SPI2010">
+ <acpi_object>\_SB_.PC00.SPI2.S2D9</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493253324439085f53544100085f4849440d5350493230313000085f55494401085f43525311290a268e21000100020200000109002a50fe0008000000005c5f53422e504330302e53504932007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI2</dependency>
+ </device>
+ <device id="SPI2011">
+ <acpi_object>\_SB_.PC00.SPI2.S2DA</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493253324441085f53544100085f4849440d5350493230313100085f55494401085f43525311290a268e2100010002020000010900002d310108000000005c5f53422e504330302e53504932007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI2</dependency>
+ </device>
+ <device id="SPI2012">
+ <acpi_object>\_SB_.PC00.SPI2.S2DB</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493253324442085f53544100085f4849440d5350493230313200085f55494401085f43525311290a268e210001000202000001090000366e0108000000005c5f53422e504330302e53504932007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI2</dependency>
+ </device>
+ <device id="SPI2013">
+ <acpi_object>\_SB_.PC00.SPI2.S2DC</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493253324443085f53544100085f4849440d5350493230313300085f55494401085f43525311290a268e210001000202000001090040420f0010000000005c5f53422e504330302e53504932007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI2</dependency>
+ </device>
+ <device id="SPI2014">
+ <acpi_object>\_SB_.PC00.SPI2.S2DD</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493253324444085f53544100085f4849440d5350493230313400085f55494401085f43525311290a268e210001000202000001090040420f0018000000005c5f53422e504330302e53504932007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI2</dependency>
+ </device>
+ <device id="SPI2015">
+ <acpi_object>\_SB_.PC00.SPI2.S2DE</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493253324445085f53544100085f4849440d5350493230313500085f55494401085f43525311290a268e210001000202000001090040420f0020000000005c5f53422e504330302e53504932007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI2</dependency>
+ </device>
+ <device id="SPT0001">
+ <acpi_object>\_SB_.PC00.SPI2.TP1_</acpi_object>
+ <aml_template>5b8248055c2f045f53425f50433030535049325450315f085f53544100085f4849440d5350543030303100085f43525311290a268e210001000202000001090040420f0008000000005c5f53422e504330302e53504932007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI2</dependency>
+ </device>
+ <device id="SPT0002">
+ <acpi_object>\_SB_.PC00.SPI2.TP2_</acpi_object>
+ <aml_template>5b8248055c2f045f53425f50433030535049325450325f085f53544100085f4849440d5350543030303200085f43525311290a268e2100010002020000010900404b4c0008000000005c5f53422e504330302e53504932007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI2</dependency>
+ </device>
+ <device id="SPT0003">
+ <acpi_object>\_SB_.PC00.SPI2.TP3_</acpi_object>
+ <aml_template>5b8248055c2f045f53425f50433030535049325450335f085f53544100085f4849440d5350543030303300085f43525311290a268e2100010002020000010900002d310108000000005c5f53422e504330302e53504932007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI2</dependency>
+ </device>
+ </device>
+ <device address="0x130000">
+ <acpi_object>\_SB_.PC00.SPI3</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303053504933085f4144520c00001300</aml_template>
+ </device>
+ <device address="0x130001">
+ <acpi_object>\_SB_.PC00.SPI4</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303053504934085f4144520c01001300</aml_template>
+ </device>
+ <device address="0x130002">
+ <acpi_object>\_SB_.PC00.SPI5</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303053504935085f4144520c02001300</aml_template>
+ </device>
+ <device address="0x130003">
+ <acpi_object>\_SB_.PC00.SPI6</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303053504936085f4144520c03001300</aml_template>
+ </device>
+ <device address="0x140000" id="0x51ed" description="USB controller: Intel Corporation Alder Lake PCH USB 3.2 xHCI Host Controller">
+ <vendor>0x8086</vendor>
+ <identifier>0x51ed</identifier>
+ <subsystem_vendor>0x8086</subsystem_vendor>
+ <subsystem_identifier>0x7270</subsystem_identifier>
+ <class>0x0c0330</class>
+ <acpi_object>\_SB_.PC00.XHCI</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303058484349085f4144520c00001400</aml_template>
+ <resource type="interrupt_pin" pin="INTA#" source="16"/>
+ <resource type="memory" min="0x607d1a0000" max="0x607d1affff" len="0x10000" id="bar0" width="64" prefetchable="0"/>
+ <capability id="Power Management"/>
+ <capability id="MSI">
+ <count>8</count>
+ <capability id="multiple-message"/>
+ <capability id="64-bit address"/>
+ </capability>
+ <capability id="Vendor-Specific"/>
+ <capability id="Vendor-Specific"/>
+ <device address="0x0">
+ <acpi_object>\_SB_.PC00.XHCI.RHUB</acpi_object>
+ <aml_template>5b821a5c2f045f53425f504330305848434952485542085f41445200</aml_template>
+ <device address="0x1">
+ <acpi_object>\_SB_.PC00.XHCI.RHUB.HS01</acpi_object>
+ <aml_template>5b821e5c2f055f53425f50433030584843495248554248533031085f41445201</aml_template>
+ </device>
+ <device address="0x2">
+ <acpi_object>\_SB_.PC00.XHCI.RHUB.HS02</acpi_object>
+ <aml_template>5b821f5c2f055f53425f50433030584843495248554248533032085f4144520a02</aml_template>
+ </device>
+ <device address="0x3">
+ <acpi_object>\_SB_.PC00.XHCI.RHUB.HS03</acpi_object>
+ <aml_template>5b821f5c2f055f53425f50433030584843495248554248533033085f4144520a03</aml_template>
+ </device>
+ <device address="0x4">
+ <acpi_object>\_SB_.PC00.XHCI.RHUB.HS04</acpi_object>
+ <aml_template>5b821f5c2f055f53425f50433030584843495248554248533034085f4144520a04</aml_template>
+ </device>
+ <device address="0x5">
+ <acpi_object>\_SB_.PC00.XHCI.RHUB.HS05</acpi_object>
+ <aml_template>5b821f5c2f055f53425f50433030584843495248554248533035085f4144520a05</aml_template>
+ </device>
+ <device address="0x6">
+ <acpi_object>\_SB_.PC00.XHCI.RHUB.HS06</acpi_object>
+ <aml_template>5b821f5c2f055f53425f50433030584843495248554248533036085f4144520a06</aml_template>
+ </device>
+ <device address="0x7">
+ <acpi_object>\_SB_.PC00.XHCI.RHUB.HS07</acpi_object>
+ <aml_template>5b821f5c2f055f53425f50433030584843495248554248533037085f4144520a07</aml_template>
+ </device>
+ <device address="0x8">
+ <acpi_object>\_SB_.PC00.XHCI.RHUB.HS08</acpi_object>
+ <aml_template>5b821f5c2f055f53425f50433030584843495248554248533038085f4144520a08</aml_template>
+ </device>
+ <device address="0x9">
+ <acpi_object>\_SB_.PC00.XHCI.RHUB.HS09</acpi_object>
+ <aml_template>5b821f5c2f055f53425f50433030584843495248554248533039085f4144520a09</aml_template>
+ </device>
+ <device address="0xa">
+ <acpi_object>\_SB_.PC00.XHCI.RHUB.HS10</acpi_object>
+ <aml_template>5b821f5c2f055f53425f50433030584843495248554248533130085f4144520a0a</aml_template>
+ </device>
+ <device address="0xb">
+ <acpi_object>\_SB_.PC00.XHCI.RHUB.USR1</acpi_object>
+ <aml_template>5b821f5c2f055f53425f50433030584843495248554255535231085f4144520a0b</aml_template>
+ </device>
+ <device address="0xc">
+ <acpi_object>\_SB_.PC00.XHCI.RHUB.USR2</acpi_object>
+ <aml_template>5b821f5c2f055f53425f50433030584843495248554255535232085f4144520a0c</aml_template>
+ </device>
+ <device address="0xd">
+ <acpi_object>\_SB_.PC00.XHCI.RHUB.SS01</acpi_object>
+ <aml_template>5b821f5c2f055f53425f50433030584843495248554253533031085f4144520a0d</aml_template>
+ </device>
+ <device address="0xe">
+ <acpi_object>\_SB_.PC00.XHCI.RHUB.SS02</acpi_object>
+ <aml_template>5b821f5c2f055f53425f50433030584843495248554253533032085f4144520a0e</aml_template>
+ </device>
+ <device address="0xf">
+ <acpi_object>\_SB_.PC00.XHCI.RHUB.SS03</acpi_object>
+ <aml_template>5b821f5c2f055f53425f50433030584843495248554253533033085f4144520a0f</aml_template>
+ </device>
+ <device address="0x10">
+ <acpi_object>\_SB_.PC00.XHCI.RHUB.SS04</acpi_object>
+ <aml_template>5b821f5c2f055f53425f50433030584843495248554253533034085f4144520a10</aml_template>
+ </device>
+ </device>
+ </device>
+ <device description="ICL PCH XDCI controller" address="0x140001">
+ <acpi_object>\_SB_.PC00.XDCI</acpi_object>
+ <aml_template>5b8244055c2f035f53425f5043303058444349085f53545211330a30490043004c00200050004300480020005800440043004900200063006f006e00740072006f006c006c00650072000000085f4144520c01001400</aml_template>
+ </device>
+ <device address="0x140002" id="0x51ef" description="RAM memory: Intel Corporation Alder Lake PCH Shared SRAM">
+ <vendor>0x8086</vendor>
+ <identifier>0x51ef</identifier>
+ <subsystem_vendor>0x8086</subsystem_vendor>
+ <subsystem_identifier>0x7270</subsystem_identifier>
+ <class>0x050000</class>
+ <resource type="memory" min="0x607d1d4000" max="0x607d1d7fff" len="0x4000" id="bar0" width="64" prefetchable="0"/>
+ <resource type="memory" min="0x607d1e0000" max="0x607d1e0fff" len="0x1000" id="bar2" width="64" prefetchable="0"/>
+ <capability id="Power Management"/>
+ </device>
+ <device address="0x140003">
+ <acpi_object>\_SB_.PC00.CNVW</acpi_object>
+ <aml_template>5b821a5c2f035f53425f50433030434e5657085f4144520c03001400</aml_template>
+ </device>
+ <device address="0x150000" id="0x51e8" description="Serial bus controller: Intel Corporation Alder Lake PCH Serial IO I2C Controller #0">
+ <vendor>0x8086</vendor>
+ <identifier>0x51e8</identifier>
+ <subsystem_vendor>0x8086</subsystem_vendor>
+ <subsystem_identifier>0x7270</subsystem_identifier>
+ <class>0x0c8000</class>
+ <acpi_object>\_SB_.PC00.I2C0</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303049324330085f4144520c00001500</aml_template>
+ <resource type="interrupt_pin" pin="INTA#" source="27"/>
+ <resource type="memory" min="0x4017001000" max="0x4017001fff" len="0x1000" id="bar0" width="64" prefetchable="0"/>
+ <capability id="Power Management"/>
+ <capability id="Vendor-Specific"/>
+ <dependency type="provides resources to">\_SB_.PC00.I2C0.WT03</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C0.WT05</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C0.TPD0</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C0.WT06</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C0.I0D1</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C0.TPL1</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C0.EEP1</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C0.WT01</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C0.EEP0</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C0.I0D0</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C0.PD01</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C0.WT02</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C0.HDAC</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C0.WT04</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C0.I0D2</dependency>
+ <device id="EEP0000">
+ <acpi_object>\_SB_.PC00.I2C0.EEP0</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824b055c2f045f53425f504330304932433045455030085f53544100085f4849440d4545503030303000085f55494401085f43525311260a238e1e0001000102000001060040420f0050005c5f53422e504330302e49324330007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C0</dependency>
+ </device>
+ <device id="EEP0004">
+ <acpi_object>\_SB_.PC00.I2C0.EEP1</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824b055c2f045f53425f504330304932433045455031085f53544100085f4849440d4545503030303400085f55494401085f43525311260a238e1e00010001020000010600801a060050005c5f53422e504330302e49324330007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C0</dependency>
+ </device>
+ <device id="INT00000">
+ <acpi_object>\_SB_.PC00.I2C0.HDAC</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b8245065c2f045f53425f504330304932433048444143085f53544100085f4849440d494e54303030303000085f55494401085f435253112f0a2c8e1e00010001020000010600801a060000005c5f53422e504330302e49324330008906001101770000007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <resource id="res1" type="irq" int="119"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C0</dependency>
+ </device>
+ <device id="IIC0001">
+ <acpi_object>\_SB_.PC00.I2C0.I0D0</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824b055c2f045f53425f504330304932433049304430085f53544100085f4849440d4949433030303100085f55494401085f43525311260a238e1e00010001020000010600a086010015005c5f53422e504330302e49324330007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C0</dependency>
+ </device>
+ <device id="IIC0002">
+ <acpi_object>\_SB_.PC00.I2C0.I0D1</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824b055c2f045f53425f504330304932433049304431085f53544100085f4849440d4949433030303200085f55494401085f43525311260a238e1e00010001020000010600801a060025005c5f53422e504330302e49324330007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C0</dependency>
+ </device>
+ <device id="IIC0003">
+ <acpi_object>\_SB_.PC00.I2C0.I0D2</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824b055c2f045f53425f504330304932433049304432085f53544100085f4849440d4949433030303300085f55494401085f43525311260a238e1e0001000102000001060040420f0035005c5f53422e504330302e49324330007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C0</dependency>
+ </device>
+ <device id="INT3515">
+ <acpi_object>\_SB_.PC00.I2C0.PD01</acpi_object>
+ <acpi_uid>0</acpi_uid>
+ <aml_template>5b82420c5c2f045f53425f504330304932433050443031085f4849440d494e543335313500085f55494400085f4352531143090a8f8e1e00010001020000010600801a060038005c5f53422e504330302e49324330008e1e00010001020000010600801a06003f005c5f53422e504330302e49324330008e1e00010001020000010600801a060020005c5f53422e504330302e49324330008e1e00010001020000010600801a060027005c5f53422e504330302e49324330008906000501770000007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res1"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res2"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res3"/>
+ <resource id="res4" type="irq" int="119"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C0</dependency>
+ </device>
+ <device id="PNP0C50">
+ <acpi_object>\_SB_.PC00.I2C0.TPD0</acpi_object>
+ <compatible_id>PNP0C50</compatible_id>
+ <aml_template>5b824c065c2f045f53425f504330304932433054504430085f53544100085f4849440d504e503043353000085f4349440d504e503043353000085f435253112f0a2c8e1e00010001020000010600801a060000005c5f53422e504330302e49324330008906001501770000007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <resource id="res1" type="irq" int="119"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C0</dependency>
+ </device>
+ <device id="XXXX0000">
+ <acpi_object>\_SB_.PC00.I2C0.TPL1</acpi_object>
+ <compatible_id>PNP0C50</compatible_id>
+ <acpi_uid>0</acpi_uid>
+ <aml_template>5b824e085c2f045f53425f504330304932433054504c31085f53544100085f4849440d585858583030303000085f4349440d504e503043353000085f55494400085f435253114a040a468e1e00010001020000010600801a060000005c5f53422e504330302e49324330008c2000010001000200010000000017000019002300000000005c5f53422e47504930007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGPIOConnection" id="res1"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C0</dependency>
+ <dependency type="consumes resources from">\_SB_.GPI0</dependency>
+ </device>
+ <device id="STK0001">
+ <acpi_object>\_SB_.PC00.I2C0.WT01</acpi_object>
+ <aml_template>5b8245055c2f045f53425f504330304932433057543031085f53544100085f4849440d53544b3030303100085f43525311260a238e1e00010001020000010600a08601007f005c5f53422e504330302e49324330007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C0</dependency>
+ </device>
+ <device id="STK0002">
+ <acpi_object>\_SB_.PC00.I2C0.WT02</acpi_object>
+ <aml_template>5b8245055c2f045f53425f504330304932433057543032085f53544100085f4849440d53544b3030303200085f43525311260a238e1e00010001020000010600a086010011005c5f53422e504330302e49324330007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C0</dependency>
+ </device>
+ <device id="STK0003">
+ <acpi_object>\_SB_.PC00.I2C0.WT03</acpi_object>
+ <aml_template>5b8245055c2f045f53425f504330304932433057543033085f53544100085f4849440d53544b3030303300085f43525311260a238e1e00010001020000010600801a060012005c5f53422e504330302e49324330007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C0</dependency>
+ </device>
+ <device id="STK0004">
+ <acpi_object>\_SB_.PC00.I2C0.WT04</acpi_object>
+ <aml_template>5b8245055c2f045f53425f504330304932433057543034085f53544100085f4849440d53544b3030303400085f43525311260a238e1e0001000102000001060040420f0013005c5f53422e504330302e49324330007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C0</dependency>
+ </device>
+ <device id="STK0005">
+ <acpi_object>\_SB_.PC00.I2C0.WT05</acpi_object>
+ <aml_template>5b8245055c2f045f53425f504330304932433057543035085f53544100085f4849440d53544b3030303500085f43525311260a238e1e00010001020000010600c05c150014005c5f53422e504330302e49324330007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C0</dependency>
+ </device>
+ <device id="STK0006">
+ <acpi_object>\_SB_.PC00.I2C0.WT06</acpi_object>
+ <aml_template>5b8245055c2f045f53425f504330304932433057543036085f53544100085f4849440d53544b3030303600085f43525311260a238e1e0001000102000001060040e1330015005c5f53422e504330302e49324330007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C0</dependency>
+ </device>
+ </device>
+ <device address="0x150001" id="0x51e9" description="Serial bus controller: Intel Corporation Alder Lake PCH Serial IO I2C Controller #1">
+ <vendor>0x8086</vendor>
+ <identifier>0x51e9</identifier>
+ <subsystem_vendor>0x8086</subsystem_vendor>
+ <subsystem_identifier>0x7270</subsystem_identifier>
+ <class>0x0c8000</class>
+ <acpi_object>\_SB_.PC00.I2C1</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303049324331085f4144520c01001500</aml_template>
+ <resource type="interrupt_pin" pin="INTB#" source="40"/>
+ <resource type="memory" min="0x4017002000" max="0x4017002fff" len="0x1000" id="bar0" width="64" prefetchable="0"/>
+ <capability id="Power Management"/>
+ <capability id="Vendor-Specific"/>
+ <dependency type="provides resources to">\_SB_.PC00.I2C1.TPD0</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C1.WT13</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C1.EEP3</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.FLM1</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C1.I1D0</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C1.TPL1</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C1.WT15</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C1.PD01</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C1.WT12</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C1.I1D2</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C1.WT11</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.FLM0</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C1.WT14</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C1.I1D1</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C1.EEP2</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C1.WT16</dependency>
+ <device id="EEP1000">
+ <acpi_object>\_SB_.PC00.I2C1.EEP2</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824b055c2f045f53425f504330304932433145455032085f53544100085f4849440d4545503130303000085f55494401085f43525311260a238e1e0001000102000001060040420f0050005c5f53422e504330302e49324331007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C1</dependency>
+ </device>
+ <device id="EEP1004">
+ <acpi_object>\_SB_.PC00.I2C1.EEP3</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824b055c2f045f53425f504330304932433145455033085f53544100085f4849440d4545503130303400085f55494401085f43525311260a238e1e00010001020000010600801a060050005c5f53422e504330302e49324331007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C1</dependency>
+ </device>
+ <device id="IIC1001">
+ <acpi_object>\_SB_.PC00.I2C1.I1D0</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824b055c2f045f53425f504330304932433149314430085f53544100085f4849440d4949433130303100085f55494401085f43525311260a238e1e00010001020000010600a086010015005c5f53422e504330302e49324331007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C1</dependency>
+ </device>
+ <device id="IIC1002">
+ <acpi_object>\_SB_.PC00.I2C1.I1D1</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824b055c2f045f53425f504330304932433149314431085f53544100085f4849440d4949433130303200085f55494401085f43525311260a238e1e00010001020000010600801a060025005c5f53422e504330302e49324331007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C1</dependency>
+ </device>
+ <device id="IIC1003">
+ <acpi_object>\_SB_.PC00.I2C1.I1D2</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824b055c2f045f53425f504330304932433149314432085f53544100085f4849440d4949433130303300085f55494401085f43525311260a238e1e0001000102000001060040420f0035005c5f53422e504330302e49324331007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C1</dependency>
+ </device>
+ <device id="INT3515">
+ <acpi_object>\_SB_.PC00.I2C1.PD01</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b82420c5c2f045f53425f504330304932433150443031085f4849440d494e543335313500085f55494401085f4352531143090a8f8e1e00010001020000010600801a060038005c5f53422e504330302e49324331008e1e00010001020000010600801a06003f005c5f53422e504330302e49324331008e1e00010001020000010600801a060020005c5f53422e504330302e49324331008e1e00010001020000010600801a060027005c5f53422e504330302e49324331008906000501770000007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res1"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res2"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res3"/>
+ <resource id="res4" type="irq" int="119"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C1</dependency>
+ </device>
+ <device id="PNP0C50">
+ <acpi_object>\_SB_.PC00.I2C1.TPD0</acpi_object>
+ <compatible_id>PNP0C50</compatible_id>
+ <aml_template>5b824c065c2f045f53425f504330304932433154504430085f53544100085f4849440d504e503043353000085f4349440d504e503043353000085f435253112f0a2c8e1e00010001020000010600801a060000005c5f53422e504330302e49324331008906001501770000007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <resource id="res1" type="irq" int="119"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C1</dependency>
+ </device>
+ <device id="XXXX0000">
+ <acpi_object>\_SB_.PC00.I2C1.TPL1</acpi_object>
+ <compatible_id>PNP0C50</compatible_id>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e085c2f045f53425f504330304932433154504c31085f53544100085f4849440d585858583030303000085f4349440d504e503043353000085f55494401085f435253114a040a468e1e00010001020000010600801a060000005c5f53422e504330302e49324331008c2000010001000200010000000017000019002300000000005c5f53422e47504930007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGPIOConnection" id="res1"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.GPI0</dependency>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C1</dependency>
+ </device>
+ <device id="STK0001">
+ <acpi_object>\_SB_.PC00.I2C1.WT11</acpi_object>
+ <aml_template>5b8245055c2f045f53425f504330304932433157543131085f53544100085f4849440d53544b3030303100085f43525311260a238e1e00010001020000010600a08601007f005c5f53422e504330302e49324331007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C1</dependency>
+ </device>
+ <device id="STK0002">
+ <acpi_object>\_SB_.PC00.I2C1.WT12</acpi_object>
+ <aml_template>5b8245055c2f045f53425f504330304932433157543132085f53544100085f4849440d53544b3030303200085f43525311260a238e1e00010001020000010600a086010011005c5f53422e504330302e49324331007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C1</dependency>
+ </device>
+ <device id="STK0003">
+ <acpi_object>\_SB_.PC00.I2C1.WT13</acpi_object>
+ <aml_template>5b8245055c2f045f53425f504330304932433157543133085f53544100085f4849440d53544b3030303300085f43525311260a238e1e00010001020000010600801a060012005c5f53422e504330302e49324331007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C1</dependency>
+ </device>
+ <device id="STK0004">
+ <acpi_object>\_SB_.PC00.I2C1.WT14</acpi_object>
+ <aml_template>5b8245055c2f045f53425f504330304932433157543134085f53544100085f4849440d53544b3030303400085f43525311260a238e1e0001000102000001060040420f0013005c5f53422e504330302e49324331007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C1</dependency>
+ </device>
+ <device id="STK0005">
+ <acpi_object>\_SB_.PC00.I2C1.WT15</acpi_object>
+ <aml_template>5b8245055c2f045f53425f504330304932433157543135085f53544100085f4849440d53544b3030303500085f43525311260a238e1e00010001020000010600c05c150014005c5f53422e504330302e49324331007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C1</dependency>
+ </device>
+ <device id="STK0006">
+ <acpi_object>\_SB_.PC00.I2C1.WT16</acpi_object>
+ <aml_template>5b8245055c2f045f53425f504330304932433157543136085f53544100085f4849440d53544b3030303600085f43525311260a238e1e0001000102000001060040e1330015005c5f53422e504330302e49324331007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C1</dependency>
+ </device>
+ </device>
+ <device address="0x150002">
+ <acpi_object>\_SB_.PC00.I2C2</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303049324332085f4144520c02001500</aml_template>
+ <dependency type="provides resources to">\_SB_.PC00.I2C2.CAM0</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C2.TPD0</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C2.TPL1</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C2.WT21</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C2.WT26</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C2.I2D0</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C2.PMIC</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C2.WT23</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.FLM2</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C2.EEP5</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C2.I2D2</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C2.WT24</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C2.EEP4</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C2.WT25</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.LNK2</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C2.PD01</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C2.I2D1</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C2.WT22</dependency>
+ <device id="INT3471">
+ <acpi_object>\_SB_.PC00.I2C2.CAM0</acpi_object>
+ <acpi_uid>0</acpi_uid>
+ <aml_template>5b8243105c2f045f53425f504330304932433243414d30085f53544100085f4849440d494e543334373100085f5549440d3000085f435253114c0c0ac88e1e00010001020000010600801a060010005c5f53422e504330302e49324332008e1e00010001020000010600801a06000e005c5f53422e504330302e49324332008e1e00010001020000010600801a060050005c5f53422e504330302e49324332008e1e00010001020000010600801a060051005c5f53422e504330302e49324332008e1e00010001020000010600801a060052005c5f53422e504330302e49324332008e1e00010001020000010600801a060053005c5f53422e504330302e49324332007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res1"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res2"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res3"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res4"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res5"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C2</dependency>
+ </device>
+ <device id="EEP2000">
+ <acpi_object>\_SB_.PC00.I2C2.EEP4</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824b055c2f045f53425f504330304932433245455034085f53544100085f4849440d4545503230303000085f55494401085f43525311260a238e1e0001000102000001060040420f0050005c5f53422e504330302e49324332007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C2</dependency>
+ </device>
+ <device id="EEP2004">
+ <acpi_object>\_SB_.PC00.I2C2.EEP5</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824b055c2f045f53425f504330304932433245455035085f53544100085f4849440d4545503230303400085f55494401085f43525311260a238e1e00010001020000010600801a060050005c5f53422e504330302e49324332007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C2</dependency>
+ </device>
+ <device id="IIC2001">
+ <acpi_object>\_SB_.PC00.I2C2.I2D0</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824b055c2f045f53425f504330304932433249324430085f53544100085f4849440d4949433230303100085f55494401085f43525311260a238e1e00010001020000010600a086010015005c5f53422e504330302e49324332007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C2</dependency>
+ </device>
+ <device id="IIC2002">
+ <acpi_object>\_SB_.PC00.I2C2.I2D1</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824b055c2f045f53425f504330304932433249324431085f53544100085f4849440d4949433230303200085f55494401085f43525311260a238e1e00010001020000010600801a060025005c5f53422e504330302e49324332007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C2</dependency>
+ </device>
+ <device id="IIC2003">
+ <acpi_object>\_SB_.PC00.I2C2.I2D2</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824b055c2f045f53425f504330304932433249324432085f53544100085f4849440d4949433230303300085f55494401085f43525311260a238e1e0001000102000001060040420f0035005c5f53422e504330302e49324332007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C2</dependency>
+ </device>
+ <device id="INT3515">
+ <acpi_object>\_SB_.PC00.I2C2.PD01</acpi_object>
+ <acpi_uid>2</acpi_uid>
+ <aml_template>5b8241085c2f045f53425f504330304932433250443031085f4849440d494e543335313500085f5549440a02085f4352531141050a4d8e1e00010001020000010600801a060021005c5f53422e504330302e49324332008e1e00010001020000010600801a060025005c5f53422e504330302e49324332008906000501770000007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res1"/>
+ <resource id="res2" type="irq" int="119"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C2</dependency>
+ </device>
+ <device id="INT3472">
+ <acpi_object>\_SB_.PC00.I2C2.PMIC</acpi_object>
+ <acpi_uid>0</acpi_uid>
+ <aml_template>5b824d055c2f045f53425f5043303049324332504d4943085f53544100085f4849440d494e543334373200085f5549440d3000085f43525311260a238e1e00010001020000010600801a06004c005c5f53422e504330302e49324332007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C2</dependency>
+ </device>
+ <device id="PNP0C50">
+ <acpi_object>\_SB_.PC00.I2C2.TPD0</acpi_object>
+ <compatible_id>PNP0C50</compatible_id>
+ <aml_template>5b824c065c2f045f53425f504330304932433254504430085f53544100085f4849440d504e503043353000085f4349440d504e503043353000085f435253112f0a2c8e1e00010001020000010600801a060000005c5f53422e504330302e49324332008906001501770000007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <resource id="res1" type="irq" int="119"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C2</dependency>
+ </device>
+ <device id="XXXX0000">
+ <acpi_object>\_SB_.PC00.I2C2.TPL1</acpi_object>
+ <compatible_id>PNP0C50</compatible_id>
+ <acpi_uid>2</acpi_uid>
+ <aml_template>5b824f085c2f045f53425f504330304932433254504c31085f53544100085f4849440d585858583030303000085f4349440d504e503043353000085f5549440a02085f435253114a040a468e1e00010001020000010600801a060000005c5f53422e504330302e49324332008c2000010001000200010000000017000019002300000000005c5f53422e47504930007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGPIOConnection" id="res1"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.GPI0</dependency>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C2</dependency>
+ </device>
+ <device id="STK0001">
+ <acpi_object>\_SB_.PC00.I2C2.WT21</acpi_object>
+ <aml_template>5b8245055c2f045f53425f504330304932433257543231085f53544100085f4849440d53544b3030303100085f43525311260a238e1e00010001020000010600a08601007f005c5f53422e504330302e49324332007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C2</dependency>
+ </device>
+ <device id="STK0002">
+ <acpi_object>\_SB_.PC00.I2C2.WT22</acpi_object>
+ <aml_template>5b8245055c2f045f53425f504330304932433257543232085f53544100085f4849440d53544b3030303200085f43525311260a238e1e00010001020000010600a086010011005c5f53422e504330302e49324332007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C2</dependency>
+ </device>
+ <device id="STK0003">
+ <acpi_object>\_SB_.PC00.I2C2.WT23</acpi_object>
+ <aml_template>5b8245055c2f045f53425f504330304932433257543233085f53544100085f4849440d53544b3030303300085f43525311260a238e1e00010001020000010600801a060012005c5f53422e504330302e49324332007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C2</dependency>
+ </device>
+ <device id="STK0004">
+ <acpi_object>\_SB_.PC00.I2C2.WT24</acpi_object>
+ <aml_template>5b8245055c2f045f53425f504330304932433257543234085f53544100085f4849440d53544b3030303400085f43525311260a238e1e0001000102000001060040420f0013005c5f53422e504330302e49324332007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C2</dependency>
+ </device>
+ <device id="STK0005">
+ <acpi_object>\_SB_.PC00.I2C2.WT25</acpi_object>
+ <aml_template>5b8245055c2f045f53425f504330304932433257543235085f53544100085f4849440d53544b3030303500085f43525311260a238e1e00010001020000010600c05c150014005c5f53422e504330302e49324332007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C2</dependency>
+ </device>
+ <device id="STK0006">
+ <acpi_object>\_SB_.PC00.I2C2.WT26</acpi_object>
+ <aml_template>5b8245055c2f045f53425f504330304932433257543236085f53544100085f4849440d53544b3030303600085f43525311260a238e1e0001000102000001060040e1330015005c5f53422e504330302e49324332007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C2</dependency>
+ </device>
+ </device>
+ <device address="0x150003">
+ <acpi_object>\_SB_.PC00.I2C3</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303049324333085f4144520c03001500</aml_template>
+ <dependency type="provides resources to">\_SB_.PC00.CLP1</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.LNK5</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.FLM3</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.FLM4</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.CLP3</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C3.PD01</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C3.WT34</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.CLP2</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.CLP5</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C3.TPL1</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.LNK3</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C3.WT32</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C3.WT33</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.FLM5</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C3.I3D0</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C3.I3D2</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.LNK4</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C3.I3D1</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.CLP0</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C3.EEP7</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C3.WT35</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.CLP4</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C3.EEP6</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C3.TPD0</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C3.WT36</dependency>
+ <device id="EEP3000">
+ <acpi_object>\_SB_.PC00.I2C3.EEP6</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824b055c2f045f53425f504330304932433345455036085f53544100085f4849440d4545503330303000085f55494401085f43525311260a238e1e0001000102000001060040420f0050005c5f53422e504330302e49324333007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C3</dependency>
+ </device>
+ <device id="EEP3004">
+ <acpi_object>\_SB_.PC00.I2C3.EEP7</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824b055c2f045f53425f504330304932433345455037085f53544100085f4849440d4545503330303400085f55494401085f43525311260a238e1e00010001020000010600801a060050005c5f53422e504330302e49324333007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C3</dependency>
+ </device>
+ <device id="IIC3001">
+ <acpi_object>\_SB_.PC00.I2C3.I3D0</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824b055c2f045f53425f504330304932433349334430085f53544100085f4849440d4949433330303100085f55494401085f43525311260a238e1e00010001020000010600a086010015005c5f53422e504330302e49324333007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C3</dependency>
+ </device>
+ <device id="IIC3002">
+ <acpi_object>\_SB_.PC00.I2C3.I3D1</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824b055c2f045f53425f504330304932433349334431085f53544100085f4849440d4949433330303200085f55494401085f43525311260a238e1e00010001020000010600801a060025005c5f53422e504330302e49324333007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C3</dependency>
+ </device>
+ <device id="IIC3003">
+ <acpi_object>\_SB_.PC00.I2C3.I3D2</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824b055c2f045f53425f504330304932433349334432085f53544100085f4849440d4949433330303300085f55494401085f43525311260a238e1e0001000102000001060040420f0035005c5f53422e504330302e49324333007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C3</dependency>
+ </device>
+ <device id="INT3515">
+ <acpi_object>\_SB_.PC00.I2C3.PD01</acpi_object>
+ <acpi_uid>3</acpi_uid>
+ <aml_template>5b82430c5c2f045f53425f504330304932433350443031085f4849440d494e543335313500085f5549440a03085f4352531143090a8f8e1e00010001020000010600801a060038005c5f53422e504330302e49324333008e1e00010001020000010600801a06003f005c5f53422e504330302e49324333008e1e00010001020000010600801a060020005c5f53422e504330302e49324333008e1e00010001020000010600801a060027005c5f53422e504330302e49324333008906000501770000007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res1"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res2"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res3"/>
+ <resource id="res4" type="irq" int="119"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C3</dependency>
+ </device>
+ <device id="PNP0C50">
+ <acpi_object>\_SB_.PC00.I2C3.TPD0</acpi_object>
+ <compatible_id>PNP0C50</compatible_id>
+ <aml_template>5b824c065c2f045f53425f504330304932433354504430085f53544100085f4849440d504e503043353000085f4349440d504e503043353000085f435253112f0a2c8e1e00010001020000010600801a060000005c5f53422e504330302e49324333008906001501770000007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <resource id="res1" type="irq" int="119"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C3</dependency>
+ </device>
+ <device id="XXXX0000">
+ <acpi_object>\_SB_.PC00.I2C3.TPL1</acpi_object>
+ <compatible_id>PNP0C50</compatible_id>
+ <acpi_uid>3</acpi_uid>
+ <aml_template>5b824f085c2f045f53425f504330304932433354504c31085f53544100085f4849440d585858583030303000085f4349440d504e503043353000085f5549440a03085f435253114a040a468e1e00010001020000010600801a060000005c5f53422e504330302e49324333008c2000010001000200010000000017000019002300000000005c5f53422e47504930007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGPIOConnection" id="res1"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C3</dependency>
+ <dependency type="consumes resources from">\_SB_.GPI0</dependency>
+ </device>
+ <device id="STK0001">
+ <acpi_object>\_SB_.PC00.I2C3.WT31</acpi_object>
+ <aml_template>5b82285c2f045f53425f504330304932433357543331085f53544100085f4849440d53544b3030303100</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ </device>
+ <device id="STK0002">
+ <acpi_object>\_SB_.PC00.I2C3.WT32</acpi_object>
+ <aml_template>5b8245055c2f045f53425f504330304932433357543332085f53544100085f4849440d53544b3030303200085f43525311260a238e1e00010001020000010600a086010011005c5f53422e504330302e49324333007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C3</dependency>
+ </device>
+ <device id="STK0003">
+ <acpi_object>\_SB_.PC00.I2C3.WT33</acpi_object>
+ <aml_template>5b8245055c2f045f53425f504330304932433357543333085f53544100085f4849440d53544b3030303300085f43525311260a238e1e00010001020000010600801a060012005c5f53422e504330302e49324333007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C3</dependency>
+ </device>
+ <device id="STK0004">
+ <acpi_object>\_SB_.PC00.I2C3.WT34</acpi_object>
+ <aml_template>5b8245055c2f045f53425f504330304932433357543334085f53544100085f4849440d53544b3030303400085f43525311260a238e1e0001000102000001060040420f0013005c5f53422e504330302e49324333007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C3</dependency>
+ </device>
+ <device id="STK0005">
+ <acpi_object>\_SB_.PC00.I2C3.WT35</acpi_object>
+ <aml_template>5b8245055c2f045f53425f504330304932433357543335085f53544100085f4849440d53544b3030303500085f43525311260a238e1e00010001020000010600c05c150014005c5f53422e504330302e49324333007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C3</dependency>
+ </device>
+ <device id="STK0006">
+ <acpi_object>\_SB_.PC00.I2C3.WT36</acpi_object>
+ <aml_template>5b8245055c2f045f53425f504330304932433357543336085f53544100085f4849440d53544b3030303600085f43525311260a238e1e0001000102000001060040e1330015005c5f53422e504330302e49324333007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C3</dependency>
+ </device>
+ </device>
+ <device address="0x160000" id="0x51e0" description="Communication controller: Intel Corporation Alder Lake PCH HECI Controller">
+ <vendor>0x8086</vendor>
+ <identifier>0x51e0</identifier>
+ <subsystem_vendor>0x8086</subsystem_vendor>
+ <subsystem_identifier>0x7270</subsystem_identifier>
+ <class>0x078000</class>
+ <acpi_object>\_SB_.PC00.HECI</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303048454349085f4144520c00001600</aml_template>
+ <resource type="interrupt_pin" pin="INTA#" source="16"/>
+ <resource type="memory" min="0x607d1dd000" max="0x607d1ddfff" len="0x1000" id="bar0" width="64" prefetchable="0"/>
+ <capability id="Power Management"/>
+ <capability id="MSI">
+ <count>1</count>
+ <capability id="64-bit address"/>
+ </capability>
+ <capability id="Vendor-Specific"/>
+ </device>
+ <device address="0x160003" id="0x51e3" description="Serial controller: Intel Corporation">
+ <vendor>0x8086</vendor>
+ <identifier>0x51e3</identifier>
+ <subsystem_vendor>0x8086</subsystem_vendor>
+ <subsystem_identifier>0x7270</subsystem_identifier>
+ <class>0x070002</class>
+ <resource type="interrupt_pin" pin="INTD#" source="19"/>
+ <resource type="io_port" min="0x3060" max="0x3067" len="0x8" id="bar0"/>
+ <resource type="memory" min="0x86321000" max="0x86321fff" len="0x1000" id="bar1" width="32" prefetchable="0"/>
+ <capability id="MSI">
+ <count>1</count>
+ <capability id="64-bit address"/>
+ </capability>
+ <capability id="Power Management"/>
+ </device>
+ <device address="0x160004">
+ <acpi_object>\_SB_.PC00.HEC3</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303048454333085f4144520c04001600</aml_template>
+ </device>
+ <device address="0x170000">
+ <acpi_object>\_SB_.PC00.SAT0</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303053415430085f4144520c00001700</aml_template>
+ <device address="0xffff">
+ <acpi_object>\_SB_.PC00.SAT0.PRT0</acpi_object>
+ <aml_template>5b821c5c2f045f53425f504330305341543050525430085f4144520bffff</aml_template>
+ </device>
+ <device address="0x1ffff">
+ <acpi_object>\_SB_.PC00.SAT0.PRT1</acpi_object>
+ <aml_template>5b821e5c2f045f53425f504330305341543050525431085f4144520cffff0100</aml_template>
+ </device>
+ <device address="0x2ffff">
+ <acpi_object>\_SB_.PC00.SAT0.PRT2</acpi_object>
+ <aml_template>5b821e5c2f045f53425f504330305341543050525432085f4144520cffff0200</aml_template>
+ </device>
+ <device address="0x3ffff">
+ <acpi_object>\_SB_.PC00.SAT0.PRT3</acpi_object>
+ <aml_template>5b821e5c2f045f53425f504330305341543050525433085f4144520cffff0300</aml_template>
+ </device>
+ <device address="0x4ffff">
+ <acpi_object>\_SB_.PC00.SAT0.PRT4</acpi_object>
+ <aml_template>5b821e5c2f045f53425f504330305341543050525434085f4144520cffff0400</aml_template>
+ </device>
+ <device address="0x5ffff">
+ <acpi_object>\_SB_.PC00.SAT0.PRT5</acpi_object>
+ <aml_template>5b821e5c2f045f53425f504330305341543050525435085f4144520cffff0500</aml_template>
+ </device>
+ <device address="0x6ffff">
+ <acpi_object>\_SB_.PC00.SAT0.PRT6</acpi_object>
+ <aml_template>5b821e5c2f045f53425f504330305341543050525436085f4144520cffff0600</aml_template>
+ </device>
+ <device address="0x7ffff">
+ <acpi_object>\_SB_.PC00.SAT0.PRT7</acpi_object>
+ <aml_template>5b821e5c2f045f53425f504330305341543050525437085f4144520cffff0700</aml_template>
+ </device>
+ </device>
+ <device address="0x190000" id="0x51c5" description="Serial bus controller: Intel Corporation Alder Lake-P Serial IO I2C Controller #0">
+ <vendor>0x8086</vendor>
+ <identifier>0x51c5</identifier>
+ <subsystem_vendor>0x8086</subsystem_vendor>
+ <subsystem_identifier>0x7270</subsystem_identifier>
+ <class>0x0c8000</class>
+ <acpi_object>\_SB_.PC00.I2C4</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303049324334085f4144520c00001900</aml_template>
+ <resource type="interrupt_pin" pin="INTA#" source="31"/>
+ <resource type="memory" min="0x4017003000" max="0x4017003fff" len="0x1000" id="bar0" width="64" prefetchable="0"/>
+ <capability id="Power Management"/>
+ <capability id="Vendor-Specific"/>
+ <dependency type="provides resources to">\_SB_.PC00.I2C4.WT46</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C4.I4D2</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C4.WT45</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C4.CAM1</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C4.WT44</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C4.I4D0</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C4.WT41</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C4.I4D1</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C4.EEP9</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C4.WT43</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C4.EEP8</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C4.WT42</dependency>
+ <device id="INT3474">
+ <acpi_object>\_SB_.PC00.I2C4.CAM1</acpi_object>
+ <acpi_uid>0</acpi_uid>
+ <aml_template>5b824d055c2f045f53425f504330304932433443414d31085f53544100085f4849440d494e543334373400085f5549440d3000085f43525311260a238e1e00010001020000010600801a060036005c5f53422e504330302e49324334007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C4</dependency>
+ </device>
+ <device id="EEP4000">
+ <acpi_object>\_SB_.PC00.I2C4.EEP8</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824b055c2f045f53425f504330304932433445455038085f53544100085f4849440d4545503430303000085f55494401085f43525311260a238e1e0001000102000001060040420f0050005c5f53422e504330302e49324334007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C4</dependency>
+ </device>
+ <device id="EEP4004">
+ <acpi_object>\_SB_.PC00.I2C4.EEP9</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824b055c2f045f53425f504330304932433445455039085f53544100085f4849440d4545503430303400085f55494401085f43525311260a238e1e00010001020000010600801a060050005c5f53422e504330302e49324334007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C4</dependency>
+ </device>
+ <device id="IIC4001">
+ <acpi_object>\_SB_.PC00.I2C4.I4D0</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824b055c2f045f53425f504330304932433449344430085f53544100085f4849440d4949433430303100085f55494401085f43525311260a238e1e00010001020000010600a086010015005c5f53422e504330302e49324334007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C4</dependency>
+ </device>
+ <device id="IIC4002">
+ <acpi_object>\_SB_.PC00.I2C4.I4D1</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824b055c2f045f53425f504330304932433449344431085f53544100085f4849440d4949433430303200085f55494401085f43525311260a238e1e00010001020000010600801a060025005c5f53422e504330302e49324334007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C4</dependency>
+ </device>
+ <device id="IIC4003">
+ <acpi_object>\_SB_.PC00.I2C4.I4D2</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824b055c2f045f53425f504330304932433449344432085f53544100085f4849440d4949433430303300085f55494401085f43525311260a238e1e0001000102000001060040420f0035005c5f53422e504330302e49324334007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C4</dependency>
+ </device>
+ <device id="STK0001">
+ <acpi_object>\_SB_.PC00.I2C4.WT41</acpi_object>
+ <aml_template>5b8245055c2f045f53425f504330304932433457543431085f53544100085f4849440d53544b3030303100085f43525311260a238e1e00010001020000010600a08601007f005c5f53422e504330302e49324334007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C4</dependency>
+ </device>
+ <device id="STK0002">
+ <acpi_object>\_SB_.PC00.I2C4.WT42</acpi_object>
+ <aml_template>5b8245055c2f045f53425f504330304932433457543432085f53544100085f4849440d53544b3030303200085f43525311260a238e1e00010001020000010600a086010011005c5f53422e504330302e49324334007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C4</dependency>
+ </device>
+ <device id="STK0003">
+ <acpi_object>\_SB_.PC00.I2C4.WT43</acpi_object>
+ <aml_template>5b8245055c2f045f53425f504330304932433457543433085f53544100085f4849440d53544b3030303300085f43525311260a238e1e00010001020000010600801a060012005c5f53422e504330302e49324334007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C4</dependency>
+ </device>
+ <device id="STK0004">
+ <acpi_object>\_SB_.PC00.I2C4.WT44</acpi_object>
+ <aml_template>5b8245055c2f045f53425f504330304932433457543434085f53544100085f4849440d53544b3030303400085f43525311260a238e1e0001000102000001060040420f0013005c5f53422e504330302e49324334007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C4</dependency>
+ </device>
+ <device id="STK0005">
+ <acpi_object>\_SB_.PC00.I2C4.WT45</acpi_object>
+ <aml_template>5b8245055c2f045f53425f504330304932433457543435085f53544100085f4849440d53544b3030303500085f43525311260a238e1e00010001020000010600c05c150014005c5f53422e504330302e49324334007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C4</dependency>
+ </device>
+ <device id="STK0006">
+ <acpi_object>\_SB_.PC00.I2C4.WT46</acpi_object>
+ <aml_template>5b8245055c2f045f53425f504330304932433457543436085f53544100085f4849440d53544b3030303600085f43525311260a238e1e0001000102000001060040e1330015005c5f53422e504330302e49324334007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C4</dependency>
+ </device>
+ </device>
+ <device address="0x190001" id="0x51c6" description="Serial bus controller: Intel Corporation Alder Lake-P Serial IO I2C Controller #1">
+ <vendor>0x8086</vendor>
+ <identifier>0x51c6</identifier>
+ <subsystem_vendor>0x8086</subsystem_vendor>
+ <subsystem_identifier>0x7270</subsystem_identifier>
+ <class>0x0c8000</class>
+ <acpi_object>\_SB_.PC00.I2C5</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303049324335085f4144520c01001900</aml_template>
+ <resource type="interrupt_pin" pin="INTB#" source="32"/>
+ <resource type="memory" min="0x4017004000" max="0x4017004fff" len="0x1000" id="bar0" width="64" prefetchable="0"/>
+ <capability id="Power Management"/>
+ <capability id="Vendor-Specific"/>
+ <dependency type="provides resources to">\_SB_.PC00.I2C5.WT51</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C5.PA03</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C5.EEPA</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C5.PA01</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C5.PA02</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C5.PA04</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C5.WT55</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C5.WT56</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C5.WT52</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C5.I5D2</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C5.WT53</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C5.WT54</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C5.I5D1</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C5.EEPB</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C5.I5D0</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.LNK0</dependency>
+ <device id="EEP5000">
+ <acpi_object>\_SB_.PC00.I2C5.EEPA</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824b055c2f045f53425f504330304932433545455041085f53544100085f4849440d4545503530303000085f55494401085f43525311260a238e1e0001000102000001060040420f0050005c5f53422e504330302e49324335007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C5</dependency>
+ </device>
+ <device id="EEP5004">
+ <acpi_object>\_SB_.PC00.I2C5.EEPB</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824b055c2f045f53425f504330304932433545455042085f53544100085f4849440d4545503530303400085f55494401085f43525311260a238e1e00010001020000010600801a060050005c5f53422e504330302e49324335007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C5</dependency>
+ </device>
+ <device id="IIC5001">
+ <acpi_object>\_SB_.PC00.I2C5.I5D0</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824b055c2f045f53425f504330304932433549354430085f53544100085f4849440d4949433530303100085f55494401085f43525311260a238e1e00010001020000010600a086010015005c5f53422e504330302e49324335007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C5</dependency>
+ </device>
+ <device id="IIC5002">
+ <acpi_object>\_SB_.PC00.I2C5.I5D1</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824b055c2f045f53425f504330304932433549354431085f53544100085f4849440d4949433530303200085f55494401085f43525311260a238e1e00010001020000010600801a060025005c5f53422e504330302e49324335007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C5</dependency>
+ </device>
+ <device id="IIC5003">
+ <acpi_object>\_SB_.PC00.I2C5.I5D2</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824b055c2f045f53425f504330304932433549354432085f53544100085f4849440d4949433530303300085f55494401085f43525311260a238e1e0001000102000001060040420f0035005c5f53422e504330302e49324335007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C5</dependency>
+ </device>
+ <device id="MCHP1930">
+ <acpi_object>\_SB_.PC00.I2C5.PA01</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824c055c2f045f53425f504330304932433550413031085f53544100085f4849440d4d4348503139333000085f55494401085f43525311260a238e1e00010001020000010600801a060018005c5f53422e504330302e49324335007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C5</dependency>
+ </device>
+ <device id="MCHP1930">
+ <acpi_object>\_SB_.PC00.I2C5.PA02</acpi_object>
+ <acpi_uid>2</acpi_uid>
+ <aml_template>5b824d055c2f045f53425f504330304932433550413032085f53544100085f4849440d4d4348503139333000085f5549440a02085f43525311260a238e1e00010001020000010600801a06001e005c5f53422e504330302e49324335007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C5</dependency>
+ </device>
+ <device id="MCHP1930">
+ <acpi_object>\_SB_.PC00.I2C5.PA03</acpi_object>
+ <acpi_uid>3</acpi_uid>
+ <aml_template>5b824d055c2f045f53425f504330304932433550413033085f53544100085f4849440d4d4348503139333000085f5549440a03085f43525311260a238e1e00010001020000010600801a060011005c5f53422e504330302e49324335007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C5</dependency>
+ </device>
+ <device id="MCHP1930">
+ <acpi_object>\_SB_.PC00.I2C5.PA04</acpi_object>
+ <acpi_uid>4</acpi_uid>
+ <aml_template>5b824d055c2f045f53425f504330304932433550413034085f53544100085f4849440d4d4348503139333000085f5549440a04085f43525311260a238e1e00010001020000010600801a060015005c5f53422e504330302e49324335007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C5</dependency>
+ </device>
+ <device id="00IT5211">
+ <acpi_object>\_SB_.PC00.I2C5.SMKB</acpi_object>
+ <compatible_id>PNP0C50</compatible_id>
+ <acpi_uid>5</acpi_uid>
+ <aml_template>5b823e5c2f045f53425f5043303049324335534d4b42085f53544100085f4849440d303049543532313100085f4349440d504e503043353000085f5549440a05</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ </device>
+ <device id="STK0001">
+ <acpi_object>\_SB_.PC00.I2C5.WT51</acpi_object>
+ <aml_template>5b8245055c2f045f53425f504330304932433557543531085f53544100085f4849440d53544b3030303100085f43525311260a238e1e00010001020000010600a08601007f005c5f53422e504330302e49324335007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C5</dependency>
+ </device>
+ <device id="STK0002">
+ <acpi_object>\_SB_.PC00.I2C5.WT52</acpi_object>
+ <aml_template>5b8245055c2f045f53425f504330304932433557543532085f53544100085f4849440d53544b3030303200085f43525311260a238e1e00010001020000010600a086010011005c5f53422e504330302e49324335007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C5</dependency>
+ </device>
+ <device id="STK0003">
+ <acpi_object>\_SB_.PC00.I2C5.WT53</acpi_object>
+ <aml_template>5b8245055c2f045f53425f504330304932433557543533085f53544100085f4849440d53544b3030303300085f43525311260a238e1e00010001020000010600801a060012005c5f53422e504330302e49324335007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C5</dependency>
+ </device>
+ <device id="STK0004">
+ <acpi_object>\_SB_.PC00.I2C5.WT54</acpi_object>
+ <aml_template>5b8245055c2f045f53425f504330304932433557543534085f53544100085f4849440d53544b3030303400085f43525311260a238e1e0001000102000001060040420f0013005c5f53422e504330302e49324335007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C5</dependency>
+ </device>
+ <device id="STK0005">
+ <acpi_object>\_SB_.PC00.I2C5.WT55</acpi_object>
+ <aml_template>5b8245055c2f045f53425f504330304932433557543535085f53544100085f4849440d53544b3030303500085f43525311260a238e1e00010001020000010600c05c150014005c5f53422e504330302e49324335007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C5</dependency>
+ </device>
+ <device id="STK0006">
+ <acpi_object>\_SB_.PC00.I2C5.WT56</acpi_object>
+ <aml_template>5b8245055c2f045f53425f504330304932433557543536085f53544100085f4849440d53544b3030303600085f43525311260a238e1e0001000102000001060040e1330015005c5f53422e504330302e49324335007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C5</dependency>
+ </device>
+ </device>
+ <device address="0x190002">
+ <acpi_object>\_SB_.PC00.UA02</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303055413032085f4144520c02001900</aml_template>
+ <dependency type="provides resources to">\_SB_.PC00.UA02.UT21</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.UA02.SER4</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.UA02.SER3</dependency>
+ <device id="SER2002">
+ <acpi_object>\_SB_.PC00.UA02.SER3</acpi_object>
+ <aml_template>5b8249055c2f045f53425f504330305541303253455233085f53544100085f4849440d5345523230303200085f435253112a0a278e2200010003020800010a0000c201002000200002c05c5f53422e504330302e55413032007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.UA02</dependency>
+ </device>
+ <device id="SER2001">
+ <acpi_object>\_SB_.PC00.UA02.SER4</acpi_object>
+ <aml_template>5b8249055c2f045f53425f504330305541303253455234085f53544100085f4849440d5345523230303100085f435253112a0a278e2200010003022d00010a0000100e002000200001c05c5f53422e504330302e55413032007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.UA02</dependency>
+ </device>
+ <device id="UTK0001">
+ <acpi_object>\_SB_.PC00.UA02.UT21</acpi_object>
+ <acpi_uid>21</acpi_uid>
+ <aml_template>5b8240065c2f045f53425f504330305541303255543231085f53544100085f4849440d55544b3030303100085f5549440a15085f435253112a0a278e2200010003023500010a0000c201004000400000c05c5f53422e504330302e55413032007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.UA02</dependency>
+ </device>
+ </device>
+ <device address="0x1a0000">
+ <acpi_object>\_SB_.PC00.RP25</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303052503235085f4144520c00001a00</aml_template>
+ <interrupt_pin_routing>
+ <routing address="0xffff">
+ <mapping pin="INTA#" source="16"/>
+ <mapping pin="INTB#" source="17"/>
+ <mapping pin="INTC#" source="18"/>
+ <mapping pin="INTD#" source="19"/>
+ </routing>
+ </interrupt_pin_routing>
+ <device address="0x0">
+ <acpi_object>\_SB_.PC00.RP25.PXSX</acpi_object>
+ <aml_template>5b821a5c2f045f53425f504330305250323550585358085f41445200</aml_template>
+ </device>
+ </device>
+ <device address="0x1a0001">
+ <acpi_object>\_SB_.PC00.RP26</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303052503236085f4144520c01001a00</aml_template>
+ <interrupt_pin_routing>
+ <routing address="0xffff">
+ <mapping pin="INTA#" source="17"/>
+ <mapping pin="INTB#" source="18"/>
+ <mapping pin="INTC#" source="19"/>
+ <mapping pin="INTD#" source="16"/>
+ </routing>
+ </interrupt_pin_routing>
+ <device address="0x0">
+ <acpi_object>\_SB_.PC00.RP26.PXSX</acpi_object>
+ <aml_template>5b821a5c2f045f53425f504330305250323650585358085f41445200</aml_template>
+ </device>
+ </device>
+ <device address="0x1a0002">
+ <acpi_object>\_SB_.PC00.RP27</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303052503237085f4144520c02001a00</aml_template>
+ <interrupt_pin_routing>
+ <routing address="0xffff">
+ <mapping pin="INTA#" source="18"/>
+ <mapping pin="INTB#" source="19"/>
+ <mapping pin="INTC#" source="16"/>
+ <mapping pin="INTD#" source="17"/>
+ </routing>
+ </interrupt_pin_routing>
+ <device address="0x0">
+ <acpi_object>\_SB_.PC00.RP27.PXSX</acpi_object>
+ <aml_template>5b821a5c2f045f53425f504330305250323750585358085f41445200</aml_template>
+ </device>
+ </device>
+ <device address="0x1a0003">
+ <acpi_object>\_SB_.PC00.RP28</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303052503238085f4144520c03001a00</aml_template>
+ <interrupt_pin_routing>
+ <routing address="0xffff">
+ <mapping pin="INTA#" source="19"/>
+ <mapping pin="INTB#" source="16"/>
+ <mapping pin="INTC#" source="17"/>
+ <mapping pin="INTD#" source="18"/>
+ </routing>
+ </interrupt_pin_routing>
+ <device address="0x0">
+ <acpi_object>\_SB_.PC00.RP28.PXSX</acpi_object>
+ <aml_template>5b821a5c2f045f53425f504330305250323850585358085f41445200</aml_template>
+ </device>
+ </device>
+ <device address="0x1b0000">
+ <acpi_object>\_SB_.PC00.RP17</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303052503137085f4144520c00001b00</aml_template>
+ <interrupt_pin_routing>
+ <routing address="0xffff">
+ <mapping pin="INTA#" source="16"/>
+ <mapping pin="INTB#" source="17"/>
+ <mapping pin="INTC#" source="18"/>
+ <mapping pin="INTD#" source="19"/>
+ </routing>
+ </interrupt_pin_routing>
+ <device address="0x0">
+ <acpi_object>\_SB_.PC00.RP17.PXSX</acpi_object>
+ <aml_template>5b821a5c2f045f53425f504330305250313750585358085f41445200</aml_template>
+ </device>
+ </device>
+ <device address="0x1b0001">
+ <acpi_object>\_SB_.PC00.RP18</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303052503138085f4144520c01001b00</aml_template>
+ <interrupt_pin_routing>
+ <routing address="0xffff">
+ <mapping pin="INTA#" source="17"/>
+ <mapping pin="INTB#" source="18"/>
+ <mapping pin="INTC#" source="19"/>
+ <mapping pin="INTD#" source="16"/>
+ </routing>
+ </interrupt_pin_routing>
+ <device address="0x0">
+ <acpi_object>\_SB_.PC00.RP18.PXSX</acpi_object>
+ <aml_template>5b821a5c2f045f53425f504330305250313850585358085f41445200</aml_template>
+ </device>
+ </device>
+ <device address="0x1b0002">
+ <acpi_object>\_SB_.PC00.RP19</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303052503139085f4144520c02001b00</aml_template>
+ <interrupt_pin_routing>
+ <routing address="0xffff">
+ <mapping pin="INTA#" source="18"/>
+ <mapping pin="INTB#" source="19"/>
+ <mapping pin="INTC#" source="16"/>
+ <mapping pin="INTD#" source="17"/>
+ </routing>
+ </interrupt_pin_routing>
+ <device address="0x0">
+ <acpi_object>\_SB_.PC00.RP19.PXSX</acpi_object>
+ <aml_template>5b821a5c2f045f53425f504330305250313950585358085f41445200</aml_template>
+ </device>
+ </device>
+ <device address="0x1b0003">
+ <acpi_object>\_SB_.PC00.RP20</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303052503230085f4144520c03001b00</aml_template>
+ <interrupt_pin_routing>
+ <routing address="0xffff">
+ <mapping pin="INTA#" source="19"/>
+ <mapping pin="INTB#" source="16"/>
+ <mapping pin="INTC#" source="17"/>
+ <mapping pin="INTD#" source="18"/>
+ </routing>
+ </interrupt_pin_routing>
+ <device address="0x0">
+ <acpi_object>\_SB_.PC00.RP20.PXSX</acpi_object>
+ <aml_template>5b821a5c2f045f53425f504330305250323050585358085f41445200</aml_template>
+ </device>
+ </device>
+ <device address="0x1b0004">
+ <acpi_object>\_SB_.PC00.RP21</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303052503231085f4144520c04001b00</aml_template>
+ <interrupt_pin_routing>
+ <routing address="0xffff">
+ <mapping pin="INTA#" source="16"/>
+ <mapping pin="INTB#" source="17"/>
+ <mapping pin="INTC#" source="18"/>
+ <mapping pin="INTD#" source="19"/>
+ </routing>
+ </interrupt_pin_routing>
+ <device address="0x0">
+ <acpi_object>\_SB_.PC00.RP21.PXSX</acpi_object>
+ <aml_template>5b821a5c2f045f53425f504330305250323150585358085f41445200</aml_template>
+ </device>
+ </device>
+ <device address="0x1b0005">
+ <acpi_object>\_SB_.PC00.RP22</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303052503232085f4144520c05001b00</aml_template>
+ <interrupt_pin_routing>
+ <routing address="0xffff">
+ <mapping pin="INTA#" source="17"/>
+ <mapping pin="INTB#" source="18"/>
+ <mapping pin="INTC#" source="19"/>
+ <mapping pin="INTD#" source="16"/>
+ </routing>
+ </interrupt_pin_routing>
+ <device address="0x0">
+ <acpi_object>\_SB_.PC00.RP22.PXSX</acpi_object>
+ <aml_template>5b821a5c2f045f53425f504330305250323250585358085f41445200</aml_template>
+ </device>
+ </device>
+ <device address="0x1b0006">
+ <acpi_object>\_SB_.PC00.RP23</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303052503233085f4144520c06001b00</aml_template>
+ <interrupt_pin_routing>
+ <routing address="0xffff">
+ <mapping pin="INTA#" source="18"/>
+ <mapping pin="INTB#" source="19"/>
+ <mapping pin="INTC#" source="16"/>
+ <mapping pin="INTD#" source="17"/>
+ </routing>
+ </interrupt_pin_routing>
+ <device address="0x0">
+ <acpi_object>\_SB_.PC00.RP23.PXSX</acpi_object>
+ <aml_template>5b821a5c2f045f53425f504330305250323350585358085f41445200</aml_template>
+ </device>
+ </device>
+ <device address="0x1b0007">
+ <acpi_object>\_SB_.PC00.RP24</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303052503234085f4144520c07001b00</aml_template>
+ <interrupt_pin_routing>
+ <routing address="0xffff">
+ <mapping pin="INTA#" source="19"/>
+ <mapping pin="INTB#" source="16"/>
+ <mapping pin="INTC#" source="17"/>
+ <mapping pin="INTD#" source="18"/>
+ </routing>
+ </interrupt_pin_routing>
+ <device address="0x0">
+ <acpi_object>\_SB_.PC00.RP24.PXSX</acpi_object>
+ <aml_template>5b821a5c2f045f53425f504330305250323450585358085f41445200</aml_template>
+ </device>
+ </device>
+ <device address="0x1c0000">
+ <acpi_object>\_SB_.PC00.RP01</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303052503031085f4144520c00001c00</aml_template>
+ <interrupt_pin_routing>
+ <routing address="0xffff">
+ <mapping pin="INTA#" source="16"/>
+ <mapping pin="INTB#" source="17"/>
+ <mapping pin="INTC#" source="18"/>
+ <mapping pin="INTD#" source="19"/>
+ </routing>
+ </interrupt_pin_routing>
+ <device address="0x0">
+ <acpi_object>\_SB_.PC00.RP01.PXSX</acpi_object>
+ <aml_template>5b821a5c2f045f53425f504330305250303150585358085f41445200</aml_template>
+ </device>
+ </device>
+ <device address="0x1c0001">
+ <acpi_object>\_SB_.PC00.RP02</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303052503032085f4144520c01001c00</aml_template>
+ <interrupt_pin_routing>
+ <routing address="0xffff">
+ <mapping pin="INTA#" source="17"/>
+ <mapping pin="INTB#" source="18"/>
+ <mapping pin="INTC#" source="19"/>
+ <mapping pin="INTD#" source="16"/>
+ </routing>
+ </interrupt_pin_routing>
+ <device address="0x0">
+ <acpi_object>\_SB_.PC00.RP02.PXSX</acpi_object>
+ <aml_template>5b821a5c2f045f53425f504330305250303250585358085f41445200</aml_template>
+ </device>
+ </device>
+ <device address="0x1c0002">
+ <acpi_object>\_SB_.PC00.RP03</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303052503033085f4144520c02001c00</aml_template>
+ <interrupt_pin_routing>
+ <routing address="0xffff">
+ <mapping pin="INTA#" source="18"/>
+ <mapping pin="INTB#" source="19"/>
+ <mapping pin="INTC#" source="16"/>
+ <mapping pin="INTD#" source="17"/>
+ </routing>
+ </interrupt_pin_routing>
+ <device address="0x0">
+ <acpi_object>\_SB_.PC00.RP03.PXSX</acpi_object>
+ <aml_template>5b821a5c2f045f53425f504330305250303350585358085f41445200</aml_template>
+ </device>
+ </device>
+ <device address="0x1c0003">
+ <acpi_object>\_SB_.PC00.RP04</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303052503034085f4144520c03001c00</aml_template>
+ <interrupt_pin_routing>
+ <routing address="0xffff">
+ <mapping pin="INTA#" source="19"/>
+ <mapping pin="INTB#" source="16"/>
+ <mapping pin="INTC#" source="17"/>
+ <mapping pin="INTD#" source="18"/>
+ </routing>
+ </interrupt_pin_routing>
+ <device address="0x0">
+ <acpi_object>\_SB_.PC00.RP04.PXSX</acpi_object>
+ <aml_template>5b821a5c2f045f53425f504330305250303450585358085f41445200</aml_template>
+ </device>
+ </device>
+ <device address="0x1c0004">
+ <acpi_object>\_SB_.PC00.RP05</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303052503035085f4144520c04001c00</aml_template>
+ <interrupt_pin_routing>
+ <routing address="0xffff">
+ <mapping pin="INTA#" source="16"/>
+ <mapping pin="INTB#" source="17"/>
+ <mapping pin="INTC#" source="18"/>
+ <mapping pin="INTD#" source="19"/>
+ </routing>
+ </interrupt_pin_routing>
+ <device address="0x0">
+ <acpi_object>\_SB_.PC00.RP05.PXSX</acpi_object>
+ <aml_template>5b821a5c2f045f53425f504330305250303550585358085f41445200</aml_template>
+ </device>
+ </device>
+ <device address="0x1c0005">
+ <acpi_object>\_SB_.PC00.RP06</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303052503036085f4144520c05001c00</aml_template>
+ <interrupt_pin_routing>
+ <routing address="0xffff">
+ <mapping pin="INTA#" source="17"/>
+ <mapping pin="INTB#" source="18"/>
+ <mapping pin="INTC#" source="19"/>
+ <mapping pin="INTD#" source="16"/>
+ </routing>
+ </interrupt_pin_routing>
+ <device address="0x0">
+ <acpi_object>\_SB_.PC00.RP06.PXSX</acpi_object>
+ <aml_template>5b821a5c2f045f53425f504330305250303650585358085f41445200</aml_template>
+ </device>
+ </device>
+ <device address="0x1c0006">
+ <acpi_object>\_SB_.PC00.RP07</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303052503037085f4144520c06001c00</aml_template>
+ <interrupt_pin_routing>
+ <routing address="0xffff">
+ <mapping pin="INTA#" source="18"/>
+ <mapping pin="INTB#" source="19"/>
+ <mapping pin="INTC#" source="16"/>
+ <mapping pin="INTD#" source="17"/>
+ </routing>
+ </interrupt_pin_routing>
+ <device address="0x0">
+ <acpi_object>\_SB_.PC00.RP07.PXSX</acpi_object>
+ <aml_template>5b821a5c2f045f53425f504330305250303750585358085f41445200</aml_template>
+ </device>
+ </device>
+ <device address="0x1c0007">
+ <acpi_object>\_SB_.PC00.RP08</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303052503038085f4144520c07001c00</aml_template>
+ <interrupt_pin_routing>
+ <routing address="0xffff">
+ <mapping pin="INTA#" source="19"/>
+ <mapping pin="INTB#" source="16"/>
+ <mapping pin="INTC#" source="17"/>
+ <mapping pin="INTD#" source="18"/>
+ </routing>
+ </interrupt_pin_routing>
+ <device address="0x0">
+ <acpi_object>\_SB_.PC00.RP08.PXSX</acpi_object>
+ <aml_template>5b821a5c2f045f53425f504330305250303850585358085f41445200</aml_template>
+ </device>
+ </device>
+ <device address="0x1d0000" id="0x51b0" description="PCI bridge: Intel Corporation">
+ <vendor>0x8086</vendor>
+ <identifier>0x51b0</identifier>
+ <class>0x060400</class>
+ <acpi_object>\_SB_.PC00.RP09</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303052503039085f4144520c00001d00</aml_template>
+ <resource type="interrupt_pin" pin="INTA#" source="16"/>
+ <capability id="PCI Express"/>
+ <capability id="MSI">
+ <count>1</count>
+ </capability>
+ <capability id="Subsystem ID and Subsystem Vendor ID"/>
+ <capability id="Power Management"/>
+ <capability id="Advanced Error Reporting"/>
+ <capability id="ACS"/>
+ <capability id="TPM"/>
+ <capability id="L1 PM Substates"/>
+ <capability id="Secondary PCI Express"/>
+ <capability id="DPC"/>
+ <bus type="pci" address="0xaa">
+ <interrupt_pin_routing>
+ <routing address="0xffff">
+ <mapping pin="INTA#" source="16"/>
+ <mapping pin="INTB#" source="17"/>
+ <mapping pin="INTC#" source="18"/>
+ <mapping pin="INTD#" source="19"/>
+ </routing>
+ </interrupt_pin_routing>
+ </bus>
+ <device address="0x0">
+ <acpi_object>\_SB_.PC00.RP09.PXSX</acpi_object>
+ <aml_template>5b821a5c2f045f53425f504330305250303950585358085f41445200</aml_template>
+ <device address="0xffff">
+ <acpi_object>\_SB_.PC00.RP09.PXSX.MINI</acpi_object>
+ <aml_template>5b82205c2f055f53425f5043303052503039505853584d494e49085f4144520bffff</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ </device>
+ </device>
+ </device>
+ <device address="0x1d0001">
+ <acpi_object>\_SB_.PC00.RP10</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303052503130085f4144520c01001d00</aml_template>
+ <interrupt_pin_routing>
+ <routing address="0xffff">
+ <mapping pin="INTA#" source="17"/>
+ <mapping pin="INTB#" source="18"/>
+ <mapping pin="INTC#" source="19"/>
+ <mapping pin="INTD#" source="16"/>
+ </routing>
+ </interrupt_pin_routing>
+ <device address="0x0">
+ <acpi_object>\_SB_.PC00.RP10.PXSX</acpi_object>
+ <aml_template>5b821a5c2f045f53425f504330305250313050585358085f41445200</aml_template>
+ </device>
+ </device>
+ <device address="0x1d0002">
+ <acpi_object>\_SB_.PC00.RP11</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303052503131085f4144520c02001d00</aml_template>
+ <interrupt_pin_routing>
+ <routing address="0xffff">
+ <mapping pin="INTA#" source="18"/>
+ <mapping pin="INTB#" source="19"/>
+ <mapping pin="INTC#" source="16"/>
+ <mapping pin="INTD#" source="17"/>
+ </routing>
+ </interrupt_pin_routing>
+ <device address="0x0">
+ <acpi_object>\_SB_.PC00.RP11.PXSX</acpi_object>
+ <aml_template>5b821a5c2f045f53425f504330305250313150585358085f41445200</aml_template>
+ </device>
+ </device>
+ <device address="0x1d0003">
+ <acpi_object>\_SB_.PC00.RP12</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303052503132085f4144520c03001d00</aml_template>
+ <interrupt_pin_routing>
+ <routing address="0xffff">
+ <mapping pin="INTA#" source="19"/>
+ <mapping pin="INTB#" source="16"/>
+ <mapping pin="INTC#" source="17"/>
+ <mapping pin="INTD#" source="18"/>
+ </routing>
+ </interrupt_pin_routing>
+ <device address="0x0">
+ <acpi_object>\_SB_.PC00.RP12.PXSX</acpi_object>
+ <aml_template>5b821a5c2f045f53425f504330305250313250585358085f41445200</aml_template>
+ </device>
+ </device>
+ <device address="0x1d0004">
+ <acpi_object>\_SB_.PC00.RP13</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303052503133085f4144520c04001d00</aml_template>
+ <interrupt_pin_routing>
+ <routing address="0xffff">
+ <mapping pin="INTA#" source="16"/>
+ <mapping pin="INTB#" source="17"/>
+ <mapping pin="INTC#" source="18"/>
+ <mapping pin="INTD#" source="19"/>
+ </routing>
+ </interrupt_pin_routing>
+ <device address="0x0">
+ <acpi_object>\_SB_.PC00.RP13.PXSX</acpi_object>
+ <aml_template>5b821a5c2f045f53425f504330305250313350585358085f41445200</aml_template>
+ </device>
+ </device>
+ <device address="0x1d0005">
+ <acpi_object>\_SB_.PC00.RP14</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303052503134085f4144520c05001d00</aml_template>
+ <interrupt_pin_routing>
+ <routing address="0xffff">
+ <mapping pin="INTA#" source="17"/>
+ <mapping pin="INTB#" source="18"/>
+ <mapping pin="INTC#" source="19"/>
+ <mapping pin="INTD#" source="16"/>
+ </routing>
+ </interrupt_pin_routing>
+ <device address="0x0">
+ <acpi_object>\_SB_.PC00.RP14.PXSX</acpi_object>
+ <aml_template>5b821a5c2f045f53425f504330305250313450585358085f41445200</aml_template>
+ </device>
+ </device>
+ <device address="0x1d0006">
+ <acpi_object>\_SB_.PC00.RP15</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303052503135085f4144520c06001d00</aml_template>
+ <interrupt_pin_routing>
+ <routing address="0xffff">
+ <mapping pin="INTA#" source="18"/>
+ <mapping pin="INTB#" source="19"/>
+ <mapping pin="INTC#" source="16"/>
+ <mapping pin="INTD#" source="17"/>
+ </routing>
+ </interrupt_pin_routing>
+ <device address="0x0">
+ <acpi_object>\_SB_.PC00.RP15.PXSX</acpi_object>
+ <aml_template>5b821a5c2f045f53425f504330305250313550585358085f41445200</aml_template>
+ </device>
+ </device>
+ <device address="0x1d0007">
+ <acpi_object>\_SB_.PC00.RP16</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303052503136085f4144520c07001d00</aml_template>
+ <interrupt_pin_routing>
+ <routing address="0xffff">
+ <mapping pin="INTA#" source="19"/>
+ <mapping pin="INTB#" source="16"/>
+ <mapping pin="INTC#" source="17"/>
+ <mapping pin="INTD#" source="18"/>
+ </routing>
+ </interrupt_pin_routing>
+ <device address="0x0">
+ <acpi_object>\_SB_.PC00.RP16.PXSX</acpi_object>
+ <aml_template>5b821a5c2f045f53425f504330305250313650585358085f41445200</aml_template>
+ </device>
+ </device>
+ <device address="0x1e0000" id="0x51a8" description="Communication controller: Intel Corporation Alder Lake PCH UART #0">
+ <vendor>0x8086</vendor>
+ <identifier>0x51a8</identifier>
+ <subsystem_vendor>0x8086</subsystem_vendor>
+ <subsystem_identifier>0x7270</subsystem_identifier>
+ <class>0x078000</class>
+ <acpi_object>\_SB_.PC00.UA00</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303055413030085f4144520c00001e00</aml_template>
+ <resource type="interrupt_pin" pin="INTA#" source="16"/>
+ <resource type="memory" min="0x4017005000" max="0x4017005fff" len="0x1000" id="bar0" width="64" prefetchable="0"/>
+ <capability id="Power Management"/>
+ <capability id="Vendor-Specific"/>
+ <dependency type="provides resources to">\_SB_.PC00.UA00.UT01</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.UA00.BTH0</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.UA00.SER0</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.UA00.SER1</dependency>
+ <device id="INT33E1">
+ <acpi_object>\_SB_.PC00.UA00.BTH0</acpi_object>
+ <aml_template>5b82400a5c2f045f53425f504330305541303042544830085f53544100085f4849440d494e543333453100085f4352531141070a6d8e2200010003023500010a0000c201002000200000c05c5f53422e504330302e55413030008c200001010100020000000000001700001900230000004d005c5f53422e47504930008c2000010001001300000000000017000019002300000000005c5f53422e47504930007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGPIOConnection" id="res1"/>
+ <resource type="LargeResourceItemGPIOConnection" id="res2"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.UA00</dependency>
+ <dependency type="consumes resources from">\_SB_.GPI0</dependency>
+ </device>
+ <device id="SER0001">
+ <acpi_object>\_SB_.PC00.UA00.SER0</acpi_object>
+ <aml_template>5b8249055c2f045f53425f504330305541303053455230085f53544100085f4849440d5345523030303100085f435253112a0a278e2200010003022d00010a0000100e002000200001c05c5f53422e504330302e55413030007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.UA00</dependency>
+ </device>
+ <device id="SER0002">
+ <acpi_object>\_SB_.PC00.UA00.SER1</acpi_object>
+ <aml_template>5b8249055c2f045f53425f504330305541303053455231085f53544100085f4849440d5345523030303200085f435253112a0a278e2200010003020800010a0000c201002000200002c05c5f53422e504330302e55413030007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.UA00</dependency>
+ </device>
+ <device id="UTK0001">
+ <acpi_object>\_SB_.PC00.UA00.UT01</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824f055c2f045f53425f504330305541303055543031085f53544100085f4849440d55544b3030303100085f55494401085f435253112a0a278e2200010003023500010a0000c201004000400000c05c5f53422e504330302e55413030007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.UA00</dependency>
+ </device>
+ </device>
+ <device address="0x1e0001">
+ <acpi_object>\_SB_.PC00.UA01</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303055413031085f4144520c01001e00</aml_template>
+ <dependency type="provides resources to">\_SB_.PC00.UA01.UT11</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.UA01.SER3</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.UA01.SER2</dependency>
+ <device id="SER1001">
+ <acpi_object>\_SB_.PC00.UA01.SER2</acpi_object>
+ <aml_template>5b8249055c2f045f53425f504330305541303153455232085f53544100085f4849440d5345523130303100085f435253112a0a278e2200010003023d00010a00008403002000200002c05c5f53422e504330302e55413031007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.UA01</dependency>
+ </device>
+ <device id="SER1002">
+ <acpi_object>\_SB_.PC00.UA01.SER3</acpi_object>
+ <aml_template>5b8249055c2f045f53425f504330305541303153455233085f53544100085f4849440d5345523130303200085f435253112a0a278e2200010003021400010a0000e100002000200001c05c5f53422e504330302e55413031007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.UA01</dependency>
+ </device>
+ <device id="UTK0001">
+ <acpi_object>\_SB_.PC00.UA01.UT11</acpi_object>
+ <acpi_uid>11</acpi_uid>
+ <aml_template>5b8240065c2f045f53425f504330305541303155543131085f53544100085f4849440d55544b3030303100085f5549440a0b085f435253112a0a278e2200010003023500010a0000c201004000400000c05c5f53422e504330302e55413031007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.UA01</dependency>
+ </device>
+ </device>
+ <device address="0x1e0002">
+ <acpi_object>\_SB_.PC00.SPI0</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303053504930085f4144520c02001e00</aml_template>
+ <dependency type="provides resources to">\_SB_.PC00.SPI0.TP1_</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI0.S0D5</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI0.S0DC</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI0.S0D0</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI0.S0DD</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI0.S0D4</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI0.TP3_</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI0.S0D3</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI0.S0D9</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI0.S0DA</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI0.TP2_</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI0.S0D6</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI0.S0D7</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI0.S0DE</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI0.S0D8</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI0.S0DB</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI0.S0D2</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI0.S0D1</dependency>
+ <device id="SPI0001">
+ <acpi_object>\_SB_.PC00.SPI0.S0D0</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493053304430085f53544100085f4849440d5350493030303100085f55494401085f43525311290a268e210001000202000001090040420f0008000000005c5f53422e504330302e53504930007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI0</dependency>
+ </device>
+ <device id="SPI0003">
+ <acpi_object>\_SB_.PC00.SPI0.S0D1</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493053304431085f53544100085f4849440d5350493030303300085f55494401085f43525311290a268e210001000202000001090040420f0008000100005c5f53422e504330302e53504930007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI0</dependency>
+ </device>
+ <device id="SPI0002">
+ <acpi_object>\_SB_.PC00.SPI0.S0D2</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493053304432085f53544100085f4849440d5350493030303200085f55494401085f43525311290a268e210001000202000001090040420f0008010000005c5f53422e504330302e53504930007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI0</dependency>
+ </device>
+ <device id="SPI0004">
+ <acpi_object>\_SB_.PC00.SPI0.S0D3</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493053304433085f53544100085f4849440d5350493030303400085f55494401085f43525311290a268e210001000202000001090040420f0008010100005c5f53422e504330302e53504930007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI0</dependency>
+ </device>
+ <device id="SPI0005">
+ <acpi_object>\_SB_.PC00.SPI0.S0D4</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493053304434085f53544100085f4849440d5350493030303500085f55494401085f43525311290a268e210001000202020001090040420f0008000000005c5f53422e504330302e53504930007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI0</dependency>
+ </device>
+ <device id="SPI0007">
+ <acpi_object>\_SB_.PC00.SPI0.S0D5</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493053304435085f53544100085f4849440d5350493030303700085f55494401085f43525311290a268e210001000202020001090040420f0008000100005c5f53422e504330302e53504930007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI0</dependency>
+ </device>
+ <device id="SPI0006">
+ <acpi_object>\_SB_.PC00.SPI0.S0D6</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493053304436085f53544100085f4849440d5350493030303600085f55494401085f43525311290a268e210001000202020001090040420f0008010000005c5f53422e504330302e53504930007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI0</dependency>
+ </device>
+ <device id="SPI0008">
+ <acpi_object>\_SB_.PC00.SPI0.S0D7</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493053304437085f53544100085f4849440d5350493030303800085f55494401085f43525311290a268e210001000202020001090040420f0008010100005c5f53422e504330302e53504930007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI0</dependency>
+ </device>
+ <device id="SPI0009">
+ <acpi_object>\_SB_.PC00.SPI0.S0D8</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493053304438085f53544100085f4849440d5350493030303900085f55494401085f43525311290a268e21000100020200000109008096980008000000005c5f53422e504330302e53504930007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI0</dependency>
+ </device>
+ <device id="SPI0010">
+ <acpi_object>\_SB_.PC00.SPI0.S0D9</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493053304439085f53544100085f4849440d5350493030313000085f55494401085f43525311290a268e21000100020200000109002a50fe0008000000005c5f53422e504330302e53504930007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI0</dependency>
+ </device>
+ <device id="SPI0011">
+ <acpi_object>\_SB_.PC00.SPI0.S0DA</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493053304441085f53544100085f4849440d5350493030313100085f55494401085f43525311290a268e2100010002020000010900002d310108000000005c5f53422e504330302e53504930007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI0</dependency>
+ </device>
+ <device id="SPI0012">
+ <acpi_object>\_SB_.PC00.SPI0.S0DB</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493053304442085f53544100085f4849440d5350493030313200085f55494401085f43525311290a268e210001000202000001090000366e0108000000005c5f53422e504330302e53504930007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI0</dependency>
+ </device>
+ <device id="SPI0013">
+ <acpi_object>\_SB_.PC00.SPI0.S0DC</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493053304443085f53544100085f4849440d5350493030313300085f55494401085f43525311290a268e210001000202000001090040420f0010000000005c5f53422e504330302e53504930007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI0</dependency>
+ </device>
+ <device id="SPI0014">
+ <acpi_object>\_SB_.PC00.SPI0.S0DD</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493053304444085f53544100085f4849440d5350493030313400085f55494401085f43525311290a268e210001000202000001090040420f0018000000005c5f53422e504330302e53504930007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI0</dependency>
+ </device>
+ <device id="SPI0015">
+ <acpi_object>\_SB_.PC00.SPI0.S0DE</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493053304445085f53544100085f4849440d5350493030313500085f55494401085f43525311290a268e210001000202000001090040420f0020000000005c5f53422e504330302e53504930007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI0</dependency>
+ </device>
+ <device id="SPT0001">
+ <acpi_object>\_SB_.PC00.SPI0.TP1_</acpi_object>
+ <aml_template>5b8248055c2f045f53425f50433030535049305450315f085f53544100085f4849440d5350543030303100085f43525311290a268e210001000202000001090040420f0008000000005c5f53422e504330302e53504930007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI0</dependency>
+ </device>
+ <device id="SPT0002">
+ <acpi_object>\_SB_.PC00.SPI0.TP2_</acpi_object>
+ <aml_template>5b8248055c2f045f53425f50433030535049305450325f085f53544100085f4849440d5350543030303200085f43525311290a268e2100010002020000010900404b4c0008000000005c5f53422e504330302e53504930007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI0</dependency>
+ </device>
+ <device id="SPT0003">
+ <acpi_object>\_SB_.PC00.SPI0.TP3_</acpi_object>
+ <aml_template>5b8248055c2f045f53425f50433030535049305450335f085f53544100085f4849440d5350543030303300085f43525311290a268e2100010002020000010900002d310108000000005c5f53422e504330302e53504930007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI0</dependency>
+ </device>
+ </device>
+ <device address="0x1e0003" id="0x51ab" description="Serial bus controller: Intel Corporation">
+ <vendor>0x8086</vendor>
+ <identifier>0x51ab</identifier>
+ <subsystem_vendor>0x8086</subsystem_vendor>
+ <subsystem_identifier>0x7270</subsystem_identifier>
+ <class>0x0c8000</class>
+ <acpi_object>\_SB_.PC00.SPI1</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303053504931085f4144520c03001e00</aml_template>
+ <resource type="interrupt_pin" pin="INTD#" source="37"/>
+ <resource type="memory" min="0x4017006000" max="0x4017006fff" len="0x1000" id="bar0" width="64" prefetchable="0"/>
+ <capability id="Power Management"/>
+ <capability id="Vendor-Specific"/>
+ <dependency type="provides resources to">\_SB_.PC00.SPI1.S1DC</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI1.S1D2</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI1.S1DD</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI1.S1DB</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI1.S1D8</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI1.S1D0</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI1.FPNT</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI1.S1D1</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI1.TP3_</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI1.S1D7</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI1.S1D6</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI1.S1D4</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI1.S1D5</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI1.S1DA</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI1.S1D9</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI1.TP1_</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI1.TP2_</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI1.S1DE</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI1.S1D3</dependency>
+ <device id="DUMY0000">
+ <acpi_object>\_SB_.PC00.SPI1.FPNT</acpi_object>
+ <aml_template>5b8246085c2f045f53425f504330305350493146504e54085f53544100085f4849440d44554d593030303000085f4352531146050a528e21000100020200000109000000000008000000005c5f53422e504330302e53504931008c2000010101000200000000000017000019002300000000005c5f53422e47504930008906001501770000007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGPIOConnection" id="res1"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <resource id="res2" type="irq" int="119"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI1</dependency>
+ <dependency type="consumes resources from">\_SB_.GPI0</dependency>
+ </device>
+ <device id="SPI1001">
+ <acpi_object>\_SB_.PC00.SPI1.S1D0</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493153314430085f53544100085f4849440d5350493130303100085f55494401085f43525311290a268e210001000202000001090040420f0008000000005c5f53422e504330302e53504931007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI1</dependency>
+ </device>
+ <device id="SPI1003">
+ <acpi_object>\_SB_.PC00.SPI1.S1D1</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493153314431085f53544100085f4849440d5350493130303300085f55494401085f43525311290a268e210001000202000001090040420f0008000100005c5f53422e504330302e53504931007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI1</dependency>
+ </device>
+ <device id="SPI1002">
+ <acpi_object>\_SB_.PC00.SPI1.S1D2</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493153314432085f53544100085f4849440d5350493130303200085f55494401085f43525311290a268e210001000202000001090040420f0008010000005c5f53422e504330302e53504931007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI1</dependency>
+ </device>
+ <device id="SPI1004">
+ <acpi_object>\_SB_.PC00.SPI1.S1D3</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493153314433085f53544100085f4849440d5350493130303400085f55494401085f43525311290a268e210001000202000001090040420f0008010100005c5f53422e504330302e53504931007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI1</dependency>
+ </device>
+ <device id="SPI1005">
+ <acpi_object>\_SB_.PC00.SPI1.S1D4</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493153314434085f53544100085f4849440d5350493130303500085f55494401085f43525311290a268e210001000202020001090040420f0008000000005c5f53422e504330302e53504931007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI1</dependency>
+ </device>
+ <device id="SPI1007">
+ <acpi_object>\_SB_.PC00.SPI1.S1D5</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493153314435085f53544100085f4849440d5350493130303700085f55494401085f43525311290a268e210001000202020001090040420f0008000100005c5f53422e504330302e53504931007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI1</dependency>
+ </device>
+ <device id="SPI1006">
+ <acpi_object>\_SB_.PC00.SPI1.S1D6</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493153314436085f53544100085f4849440d5350493130303600085f55494401085f43525311290a268e210001000202020001090040420f0008010000005c5f53422e504330302e53504931007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI1</dependency>
+ </device>
+ <device id="SPI1008">
+ <acpi_object>\_SB_.PC00.SPI1.S1D7</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493153314437085f53544100085f4849440d5350493130303800085f55494401085f43525311290a268e210001000202020001090040420f0008010100005c5f53422e504330302e53504931007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI1</dependency>
+ </device>
+ <device id="SPI1009">
+ <acpi_object>\_SB_.PC00.SPI1.S1D8</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493153314438085f53544100085f4849440d5350493130303900085f55494401085f43525311290a268e21000100020200000109008096980008000000005c5f53422e504330302e53504931007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI1</dependency>
+ </device>
+ <device id="SPI1010">
+ <acpi_object>\_SB_.PC00.SPI1.S1D9</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493153314439085f53544100085f4849440d5350493130313000085f55494401085f43525311290a268e21000100020200000109002a50fe0008000000005c5f53422e504330302e53504931007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI1</dependency>
+ </device>
+ <device id="SPI1011">
+ <acpi_object>\_SB_.PC00.SPI1.S1DA</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493153314441085f53544100085f4849440d5350493130313100085f55494401085f43525311290a268e2100010002020000010900002d310108000000005c5f53422e504330302e53504931007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI1</dependency>
+ </device>
+ <device id="SPI1012">
+ <acpi_object>\_SB_.PC00.SPI1.S1DB</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493153314442085f53544100085f4849440d5350493130313200085f55494401085f43525311290a268e210001000202000001090000366e0108000000005c5f53422e504330302e53504931007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI1</dependency>
+ </device>
+ <device id="SPI1013">
+ <acpi_object>\_SB_.PC00.SPI1.S1DC</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493153314443085f53544100085f4849440d5350493130313300085f55494401085f43525311290a268e210001000202000001090040420f0010000000005c5f53422e504330302e53504931007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI1</dependency>
+ </device>
+ <device id="SPI1014">
+ <acpi_object>\_SB_.PC00.SPI1.S1DD</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493153314444085f53544100085f4849440d5350493130313400085f55494401085f43525311290a268e210001000202000001090040420f0018000000005c5f53422e504330302e53504931007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI1</dependency>
+ </device>
+ <device id="SPI1015">
+ <acpi_object>\_SB_.PC00.SPI1.S1DE</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493153314445085f53544100085f4849440d5350493130313500085f55494401085f43525311290a268e210001000202000001090040420f0020000000005c5f53422e504330302e53504931007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI1</dependency>
+ </device>
+ <device id="SPT0001">
+ <acpi_object>\_SB_.PC00.SPI1.TP1_</acpi_object>
+ <aml_template>5b8248055c2f045f53425f50433030535049315450315f085f53544100085f4849440d5350543030303100085f43525311290a268e210001000202000001090040420f0008000000005c5f53422e504330302e53504931007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI1</dependency>
+ </device>
+ <device id="SPT0002">
+ <acpi_object>\_SB_.PC00.SPI1.TP2_</acpi_object>
+ <aml_template>5b8248055c2f045f53425f50433030535049315450325f085f53544100085f4849440d5350543030303200085f43525311290a268e2100010002020000010900404b4c0008000000005c5f53422e504330302e53504931007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI1</dependency>
+ </device>
+ <device id="SPT0003">
+ <acpi_object>\_SB_.PC00.SPI1.TP3_</acpi_object>
+ <aml_template>5b8248055c2f045f53425f50433030535049315450335f085f53544100085f4849440d5350543030303300085f43525311290a268e2100010002020000010900002d310108000000005c5f53422e504330302e53504931007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI1</dependency>
+ </device>
+ </device>
+ <device address="0x1f0000" id="0x5182" description="ISA bridge: Intel Corporation Alder Lake PCH eSPI Controller">
+ <vendor>0x8086</vendor>
+ <identifier>0x5182</identifier>
+ <subsystem_vendor>0x8086</subsystem_vendor>
+ <subsystem_identifier>0x7270</subsystem_identifier>
+ <class>0x060100</class>
+ <acpi_object>\_SB_.PC00.LPCB</acpi_object>
+ <aml_template>5b821a5c2f035f53425f504330304c504342085f4144520c00001f00</aml_template>
+ <device id="INT3F0D">
+ <acpi_object>\_SB_.PC00.LPCB.CWDT</acpi_object>
+ <compatible_id>PNP0C02</compatible_id>
+ <aml_template>5b8243045c2f045f53425f504330304c50434243574454085f5354410a0f085f4849440c25d43f0d085f4349440c41d00c02085f435253110d0a0a47015418541804047900</aml_template>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ <resource id="res0" type="io_port" min="0x1854" max="0x1854" len="0x4"/>
+ </device>
+ <device id="PNP0A05">
+ <acpi_object>\_SB_.PC00.LPCB.H8S2</acpi_object>
+ <acpi_uid>5</acpi_uid>
+ <aml_template>5b822c5c2f045f53425f504330304c50434248385332085f5354410a0f085f4849440c41d00a05085f5549440a05</aml_template>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ <device id="PNP0501">
+ <acpi_object>\_SB_.PC00.LPCB.H8S2.UAR9</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b8246045c2f055f53425f504330304c5043424838533255415239085f5354410a0f085f4849440c41d00501085f55494401085f43525311100a0d4701f803f80301082210007900</aml_template>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ <resource id="res0" type="io_port" min="0x3f8" max="0x3f8" len="0x8"/>
+ <resource id="res1" type="irq" int="4"/>
+ </device>
+ </device>
+ <device id="PNP0103">
+ <acpi_object>\_SB_.PC00.LPCB.HPET</acpi_object>
+ <acpi_uid>0</acpi_uid>
+ <aml_template>5b8243045c2f045f53425f504330304c50434248504554085f5354410a0f085f4849440c41d00103085f55494400085f43525311110a0e860900010000d0fe000400007900</aml_template>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ <resource id="res0" type="memory" min="0xfed00000" max="0xfed003ff" len="0x400"/>
+ </device>
+ <device id="PNP0C09">
+ <acpi_object>\_SB_.PC00.LPCB.H_EC</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b8247045c2f045f53425f504330304c504342485f4543085f5354410a0f085f4849440c41d00c09085f55494401085f43525311150a12470162006200000147016600660000017900</aml_template>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ <resource id="res0" type="io_port" min="0x62" max="0x62" len="0x1"/>
+ <resource id="res1" type="io_port" min="0x66" max="0x66" len="0x1"/>
+ <device id="ACPI0008">
+ <acpi_object>\_SB_.PC00.LPCB.H_EC.ALSD</acpi_object>
+ <aml_template>5b822d5c2f055f53425f504330304c504342485f4543414c5344085f53544100085f4849440d414350493030303800</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ </device>
+ <device id="PNP0C0A">
+ <acpi_object>\_SB_.PC00.LPCB.H_EC.BAT0</acpi_object>
+ <acpi_uid>0</acpi_uid>
+ <aml_template>5b822f5c2f055f53425f504330304c504342485f454342415430085f5354410a1f085f4849440c41d00c0a085f55494400</aml_template>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ </device>
+ <device id="PNP0C0A">
+ <acpi_object>\_SB_.PC00.LPCB.H_EC.BAT1</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b822f5c2f055f53425f504330304c504342485f454342415431085f5354410a0b085f4849440c41d00c0a085f55494401</aml_template>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ </device>
+ <device id="PNP0C0A">
+ <acpi_object>\_SB_.PC00.LPCB.H_EC.BAT2</acpi_object>
+ <acpi_uid>2</acpi_uid>
+ <aml_template>5b82305c2f055f53425f504330304c504342485f454342415432085f5354410a0b085f4849440c41d00c0a085f5549440a02</aml_template>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ </device>
+ <device id="INT33D2">
+ <acpi_object>\_SB_.PC00.LPCB.H_EC.BIND</acpi_object>
+ <compatible_id>PNP0C40</compatible_id>
+ <aml_template>5b823a5c2f055f53425f504330304c504342485f454342494e44085f53544100085f4849440d494e543333443200085f4349440d504e503043343000</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ </device>
+ <device id="INTC1046" description="Charger">
+ <acpi_object>\_SB_.PC00.LPCB.H_EC.CHRG</acpi_object>
+ <acpi_uid>CHRG</acpi_uid>
+ <aml_template>5b8242055c2f055f53425f504330304c504342485f454343485247085f53544100085f4849440d494e54433130343600085f5549440d4348524700085f53545211130a1043006800610072006700650072000000</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ </device>
+ <device id="INT33D3">
+ <acpi_object>\_SB_.PC00.LPCB.H_EC.CIND</acpi_object>
+ <compatible_id>PNP0C60</compatible_id>
+ <aml_template>5b823a5c2f055f53425f504330304c504342485f454343494e44085f53544100085f4849440d494e543333443300085f4349440d504e503043363000</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ </device>
+ <device id="INTC1046" description="Discrete Gpu Sensor">
+ <acpi_object>\_SB_.PC00.LPCB.H_EC.DGPU</acpi_object>
+ <acpi_uid>DGPU</acpi_uid>
+ <aml_template>5b824a065c2f055f53425f504330304c504342485f454344475055085f53544100085f4849440d494e54433130343600085f5549440d4447505500085f535452112b0a284400690073006300720065007400650020004700700075002000530065006e0073006f0072000000</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ </device>
+ <device id="INT33D4">
+ <acpi_object>\_SB_.PC00.LPCB.H_EC.DIND</acpi_object>
+ <compatible_id>PNP0C70</compatible_id>
+ <aml_template>5b823a5c2f055f53425f504330304c504342485f454344494e44085f53544100085f4849440d494e543333443400085f4349440d504e503043373000</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ </device>
+ <device id="PNP0C0D">
+ <acpi_object>\_SB_.PC00.LPCB.H_EC.LID0</acpi_object>
+ <aml_template>5b82295c2f055f53425f504330304c504342485f45434c494430085f5354410a0f085f4849440c41d00c0d</aml_template>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ </device>
+ <device id="AWY0001">
+ <acpi_object>\_SB_.PC00.LPCB.H_EC.MEFD</acpi_object>
+ <aml_template>5b822c5c2f055f53425f504330304c504342485f45434d454644085f53544100085f4849440d4157593030303100</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ </device>
+ <device id="INTC1046" description="Thermistor PCH VR">
+ <acpi_object>\_SB_.PC00.LPCB.H_EC.SEN1</acpi_object>
+ <acpi_uid>SEN1</acpi_uid>
+ <aml_template>5b8246065c2f055f53425f504330304c504342485f454353454e31085f53544100085f4849440d494e54433130343600085f5549440d53454e3100085f53545211270a2454006800650072006d006900730074006f00720020005000430048002000560052000000</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ </device>
+ <device id="INTC1046" description="Thermistor GT VR">
+ <acpi_object>\_SB_.PC00.LPCB.H_EC.SEN2</acpi_object>
+ <acpi_uid>SEN2</acpi_uid>
+ <aml_template>5b8244065c2f055f53425f504330304c504342485f454353454e32085f53544100085f4849440d494e54433130343600085f5549440d53454e3200085f53545211250a2254006800650072006d006900730074006f0072002000470054002000560052000000</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ </device>
+ <device id="INTC1046" description="Thermistor Ambient">
+ <acpi_object>\_SB_.PC00.LPCB.H_EC.SEN3</acpi_object>
+ <acpi_uid>SEN3</acpi_uid>
+ <aml_template>5b8248065c2f055f53425f504330304c504342485f454353454e33085f53544100085f4849440d494e54433130343600085f5549440d53454e3300085f53545211290a2654006800650072006d006900730074006f007200200041006d006200690065006e0074000000</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ </device>
+ <device id="INTC1046" description="Thermistor Battery Charger">
+ <acpi_object>\_SB_.PC00.LPCB.H_EC.SEN4</acpi_object>
+ <acpi_uid>SEN4</acpi_uid>
+ <aml_template>5b8248075c2f055f53425f504330304c504342485f454353454e34085f53544100085f4849440d494e54433130343600085f5549440d53454e3400085f53545211390a3654006800650072006d006900730074006f00720020004200610074007400650072007900200043006800610072006700650072000000</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ </device>
+ <device id="INTC1046" description="Thermistor Memory">
+ <acpi_object>\_SB_.PC00.LPCB.H_EC.SEN5</acpi_object>
+ <acpi_uid>SEN5</acpi_uid>
+ <aml_template>5b8246065c2f055f53425f504330304c504342485f454353454e35085f53544100085f4849440d494e54433130343600085f5549440d53454e3500085f53545211270a2454006800650072006d006900730074006f00720020004d0065006d006f00720079000000</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ </device>
+ <device id="INTC1048" description="Fan 1">
+ <acpi_object>\_SB_.PC00.LPCB.H_EC.TFN1</acpi_object>
+ <acpi_uid>TFN1</acpi_uid>
+ <aml_template>5b824f045c2f055f53425f504330304c504342485f454354464e31085f5354410a0f085f4849440d494e54433130343800085f5549440d54464e3100085f535452110f0a0c460061006e00200031000000</aml_template>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ </device>
+ <device id="INTC1048" description="DDR Fan">
+ <acpi_object>\_SB_.PC00.LPCB.H_EC.TFN2</acpi_object>
+ <acpi_uid>TFN2</acpi_uid>
+ <aml_template>5b8242055c2f055f53425f504330304c504342485f454354464e32085f53544100085f4849440d494e54433130343800085f5549440d54464e3200085f53545211130a104400440052002000460061006e000000</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ </device>
+ <device id="INTC1048" description="GFX Fan">
+ <acpi_object>\_SB_.PC00.LPCB.H_EC.TFN3</acpi_object>
+ <acpi_uid>TFN3</acpi_uid>
+ <aml_template>5b8242055c2f055f53425f504330304c504342485f454354464e33085f53544100085f4849440d494e54433130343800085f5549440d54464e3300085f53545211130a104700460058002000460061006e000000</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ </device>
+ <device id="PNP0C02">
+ <acpi_object>\_SB_.PC00.LPCB.H_EC.WDT0</acpi_object>
+ <acpi_uid>3</acpi_uid>
+ <aml_template>5b8245045c2f055f53425f504330304c504342485f454357445430085f4849440c41d00c02085f5549440a03085f43525311150a124701a406a40601014701a006a00601017900</aml_template>
+ <resource id="res1" type="io_port" min="0x6a0" max="0x6a0" len="0x1"/>
+ <resource id="res0" type="io_port" min="0x6a4" max="0x6a4" len="0x1"/>
+ </device>
+ </device>
+ <device id="PNP0000">
+ <acpi_object>\_SB_.PC00.LPCB.IPIC</acpi_object>
+ <aml_template>5b82440b5c2f045f53425f504330304c50434249504943085f4849440b41d0085f4352531141090a8d47012000200001024701240024000102470128002800010247012c002c00010247013000300001024701340034000102470138003800010247013c003c0001024701a000a00001024701a400a40001024701a800a80001024701ac00ac0001024701b000b00001024701b400b40001024701b800b80001024701bc00bc0001024701d004d00401022204007900</aml_template>
+ <resource id="res0" type="io_port" min="0x20" max="0x20" len="0x2"/>
+ <resource id="res1" type="io_port" min="0x24" max="0x24" len="0x2"/>
+ <resource id="res2" type="io_port" min="0x28" max="0x28" len="0x2"/>
+ <resource id="res3" type="io_port" min="0x2c" max="0x2c" len="0x2"/>
+ <resource id="res4" type="io_port" min="0x30" max="0x30" len="0x2"/>
+ <resource id="res5" type="io_port" min="0x34" max="0x34" len="0x2"/>
+ <resource id="res6" type="io_port" min="0x38" max="0x38" len="0x2"/>
+ <resource id="res7" type="io_port" min="0x3c" max="0x3c" len="0x2"/>
+ <resource id="res8" type="io_port" min="0xa0" max="0xa0" len="0x2"/>
+ <resource id="res9" type="io_port" min="0xa4" max="0xa4" len="0x2"/>
+ <resource id="res10" type="io_port" min="0xa8" max="0xa8" len="0x2"/>
+ <resource id="res11" type="io_port" min="0xac" max="0xac" len="0x2"/>
+ <resource id="res12" type="io_port" min="0xb0" max="0xb0" len="0x2"/>
+ <resource id="res13" type="io_port" min="0xb4" max="0xb4" len="0x2"/>
+ <resource id="res14" type="io_port" min="0xb8" max="0xb8" len="0x2"/>
+ <resource id="res15" type="io_port" min="0xbc" max="0xbc" len="0x2"/>
+ <resource id="res16" type="io_port" min="0x4d0" max="0x4d0" len="0x2"/>
+ <resource id="res17" type="irq" int="2"/>
+ </device>
+ <device id="PNP0C02">
+ <acpi_object>\_SB_.PC00.LPCB.LDRC</acpi_object>
+ <acpi_uid>2</acpi_uid>
+ <aml_template>5b8242095c2f045f53425f504330304c5043424c445243085f4849440c41d00c02085f5549440a02085f4352531146060a6247012e002e00010247014e004e00010247016100610001014701630063000101470165006500010147016700670001014701700070000101470180008000010147019200920001014701b200b2000102470180068006012047014e164e1601027900</aml_template>
+ <resource id="res0" type="io_port" min="0x2e" max="0x2e" len="0x2"/>
+ <resource id="res1" type="io_port" min="0x4e" max="0x4e" len="0x2"/>
+ <resource id="res2" type="io_port" min="0x61" max="0x61" len="0x1"/>
+ <resource id="res3" type="io_port" min="0x63" max="0x63" len="0x1"/>
+ <resource id="res4" type="io_port" min="0x65" max="0x65" len="0x1"/>
+ <resource id="res5" type="io_port" min="0x67" max="0x67" len="0x1"/>
+ <resource id="res6" type="io_port" min="0x70" max="0x70" len="0x1"/>
+ <resource id="res7" type="io_port" min="0x80" max="0x80" len="0x1"/>
+ <resource id="res8" type="io_port" min="0x92" max="0x92" len="0x1"/>
+ <resource id="res9" type="io_port" min="0xb2" max="0xb2" len="0x2"/>
+ <resource id="res10" type="io_port" min="0x680" max="0x680" len="0x20"/>
+ <resource id="res11" type="io_port" min="0x164e" max="0x164e" len="0x2"/>
+ </device>
+ <device id="PNP0C04">
+ <acpi_object>\_SB_.PC00.LPCB.MATH</acpi_object>
+ <aml_template>5b823a5c2f045f53425f504330304c5043424d415448085f53544100085f4849440c41d00c04085f43525311100a0d4701f000f00001012200207900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource id="res0" type="io_port" min="0xf0" max="0xf0" len="0x1"/>
+ <resource id="res1" type="irq" int="13"/>
+ </device>
+ <device id="PNP0A05">
+ <acpi_object>\_SB_.PC00.LPCB.N393</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b822a5c2f045f53425f504330304c5043424e333933085f53544100085f4849440c41d00a05085f55494401</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <device id="PNP0400">
+ <acpi_object>\_SB_.PC00.LPCB.N393.LPT1</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b8245045c2f055f53425f504330304c5043424e3339334c505431085f53544100085f4849440c41d00400085f55494401085f43525311100a0d47010000000001042200007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource id="res0" type="io_port" min="0x0" max="0x0" len="0x4"/>
+ <resource id="res1" type="irq" int=""/>
+ </device>
+ <device id="PNP0400">
+ <acpi_object>\_SB_.PC00.LPCB.N393.PBI1</acpi_object>
+ <acpi_uid>2</acpi_uid>
+ <aml_template>5b8246045c2f055f53425f504330304c5043424e33393350424931085f53544100085f4849440c41d00400085f5549440a02085f43525311100a0d47017803780301042280007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource id="res0" type="io_port" min="0x378" max="0x378" len="0x4"/>
+ <resource id="res1" type="irq" int="7"/>
+ </device>
+ <device id="PNP0401">
+ <acpi_object>\_SB_.PC00.LPCB.N393.PEC1</acpi_object>
+ <acpi_uid>4</acpi_uid>
+ <aml_template>5b8241055c2f055f53425f504330304c5043424e33393350454331085f53544100085f4849440c41d00401085f5549440a04085f435253111b0a18470178037803010847017807780701082280002a02017900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="SmallResourceItemDMA" id="res3"/>
+ <resource id="res0" type="io_port" min="0x378" max="0x378" len="0x8"/>
+ <resource id="res1" type="io_port" min="0x778" max="0x778" len="0x8"/>
+ <resource id="res2" type="irq" int="7"/>
+ </device>
+ <device id="PNP0400">
+ <acpi_object>\_SB_.PC00.LPCB.N393.PEP1</acpi_object>
+ <acpi_uid>3</acpi_uid>
+ <aml_template>5b8246045c2f055f53425f504330304c5043424e33393350455031085f53544100085f4849440c41d00400085f5549440a03085f43525311100a0d47017803780301082280007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource id="res0" type="io_port" min="0x378" max="0x378" len="0x8"/>
+ <resource id="res1" type="irq" int="7"/>
+ </device>
+ <device id="PNP0501">
+ <acpi_object>\_SB_.PC00.LPCB.N393.UAR3</acpi_object>
+ <acpi_uid>2</acpi_uid>
+ <aml_template>5b8246045c2f055f53425f504330304c5043424e33393355415233085f53544100085f4849440c41d00501085f5549440a02085f43525311100a0d4701f803f80301082210007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource id="res0" type="io_port" min="0x3f8" max="0x3f8" len="0x8"/>
+ <resource id="res1" type="irq" int="4"/>
+ </device>
+ <device id="PNP0501">
+ <acpi_object>\_SB_.PC00.LPCB.N393.UAR4</acpi_object>
+ <acpi_uid>3</acpi_uid>
+ <aml_template>5b8246045c2f055f53425f504330304c5043424e33393355415234085f53544100085f4849440c41d00501085f5549440a03085f43525311100a0d4701f802f80201082208007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource id="res0" type="io_port" min="0x2f8" max="0x2f8" len="0x8"/>
+ <resource id="res1" type="irq" int="3"/>
+ </device>
+ </device>
+ <device id="PNP0A05">
+ <acpi_object>\_SB_.PC00.LPCB.NVT6</acpi_object>
+ <acpi_uid>10</acpi_uid>
+ <aml_template>5b822b5c2f045f53425f504330304c5043424e565436085f53544100085f4849440c41d00a05085f5549440a0a</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <device id="PNP0A05">
+ <acpi_object>\_SB_.PC00.LPCB.NVT6.HWMN</acpi_object>
+ <acpi_uid>2</acpi_uid>
+ <aml_template>5b8243045c2f055f53425f504330304c5043424e56543648574d4e085f53544100085f4849440c41d00a05085f5549440a02085f435253110d0a0a47019502960201027900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource id="res0" type="io_port" min="0x295" max="0x296" len="0x2"/>
+ </device>
+ <device id="PNP0501">
+ <acpi_object>\_SB_.PC00.LPCB.NVT6.UARA</acpi_object>
+ <acpi_uid>10</acpi_uid>
+ <aml_template>5b8246045c2f055f53425f504330304c5043424e56543655415241085f53544100085f4849440c41d00501085f5549440a0a085f43525311100a0d47010000000001082200007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource id="res0" type="io_port" min="0x0" max="0x0" len="0x8"/>
+ <resource id="res1" type="irq" int=""/>
+ </device>
+ </device>
+ <device id="MSFT0001">
+ <acpi_object>\_SB_.PC00.LPCB.PS2K</acpi_object>
+ <compatible_id>PNP0303</compatible_id>
+ <aml_template>5b8244055c2f045f53425f504330304c5043425053324b085f5354410a0f085f4849440d4d5346543030303100085f4349440c41d00303085f43525311190a1647016000600001014701640064000101230200017900</aml_template>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ <resource id="res0" type="io_port" min="0x60" max="0x60" len="0x1"/>
+ <resource id="res1" type="io_port" min="0x64" max="0x64" len="0x1"/>
+ <resource id="res2" type="irq" int="1"/>
+ </device>
+ <device id="MSFT0003">
+ <acpi_object>\_SB_.PC00.LPCB.PS2M</acpi_object>
+ <compatible_id>PNP0F03</compatible_id>
+ <aml_template>5b8243045c2f045f53425f504330304c5043425053324d085f53544100085f4849440d4d5346543030303300085f4349440c41d00f03085f43525311090a06230010017900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource id="res0" type="irq" int="12"/>
+ </device>
+ <device id="PNP0B00">
+ <acpi_object>\_SB_.PC00.LPCB.RTC_</acpi_object>
+ <aml_template>5b823a5c2f045f53425f504330304c5043425254435f085f53544100085f4849440c41d00b00085f43525311100a0d47017000700001082200017900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource id="res0" type="io_port" min="0x70" max="0x70" len="0x8"/>
+ <resource id="res1" type="irq" int="8"/>
+ </device>
+ <device id="PNP0100">
+ <acpi_object>\_SB_.PC00.LPCB.TIMR</acpi_object>
+ <aml_template>5b823c5c2f045f53425f504330304c50434254494d52085f4849440c41d00100085f43525311180a15470140004000010447015000500010042201007900</aml_template>
+ <resource id="res0" type="io_port" min="0x40" max="0x40" len="0x4"/>
+ <resource id="res1" type="io_port" min="0x50" max="0x50" len="0x4"/>
+ <resource id="res2" type="irq" int="0"/>
+ </device>
+ <device id="PNP0A05">
+ <acpi_object>\_SB_.PC00.LPCB.WPCN</acpi_object>
+ <acpi_uid>3</acpi_uid>
+ <aml_template>5b822b5c2f045f53425f504330304c5043425750434e085f53544100085f4849440c41d00a05085f5549440a03</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <device id="WEC1022">
+ <acpi_object>\_SB_.PC00.LPCB.WPCN.ECIR</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b8245055c2f055f53425f504330304c5043425750434e45434952085f53544100085f4849440c5ca31022085f55494401085f43525311200a1d4701000000000110470100000000011047010000000008082200007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource id="res0" type="io_port" min="0x0" max="0x0" len="0x10"/>
+ <resource id="res1" type="io_port" min="0x0" max="0x0" len="0x10"/>
+ <resource id="res2" type="io_port" min="0x0" max="0x0" len="0x8"/>
+ <resource id="res3" type="irq" int=""/>
+ </device>
+ <device id="WEC0001">
+ <acpi_object>\_SB_.PC00.LPCB.WPCN.LD15</acpi_object>
+ <acpi_uid>6</acpi_uid>
+ <aml_template>5b822f5c2f055f53425f504330304c5043425750434e4c443135085f53544100085f4849440c5ca30001085f5549440a06</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ </device>
+ <device id="PNP0501">
+ <acpi_object>\_SB_.PC00.LPCB.WPCN.LD16</acpi_object>
+ <acpi_uid>5</acpi_uid>
+ <aml_template>5b822f5c2f055f53425f504330304c5043425750434e4c443136085f53544100085f4849440c41d00501085f5549440a05</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ </device>
+ <device id="PNP0400">
+ <acpi_object>\_SB_.PC00.LPCB.WPCN.LPT2</acpi_object>
+ <acpi_uid>4</acpi_uid>
+ <aml_template>5b8246045c2f055f53425f504330304c5043425750434e4c505432085f53544100085f4849440c41d00400085f5549440a04085f43525311100a0d47010000000001042200007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource id="res0" type="io_port" min="0x0" max="0x0" len="0x4"/>
+ <resource id="res1" type="irq" int=""/>
+ </device>
+ <device id="PNP0400">
+ <acpi_object>\_SB_.PC00.LPCB.WPCN.PBI2</acpi_object>
+ <acpi_uid>5</acpi_uid>
+ <aml_template>5b8246045c2f055f53425f504330304c5043425750434e50424932085f53544100085f4849440c41d00400085f5549440a05085f43525311100a0d47017803780301042280007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource id="res0" type="io_port" min="0x378" max="0x378" len="0x4"/>
+ <resource id="res1" type="irq" int="7"/>
+ </device>
+ <device id="PNP0401">
+ <acpi_object>\_SB_.PC00.LPCB.WPCN.PEC2</acpi_object>
+ <acpi_uid>2</acpi_uid>
+ <aml_template>5b8241055c2f055f53425f504330304c5043425750434e50454332085f53544100085f4849440c41d00401085f5549440a02085f435253111b0a18470178037803010847017807780701082280002a02017900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="SmallResourceItemDMA" id="res3"/>
+ <resource id="res0" type="io_port" min="0x378" max="0x378" len="0x8"/>
+ <resource id="res1" type="io_port" min="0x778" max="0x778" len="0x8"/>
+ <resource id="res2" type="irq" int="7"/>
+ </device>
+ <device id="PNP0400">
+ <acpi_object>\_SB_.PC00.LPCB.WPCN.PEP2</acpi_object>
+ <acpi_uid>6</acpi_uid>
+ <aml_template>5b8246045c2f055f53425f504330304c5043425750434e50455032085f53544100085f4849440c41d00400085f5549440a06085f43525311100a0d47017803780301082280007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource id="res0" type="io_port" min="0x378" max="0x378" len="0x8"/>
+ <resource id="res1" type="irq" int="7"/>
+ </device>
+ <device id="PNP0501">
+ <acpi_object>\_SB_.PC00.LPCB.WPCN.UAR5</acpi_object>
+ <acpi_uid>6</acpi_uid>
+ <aml_template>5b8246045c2f055f53425f504330304c5043425750434e55415235085f53544100085f4849440c41d00501085f5549440a06085f43525311100a0d4701f803f80301082210007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource id="res0" type="io_port" min="0x3f8" max="0x3f8" len="0x8"/>
+ <resource id="res1" type="irq" int="4"/>
+ </device>
+ <device id="PNP0501">
+ <acpi_object>\_SB_.PC00.LPCB.WPCN.UAR8</acpi_object>
+ <acpi_uid>4</acpi_uid>
+ <aml_template>5b8246045c2f055f53425f504330304c5043425750434e55415238085f53544100085f4849440c41d00501085f5549440a04085f43525311100a0d4701f802f80201082208007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource id="res0" type="io_port" min="0x2f8" max="0x2f8" len="0x8"/>
+ <resource id="res1" type="irq" int="3"/>
+ </device>
+ </device>
+ </device>
+ <device address="0x1f0003" id="0x51c8" description="Multimedia audio controller: Intel Corporation Alder Lake PCH-P High Definition Audio Controller">
+ <vendor>0x8086</vendor>
+ <identifier>0x51c8</identifier>
+ <subsystem_vendor>0x10ec</subsystem_vendor>
+ <subsystem_identifier>0x3026</subsystem_identifier>
+ <class>0x040100</class>
+ <acpi_object>\_SB_.PC00.HDAS</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303048444153085f4144520c03001f00</aml_template>
+ <resource type="interrupt_pin" pin="INTA#" source="16"/>
+ <resource type="memory" min="0x607d000000" max="0x607d0fffff" len="0x100000" id="bar4" width="64" prefetchable="0"/>
+ <resource type="memory" min="0x607d1d0000" max="0x607d1d3fff" len="0x4000" id="bar0" width="64" prefetchable="0"/>
+ <capability id="Power Management"/>
+ <capability id="Vendor-Specific"/>
+ <capability id="MSI">
+ <count>1</count>
+ <capability id="64-bit address"/>
+ </capability>
+ <device address="0x1">
+ <acpi_object>\_SB_.PC00.HDAS.RTKC</acpi_object>
+ <aml_template>5b82205c2f045f53425f504330304844415352544b43085f53544100085f41445201</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ </device>
+ <device address="0x10000000">
+ <acpi_object>\_SB_.PC00.HDAS.IDA_</acpi_object>
+ <aml_template>5b821e5c2f045f53425f50433030484441534944415f085f4144520c00000010</aml_template>
+ </device>
+ <device address="0x40000000">
+ <acpi_object>\_SB_.PC00.HDAS.SNDW</acpi_object>
+ <compatible_id>PRP00001</compatible_id>
+ <compatible_id>PNP0A05</compatible_id>
+ <aml_template>5b8241045c2f045f53425f5043303048444153534e4457085f5354410a0b085f4349441215020d5052503030303031000d504e503041303500085f4144520c00000040</aml_template>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ <device address="0x10025d070000">
+ <acpi_object>\_SB_.PC00.HDAS.SNDW.SWD4</acpi_object>
+ <aml_template>5b82265c2f055f53425f5043303048444153534e445753574434085f4144520e0000075d02100000</aml_template>
+ </device>
+ <device address="0x10025d070100">
+ <acpi_object>\_SB_.PC00.HDAS.SNDW.SWD0</acpi_object>
+ <aml_template>5b82265c2f055f53425f5043303048444153534e445753574430085f4144520e0001075d02100000</aml_template>
+ </device>
+ <device address="0x110025d070000">
+ <acpi_object>\_SB_.PC00.HDAS.SNDW.SWD5</acpi_object>
+ <aml_template>5b82265c2f055f53425f5043303048444153534e445753574435085f4144520e0000075d02100100</aml_template>
+ </device>
+ <device address="0x110025d070100">
+ <acpi_object>\_SB_.PC00.HDAS.SNDW.SWD1</acpi_object>
+ <aml_template>5b82265c2f055f53425f5043303048444153534e445753574431085f4144520e0001075d02100100</aml_template>
+ </device>
+ <device address="0x210025d070000">
+ <acpi_object>\_SB_.PC00.HDAS.SNDW.SWD6</acpi_object>
+ <aml_template>5b82265c2f055f53425f5043303048444153534e445753574436085f4144520e0000075d02100200</aml_template>
+ </device>
+ <device address="0x210025d070100">
+ <acpi_object>\_SB_.PC00.HDAS.SNDW.SWD2</acpi_object>
+ <aml_template>5b82265c2f055f53425f5043303048444153534e445753574432085f4144520e0001075d02100200</aml_template>
+ </device>
+ <device address="0x310025d070000">
+ <acpi_object>\_SB_.PC00.HDAS.SNDW.SWD7</acpi_object>
+ <aml_template>5b82265c2f055f53425f5043303048444153534e445753574437085f4144520e0000075d02100300</aml_template>
+ </device>
+ <device address="0x310025d070100">
+ <acpi_object>\_SB_.PC00.HDAS.SNDW.SWD3</acpi_object>
+ <aml_template>5b82265c2f055f53425f5043303048444153534e445753574433085f4144520e0001075d02100300</aml_template>
+ </device>
+ </device>
+ <device address="0x50000000">
+ <acpi_object>\_SB_.PC00.HDAS.UAOL</acpi_object>
+ <compatible_id>PRP00001</compatible_id>
+ <compatible_id>PNP0A05</compatible_id>
+ <aml_template>5b8241045c2f045f53425f504330304844415355414f4c085f5354410a0b085f4349441215020d5052503030303031000d504e503041303500085f4144520c00000050</aml_template>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ </device>
+ </device>
+ <device address="0x1f0004" id="0x51a3" description="SMBus: Intel Corporation Alder Lake PCH-P SMBus Host Controller">
+ <vendor>0x8086</vendor>
+ <identifier>0x51a3</identifier>
+ <subsystem_vendor>0x8086</subsystem_vendor>
+ <subsystem_identifier>0x7270</subsystem_identifier>
+ <class>0x0c0500</class>
+ <acpi_object>\_SB_.PC00.SBUS</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303053425553085f4144520c04001f00</aml_template>
+ <resource type="interrupt_pin" pin="INTA#" source="16"/>
+ <resource type="io_port" min="0xefa0" max="0xefbf" len="0x20" id="bar4"/>
+ <resource type="memory" min="0x607d1d8000" max="0x607d1d80ff" len="0x100" id="bar0" width="64" prefetchable="0"/>
+ </device>
+ <device address="0x1f0005" id="0x51a4" description="Serial bus controller: Intel Corporation Alder Lake-P PCH SPI Controller">
+ <vendor>0x8086</vendor>
+ <identifier>0x51a4</identifier>
+ <subsystem_vendor>0x8086</subsystem_vendor>
+ <subsystem_identifier>0x7270</subsystem_identifier>
+ <class>0x0c8000</class>
+ <resource type="memory" min="0x4f800000" max="0x4f800fff" len="0x1000" id="bar0" width="32" prefetchable="0"/>
+ </device>
+ <device address="0x1f0006" id="0x1a1e" description="Ethernet controller: Intel Corporation Ethernet Connection (16) I219-LM">
+ <vendor>0x8086</vendor>
+ <identifier>0x1a1e</identifier>
+ <subsystem_vendor>0x8086</subsystem_vendor>
+ <subsystem_identifier>0x0000</subsystem_identifier>
+ <class>0x020000</class>
+ <acpi_object>\_SB_.PC00.GLAN</acpi_object>
+ <aml_template>5b821a5c2f035f53425f50433030474c414e085f4144520c06001f00</aml_template>
+ <resource type="interrupt_pin" pin="INTA#" source="16"/>
+ <resource type="memory" min="0x86300000" max="0x8631ffff" len="0x20000" id="bar0" width="32" prefetchable="0"/>
+ <capability id="Power Management"/>
+ <capability id="MSI">
+ <count>1</count>
+ <capability id="64-bit address"/>
+ </capability>
+ </device>
+ <device address="0x1f0007">
+ <acpi_object>\_SB_.PC00.PTHT</acpi_object>
+ <aml_template>5b82205c2f035f53425f5043303050544854085f53544100085f4144520c07001f00</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ </device>
+ <device id="INT3472">
+ <acpi_object>\_SB_.PC00.CLP0</acpi_object>
+ <acpi_uid>10</acpi_uid>
+ <aml_template>5b8248055c2f035f53425f50433030434c5030085f53544100085f4849440d494e543334373200085f5549440a0a085f43525311260a238e1e00010001020000010600801a060053005c5f53422e504330302e49324333007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C3</dependency>
+ </device>
+ <device id="INT3472">
+ <acpi_object>\_SB_.PC00.CLP1</acpi_object>
+ <acpi_uid>11</acpi_uid>
+ <aml_template>5b8248055c2f035f53425f50433030434c5031085f53544100085f4849440d494e543334373200085f5549440a0b085f43525311260a238e1e00010001020000010600801a060053005c5f53422e504330302e49324333007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C3</dependency>
+ </device>
+ <device id="INT3472">
+ <acpi_object>\_SB_.PC00.CLP2</acpi_object>
+ <acpi_uid>12</acpi_uid>
+ <aml_template>5b8248055c2f035f53425f50433030434c5032085f53544100085f4849440d494e543334373200085f5549440a0c085f43525311260a238e1e00010001020000010600801a060053005c5f53422e504330302e49324333007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C3</dependency>
+ </device>
+ <device id="INT3472">
+ <acpi_object>\_SB_.PC00.CLP3</acpi_object>
+ <acpi_uid>13</acpi_uid>
+ <aml_template>5b8248055c2f035f53425f50433030434c5033085f53544100085f4849440d494e543334373200085f5549440a0d085f43525311260a238e1e00010001020000010600801a060053005c5f53422e504330302e49324333007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C3</dependency>
+ </device>
+ <device id="INT3472">
+ <acpi_object>\_SB_.PC00.CLP4</acpi_object>
+ <acpi_uid>14</acpi_uid>
+ <aml_template>5b8248055c2f035f53425f50433030434c5034085f53544100085f4849440d494e543334373200085f5549440a0e085f43525311260a238e1e00010001020000010600801a060053005c5f53422e504330302e49324333007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C3</dependency>
+ </device>
+ <device id="INT3472">
+ <acpi_object>\_SB_.PC00.CLP5</acpi_object>
+ <acpi_uid>15</acpi_uid>
+ <aml_template>5b8248055c2f035f53425f50433030434c5035085f53544100085f4849440d494e543334373200085f5549440a0f085f43525311260a238e1e00010001020000010600801a060053005c5f53422e504330302e49324333007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C3</dependency>
+ </device>
+ <device id="ABCD0000">
+ <acpi_object>\_SB_.PC00.DOCK</acpi_object>
+ <compatible_id>PNP0C15</compatible_id>
+ <acpi_uid>SADDLESTRING</acpi_uid>
+ <aml_template>5b823c5c2f035f53425f50433030444f434b085f4849440d414243443030303000085f4349440c41d00c15085f5549440d534144444c45535452494e4700</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ </device>
+ <device id="INT3472">
+ <acpi_object>\_SB_.PC00.DSC0</acpi_object>
+ <acpi_uid>0</acpi_uid>
+ <aml_template>5b822a5c2f035f53425f5043303044534330085f53544100085f4849440d494e543334373200085f55494400</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ </device>
+ <device id="INT3472">
+ <acpi_object>\_SB_.PC00.DSC1</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824d075c2f035f53425f5043303044534331085f53544100085f4849440d494e543334373200085f55494401085f435253114c040a488c2000010101000200000000000017000019002300000050015c5f53422e47504930008c2000010101000200000000000017000019002300000050015c5f53422e47504930007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGPIOConnection" id="res0"/>
+ <resource type="LargeResourceItemGPIOConnection" id="res1"/>
+ <dependency type="consumes resources from">\_SB_.GPI0</dependency>
+ </device>
+ <device id="INT3472">
+ <acpi_object>\_SB_.PC00.DSC2</acpi_object>
+ <acpi_uid>2</acpi_uid>
+ <aml_template>5b824e075c2f035f53425f5043303044534332085f53544100085f4849440d494e543334373200085f5549440a02085f435253114c040a488c20000101010002000000000000170000190023000000ab005c5f53422e47504930008c20000101010002000000000000170000190023000000ab005c5f53422e47504930007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGPIOConnection" id="res0"/>
+ <resource type="LargeResourceItemGPIOConnection" id="res1"/>
+ <dependency type="consumes resources from">\_SB_.GPI0</dependency>
+ </device>
+ <device id="INT3472">
+ <acpi_object>\_SB_.PC00.DSC3</acpi_object>
+ <acpi_uid>3</acpi_uid>
+ <aml_template>5b824e075c2f035f53425f5043303044534333085f53544100085f4849440d494e543334373200085f5549440a03085f435253114c040a488c20000101010002000000000000170000190023000000ab005c5f53422e47504930008c20000101010002000000000000170000190023000000ab005c5f53422e47504930007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGPIOConnection" id="res0"/>
+ <resource type="LargeResourceItemGPIOConnection" id="res1"/>
+ <dependency type="consumes resources from">\_SB_.GPI0</dependency>
+ </device>
+ <device id="INT3472">
+ <acpi_object>\_SB_.PC00.DSC4</acpi_object>
+ <acpi_uid>4</acpi_uid>
+ <aml_template>5b824e075c2f035f53425f5043303044534334085f53544100085f4849440d494e543334373200085f5549440a04085f435253114c040a488c20000101010002000000000000170000190023000000ab005c5f53422e47504930008c20000101010002000000000000170000190023000000ab005c5f53422e47504930007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGPIOConnection" id="res0"/>
+ <resource type="LargeResourceItemGPIOConnection" id="res1"/>
+ <dependency type="consumes resources from">\_SB_.GPI0</dependency>
+ </device>
+ <device id="INT3472">
+ <acpi_object>\_SB_.PC00.DSC5</acpi_object>
+ <acpi_uid>5</acpi_uid>
+ <aml_template>5b824e075c2f035f53425f5043303044534335085f53544100085f4849440d494e543334373200085f5549440a05085f435253114c040a488c20000101010002000000000000170000190023000000ab005c5f53422e47504930008c20000101010002000000000000170000190023000000ab005c5f53422e47504930007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGPIOConnection" id="res0"/>
+ <resource type="LargeResourceItemGPIOConnection" id="res1"/>
+ <dependency type="consumes resources from">\_SB_.GPI0</dependency>
+ </device>
+ <device id="PWRC0000">
+ <acpi_object>\_SB_.PC00.FLM0</acpi_object>
+ <acpi_uid>0</acpi_uid>
+ <aml_template>5b824c075c2f035f53425f50433030464c4d30085f53544100085f4849440d505752433030303000085f55494400085f435253114a040a468e1e00010001020000010600801a060067005c5f53422e504330302e49324331008c20000101010002000000000000170000190023000000a5005c5f53422e47504930007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGPIOConnection" id="res1"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.GPI0</dependency>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C1</dependency>
+ </device>
+ <device id="TXNW3643">
+ <acpi_object>\_SB_.PC00.FLM1</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824c075c2f035f53425f50433030464c4d31085f53544100085f4849440d54584e573336343300085f55494401085f435253114a040a468e1e00010001020000010600801a060063005c5f53422e504330302e49324331008c2000010101000200000000000017000019002300000012005c5f53422e47504930007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGPIOConnection" id="res1"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.GPI0</dependency>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C1</dependency>
+ </device>
+ <device id="TXNW3643">
+ <acpi_object>\_SB_.PC00.FLM2</acpi_object>
+ <acpi_uid>2</acpi_uid>
+ <aml_template>5b8249055c2f035f53425f50433030464c4d32085f53544100085f4849440d54584e573336343300085f5549440a02085f43525311260a238e1e00010001020000010600801a06001a005c5f53422e504330302e49324332007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C2</dependency>
+ </device>
+ <device id="PWRC0000">
+ <acpi_object>\_SB_.PC00.FLM3</acpi_object>
+ <acpi_uid>3</acpi_uid>
+ <aml_template>5b8249055c2f035f53425f50433030464c4d33085f53544100085f4849440d505752433030303000085f5549440a03085f43525311260a238e1e00010001020000010600801a060053005c5f53422e504330302e49324333007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C3</dependency>
+ </device>
+ <device id="PWRC0000">
+ <acpi_object>\_SB_.PC00.FLM4</acpi_object>
+ <acpi_uid>4</acpi_uid>
+ <aml_template>5b824d075c2f035f53425f50433030464c4d34085f53544100085f4849440d505752433030303000085f5549440a04085f435253114a040a468e1e00010001020000010600801a060067005c5f53422e504330302e49324333008c20000101010002000000000000170000190023000000a3005c5f53422e47504930007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGPIOConnection" id="res1"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C3</dependency>
+ <dependency type="consumes resources from">\_SB_.GPI0</dependency>
+ </device>
+ <device id="PWRC0000">
+ <acpi_object>\_SB_.PC00.FLM5</acpi_object>
+ <acpi_uid>5</acpi_uid>
+ <aml_template>5b824d075c2f035f53425f50433030464c4d35085f53544100085f4849440d505752433030303000085f5549440a05085f435253114a040a468e1e00010001020000010600801a060067005c5f53422e504330302e49324333008c20000101010002000000000000170000190023000000a3005c5f53422e47504930007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGPIOConnection" id="res1"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C3</dependency>
+ <dependency type="consumes resources from">\_SB_.GPI0</dependency>
+ </device>
+ <device id="OVTID858">
+ <acpi_object>\_SB_.PC00.LNK0</acpi_object>
+ <acpi_uid>0</acpi_uid>
+ <aml_template>5b824e0f5c2f035f53425f504330304c4e4b30085f53544100085f4849440d4f5654494438353800085f55494400085f435253114c0c0ac88e1e00010001020000010600801a06000c005c5f53422e504330302e49324335008e1e00010001020000010600801a06000c005c5f53422e504330302e49324335008e1e00010001020000010600801a060050005c5f53422e504330302e49324335008e1e00010001020000010600801a060051005c5f53422e504330302e49324335008e1e00010001020000010600801a060052005c5f53422e504330302e49324335008e1e00010001020000010600801a060053005c5f53422e504330302e49324335007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res1"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res2"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res3"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res4"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res5"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C5</dependency>
+ </device>
+ <device id="OVTI01AF">
+ <acpi_object>\_SB_.PC00.LNK1</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b822b5c2f035f53425f504330304c4e4b31085f53544100085f4849440d4f5654493031414600085f55494401</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ </device>
+ <device id="OVTI01AS">
+ <acpi_object>\_SB_.PC00.LNK2</acpi_object>
+ <acpi_uid>2</acpi_uid>
+ <aml_template>5b8249055c2f035f53425f504330304c4e4b32085f53544100085f4849440d4f5654493031415300085f5549440a02085f43525311260a238e1e00010001020000010600801a06001a005c5f53422e504330302e49324332007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C2</dependency>
+ </device>
+ <device id="INT33BE">
+ <acpi_object>\_SB_.PC00.LNK3</acpi_object>
+ <acpi_uid>3</acpi_uid>
+ <aml_template>5b824e0f5c2f035f53425f504330304c4e4b33085f53544100085f4849440d494e543333424500085f5549440a03085f435253114c0c0ac88e1e00010001020000010600801a06000c005c5f53422e504330302e49324333008e1e00010001020000010600801a06000c005c5f53422e504330302e49324333008e1e00010001020000010600801a060050005c5f53422e504330302e49324333008e1e00010001020000010600801a060051005c5f53422e504330302e49324333008e1e00010001020000010600801a060052005c5f53422e504330302e49324333008e1e00010001020000010600801a060053005c5f53422e504330302e49324333007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res1"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res2"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res3"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res4"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res5"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C3</dependency>
+ </device>
+ <device id="INT33BE">
+ <acpi_object>\_SB_.PC00.LNK4</acpi_object>
+ <acpi_uid>4</acpi_uid>
+ <aml_template>5b824e0f5c2f035f53425f504330304c4e4b34085f53544100085f4849440d494e543333424500085f5549440a04085f435253114c0c0ac88e1e00010001020000010600801a06000c005c5f53422e504330302e49324333008e1e00010001020000010600801a06000c005c5f53422e504330302e49324333008e1e00010001020000010600801a060050005c5f53422e504330302e49324333008e1e00010001020000010600801a060051005c5f53422e504330302e49324333008e1e00010001020000010600801a060052005c5f53422e504330302e49324333008e1e00010001020000010600801a060053005c5f53422e504330302e49324333007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res1"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res2"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res3"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res4"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res5"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C3</dependency>
+ </device>
+ <device id="INT33BE">
+ <acpi_object>\_SB_.PC00.LNK5</acpi_object>
+ <acpi_uid>5</acpi_uid>
+ <aml_template>5b824e0f5c2f035f53425f504330304c4e4b35085f53544100085f4849440d494e543333424500085f5549440a05085f435253114c0c0ac88e1e00010001020000010600801a06000c005c5f53422e504330302e49324333008e1e00010001020000010600801a06000c005c5f53422e504330302e49324333008e1e00010001020000010600801a060050005c5f53422e504330302e49324333008e1e00010001020000010600801a060051005c5f53422e504330302e49324333008e1e00010001020000010600801a060052005c5f53422e504330302e49324333008e1e00010001020000010600801a060053005c5f53422e504330302e49324333007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res1"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res2"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res3"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res4"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res5"/>
+ <dependency type="consumes resources from">\_SB_.PC00.I2C3</dependency>
+ </device>
+ <device id="PNP0C02">
+ <acpi_object>\_SB_.PC00.PDRC</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b82205c2f035f53425f5043303050445243085f4849440c41d00c02085f55494401</aml_template>
+ <resource id="res8" type="memory" min="0x0" max="0x0" len="0x0"/>
+ <resource id="res9" type="memory" min="0x0" max="0x0" len="0x0"/>
+ <resource id="res10" type="memory" min="0x413d9000" max="0x413e8fff" len="0x10000"/>
+ <resource id="res3" type="memory" min="0xc0000000" max="0xcfffffff" len="0x10000000"/>
+ <resource id="res4" type="memory" min="0xfed20000" max="0xfed7ffff" len="0x60000"/>
+ <resource id="res6" type="memory" min="0xfed45000" max="0xfed8ffff" len="0x4b000"/>
+ <resource id="res5" type="memory" min="0xfed90000" max="0xfed93fff" len="0x4000"/>
+ <resource id="res1" type="memory" min="0xfeda0000" max="0xfeda0fff" len="0x1000"/>
+ <resource id="res2" type="memory" min="0xfeda1000" max="0xfeda1fff" len="0x1000"/>
+ <resource id="res0" type="memory" min="0xfedc0000" max="0xfedc7fff" len="0x8000"/>
+ <resource id="res7" type="memory" min="0xfee00000" max="0xfeefffff" len="0x100000"/>
+ </device>
+ </bus>
+ <device id="ACPI0003">
+ <acpi_object>\_SB_.ADP1</acpi_object>
+ <aml_template>5b82215c2e5f53425f41445031085f5354410a0f085f4849440d414350493030303300</aml_template>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ </device>
+ <device id="ACPI000E">
+ <acpi_object>\_SB_.AWAC</acpi_object>
+ <aml_template>5b82215c2e5f53425f41574143085f5354410a0f085f4849440d414350493030304500</aml_template>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ </device>
+ <device id="INTC1061" description="Battery 1 Participant">
+ <acpi_object>\_SB_.BAT1</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2e5f53425f42415431085f53544100085f4849440d494e54433130363100085f5549440d3100085f535452112f0a2c42006100740074006500720079002000310020005000610072007400690063006900700061006e0074000000</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ </device>
+ <device id="INT3519" description="CoExistence Manager">
+ <acpi_object>\_SB_.COEX</acpi_object>
+ <aml_template>5b824d045c2e5f53425f434f4558085f53544100085f4849440c25d43519085f535452112b0a2843006f004500780069007300740065006e006300650020004d0061006e0061006700650072000000</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ </device>
+ <device id="INTC1055">
+ <acpi_object>\_SB_.GPI0</acpi_object>
+ <aml_template>5b8246065c2e5f53425f47504930085f5354410a0f085f4849440d494e54433130353500085f435253113e0a3b8906000d010e0000008609000100006efd000001008609000100006dfd000001008609000100006afd0000010086090001000069fd000001007900</aml_template>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ <resource id="res0" type="irq" int="14"/>
+ <resource id="res4" type="memory" min="0xfd690000" max="0xfd69ffff" len="0x10000"/>
+ <resource id="res3" type="memory" min="0xfd6a0000" max="0xfd6affff" len="0x10000"/>
+ <resource id="res2" type="memory" min="0xfd6d0000" max="0xfd6dffff" len="0x10000"/>
+ <resource id="res1" type="memory" min="0xfd6e0000" max="0xfd6effff" len="0x10000"/>
+ <dependency type="provides resources to">\_SB_.PC00.FLM4</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C2.TPL1</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.DSC5</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C3.TPL1</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.FLM1</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C0.TPL1</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.I2C1.TPL1</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.UA00.BTH0</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.DSC1</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI1.FPNT</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.DSC2</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.FLM5</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.FPNT</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.DSC3</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.FLM0</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.DSC4</dependency>
+ </device>
+ <device id="INTC1070">
+ <acpi_object>\_SB_.HIDD</acpi_object>
+ <aml_template>5b82215c2e5f53425f48494444085f5354410a0f085f4849440d494e54433130373000</aml_template>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ </device>
+ <device id="PNP0C02">
+ <acpi_object>\_SB_.ICLK</acpi_object>
+ <acpi_uid>ISCLK</acpi_uid>
+ <aml_template>5b82285c2e5f53425f49434c4b085f5354410a03085f4849440c41d00c02085f5549440d4953434c4b00</aml_template>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>n</functioning>
+ </status>
+ </device>
+ <device id="INTC1041">
+ <acpi_object>\_SB_.IETM</acpi_object>
+ <aml_template>5b82215c2e5f53425f4945544d085f5354410a0f085f4849440d494e54433130343100</aml_template>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ </device>
+ <device id="PNP0C02">
+ <acpi_object>\_SB_.IOTR</acpi_object>
+ <acpi_uid>IoTraps</acpi_uid>
+ <aml_template>5b82365c2e5f53425f494f5452085f4849440c41d00c02085f5549440d496f547261707300085f435253110d0a0a47010020002001ff7900</aml_template>
+ <resource id="res0" type="io_port" min="0x2000" max="0x2000" len="0xff"/>
+ </device>
+ <device id="LOAD1234">
+ <acpi_object>\_SB_.LDTB</acpi_object>
+ <aml_template>5b82375c2e5f53425f4c445442085f53544100085f4849440d4c4f41443132333400085f43525311110a0e8609000100000000004000007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource id="res0" type="memory" min="0x0" max="0x3fff" len="0x4000"/>
+ </device>
+ <device id="PNP0C01">
+ <acpi_object>\_SB_.MEM_</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b82325c2e5f53425f4d454d5f085f4849440c41d00c01085f55494401085f43525311110a0e860900010000000000d009007900</aml_template>
+ <resource id="res0" type="memory" min="0x0" max="0x9cfff" len="0x9d000"/>
+ </device>
+ <device id="ACPI000C">
+ <acpi_object>\_SB_.PAGD</acpi_object>
+ <aml_template>5b82215c2e5f53425f50414744085f5354410a0f085f4849440d414350493030304300</aml_template>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ </device>
+ <device id="INT3533">
+ <acpi_object>\_SB_.PMAX</acpi_object>
+ <aml_template>5b821f5c2e5f53425f504d4158085f53544100085f4849440d494e543335333300</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR00</acpi_object>
+ <acpi_uid>0</acpi_uid>
+ <aml_template>5b82205c2e5f53425f50523030085f4849440d414350493030303700085f55494400</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR01</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b82205c2e5f53425f50523031085f4849440d414350493030303700085f55494401</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR02</acpi_object>
+ <acpi_uid>2</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523032085f4849440d414350493030303700085f5549440a02</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR03</acpi_object>
+ <acpi_uid>3</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523033085f4849440d414350493030303700085f5549440a03</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR04</acpi_object>
+ <acpi_uid>4</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523034085f4849440d414350493030303700085f5549440a04</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR05</acpi_object>
+ <acpi_uid>5</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523035085f4849440d414350493030303700085f5549440a05</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR06</acpi_object>
+ <acpi_uid>6</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523036085f4849440d414350493030303700085f5549440a06</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR07</acpi_object>
+ <acpi_uid>7</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523037085f4849440d414350493030303700085f5549440a07</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR08</acpi_object>
+ <acpi_uid>8</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523038085f4849440d414350493030303700085f5549440a08</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR09</acpi_object>
+ <acpi_uid>9</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523039085f4849440d414350493030303700085f5549440a09</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR10</acpi_object>
+ <acpi_uid>10</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523130085f4849440d414350493030303700085f5549440a0a</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR11</acpi_object>
+ <acpi_uid>11</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523131085f4849440d414350493030303700085f5549440a0b</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR12</acpi_object>
+ <acpi_uid>12</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523132085f4849440d414350493030303700085f5549440a0c</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR13</acpi_object>
+ <acpi_uid>13</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523133085f4849440d414350493030303700085f5549440a0d</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR14</acpi_object>
+ <acpi_uid>14</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523134085f4849440d414350493030303700085f5549440a0e</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR15</acpi_object>
+ <acpi_uid>15</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523135085f4849440d414350493030303700085f5549440a0f</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR16</acpi_object>
+ <acpi_uid>16</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523136085f4849440d414350493030303700085f5549440a10</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR17</acpi_object>
+ <acpi_uid>17</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523137085f4849440d414350493030303700085f5549440a11</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR18</acpi_object>
+ <acpi_uid>18</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523138085f4849440d414350493030303700085f5549440a12</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR19</acpi_object>
+ <acpi_uid>19</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523139085f4849440d414350493030303700085f5549440a13</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR20</acpi_object>
+ <acpi_uid>20</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523230085f4849440d414350493030303700085f5549440a14</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR21</acpi_object>
+ <acpi_uid>21</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523231085f4849440d414350493030303700085f5549440a15</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR22</acpi_object>
+ <acpi_uid>22</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523232085f4849440d414350493030303700085f5549440a16</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR23</acpi_object>
+ <acpi_uid>23</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523233085f4849440d414350493030303700085f5549440a17</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR24</acpi_object>
+ <acpi_uid>24</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523234085f4849440d414350493030303700085f5549440a18</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR25</acpi_object>
+ <acpi_uid>25</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523235085f4849440d414350493030303700085f5549440a19</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR26</acpi_object>
+ <acpi_uid>26</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523236085f4849440d414350493030303700085f5549440a1a</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR27</acpi_object>
+ <acpi_uid>27</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523237085f4849440d414350493030303700085f5549440a1b</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR28</acpi_object>
+ <acpi_uid>28</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523238085f4849440d414350493030303700085f5549440a1c</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR29</acpi_object>
+ <acpi_uid>29</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523239085f4849440d414350493030303700085f5549440a1d</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR30</acpi_object>
+ <acpi_uid>30</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523330085f4849440d414350493030303700085f5549440a1e</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR31</acpi_object>
+ <acpi_uid>31</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523331085f4849440d414350493030303700085f5549440a1f</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR32</acpi_object>
+ <acpi_uid>32</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523332085f4849440d414350493030303700085f5549440a20</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR33</acpi_object>
+ <acpi_uid>33</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523333085f4849440d414350493030303700085f5549440a21</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR34</acpi_object>
+ <acpi_uid>34</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523334085f4849440d414350493030303700085f5549440a22</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR35</acpi_object>
+ <acpi_uid>35</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523335085f4849440d414350493030303700085f5549440a23</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR36</acpi_object>
+ <acpi_uid>36</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523336085f4849440d414350493030303700085f5549440a24</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR37</acpi_object>
+ <acpi_uid>37</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523337085f4849440d414350493030303700085f5549440a25</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR38</acpi_object>
+ <acpi_uid>38</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523338085f4849440d414350493030303700085f5549440a26</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR39</acpi_object>
+ <acpi_uid>39</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523339085f4849440d414350493030303700085f5549440a27</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR40</acpi_object>
+ <acpi_uid>40</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523430085f4849440d414350493030303700085f5549440a28</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR41</acpi_object>
+ <acpi_uid>41</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523431085f4849440d414350493030303700085f5549440a29</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR42</acpi_object>
+ <acpi_uid>42</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523432085f4849440d414350493030303700085f5549440a2a</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR43</acpi_object>
+ <acpi_uid>43</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523433085f4849440d414350493030303700085f5549440a2b</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR44</acpi_object>
+ <acpi_uid>44</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523434085f4849440d414350493030303700085f5549440a2c</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR45</acpi_object>
+ <acpi_uid>45</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523435085f4849440d414350493030303700085f5549440a2d</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR46</acpi_object>
+ <acpi_uid>46</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523436085f4849440d414350493030303700085f5549440a2e</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR47</acpi_object>
+ <acpi_uid>47</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523437085f4849440d414350493030303700085f5549440a2f</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR48</acpi_object>
+ <acpi_uid>48</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523438085f4849440d414350493030303700085f5549440a30</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR49</acpi_object>
+ <acpi_uid>49</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523439085f4849440d414350493030303700085f5549440a31</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR50</acpi_object>
+ <acpi_uid>50</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523530085f4849440d414350493030303700085f5549440a32</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR51</acpi_object>
+ <acpi_uid>51</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523531085f4849440d414350493030303700085f5549440a33</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR52</acpi_object>
+ <acpi_uid>52</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523532085f4849440d414350493030303700085f5549440a34</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR53</acpi_object>
+ <acpi_uid>53</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523533085f4849440d414350493030303700085f5549440a35</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR54</acpi_object>
+ <acpi_uid>54</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523534085f4849440d414350493030303700085f5549440a36</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR55</acpi_object>
+ <acpi_uid>55</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523535085f4849440d414350493030303700085f5549440a37</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR56</acpi_object>
+ <acpi_uid>56</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523536085f4849440d414350493030303700085f5549440a38</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR57</acpi_object>
+ <acpi_uid>57</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523537085f4849440d414350493030303700085f5549440a39</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR58</acpi_object>
+ <acpi_uid>58</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523538085f4849440d414350493030303700085f5549440a3a</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR59</acpi_object>
+ <acpi_uid>59</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523539085f4849440d414350493030303700085f5549440a3b</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR60</acpi_object>
+ <acpi_uid>60</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523630085f4849440d414350493030303700085f5549440a3c</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR61</acpi_object>
+ <acpi_uid>61</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523631085f4849440d414350493030303700085f5549440a3d</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR62</acpi_object>
+ <acpi_uid>62</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523632085f4849440d414350493030303700085f5549440a3e</aml_template>
+ </device>
+ <device id="ACPI0007">
+ <acpi_object>\_SB_.PR63</acpi_object>
+ <acpi_uid>63</acpi_uid>
+ <aml_template>5b82215c2e5f53425f50523633085f4849440d414350493030303700085f5549440a3f</aml_template>
+ </device>
+ <device id="PNP0C02">
+ <acpi_object>\_SB_.PRRE</acpi_object>
+ <acpi_uid>PCHRESV</acpi_uid>
+ <aml_template>5b824b0a5c2e5f53425f50525245085f5354410a08085f4849440c41d00c02085f5549440d5043485245535600085f435253114a070a7686090001000000fe000002008609000100c004fe0040000086090001000005fe000006008609000100000dfe0000030086090001000020fe0000600086090000000000ff0000000147010018001801ff86090001000000fd000069008609000100006bfd000002008609000100006ffd000091007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>y</functioning>
+ </status>
+ <resource id="res6" type="io_port" min="0x1800" max="0x1800" len="0xff"/>
+ <resource id="res7" type="memory" min="0xfd000000" max="0xfd68ffff" len="0x690000"/>
+ <resource id="res8" type="memory" min="0xfd6b0000" max="0xfd6cffff" len="0x20000"/>
+ <resource id="res9" type="memory" min="0xfd6f0000" max="0xfdffffff" len="0x910000"/>
+ <resource id="res0" type="memory" min="0xfe000000" max="0xfe01ffff" len="0x20000"/>
+ <resource id="res1" type="memory" min="0xfe04c000" max="0xfe04ffff" len="0x4000"/>
+ <resource id="res2" type="memory" min="0xfe050000" max="0xfe0affff" len="0x60000"/>
+ <resource id="res3" type="memory" min="0xfe0d0000" max="0xfe0fffff" len="0x30000"/>
+ <resource id="res4" type="memory" min="0xfe200000" max="0xfe7fffff" len="0x600000"/>
+ <resource id="res5" type="memory" min="0xff000000" max="0xffffffff" len="0x1000000"/>
+ </device>
+ <device id="INTC1001">
+ <acpi_object>\_SB_.PTHH</acpi_object>
+ <aml_template>5b8244045c2e5f53425f50544848085f53544100085f4849440d494e54433130303100085f435253111d0a1a86090001000010fe0000100086090001000080fc000080007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource id="res1" type="memory" min="0xfc800000" max="0xfcffffff" len="0x800000"/>
+ <resource id="res0" type="memory" min="0xfe100000" max="0xfe1fffff" len="0x100000"/>
+ </device>
+ <device id="INT340E">
+ <acpi_object>\_SB_.PTID</acpi_object>
+ <compatible_id>PNP0C02</compatible_id>
+ <aml_template>5b82265c2e5f53425f50544944085f5354410a0f085f4849440c25d4340e085f4349440c41d00c02</aml_template>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ </device>
+ <device id="PNP0C0C">
+ <acpi_object>\_SB_.PWRB</acpi_object>
+ <aml_template>5b821c5c2e5f53425f50575242085f5354410a0f085f4849440c41d00c0c</aml_template>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ </device>
+ <device id="PNP0C0E">
+ <acpi_object>\_SB_.SLPB</acpi_object>
+ <aml_template>5b821c5c2e5f53425f534c5042085f5354410a0b085f4849440c41d00c0e</aml_template>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ </device>
+ <device id="INTC1049" description="Intel PCH FIVR Participant">
+ <acpi_object>\_SB_.TPCH</acpi_object>
+ <acpi_uid>TPCH</acpi_uid>
+ <aml_template>5b824b065c2e5f53425f54504348085f53544100085f4849440d494e54433130343900085f5549440d5450434800085f53545211390a3649006e00740065006c0020005000430048002000460049005600520020005000610072007400690063006900700061006e0074000000</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ </device>
+ <device id="INTC6001" description="TPM 2.0 Device">
+ <acpi_object>\_SB_.TPM_</acpi_object>
+ <compatible_id>MSFT0101</compatible_id>
+ <aml_template>5b82460c5c2e5f53425f54504d5f5b8054504d52000c0000d4fe0b00505b813854504d520041434330080038494e544520494e5456080018494e545320494e54462053545330200040044649464f20004004544944302014145f53544100a00a93414343300affa400a40a0f085f4849440d494e54433630303100085f4349440d4d5346543031303100085f53545211210a1e540050004d00200032002e00300020004400650076006900630065000000085f43525311110a0e860900010000d4fe005000007900</aml_template>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ <resource id="res0" type="memory" min="0xfed40000" max="0xfed44fff" len="0x5000"/>
+ <capability id="control_area">
+ <address_of_control_area>0xfed40040</address_of_control_area>
+ </capability>
+ <capability id="start_method">
+ <value>0x7</value>
+ <parameter>0x0</parameter>
+ <parameter>0x0</parameter>
+ <parameter>0x0</parameter>
+ <parameter>0x0</parameter>
+ <parameter>0x0</parameter>
+ <parameter>0x0</parameter>
+ <parameter>0x0</parameter>
+ <parameter>0x0</parameter>
+ <parameter>0x0</parameter>
+ <parameter>0x0</parameter>
+ <parameter>0x0</parameter>
+ <parameter>0x0</parameter>
+ </capability>
+ <capability id="log_area">
+ <log_area_minimum_length>0x10000</log_area_minimum_length>
+ <log_area_start_address>0x43a83000</log_area_start_address>
+ </capability>
+ </device>
+ <device id="INTC1060" description="Platform Power">
+ <acpi_object>\_SB_.TPWR</acpi_object>
+ <acpi_uid>TPWR</acpi_uid>
+ <aml_template>5b8243055c2e5f53425f54505752085f53544100085f4849440d494e54433130363000085f5549440d5450575200085f53545211210a1e50006c006100740066006f0072006d00200050006f007700650072000000</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ </device>
+ <device id="USBC000">
+ <acpi_object>\_SB_.UBTC</acpi_object>
+ <compatible_id>PNP0CA0</compatible_id>
+ <acpi_uid>0</acpi_uid>
+ <aml_template>5b8243045c2e5f53425f55425443085f53544100085f4849440c5662c000085f4349440c41d00ca0085f55494400085f43525311110a0e8609000100d0a543001000007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource id="res0" type="memory" min="0x43a5d000" max="0x43a5dfff" len="0x1000"/>
+ </device>
+ <device id="PNP0C02">
+ <acpi_object>\_SB_.URSC</acpi_object>
+ <acpi_uid>5</acpi_uid>
+ <aml_template>5b822e5c2e5f53425f55525343085f5354410a03085f4849440c41d00c02085f5549440a05085f43525311050a027900</aml_template>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>n</functioning>
+ </status>
+ </device>
+ <device id="INTC1092" description="Wireless Connectivity Configuration Device">
+ <acpi_object>\_SB_.WCCD</acpi_object>
+ <aml_template>5b8241085c2e5f53425f57434344085f53544100085f4849440d494e54433130393200085f535452114a050a5657006900720065006c00650073007300200043006f006e006e0065006300740069007600690074007900200043006f006e00660069006700750072006100740069006f006e0020004400650076006900630065000000</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ </device>
+ <device id="PNP0C14">
+ <acpi_object>\_SB_.WFDE</acpi_object>
+ <acpi_uid>DSarDev</acpi_uid>
+ <aml_template>5b82275c2e5f53425f57464445085f4849440d504e503043313400085f5549440d4453617244657600</aml_template>
+ </device>
+ <device id="PNP0C14">
+ <acpi_object>\_SB_.WFTE</acpi_object>
+ <acpi_uid>TestDev</acpi_uid>
+ <aml_template>5b82275c2e5f53425f57465445085f4849440d504e503043313400085f5549440d5465737444657600</aml_template>
+ </device>
+ </bus>
+ <thermalzone>
+ <acpi_object>\_TZ_</acpi_object>
+ <device id="PNP0C0B">
+ <acpi_object>\_TZ_.FAN0</acpi_object>
+ <acpi_uid>0</acpi_uid>
+ <aml_template>5b821b5c2e5f545a5f46414e30085f4849440c41d00c0b085f55494400</aml_template>
+ </device>
+ <device id="PNP0C0B">
+ <acpi_object>\_TZ_.FAN1</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b821b5c2e5f545a5f46414e31085f4849440c41d00c0b085f55494401</aml_template>
+ </device>
+ <device id="PNP0C0B">
+ <acpi_object>\_TZ_.FAN2</acpi_object>
+ <acpi_uid>2</acpi_uid>
+ <aml_template>5b821c5c2e5f545a5f46414e32085f4849440c41d00c0b085f5549440a02</aml_template>
+ </device>
+ <device id="PNP0C0B">
+ <acpi_object>\_TZ_.FAN3</acpi_object>
+ <acpi_uid>3</acpi_uid>
+ <aml_template>5b821c5c2e5f545a5f46414e33085f4849440c41d00c0b085f5549440a03</aml_template>
+ </device>
+ <device id="PNP0C0B">
+ <acpi_object>\_TZ_.FAN4</acpi_object>
+ <acpi_uid>4</acpi_uid>
+ <aml_template>5b821c5c2e5f545a5f46414e34085f4849440c41d00c0b085f5549440a04</aml_template>
+ </device>
+ </thermalzone>
+ </devices>
+</acrn-config>
diff --git a/misc/config_tools/data/adl-rvp/hybrid.xml b/misc/config_tools/data/adl-rvp/hybrid.xml
new file mode 100644
index 000000000..d61c8a682
--- /dev/null
+++ b/misc/config_tools/data/adl-rvp/hybrid.xml
@@ -0,0 +1,179 @@
+<<carn-config>
+ <hv>
+ <DEBUG_OPTIONS>
+ <RELEASE>n</RELEASE>
+ <SERIAL_CONSOLE>/dev/ttyS0</SERIAL_CONSOLE>
+ <MEM_LOGLEVEL>5</MEM_LOGLEVEL>
+ <NPK_LOGLEVEL>5</NPK_LOGLEVEL>
+ <CONSOLE_LOGLEVEL>3</CONSOLE_LOGLEVEL>
+ </DEBUG_OPTIONS>
+ <FEATURES>
+ <RELOC>y</RELOC>
+ <SCHEDULER>SCHED_BVT</SCHEDULER>
+ <MULTIBOOT2>y</MULTIBOOT2>
+ <ENFORCE_TURNOFF_AC>y</ENFORCE_TURNOFF_AC>
+ <ENFORCE_TURNOFF_GP>y</ENFORCE_TURNOFF_GP>
+ <SECURITY_VM_FIXUP>n</SECURITY_VM_FIXUP>
+ <RDT>
+ <RDT_ENABLED>n</RDT_ENABLED>
+ <CDP_ENABLED>n</CDP_ENABLED>
+ <CLOS_MASK>0x3ff</CLOS_MASK>
+ <CLOS_MASK>0x3ff</CLOS_MASK>
+ <CLOS_MASK>0x3ff</CLOS_MASK>
+ <CLOS_MASK>0x3ff</CLOS_MASK>
+ <CLOS_MASK>0x3ff</CLOS_MASK>
+ <CLOS_MASK>0x3ff</CLOS_MASK>
+ <CLOS_MASK>0x3ff</CLOS_MASK>
+ <CLOS_MASK>0x3ff</CLOS_MASK>
+ </RDT>
+ <HYPERV_ENABLED>y</HYPERV_ENABLED>
+ <IOMMU_ENFORCE_SNP>n</IOMMU_ENFORCE_SNP>
+ <ACPI_PARSE_ENABLED>y</ACPI_PARSE_ENABLED>
+ <L1D_VMENTRY_ENABLED>n</L1D_VMENTRY_ENABLED>
+ <MCE_ON_PSC_DISABLED>n</MCE_ON_PSC_DISABLED>
+ <IVSHMEM>
+ </IVSHMEM>
+ </FEATURES>
+ <MEMORY>
+ <STACK_SIZE>0x2000</STACK_SIZE>
+ </MEMORY>
+ <CAPACITIES>
+ <MAX_VM_NUM>8</MAX_VM_NUM>
+ <IOMMU_BUS_NUM>0x100</IOMMU_BUS_NUM>
+ <MAX_IOAPIC_NUM>1</MAX_IOAPIC_NUM>
+ <MAX_PCI_DEV_NUM>96</MAX_PCI_DEV_NUM>
+ <MAX_IOAPIC_LINES>120</MAX_IOAPIC_LINES>
+ <MAX_PT_IRQ_ENTRIES>256</MAX_PT_IRQ_ENTRIES>
+ <MAX_MSIX_TABLE_NUM>320</MAX_MSIX_TABLE_NUM>
+ <MAX_EMULATED_MMIO>16</MAX_EMULATED_MMIO>
+ </CAPACITIES>
+ <MISC_CFG>
+ <GPU_SBDF>0x00000010</GPU_SBDF>
+ </MISC_CFG>
+ <vuart_connections>
+ <vuart_connection>
+ <name>vUART connection 1</name>
+ <type>legacy</type>
+ <endpoint>
+ <vm_name>SAFETY_VM1</vm_name>
+ <io_port>0x2F8</io_port>
+ </endpoint>
+ <endpoint>
+ <vm_name>ACRN_Service_VM</vm_name>
+ <io_port>0x2F8</io_port>
+ </endpoint>
+ </vuart_connection>
+ </vuart_connections>
+ </hv>
+ <vm id="0">
+ <vm_type>STANDARD_VM</vm_type>
+ <load_order>PRE_LAUNCHED_VM</load_order>
+ <name>SAFETY_VM1</name>
+ <cpu_affinity>
+ <pcpu_id>10</pcpu_id>
+ <pcpu_id>11</pcpu_id>
+ <pcpu_id>12</pcpu_id>
+ <pcpu_id>13</pcpu_id>
+ </cpu_affinity>
+ <clos>
+ <vcpu_clos>0</vcpu_clos>
+ <vcpu_clos>0</vcpu_clos>
+ <vcpu_clos>0</vcpu_clos>
+ <vcpu_clos>0</vcpu_clos>
+ </clos>
+ <epc_section>
+ <base>0</base>
+ <size>0</size>
+ </epc_section>
+ <memory>
+ <start_hpa>0x100000000</start_hpa>
+ <size>0x20000000</size>
+ <start_hpa2>0x0</start_hpa2>
+ <size_hpa2>0x0</size_hpa2>
+ </memory>
+ <os_config>
+ <name>Zephyr</name>
+ <kern_type>KERNEL_ELF</kern_type>
+ <kern_mod>Zephyr_ElfImage</kern_mod>
+ <ramdisk_mod/>
+ <bootargs/>
+ </os_config>
+ <legacy_vuart id="0">
+ <type>VUART_LEGACY_PIO</type>
+ <base>COM1_BASE</base>
+ <irq>COM1_IRQ</irq>
+ </legacy_vuart>
+ <console_vuart id="0">
+ <base>INVALID_PCI_BASE</base>
+ </console_vuart>
+ <pci_devs>
+ <pci_dev/>
+ </pci_devs>
+ <mmio_resources>
+ <TPM2>n</TPM2>
+ <p2sb>n</p2sb>
+ </mmio_resources>
+ </vm>
+ <vm id="1">
+ <vm_type>STANDARD_VM</vm_type>
+ <load_order>SERVICE_VM</load_order>
+ <name>ACRN_Service_VM</name>
+ <clos>
+ <vcpu_clos>0</vcpu_clos>
+ </clos>
+ <memory>
+ <start_hpa>0</start_hpa>
+ </memory>
+ <os_config>
+ <name>ACRN Service OS</name>
+ <kern_type>KERNEL_BZIMAGE</kern_type>
+ <kern_mod>Linux_bzImage</kern_mod>
+ <ramdisk_mod/>
+ <bootargs>root=/dev/nvme0n1p3 rw rootwait console=ttyS0 console=tty0 consoleblank=0 no_timer_check
+ quiet loglevel=3 i915.nuclear_pageflip=1 swiotlb=131072 nokaslr i915.force_probe=*
+ i915.enable_guc=0x7
+ </bootargs>
+ </os_config>
+ <legacy_vuart id="0">
+ <type>VUART_LEGACY_PIO</type>
+ <base>SERVICE_VM_COM1_BASE</base>
+ <irq>SERVICE_VM_COM1_IRQ</irq>
+ </legacy_vuart>
+ <console_vuart id="0">
+ <base>INVALID_PCI_BASE</base>
+ </console_vuart>
+ <pci_devs>
+ <pci_dev/>
+ </pci_devs>
+ </vm>
+ <vm id="2">
+ <vm_type>STANDARD_VM</vm_type>
+ <load_order>POST_LAUNCHED_VM</load_order>
+ <name>POST_STD_VM1</name>
+ <cpu_affinity>
+ <pcpu_id>6</pcpu_id>
+ <pcpu_id>7</pcpu_id>
+ <pcpu_id>8</pcpu_id>
+ <pcpu_id>9</pcpu_id>
+ </cpu_affinity>
+ <clos>
+ <vcpu_clos>0</vcpu_clos>
+ <vcpu_clos>0</vcpu_clos>
+ <vcpu_clos>0</vcpu_clos>
+ <vcpu_clos>0</vcpu_clos>
+ </clos>
+ <epc_section>
+ <base>0</base>
+ <size>0</size>
+ </epc_section>
+ <legacy_vuart id="0">
+ <type>VUART_LEGACY_PIO</type>
+ <base>COM1_BASE</base>
+ <irq>COM1_IRQ</irq>
+ </legacy_vuart>
+ <console_vuart id="0">
+ <base>INVALID_PCI_BASE</base>
+ </console_vuart>
+ <PTM>n</PTM>
+ </vm>
+</acrn-config>
diff --git a/misc/config_tools/data/adl-rvp/scenaro.xml b/misc/config_tools/data/adl-rvp/scenaro.xml
new file mode 100644
index 000000000..7980c34e5
--- /dev/null
+++ b/misc/config_tools/data/adl-rvp/scenaro.xml
@@ -0,0 +1,79 @@
+<acrn-config>
+ <hv>
+ <FEATURES>
+ <RELOC>y</RELOC>
+ <SCHEDULER>SCHED_BVT</SCHEDULER>
+ <MULTIBOOT2>y</MULTIBOOT2>
+ <ENFORCE_TURNOFF_AC>y</ENFORCE_TURNOFF_AC>
+ <ENFORCE_TURNOFF_GP>n</ENFORCE_TURNOFF_GP>
+ <RDT>
+ <RDT_ENABLED>n</RDT_ENABLED>
+ <CDP_ENABLED>n</CDP_ENABLED>
+ <VCAT_ENABLED>n</VCAT_ENABLED>
+ </RDT>
+ <HYPERV_ENABLED>y</HYPERV_ENABLED>
+ <ACPI_PARSE_ENABLED>y</ACPI_PARSE_ENABLED>
+ <L1D_VMENTRY_ENABLED>y</L1D_VMENTRY_ENABLED>
+ <MCE_ON_PSC_DISABLED>y</MCE_ON_PSC_DISABLED>
+ <SSRAM>
+ <SSRAM_ENABLED>n</SSRAM_ENABLED>
+ </SSRAM>
+ <IVSHMEM>
+ </IVSHMEM>
+ </FEATURES>
+ <MEMORY>
+ <STACK_SIZE>0x2000</STACK_SIZE>
+ </MEMORY>
+ <CAPACITIES>
+ <MAX_PCI_DEV_NUM>96</MAX_PCI_DEV_NUM>
+ <MAX_PT_IRQ_ENTRIES>256</MAX_PT_IRQ_ENTRIES>
+ <MAX_MSIX_TABLE_NUM>64</MAX_MSIX_TABLE_NUM>
+ <MAX_EMULATED_MMIO>16</MAX_EMULATED_MMIO>
+ </CAPACITIES>
+ <DEBUG_OPTIONS>
+ <BUILD_TYPE>debug</BUILD_TYPE>
+ <MEM_LOGLEVEL>4</MEM_LOGLEVEL>
+ <NPK_LOGLEVEL>4</NPK_LOGLEVEL>
+ <CONSOLE_LOGLEVEL>4</CONSOLE_LOGLEVEL>
+ <SERIAL_CONSOLE>/dev/ttyS0</SERIAL_CONSOLE>
+ </DEBUG_OPTIONS>
+ <vuart_connections>
+ </vuart_connections>
+ </hv>
+ <vm id="0">
+ <cpu_affinity>
+ <pcpu_id>0</pcpu_id>
+ <pcpu_id>1</pcpu_id>
+ </cpu_affinity>
+ <os_config>
+ <kern_type>KERNEL_BZIMAGE</kern_type>
+ <kern_mod>Linux_bzImage</kern_mod>
+ </os_config>
+ <console_vuart>COM Port 1</console_vuart>
+ <load_order>SERVICE_VM</load_order>
+ <name>VM0</name>
+ <vm_type>STANDARD_VM</vm_type>
+ </vm>
+ <vm id="1">
+ <cpu_affinity>
+ <pcpu_id>2</pcpu_id>
+ <pcpu_id>3</pcpu_id>
+ </cpu_affinity>
+ <memory>
+ <whole>256</whole>
+ </memory>
+ <console_vuart>COM Port 1</console_vuart>
+ <pci_devs>
+ </pci_devs>
+ <os_type>Non-Windows OS</os_type>
+ <vbootloader>Enable</vbootloader>
+ <vuart0>Enable</vuart0>
+ <virtio_devices>
+ <console>
+ </console>
+ </virtio_devices>
+ <load_order>POST_LAUNCHED_VM</load_order>
+ <name>VM1</name>
+ <vm_type>STANDARD_VM</vm_type>
+ </vm>
+</acrn-config>
diff --git a/misc/config_tools/data/adl-rvp/shared.xml b/misc/config_tools/data/adl-rvp/shared.xml
new file mode 100755
index 000000000..eb6227934
--- /dev/null
+++ b/misc/config_tools/data/adl-rvp/shared.xml
@@ -0,0 +1,262 @@
+<<carn-config>
+ <hv>
+ <DEBUG_OPTIONS>
+ <RELEASE>n</RELEASE>
+ <SERIAL_CONSOLE>/dev/ttyS0</SERIAL_CONSOLE>
+ <MEM_LOGLEVEL>0</MEM_LOGLEVEL>
+ <NPK_LOGLEVEL>0</NPK_LOGLEVEL>
+ <CONSOLE_LOGLEVEL>0</CONSOLE_LOGLEVEL>
+ </DEBUG_OPTIONS>
+ <FEATURES>
+ <RELOC>y</RELOC>
+ <SCHEDULER>SCHED_BVT</SCHEDULER>
+ <MULTIBOOT2>y</MULTIBOOT2>
+ <ENFORCE_TURNOFF_AC>y</ENFORCE_TURNOFF_AC>
+ <ENFORCE_TURNOFF_GP>y</ENFORCE_TURNOFF_GP>
+ <SECURITY_VM_FIXUP>n</SECURITY_VM_FIXUP>
+ <RDT>
+ <RDT_ENABLED>n</RDT_ENABLED>
+ <CDP_ENABLED>y</CDP_ENABLED>
+ <CLOS_MASK>0x3ff</CLOS_MASK>
+ <CLOS_MASK>0x3ff</CLOS_MASK>
+ <CLOS_MASK>0x3ff</CLOS_MASK>
+ <CLOS_MASK>0x3ff</CLOS_MASK>
+ <CLOS_MASK>0x3ff</CLOS_MASK>
+ <CLOS_MASK>0x3ff</CLOS_MASK>
+ <CLOS_MASK>0x3ff</CLOS_MASK>
+ <CLOS_MASK>0x3ff</CLOS_MASK>
+ </RDT>
+ <HYPERV_ENABLED>y</HYPERV_ENABLED>
+ <IOMMU_ENFORCE_SNP>n</IOMMU_ENFORCE_SNP>
+ <ACPI_PARSE_ENABLED>y</ACPI_PARSE_ENABLED>
+ <L1D_VMENTRY_ENABLED>n</L1D_VMENTRY_ENABLED>
+ <MCE_ON_PSC_DISABLED>n</MCE_ON_PSC_DISABLED>
+ <IVSHMEM>
+ </IVSHMEM>
+ <SSRAM>
+ <SSRAM_ENABLED>n</SSRAM_ENABLED>
+ </SSRAM>
+ </FEATURES>
+ <MEMORY>
+ <STACK_SIZE>0x2000</STACK_SIZE>
+ </MEMORY>
+ <CAPACITIES>
+ <MAX_VM_NUM>8</MAX_VM_NUM>
+ <IOMMU_BUS_NUM>0x100</IOMMU_BUS_NUM>
+ <MAX_IOAPIC_NUM>1</MAX_IOAPIC_NUM>
+ <MAX_PCI_DEV_NUM>96</MAX_PCI_DEV_NUM>
+ <MAX_IOAPIC_LINES>120</MAX_IOAPIC_LINES>
+ <MAX_PT_IRQ_ENTRIES>64</MAX_PT_IRQ_ENTRIES>
+ <MAX_MSIX_TABLE_NUM>320</MAX_MSIX_TABLE_NUM>
+ <MAX_EMULATED_MMIO>16</MAX_EMULATED_MMIO>
+ </CAPACITIES>
+ <MISC_CFG>
+ <GPU_SBDF>0x00000010</GPU_SBDF>
+ </MISC_CFG>
+ <vuart_connections>
+ <vuart_connection>
+ <name>vUART connection 1</name>
+ <type>legacy</type>
+ <endpoint>
+ <vm_name>ACRN_Service_VM</vm_name>
+ <io_port>0x2F8</io_port>
+ </endpoint>
+ <endpoint>
+ <vm_name>POST_RT_VM1</vm_name>
+ <io_port>0x2F8</io_port>
+ </endpoint>
+ </vuart_connection>
+ </vuart_connections>
+ </hv>
+ <vm id="0">
+ <vm_type>STANDARD_VM</vm_type>
+ <load_order>SERVICE_VM</load_order>
+ <name>ACRN_Service_VM</name>
+ <clos>
+ <vcpu_clos>0</vcpu_clos>
+ </clos>
+ <memory>
+ <start_hpa>0</start_hpa>
+ <size>0x20000000</size>
+ </memory>
+ <os_config>
+ <name>ACRN Service OS</name>
+ <kern_type>KERNEL_BZIMAGE</kern_type>
+ <kern_mod>Linux_bzImage</kern_mod>
+ <ramdisk_mod/>
+ <bootargs>root=/dev/nvme0n1p3 rw rootwait console=ttyS0 console=tty0 earlyprintk=serial,ttyS0,115200
+ cons_timer_check consoleblank=0 no_timer_check quiet loglevel=3 i915.nuclear_pageflip=1
+ nokaslr i915.force_probe=* i915.enable_guc=0x7
+ </bootargs>
+ </os_config>
+ <legacy_vuart id="0">
+ <type>VUART_LEGACY_PIO</type>
+ <base>SERVICE_VM_COM1_BASE</base>
+ <irq>SERVICE_VM_COM1_IRQ</irq>
+ </legacy_vuart>
+ <console_vuart id="0">
+ <base>INVALID_PCI_BASE</base>
+ </console_vuart>
+ <pci_devs>
+ <pci_dev/>
+ </pci_devs>
+ </vm>
+ <vm id="1">
+ <vm_type>STANDARD_VM</vm_type>
+ <load_order>POST_LAUNCHED_VM</load_order>
+ <name>POST_STD_VM1</name>
+ <cpu_affinity>
+ <pcpu_id>0</pcpu_id>
+ <pcpu_id>1</pcpu_id>
+ </cpu_affinity>
+ <clos>
+ <vcpu_clos>0</vcpu_clos>
+ <vcpu_clos>0</vcpu_clos>
+ <vcpu_clos>0</vcpu_clos>
+ </clos>
+ <epc_section>
+ <base>0</base>
+ <size>0</size>
+ </epc_section>
+ <legacy_vuart id="0">
+ <type>VUART_LEGACY_PIO</type>
+ <base>COM1_BASE</base>
+ <irq>COM1_IRQ</irq>
+ </legacy_vuart>
+ <console_vuart id="0">
+ <base>INVALID_PCI_BASE</base>
+ </console_vuart>
+ <PTM>n</PTM>
+ </vm>
+ <vm id="2">
+ <vm_type>RTVM</vm_type>
+ <load_order>POST_LAUNCHED_VM</load_order>
+ <name>POST_RT_VM1</name>
+ <cpu_affinity>
+ <pcpu_id>6</pcpu_id>
+ <pcpu_id>7</pcpu_id>
+ </cpu_affinity>
+ <clos>
+ <vcpu_clos>0</vcpu_clos>
+ <vcpu_clos>0</vcpu_clos>
+ </clos>
+ <epc_section>
+ <base>0</base>
+ <size>0</size>
+ </epc_section>
+ <legacy_vuart id="0">
+ <type>VUART_LEGACY_PIO</type>
+ <base>COM1_BASE</base>
+ <irq>COM1_IRQ</irq>
+ </legacy_vuart>
+ <console_vuart id="0">
+ <base>INVALID_PCI_BASE</base>
+ </console_vuart>
+ <PTM>n</PTM>
+ </vm>
+ <vm id="3">
+ <vm_type>STANDARD_VM</vm_type>
+ <load_order>POST_LAUNCHED_VM</load_order>
+ <name>POST_STD_VM2</name>
+ <cpu_affinity>
+ <pcpu_id>2</pcpu_id>
+ <pcpu_id>3</pcpu_id>
+ <pcpu_id>4</pcpu_id>
+ <pcpu_id>5</pcpu_id>
+ <pcpu_id>6</pcpu_id>
+ <pcpu_id>7</pcpu_id>
+ <pcpu_id>8</pcpu_id>
+ </cpu_affinity>
+ <clos>
+ <vcpu_clos>0</vcpu_clos>
+ <vcpu_clos>0</vcpu_clos>
+ </clos>
+ <epc_section>
+ <base>0</base>
+ <size>0</size>
+ </epc_section>
+ <legacy_vuart id="0">
+ <type>VUART_LEGACY_PIO</type>
+ <base>COM1_BASE</base>
+ <irq>COM1_IRQ</irq>
+ </legacy_vuart>
+ <console_vuart id="0">
+ <base>INVALID_PCI_BASE</base>
+ </console_vuart>
+ <PTM>n</PTM>
+ </vm>
+ <vm id="4">
+ <vm_type>STANDARD_VM</vm_type>
+ <load_order>POST_LAUNCHED_VM</load_order>
+ <name>POST_STD_VM3</name>
+ <cpu_affinity>
+ <pcpu_id>8</pcpu_id>
+ <pcpu_id>9</pcpu_id>
+ </cpu_affinity>
+ <clos>
+ <vcpu_clos>0</vcpu_clos>
+ <vcpu_clos>0</vcpu_clos>
+ </clos>
+ <epc_section>
+ <base>0</base>
+ <size>0</size>
+ </epc_section>
+ <legacy_vuart id="0">
+ <type>VUART_LEGACY_PIO</type>
+ <base>COM1_BASE</base>
+ <irq>COM1_IRQ</irq>
+ </legacy_vuart>
+ <console_vuart id="0">
+ <base>INVALID_PCI_BASE</base>
+ </console_vuart>
+ <PTM>n</PTM>
+ </vm>
+ <vm id="5">
+ <vm_type>STANDARD_VM</vm_type>
+ <load_order>POST_LAUNCHED_VM</load_order>
+ <name>POST_STD_VM4</name>
+ <cpu_affinity>
+ <pcpu_id>9</pcpu_id>
+ </cpu_affinity>
+ <clos>
+ <vcpu_clos>0</vcpu_clos>
+ </clos>
+ <epc_section>
+ <base>0</base>
+ <size>0</size>
+ </epc_section>
+ <legacy_vuart id="0">
+ <type>VUART_LEGACY_PIO</type>
+ <base>COM1_BASE</base>
+ <irq>COM1_IRQ</irq>
+ </legacy_vuart>
+ <console_vuart id="0">
+ <base>INVALID_PCI_BASE</base>
+ </console_vuart>
+ <PTM>n</PTM>
+ </vm>
+ <vm id="6">
+ <vm_type>STANDARD_VM</vm_type>
+ <load_order>POST_LAUNCHED_VM</load_order>
+ <name>POST_STD_VM5</name>
+ <cpu_affinity>
+ <pcpu_id>9</pcpu_id>
+ </cpu_affinity>
+ <clos>
+ <vcpu_clos>0</vcpu_clos>
+ </clos>
+ <epc_section>
+ <base>0</base>
+ <size>0</size>
+ </epc_section>
+ <legacy_vuart id="0">
+ <type>VUART_LEGACY_PIO</type>
+ <base>COM1_BASE</base>
+ <irq>COM1_IRQ</irq>
+ </legacy_vuart>
+ <console_vuart id="0">
+ <base>INVALID_PCI_BASE</base>
+ </console_vuart>
+ <PTM>n</PTM>
+ </vm>
+</acrn-config>
diff --git a/misc/config_tools/data/adl-rvp/shared_launch_2user_vm.xml b/misc/config_tools/data/adl-rvp/shared_launch_2user_vm.xml
new file mode 100644
index 000000000..9e9bd4410
--- /dev/null
+++ b/misc/config_tools/data/adl-rvp/shared_launch_2user_vm.xml
@@ -0,0 +1,92 @@
+<<carn-config>
+ <user_vm id="1">
+ <user_vm_type desc="User VM type">WINDOWS</user_vm_type>
+ <vm_name>POST_STD_VM1</vm_name>
+ <rtos_type desc="User VM Realtime capability">no</rtos_type>
+ <mem_size desc="User VM memory size in MByte">4096</mem_size>
+ <vbootloader desc="virtual bootloader method" readonly="true">ovmf</vbootloader>
+ <vuart0 desc="vUART0 which emulated by device model">Disable</vuart0>
+ <enable_ptm desc="enable ptm of User VM">n</enable_ptm>
+ <usb_xhci desc="USB xHCI mediator configuration. input format: bus#-port#[:bus#-port#: ...]. e.g.: 1-2:2-4"/>
+ <cpu_affinity desc="List of pCPU that this VM's vCPUs are pinned to.">
+ <pcpu_id/>
+ </cpu_affinity>
+ <shm_regions desc="List of shared memory regions for inter-VM communication.">
+ <shm_region desc="configure the shm regions for current VM, for example hv:/sharename,2">dm:/looking_glass_waag,32</shm_region>
+ </shm_regions>
+ <console_vuart desc="A PCI based console vuart which is emulated by device model">Disable</console_vuart>
+ <communication_vuarts desc="List of PCI based communication vuarts which are emulated by device model">
+ <communication_vuart/>
+ </communication_vuarts>
+ <passthrough_devices>
+ <usb_xdci desc="vm usb_xdci device"/>
+ <audio desc="vm audio device"/>
+ <audio_codec desc="vm audio codec device"/>
+ <gpu desc="vm gpu device">00:02.0 VGA compatible controller: Intel Corporation Device 46a6 (rev 0c)</gpu>
+ <ipu desc="vm ipu device"/>
+ <ipu_i2c desc="vm ipu_i2c device"/>
+ <cse desc="vm cse device"/>
+ <wifi desc="vm wifi device"/>
+ <bluetooth desc="vm bluetooth"/>
+ <sd_card desc="vm sd card device"/>
+ <ethernet desc="vm ethernet device"/>
+ <sata desc="vm sata device"/>
+ <nvme desc="vm nvme device"/>
+ </passthrough_devices>
+ <virtio_devices>
+ <network desc="virtio network devices setting. Input format: tap_name,[vhost],[mac=XX:XX:XX:XX:XX:XX].">WaaG</network>
+ <input desc="virtio input device"/>
+ <block desc="virtio block device setting. format: [blk partition:][img path] e.g.: /dev/sda3:./a/b.img">./win10-ltsc.img</block>
+ <console desc="virtio console device,input format: [@]stdio|tty|pty|sock:portname[=portpath][,[@]stdio|tty|pty:portname[=portpath]]"/>
+ </virtio_devices>
+ <sriov>
+ <gpu/>
+ <network/>
+ </sriov>
+ </user_vm>
+ <user_vm id="2">
+ <user_vm_type desc="User VM type">PREEMPT-RT LINUX</user_vm_type>
+ <vm_name>POST_RT_VM1</vm_name>
+ <rtos_type desc="User VM Realtime capability">Hard RT</rtos_type>
+ <mem_size desc="User VM memory size in MByte">1024</mem_size>
+ <vbootloader desc="virtual bootloader method" readonly="true">ovmf</vbootloader>
+ <vuart0 desc="vUART0 which emulated by device model">Disable</vuart0>
+ <enable_ptm desc="enable ptm of User VM">n</enable_ptm>
+ <usb_xhci desc="USB xHCI mediator configuration. input format: bus#-port#[:bus#-port#: ...]. e.g.: 1-2:2-4"/>
+ <cpu_affinity desc="List of pCPU that this VM's vCPUs are pinned to.">
+ <pcpu_id/>
+ </cpu_affinity>
+ <shm_regions desc="List of shared memory regions for inter-VM communication.">
+ <shm_region desc="configure the shm regions for current VM, for example hv:/sharename,2"/>
+ </shm_regions>
+ <console_vuart desc="A PCI based console vuart which is emulated by device model">Disable</console_vuart>
+ <communication_vuarts desc="List of PCI based communication vuarts which are emulated by device model">
+ <communication_vuart/>
+ </communication_vuarts>
+ <passthrough_devices>
+ <usb_xdci desc="vm usb_xdci device"/>
+ <audio desc="vm audio device"/>
+ <audio_codec desc="vm audio codec device"/>
+ <gpu desc="vm gpu device"/>
+ <ipu desc="vm ipu device"/>
+ <ipu_i2c desc="vm ipu_i2c device"/>
+ <cse desc="vm cse device"/>
+ <wifi desc="vm wifi device"/>
+ <bluetooth desc="vm bluetooth"/>
+ <sd_card desc="vm sd card device"/>
+ <ethernet desc="vm ethernet device"/>
+ <sata desc="vm sata device"/>
+ <nvme desc="vm nvme device"/>
+ </passthrough_devices>
+ <virtio_devices>
+ <network desc="virtio network devices setting. Input format: tap_name,[vhost],[mac=XX:XX:XX:XX:XX:XX].">RT</network>
+ <input desc="virtio input device"/>
+ <block desc="virtio block device setting. format: [blk partition:][img path] e.g.: /dev/sda3:./a/b.img">./core-image-weston-intel-corei7-64.wic</block>
+ <console desc="virtio console device,input format: [@]stdio|tty|pty|sock:portname[=portpath][,[@]stdio|tty|pty:portname[=portpath]]">@stdio:stdio_port</console>
+ </virtio_devices>
+ <sriov>
+ <gpu/>
+ <network/>
+ </sriov>
+ </user_vm>
+</acrn-config>
diff --git a/misc/config_tools/data/adl-rvp/shared_launch_6user_vm.xml b/misc/config_tools/data/adl-rvp/shared_launch_6user_vm.xml
new file mode 100644
index 000000000..df6af35aa
--- /dev/null
+++ b/misc/config_tools/data/adl-rvp/shared_launch_6user_vm.xml
@@ -0,0 +1,272 @@
+<<carn-config>
+ <user_vm id="1">
+ <user_vm_type desc="User VM type">WINDOWS</user_vm_type>
+ <vm_name>POST_STD_VM1</vm_name>
+ <rtos_type desc="User VM Realtime capability">no</rtos_type>
+ <mem_size desc="User VM memory size in MByte">4096</mem_size>
+ <vbootloader desc="virtual bootloader method" readonly="true">ovmf</vbootloader>
+ <vuart0 desc="vUART0 which emulated by device model">Disable</vuart0>
+ <enable_ptm desc="enable ptm of User VM">n</enable_ptm>
+ <usb_xhci desc="USB xHCI mediator configuration. input format: bus#-port#[:bus#-port#: ...]. e.g.: 1-2:2-4"/>
+ <cpu_affinity desc="List of pCPU that this VM's vCPUs are pinned to.">
+ <pcpu_id/>
+ </cpu_affinity>
+ <shm_regions desc="List of shared memory regions for inter-VM communication.">
+ <shm_region desc="configure the shm regions for current VM, for example hv:/sharename,2">dm:/looking_glass_waag,32</shm_region>
+ </shm_regions>
+ <console_vuart desc="A PCI based console vuart which is emulated by device model">Disable</console_vuart>
+ <communication_vuarts desc="List of PCI based communication vuarts which are emulated by device model">
+ <communication_vuart/>
+ </communication_vuarts>
+ <passthrough_devices>
+ <usb_xdci desc="vm usb_xdci device"/>
+ <audio desc="vm audio device"/>
+ <audio_codec desc="vm audio codec device"/>
+ <gpu desc="vm gpu device">00:02.0 VGA compatible controller: Intel Corporation Device 46a6 (rev 0c)</gpu>
+ <ipu desc="vm ipu device"/>
+ <ipu_i2c desc="vm ipu_i2c device"/>
+ <cse desc="vm cse device"/>
+ <wifi desc="vm wifi device"/>
+ <bluetooth desc="vm bluetooth"/>
+ <sd_card desc="vm sd card device"/>
+ <ethernet desc="vm ethernet device"/>
+ <sata desc="vm sata device"/>
+ <nvme desc="vm nvme device"/>
+ </passthrough_devices>
+ <virtio_devices>
+ <network desc="virtio network devices setting. Input format: tap_name,[vhost],[mac=XX:XX:XX:XX:XX:XX].">WaaG</network>
+ <input desc="virtio input device"/>
+ <block desc="virtio block device setting. format: [blk partition:][img path] e.g.: /dev/sda3:./a/b.img">./win10-ltsc.img</block>
+ <console desc="virtio console device,input format: [@]stdio|tty|pty|sock:portname[=portpath][,[@]stdio|tty|pty:portname[=portpath]]"/>
+ </virtio_devices>
+ <sriov>
+ <gpu/>
+ <network/>
+ </sriov>
+ </user_vm>
+ <user_vm id="2">
+ <user_vm_type desc="User VM type">PREEMPT-RT LINUX</user_vm_type>
+ <vm_name>POST_RT_VM1</vm_name>
+ <rtos_type desc="User VM Realtime capability">Hard RT</rtos_type>
+ <mem_size desc="User VM memory size in MByte">1024</mem_size>
+ <vbootloader desc="virtual bootloader method" readonly="true">ovmf</vbootloader>
+ <vuart0 desc="vUART0 which emulated by device model">Disable</vuart0>
+ <enable_ptm desc="enable ptm of User VM">n</enable_ptm>
+ <usb_xhci desc="USB xHCI mediator configuration. input format: bus#-port#[:bus#-port#: ...]. e.g.: 1-2:2-4"/>
+ <cpu_affinity desc="List of pCPU that this VM's vCPUs are pinned to.">
+ <pcpu_id/>
+ </cpu_affinity>
+ <shm_regions desc="List of shared memory regions for inter-VM communication.">
+ <shm_region desc="configure the shm regions for current VM, for example hv:/sharename,2"/>
+ </shm_regions>
+ <console_vuart desc="A PCI based console vuart which is emulated by device model">Disable</console_vuart>
+ <communication_vuarts desc="List of PCI based communication vuarts which are emulated by device model">
+ <communication_vuart/>
+ </communication_vuarts>
+ <passthrough_devices>
+ <usb_xdci desc="vm usb_xdci device"/>
+ <audio desc="vm audio device"/>
+ <audio_codec desc="vm audio codec device"/>
+ <gpu desc="vm gpu device"/>
+ <ipu desc="vm ipu device"/>
+ <ipu_i2c desc="vm ipu_i2c device"/>
+ <cse desc="vm cse device"/>
+ <wifi desc="vm wifi device"/>
+ <bluetooth desc="vm bluetooth"/>
+ <sd_card desc="vm sd card device"/>
+ <ethernet desc="vm ethernet device"/>
+ <sata desc="vm sata device"/>
+ <nvme desc="vm nvme device"/>
+ </passthrough_devices>
+ <virtio_devices>
+ <network desc="virtio network devices setting. Input format: tap_name,[vhost],[mac=XX:XX:XX:XX:XX:XX].">RT</network>
+ <input desc="virtio input device"/>
+ <block desc="virtio block device setting. format: [blk partition:][img path] e.g.: /dev/sda3:./a/b.img">./core-image-weston-intel-corei7-64.wic</block>
+ <console desc="virtio console device,input format: [@]stdio|tty|pty|sock:portname[=portpath][,[@]stdio|tty|pty:portname[=portpath]]">@stdio:stdio_port</console>
+ </virtio_devices>
+ <sriov>
+ <gpu/>
+ <network/>
+ </sriov>
+ </user_vm>
+ <user_vm id="3">
+ <user_vm_type desc="User VM type">YOCTO</user_vm_type>
+ <vm_name>POST_STD_VM2</vm_name>
+ <rtos_type desc="User VM Realtime capability">no</rtos_type>
+ <mem_size desc="User VM memory size in MByte">512</mem_size>
+ <vbootloader desc="virtual bootloader method" readonly="true">ovmf</vbootloader>
+ <vuart0 desc="vUART0 which emulated by device model">Disable</vuart0>
+ <enable_ptm desc="enable ptm of User VM">n</enable_ptm>
+ <usb_xhci desc="USB xHCI mediator configuration. input format: bus#-port#[:bus#-port#: ...]. e.g.: 1-2:2-4"/>
+ <cpu_affinity desc="List of pCPU that this VM's vCPUs are pinned to.">
+ <pcpu_id/>
+ </cpu_affinity>
+ <shm_regions desc="List of shared memory regions for inter-VM communication.">
+ <shm_region desc="configure the shm regions for current VM, for example hv:/sharename,2">dm:/looking_glass_yaag,32</shm_region>
+ </shm_regions>
+ <console_vuart desc="A PCI based console vuart which is emulated by device model">Disable</console_vuart>
+ <communication_vuarts desc="List of PCI based communication vuarts which are emulated by device model">
+ <communication_vuart/>
+ </communication_vuarts>
+ <passthrough_devices>
+ <usb_xdci desc="vm usb_xdci device"/>
+ <audio desc="vm audio device"/>
+ <audio_codec desc="vm audio codec device"/>
+ <gpu desc="vm gpu device"/>
+ <ipu desc="vm ipu device"/>
+ <ipu_i2c desc="vm ipu_i2c device"/>
+ <cse desc="vm cse device"/>
+ <wifi desc="vm wifi device"/>
+ <bluetooth desc="vm bluetooth"/>
+ <sd_card desc="vm sd card device"/>
+ <ethernet desc="vm ethernet device"/>
+ <sata desc="vm sata device"/>
+ <nvme desc="vm nvme device"/>
+ </passthrough_devices>
+ <virtio_devices>
+ <console desc="virtio console device,input format: [@]stdio|tty|pty|sock:portname[=portpath][,[@]stdio|tty|pty:portname[=portpath]]">@stdio:stdio_port</console>
+ <network desc="virtio network devices setting. Input format: tap_name,[vhost],[mac=XX:XX:XX:XX:XX:XX].">YaaG3</network>
+ <input desc="virtio input device"/>
+ <block desc="virtio block device setting. format: [blk partition:][img path] e.g.: /dev/sda3:./a/b.img">./YaaG.img</block>
+ </virtio_devices>
+ <sriov>
+ <gpu/>
+ <network/>
+ </sriov>
+ </user_vm>
+ <user_vm id="4">
+ <user_vm_type desc="User VM type">YOCTO</user_vm_type>
+ <vm_name>POST_STD_VM3</vm_name>
+ <rtos_type desc="User VM Realtime capability">no</rtos_type>
+ <mem_size desc="User VM memory size in MByte">512</mem_size>
+ <vbootloader desc="virtual bootloader method" readonly="true">ovmf</vbootloader>
+ <vuart0 desc="vUART0 which emulated by device model">Disable</vuart0>
+ <enable_ptm desc="enable ptm of User VM">n</enable_ptm>
+ <usb_xhci desc="USB xHCI mediator configuration. input format: bus#-port#[:bus#-port#: ...]. e.g.: 1-2:2-4"/>
+ <cpu_affinity desc="List of pCPU that this VM's vCPUs are pinned to.">
+ <pcpu_id/>
+ </cpu_affinity>
+ <shm_regions desc="List of shared memory regions for inter-VM communication.">
+ <shm_region desc="configure the shm regions for current VM, for example hv:/sharename,2"/>
+ </shm_regions>
+ <console_vuart desc="A PCI based console vuart which is emulated by device model">Disable</console_vuart>
+ <communication_vuarts desc="List of PCI based communication vuarts which are emulated by device model">
+ <communication_vuart/>
+ </communication_vuarts>
+ <passthrough_devices>
+ <usb_xdci desc="vm usb_xdci device"/>
+ <audio desc="vm audio device"/>
+ <audio_codec desc="vm audio codec device"/>
+ <gpu desc="vm gpu device"/>
+ <ipu desc="vm ipu device"/>
+ <ipu_i2c desc="vm ipu_i2c device"/>
+ <cse desc="vm cse device"/>
+ <wifi desc="vm wifi device"/>
+ <bluetooth desc="vm bluetooth"/>
+ <sd_card desc="vm sd card device"/>
+ <ethernet desc="vm ethernet device"/>
+ <sata desc="vm sata device"/>
+ <nvme desc="vm nvme device"/>
+ </passthrough_devices>
+ <virtio_devices>
+ <console desc="virtio console device,input format: [@]stdio|tty|pty|sock:portname[=portpath][,[@]stdio|tty|pty:portname[=portpath]]">@stdio:stdio_port</console>
+ <network desc="virtio network devices setting. Input format: tap_name,[vhost],[mac=XX:XX:XX:XX:XX:XX].">YaaG4</network>
+ <input desc="virtio input device"/>
+ <block desc="virtio block device setting. format: [blk partition:][img path] e.g.: /dev/sda3:./a/b.img">./YaaG.img</block>
+ </virtio_devices>
+ <sriov>
+ <gpu/>
+ <network/>
+ </sriov>
+ </user_vm>
+ <user_vm id="5">
+ <user_vm_type desc="User VM type">YOCTO</user_vm_type>
+ <vm_name>POST_STD_VM4</vm_name>
+ <rtos_type desc="User VM Realtime capability">no</rtos_type>
+ <mem_size desc="User VM memory size in MByte">512</mem_size>
+ <vbootloader desc="virtual bootloader method" readonly="true">ovmf</vbootloader>
+ <vuart0 desc="vUART0 which emulated by device model">Disable</vuart0>
+ <enable_ptm desc="enable ptm of User VM">n</enable_ptm>
+ <usb_xhci desc="USB xHCI mediator configuration. input format: bus#-port#[:bus#-port#: ...]. e.g.: 1-2:2-4"/>
+ <cpu_affinity desc="List of pCPU that this VM's vCPUs are pinned to.">
+ <pcpu_id/>
+ </cpu_affinity>
+ <shm_regions desc="List of shared memory regions for inter-VM communication.">
+ <shm_region desc="configure the shm regions for current VM, for example hv:/sharename,2"/>
+ </shm_regions>
+ <console_vuart desc="A PCI based console vuart which is emulated by device model">Disable</console_vuart>
+ <communication_vuarts desc="List of PCI based communication vuarts which are emulated by device model">
+ <communication_vuart/>
+ </communication_vuarts>
+ <passthrough_devices>
+ <usb_xdci desc="vm usb_xdci device"/>
+ <audio desc="vm audio device"/>
+ <audio_codec desc="vm audio codec device"/>
+ <gpu desc="vm gpu device"/>
+ <ipu desc="vm ipu device"/>
+ <ipu_i2c desc="vm ipu_i2c device"/>
+ <cse desc="vm cse device"/>
+ <wifi desc="vm wifi device"/>
+ <bluetooth desc="vm bluetooth"/>
+ <sd_card desc="vm sd card device"/>
+ <ethernet desc="vm ethernet device"/>
+ <sata desc="vm sata device"/>
+ <nvme desc="vm nvme device"/>
+ </passthrough_devices>
+ <virtio_devices>
+ <console desc="virtio console device,input format: [@]stdio|tty|pty|sock:portname[=portpath][,[@]stdio|tty|pty:portname[=portpath]]">@stdio:stdio_port</console>
+ <network desc="virtio network devices setting. Input format: tap_name,[vhost],[mac=XX:XX:XX:XX:XX:XX].">YaaG5</network>
+ <input desc="virtio input device"/>
+ <block desc="virtio block device setting. format: [blk partition:][img path] e.g.: /dev/sda3:./a/b.img">./YaaG.img</block>
+ </virtio_devices>
+ <sriov>
+ <gpu/>
+ <network/>
+ </sriov>
+ </user_vm>
+ <user_vm id="6">
+ <user_vm_type desc="User VM type">YOCTO</user_vm_type>
+ <vm_name>POST_STD_VM5</vm_name>
+ <rtos_type desc="User VM Realtime capability">no</rtos_type>
+ <mem_size desc="User VM memory size in MByte">512</mem_size>
+ <vbootloader desc="virtual bootloader method" readonly="true">ovmf</vbootloader>
+ <vuart0 desc="vUART0 which emulated by device model">Disable</vuart0>
+ <enable_ptm desc="enable ptm of User VM">n</enable_ptm>
+ <usb_xhci desc="USB xHCI mediator configuration. input format: bus#-port#[:bus#-port#: ...]. e.g.: 1-2:2-4"/>
+ <cpu_affinity desc="List of pCPU that this VM's vCPUs are pinned to.">
+ <pcpu_id/>
+ </cpu_affinity>
+ <shm_regions desc="List of shared memory regions for inter-VM communication.">
+ <shm_region desc="configure the shm regions for current VM, for example hv:/sharename,2"/>
+ </shm_regions>
+ <console_vuart desc="A PCI based console vuart which is emulated by device model">Disable</console_vuart>
+ <communication_vuarts desc="List of PCI based communication vuarts which are emulated by device model">
+ <communication_vuart/>
+ </communication_vuarts>
+ <passthrough_devices>
+ <usb_xdci desc="vm usb_xdci device"/>
+ <audio desc="vm audio device"/>
+ <audio_codec desc="vm audio codec device"/>
+ <gpu desc="vm gpu device"/>
+ <ipu desc="vm ipu device"/>
+ <ipu_i2c desc="vm ipu_i2c device"/>
+ <cse desc="vm cse device"/>
+ <wifi desc="vm wifi device"/>
+ <bluetooth desc="vm bluetooth"/>
+ <sd_card desc="vm sd card device"/>
+ <ethernet desc="vm ethernet device"/>
+ <sata desc="vm sata device"/>
+ <nvme desc="vm nvme device"/>
+ </passthrough_devices>
+ <virtio_devices>
+ <console desc="virtio console device,input format: [@]stdio|tty|pty|sock:portname[=portpath][,[@]stdio|tty|pty:portname[=portpath]]">@stdio:stdio_port</console>
+ <network desc="virtio network devices setting. Input format: tap_name,[vhost],[mac=XX:XX:XX:XX:XX:XX].">YaaG6</network>
+ <input desc="virtio input device"/>
+ <block desc="virtio block device setting. format: [blk partition:][img path] e.g.: /dev/sda3:./a/b.img">./YaaG.img</block>
+ </virtio_devices>
+ <sriov>
+ <gpu/>
+ <network/>
+ </sriov>
+ </user_vm>
+</acrn-config>
diff --git a/misc/config_tools/data/adl-s-crb/adl-s-crb.xml b/misc/config_tools/data/adl-s-crb/adl-s-crb.xml
new file mode 100644
index 000000000..eeafaa5e6
--- /dev/null
+++ b/misc/config_tools/data/adl-s-crb/adl-s-crb.xml
@@ -0,0 +1,9461 @@
+<acrn-config board="adl-s-crb">
+ <BIOS_INFO>
+ BIOS Information
+ Vendor: Intel Corporation
+ Version: ADLSFWI1.R00.2501.B00.2112061405
+ Release Date: 12/06/2021
+ </BIOS_INFO>
+ <BASE_BOARD_INFO>
+ Base Board Information
+ Manufacturer: Intel Corporation
+ Product Name: AlderLake-S ADP-S DDR5 UDIMM CRB
+ Version: 2
+ </BASE_BOARD_INFO>
+ <PCI_DEVICE>
+ 00:00.0 Host bridge: Intel Corporation Device 4660 (rev 02)
+ Region 3: Memory at &lt;ignored&gt; (32-bit, non-prefetchable)
+ 00:02.0 VGA compatible controller: Intel Corporation AlderLake-S GT1 (rev 0c)
+ Region 0: Memory at 60e7000000 (64-bit, non-prefetchable) [size=16M]
+ Region 2: Memory at 4000000000 (64-bit, prefetchable) [size=256M]
+ Region 0: Memory at 00000060e0000000 (64-bit, non-prefetchable)
+ Region 2: Memory at 0000006000000000 (64-bit, prefetchable)
+ 00:08.0 System peripheral: Intel Corporation 12th Gen Core Processor Gaussian &amp; Neural Accelerator (rev 02)
+ Region 0: Memory at 60e833c000 (64-bit, non-prefetchable) [disabled] [size=4K]
+ 00:0a.0 Signal processing controller: Intel Corporation Platform Monitoring Technology (rev 01)
+ Region 0: Memory at 60e8320000 (64-bit, non-prefetchable) [size=32K]
+ 00:12.0 Serial controller: Intel Corporation Device 7af8 (rev 11)
+ Region 0: Memory at 60e8310000 (64-bit, non-prefetchable) [size=64K]
+ 00:14.0 USB controller: Intel Corporation Device 7ae0 (rev 11)
+ Region 0: Memory at 60e8300000 (64-bit, non-prefetchable) [size=64K]
+ 00:14.1 USB controller: Intel Corporation Device 7ae1 (rev 11)
+ Region 0: Memory at 60e8000000 (64-bit, non-prefetchable) [disabled] [size=2M]
+ Region 2: Memory at 60e833b000 (64-bit, non-prefetchable) [disabled] [size=4K]
+ 00:14.2 RAM memory: Intel Corporation Device 7aa7 (rev 11)
+ Region 0: Memory at 60e832c000 (64-bit, non-prefetchable) [disabled] [size=16K]
+ Region 2: Memory at 60e833a000 (64-bit, non-prefetchable) [disabled] [size=4K]
+ 00:15.0 Serial bus controller: Intel Corporation Device 7acc (rev 11)
+ Region 0: Memory at 4010000000 (64-bit, non-prefetchable) [disabled] [size=4K]
+ 00:15.1 Serial bus controller: Intel Corporation Device 7acd (rev 11)
+ Region 0: Memory at 4010001000 (64-bit, non-prefetchable) [disabled] [size=4K]
+ 00:15.2 Serial bus controller: Intel Corporation Device 7ace (rev 11)
+ Region 0: Memory at 4010002000 (64-bit, non-prefetchable) [disabled] [size=4K]
+ 00:15.3 Serial bus controller: Intel Corporation Device 7acf (rev 11)
+ Region 0: Memory at 4010003000 (64-bit, non-prefetchable) [disabled] [size=4K]
+ 00:16.0 Communication controller: Intel Corporation Device 7ae8 (rev 11)
+ Region 0: Memory at 60e8335000 (64-bit, non-prefetchable) [disabled] [size=4K]
+ 00:16.3 Serial controller: Intel Corporation Device 7aeb (rev 11)
+ Region 1: Memory at 50525000 (32-bit, non-prefetchable) [size=4K]
+ 00:17.0 SATA controller: Intel Corporation Device 7ae2 (rev 11)
+ Region 0: Memory at 50520000 (32-bit, non-prefetchable) [size=8K]
+ Region 1: Memory at 50524000 (32-bit, non-prefetchable) [size=256]
+ Region 5: Memory at 50523000 (32-bit, non-prefetchable) [size=2K]
+ 00:19.0 Serial bus controller: Intel Corporation Device 7afc (rev 11)
+ Region 0: Memory at 4010004000 (64-bit, non-prefetchable) [disabled] [size=4K]
+ 00:19.1 Serial bus controller: Intel Corporation Device 7afd (rev 11)
+ Region 0: Memory at 4010005000 (64-bit, non-prefetchable) [disabled] [size=4K]
+ 00:1a.0 PCI bridge: Intel Corporation Device 7ac8 (rev 11)
+ 00:1e.0 Communication controller: Intel Corporation Device 7aa8 (rev 11)
+ Region 0: Memory at 4010006000 (64-bit, non-prefetchable) [disabled] [size=4K]
+ 00:1e.3 Serial bus controller: Intel Corporation Device 7aab (rev 11)
+ Region 0: Memory at 4010007000 (64-bit, non-prefetchable) [disabled] [size=4K]
+ 00:1f.0 ISA bridge: Intel Corporation Device 7a90 (rev 11)
+ 00:1f.3 Multimedia audio controller: Intel Corporation Device 7ad0 (rev 11)
+ Region 0: Memory at 60e8328000 (64-bit, non-prefetchable) [disabled] [size=16K]
+ Region 4: Memory at 60e8200000 (64-bit, non-prefetchable) [disabled] [size=1M]
+ 00:1f.4 SMBus: Intel Corporation Device 7aa3 (rev 11)
+ Region 0: Memory at 60e8330000 (64-bit, non-prefetchable) [disabled] [size=256]
+ 00:1f.5 Serial bus controller: Intel Corporation Device 7aa4 (rev 11)
+ Region 0: Memory at 50522000 (32-bit, non-prefetchable) [size=4K]
+ 00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (17) I219-LM (rev 11)
+ Region 0: Memory at 50500000 (32-bit, non-prefetchable) [size=128K]
+ 02:00.0 Non-Volatile memory controller: Intel Corporation Device f1aa (rev 03)
+ Region 0: Memory at 50400000 (64-bit, non-prefetchable) [size=16K]
+ Region 0: Memory at 0000000050404000 (64-bit, non-prefetchable)
+ </PCI_DEVICE>
+ <PCI_VID_PID>
+ 00:00.0 0600: 8086:4660 (rev 02)
+ 00:02.0 0300: 8086:4680 (rev 0c)
+ 00:08.0 0880: 8086:464f (rev 02)
+ 00:0a.0 1180: 8086:467d (rev 01)
+ 00:12.0 0700: 8086:7af8 (rev 11)
+ 00:14.0 0c03: 8086:7ae0 (rev 11)
+ 00:14.1 0c03: 8086:7ae1 (rev 11)
+ 00:14.2 0500: 8086:7aa7 (rev 11)
+ 00:15.0 0c80: 8086:7acc (rev 11)
+ 00:15.1 0c80: 8086:7acd (rev 11)
+ 00:15.2 0c80: 8086:7ace (rev 11)
+ 00:15.3 0c80: 8086:7acf (rev 11)
+ 00:16.0 0780: 8086:7ae8 (rev 11)
+ 00:16.3 0700: 8086:7aeb (rev 11)
+ 00:17.0 0106: 8086:7ae2 (rev 11)
+ 00:19.0 0c80: 8086:7afc (rev 11)
+ 00:19.1 0c80: 8086:7afd (rev 11)
+ 00:1a.0 0604: 8086:7ac8 (rev 11)
+ 00:1e.0 0780: 8086:7aa8 (rev 11)
+ 00:1e.3 0c80: 8086:7aab (rev 11)
+ 00:1f.0 0601: 8086:7a90 (rev 11)
+ 00:1f.3 0401: 8086:7ad0 (rev 11)
+ 00:1f.4 0c05: 8086:7aa3 (rev 11)
+ 00:1f.5 0c80: 8086:7aa4 (rev 11)
+ 00:1f.6 0200: 8086:1a1c (rev 11)
+ 02:00.0 0108: 8086:f1aa (rev 03)
+ </PCI_VID_PID>
+ <WAKE_VECTOR_INFO>
+ #define WAKE_VECTOR_32 0x3FED800CUL
+ #define WAKE_VECTOR_64 0x3FED8018UL
+ </WAKE_VECTOR_INFO>
+ <RESET_REGISTER_INFO>
+ #define RESET_REGISTER_ADDRESS 0xCF9UL
+ #define RESET_REGISTER_SPACE_ID SPACE_SYSTEM_IO
+ #define RESET_REGISTER_VALUE 0x6U
+ </RESET_REGISTER_INFO>
+ <PM_INFO>
+ #define PM1A_EVT_SPACE_ID SPACE_SYSTEM_IO
+ #define PM1A_EVT_BIT_WIDTH 0x20U
+ #define PM1A_EVT_BIT_OFFSET 0x0U
+ #define PM1A_EVT_ADDRESS 0x1800UL
+ #define PM1A_EVT_ACCESS_SIZE 0x2U
+ #define PM1B_EVT_SPACE_ID SPACE_SYSTEM_IO
+ #define PM1B_EVT_BIT_WIDTH 0x0U
+ #define PM1B_EVT_BIT_OFFSET 0x0U
+ #define PM1B_EVT_ADDRESS 0x0UL
+ #define PM1B_EVT_ACCESS_SIZE 0x2U
+ #define PM1A_CNT_SPACE_ID SPACE_SYSTEM_IO
+ #define PM1A_CNT_BIT_WIDTH 0x10U
+ #define PM1A_CNT_BIT_OFFSET 0x0U
+ #define PM1A_CNT_ADDRESS 0x1804UL
+ #define PM1A_CNT_ACCESS_SIZE 0x2U
+ #define PM1B_CNT_SPACE_ID SPACE_SYSTEM_IO
+ #define PM1B_CNT_BIT_WIDTH 0x0U
+ #define PM1B_CNT_BIT_OFFSET 0x0U
+ #define PM1B_CNT_ADDRESS 0x0UL
+ #define PM1B_CNT_ACCESS_SIZE 0x2U
+ </PM_INFO>
+ <S3_INFO>
+ #define S3_PKG_VAL_PM1A 0x5U
+ #define S3_PKG_VAL_PM1B 0U
+ #define S3_PKG_RESERVED 0x0U
+ </S3_INFO>
+ <S5_INFO>
+ #define S5_PKG_VAL_PM1A 0x7U
+ #define S5_PKG_VAL_PM1B 0U
+ #define S5_PKG_RESERVED 0x0U
+ </S5_INFO>
+ <DRHD_INFO>
+ #define DRHD_COUNT 2U
+
+ #define DRHD0_DEV_CNT 0x1U
+ #define DRHD0_SEGMENT 0x0U
+ #define DRHD0_FLAGS 0x0U
+ #define DRHD0_REG_BASE 0xFED90000UL
+ #define DRHD0_IGNORE true
+ #define DRHD0_DEVSCOPE0_TYPE 0x1U
+ #define DRHD0_DEVSCOPE0_ID 0x0U
+ #define DRHD0_DEVSCOPE0_BUS 0x0U
+ #define DRHD0_DEVSCOPE0_PATH 0x10U
+
+ #define DRHD1_DEV_CNT 0x2U
+ #define DRHD1_SEGMENT 0x0U
+ #define DRHD1_FLAGS 0x1U
+ #define DRHD1_REG_BASE 0xFED91000UL
+ #define DRHD1_IGNORE false
+ #define DRHD1_DEVSCOPE0_TYPE 0x3U
+ #define DRHD1_DEVSCOPE0_ID 0x2U
+ #define DRHD1_DEVSCOPE0_BUS 0x0U
+ #define DRHD1_DEVSCOPE0_PATH 0xf7U
+ #define DRHD1_DEVSCOPE1_TYPE 0x4U
+ #define DRHD1_DEVSCOPE1_ID 0x0U
+ #define DRHD1_DEVSCOPE1_BUS 0x0U
+ #define DRHD1_DEVSCOPE1_PATH 0xf6U
+
+ </DRHD_INFO>
+ <CPU_BRAND>
+ "12th Gen Intel(R) Core(TM) i9-12900E"
+ </CPU_BRAND>
+ <CX_INFO>
+ /* Cx data is not available */
+ </CX_INFO>
+ <PX_INFO>
+ {0x8FDUL, 0x00UL, 0x0AUL, 0x0AUL, 0x003200UL, 0x003200UL}, /* P0 */
+ {0x8FCUL, 0x00UL, 0x0AUL, 0x0AUL, 0x001700UL, 0x001700UL}, /* P1 */
+ {0x898UL, 0x00UL, 0x0AUL, 0x0AUL, 0x001600UL, 0x001600UL}, /* P2 */
+ {0x834UL, 0x00UL, 0x0AUL, 0x0AUL, 0x001500UL, 0x001500UL}, /* P3 */
+ {0x7D0UL, 0x00UL, 0x0AUL, 0x0AUL, 0x001400UL, 0x001400UL}, /* P4 */
+ {0x76CUL, 0x00UL, 0x0AUL, 0x0AUL, 0x001300UL, 0x001300UL}, /* P5 */
+ {0x708UL, 0x00UL, 0x0AUL, 0x0AUL, 0x001200UL, 0x001200UL}, /* P6 */
+ {0x6A4UL, 0x00UL, 0x0AUL, 0x0AUL, 0x001100UL, 0x001100UL}, /* P7 */
+ {0x5DCUL, 0x00UL, 0x0AUL, 0x0AUL, 0x000F00UL, 0x000F00UL}, /* P8 */
+ {0x578UL, 0x00UL, 0x0AUL, 0x0AUL, 0x000E00UL, 0x000E00UL}, /* P9 */
+ {0x514UL, 0x00UL, 0x0AUL, 0x0AUL, 0x000D00UL, 0x000D00UL}, /* P10 */
+ {0x4B0UL, 0x00UL, 0x0AUL, 0x0AUL, 0x000C00UL, 0x000C00UL}, /* P11 */
+ {0x44CUL, 0x00UL, 0x0AUL, 0x0AUL, 0x000B00UL, 0x000B00UL}, /* P12 */
+ {0x3E8UL, 0x00UL, 0x0AUL, 0x0AUL, 0x000A00UL, 0x000A00UL}, /* P13 */
+ {0x384UL, 0x00UL, 0x0AUL, 0x0AUL, 0x000900UL, 0x000900UL}, /* P14 */
+ {0x320UL, 0x00UL, 0x0AUL, 0x0AUL, 0x000800UL, 0x000800UL}, /* P15 */
+ </PX_INFO>
+ <MMCFG_BASE_INFO>
+ /* PCI mmcfg base of MCFG */
+ #define DEFAULT_PCI_MMCFG_BASE 0xc0000000UL
+ </MMCFG_BASE_INFO>
+ <TPM_INFO>
+ /* no TPM device */
+ </TPM_INFO>
+ <CLOS_INFO>
+ rdt resources supported: L2
+ rdt resource clos max: 16
+ rdt resource mask max: '0xffff'
+ </CLOS_INFO>
+ <IOMEM_INFO>
+ 00000000-00000fff : Reserved
+ 00001000-0009efff : System RAM
+ 0009f000-000fffff : Reserved
+ 000a0000-000bffff : PCI Bus 0000:00
+ 000f0000-000fffff : System ROM
+ 00100000-382b2fff : System RAM
+ 382b3000-382cdfff : Reserved
+ 382ce000-39b1dfff : System RAM
+ 39b1e000-39b1efff : Reserved
+ 39b1f000-3cb15fff : System RAM
+ 3cb16000-3fe86fff : Reserved
+ 3d839000-3d848fff : pnp 00:04
+ 3fe87000-3ff6efff : ACPI Non-volatile Storage
+ 3ff6f000-4007efff : ACPI Tables
+ 4007f000-4007ffff : System RAM
+ 40080000-40080fff : Reserved
+ 40081000-43bfffff : System RAM
+ 43c00000-47ffffff : Reserved
+ 49000000-491fffff : Reserved
+ 49e00000-503fffff : Reserved
+ 50400000-bfffffff : PCI Bus 0000:00
+ 50400000-504fffff : PCI Bus 0000:02
+ 50400000-50403fff : 0000:02:00.0
+ 50400000-50403fff : nvme
+ 50500000-5051ffff : 0000:00:1f.6
+ 50500000-5051ffff : e1000e
+ 50520000-50521fff : 0000:00:17.0
+ 50520000-50521fff : ahci
+ 50522000-50522fff : 0000:00:1f.5
+ 50523000-505237ff : 0000:00:17.0
+ 50523000-505237ff : ahci
+ 50524000-505240ff : 0000:00:17.0
+ 50524000-505240ff : ahci
+ 50525000-50525fff : 0000:00:16.3
+ c0000000-cfffffff : PCI MMCONFIG 0000 [bus 00-ff]
+ c0000000-cfffffff : Reserved
+ c0000000-cfffffff : pnp 00:04
+ e0690000-e069ffff : INTC1056:00
+ e06a0000-e06affff : INTC1056:00
+ e06b0000-e06bffff : INTC1056:00
+ e06d0000-e06dffff : INTC1056:00
+ e06e0000-e06effff : INTC1056:00
+ fe001210-fe001247 : INTC1023:00
+ fe001310-fe001347 : INTC1024:00
+ fec00000-fec003ff : IOAPIC 0
+ fed00000-fed003ff : HPET 0
+ fed00000-fed003ff : PNP0103:00
+ fed20000-fed7ffff : Reserved
+ fed20000-fed7ffff : pnp 00:04
+ fed90000-fed90fff : dmar0
+ fed91000-fed91fff : dmar1
+ feda0000-feda0fff : pnp 00:04
+ feda1000-feda1fff : pnp 00:04
+ fedc0000-fedc7fff : pnp 00:04
+ fee00000-feefffff : pnp 00:04
+ fee00000-fee00fff : Local APIC
+ ff000000-ffffffff : Reserved
+ 100000000-8afbfffff : System RAM
+ 369a00000-36a6010d6 : Kernel code
+ 36a800000-36ab24fff : Kernel rodata
+ 36ac00000-36ada09bf : Kernel data
+ 36b2b0000-36b3fffff : Kernel bss
+ 8afc00000-8afffffff : RAM buffer
+ 4000000000-7fffffffff : PCI Bus 0000:00
+ 4000000000-400fffffff : 0000:00:02.0
+ 4000000000-40007e8fff : efifb
+ 4010000000-4010000fff : 0000:00:15.0
+ 4010001000-4010001fff : 0000:00:15.1
+ 4010002000-4010002fff : 0000:00:15.2
+ 4010003000-4010003fff : 0000:00:15.3
+ 4010004000-4010004fff : 0000:00:19.0
+ 4010005000-4010005fff : 0000:00:19.1
+ 4010006000-4010006fff : 0000:00:1e.0
+ 4010007000-4010007fff : 0000:00:1e.3
+ 60e7000000-60e7ffffff : 0000:00:02.0
+ 60e8000000-60e81fffff : 0000:00:14.1
+ 60e8200000-60e82fffff : 0000:00:1f.3
+ 60e8300000-60e830ffff : 0000:00:14.0
+ 60e8300000-60e830ffff : xhci-hcd
+ 60e8310000-60e831ffff : 0000:00:12.0
+ 60e8320000-60e8327fff : 0000:00:0a.0
+ 60e8328000-60e832bfff : 0000:00:1f.3
+ 60e832c000-60e832ffff : 0000:00:14.2
+ 60e8330000-60e83300ff : 0000:00:1f.4
+ 60e8335000-60e8335fff : 0000:00:16.0
+ 60e833a000-60e833afff : 0000:00:14.2
+ 60e833b000-60e833bfff : 0000:00:14.1
+ 60e833c000-60e833cfff : 0000:00:08.0
+ </IOMEM_INFO>
+ <BLOCK_DEVICE_INFO>
+ /dev/nvme0n1p2: TYPE="ext4"
+ /dev/sda3: TYPE="ext4"
+ /dev/sdb2: TYPE="ext4"
+ /dev/sdb3: TYPE="ext4"
+ </BLOCK_DEVICE_INFO>
+ <TTYS_INFO>
+ seri:/dev/ttyS0 type:portio base:0x3F8 irq:4
+ seri:/dev/ttyS1 type:portio base:0x3088 irq:19
+ </TTYS_INFO>
+ <AVAILABLE_IRQ_INFO>
+ 3, 5, 6, 7, 10, 11, 12, 13, 14, 15
+ </AVAILABLE_IRQ_INFO>
+ <TOTAL_MEM_INFO>
+ 32631064 kB
+ </TOTAL_MEM_INFO>
+ <CPU_PROCESSOR_INFO>
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
+ </CPU_PROCESSOR_INFO>
+ <MAX_MSIX_TABLE_NUM>
+ 16
+ </MAX_MSIX_TABLE_NUM>
+ <processors>
+ <model description="12th Gen Intel(R) Core(TM) i9-12900E">
+ <family_id>0x6</family_id>
+ <model_id>0x97</model_id>
+ <core_type>Core</core_type>
+ <native_model_id>0x1</native_model_id>
+ <capability id="sse3"/>
+ <capability id="pclmulqdq"/>
+ <capability id="dtes64"/>
+ <capability id="monitor"/>
+ <capability id="ds_cpl"/>
+ <capability id="vmx"/>
+ <capability id="smx"/>
+ <capability id="est"/>
+ <capability id="tm2"/>
+ <capability id="ssse3"/>
+ <capability id="sdbg"/>
+ <capability id="fma"/>
+ <capability id="cmpxchg16b"/>
+ <capability id="xtpr"/>
+ <capability id="pdcm"/>
+ <capability id="pcid"/>
+ <capability id="sse4_1"/>
+ <capability id="sse4_2"/>
+ <capability id="x2apic"/>
+ <capability id="movbe"/>
+ <capability id="popcnt"/>
+ <capability id="tsc_deadline"/>
+ <capability id="aes"/>
+ <capability id="xsave"/>
+ <capability id="avx"/>
+ <capability id="f16c"/>
+ <capability id="rdrand"/>
+ <capability id="fpu"/>
+ <capability id="vme"/>
+ <capability id="de"/>
+ <capability id="pse"/>
+ <capability id="tsc"/>
+ <capability id="msr"/>
+ <capability id="pae"/>
+ <capability id="mce"/>
+ <capability id="cx8"/>
+ <capability id="apic"/>
+ <capability id="sep"/>
+ <capability id="mtrr"/>
+ <capability id="pge"/>
+ <capability id="mca"/>
+ <capability id="cmov"/>
+ <capability id="pat"/>
+ <capability id="pse36"/>
+ <capability id="clfsh"/>
+ <capability id="ds"/>
+ <capability id="acpi"/>
+ <capability id="mmx"/>
+ <capability id="fxsr"/>
+ <capability id="sse"/>
+ <capability id="sse2"/>
+ <capability id="ss"/>
+ <capability id="htt"/>
+ <capability id="tm"/>
+ <capability id="pbe"/>
+ <capability id="fsgsbase"/>
+ <capability id="ia32_tsc_adjust_msr"/>
+ <capability id="bmi1"/>
+ <capability id="avx2"/>
+ <capability id="fdp_excptn_only"/>
+ <capability id="smep"/>
+ <capability id="bmi2"/>
+ <capability id="erms"/>
+ <capability id="invpcid"/>
+ <capability id="deprecate_fpu"/>
+ <capability id="rdt_a"/>
+ <capability id="rdseed"/>
+ <capability id="adx"/>
+ <capability id="smap"/>
+ <capability id="clflushopt"/>
+ <capability id="clwb"/>
+ <capability id="intel_pt"/>
+ <capability id="sha"/>
+ <capability id="umip"/>
+ <capability id="pku"/>
+ <capability id="waitpkg"/>
+ <capability id="cet_ss"/>
+ <capability id="gfni"/>
+ <capability id="vaes"/>
+ <capability id="vpclmulqdq"/>
+ <capability id="tme_en"/>
+ <capability id="rdpid"/>
+ <capability id="kl"/>
+ <capability id="movdiri"/>
+ <capability id="movdiri64b"/>
+ <capability id="pks"/>
+ <capability id="fast_short_rep_mov"/>
+ <capability id="md_clear"/>
+ <capability id="hybrid"/>
+ <capability id="pconfig"/>
+ <capability id="cet_ibt"/>
+ <capability id="ibrs_ibpb"/>
+ <capability id="stibp"/>
+ <capability id="l1d_flush"/>
+ <capability id="ia32_arch_capabilities"/>
+ <capability id="ia32_core_capabilities"/>
+ <capability id="ssbd"/>
+ <capability id="lahf_sahf_64"/>
+ <capability id="lzcnt"/>
+ <capability id="prefetchw"/>
+ <capability id="syscall_sysret_64"/>
+ <capability id="execute_disable"/>
+ <capability id="gbyte_pages"/>
+ <capability id="rdtscp_ia32_tsc_aux"/>
+ <capability id="intel_64"/>
+ <capability id="invariant_tsc"/>
+ <attribute id="physical_address_bits">46</attribute>
+ <attribute id="linear_address_bits">48</attribute>
+ </model>
+ <model description="12th Gen Intel(R) Core(TM) i9-12900E">
+ <family_id>0x6</family_id>
+ <model_id>0x97</model_id>
+ <core_type>Atom</core_type>
+ <native_model_id>0x1</native_model_id>
+ <capability id="sse3"/>
+ <capability id="pclmulqdq"/>
+ <capability id="dtes64"/>
+ <capability id="monitor"/>
+ <capability id="ds_cpl"/>
+ <capability id="vmx"/>
+ <capability id="smx"/>
+ <capability id="est"/>
+ <capability id="tm2"/>
+ <capability id="ssse3"/>
+ <capability id="sdbg"/>
+ <capability id="fma"/>
+ <capability id="cmpxchg16b"/>
+ <capability id="xtpr"/>
+ <capability id="pdcm"/>
+ <capability id="pcid"/>
+ <capability id="sse4_1"/>
+ <capability id="sse4_2"/>
+ <capability id="x2apic"/>
+ <capability id="movbe"/>
+ <capability id="popcnt"/>
+ <capability id="tsc_deadline"/>
+ <capability id="aes"/>
+ <capability id="xsave"/>
+ <capability id="avx"/>
+ <capability id="f16c"/>
+ <capability id="rdrand"/>
+ <capability id="fpu"/>
+ <capability id="vme"/>
+ <capability id="de"/>
+ <capability id="pse"/>
+ <capability id="tsc"/>
+ <capability id="msr"/>
+ <capability id="pae"/>
+ <capability id="mce"/>
+ <capability id="cx8"/>
+ <capability id="apic"/>
+ <capability id="sep"/>
+ <capability id="mtrr"/>
+ <capability id="pge"/>
+ <capability id="mca"/>
+ <capability id="cmov"/>
+ <capability id="pat"/>
+ <capability id="pse36"/>
+ <capability id="clfsh"/>
+ <capability id="ds"/>
+ <capability id="acpi"/>
+ <capability id="mmx"/>
+ <capability id="fxsr"/>
+ <capability id="sse"/>
+ <capability id="sse2"/>
+ <capability id="ss"/>
+ <capability id="htt"/>
+ <capability id="tm"/>
+ <capability id="pbe"/>
+ <capability id="fsgsbase"/>
+ <capability id="ia32_tsc_adjust_msr"/>
+ <capability id="bmi1"/>
+ <capability id="avx2"/>
+ <capability id="fdp_excptn_only"/>
+ <capability id="smep"/>
+ <capability id="bmi2"/>
+ <capability id="erms"/>
+ <capability id="invpcid"/>
+ <capability id="deprecate_fpu"/>
+ <capability id="rdt_a"/>
+ <capability id="rdseed"/>
+ <capability id="adx"/>
+ <capability id="smap"/>
+ <capability id="clflushopt"/>
+ <capability id="clwb"/>
+ <capability id="intel_pt"/>
+ <capability id="sha"/>
+ <capability id="umip"/>
+ <capability id="pku"/>
+ <capability id="waitpkg"/>
+ <capability id="cet_ss"/>
+ <capability id="gfni"/>
+ <capability id="vaes"/>
+ <capability id="vpclmulqdq"/>
+ <capability id="tme_en"/>
+ <capability id="rdpid"/>
+ <capability id="kl"/>
+ <capability id="movdiri"/>
+ <capability id="movdiri64b"/>
+ <capability id="pks"/>
+ <capability id="fast_short_rep_mov"/>
+ <capability id="md_clear"/>
+ <capability id="hybrid"/>
+ <capability id="pconfig"/>
+ <capability id="cet_ibt"/>
+ <capability id="ibrs_ibpb"/>
+ <capability id="stibp"/>
+ <capability id="l1d_flush"/>
+ <capability id="ia32_arch_capabilities"/>
+ <capability id="ia32_core_capabilities"/>
+ <capability id="ssbd"/>
+ <capability id="lahf_sahf_64"/>
+ <capability id="lzcnt"/>
+ <capability id="prefetchw"/>
+ <capability id="syscall_sysret_64"/>
+ <capability id="execute_disable"/>
+ <capability id="gbyte_pages"/>
+ <capability id="rdtscp_ia32_tsc_aux"/>
+ <capability id="intel_64"/>
+ <capability id="invariant_tsc"/>
+ <attribute id="physical_address_bits">46</attribute>
+ <attribute id="linear_address_bits">48</attribute>
+ </model>
+ <die id="0">
+ <core id="0x0">
+ <thread id="0x0">
+ <cpu_id>0</cpu_id>
+ <apic_id>0x0</apic_id>
+ <x2apic_id>0x0</x2apic_id>
+ <family_id>0x6</family_id>
+ <model_id>0x97</model_id>
+ <stepping_id>0x2</stepping_id>
+ <core_type>Core</core_type>
+ <native_model_id>0x1</native_model_id>
+ </thread>
+ </core>
+ <core id="0x4">
+ <thread id="0x8">
+ <cpu_id>1</cpu_id>
+ <apic_id>0x8</apic_id>
+ <x2apic_id>0x8</x2apic_id>
+ <family_id>0x6</family_id>
+ <model_id>0x97</model_id>
+ <stepping_id>0x2</stepping_id>
+ <core_type>Core</core_type>
+ <native_model_id>0x1</native_model_id>
+ </thread>
+ </core>
+ <core id="0x8">
+ <thread id="0x10">
+ <cpu_id>2</cpu_id>
+ <apic_id>0x10</apic_id>
+ <x2apic_id>0x10</x2apic_id>
+ <family_id>0x6</family_id>
+ <model_id>0x97</model_id>
+ <stepping_id>0x2</stepping_id>
+ <core_type>Core</core_type>
+ <native_model_id>0x1</native_model_id>
+ </thread>
+ </core>
+ <core id="0xc">
+ <thread id="0x18">
+ <cpu_id>3</cpu_id>
+ <apic_id>0x18</apic_id>
+ <x2apic_id>0x18</x2apic_id>
+ <family_id>0x6</family_id>
+ <model_id>0x97</model_id>
+ <stepping_id>0x2</stepping_id>
+ <core_type>Core</core_type>
+ <native_model_id>0x1</native_model_id>
+ </thread>
+ </core>
+ <core id="0x10">
+ <thread id="0x20">
+ <cpu_id>4</cpu_id>
+ <apic_id>0x20</apic_id>
+ <x2apic_id>0x20</x2apic_id>
+ <family_id>0x6</family_id>
+ <model_id>0x97</model_id>
+ <stepping_id>0x2</stepping_id>
+ <core_type>Core</core_type>
+ <native_model_id>0x1</native_model_id>
+ </thread>
+ </core>
+ <core id="0x14">
+ <thread id="0x28">
+ <cpu_id>5</cpu_id>
+ <apic_id>0x28</apic_id>
+ <x2apic_id>0x28</x2apic_id>
+ <family_id>0x6</family_id>
+ <model_id>0x97</model_id>
+ <stepping_id>0x2</stepping_id>
+ <core_type>Core</core_type>
+ <native_model_id>0x1</native_model_id>
+ </thread>
+ </core>
+ <core id="0x18">
+ <thread id="0x30">
+ <cpu_id>6</cpu_id>
+ <apic_id>0x30</apic_id>
+ <x2apic_id>0x30</x2apic_id>
+ <family_id>0x6</family_id>
+ <model_id>0x97</model_id>
+ <stepping_id>0x2</stepping_id>
+ <core_type>Core</core_type>
+ <native_model_id>0x1</native_model_id>
+ </thread>
+ </core>
+ <core id="0x1c">
+ <thread id="0x38">
+ <cpu_id>7</cpu_id>
+ <apic_id>0x38</apic_id>
+ <x2apic_id>0x38</x2apic_id>
+ <family_id>0x6</family_id>
+ <model_id>0x97</model_id>
+ <stepping_id>0x2</stepping_id>
+ <core_type>Core</core_type>
+ <native_model_id>0x1</native_model_id>
+ </thread>
+ </core>
+ <core id="0x20">
+ <thread id="0x40">
+ <cpu_id>8</cpu_id>
+ <apic_id>0x40</apic_id>
+ <x2apic_id>0x40</x2apic_id>
+ <family_id>0x6</family_id>
+ <model_id>0x97</model_id>
+ <stepping_id>0x2</stepping_id>
+ <core_type>Atom</core_type>
+ <native_model_id>0x1</native_model_id>
+ </thread>
+ </core>
+ <core id="0x21">
+ <thread id="0x42">
+ <cpu_id>9</cpu_id>
+ <apic_id>0x42</apic_id>
+ <x2apic_id>0x42</x2apic_id>
+ <family_id>0x6</family_id>
+ <model_id>0x97</model_id>
+ <stepping_id>0x2</stepping_id>
+ <core_type>Atom</core_type>
+ <native_model_id>0x1</native_model_id>
+ </thread>
+ </core>
+ <core id="0x22">
+ <thread id="0x44">
+ <cpu_id>10</cpu_id>
+ <apic_id>0x44</apic_id>
+ <x2apic_id>0x44</x2apic_id>
+ <family_id>0x6</family_id>
+ <model_id>0x97</model_id>
+ <stepping_id>0x2</stepping_id>
+ <core_type>Atom</core_type>
+ <native_model_id>0x1</native_model_id>
+ </thread>
+ </core>
+ <core id="0x23">
+ <thread id="0x46">
+ <cpu_id>11</cpu_id>
+ <apic_id>0x46</apic_id>
+ <x2apic_id>0x46</x2apic_id>
+ <family_id>0x6</family_id>
+ <model_id>0x97</model_id>
+ <stepping_id>0x2</stepping_id>
+ <core_type>Atom</core_type>
+ <native_model_id>0x1</native_model_id>
+ </thread>
+ </core>
+ <core id="0x24">
+ <thread id="0x48">
+ <cpu_id>12</cpu_id>
+ <apic_id>0x48</apic_id>
+ <x2apic_id>0x48</x2apic_id>
+ <family_id>0x6</family_id>
+ <model_id>0x97</model_id>
+ <stepping_id>0x2</stepping_id>
+ <core_type>Atom</core_type>
+ <native_model_id>0x1</native_model_id>
+ </thread>
+ </core>
+ <core id="0x25">
+ <thread id="0x4a">
+ <cpu_id>13</cpu_id>
+ <apic_id>0x4a</apic_id>
+ <x2apic_id>0x4a</x2apic_id>
+ <family_id>0x6</family_id>
+ <model_id>0x97</model_id>
+ <stepping_id>0x2</stepping_id>
+ <core_type>Atom</core_type>
+ <native_model_id>0x1</native_model_id>
+ </thread>
+ </core>
+ <core id="0x26">
+ <thread id="0x4c">
+ <cpu_id>14</cpu_id>
+ <apic_id>0x4c</apic_id>
+ <x2apic_id>0x4c</x2apic_id>
+ <family_id>0x6</family_id>
+ <model_id>0x97</model_id>
+ <stepping_id>0x2</stepping_id>
+ <core_type>Atom</core_type>
+ <native_model_id>0x1</native_model_id>
+ </thread>
+ </core>
+ <core id="0x27">
+ <thread id="0x4e">
+ <cpu_id>15</cpu_id>
+ <apic_id>0x4e</apic_id>
+ <x2apic_id>0x4e</x2apic_id>
+ <family_id>0x6</family_id>
+ <model_id>0x97</model_id>
+ <stepping_id>0x2</stepping_id>
+ <core_type>Atom</core_type>
+ <native_model_id>0x1</native_model_id>
+ </thread>
+ </core>
+ </die>
+ </processors>
+ <caches>
+ <cache level="1" id="0x0" type="1">
+ <cache_size>49152</cache_size>
+ <line_size>64</line_size>
+ <ways>12</ways>
+ <sets>64</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>0</complex_cache_indexing>
+ <processors>
+ <processor>0x0</processor>
+ </processors>
+ </cache>
+ <cache level="1" id="0x0" type="2">
+ <cache_size>32768</cache_size>
+ <line_size>64</line_size>
+ <ways>8</ways>
+ <sets>64</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>0</complex_cache_indexing>
+ <processors>
+ <processor>0x0</processor>
+ </processors>
+ </cache>
+ <cache level="1" id="0x4" type="1">
+ <cache_size>49152</cache_size>
+ <line_size>64</line_size>
+ <ways>12</ways>
+ <sets>64</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>0</complex_cache_indexing>
+ <processors>
+ <processor>0x8</processor>
+ </processors>
+ </cache>
+ <cache level="1" id="0x4" type="2">
+ <cache_size>32768</cache_size>
+ <line_size>64</line_size>
+ <ways>8</ways>
+ <sets>64</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>0</complex_cache_indexing>
+ <processors>
+ <processor>0x8</processor>
+ </processors>
+ </cache>
+ <cache level="1" id="0x8" type="1">
+ <cache_size>49152</cache_size>
+ <line_size>64</line_size>
+ <ways>12</ways>
+ <sets>64</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>0</complex_cache_indexing>
+ <processors>
+ <processor>0x10</processor>
+ </processors>
+ </cache>
+ <cache level="1" id="0x8" type="2">
+ <cache_size>32768</cache_size>
+ <line_size>64</line_size>
+ <ways>8</ways>
+ <sets>64</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>0</complex_cache_indexing>
+ <processors>
+ <processor>0x10</processor>
+ </processors>
+ </cache>
+ <cache level="1" id="0xc" type="1">
+ <cache_size>49152</cache_size>
+ <line_size>64</line_size>
+ <ways>12</ways>
+ <sets>64</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>0</complex_cache_indexing>
+ <processors>
+ <processor>0x18</processor>
+ </processors>
+ </cache>
+ <cache level="1" id="0xc" type="2">
+ <cache_size>32768</cache_size>
+ <line_size>64</line_size>
+ <ways>8</ways>
+ <sets>64</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>0</complex_cache_indexing>
+ <processors>
+ <processor>0x18</processor>
+ </processors>
+ </cache>
+ <cache level="1" id="0x10" type="1">
+ <cache_size>49152</cache_size>
+ <line_size>64</line_size>
+ <ways>12</ways>
+ <sets>64</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>0</complex_cache_indexing>
+ <processors>
+ <processor>0x20</processor>
+ </processors>
+ </cache>
+ <cache level="1" id="0x10" type="2">
+ <cache_size>32768</cache_size>
+ <line_size>64</line_size>
+ <ways>8</ways>
+ <sets>64</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>0</complex_cache_indexing>
+ <processors>
+ <processor>0x20</processor>
+ </processors>
+ </cache>
+ <cache level="1" id="0x14" type="1">
+ <cache_size>49152</cache_size>
+ <line_size>64</line_size>
+ <ways>12</ways>
+ <sets>64</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>0</complex_cache_indexing>
+ <processors>
+ <processor>0x28</processor>
+ </processors>
+ </cache>
+ <cache level="1" id="0x14" type="2">
+ <cache_size>32768</cache_size>
+ <line_size>64</line_size>
+ <ways>8</ways>
+ <sets>64</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>0</complex_cache_indexing>
+ <processors>
+ <processor>0x28</processor>
+ </processors>
+ </cache>
+ <cache level="1" id="0x18" type="1">
+ <cache_size>49152</cache_size>
+ <line_size>64</line_size>
+ <ways>12</ways>
+ <sets>64</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>0</complex_cache_indexing>
+ <processors>
+ <processor>0x30</processor>
+ </processors>
+ </cache>
+ <cache level="1" id="0x18" type="2">
+ <cache_size>32768</cache_size>
+ <line_size>64</line_size>
+ <ways>8</ways>
+ <sets>64</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>0</complex_cache_indexing>
+ <processors>
+ <processor>0x30</processor>
+ </processors>
+ </cache>
+ <cache level="1" id="0x1c" type="1">
+ <cache_size>49152</cache_size>
+ <line_size>64</line_size>
+ <ways>12</ways>
+ <sets>64</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>0</complex_cache_indexing>
+ <processors>
+ <processor>0x38</processor>
+ </processors>
+ </cache>
+ <cache level="1" id="0x1c" type="2">
+ <cache_size>32768</cache_size>
+ <line_size>64</line_size>
+ <ways>8</ways>
+ <sets>64</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>0</complex_cache_indexing>
+ <processors>
+ <processor>0x38</processor>
+ </processors>
+ </cache>
+ <cache level="1" id="0x20" type="1">
+ <cache_size>32768</cache_size>
+ <line_size>64</line_size>
+ <ways>8</ways>
+ <sets>64</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>0</complex_cache_indexing>
+ <processors>
+ <processor>0x40</processor>
+ </processors>
+ </cache>
+ <cache level="1" id="0x20" type="2">
+ <cache_size>65536</cache_size>
+ <line_size>64</line_size>
+ <ways>8</ways>
+ <sets>128</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>0</complex_cache_indexing>
+ <processors>
+ <processor>0x40</processor>
+ </processors>
+ </cache>
+ <cache level="1" id="0x21" type="1">
+ <cache_size>32768</cache_size>
+ <line_size>64</line_size>
+ <ways>8</ways>
+ <sets>64</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>0</complex_cache_indexing>
+ <processors>
+ <processor>0x42</processor>
+ </processors>
+ </cache>
+ <cache level="1" id="0x21" type="2">
+ <cache_size>65536</cache_size>
+ <line_size>64</line_size>
+ <ways>8</ways>
+ <sets>128</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>0</complex_cache_indexing>
+ <processors>
+ <processor>0x42</processor>
+ </processors>
+ </cache>
+ <cache level="2" id="0x0" type="3">
+ <cache_size>1310720</cache_size>
+ <line_size>64</line_size>
+ <ways>10</ways>
+ <sets>2048</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>0</complex_cache_indexing>
+ <processors>
+ <processor>0x0</processor>
+ </processors>
+ <capability id="CAT">
+ <capacity_mask_length>10</capacity_mask_length>
+ <clos_number>8</clos_number>
+ </capability>
+ <capability id="CDP"/>
+ </cache>
+ <cache level="2" id="0x1" type="3">
+ <cache_size>1310720</cache_size>
+ <line_size>64</line_size>
+ <ways>10</ways>
+ <sets>2048</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>0</complex_cache_indexing>
+ <processors>
+ <processor>0x8</processor>
+ </processors>
+ <capability id="CAT">
+ <capacity_mask_length>10</capacity_mask_length>
+ <clos_number>8</clos_number>
+ </capability>
+ <capability id="CDP"/>
+ </cache>
+ <cache level="2" id="0x2" type="3">
+ <cache_size>1310720</cache_size>
+ <line_size>64</line_size>
+ <ways>10</ways>
+ <sets>2048</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>0</complex_cache_indexing>
+ <processors>
+ <processor>0x10</processor>
+ </processors>
+ <capability id="CAT">
+ <capacity_mask_length>10</capacity_mask_length>
+ <clos_number>8</clos_number>
+ </capability>
+ <capability id="CDP"/>
+ </cache>
+ <cache level="2" id="0x3" type="3">
+ <cache_size>1310720</cache_size>
+ <line_size>64</line_size>
+ <ways>10</ways>
+ <sets>2048</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>0</complex_cache_indexing>
+ <processors>
+ <processor>0x18</processor>
+ </processors>
+ <capability id="CAT">
+ <capacity_mask_length>10</capacity_mask_length>
+ <clos_number>8</clos_number>
+ </capability>
+ <capability id="CDP"/>
+ </cache>
+ <cache level="2" id="0x4" type="3">
+ <cache_size>1310720</cache_size>
+ <line_size>64</line_size>
+ <ways>10</ways>
+ <sets>2048</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>0</complex_cache_indexing>
+ <processors>
+ <processor>0x20</processor>
+ </processors>
+ <capability id="CAT">
+ <capacity_mask_length>10</capacity_mask_length>
+ <clos_number>8</clos_number>
+ </capability>
+ <capability id="CDP"/>
+ </cache>
+ <cache level="2" id="0x5" type="3">
+ <cache_size>1310720</cache_size>
+ <line_size>64</line_size>
+ <ways>10</ways>
+ <sets>2048</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>0</complex_cache_indexing>
+ <processors>
+ <processor>0x28</processor>
+ </processors>
+ <capability id="CAT">
+ <capacity_mask_length>10</capacity_mask_length>
+ <clos_number>8</clos_number>
+ </capability>
+ <capability id="CDP"/>
+ </cache>
+ <cache level="2" id="0x6" type="3">
+ <cache_size>1310720</cache_size>
+ <line_size>64</line_size>
+ <ways>10</ways>
+ <sets>2048</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>0</complex_cache_indexing>
+ <processors>
+ <processor>0x30</processor>
+ </processors>
+ <capability id="CAT">
+ <capacity_mask_length>10</capacity_mask_length>
+ <clos_number>8</clos_number>
+ </capability>
+ <capability id="CDP"/>
+ </cache>
+ <cache level="2" id="0x7" type="3">
+ <cache_size>1310720</cache_size>
+ <line_size>64</line_size>
+ <ways>10</ways>
+ <sets>2048</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>0</complex_cache_indexing>
+ <processors>
+ <processor>0x38</processor>
+ </processors>
+ <capability id="CAT">
+ <capacity_mask_length>10</capacity_mask_length>
+ <clos_number>8</clos_number>
+ </capability>
+ <capability id="CDP"/>
+ </cache>
+ <cache level="2" id="0x8" type="3">
+ <cache_size>2097152</cache_size>
+ <line_size>64</line_size>
+ <ways>16</ways>
+ <sets>2048</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>0</complex_cache_indexing>
+ <processors>
+ <processor>0x40</processor>
+ <processor>0x42</processor>
+ </processors>
+ <capability id="CAT">
+ <capacity_mask_length>16</capacity_mask_length>
+ <clos_number>16</clos_number>
+ </capability>
+ <capability id="CDP"/>
+ </cache>
+ <cache level="3" id="0x0" type="3">
+ <cache_size>31457280</cache_size>
+ <line_size>64</line_size>
+ <ways>12</ways>
+ <sets>40960</sets>
+ <partitions>1</partitions>
+ <self_initializing>1</self_initializing>
+ <fully_associative>0</fully_associative>
+ <write_back_invalidate>0</write_back_invalidate>
+ <cache_inclusiveness>0</cache_inclusiveness>
+ <complex_cache_indexing>1</complex_cache_indexing>
+ <processors>
+ <processor>0x0</processor>
+ <processor>0x8</processor>
+ <processor>0x10</processor>
+ <processor>0x18</processor>
+ <processor>0x20</processor>
+ <processor>0x28</processor>
+ <processor>0x30</processor>
+ <processor>0x38</processor>
+ <processor>0x40</processor>
+ <processor>0x42</processor>
+ </processors>
+ </cache>
+ </caches>
+ <memory>
+ <range start="0x0000000000000000" end="0x000000000009efff" size="651264"/>
+ <range start="0x0000000000100000" end="0x000000003cb15fff" size="1017208832"/>
+ <range start="0x000000004007f000" end="0x000000004007ffff" size="4096"/>
+ <range start="0x0000000040081000" end="0x0000000043bfffff" size="62386176"/>
+ <range start="0x0000000100000000" end="0x00000008afbfffff" size="33013366784"/>
+ </memory>
+ <ioapics>
+ <ioapic id="0x2">
+ <address>0xfec00000</address>
+ <gsi_base>0x0</gsi_base>
+ <gsi_number>120</gsi_number>
+ </ioapic>
+ </ioapics>
+ <devices>
+ <device id="INT3420" description="Power Sharing Manager">
+ <acpi_object>\PSM_</acpi_object>
+ <acpi_uid>0</acpi_uid>
+ <acpi_uid>0</acpi_uid>
+ <aml_template>5b8242055c50534d5f085f53544100085f4849440c25d43420085f55494400085f535452112f0a2c50006f007700650072002000530068006100720069006e00670020004d0061006e0061006700650072000000</aml_template>
+ <aml_template>5b8242055c50534d5f085f53544100085f4849440c25d43420085f55494400085f535452112f0a2c50006f007700650072002000530068006100720069006e00670020004d0061006e0061006700650072000000</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ </device>
+ <bus type="system">
+ <acpi_object>\_SB_</acpi_object>
+ <bus id="PNP0A08" type="pci" address="0x0" description="Host bridge: Intel Corporation">
+ <vendor>0x8086</vendor>
+ <identifier>0x4660</identifier>
+ <subsystem_vendor>0x8086</subsystem_vendor>
+ <subsystem_identifier>0x7270</subsystem_identifier>
+ <class>0x060000</class>
+ <acpi_object>\_SB_.PC00</acpi_object>
+ <compatible_id>PNP0A03</compatible_id>
+ <compatible_id>PNP0A03</compatible_id>
+ <acpi_uid>0</acpi_uid>
+ <acpi_uid>0</acpi_uid>
+ <resource id="res0" type="bus_number" min="0x0" max="0xfe" len="0xff"/>
+ <resource id="res0" type="bus_number" min="0x0" max="0xfe" len="0xff"/>
+ <resource id="res1" type="io_port" min="0x0" max="0xcf7" len="0xcf8"/>
+ <resource id="res1" type="io_port" min="0x0" max="0xcf7" len="0xcf8"/>
+ <resource id="res2" type="io_port" min="0xcf8" max="0xcf8" len="0x8"/>
+ <resource id="res2" type="io_port" min="0xcf8" max="0xcf8" len="0x8"/>
+ <resource id="res3" type="io_port" min="0xd00" max="0xffff" len="0xf300"/>
+ <resource id="res3" type="io_port" min="0xd00" max="0xffff" len="0xf300"/>
+ <resource id="res4" type="memory" min="0xa0000" max="0xbffff" len="0x20000"/>
+ <resource id="res4" type="memory" min="0xa0000" max="0xbffff" len="0x20000"/>
+ <resource id="res5" type="memory" min="0xc0000" max="0xbffff" len="0x0"/>
+ <resource id="res5" type="memory" min="0xc0000" max="0xbffff" len="0x0"/>
+ <resource id="res6" type="memory" min="0xc4000" max="0xc3fff" len="0x0"/>
+ <resource id="res6" type="memory" min="0xc4000" max="0xc3fff" len="0x0"/>
+ <resource id="res7" type="memory" min="0xc8000" max="0xc7fff" len="0x0"/>
+ <resource id="res7" type="memory" min="0xc8000" max="0xc7fff" len="0x0"/>
+ <resource id="res8" type="memory" min="0xcc000" max="0xcbfff" len="0x0"/>
+ <resource id="res8" type="memory" min="0xcc000" max="0xcbfff" len="0x0"/>
+ <resource id="res9" type="memory" min="0xd0000" max="0xcffff" len="0x0"/>
+ <resource id="res9" type="memory" min="0xd0000" max="0xcffff" len="0x0"/>
+ <resource id="res10" type="memory" min="0xd4000" max="0xd3fff" len="0x0"/>
+ <resource id="res10" type="memory" min="0xd4000" max="0xd3fff" len="0x0"/>
+ <resource id="res11" type="memory" min="0xd8000" max="0xd7fff" len="0x0"/>
+ <resource id="res11" type="memory" min="0xd8000" max="0xd7fff" len="0x0"/>
+ <resource id="res12" type="memory" min="0xdc000" max="0xdbfff" len="0x0"/>
+ <resource id="res12" type="memory" min="0xdc000" max="0xdbfff" len="0x0"/>
+ <resource id="res13" type="memory" min="0xe0000" max="0xdffff" len="0x0"/>
+ <resource id="res13" type="memory" min="0xe0000" max="0xdffff" len="0x0"/>
+ <resource id="res14" type="memory" min="0xe4000" max="0xe3fff" len="0x0"/>
+ <resource id="res14" type="memory" min="0xe4000" max="0xe3fff" len="0x0"/>
+ <resource id="res15" type="memory" min="0xe8000" max="0xe7fff" len="0x0"/>
+ <resource id="res15" type="memory" min="0xe8000" max="0xe7fff" len="0x0"/>
+ <resource id="res16" type="memory" min="0xec000" max="0xebfff" len="0x0"/>
+ <resource id="res16" type="memory" min="0xec000" max="0xebfff" len="0x0"/>
+ <resource id="res17" type="memory" min="0xf0000" max="0xeffff" len="0x0"/>
+ <resource id="res17" type="memory" min="0xf0000" max="0xeffff" len="0x0"/>
+ <resource id="res18" type="memory" min="0x50400000" max="0xbfffffff" len="0x6fc00000"/>
+ <resource id="res18" type="memory" min="0x50400000" max="0xbfffffff" len="0x6fc00000"/>
+ <resource id="res19" type="memory" min="0x4000000000" max="0x7fffffffff" len="0x4000000000"/>
+ <resource id="res19" type="memory" min="0x4000000000" max="0x7fffffffff" len="0x4000000000"/>
+ <interrupt_pin_routing>
+ <routing address="0x1fffff">
+ <mapping pin="INTA#" source="16"/>
+ <mapping pin="INTB#" source="17"/>
+ <mapping pin="INTC#" source="18"/>
+ <mapping pin="INTD#" source="19"/>
+ </routing>
+ <routing address="0x1effff">
+ <mapping pin="INTA#" source="16"/>
+ <mapping pin="INTB#" source="17"/>
+ <mapping pin="INTC#" source="36"/>
+ <mapping pin="INTD#" source="37"/>
+ </routing>
+ <routing address="0x1dffff">
+ <mapping pin="INTA#" source="16"/>
+ <mapping pin="INTB#" source="17"/>
+ <mapping pin="INTC#" source="18"/>
+ <mapping pin="INTD#" source="19"/>
+ </routing>
+ <routing address="0x1cffff">
+ <mapping pin="INTA#" source="16"/>
+ <mapping pin="INTB#" source="17"/>
+ <mapping pin="INTC#" source="18"/>
+ <mapping pin="INTD#" source="19"/>
+ </routing>
+ <routing address="0x1bffff">
+ <mapping pin="INTA#" source="16"/>
+ <mapping pin="INTB#" source="17"/>
+ <mapping pin="INTC#" source="18"/>
+ <mapping pin="INTD#" source="19"/>
+ </routing>
+ <routing address="0x1affff">
+ <mapping pin="INTA#" source="16"/>
+ <mapping pin="INTB#" source="17"/>
+ <mapping pin="INTC#" source="18"/>
+ <mapping pin="INTD#" source="19"/>
+ </routing>
+ <routing address="0x19ffff">
+ <mapping pin="INTA#" source="31"/>
+ <mapping pin="INTB#" source="32"/>
+ <mapping pin="INTC#" source="42"/>
+ </routing>
+ <routing address="0x17ffff">
+ <mapping pin="INTA#" source="16"/>
+ </routing>
+ <routing address="0x16ffff">
+ <mapping pin="INTA#" source="16"/>
+ <mapping pin="INTB#" source="17"/>
+ <mapping pin="INTC#" source="18"/>
+ <mapping pin="INTD#" source="19"/>
+ </routing>
+ <routing address="0x15ffff">
+ <mapping pin="INTA#" source="27"/>
+ <mapping pin="INTB#" source="40"/>
+ <mapping pin="INTC#" source="29"/>
+ <mapping pin="INTD#" source="43"/>
+ </routing>
+ <routing address="0x14ffff">
+ <mapping pin="INTA#" source="16"/>
+ <mapping pin="INTB#" source="17"/>
+ <mapping pin="INTC#" source="18"/>
+ </routing>
+ <routing address="0x13ffff">
+ <mapping pin="INTA#" source="20"/>
+ <mapping pin="INTB#" source="21"/>
+ <mapping pin="INTC#" source="24"/>
+ <mapping pin="INTD#" source="38"/>
+ </routing>
+ <routing address="0x12ffff">
+ <mapping pin="INTA#" source="26"/>
+ <mapping pin="INTB#" source="39"/>
+ <mapping pin="INTC#" source="18"/>
+ </routing>
+ <routing address="0x11ffff">
+ <mapping pin="INTA#" source="25"/>
+ <mapping pin="INTB#" source="36"/>
+ <mapping pin="INTC#" source="28"/>
+ <mapping pin="INTD#" source="34"/>
+ </routing>
+ <routing address="0x10ffff">
+ <mapping pin="INTC#" source="18"/>
+ <mapping pin="INTD#" source="19"/>
+ <mapping pin="INTA#" source="23"/>
+ <mapping pin="INTB#" source="22"/>
+ </routing>
+ <routing address="0x6ffff">
+ <mapping pin="INTA#" source="16"/>
+ <mapping pin="INTB#" source="17"/>
+ <mapping pin="INTC#" source="18"/>
+ <mapping pin="INTD#" source="19"/>
+ </routing>
+ <routing address="0x1ffff">
+ <mapping pin="INTA#" source="16"/>
+ <mapping pin="INTB#" source="17"/>
+ <mapping pin="INTC#" source="18"/>
+ <mapping pin="INTD#" source="19"/>
+ </routing>
+ <routing address="0x2ffff">
+ <mapping pin="INTA#" source="16"/>
+ </routing>
+ <routing address="0x4ffff">
+ <mapping pin="INTA#" source="16"/>
+ </routing>
+ <routing address="0x5ffff">
+ <mapping pin="INTA#" source="16"/>
+ </routing>
+ <routing address="0x8ffff">
+ <mapping pin="INTA#" source="16"/>
+ </routing>
+ <routing address="0xdffff">
+ <mapping pin="INTA#" source="16"/>
+ <mapping pin="INTB#" source="17"/>
+ </routing>
+ <routing address="0x7ffff">
+ <mapping pin="INTA#" source="16"/>
+ <mapping pin="INTB#" source="17"/>
+ <mapping pin="INTC#" source="18"/>
+ <mapping pin="INTD#" source="19"/>
+ </routing>
+ </interrupt_pin_routing>
+ <interrupt_pin_routing>
+ <routing address="0x1fffff">
+ <mapping pin="INTA#" source="16"/>
+ <mapping pin="INTB#" source="17"/>
+ <mapping pin="INTC#" source="18"/>
+ <mapping pin="INTD#" source="19"/>
+ </routing>
+ <routing address="0x1effff">
+ <mapping pin="INTA#" source="16"/>
+ <mapping pin="INTB#" source="17"/>
+ <mapping pin="INTC#" source="36"/>
+ <mapping pin="INTD#" source="37"/>
+ </routing>
+ <routing address="0x1dffff">
+ <mapping pin="INTA#" source="16"/>
+ <mapping pin="INTB#" source="17"/>
+ <mapping pin="INTC#" source="18"/>
+ <mapping pin="INTD#" source="19"/>
+ </routing>
+ <routing address="0x1cffff">
+ <mapping pin="INTA#" source="16"/>
+ <mapping pin="INTB#" source="17"/>
+ <mapping pin="INTC#" source="18"/>
+ <mapping pin="INTD#" source="19"/>
+ </routing>
+ <routing address="0x1bffff">
+ <mapping pin="INTA#" source="16"/>
+ <mapping pin="INTB#" source="17"/>
+ <mapping pin="INTC#" source="18"/>
+ <mapping pin="INTD#" source="19"/>
+ </routing>
+ <routing address="0x1affff">
+ <mapping pin="INTA#" source="16"/>
+ <mapping pin="INTB#" source="17"/>
+ <mapping pin="INTC#" source="18"/>
+ <mapping pin="INTD#" source="19"/>
+ </routing>
+ <routing address="0x19ffff">
+ <mapping pin="INTA#" source="31"/>
+ <mapping pin="INTB#" source="32"/>
+ <mapping pin="INTC#" source="42"/>
+ </routing>
+ <routing address="0x17ffff">
+ <mapping pin="INTA#" source="16"/>
+ </routing>
+ <routing address="0x16ffff">
+ <mapping pin="INTA#" source="16"/>
+ <mapping pin="INTB#" source="17"/>
+ <mapping pin="INTC#" source="18"/>
+ <mapping pin="INTD#" source="19"/>
+ </routing>
+ <routing address="0x15ffff">
+ <mapping pin="INTA#" source="27"/>
+ <mapping pin="INTB#" source="40"/>
+ <mapping pin="INTC#" source="29"/>
+ <mapping pin="INTD#" source="43"/>
+ </routing>
+ <routing address="0x14ffff">
+ <mapping pin="INTA#" source="16"/>
+ <mapping pin="INTB#" source="17"/>
+ <mapping pin="INTC#" source="18"/>
+ </routing>
+ <routing address="0x13ffff">
+ <mapping pin="INTA#" source="20"/>
+ <mapping pin="INTB#" source="21"/>
+ <mapping pin="INTC#" source="24"/>
+ <mapping pin="INTD#" source="38"/>
+ </routing>
+ <routing address="0x12ffff">
+ <mapping pin="INTA#" source="26"/>
+ <mapping pin="INTB#" source="39"/>
+ <mapping pin="INTC#" source="18"/>
+ </routing>
+ <routing address="0x11ffff">
+ <mapping pin="INTA#" source="25"/>
+ <mapping pin="INTB#" source="36"/>
+ <mapping pin="INTC#" source="28"/>
+ <mapping pin="INTD#" source="34"/>
+ </routing>
+ <routing address="0x10ffff">
+ <mapping pin="INTC#" source="18"/>
+ <mapping pin="INTD#" source="19"/>
+ <mapping pin="INTA#" source="23"/>
+ <mapping pin="INTB#" source="22"/>
+ </routing>
+ <routing address="0x6ffff">
+ <mapping pin="INTA#" source="16"/>
+ <mapping pin="INTB#" source="17"/>
+ <mapping pin="INTC#" source="18"/>
+ <mapping pin="INTD#" source="19"/>
+ </routing>
+ <routing address="0x1ffff">
+ <mapping pin="INTA#" source="16"/>
+ <mapping pin="INTB#" source="17"/>
+ <mapping pin="INTC#" source="18"/>
+ <mapping pin="INTD#" source="19"/>
+ </routing>
+ <routing address="0x2ffff">
+ <mapping pin="INTA#" source="16"/>
+ </routing>
+ <routing address="0x4ffff">
+ <mapping pin="INTA#" source="16"/>
+ </routing>
+ <routing address="0x5ffff">
+ <mapping pin="INTA#" source="16"/>
+ </routing>
+ <routing address="0x8ffff">
+ <mapping pin="INTA#" source="16"/>
+ </routing>
+ <routing address="0xdffff">
+ <mapping pin="INTA#" source="16"/>
+ <mapping pin="INTB#" source="17"/>
+ </routing>
+ <routing address="0x7ffff">
+ <mapping pin="INTA#" source="16"/>
+ <mapping pin="INTB#" source="17"/>
+ <mapping pin="INTC#" source="18"/>
+ <mapping pin="INTD#" source="19"/>
+ </routing>
+ </interrupt_pin_routing>
+ <device address="0x0">
+ <acpi_object>\_SB_.PC00.MC__</acpi_object>
+ <aml_template>5b82165c2f035f53425f504330304d435f5f085f41445200</aml_template>
+ <aml_template>5b82165c2f035f53425f504330304d435f5f085f41445200</aml_template>
+ </device>
+ <device address="0x10000">
+ <acpi_object>\_SB_.PC00.PEG1</acpi_object>
+ <aml_template>5b82215c2f035f53425f5043303050454731085f5354410a0f085f4144520c00000100</aml_template>
+ <aml_template>5b82215c2f035f53425f5043303050454731085f5354410a0f085f4144520c00000100</aml_template>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ <interrupt_pin_routing>
+ <routing address="0xffff">
+ <mapping pin="INTA#" source="16"/>
+ <mapping pin="INTB#" source="17"/>
+ <mapping pin="INTC#" source="18"/>
+ <mapping pin="INTD#" source="19"/>
+ </routing>
+ </interrupt_pin_routing>
+ <interrupt_pin_routing>
+ <routing address="0xffff">
+ <mapping pin="INTA#" source="16"/>
+ <mapping pin="INTB#" source="17"/>
+ <mapping pin="INTC#" source="18"/>
+ <mapping pin="INTD#" source="19"/>
+ </routing>
+ </interrupt_pin_routing>
+ <device address="0x0">
+ <acpi_object>\_SB_.PC00.PEG1.PEGP</acpi_object>
+ <aml_template>5b821a5c2f045f53425f504330305045473150454750085f41445200</aml_template>
+ <aml_template>5b821a5c2f045f53425f504330305045473150454750085f41445200</aml_template>
+ </device>
+ </device>
+ <device address="0x10001">
+ <acpi_object>\_SB_.PC00.PEG2</acpi_object>
+ <aml_template>5b82205c2f035f53425f5043303050454732085f53544100085f4144520c01000100</aml_template>
+ <aml_template>5b82205c2f035f53425f5043303050454732085f53544100085f4144520c01000100</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <interrupt_pin_routing>
+ <routing address="0xffff">
+ <mapping pin="INTA#" source="17"/>
+ <mapping pin="INTB#" source="18"/>
+ <mapping pin="INTC#" source="19"/>
+ <mapping pin="INTD#" source="16"/>
+ </routing>
+ </interrupt_pin_routing>
+ <interrupt_pin_routing>
+ <routing address="0xffff">
+ <mapping pin="INTA#" source="17"/>
+ <mapping pin="INTB#" source="18"/>
+ <mapping pin="INTC#" source="19"/>
+ <mapping pin="INTD#" source="16"/>
+ </routing>
+ </interrupt_pin_routing>
+ <device address="0x0">
+ <acpi_object>\_SB_.PC00.PEG2.PEGP</acpi_object>
+ <aml_template>5b821a5c2f045f53425f504330305045473250454750085f41445200</aml_template>
+ <aml_template>5b821a5c2f045f53425f504330305045473250454750085f41445200</aml_template>
+ </device>
+ </device>
+ <device address="0x20000" id="0x4680" description="VGA compatible controller: Intel Corporation AlderLake-S GT1">
+ <vendor>0x8086</vendor>
+ <identifier>0x4680</identifier>
+ <subsystem_vendor>0x8086</subsystem_vendor>
+ <subsystem_identifier>0x2212</subsystem_identifier>
+ <class>0x030000</class>
+ <acpi_object>\_SB_.PC00.GFX0</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303047465830085f4144520c00000200</aml_template>
+ <aml_template>5b821a5c2f035f53425f5043303047465830085f4144520c00000200</aml_template>
+ <resource type="interrupt_pin" pin="INTA#" source="16"/>
+ <resource type="io_port" min="0x3000" max="0x303f" len="0x40" id="bar4"/>
+ <resource type="memory" min="0x4000000000" max="0x400fffffff" len="0x10000000" id="bar2" width="64" prefetchable="1"/>
+ <resource type="memory" min="0x60e7000000" max="0x60e7ffffff" len="0x1000000" id="bar0" width="64" prefetchable="0"/>
+ <capability id="Vendor-Specific"/>
+ <capability id="PCI Express"/>
+ <capability id="MSI">
+ <count>1</count>
+ <capability id="per-vector masking"/>
+ </capability>
+ <capability id="Power Management"/>
+ <capability id="PASID"/>
+ <capability id="ATS"/>
+ <capability id="PRI"/>
+ <capability id="SR-IOV"/>
+ <device address="0x1">
+ <acpi_object>\_SB_.PC00.GFX0.DD01</acpi_object>
+ <aml_template>5b821a5c2f045f53425f504330304746583044443031085f41445201</aml_template>
+ <aml_template>5b821a5c2f045f53425f504330304746583044443031085f41445201</aml_template>
+ </device>
+ <device address="0x2">
+ <acpi_object>\_SB_.PC00.GFX0.DD02</acpi_object>
+ <aml_template>5b821b5c2f045f53425f504330304746583044443032085f4144520a02</aml_template>
+ <aml_template>5b821b5c2f045f53425f504330304746583044443032085f4144520a02</aml_template>
+ </device>
+ <device address="0x3">
+ <acpi_object>\_SB_.PC00.GFX0.DD03</acpi_object>
+ <aml_template>5b821b5c2f045f53425f504330304746583044443033085f4144520a03</aml_template>
+ <aml_template>5b821b5c2f045f53425f504330304746583044443033085f4144520a03</aml_template>
+ </device>
+ <device address="0x4">
+ <acpi_object>\_SB_.PC00.GFX0.DD04</acpi_object>
+ <aml_template>5b821b5c2f045f53425f504330304746583044443034085f4144520a04</aml_template>
+ <aml_template>5b821b5c2f045f53425f504330304746583044443034085f4144520a04</aml_template>
+ </device>
+ <device address="0x5">
+ <acpi_object>\_SB_.PC00.GFX0.DD05</acpi_object>
+ <aml_template>5b821b5c2f045f53425f504330304746583044443035085f4144520a05</aml_template>
+ <aml_template>5b821b5c2f045f53425f504330304746583044443035085f4144520a05</aml_template>
+ </device>
+ <device address="0x6">
+ <acpi_object>\_SB_.PC00.GFX0.DD06</acpi_object>
+ <aml_template>5b821b5c2f045f53425f504330304746583044443036085f4144520a06</aml_template>
+ <aml_template>5b821b5c2f045f53425f504330304746583044443036085f4144520a06</aml_template>
+ </device>
+ <device address="0x7">
+ <acpi_object>\_SB_.PC00.GFX0.DD07</acpi_object>
+ <aml_template>5b821b5c2f045f53425f504330304746583044443037085f4144520a07</aml_template>
+ <aml_template>5b821b5c2f045f53425f504330304746583044443037085f4144520a07</aml_template>
+ </device>
+ <device address="0x8">
+ <acpi_object>\_SB_.PC00.GFX0.DD08</acpi_object>
+ <aml_template>5b821b5c2f045f53425f504330304746583044443038085f4144520a08</aml_template>
+ <aml_template>5b821b5c2f045f53425f504330304746583044443038085f4144520a08</aml_template>
+ </device>
+ <device address="0x9">
+ <acpi_object>\_SB_.PC00.GFX0.DD09</acpi_object>
+ <aml_template>5b821b5c2f045f53425f504330304746583044443039085f4144520a09</aml_template>
+ <aml_template>5b821b5c2f045f53425f504330304746583044443039085f4144520a09</aml_template>
+ </device>
+ <device address="0xa">
+ <acpi_object>\_SB_.PC00.GFX0.DD0A</acpi_object>
+ <aml_template>5b821b5c2f045f53425f504330304746583044443041085f4144520a0a</aml_template>
+ <aml_template>5b821b5c2f045f53425f504330304746583044443041085f4144520a0a</aml_template>
+ </device>
+ <device address="0xb">
+ <acpi_object>\_SB_.PC00.GFX0.DD0B</acpi_object>
+ <aml_template>5b821b5c2f045f53425f504330304746583044443042085f4144520a0b</aml_template>
+ <aml_template>5b821b5c2f045f53425f504330304746583044443042085f4144520a0b</aml_template>
+ </device>
+ <device address="0xc">
+ <acpi_object>\_SB_.PC00.GFX0.DD0C</acpi_object>
+ <aml_template>5b821b5c2f045f53425f504330304746583044443043085f4144520a0c</aml_template>
+ <aml_template>5b821b5c2f045f53425f504330304746583044443043085f4144520a0c</aml_template>
+ </device>
+ <device address="0xd">
+ <acpi_object>\_SB_.PC00.GFX0.DD0D</acpi_object>
+ <aml_template>5b821b5c2f045f53425f504330304746583044443044085f4144520a0d</aml_template>
+ <aml_template>5b821b5c2f045f53425f504330304746583044443044085f4144520a0d</aml_template>
+ </device>
+ <device address="0xe">
+ <acpi_object>\_SB_.PC00.GFX0.DD0E</acpi_object>
+ <aml_template>5b821b5c2f045f53425f504330304746583044443045085f4144520a0e</aml_template>
+ <aml_template>5b821b5c2f045f53425f504330304746583044443045085f4144520a0e</aml_template>
+ </device>
+ <device address="0xf">
+ <acpi_object>\_SB_.PC00.GFX0.DD0F</acpi_object>
+ <aml_template>5b821b5c2f045f53425f504330304746583044443046085f4144520a0f</aml_template>
+ <aml_template>5b821b5c2f045f53425f504330304746583044443046085f4144520a0f</aml_template>
+ </device>
+ <device address="0x1f">
+ <acpi_object>\_SB_.PC00.GFX0.DD1F</acpi_object>
+ <aml_template>5b821b5c2f045f53425f504330304746583044443146085f4144520a1f</aml_template>
+ <aml_template>5b821b5c2f045f53425f504330304746583044443146085f4144520a1f</aml_template>
+ </device>
+ <device>
+ <acpi_object>\_SB_.PC00.GFX0.DD2F</acpi_object>
+ <aml_template>5b821b5c2f045f53425f504330304746583044443246085f4144520a1f</aml_template>
+ <aml_template>5b821b5c2f045f53425f504330304746583044443246085f4144520a1f</aml_template>
+ </device>
+ </device>
+ <device address="0x40000">
+ <acpi_object>\_SB_.PC00.TCPU</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303054435055085f4144520c00000400</aml_template>
+ <aml_template>5b821a5c2f035f53425f5043303054435055085f4144520c00000400</aml_template>
+ </device>
+ <device address="0x50000">
+ <acpi_object>\_SB_.PC00.IPU0</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303049505530085f4144520c00000500</aml_template>
+ <aml_template>5b821a5c2f035f53425f5043303049505530085f4144520c00000500</aml_template>
+ </device>
+ <device address="0x60000">
+ <acpi_object>\_SB_.PC00.PEG0</acpi_object>
+ <aml_template>5b82215c2f035f53425f5043303050454730085f5354410a0f085f4144520c00000600</aml_template>
+ <aml_template>5b82215c2f035f53425f5043303050454730085f5354410a0f085f4144520c00000600</aml_template>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ <interrupt_pin_routing>
+ <routing address="0xffff">
+ <mapping pin="INTA#" source="16"/>
+ <mapping pin="INTB#" source="17"/>
+ <mapping pin="INTC#" source="18"/>
+ <mapping pin="INTD#" source="19"/>
+ </routing>
+ </interrupt_pin_routing>
+ <interrupt_pin_routing>
+ <routing address="0xffff">
+ <mapping pin="INTA#" source="16"/>
+ <mapping pin="INTB#" source="17"/>
+ <mapping pin="INTC#" source="18"/>
+ <mapping pin="INTD#" source="19"/>
+ </routing>
+ </interrupt_pin_routing>
+ <device address="0x0">
+ <acpi_object>\_SB_.PC00.PEG0.PEGP</acpi_object>
+ <aml_template>5b821a5c2f045f53425f504330305045473050454750085f41445200</aml_template>
+ <aml_template>5b821a5c2f045f53425f504330305045473050454750085f41445200</aml_template>
+ </device>
+ </device>
+ <device address="0x80000" id="0x464f" description="System peripheral: Intel Corporation 12th Gen Core Processor Gaussian &amp; Neural Accelerator">
+ <vendor>0x8086</vendor>
+ <identifier>0x464f</identifier>
+ <subsystem_vendor>0x8086</subsystem_vendor>
+ <subsystem_identifier>0x7270</subsystem_identifier>
+ <class>0x088000</class>
+ <acpi_object>\_SB_.PC00.GNA0</acpi_object>
+ <aml_template>5b821a5c2f035f53425f50433030474e4130085f4144520c00000800</aml_template>
+ <aml_template>5b821a5c2f035f53425f50433030474e4130085f4144520c00000800</aml_template>
+ <resource type="interrupt_pin" pin="INTA#" source="16"/>
+ <resource type="memory" min="0x60e833c000" max="0x60e833cfff" len="0x1000" id="bar0" width="64" prefetchable="0"/>
+ <capability id="MSI">
+ <count>1</count>
+ </capability>
+ <capability id="Vendor-Specific"/>
+ <capability id="Power Management"/>
+ <capability id="Conventional PCI Advanced Features"/>
+ </device>
+ <device address="0xa0000" id="0x467d" description="Signal processing controller: Intel Corporation Platform Monitoring Technology">
+ <vendor>0x8086</vendor>
+ <identifier>0x467d</identifier>
+ <subsystem_vendor>0x8086</subsystem_vendor>
+ <subsystem_identifier>0x7270</subsystem_identifier>
+ <class>0x118000</class>
+ <resource type="memory" min="0x60e8320000" max="0x60e8327fff" len="0x8000" id="bar0" width="64" prefetchable="0"/>
+ <capability id="PCI Express"/>
+ <capability id="Power Management"/>
+ <capability id="Designated Vendor-Specific"/>
+ <capability id="Designated Vendor-Specific"/>
+ <capability id="Designated Vendor-Specific"/>
+ </device>
+ <device address="0x100000">
+ <acpi_object>\_SB_.PC00.I2C6</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303049324336085f4144520c00001000</aml_template>
+ <aml_template>5b821a5c2f035f53425f5043303049324336085f4144520c00001000</aml_template>
+ </device>
+ <device address="0x100001">
+ <acpi_object>\_SB_.PC00.I2C7</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303049324337085f4144520c01001000</aml_template>
+ <aml_template>5b821a5c2f035f53425f5043303049324337085f4144520c01001000</aml_template>
+ </device>
+ <device address="0x100006">
+ <acpi_object>\_SB_.PC00.THC0</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303054484330085f4144520c06001000</aml_template>
+ <aml_template>5b821a5c2f035f53425f5043303054484330085f4144520c06001000</aml_template>
+ <device address="0x1">
+ <acpi_object>\_SB_.PC00.THC0.TLC1</acpi_object>
+ <aml_template>5b82215c2f045f53425f5043303054484330544c4331085f5354410a0f085f41445201</aml_template>
+ <aml_template>5b82215c2f045f53425f5043303054484330544c4331085f5354410a0f085f41445201</aml_template>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ </device>
+ <device address="0x2">
+ <acpi_object>\_SB_.PC00.THC0.TLC2</acpi_object>
+ <aml_template>5b82225c2f045f53425f5043303054484330544c4332085f5354410a0f085f4144520a02</aml_template>
+ <aml_template>5b82225c2f045f53425f5043303054484330544c4332085f5354410a0f085f4144520a02</aml_template>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ </device>
+ <device address="0x3">
+ <acpi_object>\_SB_.PC00.THC0.TLC3</acpi_object>
+ <aml_template>5b82225c2f045f53425f5043303054484330544c4333085f5354410a0f085f4144520a03</aml_template>
+ <aml_template>5b82225c2f045f53425f5043303054484330544c4333085f5354410a0f085f4144520a03</aml_template>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ </device>
+ </device>
+ <device address="0x100007">
+ <acpi_object>\_SB_.PC00.THC1</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303054484331085f4144520c07001000</aml_template>
+ <aml_template>5b821a5c2f035f53425f5043303054484331085f4144520c07001000</aml_template>
+ <device address="0x1">
+ <acpi_object>\_SB_.PC00.THC1.TLC1</acpi_object>
+ <aml_template>5b82215c2f045f53425f5043303054484331544c4331085f5354410a0f085f41445201</aml_template>
+ <aml_template>5b82215c2f045f53425f5043303054484331544c4331085f5354410a0f085f41445201</aml_template>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ </device>
+ <device address="0x2">
+ <acpi_object>\_SB_.PC00.THC1.TLC2</acpi_object>
+ <aml_template>5b82225c2f045f53425f5043303054484331544c4332085f5354410a0f085f4144520a02</aml_template>
+ <aml_template>5b82225c2f045f53425f5043303054484331544c4332085f5354410a0f085f4144520a02</aml_template>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ </device>
+ <device address="0x3">
+ <acpi_object>\_SB_.PC00.THC1.TLC3</acpi_object>
+ <aml_template>5b82225c2f045f53425f5043303054484331544c4333085f5354410a0f085f4144520a03</aml_template>
+ <aml_template>5b82225c2f045f53425f5043303054484331544c4333085f5354410a0f085f4144520a03</aml_template>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ <status>
+ <present>y</present>
+ <enabled>y</enabled>
+ <functioning>y</functioning>
+ </status>
+ </device>
+ </device>
+ <device address="0x110000">
+ <acpi_object>\_SB_.PC00.UA03</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303055413033085f4144520c00001100</aml_template>
+ <aml_template>5b821a5c2f035f53425f5043303055413033085f4144520c00001100</aml_template>
+ </device>
+ <device address="0x110001">
+ <acpi_object>\_SB_.PC00.UA04</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303055413034085f4144520c01001100</aml_template>
+ <aml_template>5b821a5c2f035f53425f5043303055413034085f4144520c01001100</aml_template>
+ </device>
+ <device address="0x110002">
+ <acpi_object>\_SB_.PC00.UA05</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303055413035085f4144520c02001100</aml_template>
+ <aml_template>5b821a5c2f035f53425f5043303055413035085f4144520c02001100</aml_template>
+ </device>
+ <device address="0x110003">
+ <acpi_object>\_SB_.PC00.UA06</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303055413036085f4144520c03001100</aml_template>
+ <aml_template>5b821a5c2f035f53425f5043303055413036085f4144520c03001100</aml_template>
+ </device>
+ <device address="0x120000" id="0x7af8" description="Serial controller: Intel Corporation">
+ <vendor>0x8086</vendor>
+ <identifier>0x7af8</identifier>
+ <subsystem_vendor>0x8086</subsystem_vendor>
+ <subsystem_identifier>0x7270</subsystem_identifier>
+ <class>0x070000</class>
+ <acpi_object>\_SB_.PC00.ISHD</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303049534844085f4144520c00001200</aml_template>
+ <aml_template>5b821a5c2f035f53425f5043303049534844085f4144520c00001200</aml_template>
+ <resource type="interrupt_pin" pin="INTA#" source="26"/>
+ <resource type="memory" min="0x60e8310000" max="0x60e831ffff" len="0x10000" id="bar0" width="64" prefetchable="0"/>
+ <capability id="Power Management"/>
+ <capability id="Vendor-Specific"/>
+ </device>
+ <device address="0x120006">
+ <acpi_object>\_SB_.PC00.SPI2</acpi_object>
+ <aml_template>5b821a5c2f035f53425f5043303053504932085f4144520c06001200</aml_template>
+ <aml_template>5b821a5c2f035f53425f5043303053504932085f4144520c06001200</aml_template>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.TP2_</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.S2DE</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.TP1_</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.S2D3</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.S2D7</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.S2D8</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.TP3_</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.S2DB</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.S2D1</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.S2DD</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.S2D6</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.S2D4</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.S2D0</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.S2D2</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.S2DC</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.S2D5</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.FPNT</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.S2D9</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.S2DA</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.TP2_</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.S2DE</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.TP1_</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.S2D3</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.S2D7</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.S2D8</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.TP3_</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.S2DB</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.S2D1</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.S2DD</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.S2D6</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.S2D4</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.S2D0</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.S2D2</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.S2DC</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.S2D5</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.FPNT</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.S2D9</dependency>
+ <dependency type="provides resources to">\_SB_.PC00.SPI2.S2DA</dependency>
+ <device id="DUMY0000">
+ <acpi_object>\_SB_.PC00.SPI2.FPNT</acpi_object>
+ <aml_template>5b8246085c2f045f53425f504330305350493246504e54085f53544100085f4849440d44554d593030303000085f4352531146050a528e21000100020200000109000000000008000000005c5f53422e504330302e53504932008c2000010101000200000000000017000019002300000000005c5f53422e47504930008906001501730000007900</aml_template>
+ <aml_template>5b8246085c2f045f53425f504330305350493246504e54085f53544100085f4849440d44554d593030303000085f4352531146050a528e21000100020200000109000000000008000000005c5f53422e504330302e53504932008c2000010101000200000000000017000019002300000000005c5f53422e47504930008906001501730000007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGPIOConnection" id="res1"/>
+ <resource type="LargeResourceItemGPIOConnection" id="res1"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <resource id="res2" type="irq" int="115"/>
+ <resource id="res2" type="irq" int="115"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI2</dependency>
+ <dependency type="consumes resources from">\_SB_.GPI0</dependency>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI2</dependency>
+ <dependency type="consumes resources from">\_SB_.GPI0</dependency>
+ </device>
+ <device id="SPI2001">
+ <acpi_object>\_SB_.PC00.SPI2.S2D0</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493253324430085f53544100085f4849440d5350493230303100085f55494401085f43525311290a268e210001000202000001090040420f0008000000005c5f53422e504330302e53504932007900</aml_template>
+ <aml_template>5b824e055c2f045f53425f504330305350493253324430085f53544100085f4849440d5350493230303100085f55494401085f43525311290a268e210001000202000001090040420f0008000000005c5f53422e504330302e53504932007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI2</dependency>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI2</dependency>
+ </device>
+ <device id="SPI2003">
+ <acpi_object>\_SB_.PC00.SPI2.S2D1</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493253324431085f53544100085f4849440d5350493230303300085f55494401085f43525311290a268e210001000202000001090040420f0008000100005c5f53422e504330302e53504932007900</aml_template>
+ <aml_template>5b824e055c2f045f53425f504330305350493253324431085f53544100085f4849440d5350493230303300085f55494401085f43525311290a268e210001000202000001090040420f0008000100005c5f53422e504330302e53504932007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI2</dependency>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI2</dependency>
+ </device>
+ <device id="SPI2002">
+ <acpi_object>\_SB_.PC00.SPI2.S2D2</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493253324432085f53544100085f4849440d5350493230303200085f55494401085f43525311290a268e210001000202000001090040420f0008010000005c5f53422e504330302e53504932007900</aml_template>
+ <aml_template>5b824e055c2f045f53425f504330305350493253324432085f53544100085f4849440d5350493230303200085f55494401085f43525311290a268e210001000202000001090040420f0008010000005c5f53422e504330302e53504932007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI2</dependency>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI2</dependency>
+ </device>
+ <device id="SPI2004">
+ <acpi_object>\_SB_.PC00.SPI2.S2D3</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493253324433085f53544100085f4849440d5350493230303400085f55494401085f43525311290a268e210001000202000001090040420f0008010100005c5f53422e504330302e53504932007900</aml_template>
+ <aml_template>5b824e055c2f045f53425f504330305350493253324433085f53544100085f4849440d5350493230303400085f55494401085f43525311290a268e210001000202000001090040420f0008010100005c5f53422e504330302e53504932007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI2</dependency>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI2</dependency>
+ </device>
+ <device id="SPI2005">
+ <acpi_object>\_SB_.PC00.SPI2.S2D4</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493253324434085f53544100085f4849440d5350493230303500085f55494401085f43525311290a268e210001000202020001090040420f0008000000005c5f53422e504330302e53504932007900</aml_template>
+ <aml_template>5b824e055c2f045f53425f504330305350493253324434085f53544100085f4849440d5350493230303500085f55494401085f43525311290a268e210001000202020001090040420f0008000000005c5f53422e504330302e53504932007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI2</dependency>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI2</dependency>
+ </device>
+ <device id="SPI2007">
+ <acpi_object>\_SB_.PC00.SPI2.S2D5</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493253324435085f53544100085f4849440d5350493230303700085f55494401085f43525311290a268e210001000202020001090040420f0008000100005c5f53422e504330302e53504932007900</aml_template>
+ <aml_template>5b824e055c2f045f53425f504330305350493253324435085f53544100085f4849440d5350493230303700085f55494401085f43525311290a268e210001000202020001090040420f0008000100005c5f53422e504330302e53504932007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI2</dependency>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI2</dependency>
+ </device>
+ <device id="SPI2006">
+ <acpi_object>\_SB_.PC00.SPI2.S2D6</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493253324436085f53544100085f4849440d5350493230303600085f55494401085f43525311290a268e210001000202020001090040420f0008010000005c5f53422e504330302e53504932007900</aml_template>
+ <aml_template>5b824e055c2f045f53425f504330305350493253324436085f53544100085f4849440d5350493230303600085f55494401085f43525311290a268e210001000202020001090040420f0008010000005c5f53422e504330302e53504932007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI2</dependency>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI2</dependency>
+ </device>
+ <device id="SPI2008">
+ <acpi_object>\_SB_.PC00.SPI2.S2D7</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493253324437085f53544100085f4849440d5350493230303800085f55494401085f43525311290a268e210001000202020001090040420f0008010100005c5f53422e504330302e53504932007900</aml_template>
+ <aml_template>5b824e055c2f045f53425f504330305350493253324437085f53544100085f4849440d5350493230303800085f55494401085f43525311290a268e210001000202020001090040420f0008010100005c5f53422e504330302e53504932007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI2</dependency>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI2</dependency>
+ </device>
+ <device id="SPI2009">
+ <acpi_object>\_SB_.PC00.SPI2.S2D8</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493253324438085f53544100085f4849440d5350493230303900085f55494401085f43525311290a268e21000100020200000109008096980008000000005c5f53422e504330302e53504932007900</aml_template>
+ <aml_template>5b824e055c2f045f53425f504330305350493253324438085f53544100085f4849440d5350493230303900085f55494401085f43525311290a268e21000100020200000109008096980008000000005c5f53422e504330302e53504932007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI2</dependency>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI2</dependency>
+ </device>
+ <device id="SPI2010">
+ <acpi_object>\_SB_.PC00.SPI2.S2D9</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493253324439085f53544100085f4849440d5350493230313000085f55494401085f43525311290a268e21000100020200000109002a50fe0008000000005c5f53422e504330302e53504932007900</aml_template>
+ <aml_template>5b824e055c2f045f53425f504330305350493253324439085f53544100085f4849440d5350493230313000085f55494401085f43525311290a268e21000100020200000109002a50fe0008000000005c5f53422e504330302e53504932007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI2</dependency>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI2</dependency>
+ </device>
+ <device id="SPI2011">
+ <acpi_object>\_SB_.PC00.SPI2.S2DA</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493253324441085f53544100085f4849440d5350493230313100085f55494401085f43525311290a268e2100010002020000010900002d310108000000005c5f53422e504330302e53504932007900</aml_template>
+ <aml_template>5b824e055c2f045f53425f504330305350493253324441085f53544100085f4849440d5350493230313100085f55494401085f43525311290a268e2100010002020000010900002d310108000000005c5f53422e504330302e53504932007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI2</dependency>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI2</dependency>
+ </device>
+ <device id="SPI2012">
+ <acpi_object>\_SB_.PC00.SPI2.S2DB</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493253324442085f53544100085f4849440d5350493230313200085f55494401085f43525311290a268e210001000202000001090000366e0108000000005c5f53422e504330302e53504932007900</aml_template>
+ <aml_template>5b824e055c2f045f53425f504330305350493253324442085f53544100085f4849440d5350493230313200085f55494401085f43525311290a268e210001000202000001090000366e0108000000005c5f53422e504330302e53504932007900</aml_template>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <status>
+ <present>n</present>
+ <enabled>n</enabled>
+ <functioning>n</functioning>
+ </status>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <resource type="LargeResourceItemGenericSerialBusConnection" id="res0"/>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI2</dependency>
+ <dependency type="consumes resources from">\_SB_.PC00.SPI2</dependency>
+ </device>
+ <device id="SPI2013">
+ <acpi_object>\_SB_.PC00.SPI2.S2DC</acpi_object>
+ <acpi_uid>1</acpi_uid>
+ <acpi_uid>1</acpi_uid>
+ <aml_template>5b824e055c2f045f53425f504330305350493253324443085f53544100085f4849440d5350493230313300085f55494401085f43525311290a268e2100010002020000010900
This message has been truncated.


[PATCH v2 3/4] config-tools: ignore the scenario and board field

Conghui Chen
 

Ignore the "scenario" and "board" field in <scenario>.xml:
<acrn-config board="whl-ipc-i5" scenario="shared">

With this patch, we do not need to remove "board" and "scenario" from
all the scenario xmls under misc/config_tools/data/

Signed-off-by: Conghui <conghui.chen@...>
Reviewed-by: Junjie Mao <junjie.mao@...>
---
hypervisor/scripts/makefile/config.mk | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/hypervisor/scripts/makefile/config.mk b/hypervisor/scripts/makefile/config.mk
index 8caed0627..afec298de 100644
--- a/hypervisor/scripts/makefile/config.mk
+++ b/hypervisor/scripts/makefile/config.mk
@@ -209,9 +209,7 @@ $(HV_SCENARIO_XML):
echo "Scenario XML is being fetched from $(abspath $(SCENARIO_FILE))"; \
mkdir -p $(dir $(HV_SCENARIO_XML)); \
python3 $(HV_CONFIG_TOOL_DIR)/scenario_config/default_populator.py $(SCENARIO_FILE) $(HV_SCENARIO_XML); \
- if [ -z $$(xmllint --xpath 'string(//@scenario)' $(HV_SCENARIO_XML)) ]; then \
- sed "s#<acrn-config#<acrn-config scenario=\"$(SCENARIO)\"#g" -i $(HV_SCENARIO_XML); \
- fi; \
+ sed "s#<acrn-config.*#<acrn-config scenario=\"$(SCENARIO)\" >#g" -i $(HV_SCENARIO_XML); \
else \
echo "No pre-defined scenario available at $(SCENARIO_FILE)"; \
echo "Try setting another predefined BOARD or SCENARIO or specifying a scenario XML file"; \
--
2.25.1


[PATCH v2 2/4] config-tools: tiny fix in upgrader

Conghui Chen
 

Do not copy the 'board' and 'scenario' in <acrn-config> to the new xml.

Signed-off-by: Conghui <conghui.chen@...>
Reviewed-by: Junjie Mao <junjie.mao@...>
---
misc/config_tools/scenario_config/upgrader.py | 2 --
1 file changed, 2 deletions(-)

diff --git a/misc/config_tools/scenario_config/upgrader.py b/misc/config_tools/scenario_config/upgrader.py
index 1bbd22de4..de9a9218c 100755
--- a/misc/config_tools/scenario_config/upgrader.py
+++ b/misc/config_tools/scenario_config/upgrader.py
@@ -702,8 +702,6 @@ class ScenarioUpgrader(ScenarioTransformer):
def upgraded_etree(self):
new_xml_etree = etree.ElementTree(etree.Element(self.old_xml_etree.getroot().tag))
root_node = new_xml_etree.getroot()
- for k, v in self.old_xml_etree.getroot().items():
- new_xml_etree.getroot().set(k, v)

# Migrate the HV and VM nodes, which are needed to kick off a thorough traversal of the existing scenario.
for old_node in self.old_xml_etree.getroot():
--
2.25.1


[PATCH v2 1/4] config-tools: support absolute path

Conghui Chen
 

1. Support absolute path for scenario file.
2. Use the scenario xml file name as scenario name, but if it is
'scenario.xml', use the upper level directory name.
e.g.
SCENARIO=<pathxxx>/shared/scenario.xml
Then scenario name would be 'shared'.

3. Change 'realpath' to 'abspath' as we should keep the original path
for scenario file even it is a link file. This will make sure the
scenario name is always consistent with file set in 'SCENARIO='.

v1->v2:
change the if/else to 'if' function.

Signed-off-by: Conghui <conghui.chen@...>
---
Makefile | 4 ++--
hypervisor/scripts/makefile/config.mk | 11 ++++++++---
2 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/Makefile b/Makefile
index 2a961d9b2..94e94ac37 100644
--- a/Makefile
+++ b/Makefile
@@ -46,7 +46,7 @@ ifneq ($(BOARD_FILE)$(SCENARIO_FILE),)
endif

override BOARD := $(realpath $(BOARD_FILE))
- override SCENARIO := $(realpath $(SCENARIO_FILE))
+ override SCENARIO := $(abspath $(SCENARIO_FILE))
else
# BOARD/SCENARIO pointing to XML files must be converted to absolute paths before being passed to hypervisor/Makefile
# because paths relative to acrn-hypervisor/ are typically invalid when relative to acrn-hypervisor/Makefile
@@ -54,7 +54,7 @@ else
override BOARD := $(realpath $(BOARD))
endif
ifneq ($(realpath $(SCENARIO)),)
- override SCENARIO := $(realpath $(SCENARIO))
+ override SCENARIO := $(abspath $(SCENARIO))
endif
endif

diff --git a/hypervisor/scripts/makefile/config.mk b/hypervisor/scripts/makefile/config.mk
index d31e8a426..8caed0627 100644
--- a/hypervisor/scripts/makefile/config.mk
+++ b/hypervisor/scripts/makefile/config.mk
@@ -54,7 +54,12 @@ define determine_config =
ifneq ($($(1)),)
ifneq ($(realpath $($(1))),)
override $(1)_FILE := $($(1))
- override $(1) := $$(shell xmllint --xpath 'string(/acrn-config/@$(shell echo $(1) | tr A-Z a-z))' $$($(1)_FILE))
+ ifneq (SCENARIO, $(1))
+ override $(1) := $$(shell xmllint --xpath 'string(/acrn-config/@$(shell echo $(1) | tr A-Z a-z))' $$($(1)_FILE))
+ else
+ scenario_name := $(subst .xml,,$(notdir $($(1))))
+ override $(1) := $$(if $$(subst scenario,,$$(scenario_name)),$$(scenario_name),$(notdir $(abspath $(dir $($(1))))))
+ endif
else
override $(1)_FILE := $(HV_PREDEFINED_DATA_DIR)/$$(BOARD)/$$($(1)).xml
ifeq ($$(realpath $$($(1)_FILE)),)
@@ -201,11 +206,11 @@ $(HV_BOARD_XML):
$(HV_SCENARIO_XML):
@if [ ! -f $(HV_SCENARIO_XML) ]; then \
if [ -f $(SCENARIO_FILE) ]; then \
- echo "Scenario XML is being fetched from $(realpath $(SCENARIO_FILE))"; \
+ echo "Scenario XML is being fetched from $(abspath $(SCENARIO_FILE))"; \
mkdir -p $(dir $(HV_SCENARIO_XML)); \
python3 $(HV_CONFIG_TOOL_DIR)/scenario_config/default_populator.py $(SCENARIO_FILE) $(HV_SCENARIO_XML); \
if [ -z $$(xmllint --xpath 'string(//@scenario)' $(HV_SCENARIO_XML)) ]; then \
- sed "s#<acrn-config#<acrn-config scenario=\"$(subst .xml,,$(notdir $(SCENARIO_FILE)))\"#g" -i $(HV_SCENARIO_XML); \
+ sed "s#<acrn-config#<acrn-config scenario=\"$(SCENARIO)\"#g" -i $(HV_SCENARIO_XML); \
fi; \
else \
echo "No pre-defined scenario available at $(SCENARIO_FILE)"; \
--
2.25.1


Re: [PATCH 2/2] hv: vSRIOV: add VF BARs mapping for PF

Eddie Dong
 

-----Original Message-----
From: Li, Fei1 <fei1.li@...>
Sent: Friday, April 22, 2022 3:47 AM
To: acrn-dev@...
Cc: Dong, Eddie <eddie.dong@...>; Chen, Jason CJ
<jason.cj.chen@...>
Subject: [PATCH 2/2] hv: vSRIOV: add VF BARs mapping for PF

When enabling SRIOV capability for a PF in Service VM, ACRN Hypervisor
should add VF BARs mapping for PF since PF's firmware would access these
BARs to do initialization for VFs when it's first created.

Signed-off-by: Fei Li <fei1.li@...>
---
hypervisor/dm/vpci/pci_pt.c | 2 +-
hypervisor/dm/vpci/vsriov.c | 12 ++++++++++++
2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/hypervisor/dm/vpci/pci_pt.c b/hypervisor/dm/vpci/pci_pt.c index
4a9568bbc..ec2372b0a 100644
--- a/hypervisor/dm/vpci/pci_pt.c
+++ b/hypervisor/dm/vpci/pci_pt.c
@@ -582,7 +582,7 @@ void init_vdev_pt(struct pci_vdev *vdev, bool
is_pf_vdev)
pci_vdev_write_vcfg(vdev, PCIR_VENDOR, 2U, vid);
pci_vdev_write_vcfg(vdev, PCIR_DEVICE, 2U, did);
} else {
- /* VF is unassinged */
+ /* VF is unassinged: when VF was first created, the
VF's BARs hasn't
+been assigned */
uint32_t bar_idx;

for (bar_idx = 0U; bar_idx < vdev->nr_bars;
bar_idx++) { diff --git a/hypervisor/dm/vpci/vsriov.c
b/hypervisor/dm/vpci/vsriov.c index 9e93f6d9d..940862dde 100644
--- a/hypervisor/dm/vpci/vsriov.c
+++ b/hypervisor/dm/vpci/vsriov.c
@@ -27,6 +27,7 @@
*/

#include <asm/guest/vm.h>
+#include <asm/guest/ept.h>
#include <ptdev.h>
#include <vpci.h>
#include <asm/pci_dev.h>
@@ -134,6 +135,17 @@ static void create_vf(struct pci_vdev *pf_vdev,
union pci_bdf vf_bdf, uint16_t v
pci_vdev_write_vcfg(vf_vdev,
pci_bar_offset(bar_idx), 4U, 0U);
}

+ /* Map VF's BARs when it's first created. */
+ for (bar_idx = 0U; bar_idx < PCI_BAR_COUNT; bar_idx++) {
Can we reuse the loop in above?

+ vf_vbar = &vf_vdev->vbars[bar_idx];
+
+ if (vf_vbar->base_gpa != 0UL) {
+ struct acrn_vm *vm = vpci2vm(vf_vdev-
vpci);
+ ept_add_mr(vm, (uint64_t *)(vm-
arch_vm.nworld_eptp), vf_vbar->base_hpa,
+ vf_vbar->base_gpa, vf_vbar->size,
EPT_WR | EPT_RD | EPT_UNCACHED);
+ }
+ }
+
if (has_msix_cap(vf_vdev)) {
vdev_pt_map_msix(vf_vdev, false);
}
--
2.25.1


[PATCH] refine memory allocation for vm

Li, Ziheng
 

From 4ed3c1803fe613d2f1c4fd3bea8d33bd4ac64b26 Mon Sep 17 00:00:00 2001
From: zihengL1 <ziheng.li@...>
Date: Fri, 22 Apr 2022 20:50:13 +0800
Subject: [PATCH] refine memory allocation for vm

1.The memory allocation effect is tested under XML files on multiple platforms
2.Modified the conversion of memory I units during memory reading and processing

Signed-off-by: zihengL1 <ziheng.li@...>
---
.../static_allocators/memory_allocator.py | 18 ++++++++++--------
1 file changed, 10 insertions(+), 8 deletions(-)

diff --git a/misc/config_tools/static_allocators/memory_allocator.py b/misc/config_tools/static_allocators/memory_allocator.py
index 68eec1e3d..9c3b5f4d7 100644
--- a/misc/config_tools/static_allocators/memory_allocator.py
+++ b/misc/config_tools/static_allocators/memory_allocator.py
@@ -36,16 +36,18 @@ def get_memory_info(vm_node_info):
size_hpa = []
hpa_info = {}

- whole_node_list = vm_node_info.xpath("./memory/size")
- if len(whole_node_list) != 0:
- hpa_info[0] = int(whole_node_list[0].text, 16)
+ size_node = common.get_node("./memory/size", vm_node_info)
+ if size_node is not None:
+ size_byte = int(size_node.text) * 0x100000
+ hpa_info[0] = size_byte
hpa_node_list = check_hpa(vm_node_info)
if len(hpa_node_list) != 0:
for hpa_node in hpa_node_list:
if hpa_node.tag == "start_hpa":
start_hpa.append(int(hpa_node.text, 16))
elif hpa_node.tag == "size_hpa":
- size_hpa.append(int(hpa_node.text))
+ size_byte = int(hpa_node.text) * 0x100000
+ size_hpa.append(size_byte)
if len(start_hpa) != 0 and len(start_hpa) == len(start_hpa):
for i in range(len(start_hpa)):
hpa_info[start_hpa[i]] = size_hpa[i]
@@ -53,12 +55,12 @@ def get_memory_info(vm_node_info):
return hpa_info

def alloc_memory(scenario_etree, ram_range_info):
- vm_node_list = scenario_etree.xpath("/acrn-config/vm[load_order = 'PRE_LAUNCHED_VM']")
+ vm_node_list = scenario_etree.xpath("/acrn-config/vm[load_order = 'POST_LAUNCHED_VM']")
mem_info_list = []
vm_node_index_list = []
dic_key = sorted(ram_range_info)
for key in dic_key:
- if key <= 0x100000000:
+ if key < 0x100000000:
ram_range_info.pop(key)

for vm_node in vm_node_list:
@@ -72,9 +74,9 @@ def alloc_memory(scenario_etree, ram_range_info):
return ram_range_info, mem_info_list, vm_node_index_list

def alloc_hpa_region(ram_range_info, mem_info_list, vm_node_index_list):
- mem_key = sorted(ram_range_info)
for vm_index in range(len(vm_node_index_list)):
hpa_key = sorted(mem_info_list[vm_index])
+ mem_key = sorted(ram_range_info)
for mem_start in mem_key:
mem_size = ram_range_info[mem_start]
for hpa_start in hpa_key:
@@ -143,7 +145,7 @@ def write_hpa_info(allocation_etree, mem_info_list, vm_node_index_list):

size_hpa_node = common.get_node("./size_hpa", hpa_region_node)
if size_hpa_node is None:
- common.append_node("./size_hpa", hex(hpa_info[start_hpa] * 0x100000), hpa_region_node)
+ common.append_node("./size_hpa", hex(hpa_info[start_hpa]), hpa_region_node)
region_index = region_index + 1

def alloc_vm_memory(board_etree, scenario_etree, allocation_etree):
--
2.25.1


[PATCH 2/2] hv: vSRIOV: add VF BARs mapping for PF

Li, Fei1
 

When enabling SRIOV capability for a PF in Service VM, ACRN Hypervisor
should add VF BARs mapping for PF since PF's firmware would access these
BARs to do initialization for VFs when it's first created.

Signed-off-by: Fei Li <fei1.li@...>
---
hypervisor/dm/vpci/pci_pt.c | 2 +-
hypervisor/dm/vpci/vsriov.c | 12 ++++++++++++
2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/hypervisor/dm/vpci/pci_pt.c b/hypervisor/dm/vpci/pci_pt.c
index 4a9568bbc..ec2372b0a 100644
--- a/hypervisor/dm/vpci/pci_pt.c
+++ b/hypervisor/dm/vpci/pci_pt.c
@@ -582,7 +582,7 @@ void init_vdev_pt(struct pci_vdev *vdev, bool is_pf_vdev)
pci_vdev_write_vcfg(vdev, PCIR_VENDOR, 2U, vid);
pci_vdev_write_vcfg(vdev, PCIR_DEVICE, 2U, did);
} else {
- /* VF is unassinged */
+ /* VF is unassinged: when VF was first created, the VF's BARs hasn't been assigned */
uint32_t bar_idx;

for (bar_idx = 0U; bar_idx < vdev->nr_bars; bar_idx++) {
diff --git a/hypervisor/dm/vpci/vsriov.c b/hypervisor/dm/vpci/vsriov.c
index 9e93f6d9d..940862dde 100644
--- a/hypervisor/dm/vpci/vsriov.c
+++ b/hypervisor/dm/vpci/vsriov.c
@@ -27,6 +27,7 @@
*/

#include <asm/guest/vm.h>
+#include <asm/guest/ept.h>
#include <ptdev.h>
#include <vpci.h>
#include <asm/pci_dev.h>
@@ -134,6 +135,17 @@ static void create_vf(struct pci_vdev *pf_vdev, union pci_bdf vf_bdf, uint16_t v
pci_vdev_write_vcfg(vf_vdev, pci_bar_offset(bar_idx), 4U, 0U);
}

+ /* Map VF's BARs when it's first created. */
+ for (bar_idx = 0U; bar_idx < PCI_BAR_COUNT; bar_idx++) {
+ vf_vbar = &vf_vdev->vbars[bar_idx];
+
+ if (vf_vbar->base_gpa != 0UL) {
+ struct acrn_vm *vm = vpci2vm(vf_vdev->vpci);
+ ept_add_mr(vm, (uint64_t *)(vm->arch_vm.nworld_eptp), vf_vbar->base_hpa,
+ vf_vbar->base_gpa, vf_vbar->size, EPT_WR | EPT_RD | EPT_UNCACHED);
+ }
+ }
+
if (has_msix_cap(vf_vdev)) {
vdev_pt_map_msix(vf_vdev, false);
}
--
2.25.1


[PATCH 1/2] hv: vPCI: passthrough MSI-X Control Register to guest.

Li, Fei1
 

In spite of Table Size in MSI-X Message Control Register [Bits 10:0] masks as
RO (Register bits are read-only and cannot be altered by software), In Spec
PCIe 6.0, Chap 6.1.4.2 MSI-X Configuration "Depending upon system software
policy, system software, device driver software, or each at different times or
environments may configure a Function’s MSI-X Capability and table structures
with suitable vectors."

This patch just pass through MSI-X Control Register field to guest.

Signed-off-by: Fei Li <fei1.li@...>
---
hypervisor/dm/vpci/ivshmem.c | 2 +-
hypervisor/dm/vpci/pci_pt.c | 15 +++++++++++++++
hypervisor/dm/vpci/vhostbridge.c | 2 +-
hypervisor/dm/vpci/vmcs9900.c | 10 ++++------
hypervisor/dm/vpci/vmsix.c | 28 ++++++++++++++++++++++++++++
hypervisor/dm/vpci/vpci.c | 6 ++++--
hypervisor/dm/vpci/vpci_bridge.c | 2 +-
hypervisor/dm/vpci/vpci_priv.h | 2 ++
hypervisor/dm/vpci/vroot_port.c | 2 +-
hypervisor/include/dm/vpci.h | 2 +-
10 files changed, 58 insertions(+), 13 deletions(-)

diff --git a/hypervisor/dm/vpci/ivshmem.c b/hypervisor/dm/vpci/ivshmem.c
index cf039ba50..034bb0da7 100644
--- a/hypervisor/dm/vpci/ivshmem.c
+++ b/hypervisor/dm/vpci/ivshmem.c
@@ -221,7 +221,7 @@ static int32_t ivshmem_mmio_handler(struct io_request *io_req, void *data)
return 0;
}

-static int32_t read_ivshmem_vdev_cfg(const struct pci_vdev *vdev, uint32_t offset, uint32_t bytes, uint32_t *val)
+static int32_t read_ivshmem_vdev_cfg(struct pci_vdev *vdev, uint32_t offset, uint32_t bytes, uint32_t *val)
{
*val = pci_vdev_read_vcfg(vdev, offset, bytes);

diff --git a/hypervisor/dm/vpci/pci_pt.c b/hypervisor/dm/vpci/pci_pt.c
index 9d46eccec..4a9568bbc 100644
--- a/hypervisor/dm/vpci/pci_pt.c
+++ b/hypervisor/dm/vpci/pci_pt.c
@@ -47,6 +47,21 @@ static inline struct msix_table_entry *get_msix_table_entry(const struct pci_vde
return ((struct msix_table_entry *)hva + index);
}

+/**
+ * @brief Reading MSI-X Capability Structure
+ *
+ * @pre vdev != NULL
+ * @pre vdev->pdev != NULL
+ */
+void read_pt_vmsix_cap_reg(struct pci_vdev *vdev, uint32_t offset, uint32_t bytes, uint32_t *val)
+{
+ if (vdev->msix.is_vmsix_on_msi) {
+ *val = pci_vdev_read_vcfg(vdev, offset, bytes);
+ } else {
+ read_vmsix_cap_reg(vdev, offset, bytes, val);
+ }
+}
+
/**
* @brief Writing MSI-X Capability Structure
*
diff --git a/hypervisor/dm/vpci/vhostbridge.c b/hypervisor/dm/vpci/vhostbridge.c
index 1e9be1fe2..3ec221a75 100644
--- a/hypervisor/dm/vpci/vhostbridge.c
+++ b/hypervisor/dm/vpci/vhostbridge.c
@@ -146,7 +146,7 @@ static void deinit_vhostbridge(__unused struct pci_vdev *vdev)
* @pre vdev != NULL
* @pre vdev->vpci != NULL
*/
-static int32_t read_vhostbridge_cfg(const struct pci_vdev *vdev, uint32_t offset,
+static int32_t read_vhostbridge_cfg(struct pci_vdev *vdev, uint32_t offset,
uint32_t bytes, uint32_t *val)
{
*val = pci_vdev_read_vcfg(vdev, offset, bytes);
diff --git a/hypervisor/dm/vpci/vmcs9900.c b/hypervisor/dm/vpci/vmcs9900.c
index 9f29da768..61e72dd44 100644
--- a/hypervisor/dm/vpci/vmcs9900.c
+++ b/hypervisor/dm/vpci/vmcs9900.c
@@ -12,8 +12,8 @@
#include "vpci_priv.h"
#include <errno.h>

-#define MCS9900_MMIO_BAR 0U
-#define MCS9900_MSIX_BAR 1U
+#define MCS9900_MMIO_BAR 0U
+#define MCS9900_MSIX_BAR 1U

/*
* @pre vdev != NULL
@@ -32,12 +32,10 @@ void trigger_vmcs9900_msix(struct pci_vdev *vdev)
}
}

-static int32_t read_vmcs9900_cfg(const struct pci_vdev *vdev,
- uint32_t offset, uint32_t bytes,
- uint32_t * val)
+static int32_t read_vmcs9900_cfg(struct pci_vdev *vdev,
+ uint32_t offset, uint32_t bytes, uint32_t * val)
{
*val = pci_vdev_read_vcfg(vdev, offset, bytes);
-
return 0;
}

diff --git a/hypervisor/dm/vpci/vmsix.c b/hypervisor/dm/vpci/vmsix.c
index 2ae6f2062..3b262017d 100644
--- a/hypervisor/dm/vpci/vmsix.c
+++ b/hypervisor/dm/vpci/vmsix.c
@@ -34,6 +34,34 @@
#include <logmsg.h>
#include "vpci_priv.h"

+/**
+ * @brief Reading MSI-X Capability Structure
+ *
+ * @pre vdev != NULL
+ * @pre vdev->pdev != NULL
+ */
+void read_vmsix_cap_reg(struct pci_vdev *vdev, uint32_t offset, uint32_t bytes, uint32_t *val)
+{
+ static const uint8_t msix_pt_mask[12U] = {
+ 0x0U, 0x0U, 0xffU, 0xffU }; /* Only PT MSI-X Message Control Register */
+ uint32_t virt, phy = 0U, ctrl, pt_mask = 0U;
+
+ virt = pci_vdev_read_vcfg(vdev, offset, bytes);
+ (void)memcpy_s((void *)&pt_mask, bytes, (void *)&msix_pt_mask[offset - vdev->msix.capoff], bytes);
+ if (pt_mask != 0U) {
+ phy = pci_pdev_read_cfg(vdev->pdev->bdf, offset, bytes);
+ ctrl = pci_pdev_read_cfg(vdev->pdev->bdf, vdev->msix.capoff + PCIR_MSIX_CTRL, 2U);
+ if (((ctrl & PCIM_MSIXCTRL_TABLE_SIZE) + 1U) != vdev->msix.table_count) {
+ vdev->msix.table_count = (ctrl & PCIM_MSIXCTRL_TABLE_SIZE) + 1U;
+ pr_info("%s reprogram MSI-X Table Size to %d\n", __func__, vdev->msix.table_count);
+ /*In this case, we don't need to unmap msix EPT mapping again. */
+ ASSERT(vdev->msix.table_count <= (PAGE_SIZE/ MSIX_TABLE_ENTRY_SIZE), "");
+ }
+ }
+
+ *val = (virt & ~pt_mask) | (phy & pt_mask);
+}
+
/**
* @brief Writing MSI-X Capability Structure
*
diff --git a/hypervisor/dm/vpci/vpci.c b/hypervisor/dm/vpci/vpci.c
index f07060d39..f565f1912 100644
--- a/hypervisor/dm/vpci/vpci.c
+++ b/hypervisor/dm/vpci/vpci.c
@@ -532,15 +532,17 @@ static int32_t write_pt_dev_cfg(struct pci_vdev *vdev, uint32_t offset,
return ret;
}

-static int32_t read_pt_dev_cfg(const struct pci_vdev *vdev, uint32_t offset,
+static int32_t read_pt_dev_cfg(struct pci_vdev *vdev, uint32_t offset,
uint32_t bytes, uint32_t *val)
{
int32_t ret = 0;

if (cfg_header_access(offset)) {
read_cfg_header(vdev, offset, bytes, val);
- } else if (msicap_access(vdev, offset) || msixcap_access(vdev, offset)) {
+ } else if (msicap_access(vdev, offset)) {
*val = pci_vdev_read_vcfg(vdev, offset, bytes);
+ } else if (msixcap_access(vdev, offset)) {
+ read_pt_vmsix_cap_reg(vdev, offset, bytes, val);
} else if (sriovcap_access(vdev, offset)) {
read_sriov_cap_reg(vdev, offset, bytes, val);
} else {
diff --git a/hypervisor/dm/vpci/vpci_bridge.c b/hypervisor/dm/vpci/vpci_bridge.c
index 05480696a..088b906ea 100644
--- a/hypervisor/dm/vpci/vpci_bridge.c
+++ b/hypervisor/dm/vpci/vpci_bridge.c
@@ -80,7 +80,7 @@ static void deinit_vpci_bridge(__unused struct pci_vdev *vdev)
vdev->user = NULL;
}

-static int32_t read_vpci_bridge_cfg(const struct pci_vdev *vdev, uint32_t offset,
+static int32_t read_vpci_bridge_cfg(struct pci_vdev *vdev, uint32_t offset,
uint32_t bytes, uint32_t *val)
{
if ((offset + bytes) <= 0x100U) {
diff --git a/hypervisor/dm/vpci/vpci_priv.h b/hypervisor/dm/vpci/vpci_priv.h
index decf2c865..07ac3f2d5 100644
--- a/hypervisor/dm/vpci/vpci_priv.h
+++ b/hypervisor/dm/vpci/vpci_priv.h
@@ -153,7 +153,9 @@ void deinit_vmsi(const struct pci_vdev *vdev);

void init_vmsix_pt(struct pci_vdev *vdev);
int32_t add_vmsix_capability(struct pci_vdev *vdev, uint32_t entry_num, uint8_t bar_num);
+void read_vmsix_cap_reg(struct pci_vdev *vdev, uint32_t offset, uint32_t bytes, uint32_t *val);
bool write_vmsix_cap_reg(struct pci_vdev *vdev, uint32_t offset, uint32_t bytes, uint32_t val);
+void read_pt_vmsix_cap_reg(struct pci_vdev *vdev, uint32_t offset, uint32_t bytes, uint32_t *val);
void write_pt_vmsix_cap_reg(struct pci_vdev *vdev, uint32_t offset, uint32_t bytes, uint32_t val);
uint32_t rw_vmsix_table(struct pci_vdev *vdev, struct io_request *io_req);
int32_t vmsix_handle_table_mmio_access(struct io_request *io_req, void *priv_data);
diff --git a/hypervisor/dm/vpci/vroot_port.c b/hypervisor/dm/vpci/vroot_port.c
index 1c738b008..8327b4866 100644
--- a/hypervisor/dm/vpci/vroot_port.c
+++ b/hypervisor/dm/vpci/vroot_port.c
@@ -76,7 +76,7 @@ static void deinit_vrp(__unused struct pci_vdev *vdev)
vdev->user = NULL;
}

-static int32_t read_vrp_cfg(const struct pci_vdev *vdev, uint32_t offset,
+static int32_t read_vrp_cfg(struct pci_vdev *vdev, uint32_t offset,
uint32_t bytes, uint32_t *val)
{
*val = pci_vdev_read_vcfg(vdev, offset, bytes);
diff --git a/hypervisor/include/dm/vpci.h b/hypervisor/include/dm/vpci.h
index 9c12cd1fe..12498866c 100644
--- a/hypervisor/include/dm/vpci.h
+++ b/hypervisor/include/dm/vpci.h
@@ -104,7 +104,7 @@ struct pci_vdev_ops {
void (*init_vdev)(struct pci_vdev *vdev);
void (*deinit_vdev)(struct pci_vdev *vdev);
int32_t (*write_vdev_cfg)(struct pci_vdev *vdev, uint32_t offset, uint32_t bytes, uint32_t val);
- int32_t (*read_vdev_cfg)(const struct pci_vdev *vdev, uint32_t offset, uint32_t bytes, uint32_t *val);
+ int32_t (*read_vdev_cfg)(struct pci_vdev *vdev, uint32_t offset, uint32_t bytes, uint32_t *val);
};

struct pci_vdev {
--
2.25.1


[PATCH 0/2] HV: vPCI: fix two monir bugs

Li, Fei1
 

1. MSI-X vectors may been changed by system software or driver software on runtime.
So we should pass htrough Message Control Register to guest.
2. Service may use VFs, so ACRN hypervisor should map VF BARs for PF to let PF
could initialize VF by firmware or PF's driver.


Fei Li (2):
hv: vPCI: passthrough MSI-X Control Register to guest.
hv: vSRIOV: add VF BARs mapping for PF

hypervisor/dm/vpci/ivshmem.c | 2 +-
hypervisor/dm/vpci/pci_pt.c | 17 ++++++++++++++++-
hypervisor/dm/vpci/vhostbridge.c | 2 +-
hypervisor/dm/vpci/vmcs9900.c | 10 ++++------
hypervisor/dm/vpci/vmsix.c | 28 ++++++++++++++++++++++++++++
hypervisor/dm/vpci/vpci.c | 6 ++++--
hypervisor/dm/vpci/vpci_bridge.c | 2 +-
hypervisor/dm/vpci/vpci_priv.h | 2 ++
hypervisor/dm/vpci/vroot_port.c | 2 +-
hypervisor/dm/vpci/vsriov.c | 12 ++++++++++++
hypervisor/include/dm/vpci.h | 2 +-
11 files changed, 71 insertions(+), 14 deletions(-)

--
2.25.1


Re: [PATCH] ACRN: DM: Implement vhost vsock feature

Geoffroy Van Cutsem
 

A couple of generic comments:
* Could you use the pr_* family of functions instead of printf
* Please avoid using exclamation marks at the end of message strings, and be mindful of spaces after colons and semi-colons

I haven’t looked thoroughly at the messages themselves yet but a couple caught my eyes already that could be more verbose and explicit.

Thanks,
Geoffroy

On 22 Apr 2022, at 04:04, Long Liu <long.liu@...> wrote:

Signed-off-by: Liu Long <long.liu@...>
---
devicemodel/Makefile | 1 +
devicemodel/hw/pci/core.c | 2 +
devicemodel/hw/pci/virtio/vhost.c | 126 ++++++++--
devicemodel/hw/pci/virtio/vhost_vsock.c | 319 ++++++++++++++++++++++++
devicemodel/hw/pci/virtio/virtio.c | 25 +-
devicemodel/include/vhost.h | 25 ++
devicemodel/include/virtio.h | 3 +
7 files changed, 474 insertions(+), 27 deletions(-)
create mode 100644 devicemodel/hw/pci/virtio/vhost_vsock.c

diff --git a/devicemodel/Makefile b/devicemodel/Makefile
index e0b59958e..84ab1f108 100644
--- a/devicemodel/Makefile
+++ b/devicemodel/Makefile
@@ -141,6 +141,7 @@ SRCS += hw/pci/virtio/virtio_coreu.c
SRCS += hw/pci/virtio/virtio_hdcp.c
SRCS += hw/pci/virtio/virtio_rpmb.c
SRCS += hw/pci/virtio/virtio_gpio.c
+SRCS += hw/pci/virtio/vhost_vsock.c
SRCS += hw/pci/irq.c
SRCS += hw/pci/uart.c
SRCS += hw/pci/gvt.c
diff --git a/devicemodel/hw/pci/core.c b/devicemodel/hw/pci/core.c
index 9527d66d2..d6963eb4d 100644
--- a/devicemodel/hw/pci/core.c
+++ b/devicemodel/hw/pci/core.c
@@ -2074,10 +2074,12 @@ pci_lintr_deassert(struct pci_vdev *dev)
return;
}

+ printf("%s dev_name: %s\n", __func__, dev->name);
pthread_mutex_lock(&dev->lintr.lock);
if (dev->lintr.state == ASSERTED) {
dev->lintr.state = IDLE;
pci_irq_deassert(dev);
+ printf("%s dev_name: %s pci_irq_deassert!\n", __func__, dev->name);
} else if (dev->lintr.state == PENDING)
dev->lintr.state = IDLE;
pthread_mutex_unlock(&dev->lintr.lock);
diff --git a/devicemodel/hw/pci/virtio/vhost.c b/devicemodel/hw/pci/virtio/vhost.c
index a289fca7d..1a90421b2 100644
--- a/devicemodel/hw/pci/virtio/vhost.c
+++ b/devicemodel/hw/pci/virtio/vhost.c
@@ -18,6 +18,7 @@
#include <unistd.h>
#include <pthread.h>
#include <linux/vhost.h>
+#include <string.h>

#include "dm.h"
#include "pci_core.h"
@@ -25,7 +26,7 @@
#include "vmmapi.h"
#include "vhost.h"

-static int vhost_debug;
+static int vhost_debug = 1;
#define LOG_TAG "vhost: "
#define DPRINTF(fmt, args...) \
do { if (vhost_debug) pr_dbg(LOG_TAG fmt, ##args); } while (0)
@@ -128,6 +129,20 @@ vhost_kernel_set_vring_busyloop_timeout(struct vhost_dev *vdev,
#endif
}

+static int
+vsock_set_running(struct vhost_dev *vdev, uint64_t features)
+{
+ return vhost_kernel_ioctl(vdev, VHOST_VSOCK_SET_RUNNING, &features);
+}
+
+static int
+vhost_vsock_set_guest_cid(struct vhost_dev *vdev,
+ uint64_t guest_cid)
+{
+ return vhost_kernel_ioctl(vdev,
+ VHOST_VSOCK_SET_GUEST_CID, &guest_cid);
+}
+
static int
vhost_kernel_set_features(struct vhost_dev *vdev,
uint64_t features)
@@ -142,7 +157,7 @@ vhost_kernel_get_features(struct vhost_dev *vdev,
return vhost_kernel_ioctl(vdev, VHOST_GET_FEATURES, features);
}

-static int
+int
vhost_kernel_set_owner(struct vhost_dev *vdev)
{
return vhost_kernel_ioctl(vdev, VHOST_SET_OWNER, NULL);
@@ -174,8 +189,8 @@ vhost_eventfd_test_and_clear(int fd)
* vhost_vq_init()).
*/
rc = read(fd, &count, sizeof(count));
- DPRINTF("read eventfd, rc = %d, errno = %d, count = %ld\n",
- rc, errno, count);
+ DPRINTF("read eventfd, rc = %d, errno = %d, count = %ld, str:%s\n",
+ rc, errno, count, strerror(errno));
return rc > 0 ? 1 : 0;
}

@@ -239,11 +254,11 @@ vhost_vq_register_eventfd(struct vhost_dev *vdev,
ioeventfd.flags |= (ACRN_IOEVENTFD_FLAG_DATAMATCH |
ACRN_IOEVENTFD_FLAG_PIO);
}
-
ioeventfd.fd = vq->kick_fd;
DPRINTF("[ioeventfd: %d][0x%lx@%d][flags: 0x%x][data: 0x%lx]\n",
ioeventfd.fd, ioeventfd.addr, ioeventfd.len,
ioeventfd.flags, ioeventfd.data);
+ printf("Before vm_ioeventfd!\n");
rc = vm_ioeventfd(vdev->base->dev->vmctx, &ioeventfd);
if (rc < 0) {
WPRINTF("vm_ioeventfd failed rc = %d, errno = %d\n",
@@ -251,6 +266,7 @@ vhost_vq_register_eventfd(struct vhost_dev *vdev,
return -1;
}

+ printf("Before &vdev->base->dev->msix.table[vqi->msix_idx:%d]\n", vqi->msix_idx);
/* register irqfd for notify */
mte = &vdev->base->dev->msix.table[vqi->msix_idx];
msi.msi_addr = mte->addr;
@@ -364,10 +380,8 @@ vhost_vq_start(struct vhost_dev *vdev, int idx)
vqi = &vdev->base->queues[q_idx];
vq = &vdev->vqs[idx];

- /* clear kick_fd and call_fd */
vhost_eventfd_test_and_clear(vq->kick_fd);
vhost_eventfd_test_and_clear(vq->call_fd);
-
/* register ioeventfd & irqfd */
rc = vhost_vq_register_eventfd(vdev, idx, true);
if (rc < 0) {
@@ -501,6 +515,7 @@ vhost_set_mem_table(struct vhost_dev *vdev)
if (ctx->highmem > 0)
nregions++;

+ printf("vhost_set_mem_table nregions :%d!\n", nregions);
mem = calloc(1, sizeof(struct vhost_memory) +
sizeof(struct vhost_memory_region) * nregions);
if (!mem) {
@@ -547,6 +562,67 @@ vhost_set_mem_table(struct vhost_dev *vdev)
return 0;
}

+int
+vhost_vsock_set_running(struct vhost_vsock *vh_sock, int start)
+{
+ struct vhost_vsock *vhvsock = vh_sock;
+ int ret;
+
+ printf("vsock_set_running!\n");
+ ret = vsock_set_running(&vhvsock->vdev, start);
+ if (ret < 0) {
+ return -errno;
+ }
+ return 0;
+}
+
+int
+vhost_vsock_start(struct vhost_vsock *vhvsock)
+{
+ int rc;
+
+ if (!vhvsock->vhost_started)
+ printf("Start the vsock!\n");
+ if (vhvsock->vhost_started) {
+ printf("vhost vsock already started!\n");
+ return 0;
+ }
+
+ printf("Start vhost dev!\n");
+ rc = vhost_dev_start(&vhvsock->vdev);
+ if (rc < 0) {
+ printf("vhost_dev_start failed\n");
+ goto fail;
+ }
+
+ rc = vhost_vsock_set_running(vhvsock, 1);
+ if (rc < 0) {
+ printf("vhost_vsock_set_running %d\n", rc);
+ goto fail;
+ }
+
+ vhvsock->vhost_started = true;
+ printf("vhost_dev_start return!!\n");
+ return 0;
+fail:
+ return -1;
+}
+
+int
+vhost_vsock_guest_cid(struct vhost_vsock *vhsock, uint64_t gcid)
+{
+
+ int rc;
+
+ rc = vhost_vsock_set_guest_cid(&vhsock->vdev, gcid);
+
+ if (rc < 0) {
+ printf("vhost_vsock_set_guest_cid return %d!\n", rc);
+ return -1;
+ }
+ return 0;
+}
+
/**
* @brief vhost_dev initialization.
*
@@ -577,28 +653,29 @@ vhost_dev_init(struct vhost_dev *vdev,

/* sanity check */
if (!base || !base->queues || !base->vops) {
- WPRINTF("virtio_base is not initialized\n");
+ printf("virtio_base is not initialized\n");
goto fail;
}

if (!vdev->vqs || vdev->nvqs == 0) {
- WPRINTF("virtqueue is not initialized\n");
+ printf("virtqueue is not initialized\n");
goto fail;
}

if (vq_idx + vdev->nvqs > base->vops->nvq) {
- WPRINTF("invalid vq_idx: %d\n", vq_idx);
+ printf("invalid vq_idx: %d\n", vq_idx);
goto fail;
}

vhost_kernel_init(vdev, base, fd, vq_idx, busyloop_timeout);
-
rc = vhost_kernel_get_features(vdev, &features);
+ printf("vhost_get_features %ld\n", features);
if (rc < 0) {
- WPRINTF("vhost_get_features failed\n");
+ printf("vhost_get_features failed\n");
goto fail;
}

+ printf("vsock debug nvqs:%d!\n", vdev->nvqs);
for (i = 0; i < vdev->nvqs; i++) {
rc = vhost_vq_init(vdev, i);
if (rc < 0)
@@ -617,7 +694,11 @@ vhost_dev_init(struct vhost_dev *vdev,
* vhost_features), they should be disabled in device_caps,
* which expose as virtio host_features for virtio FE driver.
*/
+ printf("vhost_features: %ld features %ld\n",
+ vhost_features, features);
vdev->base->device_caps &= ~(vhost_features ^ features);
+ printf("vdev->base->device_caps: %ld!\n",
+ vdev->base->device_caps);
vdev->started = false;

return 0;
@@ -668,8 +749,10 @@ vhost_dev_start(struct vhost_dev *vdev)
uint64_t features;
int i, rc;

- if (vdev->started)
+ if (vdev->started) {
+ printf("xxxx vhost_dev_start !\n");
return 0;
+ }

/* sanity check */
if (!vdev->base || !vdev->base->queues || !vdev->base->vops) {
@@ -677,12 +760,6 @@ vhost_dev_start(struct vhost_dev *vdev)
goto fail;
}

- if ((vdev->base->status & VIRTIO_CONFIG_S_DRIVER_OK) == 0) {
- WPRINTF("status error 0x%x\n", vdev->base->status);
- goto fail;
- }
-
- /* only msix is supported now */
if (!pci_msix_enabled(vdev->base->dev)) {
WPRINTF("only msix is supported\n");
goto fail;
@@ -697,12 +774,13 @@ vhost_dev_start(struct vhost_dev *vdev)
/* set vhost internal features */
features = (vdev->base->negotiated_caps & vdev->vhost_features) |
vdev->vhost_ext_features;
+ printf("vhost_kernel_set_features %ld, negotiated_caps:%ld!\n", features, vdev->base->negotiated_caps);
rc = vhost_kernel_set_features(vdev, features);
if (rc < 0) {
WPRINTF("set_features failed\n");
goto fail;
}
- DPRINTF("set_features: 0x%lx\n", features);
+ printf("set_features: 0x%lx\n", features);

/* set memory table */
rc = vhost_set_mem_table(vdev);
@@ -725,13 +803,13 @@ vhost_dev_start(struct vhost_dev *vdev)
}
}

+ printf("Before start host vq !\n");
/* start vhost virtqueue */
for (i = 0; i < vdev->nvqs; i++) {
rc = vhost_vq_start(vdev, i);
if (rc < 0)
goto fail_vq;
}
-
vdev->started = true;
return 0;

@@ -754,10 +832,7 @@ fail:
int
vhost_dev_stop(struct vhost_dev *vdev)
{
- int i, rc = 0;
-
- for (i = 0; i < vdev->nvqs; i++)
- vhost_vq_stop(vdev, i);
+ int rc = 0;

/* the following are done by this ioctl:
* 1) resources of the vhost dev are freed
@@ -808,3 +883,4 @@ fail:

return -1;
}
+
diff --git a/devicemodel/hw/pci/virtio/vhost_vsock.c b/devicemodel/hw/pci/virtio/vhost_vsock.c
new file mode 100644
index 000000000..38062d3e2
--- /dev/null
+++ b/devicemodel/hw/pci/virtio/vhost_vsock.c
@@ -0,0 +1,319 @@
+/*-
+ * Copyright (c) 2011 NetApp, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY NETAPP, INC ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL NETAPP, INC OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+#include <sys/uio.h>
+#include <net/ethernet.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <openssl/md5.h>
+#include <pthread.h>
+#include <sys/ioctl.h>
+#include <sys/errno.h>
+#include <net/if.h>
+#include <linux/if_tun.h>
+#include <sys/socket.h>
+
+#include "dm.h"
+#include "pci_core.h"
+#include "mevent.h"
+#include "virtio.h"
+#include "vhost.h"
+#include "dm_string.h"
+
+struct virtio_vsock_hdr {
+ uint64_t src_cid;
+ uint64_t dst_cid;
+ uint32_t src_port;
+ uint32_t dst_port;
+ uint32_t len;
+ uint16_t type;
+ uint16_t op;
+ uint32_t flags;
+ uint32_t buf_alloc;
+ uint32_t fwd_cnt;
+}__attribute__((packed));
+
+#define VIRTIO_VSOCK_RINGSZ 1024
+#define VIRTIO_VSOCK_MAXSEGS 256
+
+struct virtio_vsock_config {
+ uint64_t guest_cid;
+}__attribute__((packed));
+
+struct virtio_vsock {
+ struct virtio_base base;
+ pthread_mutex_t mtx;
+ struct virtio_vq_info queues[VHOST_VSOCK_MAXQ];
+ struct virtio_vsock_config config;
+ struct vhost_vsock *vhost_vsock;
+ volatile int resetting; /* set and checked outside lock */
+ volatile int closing; /* stop the tx i/o thread */
+
+ int rx_ready;
+ uint64_t features;
+};
+
+static int
+virtio_vsock_cfgwrite(void *vdev, int offset, int size, uint32_t value)
+{
+ struct virtio_vsock *vivsock = vdev;
+ void *ptr;
+
+ if (offset < 6) {
+ if (offset + size > 6) {
+ return -1;
+ }
+ ptr = &vivsock->config.guest_cid;
+ memcpy(ptr, &value, size);
+ } else {
+ /* silently ignore other writes */
+ WPRINTF(("vsock: write to readonly reg %d\n\r", offset));
+ }
+
+ return 0;
+}
+
+static int
+vhost_vsock_stop(struct vhost_vsock *vhost_vsock)
+{
+ int rc = 0;
+
+ vhost_net_set_backend(&vhost_vsock->vdev, -1);
+
+ rc = vhost_dev_stop(&vhost_vsock->vdev);
+ if (rc < 0)
+ WPRINTF(("vhost_vsock_stop failed\n"));
+ vhost_vsock->vhost_started = false;
+ return rc;
+}
+
+static void
+virtio_vsock_set_status(void *vdev, uint64_t status)
+{
+ struct virtio_vsock *vivsock = vdev;
+ bool should_start = status & VIRTIO_CONFIG_S_DRIVER_OK;
+ int rc;
+
+ if (!vivsock->vhost_vsock) {
+ WPRINTF(("virtio_vsock_set_status vhost is NULL!\n"));
+ return;
+ }
+
+ if (should_start) {
+ rc = vhost_vsock_start(vivsock->vhost_vsock);
+ if (rc < 0) {
+ WPRINTF(("vhost_vsock_start failed!\n"));
+ return;
+ }
+ } else if (vivsock->vhost_vsock->vhost_started &&
+ ((status & VIRTIO_CONFIG_S_DRIVER_OK) == 0)) {
+ vhost_vsock_stop(vivsock->vhost_vsock);
+ }
+}
+
+static void
+virtio_vsock_apply_neg(void *vdev, uint64_t negotiated_features)
+{
+ struct virtio_vsock *vivsock = vdev;
+
+ vivsock->features = negotiated_features;
+}
+
+static int
+virtio_vsock_read_cfg(void *vdev, int offset, int size, uint32_t *retval)
+{
+ struct virtio_vsock *vivsock = vdev;
+ void *ptr;
+
+ ptr = (uint8_t *)&vivsock->config + offset;
+ memcpy(retval, ptr, size);
+
+ return 0;
+}
+
+static void
+virtio_vsock_reset(void *vdev)
+{
+ struct virtio_vsock *vivsock = vdev;
+
+ vivsock->resetting = 1;
+ vivsock->rx_ready = 0;
+
+ /* now reset rings, MSI-X vectors, and negotiated capabilities */
+ virtio_reset_dev(&vivsock->base);
+
+ vivsock->resetting = 0;
+ vivsock->closing = 0;
+}
+
+static struct virtio_ops virtio_vsock_ops = {
+ "vhost-vsock", /* our name */
+ VHOST_VSOCK_MAXQ, /* we currently support 2 virtqueues */
+ sizeof(struct virtio_vsock_config), /* config reg size */
+ virtio_vsock_reset, /* reset */
+ NULL, /* device-wide qnotify -- not used */
+ virtio_vsock_read_cfg, /* read PCI config */
+ virtio_vsock_cfgwrite, /* write PCI config */
+ virtio_vsock_apply_neg, /* apply negotiated features */
+ virtio_vsock_set_status, /* called on guest set status */
+};
+
+static struct vhost_vsock *
+vhost_vsock_init(struct virtio_base *base, int vq_idx)
+{
+ struct vhost_vsock *vhvsock = NULL;
+ uint64_t vhost_features = VHOST_FEATURES;
+ uint32_t busyloop_timeout = 0;
+ int rc;
+
+ vhvsock = calloc(1, sizeof(struct vhost_vsock));
+ if (!vhvsock) {
+ WPRINTF(("vhost init out of memory\n"));
+ goto fail;
+ }
+
+ /* pre-init before calling vhost_dev_init */
+ vhvsock->vdev.nvqs = 2;
+ vhvsock->vdev.vqs = vhvsock->vqs;
+ vhvsock->vhost_fd = open("/dev/vhost-vsock", O_RDWR);;
+ if (vhvsock->vhost_fd < 0) {
+ WPRINTF(("Open vhost-vsock fail!\n"));
+ goto fail;
+ }
+ rc = fcntl(vhvsock->vhost_fd, F_GETFL);
+ if (rc == -1) {
+ WPRINTF(("fcntl vhost node fail!\n"));
+ goto fail;
+ }
+ if (fcntl(vhvsock->vhost_fd, F_SETFL, rc | O_NONBLOCK) == -1) {
+ WPRINTF(("fcntl set NONBLOCK fail!\n"));
+ goto fail;
+ }
+
+ rc = vhost_dev_init(&vhvsock->vdev, base, vhvsock->vhost_fd, vq_idx,
+ vhost_features, 0, busyloop_timeout);
+ if (rc < 0) {
+ WPRINTF(("vhost_dev_init failed\n"));
+ goto fail;
+ }
+
+ return vhvsock;
+fail:
+ if (vhvsock)
+ free(vhvsock);
+ return NULL;
+}
+
+static void
+vhost_vsock_handle_output(void *vdev, struct virtio_vq_info *vq)
+{
+ /*do nothing*/
+}
+
+static int
+virtio_vhost_vsock_init(struct vmctx *ctx, struct pci_vdev *dev, char *opts)
+{
+ struct virtio_vsock *vivsock;
+ int rc, val;
+ pthread_mutexattr_t attr;
+ char *devopts = NULL;
+
+ vivsock = calloc(1, sizeof(struct virtio_vsock));
+ if (!vivsock) {
+ WPRINTF(("virtio_vosck: malloc struct return NULL!"));
+ return -1;
+ }
+
+ rc = pthread_mutexattr_init(&attr);
+ if (rc)
+ WPRINTF(("virtio_vsock: mutexattr init failed with erro %d\n", rc));
+ rc = pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
+ if (rc)
+ WPRINTF(("virtio_vsock: mutexattr_settype failed with error %d\n", rc));
+ rc = pthread_mutex_init(&vivsock->mtx, &attr);
+ if (rc)
+ WPRINTF(("virtio_vsock: pthread_mutexattr_init failed with error %d\n", rc));
+
+ if (opts != NULL) {
+ devopts = strdup(opts);
+ if (!devopts) {
+ WPRINTF(("virtio_vsock: The vsock parameter is NULL!\n"));
+ free(vivsock);
+ return -1;
+ }
+ if (!strncmp(devopts, "guest_cid=", 10)) {
+ strsep(&devopts, "=");
+ dm_strtoi(devopts, NULL, 10, &val);
+ vivsock->config.guest_cid = val;
+ }
+ }
+ virtio_linkup(&vivsock->base, &virtio_vsock_ops, vivsock, dev, vivsock->queues, BACKEND_VHOST);
+ vivsock->base.mtx = &vivsock->mtx;
+ vivsock->base.device_caps = (1UL << VIRTIO_F_VERSION_1) | VHOST_FEATURES;
+
+ vivsock->queues[VHOST_VSOCK_RXQ].qsize = VHOST_VSOCK_QUEUE_SIZE;
+ vivsock->queues[VHOST_VSOCK_RXQ].notify = vhost_vsock_handle_output;
+ vivsock->queues[VHOST_VSOCK_TXQ].qsize = VHOST_VSOCK_QUEUE_SIZE;
+ vivsock->queues[VHOST_VSOCK_TXQ].notify = vhost_vsock_handle_output;
+ vivsock->queues[VHOST_VSOCK_CTLQ].qsize = VHOST_VSOCK_QUEUE_SIZE;
+ vivsock->queues[VHOST_VSOCK_CTLQ].notify = vhost_vsock_handle_output;
+
+ /* initialize config space */
+ pci_set_cfgdata16(dev, PCIR_DEVICE, 0x1040 + VIRTIO_VHOST_VSOCK);
+ pci_set_cfgdata16(dev, PCIR_VENDOR, VIRTIO_VENDOR);
+ pci_set_cfgdata8(dev, PCIR_CLASS, PCIC_NETWORK);
+ pci_set_cfgdata16(dev, PCIR_REVID, 1);
+ virtio_set_modern_bar(&vivsock->base, false);
+
+ vivsock->vhost_vsock = vhost_vsock_init(&vivsock->base, 0);
+ rc = vhost_vsock_guest_cid(vivsock->vhost_vsock, vivsock->config.guest_cid);
+ WPRINTF(("vhost_vsock_guest_cid rc %d!\n", rc));
+
+ if (virtio_interrupt_init(&vivsock->base, virtio_uses_msix())) {
+ if (vivsock)
+ free(vivsock);
+ return -1;
+ }
+ return 0;
+}
+static void
+virtio_vhost_vsock_deinit(struct vmctx *ctx, struct pci_vdev *dev, char *opts)
+{
+ return;
+}
+
+struct pci_vdev_ops pci_ops_vhost_vsock = {
+ .class_name = "vhost-vsock",
+ .vdev_init = virtio_vhost_vsock_init,
+ .vdev_deinit = virtio_vhost_vsock_deinit,
+ .vdev_barwrite = virtio_pci_write,
+ .vdev_barread = virtio_pci_read
+};
+DEFINE_PCI_DEVTYPE(pci_ops_vhost_vsock);
diff --git a/devicemodel/hw/pci/virtio/virtio.c b/devicemodel/hw/pci/virtio/virtio.c
index 88a5f1a5e..91caef72b 100644
--- a/devicemodel/hw/pci/virtio/virtio.c
+++ b/devicemodel/hw/pci/virtio/virtio.c
@@ -1161,6 +1161,7 @@ virtio_set_modern_mmio_bar(struct virtio_base *base, int barnum)
}

base->modern_mmio_bar_idx = barnum;
+ printf("%s barnum: %d\n", __func__, barnum);
return 0;
}

@@ -1221,8 +1222,10 @@ virtio_set_modern_bar(struct virtio_base *base, bool use_notify_pio)

vops = base->vops;

- if (!vops || (base->device_caps & (1UL << VIRTIO_F_VERSION_1)) == 0)
+ if (!vops || (base->device_caps & (1UL << VIRTIO_F_VERSION_1)) == 0) {
+ printf("Virtio_set_modern_bar start !\n");
return -1;
+ }

if (use_notify_pio)
rc = virtio_set_modern_pio_bar(base,
@@ -1341,6 +1344,7 @@ virtio_common_cfg_read(struct pci_vdev *dev, uint64_t offset, int size)
value = base->curq < vops->nvq ?
base->queues[base->curq].msix_idx :
VIRTIO_MSI_NO_VECTOR;
+ printf("%s value: %d\t\n", __func__, value);
break;
case VIRTIO_PCI_COMMON_Q_ENABLE:
value = base->curq < vops->nvq ?
@@ -1387,6 +1391,7 @@ virtio_common_cfg_write(struct pci_vdev *dev, uint64_t offset, int size,
struct virtio_ops *vops;
const struct config_reg *cr;
const char *name;
+ uint64_t low_features, high_features = 0;

vops = base->vops;
name = vops->name;
@@ -1421,9 +1426,19 @@ virtio_common_cfg_write(struct pci_vdev *dev, uint64_t offset, int size,
break;
if (base->driver_feature_select < 2) {
value &= 0xffffffff;
+ /*
base->negotiated_caps =
(value << (base->driver_feature_select * 32))
& base->device_caps;
+ */
+ if (base->driver_feature_select == 0) {
+ low_features = base->device_caps & value;
+ base->negotiated_caps |= low_features;
+ } else {
+ high_features = (value << (base->driver_feature_select * 32)) & base->device_caps;
+ base->negotiated_caps |= high_features;
+ }
+ printf("%s negotiated_caps:%ld\n", __func__, base->negotiated_caps);
if (vops->apply_features)
(*vops->apply_features)(DEV_STRUCT(base),
base->negotiated_caps);
@@ -1433,11 +1448,14 @@ virtio_common_cfg_write(struct pci_vdev *dev, uint64_t offset, int size,
base->msix_cfg_idx = value;
break;
case VIRTIO_PCI_COMMON_STATUS:
+ printf("dev->name :%s VIRTIO_PCI_COMMON_STATUS!\n", dev->name);
base->status = value & 0xff;
if (vops->set_status)
(*vops->set_status)(DEV_STRUCT(base), value);
- if ((base->status == 0) && (vops->reset))
+ if ((base->status == 0) && (vops->reset)) {
+ printf("Reset the %s!\n", dev->name);
(*vops->reset)(DEV_STRUCT(base));
+ }
/* TODO: virtio poll mode for modern devices */
break;
case VIRTIO_PCI_COMMON_Q_SELECT:
@@ -1459,6 +1477,7 @@ virtio_common_cfg_write(struct pci_vdev *dev, uint64_t offset, int size,
goto bad_qindex;
vq = &base->queues[base->curq];
vq->msix_idx = value;
+ printf("%s msix_idx: %d!\n", __func__, vq->msix_idx);
break;
case VIRTIO_PCI_COMMON_Q_ENABLE:
if (base->curq >= vops->nvq)
@@ -1857,6 +1876,8 @@ virtio_pci_write(struct vmctx *ctx, int vcpu, struct pci_vdev *dev,
return;
}

+ if (!strcmp(dev->name, "vhost-vsock"))
+ printf("virtio_pci_write %d\n", baridx);
if (baridx == base->modern_mmio_bar_idx) {
virtio_pci_modern_mmio_write(ctx, vcpu, dev, baridx,
offset, size, value);
diff --git a/devicemodel/include/vhost.h b/devicemodel/include/vhost.h
index a1e893da1..14fe263bb 100644
--- a/devicemodel/include/vhost.h
+++ b/devicemodel/include/vhost.h
@@ -78,6 +78,27 @@ struct vhost_dev {
bool started;
};

+#define VHOST_VSOCK_RXQ 0
+#define VHOST_VSOCK_TXQ 1
+#define VHOST_VSOCK_CTLQ 2 /* NB: not yet supported */
+
+#define VHOST_VSOCK_MAXQ 3
+
+#define VHOST_VSOCK_QUEUE_SIZE 128
+#define VHOST_F_LOG_ALL 26
+
+#define VHOST_FEATURES \
+ (1ULL << VIRTIO_F_NOTIFY_ON_EMPTY) | (1ULL << VIRTIO_RING_F_INDIRECT_DESC) | \
+ (1ULL << VIRTIO_RING_F_EVENT_IDX) | (1ULL << VHOST_F_LOG_ALL) | \
+ (1ULL << VIRTIO_F_ANY_LAYOUT) | (1ULL << VIRTIO_F_VERSION_1)
+
+struct vhost_vsock {
+ struct vhost_dev vdev;
+ struct vhost_vq vqs[VHOST_VSOCK_MAXQ];
+ int vhost_fd;
+ bool vhost_started;
+};
+
/**
* @brief vhost_dev initialization.
*
@@ -147,4 +168,8 @@ int vhost_net_set_backend(struct vhost_dev *vdev, int backend_fd);
/**
* @}
*/
+int vhost_vsock_start(struct vhost_vsock *vhvsock);
+int vhost_vsock_guest_cid(struct vhost_vsock *vhsock, uint64_t guest_cid);
+int vhost_vsock_set_running(struct vhost_vsock *vh_sock, int start);
+int vhost_kernel_set_owner(struct vhost_dev *vdev);
#endif
diff --git a/devicemodel/include/virtio.h b/devicemodel/include/virtio.h
index 6581b5cfd..7324e309f 100644
--- a/devicemodel/include/virtio.h
+++ b/devicemodel/include/virtio.h
@@ -193,6 +193,8 @@ enum {
#define VIRTIO_TYPE_SCSI 8
#define VIRTIO_TYPE_9P 9
#define VIRTIO_TYPE_INPUT 18
+#define VIRTIO_TYPE_VSOCK 19
+

/*
* ACRN virtio device types
@@ -219,6 +221,7 @@ enum {
#define VIRTIO_DEV_BLOCK 0x1001
#define VIRTIO_DEV_CONSOLE 0x1003
#define VIRTIO_DEV_RANDOM 0x1005
+#define VIRTIO_VHOST_VSOCK 19

/*
* ACRN virtio device IDs
--
2.25.1






Re: [PATCH 1/3] config-tools: support absolute path

Conghui Chen
 

-----Original Message-----
From: Mao, Junjie <junjie.mao@...>
Sent: Friday, April 22, 2022 4:21 PM
To: Chen, Conghui <conghui.chen@...>
Cc: acrn-dev@...
Subject: Re: [acrn-dev] [PATCH 1/3] config-tools: support absolute path

"Conghui Chen" <conghui.chen@...> writes:

1. Support absolute path for scenario file.
2. Use the scenario xml file name as scenario name, but if it is
'scenario.xml', use the upper level directory name.
e.g.
SCENARIO=<pathxxx>/shared/scenario.xml
Then scenario name would be 'shared'.

3. Change 'realpath' to 'abspath' as we should keep the original path
for scenario file even it is a link file. This will make sure the
scenario name is always consistent with file set in 'SCENARIO='.

Signed-off-by: Conghui <conghui.chen@...>
---
Makefile | 4 ++--
hypervisor/scripts/makefile/config.mk | 15 ++++++++++++---
2 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/Makefile b/Makefile
index 2a961d9b2..94e94ac37 100644
--- a/Makefile
+++ b/Makefile
@@ -46,7 +46,7 @@ ifneq ($(BOARD_FILE)$(SCENARIO_FILE),)
endif

override BOARD := $(realpath $(BOARD_FILE))
- override SCENARIO := $(realpath $(SCENARIO_FILE))
+ override SCENARIO := $(abspath $(SCENARIO_FILE))
else
# BOARD/SCENARIO pointing to XML files must be converted to absolute
paths before being passed to hypervisor/Makefile
# because paths relative to acrn-hypervisor/ are typically invalid when
relative to acrn-hypervisor/Makefile
@@ -54,7 +54,7 @@ else
override BOARD := $(realpath $(BOARD))
endif
ifneq ($(realpath $(SCENARIO)),)
- override SCENARIO := $(realpath $(SCENARIO))
+ override SCENARIO := $(abspath $(SCENARIO))
endif
endif

diff --git a/hypervisor/scripts/makefile/config.mk
b/hypervisor/scripts/makefile/config.mk
index d31e8a426..3ce42b342 100644
--- a/hypervisor/scripts/makefile/config.mk
+++ b/hypervisor/scripts/makefile/config.mk
@@ -54,7 +54,16 @@ define determine_config =
ifneq ($($(1)),)
ifneq ($(realpath $($(1))),)
override $(1)_FILE := $($(1))
- override $(1) := $$(shell xmllint --xpath 'string(/acrn-config/@$(shell
echo $(1) | tr A-Z a-z))' $$($(1)_FILE))
+ ifneq (SCENARIO, $(1))
Why do we need this condition?
Because we need to distinguish between BOARD and SCENARIO, BOARD use the 'board' in xml. But SCENARIO use the xml path.


+ override $(1) := $$(shell xmllint --xpath 'string(/acrn-config/@$(shell
echo $(1) | tr A-Z a-z))' $$($(1)_FILE))
+ else
+ scenario_name := $(subst .xml,,$(notdir $($(1))))
+ ifneq ("$$(scenario_name)", "scenario")
+ override $(1) := $$(scenario_name)
+ else
+ override $(1) := $(notdir $(abspath $(dir $($(1)))))
+ endif
The block above can be simplified using the `if` function (the number of
`$`s may need a bit tweak):

override $(1) := $$(if $$(subst
scenario,,$$(scenario_name)),$$(scenario_name),$(notdir $(abspath $(dir
$($(1))))))
Thumbs up!
Will change it, thanks.

Regards,
Conghui.


--
Best Regards
Junjie Mao

+ endif
else
override $(1)_FILE :=
$(HV_PREDEFINED_DATA_DIR)/$$(BOARD)/$$($(1)).xml
ifeq ($$(realpath $$($(1)_FILE)),)
@@ -201,11 +210,11 @@ $(HV_BOARD_XML):
$(HV_SCENARIO_XML):
@if [ ! -f $(HV_SCENARIO_XML) ]; then \
if [ -f $(SCENARIO_FILE) ]; then \
- echo "Scenario XML is being fetched from $(realpath
$(SCENARIO_FILE))"; \
+ echo "Scenario XML is being fetched from $(abspath
$(SCENARIO_FILE))"; \
mkdir -p $(dir $(HV_SCENARIO_XML)); \
python3
$(HV_CONFIG_TOOL_DIR)/scenario_config/default_populator.py
$(SCENARIO_FILE) $(HV_SCENARIO_XML); \
if [ -z $$(xmllint --xpath 'string(//@scenario)'
$(HV_SCENARIO_XML)) ]; then \
- sed "s#<acrn-config#<acrn-config
scenario=\"$(subst .xml,,$(notdir $(SCENARIO_FILE)))\"#g" -i
$(HV_SCENARIO_XML); \
+ sed "s#<acrn-config#<acrn-config scenario=\"$(SCENARIO)\"#g" -i
$(HV_SCENARIO_XML); \
fi; \
else \
echo "No pre-defined scenario available at $(SCENARIO_FILE)"; \


Re: [PATCH 3/3] config-tools: ignore the scenario and board field

Junjie Mao
 

"Conghui Chen" <conghui.chen@...> writes:

Ignore the "scenario" and "board" field in <scenario>.xml:
<acrn-config board="whl-ipc-i5" scenario="shared">

With this patch, we do not need to remove "board" and "scenario" from
all the scenario xmls under misc/config_tools/data/

Signed-off-by: Conghui <conghui.chen@...>
Reviewed-by: Junjie Mao <junjie.mao@...>

That said, upgrading the existing XMLs is still necessary. Otherwise,
the next time someone changes the schema and uses the upgrader to
upgrade those XML files, they will include the deletion of such
attributes in their patch, which could be confusing.

---
hypervisor/scripts/makefile/config.mk | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/hypervisor/scripts/makefile/config.mk b/hypervisor/scripts/makefile/config.mk
index 3ce42b342..73c5aeeef 100644
--- a/hypervisor/scripts/makefile/config.mk
+++ b/hypervisor/scripts/makefile/config.mk
@@ -213,9 +213,7 @@ $(HV_SCENARIO_XML):
echo "Scenario XML is being fetched from $(abspath $(SCENARIO_FILE))"; \
mkdir -p $(dir $(HV_SCENARIO_XML)); \
python3 $(HV_CONFIG_TOOL_DIR)/scenario_config/default_populator.py $(SCENARIO_FILE) $(HV_SCENARIO_XML); \
- if [ -z $$(xmllint --xpath 'string(//@scenario)' $(HV_SCENARIO_XML)) ]; then \
- sed "s#<acrn-config#<acrn-config scenario=\"$(SCENARIO)\"#g" -i $(HV_SCENARIO_XML); \
- fi; \
+ sed "s#<acrn-config.*#<acrn-config scenario=\"$(SCENARIO)\" >#g" -i $(HV_SCENARIO_XML); \
else \
echo "No pre-defined scenario available at $(SCENARIO_FILE)"; \
echo "Try setting another predefined BOARD or SCENARIO or specifying a scenario XML file"; \

1321 - 1340 of 37102