From: Keir Fraser Date: Fri, 1 Aug 2008 09:06:13 +0000 (+0100) Subject: passthrough: fix flag for expansion rom base address register. X-Git-Tag: xen-3.3.0-rc3~6 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=c67ae8ed894f0d22bfd9064d4ab365a2b1402a66;p=qemu-xen-4.0-testing.git 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 --- 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;