IP Library Granted Patent US 9,830,295
Granted Patent B2
US 9,830,295 · App. 14/598,199 · Granted Nov 28, 2017

Resource domain partioning in a data processing system

Inventors: Lawrence L. Case (Austin, TX); Charles E. Cannon (Austin, TX); Simon J. Gallimore (Austin, TX); Glen G. Wienecke (Fredericksburg, TX)
Assignee: NXP USA, Inc.
G06F13/4068G06F9/5011
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,830,295
App. No.
14/598,199
Granted
Nov 28, 2017
Kind
B2
Abstract

A resource domain controller in a data processing system stores information that is used to group various resources, such as bus masters and peripherals, into common domains. Each group can be referred to as a resource domain and can include one or more data processor and peripheral devices. The resource domain information is then used to determine whether a particular access request from a data processor is authorized to access its intended target, e.g., one of the peripheral devices, by determining whether the access request and the intended target each belong to a common resource domain. If so, the access request is allowed, otherwise the access request is prevented from being successfully completed.

Claims (80)

1. A method, comprising:

assigning, by a resource domain controller, a plurality of bus masters to corresponding at least one resource domain of a plurality of resource domains, including assigning a first bus master of the plurality of bus masters to a first at least one resource domain;

assigning, by the resource domain controller, a first peripheral to a second at least one resource domain of the plurality of resource domains;

receiving at a first peripheral access control module a first access request from the first bus master to access the first peripheral, the first access request comprising a resource domain identifier that is indicative of the first at least one resource domain;

receiving, from the resource domain controller, a first peripheral resource domain indicator at the first peripheral access control module indicating the second at least one resource domain is assigned to the first peripheral; and

allowing the first access request in response to determining at the first peripheral access control module that the first at least one resource domain and the second at least one resource domain have a common resource domain, otherwise, preventing the first access request in response to determining at the first peripheral access control module that the first at least one resource domain and the second at least one resource domain do not have a common resource domain;

subsequent to receiving the first peripheral resource domain indicator, removing power from the first peripheral access control module while maintaining power to the resource domain controller;

subsequent to removing the power from the first peripheral access control module, restoring power to the first peripheral access control module; and

in response to restoring the power, preventing the access requests until the first peripheral resource domain identifier being received at the first peripheral access control module.

2. The method of claim 1 , further comprising:

in response to receiving the first peripheral resource domain identifier, storing the first peripheral resource domain identifier at a volatile storage location local to the first peripheral access control module.

3. The method of claim 1 further comprising:

programming the resource domain controller to store resource domain information that indicates the first bus master is a member of the first at least one resource domain and that the first peripheral is a member of the second at least one resource domain.

4. A method, comprising:

assigning, by a resource domain controller, a plurality of bus masters to corresponding at least one resource domain of a plurality of resource domains, including assigning a first bus master of the plurality of bus masters to a first at least one resource domain;

assigning, by the resource domain controller, a first peripheral to a second at least one resource domain of the plurality of resource domains;

receiving at a first peripheral access control module a first access request from the first bus master to access the first peripheral, the first access request comprising a resource domain identifier that is indicative of the first at least one resource domain;

receiving, from the resource domain controller, a first peripheral resource domain indicator at the first peripheral access control module indicating the second at least one resource domain is assigned to the first peripheral; and

allowing the first access request in response to determining at the first peripheral access control module that the first at least one resource domain and the second at least one resource domain have a common resource domain, otherwise, preventing the first access request in response to determining at the first peripheral access control module that the first at least one resource domain and the second at least one resource domain do not have a common resource domain; and

subsequent to receiving the first peripheral resource domain indicator, removing power from the first peripheral access control module while maintaining power to the resource domain controller, and continuing to provide the first peripheral resource domain indicator to the first peripheral access control module from the resource domain controller while power is removed from the first peripheral access control module.

5. A method, comprising:

assigning, by a resource domain controller, a plurality of bus masters to corresponding at least one resource domain of a plurality of resource domains, including assigning a first bus master of the plurality of bus masters to a first at least one resource domain;

assigning, by the resource domain controller, a first peripheral to a second at least one resource domain of the plurality of resource domains;

receiving at a first peripheral access control module a first access request from the first bus master to access the first peripheral, the first access request comprising a resource domain identifier that is indicative of the first at least one resource domain;

receiving, from the resource domain controller, a first peripheral resource domain indicator at the first peripheral access control module indicating the second at least one resource domain is assigned to the first peripheral; and

allowing the first access request in response to determining at the first peripheral access control module that the first at least one resource domain and the second at least one resource domain have a common resource domain, otherwise, preventing the first access request in response to determining at the first peripheral access control module that the first at least one resource domain and the second at least one resource domain do not have a common resource domain; and

after applying power to the resource domain controller, and prior to programming any resource domain information at the resource domain controller, allowing the first bus master to access the first peripheral.

