On Tue, Mar 13, 2012 at 05:45:19PM +1300, Alexey Korolev wrote:
Added pci_region_entry structure and list operations to pciinit.c List is filled with entries during pci_check_devices. List is used just for printing space allocation if we were using lists. Next step will resource allocation using mapping functions.
[...]
+struct pci_bus; +struct pci_region_entry {
- struct pci_device *dev;
- int bar;
- u32 base;
- u32 size;
- int is64bit;
- enum pci_region_type type;
- struct pci_bus *this_bus;
- struct pci_bus *parent_bus;
- struct pci_region_entry *next;
- struct pci_region_entry **pprev;
+};
It's fine to introduce a new struct, but a patch that does this should have something like the following in the same patch:
--- a/src/pci.h +++ b/src/pci.h @@ -51,11 +51,6 @@ struct pci_device { u8 prog_if, revision; u8 header_type; u8 secondary_bus; - struct { - u32 addr; - u32 size; - int is64; - } bars[PCI_NUM_REGIONS];
// Local information on device. int have_driver;
And it should compile and work fine after applying just that one patch. That is, you're not introducing a new struct, you're moving the contents from one struct to another. The code is being changed - it's not new code being added and old code being deleted - the patches need to reflect that.
(If it's a pain to move the struct out of struct pci_device at the start, then add your new fields into struct pci_device.bars and use a patch to move the whole thing out of pci.h at the end.)
-Kevin