From c67ae8ed894f0d22bfd9064d4ab365a2b1402a66 Mon Sep 17 00:00:00 2001 From: Keir Fraser Date: Fri, 1 Aug 2008 10:06:13 +0100 Subject: [PATCH] passthrough: fix flag for expansion rom base address register. pt_bar_reg_parse() is called for expansion rom base address register. Currently it returns PT_BAR_FLAG_MEM if bit 0 is 0. It returns PT_BAR_FLAG_IO if bit 0 is 1. But bit 0 in expansion rom base address register is enable bit. If bit 0 is 1 for some reason, it returns PT_BAR_FLAG_IO. Expansion rom is mapped to memory space. It should return PT_BAR_FLAG_MEM. After applying this patch, it returns PT_BAR_FLAG_MEM regardless of bit 0, when it is called for expansion rom base address register. Signed-off-by: Yuji Shimada --- hw/pass-through.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/hw/pass-through.c b/hw/pass-through.c index 1ac1c4c1..7b462344 100644 --- a/hw/pass-through.c +++ b/hw/pass-through.c @@ -1526,6 +1526,13 @@ static int pt_bar_reg_parse( if (!r->size) goto out; + /* for ExpROM BAR */ + if (index == PCI_ROM_SLOT) + { + bar_flag = PT_BAR_FLAG_MEM; + goto out; + } + /* check BAR I/O indicator */ if (d->config[reg->offset] & PCI_BASE_ADDRESS_SPACE_IO) bar_flag = PT_BAR_FLAG_IO; -- 2.39.5