GIC-400 non-secure access

Hi, experts

I'm the new one porting armv8 linux. I have some problem about gic400 access.

In the porting linux progress,CPU will switch to EL1NS.

In gic_dist_init() function, I read the the  GICD_ISENABLERn\GICD_ICENABLERn\GICD_ITARGETSRn\GICD_IPRIORITYRn  registers  and  get 'zero' value.

Linux kernel warns the message "GIC CPU mask not found - kernel will fail to boot."

Then I can' receive any IRQ exception and I guess it's caused GIC wrong setting.

The above registers can't access by non-secure access,right?

How can I read/write correctly the gic register?

Parents
  • If the interrupt IDs are configured as Secure, then the corresponding fields will be RAZ/WI (Read As Zero/Writes Ignored) to Non-secure accesses.  It's up to the firmware in Secure state to do some initial configuration of the GIC, including setting which interrupt IDs are Secure/Non-secure.

    However, if you are just reading the registers it's entirely possible that they are just all 0s.  Did you try writing them?

Reply
  • If the interrupt IDs are configured as Secure, then the corresponding fields will be RAZ/WI (Read As Zero/Writes Ignored) to Non-secure accesses.  It's up to the firmware in Secure state to do some initial configuration of the GIC, including setting which interrupt IDs are Secure/Non-secure.

    However, if you are just reading the registers it's entirely possible that they are just all 0s.  Did you try writing them?

Children