From e710ac9243cacd2f9c0ec2a2854946a3f7ff81a6 Mon Sep 17 00:00:00 2001 From: Zhigang Gong Date: Fri, 23 May 2014 18:21:04 +0800 Subject: [PATCH] gbe_bin_generater: fix two bugs. The pci id detecting method is broken on some system. And the gen pci id parsing in gbe_bin_generater is incorrect when the pci id has a-f hex digit. v2: Add VGA to filter out some nonVGA devices. Signed-off-by: Zhigang Gong --- backend/src/gbe_bin_generater.cpp | 7 +++++-- src/GetGenID.sh | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/backend/src/gbe_bin_generater.cpp b/backend/src/gbe_bin_generater.cpp index 50020b5..898e2f2 100644 --- a/backend/src/gbe_bin_generater.cpp +++ b/backend/src/gbe_bin_generater.cpp @@ -34,6 +34,7 @@ #include #include #include +#include #include #include "backend/program.h" @@ -46,7 +47,7 @@ using namespace std; #define FILE_BUILD_FAILED 3 #define FILE_SERIALIZATION_FAILED 4 -static int gen_pci_id = 0; +static uint32_t gen_pci_id = 0; class program_build_instance { @@ -296,7 +297,9 @@ int main (int argc, const char **argv) return 1; } - gen_pci_id = (s[0] - '0') << 12 | (s[1] - '0') << 8 | (s[2] - '0') << 4 | (s[3] - '0'); + std::stringstream str(s); + str >> std::hex >> gen_pci_id; + used_index[optind-1] = 1; // We must set the image base index here, as we invoke the backend in a non-standard way. gbe_set_image_base_index(3); diff --git a/src/GetGenID.sh b/src/GetGenID.sh index 3114bd8..f8cb0a7 100755 --- a/src/GetGenID.sh +++ b/src/GetGenID.sh @@ -1,2 +1,2 @@ #!/bin/bash -lspci -nn | grep "Gen .* Graphics" -i | grep "\[8086:.*\]" -o | awk -F : '{print $2}' | awk -F ] '{print $1}' +lspci -nn | grep "VGA.*Gen.*\[8086:" -i | grep "\[8086:.*\]" -o | awk -F : '{print $2}' | awk -F ] '{print $1}' -- 2.7.4