cpu/x86/lapic: Do not set read-only bits in LVTx
The bits REMOTE_IRR and SEND_PENDING are documented as read-only, and reserved bits should not be modified either. Change-Id: I6bcb9eb990debe169340a0bfe662158b62a8f4dc Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/55700 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Nico Huber <nico.h@gmx.de> Reviewed-by: Angel Pons <th3fanbus@gmail.com>
This commit is contained in:
		@@ -52,16 +52,12 @@ static void lapic_virtual_wire_mode_init(void)
 | 
				
			|||||||
	lapic_update32(LAPIC_SPIV, ~LAPIC_VECTOR_MASK, LAPIC_SPIV_ENABLE);
 | 
						lapic_update32(LAPIC_SPIV, ~LAPIC_VECTOR_MASK, LAPIC_SPIV_ENABLE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Put the local APIC in virtual wire mode */
 | 
						/* Put the local APIC in virtual wire mode */
 | 
				
			||||||
	uint32_t mask = LAPIC_LVT_MASKED | LAPIC_LVT_LEVEL_TRIGGER | LAPIC_LVT_REMOTE_IRR |
 | 
						uint32_t mask = LAPIC_LVT_MASKED | LAPIC_LVT_LEVEL_TRIGGER | LAPIC_INPUT_POLARITY |
 | 
				
			||||||
			LAPIC_INPUT_POLARITY | LAPIC_SEND_PENDING | LAPIC_LVT_RESERVED_1 |
 | 
					 | 
				
			||||||
			LAPIC_DELIVERY_MODE_MASK;
 | 
								LAPIC_DELIVERY_MODE_MASK;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	lapic_update32(LAPIC_LVT0, ~mask, LAPIC_LVT_REMOTE_IRR | LAPIC_SEND_PENDING |
 | 
						lapic_update32(LAPIC_LVT0, ~mask, LAPIC_DELIVERY_MODE_EXTINT);
 | 
				
			||||||
					  LAPIC_DELIVERY_MODE_EXTINT);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	lapic_update32(LAPIC_LVT1, ~mask, LAPIC_LVT_REMOTE_IRR | LAPIC_SEND_PENDING |
 | 
					 | 
				
			||||||
					  LAPIC_DELIVERY_MODE_NMI);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						lapic_update32(LAPIC_LVT1, ~mask, LAPIC_DELIVERY_MODE_NMI);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void setup_lapic(void)
 | 
					void setup_lapic(void)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user