round_up(value, SZ_128K)
ثم تغيّر إلى:
round_down(value, SZ_128K)
قد يبدو الفرق بسيطًا، لكنه حاسم. فالقيمة تمثل نهاية الذاكرة التي يُسمح لمخصّص VRAM باستخدامها. وعندما تُقرَّب هذه النهاية إلى أعلى، قد تبدو المساحة الصغيرة الواقعة بين الحد الحقيقي والحد المقرب وكأنها ذاكرة مجانية. لكن تلك المساحة محجوزة فعليًا لبيانات CCS التي يعتمد عليها العتاد، وليست متاحة للتخصيصات العادية. أما التقريب إلى أسفل فيُبقي المخصّص داخل الجانب الآمن من الحد.
عندما تعامل مخصّص الذاكرة مع مساحة CCS المحجوزة باعتبارها VRAM متاحة، أصبح من الممكن أن تتداخل التخصيصات العادية معها وتكتب فوق بيانات تستخدمها وحدة معالجة الرسوميات. وشمل التلف بيانات مرتبطة بجداول الصفحات، ما أدى إلى تشوهات على الشاشة ومشكلات في تركيب الواجهة، إضافة إلى دخول مدير العرض GDM في حلقة إعادة تشغيل مستمرة على أجهزة Battlemage G21.
لذلك لم تكن المشكلة مجرد خطأ حسابي عابر. جوهرها كان سوء فهم لمعنى القيمة: فقد عوملت كما لو كانت عنوان بداية يحتاج إلى محاذاة، بينما كانت في الحقيقة حدًا يحدد المكان الذي تنتهي عنده الذاكرة القابلة للاستخدام. وهذا ما يفسر كيف أمكن لتعديل بالغ الصغر أن يحل مشكلة واسعة الأثر، ولماذا كان العثور عليه صعبًا إلى هذه الدرجة.
عمل تورفالدس والمساعد الذكي على إضافة أدوات رصد موجهة وتعديلها، وتتبع مسارات حسابات الذاكرة داخل برنامج التشغيل، ثم مقارنة موضع CCS الذي يبلّغه العتاد بالحد الذي يقدمه البرنامج لمخصّص VRAM. وبعد 24 نسخة من رقع التصحيح و18 دورة من إعادة التشغيل والاختبار، اتضح أن اتجاه المحاذاة هو موضع الخطأ.
كانت عمليات الإقلاع المتكررة ضرورية لأن العطل لم يظهر كسطر مشبوه في الكود فقط، بل على مستوى العتاد ونظام العرض أيضًا. وقد ساعدت كل تجربة في استبعاد احتمالات أخرى، والتمييز بين سلوك تخصيص الذاكرة وبين الأسباب المحتملة الأخرى لفشل الرسوميات.
استخدم تورفالدس المساعد بوصفه شريكًا تفاعليًا في التصحيح، لا مؤلفًا مستقلًا للرقعة. فقد ساعده في اقتراح أدوات الرصد، وتتبع مسارات التنفيذ، وتحليل مخرجات التجارب المتتالية، ما خفف الأعمال الميكانيكية المتكررة.
لكن المساعد لم يكن مرجعًا موثوقًا بمفرده. ووفقًا لتورفالدس، أعلن عدة مرات أن المشكلة مستحيلة أو غير قابلة للحل، واقترح الاكتفاء بكتابة تقرير عنها. وكان على تورفالدس أن يختار التجربة التالية، ويرفض التفسيرات الخاطئة، ويفهم دلالة الإزاحة ضمن نموذج الذاكرة الذي يستخدمه المخصّص.
وهنا تكمن أهم خلاصة في القصة: الذكاء الاصطناعي اقترح الاحتمالات وتولى جانبًا من العمل التنفيذي، بينما وفّر الخبير السياق التقني والمثابرة والاختبارات القابلة للدحض والحكم النهائي.
كتب تورفالدس إصلاح برنامج تشغيل Intel Xe والتزم به في نواة Linux upstream، أي النسخة الرئيسية التي تُبنى عليها الإصدارات اللاحقة. وتشير التقارير المتاحة إلى أن سلاسل النواة المستقرة المدعومة والمتأثرة يُتوقع أن تحصل على التغيير عبر عملية النقل الخلفي المعتادة، لكن المصادر المتوفرة لا تثبت بصورة موثوقة أرقام الإصدارات المستقرة أو مواعيد طرحها.
لذلك من السابق لأوانه تسمية إصدارات محددة على أنها تتضمن الإصلاح. وينبغي لمستخدمي العتاد المتأثر انتظار إعلانات توزيعة Linux المستخدمة أو مشرفي النواة للتأكد من احتواء إصدار بعينه على التغيير.
لا تمثل هذه الواقعة تأييدًا شاملًا للكود الذي تنتجه أدوات الذكاء الاصطناعي. إنها تقدم مثالًا أضيق وأكثر واقعية: يمكن لخبير متمرس استخدام الذكاء الاصطناعي لتسريع دورة تصحيح معقدة، مع احتفاظه بمسؤولية صياغة الفرضية، وتصميم الاختبار، ومراجعة الرقعة، والتحقق من النتيجة.
وهذا يختلف جذريًا عن إرسال رقع أو تقارير ثغرات مولدة آليًا إلى مشرفي النواة من دون اختبار أو فهم كافٍ. فقد تحدث مطورو النواة عن «سيل» من المساهمات المولدة بواسطة النماذج اللغوية، بينما عبّر مشرفو مجالي staging والشبكات عن تزايد الإحباط بسبب الرقع منخفضة القيمة أو التي لا يستطيع أصحابها تفسيرها والدفاع عنها.
أما الادعاء المتداول بارتفاع الإرسالات بنسبة 2700%، فيجب التعامل معه بحذر؛ إذ لا توضح التقارير المتاحة طريقة القياس أو الفترة الزمنية أو الفئة الدقيقة التي يشملها الرقم. والاستنتاج الأكثر دعمًا بالأدلة هو أن الذكاء الاصطناعي خفّض تكلفة إنتاج الكود والتقارير، لكن تكلفة مراجعتها وفرزها ما زالت تقع على عاتق المشرفين البشر.
كما قال تورفالدس إن Linux ليس مشروعًا معاديًا للذكاء الاصطناعي من حيث المبدأ، لا سيما عندما تُستخدم هذه الأدوات في مهام مثل مراجعة الكود. وتوضح جلسة تصحيح Intel Xe الحد العملي الفاصل: قد يكون الذكاء الاصطناعي مفيدًا داخل عملية هندسية منضبطة، لكنه لا يحل محل معرفة النظام الفرعي، أو الاختبارات القابلة لإعادة الإنتاج، أو مسؤولية الإنسان عن النتيجة.
في النهاية، كان الإصلاح سطرًا واحدًا. أما الإنجاز الحقيقي فكان معرفة أي سطر يجب تغييره، ورفض التوقف عندما قال المساعد إن الحل غير ممكن.
round_up(value, SZ_128K)
ثم تغيّر إلى:
round_down(value, SZ_128K)
قد يبدو الفرق بسيطًا، لكنه حاسم. فالقيمة تمثل نهاية الذاكرة التي يُسمح لمخصّص VRAM باستخدامها. وعندما تُقرَّب هذه النهاية إلى أعلى، قد تبدو المساحة الصغيرة الواقعة بين الحد الحقيقي والحد المقرب وكأنها ذاكرة مجانية. لكن تلك المساحة محجوزة فعليًا لبيانات CCS التي يعتمد عليها العتاد، وليست متاحة للتخصيصات العادية. أما التقريب إلى أسفل فيُبقي المخصّص داخل الجانب الآمن من الحد.
عندما تعامل مخصّص الذاكرة مع مساحة CCS المحجوزة باعتبارها VRAM متاحة، أصبح من الممكن أن تتداخل التخصيصات العادية معها وتكتب فوق بيانات تستخدمها وحدة معالجة الرسوميات. وشمل التلف بيانات مرتبطة بجداول الصفحات، ما أدى إلى تشوهات على الشاشة ومشكلات في تركيب الواجهة، إضافة إلى دخول مدير العرض GDM في حلقة إعادة تشغيل مستمرة على أجهزة Battlemage G21.
لذلك لم تكن المشكلة مجرد خطأ حسابي عابر. جوهرها كان سوء فهم لمعنى القيمة: فقد عوملت كما لو كانت عنوان بداية يحتاج إلى محاذاة، بينما كانت في الحقيقة حدًا يحدد المكان الذي تنتهي عنده الذاكرة القابلة للاستخدام. وهذا ما يفسر كيف أمكن لتعديل بالغ الصغر أن يحل مشكلة واسعة الأثر، ولماذا كان العثور عليه صعبًا إلى هذه الدرجة.
عمل تورفالدس والمساعد الذكي على إضافة أدوات رصد موجهة وتعديلها، وتتبع مسارات حسابات الذاكرة داخل برنامج التشغيل، ثم مقارنة موضع CCS الذي يبلّغه العتاد بالحد الذي يقدمه البرنامج لمخصّص VRAM. وبعد 24 نسخة من رقع التصحيح و18 دورة من إعادة التشغيل والاختبار، اتضح أن اتجاه المحاذاة هو موضع الخطأ.
كانت عمليات الإقلاع المتكررة ضرورية لأن العطل لم يظهر كسطر مشبوه في الكود فقط، بل على مستوى العتاد ونظام العرض أيضًا. وقد ساعدت كل تجربة في استبعاد احتمالات أخرى، والتمييز بين سلوك تخصيص الذاكرة وبين الأسباب المحتملة الأخرى لفشل الرسوميات.
استخدم تورفالدس المساعد بوصفه شريكًا تفاعليًا في التصحيح، لا مؤلفًا مستقلًا للرقعة. فقد ساعده في اقتراح أدوات الرصد، وتتبع مسارات التنفيذ، وتحليل مخرجات التجارب المتتالية، ما خفف الأعمال الميكانيكية المتكررة.
لكن المساعد لم يكن مرجعًا موثوقًا بمفرده. ووفقًا لتورفالدس، أعلن عدة مرات أن المشكلة مستحيلة أو غير قابلة للحل، واقترح الاكتفاء بكتابة تقرير عنها. وكان على تورفالدس أن يختار التجربة التالية، ويرفض التفسيرات الخاطئة، ويفهم دلالة الإزاحة ضمن نموذج الذاكرة الذي يستخدمه المخصّص.
وهنا تكمن أهم خلاصة في القصة: الذكاء الاصطناعي اقترح الاحتمالات وتولى جانبًا من العمل التنفيذي، بينما وفّر الخبير السياق التقني والمثابرة والاختبارات القابلة للدحض والحكم النهائي.
كتب تورفالدس إصلاح برنامج تشغيل Intel Xe والتزم به في نواة Linux upstream، أي النسخة الرئيسية التي تُبنى عليها الإصدارات اللاحقة. وتشير التقارير المتاحة إلى أن سلاسل النواة المستقرة المدعومة والمتأثرة يُتوقع أن تحصل على التغيير عبر عملية النقل الخلفي المعتادة، لكن المصادر المتوفرة لا تثبت بصورة موثوقة أرقام الإصدارات المستقرة أو مواعيد طرحها.
لذلك من السابق لأوانه تسمية إصدارات محددة على أنها تتضمن الإصلاح. وينبغي لمستخدمي العتاد المتأثر انتظار إعلانات توزيعة Linux المستخدمة أو مشرفي النواة للتأكد من احتواء إصدار بعينه على التغيير.
لا تمثل هذه الواقعة تأييدًا شاملًا للكود الذي تنتجه أدوات الذكاء الاصطناعي. إنها تقدم مثالًا أضيق وأكثر واقعية: يمكن لخبير متمرس استخدام الذكاء الاصطناعي لتسريع دورة تصحيح معقدة، مع احتفاظه بمسؤولية صياغة الفرضية، وتصميم الاختبار، ومراجعة الرقعة، والتحقق من النتيجة.
وهذا يختلف جذريًا عن إرسال رقع أو تقارير ثغرات مولدة آليًا إلى مشرفي النواة من دون اختبار أو فهم كافٍ. فقد تحدث مطورو النواة عن «سيل» من المساهمات المولدة بواسطة النماذج اللغوية، بينما عبّر مشرفو مجالي staging والشبكات عن تزايد الإحباط بسبب الرقع منخفضة القيمة أو التي لا يستطيع أصحابها تفسيرها والدفاع عنها.
أما الادعاء المتداول بارتفاع الإرسالات بنسبة 2700%، فيجب التعامل معه بحذر؛ إذ لا توضح التقارير المتاحة طريقة القياس أو الفترة الزمنية أو الفئة الدقيقة التي يشملها الرقم. والاستنتاج الأكثر دعمًا بالأدلة هو أن الذكاء الاصطناعي خفّض تكلفة إنتاج الكود والتقارير، لكن تكلفة مراجعتها وفرزها ما زالت تقع على عاتق المشرفين البشر.
كما قال تورفالدس إن Linux ليس مشروعًا معاديًا للذكاء الاصطناعي من حيث المبدأ، لا سيما عندما تُستخدم هذه الأدوات في مهام مثل مراجعة الكود. وتوضح جلسة تصحيح Intel Xe الحد العملي الفاصل: قد يكون الذكاء الاصطناعي مفيدًا داخل عملية هندسية منضبطة، لكنه لا يحل محل معرفة النظام الفرعي، أو الاختبارات القابلة لإعادة الإنتاج، أو مسؤولية الإنسان عن النتيجة.
في النهاية، كان الإصلاح سطرًا واحدًا. أما الإنجاز الحقيقي فكان معرفة أي سطر يجب تغييره، ورفض التوقف عندما قال المساعد إن الحل غير ممكن.