Device-to-device (D2D) communications can be underlaid with a cellular infrastructure to increase resource utilization, improve user throughput and extend battery lifetime of user equipment. This paper studies a hybrid D2D and cellular system where D2D transmissions are controlled by the cellular base transceiver stations (BTSs) and use the cellular uplink resource blocks. A two-layer power control algorithm is proposed for the uplink based on interference prices. With inter-cell updates, BTS's alert interferers in other cells and restrain local users' transmit powers according to the interference alerts from neighboring cells; with intra-cell updates, each cell maximizes its sum utility by adjusting the target received power spectral density of cellular users and D2D transmit powers. The proposed algorithm coordinates the D2D and cellular subsystems to maximize the utility of an individual cell, and also coordinates power assignments across cells to maximize the total system utility. Simulation results show that the proposed algorithm achieves high total rate and maintains low interference-over-thermal levels.