Hi Calvin, Thank you for the patch! Yet something to improve: [auto build test ERROR on net-next/master] url: https://github.com/0day-ci/linux/commits/Calvin-Johnson/ACPI-support-for-dpaa2-driver/20210218-133805 base: https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git 06b334f08b4f0e53be64160392be4c37db28a413 config: i386-randconfig-a013-20210217 (attached as .config) compiler: gcc-9 (Debian 9.3.0-15) 9.3.0 reproduce (this is a W=1 build): # https://github.com/0day-ci/linux/commit/5de2672fd295f915600e7391cea819d3dbe7b642 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Calvin-Johnson/ACPI-support-for-dpaa2-driver/20210218-133805 git checkout 5de2672fd295f915600e7391cea819d3dbe7b642 # save the attached .config to linux build tree make W=1 ARCH=i386 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot All errors (new ones prefixed by >>): ld: drivers/net/phy/mdio_bus.o: in function `fwnode_mdiobus_register_phy': >> drivers/net/phy/mdio_bus.c:132: undefined reference to `phy_device_create' vim +132 drivers/net/phy/mdio_bus.c 109 110 int fwnode_mdiobus_register_phy(struct mii_bus *bus, 111 struct fwnode_handle *child, u32 addr) 112 { 113 struct mii_timestamper *mii_ts = NULL; 114 struct phy_device *phy; 115 bool is_c45 = false; 116 u32 phy_id; 117 int rc; 118 119 if (is_of_node(child)) { 120 mii_ts = of_find_mii_timestamper(to_of_node(child)); 121 if (IS_ERR(mii_ts)) 122 return PTR_ERR(mii_ts); 123 } 124 125 rc = fwnode_property_match_string(child, "compatible", "ethernet-phy-ieee802.3-c45"); 126 if (rc >= 0) 127 is_c45 = true; 128 129 if (is_c45 || fwnode_get_phy_id(child, &phy_id)) 130 phy = get_phy_device(bus, addr, is_c45); 131 else > 132 phy = phy_device_create(bus, addr, phy_id, 0, NULL); 133 if (IS_ERR(phy)) { 134 if (mii_ts) 135 unregister_mii_timestamper(mii_ts); 136 return PTR_ERR(phy); 137 } 138 139 if (is_acpi_node(child)) { 140 phy->irq = bus->irq[addr]; 141 142 /* Associate the fwnode with the device structure so it 143 * can be looked up later. 144 */ 145 phy->mdio.dev.fwnode = child; 146 147 /* All data is now stored in the phy struct, so register it */ 148 rc = phy_device_register(phy); 149 if (rc) { 150 phy_device_free(phy); 151 fwnode_handle_put(phy->mdio.dev.fwnode); 152 return rc; 153 } 154 } else if (is_of_node(child)) { 155 rc = of_mdiobus_phy_device_register(bus, phy, to_of_node(child), addr); 156 if (rc) { 157 if (mii_ts) 158 unregister_mii_timestamper(mii_ts); 159 phy_device_free(phy); 160 return rc; 161 } 162 } 163 164 /* phy->mii_ts may already be defined by the PHY driver. A 165 * mii_timestamper probed via the device tree will still have 166 * precedence. 167 */ 168 if (mii_ts) 169 phy->mii_ts = mii_ts; 170 return 0; 171 } 172 EXPORT_SYMBOL(fwnode_mdiobus_register_phy); 173 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org