1. A method of handling an error in an input/output (IO) fabric that includes at least one IO fabric element that provides access to a plurality of endpoint IO resources, the method comprising, in response to a detected error in the IO fabric element: establishing an error state for each of the plurality of endpoint IO resources; and recovering from the error in the IO fabric element.