6. The method of claim 5 , wherein the first peripheral is accessible at a plurality of addresses and only a portion of the plurality of addresses are assigned to the second at least one resource domain.

7. The method of claim 5 , wherein the first peripheral is accessible at a plurality of addresses, wherein each one of the plurality of addresses is assigned to the second at least one resource domain.

8. A method, comprising:

assigning, by a resource domain controller, a plurality of bus masters to corresponding at least one resource domain of a plurality of resource domains, including assigning a first bus master of the plurality of bus masters to a first at least one resource domain;

assigning, by the resource domain controller, a first peripheral to a second at least one resource domain of the plurality of resource domains;

receiving at a first peripheral access control module a first access request from the first bus master to access the first peripheral, the first access request comprising a resource domain identifier that is indicative of the first at least one resource domain;

receiving, from the resource domain controller, a first peripheral resource domain indicator at the first peripheral access control module indicating the second at least one resource domain is assigned to the first peripheral; and

allowing the first access request in response to determining at the first peripheral access control module that the first at least one resource domain and the second at least one resource domain have a common resource domain, otherwise, preventing the first access request in response to determining at the first peripheral access control module that the first at least one resource domain and the second at least one resource domain do not have a common resource domain;

detecting a tamper event at the first bus master;

receiving a second access request from a second bus master to access the first peripheral subsequent to detecting the tamper event, the second access request having at least one resource domain in common with the first peripheral, and having no resource domain in common with the first bus master;

selecting one of a first tamper policy or a second tamper policy;

in response to the first tamper policy being selected, preventing the second access request in response to detecting the tamper event; and

in response to the second tamper policy being selected, allowing the second access request in response to second tamper event in light of detecting the tamper event.

9. A method, comprising:

assigning, by a resource domain controller, a plurality of bus masters to corresponding at least one resource domain of a plurality of resource domains, including assigning a first bus master of the plurality of bus masters to a first at least one resource domain;

assigning, by the resource domain controller, a first peripheral to a second at least one resource domain of the plurality of resource domains;

receiving at a first peripheral access control module a first access request from the first bus master to access the first peripheral, the first access request comprising a resource domain identifier that is indicative of the first at least one resource domain;

receiving, from the resource domain controller, a first peripheral resource domain indicator at the first peripheral access control module indicating the second at least one resource domain is assigned to the first peripheral; and

allowing the first access request in response to determining at the first peripheral access control module that the first at least one resource domain and the second at least one resource domain have a common resource domain, otherwise, preventing the first access request in response to determining at the first peripheral access control module that the first at least one resource domain and the second at least one resource domain do not have a common resource domain;

detecting a tamper event at the first peripheral;

receiving, subsequent to detecting the tamper event, a second access request from the first bus master to access a second peripheral belonging to the second at least one resource domain;

selecting one of a first tamper policy and second tamper policy;

in response to the first tamper policy being selected, preventing the second access request in response to the first and second peripherals having a resource domain in common; and

in response to the second tamper policy being selected, allowing the second access request despite the first and second peripherals having a resource domain in common.

10. A method, comprising:

assigning, by a resource domain controller, a plurality of bus masters to corresponding at least one resource domain of a plurality of resource domains, including assigning a first bus master of the plurality of bus masters to a first at least one resource domain;

assigning, by the resource domain controller, a first peripheral to a second at least one resource domain of the plurality of resource domains;

receiving at a first peripheral access control module a first access request from the first bus master to access the first peripheral, the first access request comprising a resource domain identifier that is indicative of the first at least one resource domain;

receiving, from the resource domain controller, a first peripheral resource domain indicator at the first peripheral access control module indicating the second at least one resource domain is assigned to the first peripheral; and

allowing the first access request in response to determining at the first peripheral access control module that the first at least one resource domain and the second at least one resource domain have a common resource domain, otherwise, preventing the first access request in response to determining at the first peripheral access control module that the first at least one resource domain and the second at least one resource domain do not have a common resource domain;

receiving, at a semaphore control module, a request to acquire a semaphore lock that restricts access to the first peripheral by access requests belonging to a particular resource domain; and

determining at the semaphore module to grant the semaphore lock in response to determining that the particular resource domain is a member of the second at least one resource domain.

11. The method of claim 10 , wherein, in response to granting the semaphore lock, communicating information from the resource domain controller to the first peripheral access control module to enforce the semaphore lock; and

while the semaphore lock is pending, determining at the first peripheral access control module to allow the first access request to proceed in further response to determining that the first at least one resource domain includes the particular resource domain.

12. A data processing device comprising:

a peripheral;

a data processor having a first port to provide a first access request requesting access of the peripheral;

a resource domain controller comprising a first output to provide an indicator of a first at least one resource domain, of a plurality of resource domains, of the data processor, and a second output to provide an indicator of a second at least one resource domain, of the plurality of resource domains, of the peripheral;

a first access control module having a first input coupled to the first port of the data processor and to the first output of the resource domain controller to receive the first access request and the indicator of the first at least one resource domain, and a second input coupled to the second output of the resource domain controller to receive the indicator of the second at least one resource domain, the first access control module adapted to determine, based on the first at least one resource domain and the second at least one resource domain, whether the peripheral and the data processor are members of a common resource domain, and in response to determining the peripheral and data processor are members of the common resource domain, to allow the first access request to proceed, otherwise, to prevent the first access request, wherein the resource domain controller is further adapted to communicate resource domain information to the first access control module in response to power being applied to the first access control module subsequent to power being removed from the first access control module.

13. The data processing device of claim 12 , wherein the first access control module further comprises a local memory to store information indicative of the second at least one resource domain.

14. The data processing device of claim 12 , further comprising:

a tamper detection module adapted to detect tampering with the data processing device and to communicate an indication of an occurrence of the tampering to the resource domain controller, the resource domain controller further adapted to prevent accesses to the peripheral in response to the security violation indication.

15. A data processing device comprising:

a peripheral;

a data processor having a first port to provide a first access request requesting access of the peripheral;

a resource domain controller comprising a first output to provide an indicator of a first at least one resource domain, of a plurality of resource domains, of the data processor, and a second output to provide an indicator of a second at least one resource domain, of the plurality of resource domains, of the peripheral;

a first access control module comprising a first input coupled to the first port of the data processor and to the first output of the resource domain controller to receive the first access request and the indicator of the first at least one resource domain, a second input coupled to the second output of the resource domain controller to receive the indicator of the second at least one resource domain, and a local memory configured to store information indicative of the second at least one resource domain, wherein

the first access control module is adapted to determine, based on the first at least one resource domain and the second at least one resource domain, whether the peripheral and the data processor are members of a common resource domain, and in response to determining the peripheral and data processor are members of the common resource domain, to allow the first access request to proceed, otherwise, to prevent the first access request,

the resource domain controller further comprises a third output coupled to a second input of the first access control module to provide a power-loss indicator, and

in response to the power-loss indicator the first access control module is adapted to prevent access requests to the peripheral until the information indicative of the second at least one resource domain has been stored at the local memory.

16. The data processing device of claim 15 , wherein the peripheral is accessible at a plurality of addresses.

17. The data processing device of claim 15 , wherein the resource domain controller further comprises a third output to provide information identifying the second at least one resource domain; and the device further comprises:

a second access control module having a first input coupled to the first port of the data processor and to the first output of the resource domain controller to receive a second access request and the indication of the first at least one resource domain, and a second input coupled to the third output of the resource domain controller to receive the information identifying the second at least one resource domain, the second access module adapted to determine, based on the first at least one resource domain and the second at least one resource domain, whether the peripheral and the data processor are members of a common resource domain, and in response to determining the peripheral and data processor are a members of the common resource domain, to allow the access request to proceed, otherwise, to prevent the access request.

Assignments (15)
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040925 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Feb 17, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP, B.V. F/K/A FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 052917/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040928 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Jan 17, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 052915/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 10, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 050744/0097 →
CORRECTIVE ASSIGNMENT TO CORRECT THE NATURE OF CONVEYANCE PREVIOUSLY RECORDED AT REEL: 040626 FRAME: 0683. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER AND CHANGE OF NAME EFFECTIVE NOVEMBER 7, 2016. Recorded Jan 12, 2017
From: NXP SEMICONDUCTORS USA, INC. (MERGED INTO); FREESCALE SEMICONDUCTOR, INC. (UNDER)
To: NXP USA, INC.
Reel/Frame 041414/0883 →
CHANGE OF NAME Recorded Nov 16, 2016
From: FREESCALE SEMICONDUCTOR INC.
To: NXP USA, INC.
Reel/Frame 040626/0683 →
RELEASE OF SECURITY INTEREST Recorded Nov 7, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 040928/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 21, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP, B.V., F/K/A FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 040925/0001 →
SUPPLEMENT TO THE SECURITY AGREEMENT Recorded Jun 16, 2016
From: FREESCALE SEMICONDUCTOR, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 039138/0001 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 7, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037458/0341 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 7, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037458/0359 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037357/0974 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 7, 2015
From: CASE, LAWRENCE L.; CANNON, CHARLES E.; GALLIMORE, SIMON J.; WIENECKE, GLEN G.
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 036751/0199 →
SUPPLEMENT TO IP SECURITY AGREEMENT Recorded May 4, 2015
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 035571/0080 →
SUPPLEMENT TO IP SECURITY AGREEMENT Recorded May 4, 2015
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 035571/0095 →
SUPPLEMENT TO IP SECURITY AGREEMENT Recorded May 4, 2015
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 035571/0112 →
Continuity (1)
Related Publication 20160210260A1 · Jul 21, 2016