WO2016055823A1 - Side channel communication hardware driver - Google Patents

Side channel communication hardware driver Download PDF

Info

Publication number
WO2016055823A1
WO2016055823A1 PCT/IB2014/002048 IB2014002048W WO2016055823A1 WO 2016055823 A1 WO2016055823 A1 WO 2016055823A1 IB 2014002048 W IB2014002048 W IB 2014002048W WO 2016055823 A1 WO2016055823 A1 WO 2016055823A1
Authority
WO
WIPO (PCT)
Prior art keywords
software
data
memory
hardware driver
driver
Prior art date
Application number
PCT/IB2014/002048
Other languages
French (fr)
Inventor
Andrew Alexander ELIAS
Jean-Pierre Thibault
Nick Bowler
Steven Lougheed
Michael James LEWIS
Original Assignee
Elliptic Technologies Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Elliptic Technologies Inc. filed Critical Elliptic Technologies Inc.
Priority to PCT/IB2014/002048 priority Critical patent/WO2016055823A1/en
Priority to EP14903767.3A priority patent/EP3204863A4/en
Publication of WO2016055823A1 publication Critical patent/WO2016055823A1/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/835Generation of protective data, e.g. certificates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/436Interfacing a local distribution network, e.g. communicating with another STB or one or more peripheral devices inside the home
    • H04N21/4363Adapting the video stream to a specific local network, e.g. a Bluetooth® network
    • H04N21/43632Adapting the video stream to a specific local network, e.g. a Bluetooth® network involving a wired protocol, e.g. IEEE 1394
    • H04N21/43635HDMI
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/436Interfacing a local distribution network, e.g. communicating with another STB or one or more peripheral devices inside the home
    • H04N21/4367Establishing a secure communication between the client and a peripheral device or smart card
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/633Control signals issued by server directed to the network components or client
    • H04N21/6332Control signals issued by server directed to the network components or client directed to client
    • H04N21/6334Control signals issued by server directed to the network components or client directed to client for authorisation, e.g. by transmitting a key

