Re: [U-Boot] [PATCH 1/3] x86: Check PIRQ routing table sanity in the F segment

2015-04-28 Thread Simon Glass
On 28 April 2015 at 08:04, Simon Glass  wrote:
> On 27 April 2015 at 00:16, Bin Meng  wrote:
>> Previously the PIRQ routing table sanity check was performed against
>> the original table provided by the platform codes. Now we switch to
>> check its sanity on the final table in the F segment as this one is
>> the one seen by the OS.
>>
>> Signed-off-by: Bin Meng 
>> ---
>>
>>  arch/x86/lib/pirq_routing.c | 18 +-
>>  1 file changed, 13 insertions(+), 5 deletions(-)
>
> Acked-by: Simon Glass 

Applied to u-boot-x86, thanks!
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH 1/3] x86: Check PIRQ routing table sanity in the F segment

2015-04-28 Thread Simon Glass
On 27 April 2015 at 00:16, Bin Meng  wrote:
> Previously the PIRQ routing table sanity check was performed against
> the original table provided by the platform codes. Now we switch to
> check its sanity on the final table in the F segment as this one is
> the one seen by the OS.
>
> Signed-off-by: Bin Meng 
> ---
>
>  arch/x86/lib/pirq_routing.c | 18 +-
>  1 file changed, 13 insertions(+), 5 deletions(-)

Acked-by: Simon Glass 
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 1/3] x86: Check PIRQ routing table sanity in the F segment

2015-04-26 Thread Bin Meng
Previously the PIRQ routing table sanity check was performed against
the original table provided by the platform codes. Now we switch to
check its sanity on the final table in the F segment as this one is
the one seen by the OS.

Signed-off-by: Bin Meng 
---

 arch/x86/lib/pirq_routing.c | 18 +-
 1 file changed, 13 insertions(+), 5 deletions(-)

diff --git a/arch/x86/lib/pirq_routing.c b/arch/x86/lib/pirq_routing.c
index 5a2591a..7a34dcf 100644
--- a/arch/x86/lib/pirq_routing.c
+++ b/arch/x86/lib/pirq_routing.c
@@ -110,11 +110,7 @@ void pirq_route_irqs(struct irq_info *irq, int num)
 
 u32 copy_pirq_routing_table(u32 addr, struct irq_routing_table *rt)
 {
-   if (rt->signature != PIRQ_SIGNATURE || rt->version != PIRQ_VERSION ||
-   rt->size % 16) {
-   debug("Interrupt Routing Table not valid\n");
-   return addr;
-   }
+   struct irq_routing_table *rom_rt;
 
/* Fix up the table checksum */
rt->checksum = table_compute_checksum(rt, rt->size);
@@ -125,5 +121,17 @@ u32 copy_pirq_routing_table(u32 addr, struct 
irq_routing_table *rt)
debug("Copying Interrupt Routing Table to 0x%x\n", addr);
memcpy((void *)addr, rt, rt->size);
 
+   /*
+* We do the sanity check here against the copied table after memcpy,
+* as something might go wrong after the memcpy, which is normally
+* due to the F segment decode is not turned on to systeam RAM.
+*/
+   rom_rt = (struct irq_routing_table *)addr;
+   if (rom_rt->signature != PIRQ_SIGNATURE ||
+   rom_rt->version != PIRQ_VERSION || rom_rt->size % 16) {
+   printf("Interrupt Routing Table not valid\n");
+   return addr;
+   }
+
return addr + rt->size;
 }
-- 
1.8.2.1

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot