Skip to content
  • Daniel Henrique Barboza's avatar
    392c2783
    pnv_phb3.c: add unique chassis and slot for pnv_phb3_root_port · 392c2783
    Daniel Henrique Barboza authored
    
    
    When creating a pnv_phb3_root_port using the command line, the first
    root port is created successfully, but the second fails with the
    following error:
    
    qemu-system-ppc64: -device pnv-phb3-root-port,bus=phb3-root.0,id=pcie.3:
    Can't add chassis slot, error -16
    
    This error comes from the realize() function of its parent type,
    rp_realize() from TYPE_PCIE_ROOT_PORT. pcie_chassis_add_slot() fails
    with -EBUSY if there's an existing PCIESlot that has the same
    chassis/slot value, regardless of being in a different bus.
    
    One way to prevent this error is simply set chassis and slot values in
    the command line. However, since phb3 root buses only supports a single
    root port, we can just get an unique chassis/slot value by checking
    which root bus the pnv_phb3_root_port is going to be attached, get the
    equivalent phb3 device and use its chip-id and index values, which are
    guaranteed to be unique.
    
    Signed-off-by: default avatarDaniel Henrique Barboza <danielhb413@gmail.com>
    Message-Id: <20220105212338.49899-2-danielhb413@gmail.com>
    Signed-off-by: default avatarCédric Le Goater <clg@kaod.org>
    392c2783
    pnv_phb3.c: add unique chassis and slot for pnv_phb3_root_port
    Daniel Henrique Barboza authored
    
    
    When creating a pnv_phb3_root_port using the command line, the first
    root port is created successfully, but the second fails with the
    following error:
    
    qemu-system-ppc64: -device pnv-phb3-root-port,bus=phb3-root.0,id=pcie.3:
    Can't add chassis slot, error -16
    
    This error comes from the realize() function of its parent type,
    rp_realize() from TYPE_PCIE_ROOT_PORT. pcie_chassis_add_slot() fails
    with -EBUSY if there's an existing PCIESlot that has the same
    chassis/slot value, regardless of being in a different bus.
    
    One way to prevent this error is simply set chassis and slot values in
    the command line. However, since phb3 root buses only supports a single
    root port, we can just get an unique chassis/slot value by checking
    which root bus the pnv_phb3_root_port is going to be attached, get the
    equivalent phb3 device and use its chip-id and index values, which are
    guaranteed to be unique.
    
    Signed-off-by: default avatarDaniel Henrique Barboza <danielhb413@gmail.com>
    Message-Id: <20220105212338.49899-2-danielhb413@gmail.com>
    Signed-off-by: default avatarCédric Le Goater <clg@kaod.org>
Loading