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: propagating the error to the plurality of endpoint IO resources to which the IO fabric element provides access by establishing an error state for each of the plurality of endpoint IO resources to which the IO fabric element provides access; and recovering from the error in the IO fabric element.