pci: add domain identifier

- Add identifier for PCI domain.
- The field is declared as "int"; refer Linux source:
include/asm-x86_64/pci.h
- Legacy domain field used to be 16-bits.

Signed-off-by: Aditya Basu <mitthu@google.com>
Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
diff --git a/kern/arch/x86/pci.c b/kern/arch/x86/pci.c
index ed90424..600cdab 100644
--- a/kern/arch/x86/pci.c
+++ b/kern/arch/x86/pci.c
@@ -202,7 +202,7 @@
 {
 	physaddr_t paddr;
 
-	paddr = acpi_pci_get_mmio_cfg_addr(0 /* segment for legacy PCI enum*/,
+	paddr = acpi_pci_get_mmio_cfg_addr(pcidev->domain,
 					  pcidev->bus, pcidev->dev,
 					  pcidev->func);
 	if (!paddr)
@@ -243,6 +243,9 @@
 				/* we don't need to lock it til we post the
 				 * pcidev to the list*/
 				spinlock_init_irqsave(&pcidev->lock);
+				/* we only discover domain 0 during legacy
+				 * PCI enumeration */
+				pcidev->domain = 0;
 				pcidev->bus = i;
 				pcidev->dev = j;
 				pcidev->func = k;
diff --git a/kern/arch/x86/pci.h b/kern/arch/x86/pci.h
index 55bfb93..9c2ab71 100644
--- a/kern/arch/x86/pci.h
+++ b/kern/arch/x86/pci.h
@@ -175,6 +175,7 @@
 	void				*dev_data; /* device private pointer */
 	struct device			device;
 	bool				in_use;	/* prevent double discovery */
+	int				domain; /* legacy size was 16-bits */
 	uint8_t				bus;
 	uint8_t				dev;
 	uint8_t				func;