Definitions

  • the present disclosure relates to encryption and content protection, specifically to the control channel used for authentication.
  • a system and method are provided for communicating data between a first software and a second software located on first and second devices, respectively.
  • Each of the devices has a hardware driver and memory associated therewith.
  • Each communication of data from the first software to the second software allocates memory to manage data to be communicated from the first software to the second software, provides memory allocation information to the hardware driver associated with the first software, and transmits the data from the first hardware driver to the second hardware driver for delivery to the second software via the memory associated with the second software.
  • Each communication of data from the second software to the first software allocates memory to manage data to be communicated with the first software, provides memory allocation information to the first hardware driver, and transmits the data from the second hardware driver to the first hardware driver for delivery to the first software via the first memory.
  • the first software is a master software and the second software is a slave software.
  • the hardware drivers preferably handle the time-critical components of the communication of data between the first and second software, to reduce the number of interrupts to the first and second software.
  • the hardware driver that receives communicated data stores that data in the associated memory, and notifies the associated software that the data is available.
  • FIG. 1 illustrates a prior art message exchange for authentication over I2C.
  • FIG. 2 illustrates an example of the use of a hardware driver for the sideband communication channel when a master writes to a slave.
  • FIG. 3 illustrates an example of the use of a hardware driver for the sideband communication channel when a master reads from a slave.
  • the HDCP content protection standard uses a side-band communication channel to perform authentication between an HDCP transmitter and an HDCP receiver. There are time limits for completing the authentication process. Certain steps within the authentication algorithm are also subject to time limits. While HDCP version 1.x was amenable to hardware (HW) implementation, the HDCP version 2.x is more complex and lends itself best to software (S W) implementation. However, the overhead of S W responding to interrupts (to service transfers) can jeopardize completion of the authentication within the allotted time(s).
  • the side-band channel is Inter-integrated Circuit (I2C).
  • I2C Inter-integrated Circuit
  • the master transmit SW 101 starts an authentication process 110 via a I2C transmit side-channel 103, the start notification 1 1 1 is sent via a network 150 and is received in the I2C receive side 105 of the slave which generates an interrupt 112 for the slave receive SW 107.
  • the receive SW transmits the required data 1 13 via the 12C side channel 105 which transmits 114 over the network 150.
  • the reception of the data 114 generates an interrupt 1 15 to the master SW 101.
  • the side-channel communication can be off-loaded from the SW and implemented in a HW driver.
  • the SW overhead is reduced and the response time is faster and more predictable therefore the protocol timing requirements can be met.
  • This embodiment also abstracts the communication channel from SW, allowing a common SW to be used for different channels.
  • the SW focuses on high-level messaging and protocol compliance while the HW is used to meet low level timing constraints.
  • the manner in which the offloading is achieved depends on whether it resides in a "master" (transmitting) device or in a "slave” (receiving) device.
  • the partitioning of the HW and SW components allows the SW to be agnostic to the communication channel.
  • the HW driver handles the time- critical components of the communication, minimizing the number of interrupts to the SW.
  • the partitioning allows for HW to handle the communications without waiting for the SW response.
  • FIG. 2 provides an example of a master writing to a slave.
  • the SW places data 220 in memory 203.
  • the SW gives the pointer and data size 252 to the HW driver 205.
  • the HW driver 205 reads the data from memory 221 and makes it available to the I2C tx 103 for transmission 222 over the network 150 to the I2C RX 105, which in turns makes the data 223 available to the HW driver slave 207.
  • the slave SW 211 allocates memory space and provides the pointers to the memory space 228 to the HW driver.
  • the HW driver 207 When data 223 is received by the HW driver 207, the HW driver 207 stores it into memory 209, and notifies the slave SW 225 that the data is available. At an appropriate time, the slave SW reads the data 226 from the memory 209. The timing of the slave SW reading from memory does not gate the following acknowledgement process, therefore does not add any delay in the writing process.
  • the HW driver 207 acknowledges 230 the receipt of the data via the I2C RX 105, the acknowledgement is transmitted to the I2C TX 103 on the master side, which makes it available to the master HW driver 205. The acknowledgement is passed on to the master TX SW for processing.
  • FIG. 3 depicts an example where the master reads information from the slave.
  • the slave SW 21 1 allocates a region of memory 320 and provides the pointer to the memory allocation 322 the slave HW driver 207.
  • the master SW 201 needs data from the slave SW 21 1, it sends a request 310 to the master HW driver 205, which in turn, sends the request 312 to the I2C TX 103.
  • the request 314 is transmitted, over the network 150, to the I2C RX 105 of the slave device.
  • the I2C RX 105 makes the request 316 available to the slave HW driver 207 which in turn reads the requested data 317 from the memory 209.
  • the slave SW 21 1 may optionally be notified that the read has occurred 318.
  • the HW driver 207 makes the requested data 317 available to the slave I2C 105 for transmission 326 to the master I2C 103 via the network 150.
  • the master I2C 103 provides the data 328 to the HW driver 205, which in turn writes it into memory 203.
  • the master SW is notified 332 that the requested data has been put in memory.
  • the master SW 201 reads the data 332 at an appropriate time, without impacting other data transfers between the master and the slave.
  • Multiple memory regions may be allocated, each intended for different variables that are used in the higher-level protocol (e.g. HDCP authentication). Once this is done, the HW driver slave 207 responds to transfer requests via the I2C TX side channel 105 in a timely fashion without SW involvement.
  • higher-level protocol e.g. HDCP authentication
  • the size of the SW transfer to memory need not be limited to what the underlying communication channel supports.
  • the HW driver segments the transfer as per the channel requirements (e.g. in the case of AUX, which has max 16-byte bursts, the SW issue a single command to transfer 32 bytes into memory and notifies the HW driver.
  • the HW driver does, in this case, two 16-byte bursts, and notify the SW only when both are completed.
  • Channel-specific exceptions, such as, but not limited to, error conditions on the channel can be handled by the HW driver (by re-attempting the transfer until it completes successfully), without any SW involvement.
  • Each request (on the slave or master side) has an identifier (e.g.
  • the HW driver can use to match to the memory region that should be used to write or read the data in the case of a write or read transfer, respectively. If there is no identifier match, the HW driver can wait for the SW to update the allocation(s) until something results in a match or, depending on the channel, it can decline the transfer. As in the transmit case, the SW is notified when data is fully transferred, possibly over many physical transfers (e.g. in the case of AUX).
  • the SW may optionally store a map of these allocations in memory and point HW to the location of this map. Instead of providing the HW driver with a single pointer, SW may provide multiple pointers, each intended for a different variable.
  • the SW creates a lookup table to maintain the memory pointer for a variable and a lookup key that the HW uses to search the table. The use of a lookup table allows the SW to manage the allocations dynamically.
  • variable means any values (including constant values) transferred by a master to a slave (or vice versa) over a side channel.
  • the HW driver may collect statistics on successful and unsuccessful transfers.
  • the SW may consult these statistics to decide whether to abort an outstanding command, or perhaps to diagnose interoperability problems.
  • Different communication channels may have different particularities that the HW driver can isolate from the SW, for example with respect to failures or maximum transmission size.
  • the master may lose arbitration of the physical channel to a different master, or the slave may answer a write with a negative acknowledge (NACK).
  • NACK negative acknowledge
  • the HW driver can re-attempt the transfer until successful, without involving the SW.
  • the slave can respond negatively to the transfer request (with DEFER or NACK responses). Again, the HW driver can re-attempt until it's successful.
  • the HW driver can implement any channel particularities while SW is agnostic to these and shielded from any additional interrupts required to manage them.
  • variable may be kept into a HW register directly accessible by the HW driver without the need for SW to allocate memory and handle pointers.
  • a status variable e.g. a status variable
  • the variable can be stored in HW.
  • the HW driver provides dedicated storage space for this variable and provide SW with a mechanism to update the variable's value. The SW is no longer interrupted every time the variable is read.
  • the HW driver can inform the SW about the frequency at which these HW registers are accessed and the SW can access them regularly.
  • Any algorithm, software, or method disclosed herein can be embodied in software stored on a non-transitory tangible medium such as, for example, a flash memory, a CD-ROM, a floppy disk, a hard drive, a digital versatile disk (DVD), or other memory devices, but persons of ordinary skill in the art will readily appreciate that the entire algorithm and/or parts thereof could alternatively be executed by a device other than a controller and/or embodied in firmware or dedicated hardware in a well known manner (e.g., it may be implemented by an application specific integrated circuit (ASIC), a programmable logic device (PLD), a field programmable logic device (FPLD), discrete logic, etc.).
  • ASIC application specific integrated circuit
  • PLD programmable logic device
  • FPLD field programmable logic device
  • machine-readable instructions represented in any flowchart depicted herein can be implemented manually as opposed to automatically by a controller, processor, or similar computing device or machine.
  • specific algorithms are described with reference to flowcharts depicted herein, persons of ordinary skill in the art will readily appreciate that many other methods of implementing the example machine readable instructions may alternatively be used. For example, the order of execution of the blocks may be changed, and/or some of the blocks described may be changed, eliminated, or combined.

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

A system and method for communicating data between a first software and a second software located on first and second devices, respectively, has a hardware driver and memory associated with each device. Each communication of data from the first software to the second software allocates memory to manage data to be communicated from the first software to the second software, provides memory allocation information to the hardware driver associated with the first software, and transmits the data from the first hardware driver to the second hardware driver for delivery to the second software via the memory associated with the second software.

Description

SIDE CHANNEL COMMUNICATION HARDWARE DRIVER
FIELD OF THE INVENTION
[0001] The present disclosure relates to encryption and content protection, specifically to the control channel used for authentication.
SUMMARY
[0002] In accordance with one embodiment, a system and method are provided for communicating data between a first software and a second software located on first and second devices, respectively. Each of the devices has a hardware driver and memory associated therewith. Each communication of data from the first software to the second software allocates memory to manage data to be communicated from the first software to the second software, provides memory allocation information to the hardware driver associated with the first software, and transmits the data from the first hardware driver to the second hardware driver for delivery to the second software via the memory associated with the second software. Each communication of data from the second software to the first software allocates memory to manage data to be communicated with the first software, provides memory allocation information to the first hardware driver, and transmits the data from the second hardware driver to the first hardware driver for delivery to the first software via the first memory.
[0003] In one implementation, the first software is a master software and the second software is a slave software. The hardware drivers preferably handle the time-critical components of the communication of data between the first and second software, to reduce the number of interrupts to the first and second software. The hardware driver that receives communicated data stores that data in the associated memory, and notifies the associated software that the data is available.
[0004] The foregoing and additional aspects and embodiments of the present disclosure will be apparent to those of ordinary skill in the art in view of the detailed description of various embodiments and/or aspects, which is made with reference to the drawings, a brief description of which is provided next.
BRIEF DESCRIPTION OF THE DRAWINGS
[0005] FIG. 1 illustrates a prior art message exchange for authentication over I2C. [0006] FIG. 2 illustrates an example of the use of a hardware driver for the sideband communication channel when a master writes to a slave.
[0007] FIG. 3 illustrates an example of the use of a hardware driver for the sideband communication channel when a master reads from a slave.
[0008] While the present disclosure is susceptible to various modifications and alternative forms, specific embodiments or implementations have been shown by way of example in the drawings and will be described in detail herein. It should be understood, however, that the disclosure is not intended to be limited to the particular forms disclosed. Rather, the disclosure is to cover all modifications, equivalents, and alternatives falling within the spirit and scope of an invention as defined by the appended claims.
DETAILED DESCRIPTION
[0009] The HDCP content protection standard uses a side-band communication channel to perform authentication between an HDCP transmitter and an HDCP receiver. There are time limits for completing the authentication process. Certain steps within the authentication algorithm are also subject to time limits. While HDCP version 1.x was amenable to hardware (HW) implementation, the HDCP version 2.x is more complex and lends itself best to software (S W) implementation. However, the overhead of S W responding to interrupts (to service transfers) can jeopardize completion of the authentication within the allotted time(s).
[0010] Although the embodiment is described herein using HDCP as an example, it applies to any configurations where software performs time-sensitive data exchanges over a physical hardware channel, while the frequency of software interrupts need to be limited.
[0011] In the case of HDCP over HDMI, the side-band channel is Inter-integrated Circuit (I2C). When an I2C slave device cannot immediately respond to a transfer request, it is allowed to delay its response through the use of a mechanism called clock stretching. In practice, some I2C devices do not support clock stretching and are not able to inter-operate with compliant devices, therefore the avoidance of clock stretching is desirable, which requires the I2C slave to be able to respond to transfer requests with minimal delay.
[0012] Referring to FIG. 1, the master transmit SW 101 starts an authentication process 110 via a I2C transmit side-channel 103, the start notification 1 1 1 is sent via a network 150 and is received in the I2C receive side 105 of the slave which generates an interrupt 112 for the slave receive SW 107. The receive SW transmits the required data 1 13 via the 12C side channel 105 which transmits 114 over the network 150. On the master side, the reception of the data 114 generates an interrupt 1 15 to the master SW 101. Several exchanges of data occur during the authentication process each involving interrupts to the master or slave SW, along with unpredictable response time.
[0013] In the case of HDCP over DisplayPort (DP), side-channel transfers are conducted over the auxiliary channel (AUX) and are limited to bursts of 16 bytes (or less). Larger quantities of data must be broken into multiple bursts, which results in a large number of SW interrupts.
[0014] There is also a need to abstract the side-channel interface from the SW to allow generic SW communication independent of the side-channel used (e.g. I2C or AUX).
[0015] Existing solutions to these problems include implementing the HDCP protocol entirely in HW, which is very costly. Another option is to tune the software to respond to the side-channel interrupts faster (e.g. by increasing the priority of these interrupts). Another solution is to simply tolerate the authentication failures resulting from the delays until the authentication eventually succeeds. However, this last solution results in poor user experience and interoperability problems.
[0016] In one embodiment, the side-channel communication can be off-loaded from the SW and implemented in a HW driver. The SW overhead is reduced and the response time is faster and more predictable therefore the protocol timing requirements can be met. This embodiment also abstracts the communication channel from SW, allowing a common SW to be used for different channels. The SW focuses on high-level messaging and protocol compliance while the HW is used to meet low level timing constraints. The manner in which the offloading is achieved depends on whether it resides in a "master" (transmitting) device or in a "slave" (receiving) device. The partitioning of the HW and SW components allows the SW to be agnostic to the communication channel. The HW driver handles the time- critical components of the communication, minimizing the number of interrupts to the SW. The partitioning allows for HW to handle the communications without waiting for the SW response.
[0017] FIG. 2 provides an example of a master writing to a slave. On the transmit (master) side 201, the SW places data 220 in memory 203. The SW gives the pointer and data size 252 to the HW driver 205. The HW driver 205 reads the data from memory 221 and makes it available to the I2C tx 103 for transmission 222 over the network 150 to the I2C RX 105, which in turns makes the data 223 available to the HW driver slave 207. ON the receive side, independent from the master's writing process, the slave SW 211 allocates memory space and provides the pointers to the memory space 228 to the HW driver. When data 223 is received by the HW driver 207, the HW driver 207 stores it into memory 209, and notifies the slave SW 225 that the data is available. At an appropriate time, the slave SW reads the data 226 from the memory 209. The timing of the slave SW reading from memory does not gate the following acknowledgement process, therefore does not add any delay in the writing process. The HW driver 207 acknowledges 230 the receipt of the data via the I2C RX 105, the acknowledgement is transmitted to the I2C TX 103 on the master side, which makes it available to the master HW driver 205. The acknowledgement is passed on to the master TX SW for processing.
[0018] FIG. 3 depicts an example where the master reads information from the slave. The slave SW 21 1 allocates a region of memory 320 and provides the pointer to the memory allocation 322 the slave HW driver 207. When the master SW 201 needs data from the slave SW 21 1, it sends a request 310 to the master HW driver 205, which in turn, sends the request 312 to the I2C TX 103. The request 314 is transmitted, over the network 150, to the I2C RX 105 of the slave device. The I2C RX 105, makes the request 316 available to the slave HW driver 207 which in turn reads the requested data 317 from the memory 209. The slave SW 21 1 may optionally be notified that the read has occurred 318. The HW driver 207 makes the requested data 317 available to the slave I2C 105 for transmission 326 to the master I2C 103 via the network 150. The master I2C 103 provides the data 328 to the HW driver 205, which in turn writes it into memory 203. The master SW is notified 332 that the requested data has been put in memory. The master SW 201 reads the data 332 at an appropriate time, without impacting other data transfers between the master and the slave.
[0019] Multiple memory regions may be allocated, each intended for different variables that are used in the higher-level protocol (e.g. HDCP authentication). Once this is done, the HW driver slave 207 responds to transfer requests via the I2C TX side channel 105 in a timely fashion without SW involvement.
[0020] The size of the SW transfer to memory need not be limited to what the underlying communication channel supports. The HW driver segments the transfer as per the channel requirements (e.g. in the case of AUX, which has max 16-byte bursts, the SW issue a single command to transfer 32 bytes into memory and notifies the HW driver. The HW driver does, in this case, two 16-byte bursts, and notify the SW only when both are completed. Channel-specific exceptions, such as, but not limited to, error conditions on the channel can be handled by the HW driver (by re-attempting the transfer until it completes successfully), without any SW involvement. [0021] Each request (on the slave or master side) has an identifier (e.g. an address) that the HW driver can use to match to the memory region that should be used to write or read the data in the case of a write or read transfer, respectively. If there is no identifier match, the HW driver can wait for the SW to update the allocation(s) until something results in a match or, depending on the channel, it can decline the transfer. As in the transmit case, the SW is notified when data is fully transferred, possibly over many physical transfers (e.g. in the case of AUX).
[0022] If multiple memory allocations are required concurrently, the SW may optionally store a map of these allocations in memory and point HW to the location of this map. Instead of providing the HW driver with a single pointer, SW may provide multiple pointers, each intended for a different variable. The SW creates a lookup table to maintain the memory pointer for a variable and a lookup key that the HW uses to search the table. The use of a lookup table allows the SW to manage the allocations dynamically.
[0023] The term "variable" means any values (including constant values) transferred by a master to a slave (or vice versa) over a side channel.
[0024] The HW driver may collect statistics on successful and unsuccessful transfers. The SW may consult these statistics to decide whether to abort an outstanding command, or perhaps to diagnose interoperability problems.
[0025] Different communication channels may have different particularities that the HW driver can isolate from the SW, for example with respect to failures or maximum transmission size. In I2C (for HDMI), the master may lose arbitration of the physical channel to a different master, or the slave may answer a write with a negative acknowledge (NACK). In both cases, the HW driver can re-attempt the transfer until successful, without involving the SW. Similarly in AUX, the slave can respond negatively to the transfer request (with DEFER or NACK responses). Again, the HW driver can re-attempt until it's successful. The HW driver can implement any channel particularities while SW is agnostic to these and shielded from any additional interrupts required to manage them.
[0026] Optionally, if some variable is relatively small in size and/or expected to be read relatively frequently (e.g. a status variable), it may be kept into a HW register directly accessible by the HW driver without the need for SW to allocate memory and handle pointers. For example, the RxStatus in HDCP for HDMI. Instead of using system memory, the variable can be stored in HW. The HW driver provides dedicated storage space for this variable and provide SW with a mechanism to update the variable's value. The SW is no longer interrupted every time the variable is read. Optionally, the HW driver can inform the SW about the frequency at which these HW registers are accessed and the SW can access them regularly.
[0027] Although the algorithms described above including those with reference to the foregoing flow charts have been described separately, it should be understood that any two or more of the algorithms disclosed herein can be combined in any combination. Any of the methods, algorithms, implementations, or procedures described herein can include machine- readable instructions for execution by: (a) a processor, (b) a controller, and/or (c) any other suitable processing device. Any algorithm, software, or method disclosed herein can be embodied in software stored on a non-transitory tangible medium such as, for example, a flash memory, a CD-ROM, a floppy disk, a hard drive, a digital versatile disk (DVD), or other memory devices, but persons of ordinary skill in the art will readily appreciate that the entire algorithm and/or parts thereof could alternatively be executed by a device other than a controller and/or embodied in firmware or dedicated hardware in a well known manner (e.g., it may be implemented by an application specific integrated circuit (ASIC), a programmable logic device (PLD), a field programmable logic device (FPLD), discrete logic, etc.). Also, some or all of the machine-readable instructions represented in any flowchart depicted herein can be implemented manually as opposed to automatically by a controller, processor, or similar computing device or machine. Further, although specific algorithms are described with reference to flowcharts depicted herein, persons of ordinary skill in the art will readily appreciate that many other methods of implementing the example machine readable instructions may alternatively be used. For example, the order of execution of the blocks may be changed, and/or some of the blocks described may be changed, eliminated, or combined.
[0028] It should be noted that the algorithms illustrated and discussed herein as having various modules which perform particular functions and interact with one another. It should be understood that these modules are merely segregated based on their function for the sake of description and represent computer hardware and/or executable software code which is stored on a computer-readable medium for execution on appropriate computing hardware. The various functions of the different modules and units can be combined or segregated as hardware and/or software stored on a non-transitory computer-readable medium as above as modules in any manner, and can be used separately or in combination.
[0029] While particular implementations and applications of the present disclosure have been illustrated and described, it is to be understood that the present disclosure is not limited to the precise construction and compositions disclosed herein and that various modifications, changes, and variations can be apparent from the foregoing descriptions without departing from the spirit and scope of an invention as defined in the appended claims.

Claims

WHAT IS CLAIMED IS:
1. A communication system for communicating data between a first software and a second software located on different devices, said system comprising:
first and second hardware drivers associated with said first and second software, respectively,
a first memory coupled with said first software and with said first hardware driver; and
a second memory coupled with said second software and with said second hardware driver;
wherein said first software allocates memory to manage data to be communicated with said second software and provides memory allocation information to said first hardware driver, and said first hardware driver transmits said data to said second hardware driver for delivery to said second software via said second memory.
2. The system of claim 1 wherein said second software allocates memory to manage data to be communicated with said first software and provides memory allocation information to said second hardware driver, and said second hardware driver transmits said data to said first hardware driver for delivery to said first software via said first memory.
3. The system of claim 1 wherein said first software is a master software and said second software is a slave software.
4. The system of claim 1 in which said hardware drivers handle the time-critical components of the communication of data between said first and second software, to reduce the number of interrupts to said first and second software.
5. The system of claim 1 in which the hardware driver that receives communicated data stores said data in the associated memory, and notifies the associated software that said data is available.
6. A method of communicating data between a first software and a second software located on first and second devices, respectively, each of said devices having a hardware driver and memory associated therewith, said method comprising: allocating memory to manage data to be communicated from said first software to said second software,
providing memory allocation information to said hardware driver associated with said first software,
transmitting said data from said first hardware driver to said second hardware driver for delivery to said second software via said memory associated with said second software.
7. The method of claim 6 which includes allocating memory to manage data to be communicated with said first software, providing memory allocation information to said first hardware driver, and transmitting said data from said second hardware driver to said first hardware driver for delivery to said first software via said first memory.
8. The method of claim 6 wherein said first software is a master software and said second software is a slave software.
9. The method of claim 6 in which time-critical components of the communication of data between said first and second software is handled by said hardware devices, to reduce the number of interrupts to said first and second software.
10. The method of claim 6 in which the hardware driver that receives communicated data stores said data in the associated memory, and notifies the associated software that said data is available.
PCT/IB2014/002048 2014-10-07 2014-10-07 Side channel communication hardware driver WO2016055823A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
PCT/IB2014/002048 WO2016055823A1 (en) 2014-10-07 2014-10-07 Side channel communication hardware driver
EP14903767.3A EP3204863A4 (en) 2014-10-07 2014-10-07 Side channel communication hardware driver

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/IB2014/002048 WO2016055823A1 (en) 2014-10-07 2014-10-07 Side channel communication hardware driver

Publications (1)

Publication Number Publication Date
WO2016055823A1 true WO2016055823A1 (en) 2016-04-14

Family

ID=55652633

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/IB2014/002048 WO2016055823A1 (en) 2014-10-07 2014-10-07 Side channel communication hardware driver

Country Status (2)

Country Link
EP (1) EP3204863A4 (en)
WO (1) WO2016055823A1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10133611B2 (en) * 2014-10-07 2018-11-20 Synopsys, Inc. Side channel communication hardware driver

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6173343B1 (en) * 1997-09-19 2001-01-09 Hewlett-Packard Company Data processing system and method with central processing unit-determined peripheral device service
US7904878B2 (en) * 2006-12-26 2011-03-08 Vayavya Technologies Private Limited Simplifying generation of device drivers for different user systems to facilitate communication with a hardware device
WO2013081623A1 (en) 2011-12-01 2013-06-06 Intel Corporation Secure provision of a digital content protection scheme
US8732381B2 (en) * 2011-11-09 2014-05-20 Hewlett-Packard Development Company, L.P. SAS expander for communication between drivers
US8848910B2 (en) * 2009-04-10 2014-09-30 Hewlett-Packard Development Company, L.P. HDCP video over USB

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8381204B2 (en) * 2008-04-30 2013-02-19 International Business Machines Corporation Compiler driven mechanism for registration and deregistration of memory pages
US8103803B2 (en) * 2008-11-21 2012-01-24 Nvidia Corporation Communication between a processor and a controller

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6173343B1 (en) * 1997-09-19 2001-01-09 Hewlett-Packard Company Data processing system and method with central processing unit-determined peripheral device service
US7904878B2 (en) * 2006-12-26 2011-03-08 Vayavya Technologies Private Limited Simplifying generation of device drivers for different user systems to facilitate communication with a hardware device
US8848910B2 (en) * 2009-04-10 2014-09-30 Hewlett-Packard Development Company, L.P. HDCP video over USB
US8732381B2 (en) * 2011-11-09 2014-05-20 Hewlett-Packard Development Company, L.P. SAS expander for communication between drivers
WO2013081623A1 (en) 2011-12-01 2013-06-06 Intel Corporation Secure provision of a digital content protection scheme

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP3204863A4 *

Also Published As

Publication number Publication date
EP3204863A4 (en) 2018-07-11
EP3204863A1 (en) 2017-08-16

Similar Documents

Publication Publication Date Title
US20210011785A1 (en) Methods and apparatus for correcting out-of-order data transactions between processors
US20150331719A1 (en) Apparatus and job scheduling method thereof
US20170286149A1 (en) Method for Managing Memory of Virtual Machine, Physical Host, PCIE Device and Configuration Method Thereof, and Migration Management Device
US20130215142A1 (en) Apparatus and method for displaying an image on a sink device
CN107967225B (en) Data transmission method and device, computer readable storage medium and terminal equipment
CN109787759B (en) Data transmission method, system, device and computer readable storage medium
US20190007339A1 (en) Method and device for managing stateful application on server
US20190089646A1 (en) Communication apparatus, communication method, and computer program product
US12008389B2 (en) Flexible resource assignment to physical and virtual functions in a virtualized processing system
US10540301B2 (en) Virtual host controller for a data processing system
WO2013147872A1 (en) Two dimensional direct memory access scheme for enhanced network protocol processing performance
EP2840506A2 (en) Dynamic priority control based on latency tolerance
US8996760B2 (en) Method to emulate message signaled interrupts with interrupt data
US8250252B1 (en) System and methods for using a DMA module for a plurality of virtual machines
US9384154B2 (en) Method to emulate message signaled interrupts with multiple interrupt vectors
EP3204863A1 (en) Side channel communication hardware driver
US10133611B2 (en) Side channel communication hardware driver
KR102011137B1 (en) Apparatus and circuit for processing data
US8806082B2 (en) Direct memory access device for multi-core system and operating method of the same
US9910812B2 (en) Initiating multiple data transactions on a system bus
US9182941B2 (en) Flow control with buffer reclamation
TWI784359B (en) Memory request timeouts using a common counter
US20140139533A1 (en) Graphic processing unit virtual apparatus, graphic processing unit host apparatus, and graphic processing unit program processing methods thereof
US8296481B2 (en) Device and method for improving transfer efficiency of odd number of data blocks
KR20120066999A (en) Direct memory access controller and operating method thereof

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 14903767

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

REEP Request for entry into the european phase

Ref document number: 2014903767

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 2014903767

Country of ref document: EP