The salt can be as long as you want as long as the underlying digest function supports salts of that length. The salt is only passed to the HMAC-SHA512 function during the first iteration, and in that particular round the salt is concatenated with 0x01000000 in hex, and this number represents 1 in 32-bit big endian form.
Because of the way PBKDF2 works, it's possible to have an output length that is a multiple of the digest length, for example: PBKDF2 outputting 1024 or 4096 bits, using an HMAC-SHA512 digest function 512 bits wide. In those cases we break the input into blocks of 512 bits and run the digest on each of them, using whichever index number we gave the block of 512 bits instead of "1".
For example, suppose the digest size is 2048 and we have 3 iterations, and are using the digest function HMAC-SHA512:
The + is concatenation and not addition.
HMAC can handle arbitrary-sized salts just fine, because they are directly passed to the hash function (SHA512) which knows how to break it down into manageable blocks sizes as well.