1. A data processing system comprising a first device and a second device interconnected with a point-to-point link and operable to transmit data to each other via the point-to-point link, the first device being operable to provide data credits to the second device which facilitate transmission of the data to the first device via the point-to-point link in a plurality of virtual channels, wherein the data credits correspond to a plurality of buffers in the first device for storing the data, first ones of the data credits being derived from a plurality of shared data credits each of which is operable to facilitate transmission of the data in any of the virtual channels, a first number of the buffers being allocated as shared buffers for use in conjunction with the shared data credits, second ones of the data credits comprising a plurality of dedicated data credits each of which is operable to facilitate transmission of the data in a corresponding one of the virtual channels, a second number of the buffers being allocated to each virtual channel for use in conjunction with the dedicated data credits, wherein the first number of buffers is determined with reference to a first time required to consume data from one of the shared buffers and return a corresponding one of the shared data credits to a shared pool, further wherein the second number of buffers is determined with reference to a second time required to transfer a packet from the second device to the first device and return a corresponding one of the dedicated data credits to the second device, and wherein the first device is operable to transmit all of the dedicated data credits to the second device and retain at least some of the shared data credits upon initialization of the point-to-point link, and wherein the first device is operable to designate a particular one of the shared data credits as corresponding to a first one of the virtual channels in response to an indication that a data packet will be transmitted via the first virtual channel.