Fibre channel controller shareable by a plurality of operating system domains within a load-store architecture
First Claim
1. A Fibre Channel (FC) controller shareable by a plurality of operating system domains (OSDs) within a load-store architecture, comprising:
- a programming interface, located within a system load-store memory map of each of the plurality of OSDs for requesting the controller to perform I/O operations with remote FC devices, said programming interface comprising a distinct control/status register (CSR) bank for each of the plurality of OSDs, wherein the plurality of OSDs execute load-store instructions addressed to said programming interface to request said I/O operations, wherein the controller receives corresponding load-store transactions in response to execution of said load-store instructions;
selection logic, coupled to said CSR banks, configured to select as a target of each of said load-store transactions said distinct CSR bank for the one of the plurality of OSDs that executed said corresponding load-store instruction; and
a FC port, coupled to said programming interface, configured to obtain a distinct FC port identifier for each of the plurality of OSDs, and to transceive FC frames with said remote FC devices using said distinct FC port identifier for each of the plurality of OSDs in response to said I/O operation requests, wherein said FC port obtains said distinct FC port identifier for each of the plurality of OSDs by logging into a FC fabric using a unique FC Port Name associated with the OSD.
7 Assignments
0 Petitions
Accused Products
Abstract
A Fibre Channel controller shareable by a plurality of operating system domains (OSDs) is disclosed. The controller includes a programming interface, located within a system load-store memory map of each OSD by which the OSDs request the controller to perform I/O operations with remote FC devices. The programming interface includes a distinct control/status register (CSR) bank for each of OSD. The OSDs execute load-store instructions addressed to the programming interface to request the I/O operations. Selection logic selects as a target of each of the load-store transactions the distinct CSR bank for the OSD that executed the corresponding load-store instruction. An FC port obtains a distinct FC port identifier for each OSD and transceives FC frames with the remote FC devices using the distinct FC port identifier for each OSD in response to the I/O operation requests. In one embodiment, multiple blade servers share the controller via a shared I/O switch.
169 Citations
95 Claims
-
1. A Fibre Channel (FC) controller shareable by a plurality of operating system domains (OSDs) within a load-store architecture, comprising:
-
a programming interface, located within a system load-store memory map of each of the plurality of OSDs for requesting the controller to perform I/O operations with remote FC devices, said programming interface comprising a distinct control/status register (CSR) bank for each of the plurality of OSDs, wherein the plurality of OSDs execute load-store instructions addressed to said programming interface to request said I/O operations, wherein the controller receives corresponding load-store transactions in response to execution of said load-store instructions; selection logic, coupled to said CSR banks, configured to select as a target of each of said load-store transactions said distinct CSR bank for the one of the plurality of OSDs that executed said corresponding load-store instruction; and a FC port, coupled to said programming interface, configured to obtain a distinct FC port identifier for each of the plurality of OSDs, and to transceive FC frames with said remote FC devices using said distinct FC port identifier for each of the plurality of OSDs in response to said I/O operation requests, wherein said FC port obtains said distinct FC port identifier for each of the plurality of OSDs by logging into a FC fabric using a unique FC Port Name associated with the OSD. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77)
-
-
78. A method for sharing a Fibre Channel (FC) controller by a plurality of operating system domains (OSD), the method comprising:
-
obtaining a unique port identifier from a FC fabric for each of a respective one of the plurality of OSDs by logging into a FC fabric using a unique FC Port Name associated with the respective OSD; receiving from each of the plurality of OSDs a store transaction, the store transaction commanding the controller to perform an I/O operation with a remote FC device via a FC port of the controller; directing the store transaction to one of a respective plurality of control/status register banks based on which one of the plurality of OSDs the store transaction was received from, in response to said receiving; populating a FC frame with the unique port identifier obtained for the one of the plurality of OSDs the store transaction was received from, after said directing; and transmitting said FC frame via the FC port on the FC fabric to the remote FC device, after said populating. - View Dependent Claims (79, 80, 81, 82, 83, 84, 85)
-
-
86. A Fibre Channel (FC) controller shareable by a plurality of operating system domains (OSDs) within a load-store architecture, comprising:
-
a programming interface, located within a system load-store memory map of each of the plurality of OSDs for requesting the controller to perform I/O operations with remote FC devices, said programming interface comprising a distinct control/status register (CSR) bank for each of the plurality of OSDs, wherein the plurality of OSDs execute load-store instructions addressed to said programming interface to request said I/O operations, wherein the controller receives corresponding load-store transactions in response to execution of said load-store instructions; selection logic, coupled to said CSR banks, configured to select as a target of each of said load-store transactions said distinct CSR bank for the one of the plurality of OSDs that executed said corresponding load-store instruction; and a FC port, coupled to said programming interface, configured to obtain a distinct FC port identifier for each of the plurality of OSDs, and to transceive FC frames with said remote FC devices using said distinct FC port identifier for each of the plurality of OSDs in response to said I/O operation requests, wherein said FC port obtains said distinct FC port identifier for each of the plurality of OSDs by logging into a FC fabric using a unique FC Node_Name associated with the OSD. - View Dependent Claims (87, 88)
-
-
89. A method for sharing a Fibre Channel (FC) controller by a plurality of operating system domains (OSD), the method comprising:
-
obtaining a unique port identifier from a FC fabric for each of a respective one of the plurality of OSDs by logging into a FC fabric using a unique FC Node_Name associated with the respective OSD; receiving from each of the plurality of OSDs a store transaction, the store transaction commanding the controller to perform an I/O operation with a remote FC device via a FC port of the controller; directing the store transaction to one of a respective plurality of control/status register banks based on which one of the plurality of OSDs the store transaction was received from, in response to said receiving; populating a FC frame with the unique port identifier obtained for the one of the plurality of OSDs the store transaction was received from, after said directing; and transmitting said FC frame via the FC port on the FC fabric to the remote FC device, after said populating. - View Dependent Claims (90, 91)
-
-
92. A Fibre Channel (FC) controller shareable by a plurality of operating system domains (OSDs) within a load-store architecture, comprising:
-
a programming interface, located within a system load-store memory map of each of the plurality of OSDs for requesting the controller to perform I/O operations with remote FC devices, said programming interface comprising a distinct control/status register (CSR) bank for each of the plurality of OSDs, wherein the plurality of OSDs execute load-store instructions addressed to said programming interface to request said I/O operations, wherein the controller receives corresponding load-store transactions in response to execution of said load-store instructions; selection logic, coupled to said CSR banks, configured to select as a target of each of said load-store transactions said distinct CSR bank for the one of the plurality of OSDs that executed said corresponding load-store instruction; and a FC port, coupled to said programming interface, configured to obtain a distinct FC port identifier for each of the plurality of OSDs, and to transceive FC frames with said remote FC devices using said distinct FC port identifier for each of the plurality of OSDs in response to said I/O operation requests, wherein said FC port comprises a FC Node Loop Port (NL_Port) for communication on a FC arbitrated loop, wherein said FC NL_Port obtains a respective FC Arbitrated Loop Physical Address (AL_PA) for each of the plurality of OSDs, wherein said distinct port identifier for each of the plurality of OSDs comprises said respective FC AL_PA.
-
-
93. A method for sharing a Fibre Channel (FC) controller by a plurality of operating system domains (OSD), the method comprising:
-
obtaining a unique port identifier for each of a respective one of the plurality of OSDs; receiving from each of the plurality of OSDs a store transaction, the store transaction commanding the controller to perform an I/O operation with a remote FC device via a FC port of the controller; directing the store transaction to one of a respective plurality of control/status register banks based on which one of the plurality of OSDs the store transaction was received from, in response to said receiving; populating a FC frame with the unique port identifier obtained for the one of the plurality of OSDs the store transaction was received from, after said directing; and transmitting said FC frame via the FC port on a FC fabric to the remote FC device, after said populating; wherein said FC port comprises a FC Node Loop Port (NL_Port) for communication on a FC arbitrated loop, wherein said FC NL_Port obtains a respective FC Arbitrated Loop Physical Address (AL_PA) for each of the plurality of OSDs, wherein said unique port identifier for each of the respective one of the plurality of OSDs comprises said respective FC AL_PA.
-
-
94. A Fibre Channel (FC) controller shareable by a plurality of operating system domains (OSDs) within a load-store architecture, comprising:
-
a programming interface, located within a system load-store memory map of each of the plurality of OSDs for requesting the controller to perform I/Ooperations with remote FC devices, said programming interface comprising a distinct control/status register (CSR) bank for each of the plurality of OSDs, wherein the plurality of OSDs execute load-store instructions addressed to said programming interface to request said I/O operations, wherein the controller receives corresponding load-store transactions in response to execution of said load-store instructions; selection logic, coupled to said CSR banks, configured to select as a target of each of said load-store transactions said distinct CSR bank for the one of the plurality of OSDs that executed said corresponding load-store instruction; and a FC port, coupled to said programming interface, configured to obtain a distinct FC port identifier for each of the plurality of OSDs, and to transceive FC frames with said remote FC devices using said distinct FC port identifier for each of the plurality of OSDs in response to said I/O operation requests, wherein the controller is configured to determine whether a FC Fabric Port (F_Port) to which said FC port is linked supports a FC Multiple N_Port identifier (N_Port_ID) Assignment capability, to obtain a distinct FC N_Port_ID for each of the plurality of OSDs if the FC F_Port supports the FC Multiple N_Port_ID Assignment capability, and to obtain a distinct FC Node Loop Port (NL_Port) identifier (NL_Port_ID) for each of the plurality of OSDs if the FC F_Port does not support the FC Multiple N_Port_ID Assignment capability.
-
-
95. A method for sharing a Fibre Channel (FC) controller by a plurality of operating system domains (OSD), the method comprising:
-
obtaining a unique port identifier for each of a respective one of the plurality of OSDs; receiving from each of the plurality of OSDs a store transaction, the store transaction commanding the controller to perform an I/O operation with a remote FC device via a FC port of the controller; directing the store transaction to one of a respective plurality of control/status register banks based on which one of the plurality of OSDs the store transaction was received from, in response to said receiving; populating a FC frame with the unique port identifier obtained for the one of the plurality of OSDs the store transaction was received from, after said directing; transmitting said FC frame via the FC port on a FC fabric to the remote FC device, after said populating; determining whether a FC Fabric Port (F_Port) to which the FC port is linked supports a FC Multiple N_ID) Assignment capability; wherein said obtaining the unique port identifier for each of a respective one of the plurality of OSDs comprises; obtaining a unique FC N_Port_ID for each of the plurality of OSDs if the FC F_Port supports the FC Multiple N_Port_ID Assignment capability; and obtaining a unique FC Node Loop Port (NL_Port) identifier (NL_Port_ID) for each of the plurality of OSDs if the FC F_Port does not support the FC Multiple N_Port_ID Assignment capability.
-
Specification