Skip to content
  • Jon Derrick's avatar
    PCI: Equalize hotplug memory and io for occupied and empty slots · de3ffa30
    Jon Derrick authored
    
    
    Currently, a hotplug bridge will be given hpmemsize additional memory
    and hpiosize additional io if available, in order to satisfy any future
    hotplug allocation requirements.
    
    These calculations don't consider the current memory/io size of the
    hotplug bridge/slot, so hotplug bridges/slots which have downstream
    devices will be allocated their current allocation in addition to the
    hpmemsize value.
    
    This makes for possibly undesirable results with a mix of unoccupied and
    occupied slots (ex, with hpmemsize=2M):
    
      02:03.0 PCI bridge: <-- Occupied
    	  Memory behind bridge: d6200000-d64fffff [size=3M]
      02:04.0 PCI bridge: <-- Unoccupied
    	  Memory behind bridge: d6500000-d66fffff [size=2M]
    
    This change considers the current allocation size when using the
    hpmemsize/hpiosize parameters to make the reservations predictable for
    the mix of unoccupied and occupied slots:
    
      02:03.0 PCI bridge: <-- Occupied
    	  Memory behind bridge: d6200000-d63fffff [size=2M]
      02:04.0 PCI bridge: <-- Unoccupied
    	  Memory behind bridge: d6400000-d65fffff [size=2M]
    
    Signed-off-by: default avatarJon Derrick <jonathan.derrick@intel.com>
    Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
    de3ffa30